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