[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdegraphics/gwenview/lib/crop
From: Aurélien Gâteau <aurelien.gateau () free ! fr>
Date: 2009-03-05 17:23:14
Message-ID: 1236273794.351539.7584.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 935583 by gateau:
Simplified crop ratio ui: merged two lineedits and one combo box into only one editable combobox.
M +25 -30 cropwidget.cpp
M +0 -1 cropwidget.h
M +16 -52 cropwidget.ui
--- trunk/KDE/kdegraphics/gwenview/lib/crop/cropwidget.cpp #935582:935583
@@ -27,6 +27,7 @@
// KDE
#include <kdebug.h>
#include <kdialog.h>
+#include <klineedit.h>
#include <klocale.h>
// Local
@@ -45,24 +46,34 @@
bool ratioIsConstrained() const {
- return ratioWidthSpinBox->value() > 0 && ratioHeightSpinBox->value() > 0;
+ return cropRatio() > 0;
}
double cropRatio() const {
- if (!ratioIsConstrained()) {
+ const QStringList lst = ratioComboBox->currentText().split(":");
+ if (lst.size() != 2) {
return 0;
}
- int width = ratioWidthSpinBox->value();
- int height = ratioHeightSpinBox->value();
- return height / double(width);
+
+ bool ok;
+ const double width = lst[0].toDouble(&ok);
+ if (!ok) {
+ return 0;
+ }
+ const double height = lst[1].toDouble(&ok);
+ if (!ok) {
+ return 0;
+ }
+
+ return height / width;
}
void addRatioToComboBox(const QSize& size, const QString& _label = QString()) {
QString label = _label;
if (label.isEmpty()) {
- label = QString("%1 x %2").arg(size.width()).arg(size.height());
+ label = QString("%1:%2").arg(size.width()).arg(size.height());
}
ratioComboBox->addItem(label, QVariant(size));
}
@@ -83,9 +94,8 @@
<< QSize(7, 5)
<< QSize(10, 8);
- addRatioToComboBox(QSize(0, 0), i18nc("Crop tool won't apply any ratio constraint", "No Constraint"));
- addSeparatorToComboBox();
addRatioToComboBox(QSize(1, 1), i18n("Square"));
+ addSeparatorToComboBox();
Q_FOREACH(const QSize& size, ratioList) {
addRatioToComboBox(size);
@@ -97,6 +107,11 @@
}
ratioComboBox->setMaxVisibleItems(ratioComboBox->count());
+ ratioComboBox->setEditText(QString());
+
+ KLineEdit* edit = qobject_cast<KLineEdit*>(ratioComboBox->lineEdit());
+ Q_ASSERT(edit);
+ edit->setClickMessage(i18n("Width:Height"));
}
@@ -154,14 +169,11 @@
connect(d->cropButton, SIGNAL(clicked()),
SIGNAL(cropRequested()) );
- connect(d->ratioWidthSpinBox, SIGNAL(valueChanged(int)),
+ connect(d->ratioComboBox, SIGNAL(activated(int)),
SLOT(applyRatioConstraint()) );
- connect(d->ratioHeightSpinBox, SIGNAL(valueChanged(int)),
+ connect(d->ratioComboBox, SIGNAL(editTextChanged(const QString&)),
SLOT(applyRatioConstraint()) );
- connect(d->ratioComboBox, SIGNAL(activated(int)),
- SLOT(setRatioConstraintFromComboBox()) );
-
// Don't do this before signals are connected, otherwise the tool won't get
// initialized
d->initSpinBoxes();
@@ -236,21 +248,4 @@
}
-void CropWidget::setRatioConstraintFromComboBox() {
- QVariant data = d->ratioComboBox->itemData(d->ratioComboBox->currentIndex());
- if (!data.isValid()) {
- return;
- }
-
- QSize size = data.toSize();
- {
- SignalBlocker blockerW(d->ratioWidthSpinBox);
- SignalBlocker blockerH(d->ratioHeightSpinBox);
- d->ratioWidthSpinBox->setValue(size.width());
- d->ratioHeightSpinBox->setValue(size.height());
- }
- applyRatioConstraint();
-}
-
-
} // namespace
--- trunk/KDE/kdegraphics/gwenview/lib/crop/cropwidget.h #935582:935583
@@ -54,7 +54,6 @@
void setCropRect(const QRect& rect);
void applyRatioConstraint();
- void setRatioConstraintFromComboBox();
private:
CropWidgetPrivate* const d;
--- trunk/KDE/kdegraphics/gwenview/lib/crop/cropwidget.ui #935582:935583
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>276</width>
- <height>190</height>
+ <height>154</height>
</rect>
</property>
<property name="windowTitle">
@@ -31,14 +31,14 @@
<item row="1" column="0" colspan="3">
<widget class="QWidget" name="advancedWidget" native="true">
<layout class="QGridLayout" name="gridLayout">
- <item row="0" column="0" colspan="4">
+ <item row="0" column="0" colspan="3">
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
- <item row="1" column="0">
+ <item row="1" column="0" rowspan="2">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Ratio:</string>
@@ -46,59 +46,26 @@
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
- <property name="buddy">
- <cstring>ratioComboBox</cstring>
- </property>
</widget>
</item>
- <item row="1" column="2" colspan="2">
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <widget class="KComboBox" name="ratioComboBox"/>
- </item>
- <item>
- <spacer name="horizontalSpacer_2">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- <item row="2" column="2">
- <widget class="QSpinBox" name="ratioWidthSpinBox">
- <property name="specialValueText">
- <string>-</string>
+ <item row="2" column="1" colspan="2">
+ <widget class="KComboBox" name="ratioComboBox">
+ <property name="editable">
+ <bool>true</bool>
</property>
- <property name="value">
- <number>0</number>
+ <property name="insertPolicy">
+ <enum>QComboBox::NoInsert</enum>
</property>
</widget>
</item>
- <item row="2" column="3">
- <widget class="QSpinBox" name="ratioHeightSpinBox">
- <property name="specialValueText">
- <string>-</string>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- </widget>
- </item>
- <item row="3" column="0" colspan="4">
+ <item row="3" column="0" colspan="3">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
- <item row="5" column="0">
+ <item row="4" column="0">
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
@@ -117,7 +84,7 @@
</property>
</widget>
</item>
- <item row="5" column="2">
+ <item row="4" column="1">
<widget class="QSpinBox" name="leftSpinBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
@@ -127,7 +94,7 @@
</property>
</widget>
</item>
- <item row="5" column="3">
+ <item row="4" column="2">
<widget class="QSpinBox" name="topSpinBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@@ -137,7 +104,7 @@
</property>
</widget>
</item>
- <item row="6" column="0">
+ <item row="5" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Size:</string>
@@ -150,7 +117,7 @@
</property>
</widget>
</item>
- <item row="6" column="2">
+ <item row="5" column="1">
<widget class="QSpinBox" name="widthSpinBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@@ -160,7 +127,7 @@
</property>
</widget>
</item>
- <item row="6" column="3">
+ <item row="5" column="2">
<widget class="QSpinBox" name="heightSpinBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@@ -198,9 +165,6 @@
<tabstops>
<tabstop>advancedCheckBox</tabstop>
<tabstop>cropButton</tabstop>
- <tabstop>ratioComboBox</tabstop>
- <tabstop>ratioWidthSpinBox</tabstop>
- <tabstop>ratioHeightSpinBox</tabstop>
<tabstop>leftSpinBox</tabstop>
<tabstop>topSpinBox</tabstop>
<tabstop>widthSpinBox</tabstop>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic