]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiIndex.cpp
* fix spelling in comments to please John.
[lyx.git] / src / frontends / qt4 / GuiIndex.cpp
index 737b30c1e0ade2bf71bad3e496d04488482ae31e..0f25c93da72f4f3d32825e568e4d8857c8f444fd 100644 (file)
@@ -3,7 +3,9 @@
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
- * \author John Levon
+ * \author Angus Leeming
+ * \author Martin Vermeer
+ * \author Jürgen Spitzmüller
  *
  * Full author contact details are available in file CREDITS.
  */
 
 #include "GuiIndex.h"
 
-#include "support/debug.h"
 #include "qt_helpers.h"
 
-#include <QLabel>
+#include "Buffer.h"
+#include "BufferParams.h"
+#include "FuncRequest.h"
+#include "IndicesList.h"
+
+#include "insets/InsetIndex.h"
+
 #include <QPushButton>
-#include <QLineEdit>
-#include <QCloseEvent>
 
 using namespace std;
 
 namespace lyx {
 namespace frontend {
 
-/////////////////////////////////////////////////////////////////
-//
-// Base implementation
-//
-/////////////////////////////////////////////////////////////////
-
-GuiIndexDialogBase::GuiIndexDialogBase(GuiView & lv,
-               QString const & title, QString const & label, string const & name)
-       : GuiCommand(lv, name, title)
+GuiIndex::GuiIndex(GuiView & lv)
+       : GuiDialog(lv, "index", qt_("Index Entry Settings"))
 {
-       label_ = label;
        setupUi(this);
 
        connect(okPB, SIGNAL(clicked()), this, SLOT(slotOK()));
-       connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose()));
-       connect(keywordED, SIGNAL(textChanged(const QString &)),
-               this, SLOT(change_adaptor()));
-
-       setFocusProxy(keywordED);
-
-       keywordLA->setText(label_);
-
-       keywordED->setWhatsThis( qt_(
-               "The format of the entry in the index.\n"
-               "\n"
-               "An entry can be specified as a sub-entry of\n"
-               "another with \"!\":\n"
-               "\n"
-               "cars!mileage\n"
-               "\n"
-               "You can cross-refer to another entry like so:\n"
-               "\n"
-               "cars!mileage|see{economy}\n"
-               "\n"
-               "For further details refer to the local LaTeX\n"
-               "documentation.\n")
-       );
+       connect(cancelPB, SIGNAL(clicked()), this, SLOT(slotClose()));
+       connect(indicesCO, SIGNAL(activated(int)), this, SLOT(change_adaptor()));
 
        bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
        bc().setOK(okPB);
-       bc().setCancel(closePB);
-       bc().addReadOnly(keywordED);
+       bc().setCancel(cancelPB);
 }
 
 
-void GuiIndexDialogBase::change_adaptor()
+void GuiIndex::change_adaptor()
 {
        changed();
 }
 
 
-void GuiIndexDialogBase::reject()
+void GuiIndex::updateContents()
 {
-       slotClose();
-}
+       typedef IndicesList::const_iterator const_iterator;
 
+       IndicesList const & indiceslist = buffer().params().indiceslist();
+       docstring const cur_index = params_.index;
 
-void GuiIndexDialogBase::closeEvent(QCloseEvent * e)
-{
-       slotClose();
-       e->accept();
-}
+       indicesCO->clear();
 
+       const_iterator const begin = indiceslist.begin();
+       const_iterator const end = indiceslist.end();
+       for (const_iterator it = begin; it != end; ++it)
+               indicesCO->addItem(toqstr(it->index()),
+                       QVariant(toqstr(it->shortcut())));
 
-void GuiIndexDialogBase::updateContents()
-{
-       docstring const contents = params_["name"];
-       keywordED->setText(toqstr(contents));
-       bc().setValid(!contents.empty());
+       int const pos = indicesCO->findData(toqstr(cur_index));
+       indicesCO->setCurrentIndex(pos);
 }
 
 
-void GuiIndexDialogBase::applyView()
+void GuiIndex::applyView()
 {
-       params_["name"] = qstring_to_ucs4(keywordED->text());
+       QString const index = indicesCO->itemData(
+               indicesCO->currentIndex()).toString();
+       params_.index = qstring_to_ucs4(index);
 }
 
 
-bool GuiIndexDialogBase::isValid()
+bool GuiIndex::initialiseParams(string const & data)
 {
-       return !keywordED->text().isEmpty();
+       InsetIndex::string2params(data, params_);
+       return true;
 }
 
 
-/////////////////////////////////////////////////////////////////
-//
-// Index Dialog
-//
-/////////////////////////////////////////////////////////////////
+void GuiIndex::clearParams()
+{
+       params_ = InsetIndexParams();
+}
 
 
-GuiIndex::GuiIndex(GuiView & lv)
-       : GuiIndexDialogBase(lv, qt_("Index Entry"), qt_("&Keyword:"), "index") 
+void GuiIndex::dispatchParams()
 {
-       keywordED->setWhatsThis( qt_(
-               "The format of the entry in the index.\n"
-               "\n"
-               "An entry can be specified as a sub-entry of\n"
-               "another with \"!\":\n"
-               "\n"
-               "cars!mileage\n"
-               "\n"
-               "You can cross-refer to another entry like so:\n"
-               "\n"
-               "cars!mileage|see{economy}\n"
-               "\n"
-               "For further details refer to the local LaTeX\n"
-               "documentation.\n")
-       );
+       dispatch(FuncRequest(getLfun(), InsetIndex::params2string(params_)));
 }
 
 
 Dialog * createGuiIndex(GuiView & lv) { return new GuiIndex(lv); }
 
 
-/////////////////////////////////////////////////////////////////
-//
-// Label Dialog
-//
-/////////////////////////////////////////////////////////////////
-
-GuiLabel::GuiLabel(GuiView & lv)
-       : GuiIndexDialogBase(lv, qt_("Label"), qt_("&Label:"), "label")
-{}
-
-
-Dialog * createGuiLabel(GuiView & lv) { return new GuiLabel(lv); }
-
-
 } // namespace frontend
 } // namespace lyx
 
-#include "GuiIndex_moc.cpp"
+#include "moc_GuiIndex.cpp"