2 * \file xforms/Dialogs.C
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.
17 #include "ControlAboutlyx.h"
18 #include "ControlBibtex.h"
19 #include "ControlBox.h"
20 #include "ControlBranch.h"
21 #include "ControlChanges.h"
22 #include "ControlCitation.h"
23 #include "ControlDocument.h"
24 #include "ControlErrorList.h"
25 #include "ControlERT.h"
26 #include "ControlExternal.h"
27 #include "ControlFloat.h"
28 #include "ControlGraphics.h"
29 #include "ControlInclude.h"
30 #include "ControlLog.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 "ControlToc.h"
44 #include "ControlVSpace.h"
45 #include "ControlWrap.h"
47 #include "FormAboutlyx.h"
48 #include "FormBibitem.h"
49 #include "FormBibtex.h"
51 #include "FormBranch.h"
52 #include "FormChanges.h"
53 #include "FormCharacter.h"
54 #include "FormCitation.h"
55 #include "FormDocument.h"
56 #include "FormErrorList.h"
58 #include "FormExternal.h"
59 #include "FormFloat.h"
60 #include "FormGraphics.h"
61 #include "FormInclude.h"
63 #include "FormMathsPanel.h"
64 #include "FormMathsBitmap.h"
65 #include "FormMathsDelim.h"
66 #include "FormMathsMatrix.h"
67 #include "FormMathsSpace.h"
68 #include "FormMathsStyle.h"
70 #include "FormParagraph.h"
71 #include "FormPreferences.h"
72 #include "FormPrint.h"
74 #include "FormTabular.h"
75 #include "FormTexinfo.h"
76 #include "FormSearch.h"
77 #include "FormSendto.h"
78 #include "FormShowFile.h"
79 #include "FormSpellchecker.h"
80 #include "FormTabularCreate.h"
84 #include "FormVSpace.h"
87 #ifdef HAVE_LIBAIKSAURUS
88 #include "ControlThesaurus.h"
89 #include "FormThesaurus.h"
93 #include "ButtonController.h"
104 #include "ams_misc.xbm"
105 #include "ams_arrows.xbm"
106 #include "ams_rel.xbm"
107 #include "ams_nrel.xbm"
108 #include "ams_ops.xbm"
116 FormMathsBitmap * createFormBitmap(Dialog & parent, string const & title,
117 char const * const * data, int size)
119 char const * const * const end = data + size;
120 return new FormMathsBitmap(parent, title, std::vector<string>(data, end));
124 char const * const dialognames[] = {
125 "aboutlyx", "bibitem", "bibtex", "box", "branch", "changes", "character",
126 "citation", "document", "error", "errorlist" , "ert", "external", "file",
127 "findreplace", "float", "graphics", "include", "index", "label", "log",
128 "mathpanel", "mathaccents", "matharrows", "mathoperators", "mathrelations",
129 "mathgreek", "mathmisc", "mathdots", "mathbigoperators", "mathamsmisc",
130 "mathamsarrows", "mathamsrelations", "mathamsnegatedrelations",
131 "mathamsoperators", "mathdelimiter", "mathmatrix", "mathspace", "mathstyle",
132 "note", "paragraph", "prefs", "print", "ref", "sendto", "spellchecker",
133 "tabular", "tabularcreate", "texinfo",
135 #ifdef HAVE_LIBAIKSAURUS
139 "toc", "url", "vspace", "wrap" };
141 char const * const * const end_dialognames =
142 dialognames + (sizeof(dialognames) / sizeof(char *));
145 cmpCStr(char const * name) : name_(name) {}
146 bool operator()(char const * other) {
147 return strcmp(other, name_) == 0;
156 bool Dialogs::isValidName(string const & name) const
158 return std::find_if(dialognames, end_dialognames,
159 cmpCStr(name.c_str())) != end_dialognames;
163 Dialog * Dialogs::build(string const & name)
165 if (!isValidName(name))
168 Dialog * dialog = new Dialog(lyxview_, name);
169 dialog->bc().view(new xformsBC(dialog->bc()));
171 if (name == "aboutlyx") {
172 dialog->setController(new ControlAboutlyx(*dialog));
173 dialog->setView(new FormAboutlyx(*dialog));
174 dialog->bc().bp(new OkCancelPolicy);
175 } else if (name == "bibitem") {
176 dialog->setController(new ControlCommand(*dialog, name));
177 dialog->setView(new FormBibitem(*dialog));
178 dialog->bc().bp(new OkCancelReadOnlyPolicy);
179 } else if (name == "bibtex") {
180 dialog->setController(new ControlBibtex(*dialog));
181 dialog->setView(new FormBibtex(*dialog));
182 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
183 } else if (name == "box") {
184 dialog->setController(new ControlBox(*dialog));
185 dialog->setView(new FormBox(*dialog));
186 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
187 } else if (name == "branch") {
188 dialog->setController(new ControlBranch(*dialog));
189 dialog->setView(new FormBranch(*dialog));
190 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
191 } else if (name == "character") {
192 dialog->setController(new ControlCharacter(*dialog));
193 dialog->setView(new FormCharacter(*dialog));
194 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
195 } else if (name == "changes") {
196 dialog->setController(new ControlChanges(*dialog));
197 dialog->setView(new FormChanges(*dialog));
198 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
199 } else if (name == "citation") {
200 dialog->setController(new ControlCitation(*dialog));
201 dialog->setView(new FormCitation(*dialog));
202 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
203 } else if (name == "document") {
204 dialog->setController(new ControlDocument(*dialog));
205 dialog->setView(new FormDocument(*dialog));
206 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
207 } else if (name == "errorlist") {
208 dialog->setController(new ControlErrorList(*dialog));
209 dialog->setView(new FormErrorList(*dialog));
210 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
211 } else if (name == "ert") {
212 dialog->setController(new ControlERT(*dialog));
213 dialog->setView(new FormERT(*dialog));
214 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
215 } else if (name == "external") {
216 dialog->setController(new ControlExternal(*dialog));
217 dialog->setView(new FormExternal(*dialog));
218 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
219 } else if (name == "file") {
220 dialog->setController(new ControlShowFile(*dialog));
221 dialog->setView(new FormShowFile(*dialog));
222 dialog->bc().bp(new OkCancelPolicy);
223 } else if (name == "findreplace") {
224 dialog->setController(new ControlSearch(*dialog));
225 dialog->setView(new FormSearch(*dialog));
226 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
227 } else if (name == "float") {
228 dialog->setController(new ControlFloat(*dialog));
229 dialog->setView(new FormFloat(*dialog));
230 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
231 } else if (name == "graphics") {
232 dialog->setController(new ControlGraphics(*dialog));
233 dialog->setView(new FormGraphics(*dialog));
234 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
235 } else if (name == "include") {
236 dialog->setController(new ControlInclude(*dialog));
237 dialog->setView(new FormInclude(*dialog));
238 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
239 } else if (name == "index") {
240 dialog->setController(new ControlCommand(*dialog, name));
241 dialog->setView(new FormText(*dialog,
242 _("Index"), _("Keyword:|#K")));
243 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
244 } else if (name == "label") {
245 dialog->setController(new ControlCommand(*dialog, name));
246 dialog->setView(new FormText(*dialog,
247 _("Label"), _("Label:|#L")));
248 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
249 } else if (name == "log") {
250 dialog->setController(new ControlLog(*dialog));
251 dialog->setView(new FormLog(*dialog));
252 dialog->bc().bp(new OkCancelPolicy);
254 } else if (name == "mathpanel") {
255 dialog->setController(new ControlMath(*dialog));
256 dialog->setView(new FormMathsPanel(*dialog));
257 dialog->bc().bp(new IgnorantPolicy);
259 } else if (name == "mathaccents") {
260 FormMathsBitmap * bitmap =
261 createFormBitmap(*dialog, _("Maths Decorations & Accents"),
262 latex_deco, nr_latex_deco);
264 BitmapStore(12, 3, 4, deco1_width, deco1_height, deco1_bits, true));
266 BitmapStore(10, 4, 3, deco2_width, deco2_height, deco2_bits, true));
268 dialog->setController(new ControlMath(*dialog));
269 dialog->setView(bitmap);
270 dialog->bc().bp(new IgnorantPolicy);
272 } else if (name == "matharrows") {
273 FormMathsBitmap * bitmap =
274 createFormBitmap(*dialog, _("Arrows"), latex_arrow, nr_latex_arrow);
276 BitmapStore(20, 5, 4, arrow_width, arrow_height, arrow_bits, true));
278 BitmapStore(7, 2, 4, larrow_width, larrow_height, larrow_bits, false));
280 BitmapStore(4, 2, 2, darrow_width, darrow_height, darrow_bits, true));
282 dialog->setController(new ControlMath(*dialog));
283 dialog->setView(bitmap);
284 dialog->bc().bp(new IgnorantPolicy);
286 } else if (name == "mathoperators") {
287 FormMathsBitmap * bitmap =
288 createFormBitmap(*dialog, _("Binary Ops"),
289 latex_bop, nr_latex_bop);
291 BitmapStore(31, 4, 8, bop_width, bop_height, bop_bits, true));
293 dialog->setController(new ControlMath(*dialog));
294 dialog->setView(bitmap);
295 dialog->bc().bp(new IgnorantPolicy);
297 } else if (name == "mathrelations") {
298 FormMathsBitmap * bitmap =
299 createFormBitmap(*dialog, _("Binary Relations"),
300 latex_brel, nr_latex_brel);
302 BitmapStore(35, 4, 9, brel_width, brel_height, brel_bits, true));
304 dialog->setController(new ControlMath(*dialog));
305 dialog->setView(bitmap);
306 dialog->bc().bp(new IgnorantPolicy);
308 } else if (name == "mathgreek") {
309 FormMathsBitmap * bitmap =
310 createFormBitmap(*dialog, _("Greek"),
311 latex_greek, nr_latex_greek);
313 BitmapStore(11, 6, 2, Greek_width, Greek_height, Greek_bits, true));
315 BitmapStore(28, 7, 4, greek_width, greek_height, greek_bits, true));
317 dialog->setController(new ControlMath(*dialog));
318 dialog->setView(bitmap);
319 dialog->bc().bp(new IgnorantPolicy);
321 } else if (name == "mathmisc") {
322 FormMathsBitmap * bitmap =
323 createFormBitmap(*dialog, _("Misc"),
324 latex_misc, nr_latex_misc);
326 BitmapStore(29, 5, 6, misc_width, misc_height, misc_bits, true));
328 BitmapStore(5, 5, 1, misc4_width, misc4_height, misc4_bits, true));
330 BitmapStore(6, 3, 2, misc2_width, misc2_height, misc2_bits, false));
332 BitmapStore(4, 2, 2, misc3_width, misc3_height, misc3_bits, true));
334 dialog->setController(new ControlMath(*dialog));
335 dialog->setView(bitmap);
336 dialog->bc().bp(new IgnorantPolicy);
338 } else if (name == "mathdots") {
339 FormMathsBitmap * bitmap =
340 createFormBitmap(*dialog, _("Dots"),
341 latex_dots, nr_latex_dots);
343 BitmapStore(4, 4, 1, dots_width, dots_height, dots_bits, true));
345 dialog->setController(new ControlMath(*dialog));
346 dialog->setView(bitmap);
347 dialog->bc().bp(new IgnorantPolicy);
349 } else if (name == "mathbigoperators") {
350 FormMathsBitmap * bitmap =
351 createFormBitmap(*dialog, _("Big Operators"),
352 latex_varsz, nr_latex_varsz);
354 BitmapStore(14, 3, 5, varsz_width, varsz_height, varsz_bits, true));
356 dialog->setController(new ControlMath(*dialog));
357 dialog->setView(bitmap);
358 dialog->bc().bp(new IgnorantPolicy);
360 } else if (name == "mathamsmisc") {
361 FormMathsBitmap * bitmap =
362 createFormBitmap(*dialog, _("AMS Misc"),
363 latex_ams_misc, nr_latex_ams_misc);
365 BitmapStore(9, 5, 2, ams1_width, ams1_height, ams1_bits, true));
367 BitmapStore(26, 3, 9, ams7_width, ams7_height, ams7_bits, true));
369 dialog->setController(new ControlMath(*dialog));
370 dialog->setView(bitmap);
371 dialog->bc().bp(new IgnorantPolicy);
373 } else if (name == "mathamsarrows") {
374 FormMathsBitmap * bitmap =
375 createFormBitmap(*dialog, _("AMS Arrows"),
376 latex_ams_arrows, nr_latex_ams_arrows);
378 BitmapStore(32, 3, 11, ams2_width, ams2_height, ams2_bits, true));
380 BitmapStore(6, 3, 2, ams3_width, ams3_height, ams3_bits, true));
382 dialog->setController(new ControlMath(*dialog));
383 dialog->setView(bitmap);
384 dialog->bc().bp(new IgnorantPolicy);
386 } else if (name == "mathamsrelations") {
387 FormMathsBitmap * bitmap =
388 createFormBitmap(*dialog, _("AMS Relations"),
389 latex_ams_rel, nr_latex_ams_rel);
391 BitmapStore(66, 6, 11, ams_rel_width, ams_rel_height, ams_rel_bits, true));
393 dialog->setController(new ControlMath(*dialog));
394 dialog->setView(bitmap);
395 dialog->bc().bp(new IgnorantPolicy);
397 } else if (name == "mathamsnegatedrelations") {
398 FormMathsBitmap * bitmap =
399 createFormBitmap(*dialog, _("AMS Negated Rel"),
400 latex_ams_nrel, nr_latex_ams_nrel);
402 BitmapStore(51, 6, 9, ams_nrel_width, ams_nrel_height, ams_nrel_bits, true));
404 dialog->setController(new ControlMath(*dialog));
405 dialog->setView(bitmap);
406 dialog->bc().bp(new IgnorantPolicy);
408 } else if (name == "mathamsoperators") {
409 FormMathsBitmap * bitmap =
410 createFormBitmap(*dialog, _("AMS Operators"),
411 latex_ams_ops, nr_latex_ams_ops);
413 BitmapStore(23, 3, 8, ams_ops_width, ams_ops_height, ams_ops_bits, true));
415 dialog->setController(new ControlMath(*dialog));
416 dialog->setView(bitmap);
417 dialog->bc().bp(new IgnorantPolicy);
419 } else if (name == "mathdelimiter") {
420 dialog->setController(new ControlMath(*dialog));
421 dialog->setView(new FormMathsDelim(*dialog));
422 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
423 } else if (name == "mathmatrix") {
424 dialog->setController(new ControlMath(*dialog));
425 dialog->setView(new FormMathsMatrix(*dialog));
426 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
427 } else if (name == "mathspace") {
428 dialog->setController(new ControlMath(*dialog));
429 dialog->setView(new FormMathsSpace(*dialog));
430 dialog->bc().bp(new IgnorantPolicy);
431 } else if (name == "mathstyle") {
432 dialog->setController(new ControlMath(*dialog));
433 dialog->setView(new FormMathsStyle(*dialog));
434 dialog->bc().bp(new IgnorantPolicy);
435 } else if (name == "note") {
436 dialog->setController(new ControlNote(*dialog));
437 dialog->setView(new FormNote(*dialog));
438 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
439 } else if (name == "paragraph") {
440 dialog->setController(new ControlParagraph(*dialog));
441 dialog->setView(new FormParagraph(*dialog));
442 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
443 } else if (name == "prefs") {
444 dialog->setController(new ControlPrefs(*dialog));
445 dialog->setView(new FormPreferences(*dialog));
446 dialog->bc().bp(new OkApplyCancelPolicy);
447 } else if (name == "print") {
448 dialog->setController(new ControlPrint(*dialog));
449 dialog->setView(new FormPrint(*dialog));
450 dialog->bc().bp(new OkApplyCancelPolicy);
451 } else if (name == "ref") {
452 dialog->setController(new ControlRef(*dialog));
453 dialog->setView(new FormRef(*dialog));
454 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
455 } else if (name == "sendto") {
456 dialog->setController(new ControlSendto(*dialog));
457 dialog->setView(new FormSendto(*dialog));
458 dialog->bc().bp(new OkApplyCancelPolicy);
459 } else if (name == "spellchecker") {
460 dialog->setController(new ControlSpellchecker(*dialog));
461 dialog->setView(new FormSpellchecker(*dialog));
462 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
463 } else if (name == "tabular") {
464 dialog->setController(new ControlTabular(*dialog));
465 dialog->setView(new FormTabular(*dialog));
466 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
467 } else if (name == "tabularcreate") {
468 dialog->setController(new ControlTabularCreate(*dialog));
469 dialog->setView(new FormTabularCreate(*dialog));
470 dialog->bc().bp(new IgnorantPolicy);
471 } else if (name == "texinfo") {
472 dialog->setController(new ControlTexinfo(*dialog));
473 dialog->setView(new FormTexinfo(*dialog));
474 dialog->bc().bp(new OkCancelPolicy);
475 #ifdef HAVE_LIBAIKSAURUS
476 } else if (name == "thesaurus") {
477 dialog->setController(new ControlThesaurus(*dialog));
478 dialog->setView(new FormThesaurus(*dialog));
479 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
481 } else if (name == "toc") {
482 dialog->setController(new ControlToc(*dialog));
483 dialog->setView(new FormToc(*dialog));
484 dialog->bc().bp(new OkCancelPolicy);
485 } else if (name == "url") {
486 dialog->setController(new ControlCommand(*dialog, name));
487 dialog->setView(new FormUrl(*dialog));
488 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
489 } else if (name == "vspace") {
490 dialog->setController(new ControlVSpace(*dialog));
491 dialog->setView(new FormVSpace(*dialog));
492 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
493 } else if (name == "wrap") {
494 dialog->setController(new ControlWrap(*dialog));
495 dialog->setView(new FormWrap(*dialog));
496 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
503 void Dialogs::toggleTooltips()
505 Tooltips::toggleEnabled();
509 /// Are the tooltips on or off?
510 bool Dialogs::tooltipsEnabled()
512 return Tooltips::enabled();