]> git.lyx.org Git - lyx.git/blob - src/frontends/qt4/GuiInfo.cpp
Transfer LyXfunc code to GuiApplication::dispatch() and getStatus(). Now
[lyx.git] / src / frontends / qt4 / GuiInfo.cpp
1 /**
2  * \file GuiInfo.cpp
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author Abdelrazak Younes
7  *
8  * Full author contact details are available in file CREDITS.
9  */
10
11 #include <config.h>
12
13 #include "GuiInfo.h"
14
15 #include "qt_helpers.h"
16
17 #include "Buffer.h"
18 #include "buffer_funcs.h"
19 #include "BufferParams.h"
20 #include "BufferView.h"
21 #include "Cursor.h"
22 #include "FuncRequest.h"
23
24 #include "insets/InsetInfo.h"
25
26 #include "support/debug.h"
27 #include "support/lstrings.h"
28
29
30 using namespace std;
31 using namespace lyx::support;
32
33 namespace lyx {
34 namespace frontend {
35
36 /////////////////////////////////////////////////////////////////
37 //
38 // GuiInfo
39 //
40 /////////////////////////////////////////////////////////////////
41
42 char const * info_types[] =
43 { "unknown", "shortcut", "shortcuts", "lyxrc", "package", "textclass", "menu", "icon", "buffer", "" };
44
45 char const * info_types_gui[] =
46 { N_("unknown"), N_("shortcut"), N_("shortcuts"), N_("lyxrc"), N_("package"), N_("textclass"),
47   N_("menu"), N_("icon"), N_("buffer"), ""};
48
49
50 GuiInfo::GuiInfo(GuiView & lv)
51         : InsetDialog(lv, INFO_CODE, LFUN_INFO_INSERT, "info", "Info")
52 {
53         setupUi(this);
54
55         typeCO->blockSignals(true);
56         for (int n = 0; info_types[n][0]; ++n)
57                 typeCO->addItem(qt_(info_types_gui[n]));
58         typeCO->blockSignals(false);
59
60         connect(typeCO, SIGNAL(currentIndexChanged(int)), this, SLOT(applyView()));
61         connect(nameLE, SIGNAL(textChanged(QString)), this, SLOT(applyView()));
62 }
63
64
65 void GuiInfo::paramsToDialog(Inset const * inset)
66 {
67         InsetInfo const * ii = static_cast<InsetInfo const *>(inset);
68         QString const type = toqstr(ii->infoType());
69         QString const name = toqstr(ii->infoName());
70         typeCO->blockSignals(true);
71         nameLE->blockSignals(true);
72         int type_index = findToken(info_types, fromqstr(type));
73         typeCO->setCurrentIndex(type_index >= 0 ? type_index : 0);
74         // Without this test, 'math-insert' (name) will replace 'math-insert '
75         // in nameLE and effectively disallow the input of spaces after a LFUN.
76         if (nameLE->text().trimmed() != name)
77                 nameLE->setText(name);
78         typeCO->blockSignals(false);
79         nameLE->blockSignals(false);
80 }
81
82
83 docstring GuiInfo::dialogToParams() const
84 {
85         int type_index = typeCO->currentIndex();
86         QString type;
87         if (type_index != -1)
88                 type = info_types[type_index];
89         QString const name = nameLE->text();
90         return qstring_to_ucs4(type + ' ' + name);
91 }
92
93
94 void GuiInfo::enableView(bool enable)
95 {
96         typeCO->setEnabled(enable);
97         nameLE->setEnabled(enable);
98         newPB->setEnabled(!enable);
99 }
100
101
102 Dialog * createGuiInfo(GuiView & lv) { return new GuiInfo(lv); }
103
104
105 } // namespace frontend
106 } // namespace lyx
107
108 #include "moc_GuiInfo.cpp"