]> git.lyx.org Git - lyx.git/blob - src/frontends/qt4/Dialogs.cpp
move LaTeXHighlighte
[lyx.git] / src / frontends / qt4 / Dialogs.cpp
1 /**
2  * \file qt4/Dialogs.cpp
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 #include "GuiDialog.h"
15
16 #include "ButtonController.h"
17 #include "DialogView.h"
18 #include "DockView.h"
19 #include "GuiBibitem.h"
20 #include "GuiDelimiter.h"
21 #include "GuiDocument.h"
22 #include "GuiExternal.h"
23 #include "GuiGraphics.h"
24 #include "GuiIndex.h"
25 #include "GuiMathMatrix.h"
26 #include "GuiNomencl.h"
27 #include "GuiParagraph.h"
28 #include "GuiPrefs.h"
29 #include "GuiPrint.h"
30 #include "GuiSearch.h"
31 #include "GuiSendto.h"
32 #include "GuiShowFile.h"
33 #include "GuiSpellchecker.h"
34 #include "GuiToc.h"
35 #include "GuiView.h"
36 #include "TocWidget.h"
37 #include "GuiURL.h"
38
39 #ifdef HAVE_LIBAIKSAURUS
40 #include "ControlThesaurus.h"
41 #include "GuiThesaurus.h"
42 #endif
43
44 // Uncomment this if you prefer dock widget
45 //#define USE_DOCK_WIDGET
46
47 #include "qt_helpers.h"
48
49 #include <boost/assert.hpp>
50
51 using std::string;
52
53 namespace lyx {
54 namespace frontend {
55
56 namespace {
57
58 // This list should be kept in sync with the list of insets in
59 // src/insets/Inset.cpp.  I.e., if a dialog goes with an inset, the
60 // dialog should have the same name as the inset.
61
62 char const * const dialognames[] = {
63 "aboutlyx", "bibitem", "bibtex", "box", "branch", "changes", "character",
64 "citation", "document", "embedding", "errorlist", "ert", "external", "file",
65 "findreplace", "float", "graphics", "include", "index", "nomenclature", "label", "log",
66 "mathdelimiter", "mathmatrix", "note", "paragraph",
67 "prefs", "print", "ref", "sendto", "spellchecker","tabular", "tabularcreate",
68
69 #ifdef HAVE_LIBAIKSAURUS
70 "thesaurus",
71 #endif
72
73 "texinfo", "toc", "url", "view-source", "vspace", "wrap", "listings" };
74
75 char const * const * const end_dialognames =
76         dialognames + (sizeof(dialognames) / sizeof(char *));
77
78 class cmpCStr {
79 public:
80         cmpCStr(char const * name) : name_(name) {}
81         bool operator()(char const * other) {
82                 return strcmp(other, name_) == 0;
83         }
84 private:
85         char const * name_;
86 };
87
88
89 } // namespace anon
90
91 // will be replaced by a proper factory...
92 Dialog * createGuiAbout(LyXView & lv);
93 Dialog * createGuiBibitem(LyXView & lv);
94 Dialog * createGuiBibtex(LyXView & lv);
95 Dialog * createGuiBox(LyXView & lv);
96 Dialog * createGuiBranch(LyXView & lv);
97 Dialog * createGuiChanges(LyXView & lv);
98 Dialog * createGuiCharacter(LyXView & lv);
99 Dialog * createGuiCitation(LyXView & lv);
100 Dialog * createGuiDelimiter(LyXView & lv);
101 Dialog * createGuiDocument(LyXView & lv);
102 Dialog * createGuiEmbeddedFiles(LyXView & lv);
103 Dialog * createGuiErrorList(LyXView & lv);
104 Dialog * createGuiERT(LyXView & lv);
105 Dialog * createGuiExternal(LyXView & lv);
106 Dialog * createGuiFloat(LyXView & lv);
107 Dialog * createGuiGraphics(LyXView & lv);
108 Dialog * createGuiInclude(LyXView & lv);
109 Dialog * createGuiIndex(LyXView & lv);
110 Dialog * createGuiLabel(LyXView & lv);
111 Dialog * createGuiListings(LyXView & lv);
112 Dialog * createGuiLog(LyXView & lv);
113 Dialog * createGuiMathMatrix(LyXView & lv);
114 Dialog * createGuiNomencl(LyXView & lv);
115 Dialog * createGuiNote(LyXView & lv);
116 Dialog * createGuiPrefs(LyXView & lv);
117 Dialog * createGuiPrint(LyXView & lv);
118 Dialog * createGuiRef(LyXView & lv);
119 Dialog * createGuiSearch(LyXView & lv);
120 Dialog * createGuiSendto(LyXView & lv);
121 Dialog * createGuiShowFile(LyXView & lv);
122 Dialog * createGuiSpellchecker(LyXView & lv);
123 Dialog * createGuiTabularCreate(LyXView & lv);
124 Dialog * createGuiTabular(LyXView & lv);
125 Dialog * createGuiTexInfo(LyXView & lv);
126 Dialog * createGuiThesaurus(LyXView & lv);
127 Dialog * createGuiURL(LyXView & lv);
128 Dialog * createGuiVSpace(LyXView & lv);
129 Dialog * createGuiViewSource(LyXView & lv);
130 Dialog * createGuiWrap(LyXView & lv);
131
132
133 bool Dialogs::isValidName(string const & name) const
134 {
135         return std::find_if(dialognames, end_dialognames,
136                             cmpCStr(name.c_str())) != end_dialognames;
137 }
138
139
140 Dialog * Dialogs::build(string const & name)
141 {
142         BOOST_ASSERT(isValidName(name));
143
144         Dialog * dialog = 0;
145         GuiViewBase & guiview = static_cast<GuiViewBase &>(lyxview_);
146
147         if (name == "aboutlyx") {
148                 dialog = createGuiAbout(lyxview_);
149         } else if (name == "bibitem") {
150                 dialog = new GuiBibitemDialog(lyxview_);
151         } else if (name == "bibtex") {
152                 dialog = createGuiBibtex(lyxview_);
153         } else if (name == "box") {
154                 dialog = createGuiBox(lyxview_);
155         } else if (name == "branch") {
156                 dialog = createGuiBranch(lyxview_);
157         } else if (name == "changes") {
158                 dialog = createGuiChanges(lyxview_);
159         } else if (name == "character") {
160                 dialog = createGuiCharacter(lyxview_);
161         } else if (name == "citation") {
162                 dialog = createGuiCitation(lyxview_);
163         } else if (name == "document") {
164                 dialog = new GuiDocumentDialog(lyxview_);
165         } else if (name == "embedding") {
166                 dialog = createGuiEmbeddedFiles(lyxview_);
167         } else if (name == "errorlist") {
168                 dialog = createGuiErrorList(lyxview_);
169         } else if (name == "ert") {
170                 dialog = createGuiERT(lyxview_);
171         } else if (name == "external") {
172                 dialog = new GuiExternalDialog(lyxview_);
173         } else if (name == "file") {
174                 dialog = createGuiShowFile(lyxview_);
175         } else if (name == "findreplace") {
176                 dialog = new GuiSearchDialog(lyxview_);
177         } else if (name == "float") {
178                 dialog = createGuiFloat(lyxview_);
179         } else if (name == "graphics") {
180                 dialog = new GuiGraphicsDialog(lyxview_);
181         } else if (name == "include") {
182                 dialog = createGuiInclude(lyxview_);
183         } else if (name == "index") {
184                 dialog = new GuiIndexDialog(lyxview_);
185         } else if (name == "nomenclature") {
186                 dialog = new GuiNomenclDialog(lyxview_);
187         } else if (name == "label") {
188                 dialog = new GuiLabelDialog(lyxview_);
189         } else if (name == "log") {
190                 dialog = createGuiLog(lyxview_);
191         } else if (name == "view-source") {
192                 dialog = createGuiViewSource(lyxview_);
193         } else if (name == "mathdelimiter") {
194                 dialog = new GuiDelimiterDialog(lyxview_);
195         } else if (name == "mathmatrix") {
196                 dialog = new GuiMathMatrixDialog(lyxview_);
197         } else if (name == "note") {
198                 dialog = createGuiNote(lyxview_);
199         } else if (name == "paragraph") {
200 #ifdef USE_DOCK_WIDGET
201                 DockView<ControlParagraph, GuiParagraph> * dv =
202                         new DockView<ControlParagraph, GuiParagraph>(guiview, name,
203                                 Qt::TopDockWidgetArea);
204 #else
205                 DialogView<ControlParagraph, GuiParagraph> * dv =
206                         new DialogView<ControlParagraph, GuiParagraph>(guiview, name);
207 #endif
208                 dialog = dv;
209         } else if (name == "prefs") {
210                 dialog = new GuiPrefsDialog(lyxview_);
211         } else if (name == "print") {
212                 dialog = new GuiPrintDialog(lyxview_);
213         } else if (name == "ref") {
214                 dialog = createGuiRef(lyxview_);
215         } else if (name == "sendto") {
216                 dialog = new GuiSendtoDialog(lyxview_);
217         } else if (name == "spellchecker") {
218                 dialog = new GuiSpellcheckerDialog(lyxview_);
219         } else if (name == "tabular") {
220                 dialog = createGuiTabular(lyxview_);
221         } else if (name == "tabularcreate") {
222                 dialog = createGuiTabularCreate(lyxview_);
223         } else if (name == "texinfo") {
224                 dialog = createGuiTexInfo(lyxview_);
225 #ifdef HAVE_LIBAIKSAURUS
226         } else if (name == "thesaurus") {
227                 dialog = new GuiThesaurusDialog(lyxview_);
228 #endif
229         } else if (name == "toc") {
230 #ifdef Q_WS_MACX
231                 // On Mac show as a drawer at the right
232                 dialog = new DockView<GuiToc, TocWidget>(guiview, name,
233                         Qt::RightDockWidgetArea, Qt::Drawer);
234 #else
235                 dialog = new DockView<GuiToc, TocWidget>(guiview, name);
236 #endif
237         } else if (name == "url") {
238                 dialog = new GuiURLDialog(lyxview_);
239         } else if (name == "vspace") {
240                 dialog = createGuiVSpace(lyxview_);
241         } else if (name == "wrap") {
242                 dialog = createGuiWrap(lyxview_);
243         } else if (name == "listings") {
244                 dialog = createGuiListings(lyxview_);
245         }
246
247         return dialog;
248 }
249
250
251 /// Are the tooltips on or off?
252 bool Dialogs::tooltipsEnabled()
253 {
254         return false;
255 }
256
257 } // namespace frontend
258 } // namespace lyx