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.
6 * \author Angus Leeming
8 * Full author contact details are available in file CREDITS.
15 #include "ControlAboutlyx.h"
16 #include "ControlBibtex.h"
17 #include "ControlBox.h"
18 #include "ControlBranch.h"
19 #include "ControlChanges.h"
20 #include "ControlCharacter.h"
21 #include "ControlDocument.h"
22 #include "ControlErrorList.h"
23 #include "ControlERT.h"
24 #include "ControlExternal.h"
25 #include "ControlFloat.h"
26 #include "ControlGraphics.h"
27 #include "ControlInclude.h"
28 #include "ControlListings.h"
29 #include "ControlLog.h"
30 #include "ControlViewSource.h"
31 #include "ControlMath.h"
32 #include "ControlNote.h"
33 #include "ControlParagraph.h"
34 #include "ControlPrefs.h"
35 #include "ControlPrint.h"
36 #include "ControlRef.h"
37 #include "ControlSearch.h"
38 #include "ControlSendto.h"
39 #include "ControlShowFile.h"
40 #include "ControlSpellchecker.h"
41 #include "ControlTabular.h"
42 #include "ControlTabularCreate.h"
43 #include "ControlVSpace.h"
44 #include "ControlWrap.h"
47 #include "ButtonController.h"
51 #include "GuiBibitem.h"
52 #include "GuiBibtex.h"
54 #include "GuiBranch.h"
55 #include "GuiChanges.h"
56 #include "GuiCharacter.h"
57 #include "GuiCitation.h"
58 #include "GuiCitationDialog.h"
59 #include "GuiDelimiterDialog.h"
60 #include "GuiDocument.h"
61 #include "GuiErrorList.h"
63 #include "GuiExternal.h"
65 #include "GuiGraphics.h"
66 #include "GuiInclude.h"
68 #include "GuiMathMatrixDialog.h"
69 #include "GuiNomencl.h"
70 #include "GuiListings.h"
72 #include "GuiViewSource.h"
74 #include "GuiParagraph.h"
78 #include "GuiSearch.h"
79 #include "GuiSendto.h"
80 #include "GuiShowFile.h"
81 #include "GuiSpellchecker.h"
82 #include "GuiTabular.h"
83 #include "GuiTabularCreate.h"
84 #include "GuiTexinfo.h"
86 #include "TocWidget.h"
88 #include "GuiVSpace.h"
91 #ifdef HAVE_LIBAIKSAURUS
92 #include "ControlThesaurus.h"
93 #include "GuiThesaurus.h"
96 #include "qt_helpers.h"
98 #include <boost/assert.hpp>
107 char const * const dialognames[] = {
108 "aboutlyx", "bibitem", "bibtex", "box", "branch", "changes", "character",
109 "citation", "document", "errorlist", "ert", "external", "file",
110 "findreplace", "float", "graphics", "include", "index", "nomenclature", "label", "log",
111 "mathdelimiter", "mathmatrix", "note", "paragraph",
112 "prefs", "print", "ref", "sendto", "spellchecker","tabular", "tabularcreate",
114 #ifdef HAVE_LIBAIKSAURUS
118 "texinfo", "toc", "url", "view-source", "vspace", "wrap", "listings" };
120 char const * const * const end_dialognames =
121 dialognames + (sizeof(dialognames) / sizeof(char *));
125 cmpCStr(char const * name) : name_(name) {}
126 bool operator()(char const * other) {
127 return strcmp(other, name_) == 0;
137 bool Dialogs::isValidName(string const & name) const
139 return std::find_if(dialognames, end_dialognames,
140 cmpCStr(name.c_str())) != end_dialognames;
144 Dialogs::DialogPtr Dialogs::build(string const & name)
146 BOOST_ASSERT(isValidName(name));
148 DialogPtr dialog(new Dialog(lyxview_, name));
149 dialog->bc().view(new Qt2BC(dialog->bc()));
151 if (name == "aboutlyx") {
152 dialog->setController(new ControlAboutlyx(*dialog));
153 dialog->setView(new GuiAbout(*dialog));
154 dialog->bc().bp(new OkCancelPolicy);
155 } else if (name == "bibitem") {
156 dialog->setController(new ControlCommand(*dialog, name, name));
157 dialog->setView(new GuiBibitem(*dialog));
158 dialog->bc().bp(new OkCancelReadOnlyPolicy);
159 } else if (name == "bibtex") {
160 dialog->setController(new ControlBibtex(*dialog));
161 dialog->setView(new GuiBibtex(*dialog));
162 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
163 } else if (name == "box") {
164 dialog->setController(new ControlBox(*dialog));
165 dialog->setView(new GuiBox(*dialog));
166 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
167 } else if (name == "branch") {
168 dialog->setController(new ControlBranch(*dialog));
169 dialog->setView(new GuiBranch(*dialog));
170 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
171 } else if (name == "changes") {
172 dialog->setController(new ControlChanges(*dialog));
173 dialog->setView(new GuiChanges(*dialog));
174 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
175 } else if (name == "character") {
176 dialog->setController(new ControlCharacter(*dialog));
177 dialog->setView(new GuiCharacter(*dialog));
178 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
179 } else if (name == "citation") {
180 GuiCitation * ci = new GuiCitation(*dialog);
181 dialog->setController(ci);
182 dialog->setView(new GuiCitationDialog(*dialog, ci));
183 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
184 } else if (name == "document") {
185 dialog->setController(new ControlDocument(*dialog));
186 dialog->setView(new GuiDocument(*dialog));
187 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
188 } else if (name == "errorlist") {
189 dialog->setController(new ControlErrorList(*dialog));
190 dialog->setView(new GuiErrorList(*dialog));
191 dialog->bc().bp(new OkCancelPolicy);
192 } else if (name == "ert") {
193 dialog->setController(new ControlERT(*dialog));
194 dialog->setView(new GuiERT(*dialog));
195 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
196 } else if (name == "external") {
197 dialog->setController(new ControlExternal(*dialog));
198 dialog->setView(new GuiExternal(*dialog));
199 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
200 } else if (name == "file") {
201 dialog->setController(new ControlShowFile(*dialog));
202 dialog->setView(new GuiShowFile(*dialog));
203 dialog->bc().bp(new OkCancelPolicy);
204 } else if (name == "findreplace") {
205 dialog->setController(new ControlSearch(*dialog));
206 dialog->setView(new GuiSearch(*dialog));
207 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
208 } else if (name == "float") {
209 dialog->setController(new ControlFloat(*dialog));
210 dialog->setView(new GuiFloat(*dialog));
211 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
212 } else if (name == "graphics") {
213 dialog->setController(new ControlGraphics(*dialog));
214 dialog->setView(new GuiGraphics(*dialog));
215 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
216 } else if (name == "include") {
217 dialog->setController(new ControlInclude(*dialog));
218 dialog->setView(new GuiInclude(*dialog));
219 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
220 } else if (name == "index") {
221 dialog->setController(new ControlCommand(*dialog, name, name));
222 dialog->setView(new GuiIndex(*dialog,
225 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
226 } else if (name == "nomenclature") {
227 dialog->setController(new ControlCommand(*dialog, name, name));
228 dialog->setView(new GuiNomencl(*dialog, _("Nomenclature Entry")));
229 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
230 } else if (name == "label") {
231 dialog->setController(new ControlCommand(*dialog, name, name));
232 dialog->setView(new GuiIndex(*dialog,
235 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
236 } else if (name == "log") {
237 dialog->setController(new ControlLog(*dialog));
238 dialog->setView(new GuiLog(*dialog));
239 dialog->bc().bp(new OkCancelPolicy);
240 } else if (name == "view-source") {
241 GuiViewSource * qvs = new GuiViewSource(*dialog);
242 dialog->setController(qvs);
243 GuiViewBase & gui_view = static_cast<GuiViewBase &>(lyxview_);
244 dialog->setView(new DockView<GuiViewSource, GuiViewSourceDialog>(
245 *dialog, qvs, &gui_view, _("LaTeX Source"), Qt::BottomDockWidgetArea));
246 dialog->bc().bp(new OkCancelPolicy);
247 } else if (name == "mathdelimiter") {
248 dialog->setController(new ControlMath(*dialog));
249 dialog->setView(new GuiMathDelimiter(*dialog));
250 dialog->bc().bp(new IgnorantPolicy);
251 } else if (name == "mathmatrix") {
252 dialog->setController(new ControlMath(*dialog));
253 dialog->setView(new GuiMathMatrix(*dialog));
254 dialog->bc().bp(new IgnorantPolicy);
255 } else if (name == "note") {
256 dialog->setController(new ControlNote(*dialog));
257 dialog->setView(new GuiNote(*dialog));
258 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
259 } else if (name == "paragraph") {
260 dialog->setController(new ControlParagraph(*dialog));
261 dialog->setView(new GuiParagraph(*dialog));
262 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
263 } else if (name == "prefs") {
264 dialog->setController(new ControlPrefs(*dialog));
265 dialog->setView(new GuiPrefs(*dialog));
266 dialog->bc().bp(new PreferencesPolicy);
267 } else if (name == "print") {
268 dialog->setController(new ControlPrint(*dialog));
269 dialog->setView(new GuiPrint(*dialog));
270 dialog->bc().bp(new OkApplyCancelPolicy);
271 } else if (name == "ref") {
272 // full qualification because qt4 has also a ControlRef type
273 dialog->setController(new ControlRef(*dialog));
274 dialog->setView(new GuiRef(*dialog));
275 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
276 } else if (name == "sendto") {
277 dialog->setController(new ControlSendto(*dialog));
278 dialog->setView(new GuiSendto(*dialog));
279 dialog->bc().bp(new OkApplyCancelPolicy);
280 } else if (name == "spellchecker") {
281 dialog->setController(new ControlSpellchecker(*dialog));
282 dialog->setView(new GuiSpellchecker(*dialog));
283 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
284 } else if (name == "tabular") {
285 dialog->setController(new ControlTabular(*dialog));
286 dialog->setView(new GuiTabular(*dialog));
287 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
288 } else if (name == "tabularcreate") {
289 dialog->setController(new ControlTabularCreate(*dialog));
290 dialog->setView(new GuiTabularCreate(*dialog));
291 dialog->bc().bp(new IgnorantPolicy);
292 } else if (name == "texinfo") {
293 dialog->setController(new ControlTexinfo(*dialog));
294 dialog->setView(new GuiTexinfo(*dialog));
295 dialog->bc().bp(new OkCancelPolicy);
296 #ifdef HAVE_LIBAIKSAURUS
297 } else if (name == "thesaurus") {
298 dialog->setController(new ControlThesaurus(*dialog));
299 dialog->setView(new GuiThesaurus(*dialog));
300 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
302 } else if (name == "toc") {
303 GuiViewBase & gui_view = static_cast<GuiViewBase &>(lyxview_);
304 GuiToc * qtoc = new GuiToc(*dialog, &gui_view);
305 dialog->setController(qtoc);
307 // On Mac show as a drawer at the right
308 dialog->setView(new DockView<GuiToc, TocWidget>(
309 *dialog, qtoc, &gui_view, _("Outline"), Qt::RightDockWidgetArea, Qt::Drawer));
311 dialog->setView(new DockView<GuiToc, TocWidget>(
312 *dialog, qtoc, &gui_view, _("Outline")));
314 dialog->bc().bp(new OkCancelPolicy);
315 } else if (name == "url") {
316 dialog->setController(new ControlCommand(*dialog, name, name));
317 dialog->setView(new UrlView(*dialog));
318 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
319 } else if (name == "vspace") {
320 dialog->setController(new ControlVSpace(*dialog));
321 dialog->setView(new GuiVSpace(*dialog));
322 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
323 } else if (name == "wrap") {
324 dialog->setController(new ControlWrap(*dialog));
325 dialog->setView(new GuiWrap(*dialog));
326 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
327 } else if (name == "listings") {
328 dialog->setController(new ControlListings(*dialog));
329 dialog->setView(new GuiListings(*dialog));
330 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
337 /// Are the tooltips on or off?
338 bool Dialogs::tooltipsEnabled()
343 } // namespace frontend