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.
18 #include "ControlAboutlyx.h"
19 #include "ControlBibtex.h"
20 #include "ControlBox.h"
21 #include "ControlBranch.h"
22 #include "ControlChanges.h"
23 #include "ControlCharacter.h"
24 #include "ControlCitation.h"
25 #include "ControlCommand.h"
26 #include "ControlDocument.h"
27 #include "ControlErrorList.h"
28 #include "ControlERT.h"
29 #include "ControlExternal.h"
30 #include "ControlFloat.h"
31 #include "ControlGraphics.h"
32 #include "ControlInclude.h"
33 #include "ControlLog.h"
34 #include "ControlMath.h"
35 #include "ControlNote.h"
36 #include "ControlParagraph.h"
37 #include "ControlPrefs.h"
38 #include "ControlPrint.h"
39 #include "ControlRef.h"
40 #include "ControlSearch.h"
41 #include "ControlSendto.h"
42 #include "ControlShowFile.h"
43 #include "ControlTabular.h"
44 #include "ControlTabularCreate.h"
45 #include "ControlTexinfo.h"
46 #include "ControlToc.h"
47 #include "ControlVSpace.h"
48 #include "ControlWrap.h"
50 #include "GAboutlyx.h"
52 #include "GMathDelim.h"
53 #include "FormBibitem.h"
54 #include "FormBibtex.h"
56 #include "FormBranch.h"
57 #include "FormChanges.h"
58 #include "FormCharacter.h"
59 #include "FormCitation.h"
60 #include "FormDocument.h"
61 #include "FormErrorList.h"
63 #include "FormExternal.h"
64 #include "FormFloat.h"
65 #include "FormGraphics.h"
66 #include "FormInclude.h"
68 #include "GMathPanel.h"
69 #include "FormMathsBitmap.h"
70 #include "FormMathsMatrix.h"
71 #include "FormMathsSpace.h"
72 #include "FormMathsStyle.h"
74 #include "FormParagraph.h"
75 #include "FormPreferences.h"
76 #include "FormPrint.h"
78 #include "FormSearch.h"
79 #include "FormSendto.h"
80 #include "FormTabular.h"
81 #include "FormTexinfo.h"
82 #include "FormShowFile.h"
83 #include "GTableCreate.h"
86 #include "FormVSpace.h"
89 #ifdef HAVE_LIBAIKSAURUS
90 #include "ControlThesaurus.h"
91 #include "FormThesaurus.h"
95 #include "ButtonController.h"
106 #include "ams_misc.xbm"
107 #include "ams_arrows.xbm"
108 #include "ams_rel.xbm"
109 #include "ams_nrel.xbm"
110 #include "ams_ops.xbm"
119 FormMathsBitmap * createFormBitmap(Dialog & parent, string const & title,
120 char const * const * data, int size)
122 char const * const * const end = data + size;
123 return new FormMathsBitmap(parent, title, std::vector<string>(data, end));
127 char const * const dialognames[] = {
128 "aboutlyx", "bibitem", "bibtex", "box", "branch", "changes", "character",
129 "citation", "document", "error", "errorlist" , "ert", "external", "file",
130 "findreplace", "float", "graphics", "include", "index", "label", "log",
131 "mathpanel", "mathaccents", "matharrows", "mathoperators", "mathrelations",
132 "mathgreek", "mathmisc", "mathdots", "mathbigoperators", "mathamsmisc",
133 "mathamsarrows", "mathamsrelations", "mathamsnegatedrelations",
134 "mathamsoperators", "mathdelimiter", "mathmatrix", "mathspace", "mathstyle",
135 "note", "paragraph", "prefs", "print", "ref", "sendto", "tabular",
136 "tabularcreate", "texinfo",
138 #ifdef HAVE_LIBAIKSAURUS
142 "toc", "url", "vspace", "wrap" };
144 char const * const * const end_dialognames =
145 dialognames + (sizeof(dialognames) / sizeof(char *));
148 cmpCStr(char const * name) : name_(name) {}
149 bool operator()(char const * other) {
150 return strcmp(other, name_) == 0;
159 bool Dialogs::isValidName(string const & name) const
161 return std::find_if(dialognames, end_dialognames,
162 cmpCStr(name.c_str())) != end_dialognames;
166 Dialog * Dialogs::build(string const & name)
168 if (!isValidName(name))
171 Dialog * dialog = new Dialog(lyxview_, name);
172 dialog->bc().view(new xformsBC(dialog->bc()));
174 if (name == "aboutlyx") {
175 dialog->bc().view(new GBC(dialog->bc()));
176 dialog->setController(new ControlAboutlyx(*dialog));
177 dialog->setView(new GAboutlyx(*dialog));
178 dialog->bc().bp(new OkCancelPolicy);
179 } else if (name == "bibitem") {
180 dialog->setController(new ControlCommand(*dialog, name));
181 dialog->setView(new FormBibitem(*dialog));
182 dialog->bc().bp(new OkCancelReadOnlyPolicy);
183 } else if (name == "bibtex") {
184 dialog->setController(new ControlBibtex(*dialog));
185 dialog->setView(new FormBibtex(*dialog));
186 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
187 } else if (name == "box") {
188 dialog->setController(new ControlBox(*dialog));
189 dialog->setView(new FormBox(*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->bc().view(new GBC(dialog->bc()));
241 dialog->setController(new ControlCommand(*dialog, name));
242 dialog->setView(new GText(*dialog,
243 _("Index"), _("Keyword:|#K")));
244 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
245 } else if (name == "label") {
246 dialog->bc().view(new GBC(dialog->bc()));
247 dialog->setController(new ControlCommand(*dialog, name));
248 dialog->setView(new GText(*dialog,
249 _("Label"), _("Label:|#L")));
250 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
251 } else if (name == "log") {
252 dialog->setController(new ControlLog(*dialog));
253 dialog->setView(new FormLog(*dialog));
254 dialog->bc().bp(new OkCancelPolicy);
256 } else if (name == "mathpanel") {
257 dialog->bc().view(new GBC(dialog->bc()));
258 dialog->setController(new ControlMath(*dialog));
259 dialog->setView(new GMathPanel(*dialog));
260 dialog->bc().bp(new IgnorantPolicy);
262 } else if (name == "mathaccents") {
263 FormMathsBitmap * bitmap =
264 createFormBitmap(*dialog, _("Maths Decorations & Accents"),
265 latex_deco, nr_latex_deco);
267 BitmapStore(12, 3, 4, deco1_width, deco1_height, deco1_bits, true));
269 BitmapStore(10, 4, 3, deco2_width, deco2_height, deco2_bits, true));
271 dialog->setController(new ControlMath(*dialog));
272 dialog->setView(bitmap);
273 dialog->bc().bp(new IgnorantPolicy);
275 } else if (name == "matharrows") {
276 FormMathsBitmap * bitmap =
277 createFormBitmap(*dialog, _("Arrows"), latex_arrow, nr_latex_arrow);
279 BitmapStore(20, 5, 4, arrow_width, arrow_height, arrow_bits, true));
281 BitmapStore(7, 2, 4, larrow_width, larrow_height, larrow_bits, false));
283 BitmapStore(4, 2, 2, darrow_width, darrow_height, darrow_bits, true));
285 dialog->setController(new ControlMath(*dialog));
286 dialog->setView(bitmap);
287 dialog->bc().bp(new IgnorantPolicy);
289 } else if (name == "mathoperators") {
290 FormMathsBitmap * bitmap =
291 createFormBitmap(*dialog, _("Binary Ops"),
292 latex_bop, nr_latex_bop);
294 BitmapStore(31, 4, 8, bop_width, bop_height, bop_bits, true));
296 dialog->setController(new ControlMath(*dialog));
297 dialog->setView(bitmap);
298 dialog->bc().bp(new IgnorantPolicy);
300 } else if (name == "mathrelations") {
301 FormMathsBitmap * bitmap =
302 createFormBitmap(*dialog, _("Binary Relations"),
303 latex_brel, nr_latex_brel);
305 BitmapStore(35, 4, 9, brel_width, brel_height, brel_bits, true));
307 dialog->setController(new ControlMath(*dialog));
308 dialog->setView(bitmap);
309 dialog->bc().bp(new IgnorantPolicy);
311 } else if (name == "mathgreek") {
312 FormMathsBitmap * bitmap =
313 createFormBitmap(*dialog, _("Greek"),
314 latex_greek, nr_latex_greek);
316 BitmapStore(11, 6, 2, Greek_width, Greek_height, Greek_bits, true));
318 BitmapStore(28, 7, 4, greek_width, greek_height, greek_bits, true));
320 dialog->setController(new ControlMath(*dialog));
321 dialog->setView(bitmap);
322 dialog->bc().bp(new IgnorantPolicy);
324 } else if (name == "mathmisc") {
325 FormMathsBitmap * bitmap =
326 createFormBitmap(*dialog, _("Misc"),
327 latex_misc, nr_latex_misc);
329 BitmapStore(29, 5, 6, misc_width, misc_height, misc_bits, true));
331 BitmapStore(5, 5, 1, misc4_width, misc4_height, misc4_bits, true));
333 BitmapStore(6, 3, 2, misc2_width, misc2_height, misc2_bits, false));
335 BitmapStore(4, 2, 2, misc3_width, misc3_height, misc3_bits, true));
337 dialog->setController(new ControlMath(*dialog));
338 dialog->setView(bitmap);
339 dialog->bc().bp(new IgnorantPolicy);
341 } else if (name == "mathdots") {
342 FormMathsBitmap * bitmap =
343 createFormBitmap(*dialog, _("Dots"),
344 latex_dots, nr_latex_dots);
346 BitmapStore(4, 4, 1, dots_width, dots_height, dots_bits, true));
348 dialog->setController(new ControlMath(*dialog));
349 dialog->setView(bitmap);
350 dialog->bc().bp(new IgnorantPolicy);
352 } else if (name == "mathbigoperators") {
353 FormMathsBitmap * bitmap =
354 createFormBitmap(*dialog, _("Big Operators"),
355 latex_varsz, nr_latex_varsz);
357 BitmapStore(14, 3, 5, varsz_width, varsz_height, varsz_bits, true));
359 dialog->setController(new ControlMath(*dialog));
360 dialog->setView(bitmap);
361 dialog->bc().bp(new IgnorantPolicy);
363 } else if (name == "mathamsmisc") {
364 FormMathsBitmap * bitmap =
365 createFormBitmap(*dialog, _("AMS Misc"),
366 latex_ams_misc, nr_latex_ams_misc);
368 BitmapStore(9, 5, 2, ams1_width, ams1_height, ams1_bits, true));
370 BitmapStore(26, 3, 9, ams7_width, ams7_height, ams7_bits, true));
372 dialog->setController(new ControlMath(*dialog));
373 dialog->setView(bitmap);
374 dialog->bc().bp(new IgnorantPolicy);
376 } else if (name == "mathamsarrows") {
377 FormMathsBitmap * bitmap =
378 createFormBitmap(*dialog, _("AMS Arrows"),
379 latex_ams_arrows, nr_latex_ams_arrows);
381 BitmapStore(32, 3, 11, ams2_width, ams2_height, ams2_bits, true));
383 BitmapStore(6, 3, 2, ams3_width, ams3_height, ams3_bits, true));
385 dialog->setController(new ControlMath(*dialog));
386 dialog->setView(bitmap);
387 dialog->bc().bp(new IgnorantPolicy);
389 } else if (name == "mathamsrelations") {
390 FormMathsBitmap * bitmap =
391 createFormBitmap(*dialog, _("AMS Relations"),
392 latex_ams_rel, nr_latex_ams_rel);
394 BitmapStore(66, 6, 11, ams_rel_width, ams_rel_height, ams_rel_bits, true));
396 dialog->setController(new ControlMath(*dialog));
397 dialog->setView(bitmap);
398 dialog->bc().bp(new IgnorantPolicy);
400 } else if (name == "mathamsnegatedrelations") {
401 FormMathsBitmap * bitmap =
402 createFormBitmap(*dialog, _("AMS Negated Rel"),
403 latex_ams_nrel, nr_latex_ams_nrel);
405 BitmapStore(51, 6, 9, ams_nrel_width, ams_nrel_height, ams_nrel_bits, true));
407 dialog->setController(new ControlMath(*dialog));
408 dialog->setView(bitmap);
409 dialog->bc().bp(new IgnorantPolicy);
411 } else if (name == "mathamsoperators") {
412 FormMathsBitmap * bitmap =
413 createFormBitmap(*dialog, _("AMS Operators"),
414 latex_ams_ops, nr_latex_ams_ops);
416 BitmapStore(23, 3, 8, ams_ops_width, ams_ops_height, ams_ops_bits, true));
418 dialog->setController(new ControlMath(*dialog));
419 dialog->setView(bitmap);
420 dialog->bc().bp(new IgnorantPolicy);
422 } else if (name == "mathdelimiter") {
423 dialog->bc().view(new GBC(dialog->bc()));
424 dialog->setController(new ControlMath(*dialog));
425 dialog->setView(new GMathDelim(*dialog));
426 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
427 } else if (name == "mathmatrix") {
428 dialog->setController(new ControlMath(*dialog));
429 dialog->setView(new FormMathsMatrix(*dialog));
430 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
431 } else if (name == "mathspace") {
432 dialog->setController(new ControlMath(*dialog));
433 dialog->setView(new FormMathsSpace(*dialog));
434 dialog->bc().bp(new IgnorantPolicy);
435 } else if (name == "mathstyle") {
436 dialog->setController(new ControlMath(*dialog));
437 dialog->setView(new FormMathsStyle(*dialog));
438 dialog->bc().bp(new IgnorantPolicy);
439 } else if (name == "note") {
440 dialog->setController(new ControlNote(*dialog));
441 dialog->setView(new FormNote(*dialog));
442 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
443 } else if (name == "branch") {
444 dialog->setController(new ControlBranch(*dialog));
445 dialog->setView(new FormBranch(*dialog));
446 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
447 } else if (name == "paragraph") {
448 dialog->setController(new ControlParagraph(*dialog));
449 dialog->setView(new FormParagraph(*dialog));
450 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
451 } else if (name == "prefs") {
452 dialog->setController(new ControlPrefs(*dialog));
453 dialog->setView(new FormPreferences(*dialog));
454 dialog->bc().bp(new OkApplyCancelPolicy);
455 } else if (name == "print") {
456 dialog->setController(new ControlPrint(*dialog));
457 dialog->setView(new FormPrint(*dialog));
458 dialog->bc().bp(new OkApplyCancelPolicy);
459 } else if (name == "ref") {
460 dialog->setController(new ControlRef(*dialog));
461 dialog->setView(new FormRef(*dialog));
462 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
463 } else if (name == "sendto") {
464 dialog->setController(new ControlSendto(*dialog));
465 dialog->setView(new FormSendto(*dialog));
466 dialog->bc().bp(new OkApplyCancelPolicy);
467 } else if (name == "tabular") {
468 dialog->setController(new ControlTabular(*dialog));
469 dialog->setView(new FormTabular(*dialog));
470 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
471 } else if (name == "tabularcreate") {
472 dialog->bc().view(new GBC(dialog->bc()));
473 dialog->setController(new ControlTabularCreate(*dialog));
474 dialog->setView(new GTableCreate(*dialog));
475 dialog->bc().bp(new IgnorantPolicy);
476 } else if (name == "texinfo") {
477 dialog->setController(new ControlTexinfo(*dialog));
478 dialog->setView(new FormTexinfo(*dialog));
479 dialog->bc().bp(new OkCancelPolicy);
480 #ifdef HAVE_LIBAIKSAURUS
481 } else if (name == "thesaurus") {
482 dialog->setController(new ControlThesaurus(*dialog));
483 dialog->setView(new FormThesaurus(*dialog));
484 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
486 } else if (name == "toc") {
487 dialog->setController(new ControlToc(*dialog));
488 dialog->setView(new FormToc(*dialog));
489 dialog->bc().bp(new OkCancelPolicy);
490 } else if (name == "url") {
491 dialog->bc().view(new GBC(dialog->bc()));
492 dialog->setController(new ControlCommand(*dialog, name));
493 dialog->setView(new GUrl(*dialog));
494 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
495 } else if (name == "vspace") {
496 dialog->setController(new ControlVSpace(*dialog));
497 dialog->setView(new FormVSpace(*dialog));
498 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
499 } else if (name == "wrap") {
500 dialog->setController(new ControlWrap(*dialog));
501 dialog->setView(new FormWrap(*dialog));
502 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
509 void Dialogs::toggleTooltips()
511 Tooltips::toggleEnabled();
515 /// Are the tooltips on or off?
516 bool Dialogs::tooltipsEnabled()
518 return Tooltips::enabled();