#include "GuiRef.h"
+#include "GuiApplication.h"
+
#include "Buffer.h"
#include "BufferList.h"
#include "FuncRequest.h"
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 available 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);
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(filter_, SIGNAL(rightButtonClicked()),
+ this, SLOT(resetFilter()));
connect(csFindCB, SIGNAL(clicked()),
this, SLOT(filterLabels()));
connect(nameED, SIGNAL(textChanged(QString)),
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()),
}
+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())
void GuiRef::sortToggled()
-{
- caseSensitiveCB->setEnabled(sortCB->isChecked());
- redoRefs();
-}
-
-
-void GuiRef::caseSensitiveToggled()
{
redoRefs();
}
int const thebuffer = theBufferList().bufferNum(buffer().fileName());
// restore the buffer combo setting for new insets
- if (params_["reference"].empty() && restored_buffer_ != -1
+ if (new_inset && restored_buffer_ != -1
&& restored_buffer_ < bufferCO->count() && thebuffer == active_buffer_)
bufferCO->setCurrentIndex(restored_buffer_);
else {
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"));
}
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;
// 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());
}
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();
}
while (*it) {
(*it)->setHidden(
(*it)->childCount() == 0
- && !(*it)->text(0).contains(findLE->text(), cs)
+ && !(*it)->text(0).contains(filter_->text(), cs)
);
++it;
}
}
+void GuiRef::resetFilter()
+{
+ filter_->setText(QString());
+ filterLabels();
+}
+
+
bool GuiRef::initialiseParams(std::string const & data)
{
InsetCommand::string2params(data, params_);
+<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>RefUi</class>
<widget class="QDialog" name="RefUi">
<x>0</x>
<y>0</y>
<width>435</width>
- <height>500</height>
+ <height>539</height>
</rect>
</property>
<property name="windowTitle">
<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">
</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>
</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>
</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>