]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiPrintindex.cpp
Use <cstdint> instead of <boost/cstdint.hpp>
[lyx.git] / src / frontends / qt4 / GuiPrintindex.cpp
index 53278497e0194b02ab6960ef3a1a9f4e8f6f9ddf..1244c62e495d4ad00eb6f9aae057969a9debd086 100644 (file)
 #include "FuncRequest.h"
 #include "IndicesList.h"
 
+#include "support/lstrings.h"
+
 #include "insets/InsetCommand.h"
 
 #include <QPushButton>
 
 using namespace std;
+using namespace lyx::support;
 
 namespace lyx {
 namespace frontend {
@@ -36,13 +39,15 @@ GuiPrintindex::GuiPrintindex(GuiView & lv)
 {
        setupUi(this);
 
-       connect(okPB, SIGNAL(clicked()), this, SLOT(slotOK()));
-       connect(cancelPB, SIGNAL(clicked()), this, SLOT(slotClose()));
+       connect(buttonBox, SIGNAL(clicked(QAbstractButton *)),
+               this, SLOT(slotButtonBox(QAbstractButton *)));
        connect(indicesCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
+       connect(subindexCB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
+       connect(literalCB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
 
        bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
-       bc().setOK(okPB);
-       bc().setCancel(cancelPB);
+       bc().setOK(buttonBox->button(QDialogButtonBox::Ok));
+       bc().setCancel(buttonBox->button(QDialogButtonBox::Cancel));
 }
 
 
@@ -57,10 +62,14 @@ void GuiPrintindex::updateContents()
        typedef IndicesList::const_iterator const_iterator;
 
        IndicesList const & indiceslist = buffer().params().indiceslist();
-       docstring const cur_index = params_["type"];
+       docstring const cur_index = suffixIs(params_.getCmdName(), '*') ?
+               from_ascii("printall") : params_["type"];
 
        indicesCO->clear();
 
+       indicesCO->addItem(qt_("<All indexes>"),
+                       QVariant(QString("printall")));
+
        const_iterator const begin = indiceslist.begin();
        const_iterator const end = indiceslist.end();
        for (const_iterator it = begin; it != end; ++it)
@@ -69,6 +78,8 @@ void GuiPrintindex::updateContents()
 
        int const pos = indicesCO->findData(toqstr(cur_index));
        indicesCO->setCurrentIndex(pos);
+       subindexCB->setChecked(params_.getCmdName() == "printsubindex");
+       literalCB->setChecked(params_["literal"] == "true");
 }
 
 
@@ -76,30 +87,46 @@ void GuiPrintindex::applyView()
 {
        QString const index = indicesCO->itemData(
                indicesCO->currentIndex()).toString();
-       params_["type"] = qstring_to_ucs4(index);
+       string cmd = "printindex";
+       if (subindexCB->isChecked())
+               cmd = "printsubindex";
+       if (index == QString("printall"))
+               cmd += '*';
+       params_.setCmdName(cmd);
+       if (index == QString("printall"))
+               params_["type"] = docstring();
+       else
+               params_["type"] = qstring_to_ucs4(index);
+       params_["literal"] = literalCB->isChecked()
+                       ? from_ascii("true") : from_ascii("false");
 }
 
 
 void GuiPrintindex::paramsToDialog(InsetCommandParams const & /*icp*/)
 {
-       int const pos = indicesCO->findData(toqstr(params_["type"]));
+       int const pos = suffixIs(params_.getCmdName(), '*') ?
+               indicesCO->findData(QString("printall")) :
+               indicesCO->findData(toqstr(params_["type"]));
+       subindexCB->setChecked(params_.getCmdName() == "printsubindex");
        indicesCO->setCurrentIndex(pos);
+       literalCB->setChecked(params_["literal"] == "true");
        bc().setValid(isValid());
 }
 
 
-bool GuiPrintindex::initialiseParams(string const & data)
+bool GuiPrintindex::initialiseParams(string const & sdata)
 {
        // The name passed with LFUN_INSET_APPLY is also the name
        // used to identify the mailer.
-       InsetCommand::string2params("index_print", data, params_);
+       InsetCommand::string2params(sdata, params_);
+       paramsToDialog(params_);
        return true;
 }
 
 
 void GuiPrintindex::dispatchParams()
 {
-       std::string const lfun = InsetCommand::params2string("index_print", params_);
+       std::string const lfun = InsetCommand::params2string(params_);
        dispatch(FuncRequest(getLfun(), lfun));
 }