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.
6 * \author Angus Leeming
8 * Full author contact details are available in file CREDITS.
14 #include "GuiDialog.h"
16 #include "ButtonController.h"
20 #include "GuiBibitem.h"
21 #include "GuiBibtex.h"
23 #include "GuiBranch.h"
24 #include "GuiChanges.h"
25 #include "GuiCharacter.h"
26 #include "GuiCitation.h"
27 #include "GuiDelimiter.h"
28 #include "GuiDocument.h"
29 #include "GuiEmbeddedFiles.h"
30 #include "GuiErrorList.h"
32 #include "GuiExternal.h"
34 #include "GuiGraphics.h"
35 #include "GuiInclude.h"
37 #include "GuiMathMatrix.h"
38 #include "GuiNomencl.h"
39 #include "GuiListings.h"
41 #include "GuiViewSource.h"
43 #include "GuiParagraph.h"
47 #include "GuiSearch.h"
48 #include "GuiSendto.h"
49 #include "GuiShowFile.h"
50 #include "GuiSpellchecker.h"
51 #include "GuiTabular.h"
52 #include "GuiTabularCreate.h"
53 #include "GuiTexinfo.h"
55 #include "TocWidget.h"
57 #include "GuiVSpace.h"
60 #ifdef HAVE_LIBAIKSAURUS
61 #include "ControlThesaurus.h"
62 #include "GuiThesaurus.h"
65 #include "qt_helpers.h"
67 #include <boost/assert.hpp>
76 char const * const dialognames[] = {
77 "aboutlyx", "bibitem", "bibtex", "box", "branch", "changes", "character",
78 "citation", "document", "embedding", "errorlist", "ert", "external", "file",
79 "findreplace", "float", "graphics", "include", "index", "nomenclature", "label", "log",
80 "mathdelimiter", "mathmatrix", "note", "paragraph",
81 "prefs", "print", "ref", "sendto", "spellchecker","tabular", "tabularcreate",
83 #ifdef HAVE_LIBAIKSAURUS
87 "texinfo", "toc", "url", "view-source", "vspace", "wrap", "listings" };
89 char const * const * const end_dialognames =
90 dialognames + (sizeof(dialognames) / sizeof(char *));
94 cmpCStr(char const * name) : name_(name) {}
95 bool operator()(char const * other) {
96 return strcmp(other, name_) == 0;
106 bool Dialogs::isValidName(string const & name) const
108 return std::find_if(dialognames, end_dialognames,
109 cmpCStr(name.c_str())) != end_dialognames;
113 Dialog * Dialogs::build(string const & name)
115 BOOST_ASSERT(isValidName(name));
117 GuiDialog * dialog = new GuiDialog(lyxview_, name);
119 if (name == "aboutlyx") {
120 dialog->setController(new ControlAboutlyx(*dialog));
121 dialog->setView(new GuiAbout(*dialog));
122 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
123 } else if (name == "bibitem") {
124 dialog->setController(new ControlCommand(*dialog, name, name));
125 dialog->setView(new GuiBibitem(*dialog));
126 dialog->bc().setPolicy(ButtonPolicy::OkCancelReadOnlyPolicy);
127 } else if (name == "bibtex") {
128 dialog->setController(new ControlBibtex(*dialog));
129 dialog->setView(new GuiBibtex(*dialog));
130 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
131 } else if (name == "box") {
132 dialog->setController(new ControlBox(*dialog));
133 dialog->setView(new GuiBox(*dialog));
134 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
135 } else if (name == "branch") {
136 dialog->setController(new ControlBranch(*dialog));
137 dialog->setView(new GuiBranch(*dialog));
138 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
139 } else if (name == "changes") {
140 dialog->setController(new ControlChanges(*dialog));
141 dialog->setView(new GuiChanges(*dialog));
142 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
143 } else if (name == "character") {
144 dialog->setController(new ControlCharacter(*dialog));
145 dialog->setView(new GuiCharacter(*dialog));
146 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
147 } else if (name == "citation") {
148 GuiCitation * ci = new GuiCitation(*dialog);
149 dialog->setController(ci);
150 dialog->setView(new GuiCitationDialog(*dialog, ci));
151 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
152 } else if (name == "document") {
153 dialog->setController(new ControlDocument(*dialog));
154 dialog->setView(new GuiDocument(*dialog));
155 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
156 } else if (name == "embedding") {
157 GuiViewBase & gui_view = static_cast<GuiViewBase &>(lyxview_);
158 GuiEmbeddedFiles * qef = new GuiEmbeddedFiles(*dialog);
159 dialog->setController(qef);
160 dialog->setView(new DockView<GuiEmbeddedFiles, GuiEmbeddedFilesDialog>(
161 *dialog, qef, &gui_view, _("Embedded Files"), Qt::RightDockWidgetArea));
162 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
163 } else if (name == "errorlist") {
164 dialog->setController(new ControlErrorList(*dialog));
165 dialog->setView(new GuiErrorList(*dialog));
166 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
167 } else if (name == "ert") {
168 dialog->setController(new ControlERT(*dialog));
169 dialog->setView(new GuiERT(*dialog));
170 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
171 } else if (name == "external") {
172 dialog->setController(new ControlExternal(*dialog));
173 dialog->setView(new GuiExternal(*dialog));
174 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
175 } else if (name == "file") {
176 dialog->setController(new ControlShowFile(*dialog));
177 dialog->setView(new GuiShowFile(*dialog));
178 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
179 } else if (name == "findreplace") {
180 dialog->setController(new ControlSearch(*dialog));
181 dialog->setView(new GuiSearch(*dialog));
182 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
183 } else if (name == "float") {
184 dialog->setController(new ControlFloat(*dialog));
185 dialog->setView(new GuiFloat(*dialog));
186 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
187 } else if (name == "graphics") {
188 dialog->setController(new ControlGraphics(*dialog));
189 dialog->setView(new GuiGraphics(*dialog));
190 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
191 } else if (name == "include") {
192 dialog->setController(new ControlInclude(*dialog));
193 dialog->setView(new GuiInclude(*dialog));
194 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
195 } else if (name == "index") {
196 dialog->setController(new ControlCommand(*dialog, name, name));
197 dialog->setView(new GuiIndex(*dialog,
200 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
201 } else if (name == "nomenclature") {
202 dialog->setController(new ControlCommand(*dialog, name, name));
203 dialog->setView(new GuiNomencl(*dialog, _("Nomenclature Entry")));
204 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
205 } else if (name == "label") {
206 dialog->setController(new ControlCommand(*dialog, name, name));
207 dialog->setView(new GuiIndex(*dialog,
210 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
211 } else if (name == "log") {
212 dialog->setController(new ControlLog(*dialog));
213 dialog->setView(new GuiLog(*dialog));
214 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
215 } else if (name == "view-source") {
216 GuiViewSource * qvs = new GuiViewSource(*dialog);
217 dialog->setController(qvs);
218 GuiViewBase & gui_view = static_cast<GuiViewBase &>(lyxview_);
219 dialog->setView(new DockView<GuiViewSource, GuiViewSourceDialog>(
220 *dialog, qvs, &gui_view, _("LaTeX Source"), Qt::BottomDockWidgetArea));
221 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
222 } else if (name == "mathdelimiter") {
223 dialog->setController(new ControlMath(*dialog));
224 dialog->setView(new GuiDelimiter(*dialog));
225 dialog->bc().setPolicy(ButtonPolicy::IgnorantPolicy);
226 } else if (name == "mathmatrix") {
227 dialog->setController(new ControlMath(*dialog));
228 dialog->setView(new GuiMathMatrix(*dialog));
229 dialog->bc().setPolicy(ButtonPolicy::IgnorantPolicy);
230 } else if (name == "note") {
231 dialog->setController(new ControlNote(*dialog));
232 dialog->setView(new GuiNote(*dialog));
233 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
234 } else if (name == "paragraph") {
235 dialog->setController(new ControlParagraph(*dialog));
236 dialog->setView(new GuiParagraph(*dialog));
237 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
238 } else if (name == "prefs") {
239 dialog->setController(new ControlPrefs(*dialog));
240 dialog->setView(new GuiPrefs(*dialog));
241 dialog->bc().setPolicy(ButtonPolicy::PreferencesPolicy);
242 } else if (name == "print") {
243 dialog->setController(new ControlPrint(*dialog));
244 dialog->setView(new GuiPrint(*dialog));
245 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelPolicy);
246 } else if (name == "ref") {
247 // full qualification because qt4 has also a ControlRef type
248 dialog->setController(new ControlRef(*dialog));
249 dialog->setView(new GuiRef(*dialog));
250 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
251 } else if (name == "sendto") {
252 dialog->setController(new ControlSendto(*dialog));
253 dialog->setView(new GuiSendto(*dialog));
254 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelPolicy);
255 } else if (name == "spellchecker") {
256 dialog->setController(new ControlSpellchecker(*dialog));
257 dialog->setView(new GuiSpellchecker(*dialog));
258 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
259 } else if (name == "tabular") {
260 dialog->setController(new ControlTabular(*dialog));
261 dialog->setView(new GuiTabular(*dialog));
262 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
263 } else if (name == "tabularcreate") {
264 dialog->setController(new ControlTabularCreate(*dialog));
265 dialog->setView(new GuiTabularCreate(*dialog));
266 dialog->bc().setPolicy(ButtonPolicy::IgnorantPolicy);
267 } else if (name == "texinfo") {
268 dialog->setController(new ControlTexinfo(*dialog));
269 dialog->setView(new GuiTexinfo(*dialog));
270 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
271 #ifdef HAVE_LIBAIKSAURUS
272 } else if (name == "thesaurus") {
273 dialog->setController(new ControlThesaurus(*dialog));
274 dialog->setView(new GuiThesaurus(*dialog));
275 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
277 } else if (name == "toc") {
278 GuiViewBase & gui_view = static_cast<GuiViewBase &>(lyxview_);
279 GuiToc * qtoc = new GuiToc(*dialog, &gui_view);
280 dialog->setController(qtoc);
282 // On Mac show as a drawer at the right
283 dialog->setView(new DockView<GuiToc, TocWidget>(
284 *dialog, qtoc, &gui_view, _("Outline"), Qt::RightDockWidgetArea, Qt::Drawer));
286 dialog->setView(new DockView<GuiToc, TocWidget>(
287 *dialog, qtoc, &gui_view, _("Outline")));
289 dialog->bc().setPolicy(ButtonPolicy::OkCancelPolicy);
290 } else if (name == "url") {
291 dialog->setController(new ControlCommand(*dialog, name, name));
292 dialog->setView(new UrlView(*dialog));
293 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
294 } else if (name == "vspace") {
295 dialog->setController(new ControlVSpace(*dialog));
296 dialog->setView(new GuiVSpace(*dialog));
297 dialog->bc().setPolicy(ButtonPolicy::OkApplyCancelReadOnlyPolicy);
298 } else if (name == "wrap") {
299 dialog->setController(new ControlWrap(*dialog));
300 dialog->setView(new GuiWrap(*dialog));
301 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
302 } else if (name == "listings") {
303 dialog->setController(new ControlListings(*dialog));
304 dialog->setView(new GuiListings(*dialog));
305 dialog->bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
312 /// Are the tooltips on or off?
313 bool Dialogs::tooltipsEnabled()
318 } // namespace frontend