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 "ControlBranch.h"
20 #include "ControlChanges.h"
21 #include "ControlCitation.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 "ControlMath.h"
30 #include "ControlMinipage.h"
31 #include "ControlNote.h"
32 #include "ControlParagraph.h"
33 #include "ControlRef.h"
34 #include "ControlShowFile.h"
35 #include "ControlTabular.h"
36 #include "ControlTabularCreate.h"
37 #include "ControlToc.h"
38 #include "ControlVCLog.h"
39 #include "ControlWrap.h"
41 #include "FormAboutlyx.h"
42 #include "FormBibitem.h"
43 #include "FormBibtex.h"
44 #include "FormBranch.h"
45 #include "FormChanges.h"
46 #include "FormCharacter.h"
47 #include "FormCitation.h"
48 #include "FormErrorList.h"
50 #include "FormExternal.h"
51 #include "FormFloat.h"
52 #include "FormGraphics.h"
53 #include "FormInclude.h"
55 #include "FormMathsPanel.h"
56 #include "FormMathsBitmap.h"
57 #include "FormMathsDelim.h"
58 #include "FormMathsMatrix.h"
59 #include "FormMathsSpace.h"
60 #include "FormMathsStyle.h"
61 #include "FormMinipage.h"
63 #include "FormParagraph.h"
65 #include "FormTabular.h"
66 #include "FormTexinfo.h"
67 #include "FormShowFile.h"
68 #include "FormTabularCreate.h"
72 #include "FormVCLog.h"
75 #ifdef HAVE_LIBAIKSAURUS
76 #include "ControlThesaurus.h"
77 #include "FormThesaurus.h"
81 #include "ButtonController.h"
92 #include "ams_misc.xbm"
93 #include "ams_arrows.xbm"
94 #include "ams_rel.xbm"
95 #include "ams_nrel.xbm"
96 #include "ams_ops.xbm"
102 FormMathsBitmap * createFormBitmap(Dialog & parent, string const & title,
103 char const * const * data, int size)
105 char const * const * const end = data + size;
106 return new FormMathsBitmap(parent, title, std::vector<string>(data, end));
110 char const * const dialognames[] = { "aboutlyx", "bibitem", "bibtex", "branch", "changes",
111 "character", "citation", "error", "errorlist" , "ert", "external", "file",
112 "float", "graphics", "include", "index", "label", "latexlog", "mathpanel",
113 "mathaccents", "matharrows", "mathoperators", "mathrelations", "mathgreek",
114 "mathmisc", "mathdots", "mathbigoperators", "mathamsmisc",
115 "mathamsarrows", "mathamsrelations", "mathamsnegatedrelations", "mathamsoperators",
116 "mathdelimiter", "mathmatrix", "mathspace", "mathstyle",
117 "minipage", "note", "paragraph", "ref", "tabular", "tabularcreate", "texinfo",
119 #ifdef HAVE_LIBAIKSAURUS
123 "toc", "url", "vclog", "wrap" };
125 char const * const * const end_dialognames =
126 dialognames + (sizeof(dialognames) / sizeof(char *));
129 cmpCStr(char const * name) : name_(name) {}
130 bool operator()(char const * other) {
131 return strcmp(other, name_) == 0;
140 bool Dialogs::isValidName(string const & name) const
142 return std::find_if(dialognames, end_dialognames,
143 cmpCStr(name.c_str())) != end_dialognames;
147 Dialog * Dialogs::build(string const & name)
149 if (!isValidName(name))
152 Dialog * dialog = new Dialog(lyxview_, name);
153 dialog->bc().view(new xformsBC(dialog->bc()));
155 if (name == "aboutlyx") {
156 dialog->setController(new ControlAboutlyx(*dialog));
157 dialog->setView(new FormAboutlyx(*dialog));
158 dialog->bc().bp(new OkCancelPolicy);
159 } else if (name == "bibitem") {
160 dialog->setController(new ControlCommand(*dialog, name));
161 dialog->setView(new FormBibitem(*dialog));
162 dialog->bc().bp(new OkCancelReadOnlyPolicy);
163 } else if (name == "bibtex") {
164 dialog->setController(new ControlBibtex(*dialog));
165 dialog->setView(new FormBibtex(*dialog));
166 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
167 } else if (name == "character") {
168 dialog->setController(new ControlCharacter(*dialog));
169 dialog->setView(new FormCharacter(*dialog));
170 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
171 } else if (name == "changes") {
172 dialog->setController(new ControlChanges(*dialog));
173 dialog->setView(new FormChanges(*dialog));
174 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
175 } else if (name == "citation") {
176 dialog->setController(new ControlCitation(*dialog));
177 dialog->setView(new FormCitation(*dialog));
178 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
179 } else if (name == "errorlist") {
180 dialog->setController(new ControlErrorList(*dialog));
181 dialog->setView(new FormErrorList(*dialog));
182 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
183 } else if (name == "ert") {
184 dialog->setController(new ControlERT(*dialog));
185 dialog->setView(new FormERT(*dialog));
186 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
187 } else if (name == "external") {
188 dialog->setController(new ControlExternal(*dialog));
189 dialog->setView(new FormExternal(*dialog));
190 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
191 } else if (name == "file") {
192 dialog->setController(new ControlShowFile(*dialog));
193 dialog->setView(new FormShowFile(*dialog));
194 dialog->bc().bp(new OkCancelPolicy);
195 } else if (name == "float") {
196 dialog->setController(new ControlFloat(*dialog));
197 dialog->setView(new FormFloat(*dialog));
198 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
199 } else if (name == "graphics") {
200 dialog->setController(new ControlGraphics(*dialog));
201 dialog->setView(new FormGraphics(*dialog));
202 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
203 } else if (name == "include") {
204 dialog->setController(new ControlInclude(*dialog));
205 dialog->setView(new FormInclude(*dialog));
206 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
207 } else if (name == "index") {
208 dialog->setController(new ControlCommand(*dialog, name));
209 dialog->setView(new FormText(*dialog,
210 _("Index"), _("Keyword:|#K")));
211 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
212 } else if (name == "label") {
213 dialog->setController(new ControlCommand(*dialog, name));
214 dialog->setView(new FormText(*dialog,
215 _("Label"), _("Label:|#L")));
216 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
217 } else if (name == "latexlog") {
218 dialog->setController(new ControlLog(*dialog));
219 dialog->setView(new FormLog(*dialog));
220 dialog->bc().bp(new OkCancelPolicy);
222 } else if (name == "mathpanel") {
223 dialog->setController(new ControlMath(*dialog));
224 dialog->setView(new FormMathsPanel(*dialog));
225 dialog->bc().bp(new IgnorantPolicy);
227 } else if (name == "mathaccents") {
228 FormMathsBitmap * bitmap =
229 createFormBitmap(*dialog, _("Maths Decorations & Accents"),
230 latex_deco, nr_latex_deco);
232 BitmapStore(12, 3, 4, deco1_width, deco1_height, deco1_bits, true));
234 BitmapStore(10, 4, 3, deco2_width, deco2_height, deco2_bits, true));
236 dialog->setController(new ControlMath(*dialog));
237 dialog->setView(bitmap);
238 dialog->bc().bp(new IgnorantPolicy);
240 } else if (name == "matharrows") {
241 FormMathsBitmap * bitmap =
242 createFormBitmap(*dialog, _("Arrows"), latex_arrow, nr_latex_arrow);
244 BitmapStore(20, 5, 4, arrow_width, arrow_height, arrow_bits, true));
246 BitmapStore(7, 2, 4, larrow_width, larrow_height, larrow_bits, false));
248 BitmapStore(4, 2, 2, darrow_width, darrow_height, darrow_bits, true));
250 dialog->setController(new ControlMath(*dialog));
251 dialog->setView(bitmap);
252 dialog->bc().bp(new IgnorantPolicy);
254 } else if (name == "mathoperators") {
255 FormMathsBitmap * bitmap =
256 createFormBitmap(*dialog, _("Binary Ops"),
257 latex_bop, nr_latex_bop);
259 BitmapStore(31, 4, 8, bop_width, bop_height, bop_bits, true));
261 dialog->setController(new ControlMath(*dialog));
262 dialog->setView(bitmap);
263 dialog->bc().bp(new IgnorantPolicy);
265 } else if (name == "mathrelations") {
266 FormMathsBitmap * bitmap =
267 createFormBitmap(*dialog, _("Binary Relations"),
268 latex_brel, nr_latex_brel);
270 BitmapStore(35, 4, 9, brel_width, brel_height, brel_bits, true));
272 dialog->setController(new ControlMath(*dialog));
273 dialog->setView(bitmap);
274 dialog->bc().bp(new IgnorantPolicy);
276 } else if (name == "mathgreek") {
277 FormMathsBitmap * bitmap =
278 createFormBitmap(*dialog, _("Greek"),
279 latex_greek, nr_latex_greek);
281 BitmapStore(11, 6, 2, Greek_width, Greek_height, Greek_bits, true));
283 BitmapStore(28, 7, 4, greek_width, greek_height, greek_bits, true));
285 dialog->setController(new ControlMath(*dialog));
286 dialog->setView(bitmap);
287 dialog->bc().bp(new IgnorantPolicy);
289 } else if (name == "mathmisc") {
290 FormMathsBitmap * bitmap =
291 createFormBitmap(*dialog, _("Misc"),
292 latex_misc, nr_latex_misc);
294 BitmapStore(29, 5, 6, misc_width, misc_height, misc_bits, true));
296 BitmapStore(5, 5, 1, misc4_width, misc4_height, misc4_bits, true));
298 BitmapStore(6, 3, 2, misc2_width, misc2_height, misc2_bits, false));
300 BitmapStore(4, 2, 2, misc3_width, misc3_height, misc3_bits, true));
302 dialog->setController(new ControlMath(*dialog));
303 dialog->setView(bitmap);
304 dialog->bc().bp(new IgnorantPolicy);
306 } else if (name == "mathdots") {
307 FormMathsBitmap * bitmap =
308 createFormBitmap(*dialog, _("Dots"),
309 latex_dots, nr_latex_dots);
311 BitmapStore(4, 4, 1, dots_width, dots_height, dots_bits, true));
313 dialog->setController(new ControlMath(*dialog));
314 dialog->setView(bitmap);
315 dialog->bc().bp(new IgnorantPolicy);
317 } else if (name == "mathbigoperators") {
318 FormMathsBitmap * bitmap =
319 createFormBitmap(*dialog, _("Big Operators"),
320 latex_varsz, nr_latex_varsz);
322 BitmapStore(14, 3, 5, varsz_width, varsz_height, varsz_bits, true));
324 dialog->setController(new ControlMath(*dialog));
325 dialog->setView(bitmap);
326 dialog->bc().bp(new IgnorantPolicy);
328 } else if (name == "mathamsmisc") {
329 FormMathsBitmap * bitmap =
330 createFormBitmap(*dialog, _("AMS Misc"),
331 latex_ams_misc, nr_latex_ams_misc);
333 BitmapStore(9, 5, 2, ams1_width, ams1_height, ams1_bits, true));
335 BitmapStore(26, 3, 9, ams7_width, ams7_height, ams7_bits, true));
337 dialog->setController(new ControlMath(*dialog));
338 dialog->setView(bitmap);
339 dialog->bc().bp(new IgnorantPolicy);
341 } else if (name == "mathamsarrows") {
342 FormMathsBitmap * bitmap =
343 createFormBitmap(*dialog, _("AMS Arrows"),
344 latex_ams_arrows, nr_latex_ams_arrows);
346 BitmapStore(32, 3, 11, ams2_width, ams2_height, ams2_bits, true));
348 BitmapStore(6, 3, 2, ams3_width, ams3_height, ams3_bits, true));
350 dialog->setController(new ControlMath(*dialog));
351 dialog->setView(bitmap);
352 dialog->bc().bp(new IgnorantPolicy);
354 } else if (name == "mathamsrelations") {
355 FormMathsBitmap * bitmap =
356 createFormBitmap(*dialog, _("AMS Relations"),
357 latex_ams_rel, nr_latex_ams_rel);
359 BitmapStore(66, 6, 11, ams_rel_width, ams_rel_height, ams_rel_bits, true));
361 dialog->setController(new ControlMath(*dialog));
362 dialog->setView(bitmap);
363 dialog->bc().bp(new IgnorantPolicy);
365 } else if (name == "mathamsnegatedrelations") {
366 FormMathsBitmap * bitmap =
367 createFormBitmap(*dialog, _("AMS Negated Rel"),
368 latex_ams_nrel, nr_latex_ams_nrel);
370 BitmapStore(51, 6, 9, ams_nrel_width, ams_nrel_height, ams_nrel_bits, true));
372 dialog->setController(new ControlMath(*dialog));
373 dialog->setView(bitmap);
374 dialog->bc().bp(new IgnorantPolicy);
376 } else if (name == "mathamsoperators") {
377 FormMathsBitmap * bitmap =
378 createFormBitmap(*dialog, _("AMS Operators"),
379 latex_ams_ops, nr_latex_ams_ops);
381 BitmapStore(23, 3, 8, ams_ops_width, ams_ops_height, ams_ops_bits, true));
383 dialog->setController(new ControlMath(*dialog));
384 dialog->setView(bitmap);
385 dialog->bc().bp(new IgnorantPolicy);
387 } else if (name == "mathdelimiter") {
388 dialog->setController(new ControlMath(*dialog));
389 dialog->setView(new FormMathsDelim(*dialog));
390 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
391 } else if (name == "mathmatrix") {
392 dialog->setController(new ControlMath(*dialog));
393 dialog->setView(new FormMathsMatrix(*dialog));
394 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
395 } else if (name == "mathspace") {
396 dialog->setController(new ControlMath(*dialog));
397 dialog->setView(new FormMathsSpace(*dialog));
398 dialog->bc().bp(new IgnorantPolicy);
399 } else if (name == "mathstyle") {
400 dialog->setController(new ControlMath(*dialog));
401 dialog->setView(new FormMathsStyle(*dialog));
402 dialog->bc().bp(new IgnorantPolicy);
403 } else if (name == "minipage") {
404 dialog->setController(new ControlMinipage(*dialog));
405 dialog->setView(new FormMinipage(*dialog));
406 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
407 } else if (name == "note") {
408 dialog->setController(new ControlNote(*dialog));
409 dialog->setView(new FormNote(*dialog));
410 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
411 } else if (name == "branch") {
412 dialog->setController(new ControlBranch(*dialog));
413 dialog->setView(new FormBranch(*dialog));
414 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
415 } else if (name == "paragraph") {
416 dialog->setController(new ControlParagraph(*dialog));
417 dialog->setView(new FormParagraph(*dialog));
418 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
419 } else if (name == "ref") {
420 dialog->setController(new ControlRef(*dialog));
421 dialog->setView(new FormRef(*dialog));
422 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
423 } else if (name == "tabular") {
424 dialog->setController(new ControlTabular(*dialog));
425 dialog->setView(new FormTabular(*dialog));
426 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
427 } else if (name == "tabularcreate") {
428 dialog->setController(new ControlTabularCreate(*dialog));
429 dialog->setView(new FormTabularCreate(*dialog));
430 dialog->bc().bp(new IgnorantPolicy);
431 } else if (name == "texinfo") {
432 dialog->setController(new ControlTexinfo(*dialog));
433 dialog->setView(new FormTexinfo(*dialog));
434 dialog->bc().bp(new OkCancelPolicy);
435 #ifdef HAVE_LIBAIKSAURUS
436 } else if (name == "thesaurus") {
437 dialog->setController(new ControlThesaurus(*dialog));
438 dialog->setView(new FormThesaurus(*dialog));
439 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
441 } else if (name == "toc") {
442 dialog->setController(new ControlToc(*dialog));
443 dialog->setView(new FormToc(*dialog));
444 dialog->bc().bp(new OkCancelPolicy);
445 } else if (name == "url") {
446 dialog->setController(new ControlCommand(*dialog, name));
447 dialog->setView(new FormUrl(*dialog));
448 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
449 } else if (name == "vclog") {
450 dialog->setController(new ControlVCLog(*dialog));
451 dialog->setView(new FormVCLog(*dialog));
452 dialog->bc().bp(new OkCancelPolicy);
453 } else if (name == "wrap") {
454 dialog->setController(new ControlWrap(*dialog));
455 dialog->setView(new FormWrap(*dialog));
456 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
463 void Dialogs::toggleTooltips()
465 Tooltips::toggleEnabled();
469 /// Are the tooltips on or off?
470 bool Dialogs::tooltipsEnabled()
472 return Tooltips::enabled();