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