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 "ControlErrorList.h"
27 #include "ControlERT.h"
28 #include "ControlExternal.h"
29 #include "ControlFloat.h"
30 #include "ControlGraphics.h"
31 #include "ControlInclude.h"
32 #include "ControlLog.h"
33 #include "ControlMath.h"
34 #include "ControlNote.h"
35 #include "ControlParagraph.h"
36 #include "ControlPrint.h"
37 #include "ControlRef.h"
38 #include "ControlSearch.h"
39 #include "ControlSendto.h"
40 #include "ControlShowFile.h"
41 #include "ControlTabular.h"
42 #include "ControlTabularCreate.h"
43 #include "ControlTexinfo.h"
44 #include "ControlToc.h"
45 #include "ControlVSpace.h"
46 #include "ControlWrap.h"
48 #include "GAboutlyx.h"
50 #include "GMathDelim.h"
51 #include "FormBibitem.h"
52 #include "FormBibtex.h"
54 #include "FormBranch.h"
55 #include "FormChanges.h"
56 #include "FormCharacter.h"
57 #include "FormCitation.h"
58 #include "FormErrorList.h"
60 #include "FormExternal.h"
61 #include "FormFloat.h"
62 #include "FormGraphics.h"
63 #include "FormInclude.h"
65 #include "GMathPanel.h"
66 #include "FormMathsBitmap.h"
67 #include "FormMathsMatrix.h"
68 #include "FormMathsSpace.h"
69 #include "FormMathsStyle.h"
71 #include "FormParagraph.h"
72 #include "FormPrint.h"
74 #include "FormSearch.h"
75 #include "FormSendto.h"
76 #include "FormTabular.h"
77 #include "FormTexinfo.h"
78 #include "FormShowFile.h"
79 #include "GTableCreate.h"
82 #include "FormVSpace.h"
85 #ifdef HAVE_LIBAIKSAURUS
86 #include "ControlThesaurus.h"
87 #include "FormThesaurus.h"
91 #include "ButtonController.h"
102 #include "ams_misc.xbm"
103 #include "ams_arrows.xbm"
104 #include "ams_rel.xbm"
105 #include "ams_nrel.xbm"
106 #include "ams_ops.xbm"
115 FormMathsBitmap * createFormBitmap(Dialog & parent, string const & title,
116 char const * const * data, int size)
118 char const * const * const end = data + size;
119 return new FormMathsBitmap(parent, title, std::vector<string>(data, end));
123 char const * const dialognames[] = {
124 "aboutlyx", "bibitem", "bibtex", "box", "branch", "changes", "character",
125 "citation", "error", "errorlist" , "ert", "external", "file", "findreplace",
126 "float", "graphics", "include", "index", "label", "log", "mathpanel",
127 "mathaccents", "matharrows", "mathoperators", "mathrelations",
128 "mathgreek", "mathmisc", "mathdots", "mathbigoperators", "mathamsmisc",
129 "mathamsarrows", "mathamsrelations", "mathamsnegatedrelations",
130 "mathamsoperators", "mathdelimiter", "mathmatrix", "mathspace", "mathstyle",
131 "box", "note", "paragraph", "print", "ref", "sendto", "tabular", "tabularcreate",
133 #ifdef HAVE_LIBAIKSAURUS
137 "texinfo", "toc", "url", "vspace", "wrap" };
139 char const * const * const end_dialognames =
140 dialognames + (sizeof(dialognames) / sizeof(char *));
143 cmpCStr(char const * name) : name_(name) {}
144 bool operator()(char const * other) {
145 return strcmp(other, name_) == 0;
154 bool Dialogs::isValidName(string const & name) const
156 return std::find_if(dialognames, end_dialognames,
157 cmpCStr(name.c_str())) != end_dialognames;
161 Dialog * Dialogs::build(string const & name)
163 if (!isValidName(name))
166 Dialog * dialog = new Dialog(lyxview_, name);
167 dialog->bc().view(new xformsBC(dialog->bc()));
169 if (name == "aboutlyx") {
170 dialog->bc().view(new GBC(dialog->bc()));
171 dialog->setController(new ControlAboutlyx(*dialog));
172 dialog->setView(new GAboutlyx(*dialog));
173 dialog->bc().bp(new OkCancelPolicy);
174 } else if (name == "bibitem") {
175 dialog->setController(new ControlCommand(*dialog, name));
176 dialog->setView(new FormBibitem(*dialog));
177 dialog->bc().bp(new OkCancelReadOnlyPolicy);
178 } else if (name == "bibtex") {
179 dialog->setController(new ControlBibtex(*dialog));
180 dialog->setView(new FormBibtex(*dialog));
181 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
182 } else if (name == "box") {
183 dialog->setController(new ControlBox(*dialog));
184 dialog->setView(new FormBox(*dialog));
185 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
186 } else if (name == "character") {
187 dialog->setController(new ControlCharacter(*dialog));
188 dialog->setView(new FormCharacter(*dialog));
189 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
190 } else if (name == "changes") {
191 dialog->setController(new ControlChanges(*dialog));
192 dialog->setView(new FormChanges(*dialog));
193 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
194 } else if (name == "citation") {
195 dialog->setController(new ControlCitation(*dialog));
196 dialog->setView(new FormCitation(*dialog));
197 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
198 } else if (name == "errorlist") {
199 dialog->setController(new ControlErrorList(*dialog));
200 dialog->setView(new FormErrorList(*dialog));
201 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
202 } else if (name == "ert") {
203 dialog->setController(new ControlERT(*dialog));
204 dialog->setView(new FormERT(*dialog));
205 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
206 } else if (name == "external") {
207 dialog->setController(new ControlExternal(*dialog));
208 dialog->setView(new FormExternal(*dialog));
209 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
210 } else if (name == "file") {
211 dialog->setController(new ControlShowFile(*dialog));
212 dialog->setView(new FormShowFile(*dialog));
213 dialog->bc().bp(new OkCancelPolicy);
214 } else if (name == "findreplace") {
215 dialog->setController(new ControlSearch(*dialog));
216 dialog->setView(new FormSearch(*dialog));
217 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
218 } else if (name == "float") {
219 dialog->setController(new ControlFloat(*dialog));
220 dialog->setView(new FormFloat(*dialog));
221 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
222 } else if (name == "graphics") {
223 dialog->setController(new ControlGraphics(*dialog));
224 dialog->setView(new FormGraphics(*dialog));
225 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
226 } else if (name == "include") {
227 dialog->setController(new ControlInclude(*dialog));
228 dialog->setView(new FormInclude(*dialog));
229 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
230 } else if (name == "index") {
231 dialog->bc().view(new GBC(dialog->bc()));
232 dialog->setController(new ControlCommand(*dialog, name));
233 dialog->setView(new GText(*dialog,
234 _("Index"), _("Keyword:|#K")));
235 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
236 } else if (name == "label") {
237 dialog->bc().view(new GBC(dialog->bc()));
238 dialog->setController(new ControlCommand(*dialog, name));
239 dialog->setView(new GText(*dialog,
240 _("Label"), _("Label:|#L")));
241 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
242 } else if (name == "log") {
243 dialog->setController(new ControlLog(*dialog));
244 dialog->setView(new FormLog(*dialog));
245 dialog->bc().bp(new OkCancelPolicy);
247 } else if (name == "mathpanel") {
248 dialog->bc().view(new GBC(dialog->bc()));
249 dialog->setController(new ControlMath(*dialog));
250 dialog->setView(new GMathPanel(*dialog));
251 dialog->bc().bp(new IgnorantPolicy);
253 } else if (name == "mathaccents") {
254 FormMathsBitmap * bitmap =
255 createFormBitmap(*dialog, _("Maths Decorations & Accents"),
256 latex_deco, nr_latex_deco);
258 BitmapStore(12, 3, 4, deco1_width, deco1_height, deco1_bits, true));
260 BitmapStore(10, 4, 3, deco2_width, deco2_height, deco2_bits, true));
262 dialog->setController(new ControlMath(*dialog));
263 dialog->setView(bitmap);
264 dialog->bc().bp(new IgnorantPolicy);
266 } else if (name == "matharrows") {
267 FormMathsBitmap * bitmap =
268 createFormBitmap(*dialog, _("Arrows"), latex_arrow, nr_latex_arrow);
270 BitmapStore(20, 5, 4, arrow_width, arrow_height, arrow_bits, true));
272 BitmapStore(7, 2, 4, larrow_width, larrow_height, larrow_bits, false));
274 BitmapStore(4, 2, 2, darrow_width, darrow_height, darrow_bits, true));
276 dialog->setController(new ControlMath(*dialog));
277 dialog->setView(bitmap);
278 dialog->bc().bp(new IgnorantPolicy);
280 } else if (name == "mathoperators") {
281 FormMathsBitmap * bitmap =
282 createFormBitmap(*dialog, _("Binary Ops"),
283 latex_bop, nr_latex_bop);
285 BitmapStore(31, 4, 8, bop_width, bop_height, bop_bits, true));
287 dialog->setController(new ControlMath(*dialog));
288 dialog->setView(bitmap);
289 dialog->bc().bp(new IgnorantPolicy);
291 } else if (name == "mathrelations") {
292 FormMathsBitmap * bitmap =
293 createFormBitmap(*dialog, _("Binary Relations"),
294 latex_brel, nr_latex_brel);
296 BitmapStore(35, 4, 9, brel_width, brel_height, brel_bits, true));
298 dialog->setController(new ControlMath(*dialog));
299 dialog->setView(bitmap);
300 dialog->bc().bp(new IgnorantPolicy);
302 } else if (name == "mathgreek") {
303 FormMathsBitmap * bitmap =
304 createFormBitmap(*dialog, _("Greek"),
305 latex_greek, nr_latex_greek);
307 BitmapStore(11, 6, 2, Greek_width, Greek_height, Greek_bits, true));
309 BitmapStore(28, 7, 4, greek_width, greek_height, greek_bits, true));
311 dialog->setController(new ControlMath(*dialog));
312 dialog->setView(bitmap);
313 dialog->bc().bp(new IgnorantPolicy);
315 } else if (name == "mathmisc") {
316 FormMathsBitmap * bitmap =
317 createFormBitmap(*dialog, _("Misc"),
318 latex_misc, nr_latex_misc);
320 BitmapStore(29, 5, 6, misc_width, misc_height, misc_bits, true));
322 BitmapStore(5, 5, 1, misc4_width, misc4_height, misc4_bits, true));
324 BitmapStore(6, 3, 2, misc2_width, misc2_height, misc2_bits, false));
326 BitmapStore(4, 2, 2, misc3_width, misc3_height, misc3_bits, true));
328 dialog->setController(new ControlMath(*dialog));
329 dialog->setView(bitmap);
330 dialog->bc().bp(new IgnorantPolicy);
332 } else if (name == "mathdots") {
333 FormMathsBitmap * bitmap =
334 createFormBitmap(*dialog, _("Dots"),
335 latex_dots, nr_latex_dots);
337 BitmapStore(4, 4, 1, dots_width, dots_height, dots_bits, true));
339 dialog->setController(new ControlMath(*dialog));
340 dialog->setView(bitmap);
341 dialog->bc().bp(new IgnorantPolicy);
343 } else if (name == "mathbigoperators") {
344 FormMathsBitmap * bitmap =
345 createFormBitmap(*dialog, _("Big Operators"),
346 latex_varsz, nr_latex_varsz);
348 BitmapStore(14, 3, 5, varsz_width, varsz_height, varsz_bits, true));
350 dialog->setController(new ControlMath(*dialog));
351 dialog->setView(bitmap);
352 dialog->bc().bp(new IgnorantPolicy);
354 } else if (name == "mathamsmisc") {
355 FormMathsBitmap * bitmap =
356 createFormBitmap(*dialog, _("AMS Misc"),
357 latex_ams_misc, nr_latex_ams_misc);
359 BitmapStore(9, 5, 2, ams1_width, ams1_height, ams1_bits, true));
361 BitmapStore(26, 3, 9, ams7_width, ams7_height, ams7_bits, true));
363 dialog->setController(new ControlMath(*dialog));
364 dialog->setView(bitmap);
365 dialog->bc().bp(new IgnorantPolicy);
367 } else if (name == "mathamsarrows") {
368 FormMathsBitmap * bitmap =
369 createFormBitmap(*dialog, _("AMS Arrows"),
370 latex_ams_arrows, nr_latex_ams_arrows);
372 BitmapStore(32, 3, 11, ams2_width, ams2_height, ams2_bits, true));
374 BitmapStore(6, 3, 2, ams3_width, ams3_height, ams3_bits, true));
376 dialog->setController(new ControlMath(*dialog));
377 dialog->setView(bitmap);
378 dialog->bc().bp(new IgnorantPolicy);
380 } else if (name == "mathamsrelations") {
381 FormMathsBitmap * bitmap =
382 createFormBitmap(*dialog, _("AMS Relations"),
383 latex_ams_rel, nr_latex_ams_rel);
385 BitmapStore(66, 6, 11, ams_rel_width, ams_rel_height, ams_rel_bits, true));
387 dialog->setController(new ControlMath(*dialog));
388 dialog->setView(bitmap);
389 dialog->bc().bp(new IgnorantPolicy);
391 } else if (name == "mathamsnegatedrelations") {
392 FormMathsBitmap * bitmap =
393 createFormBitmap(*dialog, _("AMS Negated Rel"),
394 latex_ams_nrel, nr_latex_ams_nrel);
396 BitmapStore(51, 6, 9, ams_nrel_width, ams_nrel_height, ams_nrel_bits, true));
398 dialog->setController(new ControlMath(*dialog));
399 dialog->setView(bitmap);
400 dialog->bc().bp(new IgnorantPolicy);
402 } else if (name == "mathamsoperators") {
403 FormMathsBitmap * bitmap =
404 createFormBitmap(*dialog, _("AMS Operators"),
405 latex_ams_ops, nr_latex_ams_ops);
407 BitmapStore(23, 3, 8, ams_ops_width, ams_ops_height, ams_ops_bits, true));
409 dialog->setController(new ControlMath(*dialog));
410 dialog->setView(bitmap);
411 dialog->bc().bp(new IgnorantPolicy);
413 } else if (name == "mathdelimiter") {
414 dialog->bc().view(new GBC(dialog->bc()));
415 dialog->setController(new ControlMath(*dialog));
416 dialog->setView(new GMathDelim(*dialog));
417 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
418 } else if (name == "mathmatrix") {
419 dialog->setController(new ControlMath(*dialog));
420 dialog->setView(new FormMathsMatrix(*dialog));
421 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
422 } else if (name == "mathspace") {
423 dialog->setController(new ControlMath(*dialog));
424 dialog->setView(new FormMathsSpace(*dialog));
425 dialog->bc().bp(new IgnorantPolicy);
426 } else if (name == "mathstyle") {
427 dialog->setController(new ControlMath(*dialog));
428 dialog->setView(new FormMathsStyle(*dialog));
429 dialog->bc().bp(new IgnorantPolicy);
430 } else if (name == "note") {
431 dialog->setController(new ControlNote(*dialog));
432 dialog->setView(new FormNote(*dialog));
433 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
434 } else if (name == "branch") {
435 dialog->setController(new ControlBranch(*dialog));
436 dialog->setView(new FormBranch(*dialog));
437 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
438 } else if (name == "paragraph") {
439 dialog->setController(new ControlParagraph(*dialog));
440 dialog->setView(new FormParagraph(*dialog));
441 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
442 } else if (name == "print") {
443 dialog->setController(new ControlPrint(*dialog));
444 dialog->setView(new FormPrint(*dialog));
445 dialog->bc().bp(new OkApplyCancelPolicy);
446 } else if (name == "ref") {
447 dialog->setController(new ControlRef(*dialog));
448 dialog->setView(new FormRef(*dialog));
449 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
450 } else if (name == "sendto") {
451 dialog->setController(new ControlSendto(*dialog));
452 dialog->setView(new FormSendto(*dialog));
453 dialog->bc().bp(new OkApplyCancelPolicy);
454 } else if (name == "tabular") {
455 dialog->setController(new ControlTabular(*dialog));
456 dialog->setView(new FormTabular(*dialog));
457 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
458 } else if (name == "tabularcreate") {
459 dialog->bc().view(new GBC(dialog->bc()));
460 dialog->setController(new ControlTabularCreate(*dialog));
461 dialog->setView(new GTableCreate(*dialog));
462 dialog->bc().bp(new IgnorantPolicy);
463 } else if (name == "texinfo") {
464 dialog->setController(new ControlTexinfo(*dialog));
465 dialog->setView(new FormTexinfo(*dialog));
466 dialog->bc().bp(new OkCancelPolicy);
467 #ifdef HAVE_LIBAIKSAURUS
468 } else if (name == "thesaurus") {
469 dialog->setController(new ControlThesaurus(*dialog));
470 dialog->setView(new FormThesaurus(*dialog));
471 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
473 } else if (name == "toc") {
474 dialog->setController(new ControlToc(*dialog));
475 dialog->setView(new FormToc(*dialog));
476 dialog->bc().bp(new OkCancelPolicy);
477 } else if (name == "url") {
478 dialog->bc().view(new GBC(dialog->bc()));
479 dialog->setController(new ControlCommand(*dialog, name));
480 dialog->setView(new GUrl(*dialog));
481 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
482 } else if (name == "vspace") {
483 dialog->setController(new ControlVSpace(*dialog));
484 dialog->setView(new FormVSpace(*dialog));
485 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
486 } else if (name == "wrap") {
487 dialog->setController(new ControlWrap(*dialog));
488 dialog->setView(new FormWrap(*dialog));
489 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
496 void Dialogs::toggleTooltips()
498 Tooltips::toggleEnabled();
502 /// Are the tooltips on or off?
503 bool Dialogs::tooltipsEnabled()
505 return Tooltips::enabled();