Pavel Sanda wrote: > because there is no list of groups themselves (all this info is always > gathered from scanning all images in the document) and there is nothing > reasonable to be done as an action after pushing this button. one has to > apply settings of the whole dialog. if you only add the group to the group > box, it can be easily cleared off, although user would expect it to > remain....
Attached is what I have in mind. IMHO, the UI is way clearer (it's always a sign of bad UI if a widget is used both for defining and assigning elements). The fact that new groups will only be added if they are actually used by the graphic is misleading, but still this is more intuitive. Jürgen
Index: src/frontends/qt4/GuiGraphics.cpp =================================================================== --- src/frontends/qt4/GuiGraphics.cpp (Revision 28181) +++ src/frontends/qt4/GuiGraphics.cpp (Arbeitskopie) @@ -15,6 +15,7 @@ #include <config.h> #include "GuiGraphics.h" +#include "frontends/alert.h" #include "qt_helpers.h" #include "Validator.h" @@ -246,10 +247,9 @@ connect(displayGB, SIGNAL(toggled(bool)), this, SLOT(change_adaptor())); connect(displayscale, SIGNAL(textChanged(const QString&)), this, SLOT(change_adaptor())); - connect(groupId, SIGNAL(currentIndexChanged (const QString&)), - this, SLOT(change_group(const QString&))); - connect(groupId, SIGNAL(editTextChanged(const QString&)), + connect(groupCO, SIGNAL(currentIndexChanged (const QString&)), this, SLOT(change_adaptor())); + displayscale->setValidator(new QIntValidator(displayscale)); bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy); @@ -294,21 +294,22 @@ } -void GuiGraphics::change_group(const QString &text) +void GuiGraphics::on_newGroupPB_clicked() { - if (text.isEmpty()) + docstring newgroup; + if (!Alert::askForText(newgroup, _("Enter unique group name:"))) return; - - groupId->blockSignals(true); - - string grp = graphics::getGroupParams(buffer(), fromqstr(text)); - InsetGraphicsParams par; - InsetGraphics::string2params(grp, buffer(), par); - par.filename = params_.filename; - params_ = par; - paramsToDialog(par); - - groupId->blockSignals(false); + if (newgroup.empty()) + return; + if (groupCO->findData(toqstr(newgroup), Qt::MatchExactly) != -1) { + Alert::warning(_("Group already defined!"), + bformat(_("A graphics group with the name '%1$s' already exists."), + newgroup)); + return; + } + groupCO->addItem(toqstr(newgroup), toqstr(newgroup)); + groupCO->setCurrentIndex( + groupCO->findData(toqstr(newgroup), Qt::MatchExactly)); } @@ -557,16 +558,15 @@ graphics::getGraphicsGroups(buffer(), grp); set<string>::const_iterator it = grp.begin(); set<string>::const_iterator end = grp.end(); - groupId->blockSignals(true); - groupId->clear(); - groupId->addItem(""); + groupCO->clear(); for (; it != end; it++) - groupId->addItem(toqstr(*it)); + groupCO->addItem(toqstr(*it), toqstr(*it)); + groupCO->insertItem(0, qt_("None"), QString()); if (igp.groupId.empty()) - groupId->setCurrentIndex(-1); + groupCO->setCurrentIndex(0); else - groupId->setCurrentIndex(groupId->findText(toqstr(igp.groupId), Qt::MatchExactly)); - groupId->blockSignals(false); + groupCO->setCurrentIndex( + groupCO->findData(toqstr(igp.groupId), Qt::MatchExactly)); if (igp.width.value() == 0) lengthToWidgets(Width, widthUnit, _(autostr), unitDefault); @@ -708,7 +708,8 @@ // more latex options igp.special = fromqstr(latexoptions->text()); - igp.groupId = fromqstr(groupId->currentText()); + igp.groupId = fromqstr(groupCO->itemData( + groupCO->currentIndex()).toString()); } Index: src/frontends/qt4/GuiGraphics.h =================================================================== --- src/frontends/qt4/GuiGraphics.h (Revision 28181) +++ src/frontends/qt4/GuiGraphics.h (Arbeitskopie) @@ -40,8 +40,8 @@ private Q_SLOTS: void change_adaptor(); - void change_group(const QString &); void change_bb(); + void on_newGroupPB_clicked(); void on_browsePB_clicked(); void on_getPB_clicked(); void on_scaleCB_toggled(bool); Index: src/frontends/qt4/ui/GraphicsUi.ui =================================================================== --- src/frontends/qt4/ui/GraphicsUi.ui (Revision 28181) +++ src/frontends/qt4/ui/GraphicsUi.ui (Arbeitskopie) @@ -10,7 +10,9 @@ </rect> </property> <property name="sizePolicy" > - <sizepolicy vsizetype="Minimum" hsizetype="Minimum" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -28,93 +30,6 @@ <property name="spacing" > <number>6</number> </property> - <item row="1" column="0" > - <layout class="QHBoxLayout" > - <property name="spacing" > - <number>6</number> - </property> - <property name="margin" > - <number>0</number> - </property> - <item> - <widget class="QPushButton" name="restorePB" > - <property name="text" > - <string>&Restore</string> - </property> - <property name="autoDefault" > - <bool>false</bool> - </property> - <property name="default" > - <bool>false</bool> - </property> - </widget> - </item> - <item> - <spacer> - <property name="orientation" > - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType" > - <enum>QSizePolicy::MinimumExpanding</enum> - </property> - <property name="sizeHint" stdset="0" > - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="okPB" > - <property name="text" > - <string>&OK</string> - </property> - <property name="autoDefault" > - <bool>true</bool> - </property> - <property name="default" > - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="applyPB" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text" > - <string>&Apply</string> - </property> - <property name="autoDefault" > - <bool>false</bool> - </property> - <property name="default" > - <bool>false</bool> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="closePB" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text" > - <string>Close</string> - </property> - <property name="autoDefault" > - <bool>false</bool> - </property> - </widget> - </item> - </layout> - </item> <item row="0" column="0" > <widget class="QTabWidget" name="tabWidget" > <property name="toolTip" > @@ -171,7 +86,9 @@ <bool>true</bool> </property> <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -186,7 +103,7 @@ <property name="orientation" > <enum>Qt::Horizontal</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" > <size> <width>61</width> <height>20</height> @@ -203,7 +120,9 @@ <bool>true</bool> </property> <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -310,7 +229,9 @@ <item row="0" column="1" > <widget class="QLineEdit" name="angle" > <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -374,7 +295,7 @@ <property name="orientation" > <enum>Qt::Vertical</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" > <size> <width>20</width> <height>40</height> @@ -398,7 +319,9 @@ <bool>true</bool> </property> <property name="sizePolicy" > - <sizepolicy vsizetype="Minimum" hsizetype="Preferred" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -500,7 +423,7 @@ <property name="orientation" > <enum>Qt::Horizontal</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" > <size> <width>181</width> <height>20</height> @@ -525,32 +448,12 @@ <string>LaTe&X and LyX options</string> </attribute> <layout class="QGridLayout" > - <item row="0" column="0" > - <widget class="QLabel" name="latexoptionsLA" > - <property name="toolTip" > - <string>Additional LaTeX options</string> - </property> - <property name="text" > - <string>LaTeX &options:</string> - </property> - <property name="buddy" > - <cstring>latexoptions</cstring> - </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QLineEdit" name="latexoptions" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" > - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="toolTip" > - <string>Additional LaTeX options</string> - </property> - </widget> - </item> + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> <item row="1" column="0" colspan="2" > <widget class="QCheckBox" name="draftCB" > <property name="toolTip" > @@ -561,33 +464,17 @@ </property> </widget> </item> - <item row="2" column="0" colspan="2" > - <widget class="QCheckBox" name="unzipCB" > + <item row="4" column="0" colspan="2" > + <widget class="QGroupBox" name="graphicsGroupGB" > <property name="toolTip" > - <string>Don't uncompress image before exporting to LaTeX</string> + <string>Assign the graphic to a group of graphics that share the same settings</string> </property> - <property name="text" > - <string>Don't un&zip on export</string> - </property> - </widget> - </item> - <item row="3" column="0" colspan="2" > - <widget class="QGroupBox" name="displayGB" > - <property name="focusPolicy" > - <enum>Qt::StrongFocus</enum> - </property> - <property name="toolTip" > - <string>Enable LyX to preview this graphics, only if graphics previewing is not disabled at application level (see Preference dialog).</string> - </property> <property name="title" > - <string>Sho&w in LyX</string> + <string>Graphics Group</string> </property> <property name="flat" > <bool>true</bool> </property> - <property name="checkable" > - <bool>true</bool> - </property> <layout class="QGridLayout" > <property name="margin" > <number>9</number> @@ -595,23 +482,25 @@ <property name="spacing" > <number>6</number> </property> - <item row="0" column="4" > + <item rowspan="2" row="0" column="2" > <spacer> <property name="orientation" > <enum>Qt::Horizontal</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" > <size> - <width>40</width> - <height>20</height> + <width>121</width> + <height>51</height> </size> </property> </spacer> </item> - <item row="1" column="0" > + <item row="0" column="0" > <widget class="QLabel" name="label" > <property name="sizePolicy" > - <sizepolicy vsizetype="Preferred" hsizetype="Preferred" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -620,20 +509,69 @@ <string>Graphics having the same group name will share the same parameters</string> </property> <property name="text" > - <string>Grou&p Name:</string> + <string>Assigned to grou&p:</string> </property> <property name="buddy" > - <cstring>groupId</cstring> + <cstring>groupCO</cstring> </property> </widget> </item> + <item row="1" column="1" > + <widget class="QPushButton" name="newGroupPB" > + <property name="toolTip" > + <string>Klick to define a new graphics group</string> + </property> + <property name="text" > + <string>De&fine new group...</string> + </property> + </widget> + </item> <item row="0" column="1" > + <widget class="QComboBox" name="groupCO" > + <property name="toolTip" > + <string>Select an existing group for the current graphics.</string> + </property> + <property name="editable" > + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="3" column="0" colspan="2" > + <widget class="QGroupBox" name="displayGB" > + <property name="focusPolicy" > + <enum>Qt::StrongFocus</enum> + </property> + <property name="toolTip" > + <string>Enable LyX to preview this graphics, only if graphics previewing is not disabled at application level (see Preference dialog).</string> + </property> + <property name="title" > + <string>Sho&w in LyX</string> + </property> + <property name="flat" > + <bool>true</bool> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="1" > <widget class="QLineEdit" name="displayscale" > <property name="enabled" > <bool>true</bool> </property> <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -656,25 +594,66 @@ </property> </widget> </item> - <item row="1" column="1" > - <widget class="QComboBox" name="groupId" > - <property name="toolTip" > - <string>Group Name to be set up from the current parameters. Use context menu to assign the existing one.</string> + <item row="0" column="2" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> </property> - <property name="editable" > - <bool>true</bool> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> </property> - </widget> + </spacer> </item> </layout> </widget> </item> - <item row="5" column="1" > + <item row="0" column="0" > + <widget class="QLabel" name="latexoptionsLA" > + <property name="toolTip" > + <string>Additional LaTeX options</string> + </property> + <property name="text" > + <string>LaTeX &options:</string> + </property> + <property name="buddy" > + <cstring>latexoptions</cstring> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="latexoptions" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Additional LaTeX options</string> + </property> + </widget> + </item> + <item row="2" column="0" colspan="2" > + <widget class="QCheckBox" name="unzipCB" > + <property name="toolTip" > + <string>Don't uncompress image before exporting to LaTeX</string> + </property> + <property name="text" > + <string>Don't un&zip on export</string> + </property> + </widget> + </item> + <item row="5" column="0" colspan="2" > <spacer> <property name="orientation" > <enum>Qt::Vertical</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" > <size> <width>354</width> <height>81</height> @@ -686,6 +665,97 @@ </widget> </widget> </item> + <item row="1" column="0" > + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QPushButton" name="restorePB" > + <property name="text" > + <string>&Restore</string> + </property> + <property name="autoDefault" > + <bool>false</bool> + </property> + <property name="default" > + <bool>false</bool> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::MinimumExpanding</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="okPB" > + <property name="text" > + <string>&OK</string> + </property> + <property name="autoDefault" > + <bool>true</bool> + </property> + <property name="default" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="applyPB" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>&Apply</string> + </property> + <property name="autoDefault" > + <bool>false</bool> + </property> + <property name="default" > + <bool>false</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="closePB" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Close</string> + </property> + <property name="autoDefault" > + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </item> </layout> </widget> <customwidgets>