]> git.lyx.org Git - lyx.git/blob - src/frontends/qt4/GuiNomenclature.cpp
Skip paint event when in the middle of a buffer operation
[lyx.git] / src / frontends / qt4 / GuiNomenclature.cpp
1 /**
2  * \file GuiNomencl.cpp
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author John Levon
7  * \author O. U. Baran
8  *
9  * Full author contact details are available in file CREDITS.
10  */
11
12 #include <config.h>
13
14 #include "GuiNomenclature.h"
15
16 #include "qt_helpers.h"
17
18 #include "insets/InsetNomencl.h"
19
20 using namespace std;
21
22 namespace lyx {
23 namespace frontend {
24
25 GuiNomenclature::GuiNomenclature(QWidget * parent) : InsetParamsWidget(parent)
26 {
27         setupUi(this);
28         connect(symbolED, SIGNAL(textChanged(QString)),
29                 this, SIGNAL(changed()));
30         connect(descriptionTE, SIGNAL(textChanged()),
31                 this, SIGNAL(changed()));
32         connect(literalCB, SIGNAL(clicked()),
33                 this, SIGNAL(changed()));
34
35         setFocusProxy(descriptionTE);
36 }
37
38
39 void GuiNomenclature::paramsToDialog(Inset const * inset)
40 {
41         InsetNomencl const * nomencl = static_cast<InsetNomencl const *>(inset);
42         InsetCommandParams const & params = nomencl->params();
43
44         prefixED->setText(toqstr(params["prefix"]));
45         symbolED->setText(toqstr(params["symbol"]));
46         literalCB->setChecked(params["literal"] == "true");
47         QString description = toqstr(params["description"]);
48         description.replace("\\\\","\n");
49         descriptionTE->setPlainText(description);
50         descriptionTE->setFocus();
51 }
52
53
54 docstring GuiNomenclature::dialogToParams() const
55 {
56         InsetCommandParams params(insetCode());
57         params["prefix"] = qstring_to_ucs4(prefixED->text());
58         params["symbol"] = qstring_to_ucs4(symbolED->text());
59         QString description = descriptionTE->toPlainText();
60         description.replace('\n',"\\\\");
61         params["description"] = qstring_to_ucs4(description);
62         params["literal"] = literalCB->isChecked()
63                         ? from_ascii("true") : from_ascii("false");
64         return from_utf8(InsetNomencl::params2string(params));
65 }
66
67
68 bool GuiNomenclature::initialiseParams(std::string const & sdata)
69 {
70         InsetCommandParams p(insetCode());
71         if (!InsetCommand::string2params(sdata, p))
72                 return false;
73         symbolED->setText(toqstr(p["symbol"]));
74         return true;
75 }
76
77
78 bool GuiNomenclature::checkWidgets(bool readonly) const
79 {
80         symbolED->setReadOnly(readonly);
81         descriptionTE->setReadOnly(readonly);
82         if (!InsetParamsWidget::checkWidgets())
83                 return false;
84         QString const description = descriptionTE->toPlainText();
85         return !symbolED->text().isEmpty() && !description.isEmpty();
86 }
87
88 } // namespace frontend
89 } // namespace lyx
90
91 #include "moc_GuiNomenclature.cpp"