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 "ControlLog.h"
29 #include "ControlViewSource.h"
30 #include "ControlMath.h"
31 #include "ControlNote.h"
32 #include "ControlParagraph.h"
33 #include "ControlPrefs.h"
34 #include "ControlPrint.h"
35 #include "ControlRef.h"
36 #include "ControlSearch.h"
37 #include "ControlSendto.h"
38 #include "ControlShowFile.h"
39 #include "ControlSpellchecker.h"
40 #include "ControlTabular.h"
41 #include "ControlTabularCreate.h"
42 #include "ControlVSpace.h"
43 #include "ControlWrap.h"
46 #include "ButtonController.h"
53 #include "QCharacter.h"
54 #include "QCitation.h"
55 #include "QCitationDialog.h"
56 #include "QDocument.h"
57 #include "QErrorList.h"
59 #include "QExternal.h"
61 #include "QGraphics.h"
66 #include "QViewSource.h"
69 #include "QParagraph.h"
75 #include "QShowFile.h"
76 #include "QSpellchecker.h"
78 #include "QTabularCreate.h"
81 #include "QTocDialog.h"
86 #ifdef HAVE_LIBAIKSAURUS
87 #include "ControlThesaurus.h"
88 #include "QThesaurus.h"
91 #include "qt_helpers.h"
93 #include <boost/assert.hpp>
98 using namespace lyx::frontend;
102 char const * const dialognames[] = {
103 "aboutlyx", "bibitem", "bibtex", "box", "branch", "changes", "character",
104 "citation", "document", "errorlist", "ert", "external", "file",
105 "findreplace", "float", "graphics", "include", "index", "nomenclature", "label", "log",
106 "mathpanel", "mathdelimiter", "mathmatrix", "note", "paragraph",
107 "prefs", "print", "ref", "sendto", "spellchecker","tabular", "tabularcreate",
109 #ifdef HAVE_LIBAIKSAURUS
113 "texinfo", "toc", "url", "view-source", "vspace", "wrap" };
115 char const * const * const end_dialognames =
116 dialognames + (sizeof(dialognames) / sizeof(char *));
120 cmpCStr(char const * name) : name_(name) {}
121 bool operator()(char const * other) {
122 return strcmp(other, name_) == 0;
134 bool Dialogs::isValidName(string const & name) const
136 return std::find_if(dialognames, end_dialognames,
137 cmpCStr(name.c_str())) != end_dialognames;
141 Dialogs::DialogPtr Dialogs::build(string const & name)
143 BOOST_ASSERT(isValidName(name));
145 DialogPtr dialog(new Dialog(lyxview_, name));
146 dialog->bc().view(new Qt2BC(dialog->bc()));
148 if (name == "aboutlyx") {
149 dialog->setController(new ControlAboutlyx(*dialog));
150 dialog->setView(new QAbout(*dialog));
151 dialog->bc().bp(new OkCancelPolicy);
152 } else if (name == "bibitem") {
153 dialog->setController(new ControlCommand(*dialog, name, name));
154 dialog->setView(new QBibitem(*dialog));
155 dialog->bc().bp(new OkCancelReadOnlyPolicy);
156 } else if (name == "bibtex") {
157 dialog->setController(new ControlBibtex(*dialog));
158 dialog->setView(new QBibtex(*dialog));
159 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
160 } else if (name == "box") {
161 dialog->setController(new ControlBox(*dialog));
162 dialog->setView(new QBox(*dialog));
163 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
164 } else if (name == "branch") {
165 dialog->setController(new ControlBranch(*dialog));
166 dialog->setView(new QBranch(*dialog));
167 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
168 } else if (name == "changes") {
169 dialog->setController(new ControlChanges(*dialog));
170 dialog->setView(new QChanges(*dialog));
171 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
172 } else if (name == "character") {
173 dialog->setController(new ControlCharacter(*dialog));
174 dialog->setView(new QCharacter(*dialog));
175 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
176 } else if (name == "citation") {
177 QCitation * ci = new QCitation(*dialog);
178 dialog->setController(ci);
179 dialog->setView(new QCitationDialog(*dialog, ci));
180 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
181 } else if (name == "document") {
182 dialog->setController(new ControlDocument(*dialog));
183 dialog->setView(new QDocument(*dialog));
184 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
185 } else if (name == "errorlist") {
186 dialog->setController(new ControlErrorList(*dialog));
187 dialog->setView(new QErrorList(*dialog));
188 dialog->bc().bp(new OkCancelPolicy);
189 } else if (name == "ert") {
190 dialog->setController(new ControlERT(*dialog));
191 dialog->setView(new QERT(*dialog));
192 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
193 } else if (name == "external") {
194 dialog->setController(new ControlExternal(*dialog));
195 dialog->setView(new QExternal(*dialog));
196 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
197 } else if (name == "file") {
198 dialog->setController(new ControlShowFile(*dialog));
199 dialog->setView(new QShowFile(*dialog));
200 dialog->bc().bp(new OkCancelPolicy);
201 } else if (name == "findreplace") {
202 dialog->setController(new ControlSearch(*dialog));
203 dialog->setView(new QSearch(*dialog));
204 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
205 } else if (name == "float") {
206 dialog->setController(new ControlFloat(*dialog));
207 dialog->setView(new QFloat(*dialog));
208 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
209 } else if (name == "graphics") {
210 dialog->setController(new ControlGraphics(*dialog));
211 dialog->setView(new QGraphics(*dialog));
212 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
213 } else if (name == "include") {
214 dialog->setController(new ControlInclude(*dialog));
215 dialog->setView(new QInclude(*dialog));
216 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
217 } else if (name == "index") {
218 dialog->setController(new ControlCommand(*dialog, name, name));
219 dialog->setView(new QIndex(*dialog,
222 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
223 } else if (name == "nomenclature") {
224 dialog->setController(new ControlCommand(*dialog, name, name));
225 dialog->setView(new QNomencl(*dialog, _("Glossary Entry")));
226 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
227 } else if (name == "label") {
228 dialog->setController(new ControlCommand(*dialog, name, name));
229 dialog->setView(new QIndex(*dialog,
232 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
233 } else if (name == "log") {
234 dialog->setController(new ControlLog(*dialog));
235 dialog->setView(new QLog(*dialog));
236 dialog->bc().bp(new OkCancelPolicy);
237 } else if (name == "view-source") {
238 dialog->setController(new ControlViewSource(*dialog));
239 dialog->setView(new QViewSource(*dialog));
240 dialog->bc().bp(new OkCancelPolicy);
241 } else if (name == "mathpanel") {
242 dialog->setController(new ControlMath(*dialog));
243 dialog->setView(new QMath(*dialog));
244 dialog->bc().bp(new IgnorantPolicy);
245 } else if (name == "mathdelimiter") {
246 dialog->setController(new ControlMath(*dialog));
247 dialog->setView(new QMathDelimiter(*dialog));
248 dialog->bc().bp(new IgnorantPolicy);
249 } else if (name == "mathmatrix") {
250 dialog->setController(new ControlMath(*dialog));
251 dialog->setView(new QMathMatrix(*dialog));
252 dialog->bc().bp(new IgnorantPolicy);
253 } else if (name == "note") {
254 dialog->setController(new ControlNote(*dialog));
255 dialog->setView(new QNote(*dialog));
256 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
257 } else if (name == "paragraph") {
258 dialog->setController(new ControlParagraph(*dialog));
259 dialog->setView(new QParagraph(*dialog));
260 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
261 } else if (name == "prefs") {
262 dialog->setController(new ControlPrefs(*dialog));
263 dialog->setView(new QPrefs(*dialog));
264 dialog->bc().bp(new PreferencesPolicy);
265 } else if (name == "print") {
266 dialog->setController(new ControlPrint(*dialog));
267 dialog->setView(new QPrint(*dialog));
268 dialog->bc().bp(new OkApplyCancelPolicy);
269 } else if (name == "ref") {
270 // full qualification because qt4 has also a ControlRef type
271 dialog->setController(new lyx::frontend::ControlRef(*dialog));
272 dialog->setView(new QRef(*dialog));
273 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
274 } else if (name == "sendto") {
275 dialog->setController(new ControlSendto(*dialog));
276 dialog->setView(new QSendto(*dialog));
277 dialog->bc().bp(new OkApplyCancelPolicy);
278 } else if (name == "spellchecker") {
279 dialog->setController(new ControlSpellchecker(*dialog));
280 dialog->setView(new QSpellchecker(*dialog));
281 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
282 } else if (name == "tabular") {
283 dialog->setController(new ControlTabular(*dialog));
284 dialog->setView(new QTabular(*dialog));
285 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
286 } else if (name == "tabularcreate") {
287 dialog->setController(new ControlTabularCreate(*dialog));
288 dialog->setView(new QTabularCreate(*dialog));
289 dialog->bc().bp(new IgnorantPolicy);
290 } else if (name == "texinfo") {
291 dialog->setController(new ControlTexinfo(*dialog));
292 dialog->setView(new QTexinfo(*dialog));
293 dialog->bc().bp(new OkCancelPolicy);
294 #ifdef HAVE_LIBAIKSAURUS
295 } else if (name == "thesaurus") {
296 dialog->setController(new ControlThesaurus(*dialog));
297 dialog->setView(new QThesaurus(*dialog));
298 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
300 } else if (name == "toc") {
301 QToc * qtoc = new QToc(*dialog);
302 dialog->setController(qtoc);
303 dialog->setView(new QTocDialog(*dialog, qtoc));
304 dialog->bc().bp(new OkCancelPolicy);
305 } else if (name == "url") {
306 dialog->setController(new ControlCommand(*dialog, name, name));
307 dialog->setView(new UrlView(*dialog));
308 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
309 } else if (name == "vspace") {
310 dialog->setController(new ControlVSpace(*dialog));
311 dialog->setView(new QVSpace(*dialog));
312 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
313 } else if (name == "wrap") {
314 dialog->setController(new ControlWrap(*dialog));
315 dialog->setView(new QWrap(*dialog));
316 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
323 /// Are the tooltips on or off?
324 bool Dialogs::tooltipsEnabled()