]> git.lyx.org Git - lyx.git/blob - src/frontends/qt4/Dialogs.cpp
renaming of some methods that hurt the eyes + removal of:
[lyx.git] / src / frontends / qt4 / Dialogs.cpp
1 /**
2  * \file qt4/Dialogs.cpp
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author Angus Leeming
7  *
8  * Full author contact details are available in file CREDITS.
9  */
10
11 #include <config.h>
12
13 #include "Dialogs.h"
14 #include "GuiDialog.h"
15
16 #include "ButtonController.h"
17 #include "DockView.h"
18 #include "GuiView.h"
19 #include "GuiAbout.h"
20 #include "GuiBibitem.h"
21 #include "GuiBibtex.h"
22 #include "GuiBox.h"
23 #include "GuiBranch.h"
24 #include "GuiChanges.h"
25 #include "GuiCharacter.h"
26 #include "GuiCitation.h"
27 #include "GuiDelimiter.h"
28 #include "GuiDocument.h"
29 #include "GuiEmbeddedFiles.h"
30 #include "GuiErrorList.h"
31 #include "GuiERT.h"
32 #include "GuiExternal.h"
33 #include "GuiFloat.h"
34 #include "GuiGraphics.h"
35 #include "GuiInclude.h"
36 #include "GuiIndex.h"
37 #include "GuiMathMatrix.h"
38 #include "GuiNomencl.h"
39 #include "GuiListings.h"
40 #include "GuiLog.h"
41 #include "GuiViewSource.h"
42 #include "GuiNote.h"
43 #include "GuiParagraph.h"
44 #include "GuiPrefs.h"
45 #include "GuiPrint.h"
46 #include "GuiRef.h"
47 #include "GuiSearch.h"
48 #include "GuiSendto.h"
49 #include "GuiShowFile.h"
50 #include "GuiSpellchecker.h"
51 #include "GuiTabular.h"
52 #include "GuiTabularCreate.h"
53 #include "GuiTexinfo.h"
54 #include "GuiToc.h"
55 #include "TocWidget.h"
56 #include "GuiURL.h"
57 #include "GuiVSpace.h"
58 #include "GuiWrap.h"
59
60 #ifdef HAVE_LIBAIKSAURUS
61 #include "ControlThesaurus.h"
62 #include "GuiThesaurus.h"
63 #endif
64
65 #include "qt_helpers.h"
66
67 #include <boost/assert.hpp>
68
69 using std::string;
70
71 namespace lyx {
72 namespace frontend {
73
74 namespace {
75
76 char const * const dialognames[] = {
77 "aboutlyx", "bibitem", "bibtex", "box", "branch", "changes", "character",
78 "citation", "document", "embedding", "errorlist", "ert", "external", "file",
79 "findreplace", "float", "graphics", "include", "index", "nomenclature", "label", "log",
80 "mathdelimiter", "mathmatrix", "note", "paragraph",
81 "prefs", "print", "ref", "sendto", "spellchecker","tabular", "tabularcreate",
82
83 #ifdef HAVE_LIBAIKSAURUS
84 "thesaurus",
85 #endif
86
87 "texinfo", "toc", "url", "view-source", "vspace", "wrap", "listings" };
88
89 char const * const * const end_dialognames =
90         dialognames + (sizeof(dialognames) / sizeof(char *));
91
92 class cmpCStr {
93 public:
94         cmpCStr(char const * name) : name_(name) {}
95         bool operator()(char const * other) {
96                 return strcmp(other, name_) == 0;
97         }
98 private:
99         char const * name_;
100 };
101
102
103 } // namespace anon
104
105
106 bool Dialogs::isValidName(string const & name) const
107 {
108         return std::find_if(dialognames, end_dialognames,
109                             cmpCStr(name.c_str())) != end_dialognames;
110 }
111
112
113 Dialog * Dialogs::build(string const & name)
114 {
115         BOOST_ASSERT(isValidName(name));
116
117         GuiDialog * dialog = new GuiDialog(lyxview_, name);
118
119         if (name == "aboutlyx") {
120                 dialog->setController(new ControlAboutlyx(*dialog));
121                 dialog->setView(new GuiAbout(*dialog));
122                 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
123         } else if (name == "bibitem") {
124                 dialog->setController(new ControlCommand(*dialog, name, name));
125                 dialog->setView(new GuiBibitem(*dialog));
126                 dialog->bc().setPolicy(ButtonPolicy::OkCancelReadOnlyPolicy);
127         } else if (name == "bibtex") {
128                 dialog->setController(new ControlBibtex(*dialog));
129                 dialog->setView(new GuiBibtex(*dialog));
130                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
131         } else if (name == "box") {
132                 dialog->setController(new ControlBox(*dialog));
133                 dialog->setView(new GuiBox(*dialog));
134                 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
135         } else if (name == "branch") {
136                 dialog->setController(new ControlBranch(*dialog));
137                 dialog->setView(new GuiBranch(*dialog));
138                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
139         } else if (name == "changes") {
140                 dialog->setController(new ControlChanges(*dialog));
141                 dialog->setView(new GuiChanges(*dialog));
142                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
143         } else if (name == "character") {
144                 dialog->setController(new ControlCharacter(*dialog));
145                 dialog->setView(new GuiCharacter(*dialog));
146                 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
147         } else if (name == "citation") {
148                 GuiCitation * ci = new GuiCitation(*dialog);
149                 dialog->setController(ci);
150                 dialog->setView(new GuiCitationDialog(*dialog, ci));
151                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
152         } else if (name == "document") {
153                 dialog->setController(new ControlDocument(*dialog));
154                 dialog->setView(new GuiDocument(*dialog));
155                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
156         } else if (name == "embedding") {
157                 GuiViewBase & gui_view = static_cast<GuiViewBase &>(lyxview_);
158                 GuiEmbeddedFiles * qef = new GuiEmbeddedFiles(*dialog);
159                 dialog->setController(qef);
160                 dialog->setView(new DockView<GuiEmbeddedFiles, GuiEmbeddedFilesDialog>(
161                         *dialog, qef, &gui_view, _("Embedded Files"), Qt::RightDockWidgetArea));
162                 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
163         } else if (name == "errorlist") {
164                 dialog->setController(new ControlErrorList(*dialog));
165                 dialog->setView(new GuiErrorList(*dialog));
166                 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
167         } else if (name == "ert") {
168                 dialog->setController(new ControlERT(*dialog));
169                 dialog->setView(new GuiERT(*dialog));
170                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
171         } else if (name == "external") {
172                 dialog->setController(new ControlExternal(*dialog));
173                 dialog->setView(new GuiExternal(*dialog));
174                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
175         } else if (name == "file") {
176                 dialog->setController(new ControlShowFile(*dialog));
177                 dialog->setView(new GuiShowFile(*dialog));
178                 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
179         } else if (name == "findreplace") {
180                 dialog->setController(new ControlSearch(*dialog));
181                 dialog->setView(new GuiSearch(*dialog));
182                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
183         } else if (name == "float") {
184                 dialog->setController(new ControlFloat(*dialog));
185                 dialog->setView(new GuiFloat(*dialog));
186                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
187         } else if (name == "graphics") {
188                 dialog->setController(new ControlGraphics(*dialog));
189                 dialog->setView(new GuiGraphics(*dialog));
190                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
191         } else if (name == "include") {
192                 dialog->setController(new ControlInclude(*dialog));
193                 dialog->setView(new GuiInclude(*dialog));
194                 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
195         } else if (name == "index") {
196                 dialog->setController(new ControlCommand(*dialog, name, name));
197                 dialog->setView(new GuiIndex(*dialog,
198                                            _("Index Entry"),
199                                            qt_("&Keyword:")));
200                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
201         } else if (name == "nomenclature") {
202                 dialog->setController(new ControlCommand(*dialog, name, name));
203                 dialog->setView(new GuiNomencl(*dialog, _("Nomenclature Entry")));
204                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
205         } else if (name == "label") {
206                 dialog->setController(new ControlCommand(*dialog, name, name));
207                 dialog->setView(new GuiIndex(*dialog,
208                                            _("Label"),
209                                            qt_("&Label:")));
210                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
211         } else if (name == "log") {
212                 dialog->setController(new ControlLog(*dialog));
213                 dialog->setView(new GuiLog(*dialog));
214                 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
215         } else if (name == "view-source") {
216                 GuiViewSource * qvs = new GuiViewSource(*dialog);
217                 dialog->setController(qvs);
218                 GuiViewBase & gui_view = static_cast<GuiViewBase &>(lyxview_);
219                 dialog->setView(new DockView<GuiViewSource, GuiViewSourceDialog>(
220                         *dialog, qvs, &gui_view, _("LaTeX Source"), Qt::BottomDockWidgetArea));
221                 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
222         } else if (name == "mathdelimiter") {
223                 dialog->setController(new ControlMath(*dialog));
224                 dialog->setView(new GuiDelimiter(*dialog));
225                 dialog->bc().setPolicy(ButtonPolicy::IgnorantPolicy);
226         } else if (name == "mathmatrix") {
227                 dialog->setController(new ControlMath(*dialog));
228                 dialog->setView(new GuiMathMatrix(*dialog));
229                 dialog->bc().setPolicy(ButtonPolicy::IgnorantPolicy);
230         } else if (name == "note") {
231                 dialog->setController(new ControlNote(*dialog));
232                 dialog->setView(new GuiNote(*dialog));
233                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
234         } else if (name == "paragraph") {
235                 dialog->setController(new ControlParagraph(*dialog));
236                 dialog->setView(new GuiParagraph(*dialog));
237                 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
238         } else if (name == "prefs") {
239                 dialog->setController(new ControlPrefs(*dialog));
240                 dialog->setView(new GuiPrefs(*dialog));
241                 dialog->bc().setPolicy(ButtonPolicy::PreferencesPolicy);
242         } else if (name == "print") {
243                 dialog->setController(new ControlPrint(*dialog));
244                 dialog->setView(new GuiPrint(*dialog));
245                 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelPolicy);
246         } else if (name == "ref") {
247                 // full qualification because qt4 has also a ControlRef type
248                 dialog->setController(new ControlRef(*dialog));
249                 dialog->setView(new GuiRef(*dialog));
250                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
251         } else if (name == "sendto") {
252                 dialog->setController(new ControlSendto(*dialog));
253                 dialog->setView(new GuiSendto(*dialog));
254                 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelPolicy);
255         } else if (name == "spellchecker") {
256                 dialog->setController(new ControlSpellchecker(*dialog));
257                 dialog->setView(new GuiSpellchecker(*dialog));
258                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
259         } else if (name == "tabular") {
260                 dialog->setController(new ControlTabular(*dialog));
261                 dialog->setView(new GuiTabular(*dialog));
262                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
263         } else if (name == "tabularcreate") {
264                 dialog->setController(new ControlTabularCreate(*dialog));
265                 dialog->setView(new GuiTabularCreate(*dialog));
266                 dialog->bc().setPolicy(ButtonPolicy::IgnorantPolicy);
267         } else if (name == "texinfo") {
268                 dialog->setController(new ControlTexinfo(*dialog));
269                 dialog->setView(new GuiTexinfo(*dialog));
270                 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
271 #ifdef HAVE_LIBAIKSAURUS
272         } else if (name == "thesaurus") {
273                 dialog->setController(new ControlThesaurus(*dialog));
274                 dialog->setView(new GuiThesaurus(*dialog));
275                 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
276 #endif
277         } else if (name == "toc") {
278                 GuiViewBase & gui_view = static_cast<GuiViewBase &>(lyxview_);
279                 GuiToc * qtoc = new GuiToc(*dialog, &gui_view);
280                 dialog->setController(qtoc);
281 #ifdef Q_WS_MACX
282                 // On Mac show as a drawer at the right
283                 dialog->setView(new DockView<GuiToc, TocWidget>(
284                         *dialog, qtoc, &gui_view, _("Outline"), Qt::RightDockWidgetArea, Qt::Drawer));
285 #else
286                 dialog->setView(new DockView<GuiToc, TocWidget>(
287                         *dialog, qtoc, &gui_view, _("Outline")));
288 #endif
289                 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
290         } else if (name == "url") {
291                 dialog->setController(new ControlCommand(*dialog, name, name));
292                 dialog->setView(new UrlView(*dialog));
293                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
294         } else if (name == "vspace") {
295                 dialog->setController(new ControlVSpace(*dialog));
296                 dialog->setView(new GuiVSpace(*dialog));
297                 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
298         } else if (name == "wrap") {
299                 dialog->setController(new ControlWrap(*dialog));
300                 dialog->setView(new GuiWrap(*dialog));
301                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
302         } else if (name == "listings") {
303                 dialog->setController(new ControlListings(*dialog));
304                 dialog->setView(new GuiListings(*dialog));
305                 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
306         }
307
308         return dialog;
309 }
310
311
312 /// Are the tooltips on or off?
313 bool Dialogs::tooltipsEnabled()
314 {
315         return false;
316 }
317
318 } // namespace frontend
319 } // namespace lyx