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"
56 #include "QCharacter.h"
57 #include "QCitation.h"
58 #include "QCitationDialog.h"
59 #include "QDelimiterDialog.h"
60 #include "QDocument.h"
61 #include "QErrorList.h"
63 #include "QExternal.h"
65 #include "QGraphics.h"
68 #include "QMathMatrixDialog.h"
70 #include "QListings.h"
72 #include "QViewSource.h"
74 #include "QParagraph.h"
80 #include "QShowFile.h"
81 #include "QSpellchecker.h"
83 #include "QTabularCreate.h"
86 #include "TocWidget.h"
91 #ifdef HAVE_LIBAIKSAURUS
92 #include "ControlThesaurus.h"
93 #include "QThesaurus.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 QAbout(*dialog));
154 dialog->bc().bp(new OkCancelPolicy);
155 } else if (name == "bibitem") {
156 dialog->setController(new ControlCommand(*dialog, name, name));
157 dialog->setView(new QBibitem(*dialog));
158 dialog->bc().bp(new OkCancelReadOnlyPolicy);
159 } else if (name == "bibtex") {
160 dialog->setController(new ControlBibtex(*dialog));
161 dialog->setView(new QBibtex(*dialog));
162 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
163 } else if (name == "box") {
164 dialog->setController(new ControlBox(*dialog));
165 dialog->setView(new QBox(*dialog));
166 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
167 } else if (name == "branch") {
168 dialog->setController(new ControlBranch(*dialog));
169 dialog->setView(new QBranch(*dialog));
170 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
171 } else if (name == "changes") {
172 dialog->setController(new ControlChanges(*dialog));
173 dialog->setView(new QChanges(*dialog));
174 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
175 } else if (name == "character") {
176 dialog->setController(new ControlCharacter(*dialog));
177 dialog->setView(new QCharacter(*dialog));
178 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
179 } else if (name == "citation") {
180 QCitation * ci = new QCitation(*dialog);
181 dialog->setController(ci);
182 dialog->setView(new QCitationDialog(*dialog, ci));
183 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
184 } else if (name == "document") {
185 dialog->setController(new ControlDocument(*dialog));
186 dialog->setView(new QDocument(*dialog));
187 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
188 } else if (name == "errorlist") {
189 dialog->setController(new ControlErrorList(*dialog));
190 dialog->setView(new QErrorList(*dialog));
191 dialog->bc().bp(new OkCancelPolicy);
192 } else if (name == "ert") {
193 dialog->setController(new ControlERT(*dialog));
194 dialog->setView(new QERT(*dialog));
195 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
196 } else if (name == "external") {
197 dialog->setController(new ControlExternal(*dialog));
198 dialog->setView(new QExternal(*dialog));
199 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
200 } else if (name == "file") {
201 dialog->setController(new ControlShowFile(*dialog));
202 dialog->setView(new QShowFile(*dialog));
203 dialog->bc().bp(new OkCancelPolicy);
204 } else if (name == "findreplace") {
205 dialog->setController(new ControlSearch(*dialog));
206 dialog->setView(new QSearch(*dialog));
207 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
208 } else if (name == "float") {
209 dialog->setController(new ControlFloat(*dialog));
210 dialog->setView(new QFloat(*dialog));
211 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
212 } else if (name == "graphics") {
213 dialog->setController(new ControlGraphics(*dialog));
214 dialog->setView(new QGraphics(*dialog));
215 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
216 } else if (name == "include") {
217 dialog->setController(new ControlInclude(*dialog));
218 dialog->setView(new QInclude(*dialog));
219 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
220 } else if (name == "index") {
221 dialog->setController(new ControlCommand(*dialog, name, name));
222 dialog->setView(new QIndex(*dialog,
225 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
226 } else if (name == "nomenclature") {
227 dialog->setController(new ControlCommand(*dialog, name, name));
228 dialog->setView(new QNomencl(*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 QIndex(*dialog,
235 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
236 } else if (name == "log") {
237 dialog->setController(new ControlLog(*dialog));
238 dialog->setView(new QLog(*dialog));
239 dialog->bc().bp(new OkCancelPolicy);
240 } else if (name == "view-source") {
241 QViewSource * qvs = new QViewSource(*dialog);
242 dialog->setController(qvs);
243 GuiView & gui_view = static_cast<GuiView &>(lyxview_);
244 dialog->setView(new DockView<QViewSource, QViewSourceDialog>(
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 QMathDelimiter(*dialog));
250 dialog->bc().bp(new IgnorantPolicy);
251 } else if (name == "mathmatrix") {
252 dialog->setController(new ControlMath(*dialog));
253 dialog->setView(new QMathMatrix(*dialog));
254 dialog->bc().bp(new IgnorantPolicy);
255 } else if (name == "note") {
256 dialog->setController(new ControlNote(*dialog));
257 dialog->setView(new QNote(*dialog));
258 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
259 } else if (name == "paragraph") {
260 dialog->setController(new ControlParagraph(*dialog));
261 dialog->setView(new QParagraph(*dialog));
262 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
263 } else if (name == "prefs") {
264 dialog->setController(new ControlPrefs(*dialog));
265 dialog->setView(new QPrefs(*dialog));
266 dialog->bc().bp(new PreferencesPolicy);
267 } else if (name == "print") {
268 dialog->setController(new ControlPrint(*dialog));
269 dialog->setView(new QPrint(*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 QRef(*dialog));
275 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
276 } else if (name == "sendto") {
277 dialog->setController(new ControlSendto(*dialog));
278 dialog->setView(new QSendto(*dialog));
279 dialog->bc().bp(new OkApplyCancelPolicy);
280 } else if (name == "spellchecker") {
281 dialog->setController(new ControlSpellchecker(*dialog));
282 dialog->setView(new QSpellchecker(*dialog));
283 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
284 } else if (name == "tabular") {
285 dialog->setController(new ControlTabular(*dialog));
286 dialog->setView(new QTabular(*dialog));
287 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
288 } else if (name == "tabularcreate") {
289 dialog->setController(new ControlTabularCreate(*dialog));
290 dialog->setView(new QTabularCreate(*dialog));
291 dialog->bc().bp(new IgnorantPolicy);
292 } else if (name == "texinfo") {
293 dialog->setController(new ControlTexinfo(*dialog));
294 dialog->setView(new QTexinfo(*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 QThesaurus(*dialog));
300 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
302 } else if (name == "toc") {
303 GuiView & gui_view = static_cast<GuiView &>(lyxview_);
304 QToc * qtoc = new QToc(*dialog, &gui_view);
305 dialog->setController(qtoc);
307 // On Mac show as a drawer at the right
308 dialog->setView(new DockView<QToc, TocWidget>(
309 *dialog, qtoc, &gui_view, _("Outline"), Qt::RightDockWidgetArea, Qt::Drawer));
311 dialog->setView(new DockView<QToc, 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 QVSpace(*dialog));
322 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
323 } else if (name == "wrap") {
324 dialog->setController(new ControlWrap(*dialog));
325 dialog->setView(new QWrap(*dialog));
326 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
327 } else if (name == "listings") {
328 dialog->setController(new ControlListings(*dialog));
329 dialog->setView(new QListings(*dialog));
330 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
337 /// Are the tooltips on or off?
338 bool Dialogs::tooltipsEnabled()
343 } // namespace frontend