]> git.lyx.org Git - lyx.git/blob - src/frontends/xforms/Dialogs.C
Strip out another 180 #includes.
[lyx.git] / src / frontends / xforms / Dialogs.C
1 /**
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.
5  *
6  * \author Angus Leeming
7  *
8  * Full author contact details are available in file CREDITS.
9  */
10
11 #include <config.h>
12
13 #include "Dialogs.h"
14
15 #include "Tooltips.h"
16
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"
40
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"
49 #include "FormERT.h"
50 #include "FormExternal.h"
51 #include "FormFloat.h"
52 #include "FormGraphics.h"
53 #include "FormInclude.h"
54 #include "FormLog.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"
62 #include "FormNote.h"
63 #include "FormParagraph.h"
64 #include "FormRef.h"
65 #include "FormTabular.h"
66 #include "FormTexinfo.h"
67 #include "FormShowFile.h"
68 #include "FormTabularCreate.h"
69 #include "FormText.h"
70 #include "FormToc.h"
71 #include "FormUrl.h"
72 #include "FormVCLog.h"
73 #include "FormWrap.h"
74
75 #ifdef HAVE_LIBAIKSAURUS
76 #include "ControlThesaurus.h"
77 #include "FormThesaurus.h"
78 #endif
79
80 #include "xformsBC.h"
81 #include "ButtonController.h"
82
83 #include "arrows.xbm"
84 #include "bop.xbm"
85 #include "brel.xbm"
86 #include "deco.xbm"
87 #include "dots.xbm"
88 #include "greek.xbm"
89 #include "misc.xbm"
90 #include "varsz.xbm"
91
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"
97
98
99
100 namespace {
101
102 FormMathsBitmap * createFormBitmap(Dialog & parent, string const & title,
103                                    char const * const * data, int size)
104 {
105         char const * const * const end = data + size;
106         return new FormMathsBitmap(parent, title, std::vector<string>(data, end));
107 }
108
109
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",
118
119 #ifdef HAVE_LIBAIKSAURUS
120 "thesaurus",
121 #endif
122
123 "toc", "url", "vclog", "wrap" };
124
125 char const * const * const end_dialognames =
126         dialognames + (sizeof(dialognames) / sizeof(char *));
127
128 struct cmpCStr {
129         cmpCStr(char const * name) : name_(name) {}
130         bool operator()(char const * other) {
131                 return strcmp(other, name_) == 0;
132         }
133 private:
134         char const * name_;
135 };
136
137 } // namespace anon
138
139
140 bool Dialogs::isValidName(string const & name) const
141 {
142         return std::find_if(dialognames, end_dialognames,
143                             cmpCStr(name.c_str())) != end_dialognames;
144 }
145
146
147 Dialog * Dialogs::build(string const & name)
148 {
149         if (!isValidName(name))
150                 return 0;
151
152         Dialog * dialog = new Dialog(lyxview_, name);
153         dialog->bc().view(new xformsBC(dialog->bc()));
154
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);
221
222         } else if (name == "mathpanel") {
223                 dialog->setController(new ControlMath(*dialog));
224                 dialog->setView(new FormMathsPanel(*dialog));
225                 dialog->bc().bp(new IgnorantPolicy);
226
227         } else if (name == "mathaccents") {
228                 FormMathsBitmap * bitmap =
229                         createFormBitmap(*dialog, _("Maths Decorations & Accents"),
230                                          latex_deco, nr_latex_deco);
231                 bitmap->addBitmap(
232                         BitmapStore(12, 3, 4, deco1_width, deco1_height, deco1_bits, true));
233                 bitmap->addBitmap(
234                         BitmapStore(10, 4, 3, deco2_width, deco2_height, deco2_bits, true));
235
236                 dialog->setController(new ControlMath(*dialog));
237                 dialog->setView(bitmap);
238                 dialog->bc().bp(new IgnorantPolicy);
239
240         } else if (name == "matharrows") {
241                 FormMathsBitmap * bitmap =
242                         createFormBitmap(*dialog, _("Arrows"), latex_arrow, nr_latex_arrow);
243                 bitmap->addBitmap(
244                         BitmapStore(20, 5, 4, arrow_width,  arrow_height,  arrow_bits, true));
245                 bitmap->addBitmap(
246                         BitmapStore(7,  2, 4, larrow_width, larrow_height, larrow_bits, false));
247                 bitmap->addBitmap(
248                         BitmapStore(4,  2, 2, darrow_width,  darrow_height, darrow_bits, true));
249
250                 dialog->setController(new ControlMath(*dialog));
251                 dialog->setView(bitmap);
252                 dialog->bc().bp(new IgnorantPolicy);
253
254         } else if (name == "mathoperators") {
255                 FormMathsBitmap * bitmap =
256                         createFormBitmap(*dialog, _("Binary Ops"),
257                                          latex_bop, nr_latex_bop);
258                 bitmap->addBitmap(
259                         BitmapStore(31, 4, 8, bop_width, bop_height, bop_bits, true));
260
261                 dialog->setController(new ControlMath(*dialog));
262                 dialog->setView(bitmap);
263                 dialog->bc().bp(new IgnorantPolicy);
264
265         } else if (name == "mathrelations") {
266                 FormMathsBitmap * bitmap =
267                         createFormBitmap(*dialog, _("Binary Relations"),
268                                          latex_brel, nr_latex_brel);
269                 bitmap->addBitmap(
270                         BitmapStore(35, 4, 9, brel_width, brel_height, brel_bits, true));
271
272                 dialog->setController(new ControlMath(*dialog));
273                 dialog->setView(bitmap);
274                 dialog->bc().bp(new IgnorantPolicy);
275
276         } else if (name == "mathgreek") {
277                 FormMathsBitmap * bitmap =
278                         createFormBitmap(*dialog, _("Greek"),
279                                          latex_greek, nr_latex_greek);
280                 bitmap->addBitmap(
281                         BitmapStore(11, 6, 2, Greek_width, Greek_height, Greek_bits, true));
282                 bitmap->addBitmap(
283                         BitmapStore(28, 7, 4, greek_width, greek_height, greek_bits, true));
284
285                 dialog->setController(new ControlMath(*dialog));
286                 dialog->setView(bitmap);
287                 dialog->bc().bp(new IgnorantPolicy);
288
289         } else if (name == "mathmisc") {
290                 FormMathsBitmap * bitmap =
291                         createFormBitmap(*dialog, _("Misc"),
292                                          latex_misc, nr_latex_misc);
293                 bitmap->addBitmap(
294                         BitmapStore(29, 5, 6, misc_width, misc_height, misc_bits, true));
295                 bitmap->addBitmap(
296                         BitmapStore(5, 5, 1, misc4_width, misc4_height, misc4_bits, true));
297                 bitmap->addBitmap(
298                         BitmapStore(6, 3, 2, misc2_width, misc2_height, misc2_bits, false));
299                 bitmap->addBitmap(
300                         BitmapStore(4, 2, 2, misc3_width, misc3_height, misc3_bits, true));
301
302                 dialog->setController(new ControlMath(*dialog));
303                 dialog->setView(bitmap);
304                 dialog->bc().bp(new IgnorantPolicy);
305
306         } else if (name == "mathdots") {
307                 FormMathsBitmap * bitmap =
308                         createFormBitmap(*dialog, _("Dots"),
309                                          latex_dots, nr_latex_dots);
310                 bitmap->addBitmap(
311                         BitmapStore(4, 4, 1, dots_width, dots_height, dots_bits, true));
312
313                 dialog->setController(new ControlMath(*dialog));
314                 dialog->setView(bitmap);
315                 dialog->bc().bp(new IgnorantPolicy);
316
317         } else if (name == "mathbigoperators") {
318                 FormMathsBitmap * bitmap =
319                         createFormBitmap(*dialog, _("Big Operators"),
320                                          latex_varsz, nr_latex_varsz);
321                 bitmap->addBitmap(
322                         BitmapStore(14, 3, 5, varsz_width, varsz_height, varsz_bits, true));
323
324                 dialog->setController(new ControlMath(*dialog));
325                 dialog->setView(bitmap);
326                 dialog->bc().bp(new IgnorantPolicy);
327
328         } else if (name == "mathamsmisc") {
329                 FormMathsBitmap * bitmap =
330                         createFormBitmap(*dialog, _("AMS Misc"),
331                                          latex_ams_misc, nr_latex_ams_misc);
332                 bitmap->addBitmap(
333                         BitmapStore(9, 5, 2, ams1_width, ams1_height, ams1_bits, true));
334                 bitmap->addBitmap(
335                         BitmapStore(26, 3, 9, ams7_width, ams7_height, ams7_bits, true));
336
337                 dialog->setController(new ControlMath(*dialog));
338                 dialog->setView(bitmap);
339                 dialog->bc().bp(new IgnorantPolicy);
340
341         } else if (name == "mathamsarrows") {
342                 FormMathsBitmap * bitmap =
343                         createFormBitmap(*dialog, _("AMS Arrows"),
344                                          latex_ams_arrows, nr_latex_ams_arrows);
345                 bitmap->addBitmap(
346                         BitmapStore(32, 3, 11, ams2_width, ams2_height, ams2_bits, true));
347                 bitmap->addBitmap(
348                         BitmapStore(6, 3, 2, ams3_width, ams3_height, ams3_bits, true));
349
350                 dialog->setController(new ControlMath(*dialog));
351                 dialog->setView(bitmap);
352                 dialog->bc().bp(new IgnorantPolicy);
353
354         } else if (name == "mathamsrelations") {
355                 FormMathsBitmap * bitmap =
356                         createFormBitmap(*dialog, _("AMS Relations"),
357                                          latex_ams_rel, nr_latex_ams_rel);
358                 bitmap->addBitmap(
359                         BitmapStore(66, 6, 11, ams_rel_width, ams_rel_height, ams_rel_bits, true));
360
361                 dialog->setController(new ControlMath(*dialog));
362                 dialog->setView(bitmap);
363                 dialog->bc().bp(new IgnorantPolicy);
364
365         } else if (name == "mathamsnegatedrelations") {
366                 FormMathsBitmap * bitmap =
367                         createFormBitmap(*dialog, _("AMS Negated Rel"),
368                                          latex_ams_nrel, nr_latex_ams_nrel);
369                 bitmap->addBitmap(
370                         BitmapStore(51, 6, 9, ams_nrel_width, ams_nrel_height, ams_nrel_bits, true));
371
372                 dialog->setController(new ControlMath(*dialog));
373                 dialog->setView(bitmap);
374                 dialog->bc().bp(new IgnorantPolicy);
375
376         } else if (name == "mathamsoperators") {
377                 FormMathsBitmap * bitmap =
378                         createFormBitmap(*dialog, _("AMS Operators"),
379                                          latex_ams_ops, nr_latex_ams_ops);
380                 bitmap->addBitmap(
381                         BitmapStore(23, 3, 8, ams_ops_width, ams_ops_height, ams_ops_bits, true));
382
383                 dialog->setController(new ControlMath(*dialog));
384                 dialog->setView(bitmap);
385                 dialog->bc().bp(new IgnorantPolicy);
386
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);
440 #endif
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);
457         }
458
459         return dialog;
460 }
461
462
463 void Dialogs::toggleTooltips()
464 {
465         Tooltips::toggleEnabled();
466 }
467
468
469 /// Are the tooltips on or off?
470 bool Dialogs::tooltipsEnabled()
471 {
472         return Tooltips::enabled();
473 }