X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiIndices.cpp;h=a1198a68841d6f1d26a326bdbd9fddba09dadee1;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=ef7632134a6a35291183f68039cc64ed4192d692;hpb=c52bd08442214e4d768ee73886dee68e2b812cd1;p=lyx.git diff --git a/src/frontends/qt4/GuiIndices.cpp b/src/frontends/qt4/GuiIndices.cpp index ef7632134a..a1198a6884 100644 --- a/src/frontends/qt4/GuiIndices.cpp +++ b/src/frontends/qt4/GuiIndices.cpp @@ -22,6 +22,7 @@ #include "frontends/alert.h" #include "BufferParams.h" +#include "LyXRC.h" #include "support/gettext.h" #include "support/lstrings.h" @@ -34,6 +35,10 @@ #include +using namespace std; +using namespace lyx::support; + + namespace lyx { namespace frontend { @@ -46,13 +51,20 @@ GuiIndices::GuiIndices(QWidget * parent) indicesTW->headerItem()->setText(0, qt_("Name")); indicesTW->headerItem()->setText(1, qt_("Label Color")); indicesTW->setSortingEnabled(true); + + indexCO->clear(); + indexCO->addItem(qt_("Default"), QString("default")); + for (set::const_iterator it = lyxrc.index_alternatives.begin(); + it != lyxrc.index_alternatives.end(); ++it) { + QString const command = toqstr(*it).left(toqstr(*it).indexOf(" ")); + indexCO->addItem(command, command); + } } void GuiIndices::update(BufferParams const & params) { indiceslist_ = params.indiceslist(); - multipleIndicesCB->setChecked( - params.use_indices); + multipleIndicesCB->setChecked(params.use_indices); bool const state = params.use_indices; indicesTW->setEnabled(state); newIndexLE->setEnabled(state); @@ -61,6 +73,22 @@ void GuiIndices::update(BufferParams const & params) availableLA->setEnabled(state); removePB->setEnabled(state); colorPB->setEnabled(state); + + string command; + string options = + split(params.index_command, command, ' '); + + int const pos = indexCO->findData(toqstr(command)); + if (pos != -1) { + indexCO->setCurrentIndex(pos); + indexOptionsED->setText(toqstr(options).trimmed()); + } else { + indexCO->setCurrentIndex(0); + indexOptionsED->clear(); + } + indexOptionsED->setEnabled( + indexCO->currentIndex() != 0); + updateView(); } @@ -95,6 +123,12 @@ void GuiIndices::updateView() indicesTW->setItemSelected(newItem, true); } } + indicesTW->resizeColumnToContents(0); + bool const have_sel = + !indicesTW->selectedItems().isEmpty(); + removePB->setEnabled(have_sel); + renamePB->setEnabled(have_sel); + colorPB->setEnabled(have_sel); // emit signal changed(); } @@ -104,6 +138,28 @@ void GuiIndices::apply(BufferParams & params) const { params.use_indices = multipleIndicesCB->isChecked(); params.indiceslist() = indiceslist_; + + string const index_command = + fromqstr(indexCO->itemData( + indexCO->currentIndex()).toString()); + string const index_options = fromqstr(indexOptionsED->text()); + if (index_command == "default" || index_options.empty()) + params.index_command = index_command; + else + params.index_command = index_command + " " + index_options; +} + + +void GuiIndices::on_indexCO_activated(int n) +{ + indexOptionsED->setEnabled(n != 0); + changed(); +} + + +void GuiIndices::on_indexOptionsED_textChanged(QString) +{ + changed(); } @@ -146,16 +202,19 @@ void GuiIndices::on_renamePB_clicked() sel_index = selItem->text(0); if (!sel_index.isEmpty()) { docstring newname; + docstring const oldname = qstring_to_ucs4(sel_index); bool success = false; - if (Alert::askForText(newname, _("Enter new index name"))) { + if (Alert::askForText(newname, _("Enter new index name"), oldname)) { + if (newname.empty() || oldname == newname) + return; success = indiceslist_.rename(qstring_to_ucs4(sel_index), newname); newIndexLE->clear(); updateView(); + if (!success) + Alert::error(_("Renaming failed"), + _("The index could not be renamed. " + "Check if the new name already exists.")); } - if (!success) - Alert::error(_("Renaming failed"), - _("The index could not be renamed. " - "Check if the new name already exists.")); } } @@ -166,6 +225,16 @@ void GuiIndices::on_indicesTW_itemDoubleClicked(QTreeWidgetItem * item, int /*co } +void GuiIndices::on_indicesTW_itemSelectionChanged() +{ + bool const have_sel = + !indicesTW->selectedItems().isEmpty(); + removePB->setEnabled(have_sel); + renamePB->setEnabled(have_sel); + colorPB->setEnabled(have_sel); +} + + void GuiIndices::on_colorPB_clicked() { toggleColor(indicesTW->currentItem()); @@ -174,13 +243,16 @@ void GuiIndices::on_colorPB_clicked() void GuiIndices::on_multipleIndicesCB_toggled(bool const state) { + bool const have_sel = + !indicesTW->selectedItems().isEmpty(); indicesTW->setEnabled(state); newIndexLE->setEnabled(state); newIndexLA->setEnabled(state); addIndexPB->setEnabled(state); availableLA->setEnabled(state); - removePB->setEnabled(state); - colorPB->setEnabled(state); + removePB->setEnabled(state && have_sel); + colorPB->setEnabled(state && have_sel); + renamePB->setEnabled(state && have_sel); // emit signal changed(); }