commit 774becf693c8bbfcf475cb7046358c7a326571fb Author: Juergen Spitzmueller <sp...@lyx.org> Date: Sat Sep 17 13:03:33 2016 +0200
Clean up the crossrefs dialog. --- src/frontends/qt4/GuiRef.cpp | 76 +++++--- src/frontends/qt4/GuiRef.h | 6 +- src/frontends/qt4/ui/RefUi.ui | 413 +++++++++++++++++++++-------------------- 3 files changed, 266 insertions(+), 229 deletions(-) diff --git a/src/frontends/qt4/GuiRef.cpp b/src/frontends/qt4/GuiRef.cpp index 7a1335a..178fdcd 100644 --- a/src/frontends/qt4/GuiRef.cpp +++ b/src/frontends/qt4/GuiRef.cpp @@ -13,6 +13,8 @@ #include "GuiRef.h" +#include "GuiApplication.h" + #include "Buffer.h" #include "BufferList.h" #include "FuncRequest.h" @@ -48,6 +50,26 @@ GuiRef::GuiRef(GuiView & lv) at_ref_ = false; + // The filter bar + filter_ = new FancyLineEdit(this); +#if QT_VERSION >= 0x040600 + filter_->setButtonPixmap(FancyLineEdit::Right, getPixmap("images/", "editclear", "svgz,png")); + filter_->setButtonVisible(FancyLineEdit::Right, true); + filter_->setButtonToolTip(FancyLineEdit::Right, qt_("Clear text")); + filter_->setAutoHideButton(FancyLineEdit::Right, true); +#endif +#if QT_VERSION >= 0x040700 + filter_->setPlaceholderText(qt_("All avail. Labels")); +#endif + filter_->setToolTip(qt_("Enter string to filter the list of available labels")); + + filterBarL->addWidget(filter_, 0); + findKeysLA->setBuddy(filter_); + + sortingCO->addItem(qt_("By Occurrence"), "unsorted"); + sortingCO->addItem(qt_("Alphabetically (Case-Insensitive)"), "nocase"); + sortingCO->addItem(qt_("Alphabetically (Case-Sensitive)"), "case"); + refsTW->setColumnCount(1); refsTW->header()->setVisible(false); @@ -60,8 +82,10 @@ GuiRef::GuiRef(GuiView & lv) connect(typeCO, SIGNAL(activated(int)), this, SLOT(changed_adaptor())); connect(referenceED, SIGNAL(textChanged(QString)), + this, SLOT(refTextChanged(QString))); + connect(referenceED, SIGNAL(textChanged(QString)), this, SLOT(changed_adaptor())); - connect(findLE, SIGNAL(textEdited(QString)), + connect(filter_, SIGNAL(textEdited(QString)), this, SLOT(filterLabels())); connect(csFindCB, SIGNAL(clicked()), this, SLOT(filterLabels())); @@ -73,10 +97,8 @@ GuiRef::GuiRef(GuiView & lv) this, SLOT(selectionChanged())); connect(refsTW, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(refSelected(QTreeWidgetItem *))); - connect(sortCB, SIGNAL(clicked()), + connect(sortingCO, SIGNAL(activated(int)), this, SLOT(sortToggled())); - connect(caseSensitiveCB, SIGNAL(clicked()), - this, SLOT(caseSensitiveToggled())); connect(groupCB, SIGNAL(clicked()), this, SLOT(groupToggled())); connect(gotoPB, SIGNAL(clicked()), @@ -167,6 +189,14 @@ void GuiRef::refHighlighted(QTreeWidgetItem * sel) } +void GuiRef::refTextChanged(QString const & str) +{ + gotoPB->setEnabled(!str.isEmpty()); + typeCO->setEnabled(!str.isEmpty()); + typeLA->setEnabled(!str.isEmpty()); +} + + void GuiRef::refSelected(QTreeWidgetItem * sel) { if (isBufferReadonly()) @@ -191,13 +221,6 @@ void GuiRef::refSelected(QTreeWidgetItem * sel) void GuiRef::sortToggled() { - caseSensitiveCB->setEnabled(sortCB->isChecked()); - redoRefs(); -} - - -void GuiRef::caseSensitiveToggled() -{ redoRefs(); } @@ -316,16 +339,14 @@ bool GuiRef::typeAllowed() void GuiRef::setGoBack() { gotoPB->setText(qt_("&Go Back")); - gotoPB->setToolTip(""); - gotoPB->setToolTip(qt_("Jump back")); + gotoPB->setToolTip(qt_("Jump back to the original cursor location")); } void GuiRef::setGotoRef() { gotoPB->setText(qt_("&Go to Label")); - gotoPB->setToolTip(""); - gotoPB->setToolTip(qt_("Jump to label")); + gotoPB->setToolTip(qt_("Jump to the selected label")); } @@ -392,13 +413,14 @@ void GuiRef::redoRefs() if (noprefix) refsCategories.insert(0, qt_("<No prefix>")); - if (sortCB->isEnabled() && sortCB->isChecked()) { - if(caseSensitiveCB->isEnabled() && caseSensitiveCB->isChecked()) - qSort(refsStrings.begin(), refsStrings.end()); - else - qSort(refsStrings.begin(), refsStrings.end(), - caseInsensitiveLessThan /*defined above*/); - } + QString const sort = sortingCO->isEnabled() ? + sortingCO->itemData(sortingCO->currentIndex()).toString() + : QString(); + if (sort == "nocase") + qSort(refsStrings.begin(), refsStrings.end(), + caseInsensitiveLessThan /*defined above*/); + else if (sort == "case") + qSort(refsStrings.begin(), refsStrings.end()); if (groupCB->isChecked()) { QList<QTreeWidgetItem *> refsCats; @@ -459,6 +481,10 @@ void GuiRef::redoRefs() // Re-activate the emission of signals by these widgets. refsTW->blockSignals(false); referenceED->blockSignals(false); + + gotoPB->setEnabled(!referenceED->text().isEmpty()); + typeCO->setEnabled(!referenceED->text().isEmpty()); + typeLA->setEnabled(!referenceED->text().isEmpty()); } @@ -472,13 +498,11 @@ void GuiRef::updateRefs() Buffer const * buf = theBufferList().getBuffer(name); buf->getLabelList(refs_); } - sortCB->setEnabled(!refs_.empty()); - caseSensitiveCB->setEnabled(sortCB->isEnabled() && sortCB->isChecked()); + sortingCO->setEnabled(!refs_.empty()); refsTW->setEnabled(!refs_.empty()); groupCB->setEnabled(!refs_.empty()); // refsTW should only be the focus proxy when it is enabled setFocusProxy(refs_.empty() ? 0 : refsTW); - gotoPB->setEnabled(!refs_.empty()); redoRefs(); } @@ -510,7 +534,7 @@ void GuiRef::filterLabels() while (*it) { (*it)->setHidden( (*it)->childCount() == 0 - && !(*it)->text(0).contains(findLE->text(), cs) + && !(*it)->text(0).contains(filter_->text(), cs) ); ++it; } diff --git a/src/frontends/qt4/GuiRef.h b/src/frontends/qt4/GuiRef.h index 250d407..2873046 100644 --- a/src/frontends/qt4/GuiRef.h +++ b/src/frontends/qt4/GuiRef.h @@ -14,6 +14,7 @@ #include "GuiDialog.h" #include "ui_RefUi.h" +#include "FancyLineEdit.h" #include "insets/InsetCommandParams.h" @@ -41,9 +42,9 @@ private Q_SLOTS: void filterLabels(); void refHighlighted(QTreeWidgetItem *); void selectionChanged(); + void refTextChanged(QString const &); void refSelected(QTreeWidgetItem *); void sortToggled(); - void caseSensitiveToggled(); void groupToggled(); void updateClicked(); void resetDialog(); @@ -93,6 +94,9 @@ private: /// InsetCommandParams params_; + /// contains the search box + FancyLineEdit * filter_; + /// went to a reference ? bool at_ref_; /// the last reference entered or examined diff --git a/src/frontends/qt4/ui/RefUi.ui b/src/frontends/qt4/ui/RefUi.ui index daad341..3e45726 100644 --- a/src/frontends/qt4/ui/RefUi.ui +++ b/src/frontends/qt4/ui/RefUi.ui @@ -1,3 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>RefUi</class> <widget class="QDialog" name="RefUi"> @@ -6,7 +7,7 @@ <x>0</x> <y>0</y> <width>435</width> - <height>500</height> + <height>539</height> </rect> </property> <property name="windowTitle"> @@ -15,45 +16,80 @@ <property name="sizeGripEnabled"> <bool>true</bool> </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0" colspan="2"> - <widget class="QLabel" name="refsL"> - <property name="text"> - <string>La&bels in:</string> - </property> - <property name="buddy"> - <cstring>bufferCO</cstring> - </property> - </widget> - </item> - <item row="0" column="2"> - <widget class="QComboBox" name="bufferCO"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="1" column="0" colspan="3"> - <widget class="Line" name="line"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="0" column="0"> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="findKeysLA"> + <property name="text"> + <string>&Filter:</string> + </property> + <property name="alignment"> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="refsL"> + <property name="text"> + <string>&In[[buffer]]:</string> + </property> + <property name="buddy"> + <cstring>bufferCO</cstring> + </property> + </widget> + </item> + </layout> + </item> + <item row="0" column="1"> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <layout class="QHBoxLayout" name="filterBarL"/> + </item> + <item> + <widget class="QCheckBox" name="csFindCB"> + <property name="toolTip"> + <string>Filter case-sensitively</string> + </property> + <property name="text"> + <string>Case Sensiti&ve</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QComboBox" name="bufferCO"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip"> + <string>The (sub-)document from which the available labels are displayed</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> </item> - <item row="2" column="0" colspan="3"> + <item row="1" column="0"> <widget class="QLabel" name="label"> <property name="text"> - <string>&References</string> + <string>Available &Labels:</string> </property> <property name="buddy"> <cstring>refsTW</cstring> </property> </widget> </item> - <item row="3" column="0" colspan="3"> + <item row="2" column="0"> <widget class="QTreeWidget" name="refsTW"> <column> <property name="text"> @@ -62,121 +98,98 @@ </column> </widget> </item> - <item row="4" column="0" colspan="3"> + <item row="3" column="0"> <layout class="QHBoxLayout"> <property name="spacing"> <number>6</number> </property> - <property name="margin"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> <number>0</number> </property> <item> - <widget class="QLabel" name="findKeysLA"> + <widget class="QLabel" name="SortLA"> <property name="text"> - <string>Fil&ter:</string> - </property> - <property name="alignment"> - <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> + <string>So&rt:</string> </property> <property name="buddy"> - <cstring>findLE</cstring> + <cstring>sortingCO</cstring> </property> </widget> </item> <item> - <widget class="QLineEdit" name="findLE"> + <widget class="QComboBox" name="sortingCO"> <property name="toolTip"> - <string>Enter string to filter the label list</string> - </property> - <property name="text"> - <string/> + <string>Sorting of the list of available labels</string> </property> </widget> </item> <item> - <widget class="QCheckBox" name="csFindCB"> + <widget class="QCheckBox" name="groupCB"> <property name="toolTip"> - <string>Filter case-sensitively</string> + <string>Group the list of available labels by prefix (e.g. "sec:")</string> </property> <property name="text"> - <string>Case-sensiti&ve</string> + <string>Grou&p</string> </property> </widget> </item> - </layout> - </item> - <item row="5" column="0" colspan="3"> - <layout class="QHBoxLayout"> - <property name="spacing"> - <number>6</number> - </property> - <property name="margin"> - <number>0</number> - </property> - <item> - <layout class="QHBoxLayout"> - <property name="spacing"> - <number>6</number> - </property> - <property name="margin"> - <number>0</number> - </property> - <item> - <widget class="QCheckBox" name="sortCB"> - <property name="toolTip"> - <string>Sort labels in alphabetical order (case-insensitively unless the Case-sensitive option is checked)</string> - </property> - <property name="text"> - <string>&Sort</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="caseSensitiveCB"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="toolTip"> - <string>Sort labels case-sensitively in alphabetical order</string> - </property> - <property name="text"> - <string>Cas&e-sensitive</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="groupCB"> - <property name="toolTip"> - <string>Group labels by prefix (e.g. "sec:")</string> - </property> - <property name="text"> - <string>Grou&p</string> - </property> - </widget> - </item> - </layout> - </item> <item> - <spacer> + <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> - <width>20</width> + <width>40</width> <height>20</height> </size> </property> </spacer> </item> + </layout> + </item> + <item row="4" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QLabel" name="referenceL"> + <property name="text"> + <string>Sele&cted Label:</string> + </property> + <property name="alignment"> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> + </property> + <property name="buddy"> + <cstring>referenceED</cstring> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="referenceED"> + <property name="toolTip"> + <string>Select a label from the list above or enter a label manually</string> + </property> + </widget> + </item> <item> <widget class="QPushButton" name="gotoPB"> <property name="sizePolicy"> - <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> + <property name="toolTip"> + <string>Jump to the selected label</string> + </property> <property name="text"> <string>&Go to Label</string> </property> @@ -184,105 +197,119 @@ </item> </layout> </item> - <item row="6" column="0"> - <widget class="QLabel" name="referenceL"> - <property name="text"> - <string>&Label:</string> - </property> - <property name="alignment"> - <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> - </property> - <property name="buddy"> - <cstring>referenceED</cstring> - </property> - </widget> - </item> - <item row="6" column="1" colspan="2"> - <widget class="QLineEdit" name="referenceED"/> - </item> - <item row="7" column="1" colspan="2"> - <widget class="QComboBox" name="typeCO"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="toolTip"> - <string>Cross-reference as it appears in output</string> - </property> + <item row="5" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> - <property name="text"> - <string><reference></string> - </property> - </item> - <item> - <property name="text"> - <string>(<reference>)</string> - </property> - </item> - <item> - <property name="text"> - <string><page></string> - </property> - </item> - <item> - <property name="text"> - <string>on page <page></string> - </property> + <widget class="QLabel" name="typeLA"> + <property name="text"> + <string>Reference For&mat:</string> + </property> + <property name="alignment"> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> + </property> + <property name="buddy"> + <cstring>typeCO</cstring> + </property> + </widget> </item> <item> - <property name="text"> - <string><reference> on page <page></string> - </property> + <widget class="QComboBox" name="typeCO"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip"> + <string>Adjust the style of the cross-reference</string> + </property> + <item> + <property name="text"> + <string><reference></string> + </property> + </item> + <item> + <property name="text"> + <string>(<reference>)</string> + </property> + </item> + <item> + <property name="text"> + <string><page></string> + </property> + </item> + <item> + <property name="text"> + <string>on page <page></string> + </property> + </item> + <item> + <property name="text"> + <string><reference> on page <page></string> + </property> + </item> + <item> + <property name="text"> + <string>Formatted reference</string> + </property> + </item> + <item> + <property name="text"> + <string>Textual reference</string> + </property> + </item> + </widget> </item> + </layout> + </item> + <item row="6" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout_4"> <item> - <property name="text"> - <string>Formatted reference</string> - </property> + <widget class="QLabel" name="nameL"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>&Name:</string> + </property> + <property name="alignment"> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> + </property> + <property name="buddy"> + <cstring>nameED</cstring> + </property> + </widget> </item> <item> - <property name="text"> - <string>Textual reference</string> - </property> + <widget class="QLineEdit" name="nameED"> + <property name="enabled"> + <bool>false</bool> + </property> + </widget> </item> - </widget> - </item> - <item row="8" column="0"> - <widget class="QLabel" name="nameL"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>&Name:</string> - </property> - <property name="alignment"> - <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> - </property> - <property name="buddy"> - <cstring>nameED</cstring> - </property> - </widget> - </item> - <item row="8" column="1" colspan="2"> - <widget class="QLineEdit" name="nameED"> - <property name="enabled"> - <bool>false</bool> - </property> - </widget> + </layout> </item> - <item row="9" column="0" colspan="3"> + <item row="7" column="0"> <layout class="QHBoxLayout"> <property name="spacing"> <number>6</number> </property> - <property name="margin"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> <number>0</number> </property> <item> <widget class="QPushButton" name="updatePB"> <property name="sizePolicy"> - <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -349,30 +376,12 @@ </item> </layout> </item> - <item row="7" column="0"> - <widget class="QLabel" name="typeLA"> - <property name="text"> - <string>&Format:</string> - </property> - <property name="alignment"> - <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> - </property> - <property name="buddy"> - <cstring>typeCO</cstring> - </property> - </widget> - </item> </layout> </widget> <tabstops> - <tabstop>bufferCO</tabstop> <tabstop>refsTW</tabstop> - <tabstop>findLE</tabstop> <tabstop>csFindCB</tabstop> - <tabstop>sortCB</tabstop> - <tabstop>caseSensitiveCB</tabstop> <tabstop>groupCB</tabstop> - <tabstop>gotoPB</tabstop> <tabstop>referenceED</tabstop> <tabstop>typeCO</tabstop> <tabstop>nameED</tabstop>