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 "ControlBranch.h"
21 #include "ControlChanges.h"
22 #include "ControlCharacter.h"
23 #include "ControlCitation.h"
24 #include "ControlCommand.h"
25 #include "ControlErrorList.h"
26 #include "ControlERT.h"
27 #include "ControlExternal.h"
28 #include "ControlFloat.h"
29 #include "ControlGraphics.h"
30 #include "ControlInclude.h"
31 #include "ControlLog.h"
32 #include "ControlMath.h"
33 #include "ControlMinipage.h"
34 #include "ControlNote.h"
35 #include "ControlParagraph.h"
36 #include "ControlRef.h"
37 #include "ControlShowFile.h"
38 #include "ControlTabular.h"
39 #include "ControlTabularCreate.h"
40 #include "ControlTexinfo.h"
41 #include "ControlToc.h"
42 #include "ControlVCLog.h"
43 #include "ControlWrap.h"
45 #include "GAboutlyx.h"
47 #include "FormBibitem.h"
48 #include "FormBibtex.h"
49 #include "FormBranch.h"
50 #include "FormChanges.h"
51 #include "FormCharacter.h"
52 #include "FormCitation.h"
53 #include "FormErrorList.h"
55 #include "FormExternal.h"
56 #include "FormFloat.h"
57 #include "FormGraphics.h"
58 #include "FormInclude.h"
60 #include "FormMathsPanel.h"
61 #include "FormMathsBitmap.h"
62 #include "FormMathsDelim.h"
63 #include "FormMathsMatrix.h"
64 #include "FormMathsSpace.h"
65 #include "FormMathsStyle.h"
66 #include "FormMinipage.h"
68 #include "FormParagraph.h"
70 #include "FormTabular.h"
71 #include "FormTexinfo.h"
72 #include "FormShowFile.h"
73 #include "FormTabularCreate.h"
76 #include "FormVCLog.h"
79 #ifdef HAVE_LIBAIKSAURUS
80 #include "ControlThesaurus.h"
81 #include "FormThesaurus.h"
85 #include "ButtonController.h"
96 #include "ams_misc.xbm"
97 #include "ams_arrows.xbm"
98 #include "ams_rel.xbm"
99 #include "ams_nrel.xbm"
100 #include "ams_ops.xbm"
107 FormMathsBitmap * createFormBitmap(Dialog & parent, string const & title,
108 char const * const * data, int size)
110 char const * const * const end = data + size;
111 return new FormMathsBitmap(parent, title, std::vector<string>(data, end));
115 char const * const dialognames[] = { "aboutlyx", "bibitem", "bibtex", "branch", "changes",
116 "character", "citation", "error", "errorlist" , "ert", "external", "file",
117 "float", "graphics", "include", "index", "label", "latexlog", "mathpanel",
118 "mathaccents", "matharrows", "mathoperators", "mathrelations", "mathgreek",
119 "mathmisc", "mathdots", "mathbigoperators", "mathamsmisc",
120 "mathamsarrows", "mathamsrelations", "mathamsnegatedrelations", "mathamsoperators",
121 "mathdelimiter", "mathmatrix", "mathspace", "mathstyle",
122 "minipage", "note", "paragraph", "ref", "tabular", "tabularcreate", "texinfo",
124 #ifdef HAVE_LIBAIKSAURUS
128 "toc", "url", "vclog", "wrap" };
130 char const * const * const end_dialognames =
131 dialognames + (sizeof(dialognames) / sizeof(char *));
134 cmpCStr(char const * name) : name_(name) {}
135 bool operator()(char const * other) {
136 return strcmp(other, name_) == 0;
145 bool Dialogs::isValidName(string const & name) const
147 return std::find_if(dialognames, end_dialognames,
148 cmpCStr(name.c_str())) != end_dialognames;
152 Dialog * Dialogs::build(string const & name)
154 if (!isValidName(name))
157 Dialog * dialog = new Dialog(lyxview_, name);
158 dialog->bc().view(new xformsBC(dialog->bc()));
160 if (name == "aboutlyx") {
161 dialog->bc().view(new GBC(dialog->bc()));
162 dialog->setController(new ControlAboutlyx(*dialog));
163 dialog->setView(new GAboutlyx(*dialog));
164 dialog->bc().bp(new OkCancelPolicy);
165 } else if (name == "bibitem") {
166 dialog->setController(new ControlCommand(*dialog, name));
167 dialog->setView(new FormBibitem(*dialog));
168 dialog->bc().bp(new OkCancelReadOnlyPolicy);
169 } else if (name == "bibtex") {
170 dialog->setController(new ControlBibtex(*dialog));
171 dialog->setView(new FormBibtex(*dialog));
172 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
173 } else if (name == "character") {
174 dialog->setController(new ControlCharacter(*dialog));
175 dialog->setView(new FormCharacter(*dialog));
176 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
177 } else if (name == "changes") {
178 dialog->setController(new ControlChanges(*dialog));
179 dialog->setView(new FormChanges(*dialog));
180 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
181 } else if (name == "citation") {
182 dialog->setController(new ControlCitation(*dialog));
183 dialog->setView(new FormCitation(*dialog));
184 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
185 } else if (name == "errorlist") {
186 dialog->setController(new ControlErrorList(*dialog));
187 dialog->setView(new FormErrorList(*dialog));
188 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
189 } else if (name == "ert") {
190 dialog->setController(new ControlERT(*dialog));
191 dialog->setView(new FormERT(*dialog));
192 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
193 } else if (name == "external") {
194 dialog->setController(new ControlExternal(*dialog));
195 dialog->setView(new FormExternal(*dialog));
196 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
197 } else if (name == "file") {
198 dialog->setController(new ControlShowFile(*dialog));
199 dialog->setView(new FormShowFile(*dialog));
200 dialog->bc().bp(new OkCancelPolicy);
201 } else if (name == "float") {
202 dialog->setController(new ControlFloat(*dialog));
203 dialog->setView(new FormFloat(*dialog));
204 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
205 } else if (name == "graphics") {
206 dialog->setController(new ControlGraphics(*dialog));
207 dialog->setView(new FormGraphics(*dialog));
208 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
209 } else if (name == "include") {
210 dialog->setController(new ControlInclude(*dialog));
211 dialog->setView(new FormInclude(*dialog));
212 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
213 } else if (name == "index") {
214 dialog->bc().view(new GBC(dialog->bc()));
215 dialog->setController(new ControlCommand(*dialog, name));
216 dialog->setView(new GText(*dialog,
217 _("Index"), _("Keyword:|#K")));
218 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
219 } else if (name == "label") {
220 dialog->bc().view(new GBC(dialog->bc()));
221 dialog->setController(new ControlCommand(*dialog, name));
222 dialog->setView(new GText(*dialog,
223 _("Label"), _("Label:|#L")));
224 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
225 } else if (name == "latexlog") {
226 dialog->setController(new ControlLog(*dialog));
227 dialog->setView(new FormLog(*dialog));
228 dialog->bc().bp(new OkCancelPolicy);
230 } else if (name == "mathpanel") {
231 dialog->setController(new ControlMath(*dialog));
232 dialog->setView(new FormMathsPanel(*dialog));
233 dialog->bc().bp(new IgnorantPolicy);
235 } else if (name == "mathaccents") {
236 FormMathsBitmap * bitmap =
237 createFormBitmap(*dialog, _("Maths Decorations & Accents"),
238 latex_deco, nr_latex_deco);
240 BitmapStore(12, 3, 4, deco1_width, deco1_height, deco1_bits, true));
242 BitmapStore(10, 4, 3, deco2_width, deco2_height, deco2_bits, true));
244 dialog->setController(new ControlMath(*dialog));
245 dialog->setView(bitmap);
246 dialog->bc().bp(new IgnorantPolicy);
248 } else if (name == "matharrows") {
249 FormMathsBitmap * bitmap =
250 createFormBitmap(*dialog, _("Arrows"), latex_arrow, nr_latex_arrow);
252 BitmapStore(20, 5, 4, arrow_width, arrow_height, arrow_bits, true));
254 BitmapStore(7, 2, 4, larrow_width, larrow_height, larrow_bits, false));
256 BitmapStore(4, 2, 2, darrow_width, darrow_height, darrow_bits, true));
258 dialog->setController(new ControlMath(*dialog));
259 dialog->setView(bitmap);
260 dialog->bc().bp(new IgnorantPolicy);
262 } else if (name == "mathoperators") {
263 FormMathsBitmap * bitmap =
264 createFormBitmap(*dialog, _("Binary Ops"),
265 latex_bop, nr_latex_bop);
267 BitmapStore(31, 4, 8, bop_width, bop_height, bop_bits, true));
269 dialog->setController(new ControlMath(*dialog));
270 dialog->setView(bitmap);
271 dialog->bc().bp(new IgnorantPolicy);
273 } else if (name == "mathrelations") {
274 FormMathsBitmap * bitmap =
275 createFormBitmap(*dialog, _("Binary Relations"),
276 latex_brel, nr_latex_brel);
278 BitmapStore(35, 4, 9, brel_width, brel_height, brel_bits, true));
280 dialog->setController(new ControlMath(*dialog));
281 dialog->setView(bitmap);
282 dialog->bc().bp(new IgnorantPolicy);
284 } else if (name == "mathgreek") {
285 FormMathsBitmap * bitmap =
286 createFormBitmap(*dialog, _("Greek"),
287 latex_greek, nr_latex_greek);
289 BitmapStore(11, 6, 2, Greek_width, Greek_height, Greek_bits, true));
291 BitmapStore(28, 7, 4, greek_width, greek_height, greek_bits, true));
293 dialog->setController(new ControlMath(*dialog));
294 dialog->setView(bitmap);
295 dialog->bc().bp(new IgnorantPolicy);
297 } else if (name == "mathmisc") {
298 FormMathsBitmap * bitmap =
299 createFormBitmap(*dialog, _("Misc"),
300 latex_misc, nr_latex_misc);
302 BitmapStore(29, 5, 6, misc_width, misc_height, misc_bits, true));
304 BitmapStore(5, 5, 1, misc4_width, misc4_height, misc4_bits, true));
306 BitmapStore(6, 3, 2, misc2_width, misc2_height, misc2_bits, false));
308 BitmapStore(4, 2, 2, misc3_width, misc3_height, misc3_bits, true));
310 dialog->setController(new ControlMath(*dialog));
311 dialog->setView(bitmap);
312 dialog->bc().bp(new IgnorantPolicy);
314 } else if (name == "mathdots") {
315 FormMathsBitmap * bitmap =
316 createFormBitmap(*dialog, _("Dots"),
317 latex_dots, nr_latex_dots);
319 BitmapStore(4, 4, 1, dots_width, dots_height, dots_bits, true));
321 dialog->setController(new ControlMath(*dialog));
322 dialog->setView(bitmap);
323 dialog->bc().bp(new IgnorantPolicy);
325 } else if (name == "mathbigoperators") {
326 FormMathsBitmap * bitmap =
327 createFormBitmap(*dialog, _("Big Operators"),
328 latex_varsz, nr_latex_varsz);
330 BitmapStore(14, 3, 5, varsz_width, varsz_height, varsz_bits, true));
332 dialog->setController(new ControlMath(*dialog));
333 dialog->setView(bitmap);
334 dialog->bc().bp(new IgnorantPolicy);
336 } else if (name == "mathamsmisc") {
337 FormMathsBitmap * bitmap =
338 createFormBitmap(*dialog, _("AMS Misc"),
339 latex_ams_misc, nr_latex_ams_misc);
341 BitmapStore(9, 5, 2, ams1_width, ams1_height, ams1_bits, true));
343 BitmapStore(26, 3, 9, ams7_width, ams7_height, ams7_bits, true));
345 dialog->setController(new ControlMath(*dialog));
346 dialog->setView(bitmap);
347 dialog->bc().bp(new IgnorantPolicy);
349 } else if (name == "mathamsarrows") {
350 FormMathsBitmap * bitmap =
351 createFormBitmap(*dialog, _("AMS Arrows"),
352 latex_ams_arrows, nr_latex_ams_arrows);
354 BitmapStore(32, 3, 11, ams2_width, ams2_height, ams2_bits, true));
356 BitmapStore(6, 3, 2, ams3_width, ams3_height, ams3_bits, true));
358 dialog->setController(new ControlMath(*dialog));
359 dialog->setView(bitmap);
360 dialog->bc().bp(new IgnorantPolicy);
362 } else if (name == "mathamsrelations") {
363 FormMathsBitmap * bitmap =
364 createFormBitmap(*dialog, _("AMS Relations"),
365 latex_ams_rel, nr_latex_ams_rel);
367 BitmapStore(66, 6, 11, ams_rel_width, ams_rel_height, ams_rel_bits, true));
369 dialog->setController(new ControlMath(*dialog));
370 dialog->setView(bitmap);
371 dialog->bc().bp(new IgnorantPolicy);
373 } else if (name == "mathamsnegatedrelations") {
374 FormMathsBitmap * bitmap =
375 createFormBitmap(*dialog, _("AMS Negated Rel"),
376 latex_ams_nrel, nr_latex_ams_nrel);
378 BitmapStore(51, 6, 9, ams_nrel_width, ams_nrel_height, ams_nrel_bits, true));
380 dialog->setController(new ControlMath(*dialog));
381 dialog->setView(bitmap);
382 dialog->bc().bp(new IgnorantPolicy);
384 } else if (name == "mathamsoperators") {
385 FormMathsBitmap * bitmap =
386 createFormBitmap(*dialog, _("AMS Operators"),
387 latex_ams_ops, nr_latex_ams_ops);
389 BitmapStore(23, 3, 8, ams_ops_width, ams_ops_height, ams_ops_bits, true));
391 dialog->setController(new ControlMath(*dialog));
392 dialog->setView(bitmap);
393 dialog->bc().bp(new IgnorantPolicy);
395 } else if (name == "mathdelimiter") {
396 dialog->setController(new ControlMath(*dialog));
397 dialog->setView(new FormMathsDelim(*dialog));
398 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
399 } else if (name == "mathmatrix") {
400 dialog->setController(new ControlMath(*dialog));
401 dialog->setView(new FormMathsMatrix(*dialog));
402 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
403 } else if (name == "mathspace") {
404 dialog->setController(new ControlMath(*dialog));
405 dialog->setView(new FormMathsSpace(*dialog));
406 dialog->bc().bp(new IgnorantPolicy);
407 } else if (name == "mathstyle") {
408 dialog->setController(new ControlMath(*dialog));
409 dialog->setView(new FormMathsStyle(*dialog));
410 dialog->bc().bp(new IgnorantPolicy);
411 } else if (name == "minipage") {
412 dialog->setController(new ControlMinipage(*dialog));
413 dialog->setView(new FormMinipage(*dialog));
414 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
415 } else if (name == "note") {
416 dialog->setController(new ControlNote(*dialog));
417 dialog->setView(new FormNote(*dialog));
418 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
419 } else if (name == "branch") {
420 dialog->setController(new ControlBranch(*dialog));
421 dialog->setView(new FormBranch(*dialog));
422 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
423 } else if (name == "paragraph") {
424 dialog->setController(new ControlParagraph(*dialog));
425 dialog->setView(new FormParagraph(*dialog));
426 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
427 } else if (name == "ref") {
428 dialog->setController(new ControlRef(*dialog));
429 dialog->setView(new FormRef(*dialog));
430 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
431 } else if (name == "tabular") {
432 dialog->setController(new ControlTabular(*dialog));
433 dialog->setView(new FormTabular(*dialog));
434 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
435 } else if (name == "tabularcreate") {
436 dialog->setController(new ControlTabularCreate(*dialog));
437 dialog->setView(new FormTabularCreate(*dialog));
438 dialog->bc().bp(new IgnorantPolicy);
439 } else if (name == "texinfo") {
440 dialog->setController(new ControlTexinfo(*dialog));
441 dialog->setView(new FormTexinfo(*dialog));
442 dialog->bc().bp(new OkCancelPolicy);
443 #ifdef HAVE_LIBAIKSAURUS
444 } else if (name == "thesaurus") {
445 dialog->setController(new ControlThesaurus(*dialog));
446 dialog->setView(new FormThesaurus(*dialog));
447 dialog->bc().bp(new OkApplyCancelReadOnlyPolicy);
449 } else if (name == "toc") {
450 dialog->setController(new ControlToc(*dialog));
451 dialog->setView(new FormToc(*dialog));
452 dialog->bc().bp(new OkCancelPolicy);
453 } else if (name == "url") {
454 dialog->setController(new ControlCommand(*dialog, name));
455 dialog->setView(new FormUrl(*dialog));
456 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
457 } else if (name == "vclog") {
458 dialog->setController(new ControlVCLog(*dialog));
459 dialog->setView(new FormVCLog(*dialog));
460 dialog->bc().bp(new OkCancelPolicy);
461 } else if (name == "wrap") {
462 dialog->setController(new ControlWrap(*dialog));
463 dialog->setView(new FormWrap(*dialog));
464 dialog->bc().bp(new NoRepeatedApplyReadOnlyPolicy);
471 void Dialogs::toggleTooltips()
473 Tooltips::toggleEnabled();
477 /// Are the tooltips on or off?
478 bool Dialogs::tooltipsEnabled()
480 return Tooltips::enabled();