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 "ControlPrint.h"
38 #include "ControlRef.h"
39 #include "ControlSearch.h"
40 #include "ControlSendto.h"
41 #include "ControlShowFile.h"
42 #include "ControlTabular.h"
43 #include "ControlTabularCreate.h"
44 #include "ControlTexinfo.h"
45 #include "ControlToc.h"
46 #include "ControlVSpace.h"
47 #include "ControlWrap.h"
49 #include "GAboutlyx.h"
51 #include "GMathDelim.h"
52 #include "FormBibitem.h"
53 #include "FormBibtex.h"
55 #include "FormBranch.h"
56 #include "FormChanges.h"
57 #include "FormCharacter.h"
58 #include "FormCitation.h"
59 #include "FormDocument.h"
60 #include "FormErrorList.h"
62 #include "FormExternal.h"
63 #include "FormFloat.h"
64 #include "FormGraphics.h"
65 #include "FormInclude.h"
67 #include "GMathPanel.h"
68 #include "FormMathsBitmap.h"
69 #include "FormMathsMatrix.h"
70 #include "FormMathsSpace.h"
71 #include "FormMathsStyle.h"
73 #include "FormParagraph.h"
74 #include "FormPrint.h"
76 #include "FormSearch.h"
77 #include "FormSendto.h"
78 #include "FormTabular.h"
79 #include "FormTexinfo.h"
80 #include "FormShowFile.h"
81 #include "GTableCreate.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"
117 FormMathsBitmap * createFormBitmap(Dialog & parent, string const & title,
118 char const * const * data, int size)
120 char const * const * const end = data + size;
121 return new FormMathsBitmap(parent, title, std::vector<string>(data, end));
125 char const * const dialognames[] = {
126 "aboutlyx", "bibitem", "bibtex", "box", "branch", "changes", "character",
127 "citation", "document", "error", "errorlist" , "ert", "external", "file",
128 "findreplace", "float", "graphics", "include", "index", "label", "log",
129 "mathpanel", "mathaccents", "matharrows", "mathoperators", "mathrelations",
130 "mathgreek", "mathmisc", "mathdots", "mathbigoperators", "mathamsmisc",
131 "mathamsarrows", "mathamsrelations", "mathamsnegatedrelations",
132 "mathamsoperators", "mathdelimiter", "mathmatrix", "mathspace", "mathstyle",
133 "box", "note", "paragraph", "print", "ref", "sendto", "tabular", "tabularcreate",
135 #ifdef HAVE_LIBAIKSAURUS
139 "texinfo", "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->bc().view(new GBC(dialog->bc()));
173 dialog->setController(new ControlAboutlyx(*dialog));
174 dialog->setView(new GAboutlyx(*dialog));
175 dialog->bc().bp(new OkCancelPolicy);
176 } else if (name == "bibitem") {
177 dialog->setController(new ControlCommand(*dialog, name));
178 dialog->setView(new FormBibitem(*dialog));
179 dialog->bc().bp(new OkCancelReadOnlyPolicy);
180 } else if (name == "bibtex") {
181 dialog->setController(new ControlBibtex(*dialog));
182 dialog->setView(new FormBibtex(*dialog));
183 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
184 } else if (name == "box") {
185 dialog->setController(new ControlBox(*dialog));
186 dialog->setView(new FormBox(*dialog));
187 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
188 } else if (name == "character") {
189 dialog->setController(new ControlCharacter(*dialog));
190 dialog->setView(new FormCharacter(*dialog));
191 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
192 } else if (name == "changes") {
193 dialog->setController(new ControlChanges(*dialog));
194 dialog->setView(new FormChanges(*dialog));
195 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
196 } else if (name == "citation") {
197 dialog->setController(new ControlCitation(*dialog));
198 dialog->setView(new FormCitation(*dialog));
199 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
200 } else if (name == "document") {
201 dialog->setController(new ControlDocument(*dialog));
202 dialog->setView(new FormDocument(*dialog));
203 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
204 } else if (name == "errorlist") {
205 dialog->setController(new ControlErrorList(*dialog));
206 dialog->setView(new FormErrorList(*dialog));
207 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
208 } else if (name == "ert") {
209 dialog->setController(new ControlERT(*dialog));
210 dialog->setView(new FormERT(*dialog));
211 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
212 } else if (name == "external") {
213 dialog->setController(new ControlExternal(*dialog));
214 dialog->setView(new FormExternal(*dialog));
215 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
216 } else if (name == "file") {
217 dialog->setController(new ControlShowFile(*dialog));
218 dialog->setView(new FormShowFile(*dialog));
219 dialog->bc().bp(new OkCancelPolicy);
220 } else if (name == "findreplace") {
221 dialog->setController(new ControlSearch(*dialog));
222 dialog->setView(new FormSearch(*dialog));
223 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
224 } else if (name == "float") {
225 dialog->setController(new ControlFloat(*dialog));
226 dialog->setView(new FormFloat(*dialog));
227 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
228 } else if (name == "graphics") {
229 dialog->setController(new ControlGraphics(*dialog));
230 dialog->setView(new FormGraphics(*dialog));
231 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
232 } else if (name == "include") {
233 dialog->setController(new ControlInclude(*dialog));
234 dialog->setView(new FormInclude(*dialog));
235 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
236 } else if (name == "index") {
237 dialog->bc().view(new GBC(dialog->bc()));
238 dialog->setController(new ControlCommand(*dialog, name));
239 dialog->setView(new GText(*dialog,
240 _("Index"), _("Keyword:|#K")));
241 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
242 } else if (name == "label") {
243 dialog->bc().view(new GBC(dialog->bc()));
244 dialog->setController(new ControlCommand(*dialog, name));
245 dialog->setView(new GText(*dialog,
246 _("Label"), _("Label:|#L")));
247 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
248 } else if (name == "log") {
249 dialog->setController(new ControlLog(*dialog));
250 dialog->setView(new FormLog(*dialog));
251 dialog->bc().bp(new OkCancelPolicy);
253 } else if (name == "mathpanel") {
254 dialog->bc().view(new GBC(dialog->bc()));
255 dialog->setController(new ControlMath(*dialog));
256 dialog->setView(new GMathPanel(*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->bc().view(new GBC(dialog->bc()));
421 dialog->setController(new ControlMath(*dialog));
422 dialog->setView(new GMathDelim(*dialog));
423 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
424 } else if (name == "mathmatrix") {
425 dialog->setController(new ControlMath(*dialog));
426 dialog->setView(new FormMathsMatrix(*dialog));
427 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
428 } else if (name == "mathspace") {
429 dialog->setController(new ControlMath(*dialog));
430 dialog->setView(new FormMathsSpace(*dialog));
431 dialog->bc().bp(new IgnorantPolicy);
432 } else if (name == "mathstyle") {
433 dialog->setController(new ControlMath(*dialog));
434 dialog->setView(new FormMathsStyle(*dialog));
435 dialog->bc().bp(new IgnorantPolicy);
436 } else if (name == "note") {
437 dialog->setController(new ControlNote(*dialog));
438 dialog->setView(new FormNote(*dialog));
439 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
440 } else if (name == "branch") {
441 dialog->setController(new ControlBranch(*dialog));
442 dialog->setView(new FormBranch(*dialog));
443 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
444 } else if (name == "paragraph") {
445 dialog->setController(new ControlParagraph(*dialog));
446 dialog->setView(new FormParagraph(*dialog));
447 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
448 } else if (name == "print") {
449 dialog->setController(new ControlPrint(*dialog));
450 dialog->setView(new FormPrint(*dialog));
451 dialog->bc().bp(new OkApplyCancelPolicy);
452 } else if (name == "ref") {
453 dialog->setController(new ControlRef(*dialog));
454 dialog->setView(new FormRef(*dialog));
455 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
456 } else if (name == "sendto") {
457 dialog->setController(new ControlSendto(*dialog));
458 dialog->setView(new FormSendto(*dialog));
459 dialog->bc().bp(new OkApplyCancelPolicy);
460 } else if (name == "tabular") {
461 dialog->setController(new ControlTabular(*dialog));
462 dialog->setView(new FormTabular(*dialog));
463 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
464 } else if (name == "tabularcreate") {
465 dialog->bc().view(new GBC(dialog->bc()));
466 dialog->setController(new ControlTabularCreate(*dialog));
467 dialog->setView(new GTableCreate(*dialog));
468 dialog->bc().bp(new IgnorantPolicy);
469 } else if (name == "texinfo") {
470 dialog->setController(new ControlTexinfo(*dialog));
471 dialog->setView(new FormTexinfo(*dialog));
472 dialog->bc().bp(new OkCancelPolicy);
473 #ifdef HAVE_LIBAIKSAURUS
474 } else if (name == "thesaurus") {
475 dialog->setController(new ControlThesaurus(*dialog));
476 dialog->setView(new FormThesaurus(*dialog));
477 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
479 } else if (name == "toc") {
480 dialog->setController(new ControlToc(*dialog));
481 dialog->setView(new FormToc(*dialog));
482 dialog->bc().bp(new OkCancelPolicy);
483 } else if (name == "url") {
484 dialog->bc().view(new GBC(dialog->bc()));
485 dialog->setController(new ControlCommand(*dialog, name));
486 dialog->setView(new GUrl(*dialog));
487 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
488 } else if (name == "vspace") {
489 dialog->setController(new ControlVSpace(*dialog));
490 dialog->setView(new FormVSpace(*dialog));
491 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
492 } else if (name == "wrap") {
493 dialog->setController(new ControlWrap(*dialog));
494 dialog->setView(new FormWrap(*dialog));
495 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
502 void Dialogs::toggleTooltips()
504 Tooltips::toggleEnabled();
508 /// Are the tooltips on or off?
509 bool Dialogs::tooltipsEnabled()
511 return Tooltips::enabled();