3 * Container of all dialogs and signals a LyXView needs or uses to access them.
4 * Author: Allan Rae <rae@lyx.org>
6 * ======================================================
8 * LyX, The Document Processor
10 * Copyright 1995 Matthias Ettrich
11 * Copyright 1995-2000 The LyX Team.
13 * This file Copyright 2000
15 * ======================================================
22 #include <sigc++/signal_system.h>
25 #include <boost/utility.hpp>
26 #include <boost/smart_ptr.hpp>
32 #include "DialogBase.h"
33 #include "support/LAssert.h"
35 // Maybe this should be a UIFunc modelled on LyXFunc
49 /** Container of all dialogs and signals a LyXView needs or uses to access them
50 The list of dialog signals isn't comprehensive but should be a good guide
51 for any future additions. Remember don't go overboard -- think minimal.
53 class Dialogs : public boost::noncopyable
57 typedef boost::shared_ptr<DialogBase> db_ptr;
58 /**@name Constructor */
64 /** Redraw all visible dialogs because, for example, the GUI colours
65 have been re-mapped. */
66 static SigC::Signal0<void> redrawGUI;
68 /**@name Global Hide and Update Signals */
70 /// Hide all visible dialogs
71 SigC::Signal0<void> hideAll;
73 /// Hide any dialogs that require a buffer for them to operate
74 SigC::Signal0<void> hideBufferDependent;
76 /** Update visible, buffer-dependent dialogs
77 If the bool is true then a buffer change has occurred
78 else its still the same buffer.
80 SigC::Signal1<void, bool> updateBufferDependent;
83 /**@name Dialog Access Signals.
84 Put into some sort of alphabetical order */
86 /// Do we really have to push this?
87 SigC::Signal1<void, std::vector<string> const &> SetDocumentClassChoice;
88 /// show the key and label of a bibliography entry
89 SigC::Signal1<void, InsetCommand *> showBibitem;
90 /// show the bibtex dialog
91 SigC::Signal1<void, InsetCommand *> showBibtex;
93 SigC::Signal0<void> showCharacter;
95 SigC::Signal1<void, InsetCommand *> showCitation;
97 SigC::Signal1<void, string const &> createCitation;
99 SigC::Signal0<void> showCopyright;
101 SigC::Signal0<void> showCredits;
103 SigC::Signal1<void, InsetError *> showError;
104 /// show the external inset dialog
105 SigC::Signal1<void, InsetExternal *> showExternal;
107 SigC::Signal1<void, InsetGraphics *> showGraphics;
108 /// show the details of a LyX file include inset
109 SigC::Signal1<void, InsetInclude *> showInclude;
111 SigC::Signal1<void, InsetCommand *> showIndex;
113 SigC::Signal1<void, string const &> createIndex;
115 SigC::Signal1<void, InsetInfo *> showInfo;
117 SigC::Signal0<void> showLayoutDocument;
119 SigC::Signal0<void> showLayoutParagraph;
121 SigC::Signal0<void> showLayoutCharacter;
123 SigC::Signal0<void> setUserFreeFont;
124 /// show the version control log
125 SigC::Signal0<void> showVCLogFile;
126 /// show the LaTeX log or build file
127 SigC::Signal0<void> showLogFile;
128 /// display the top-level maths panel
129 SigC::Signal0<void> showMathPanel;
131 SigC::Signal0<void> showPreamble;
133 SigC::Signal0<void> showPreferences;
135 SigC::Signal0<void> showPrint;
137 SigC::Signal1<void, InsetCommand *> showRef;
139 SigC::Signal1<void, string const &> createRef;
141 SigC::Signal0<void> showSearch;
142 /// pop up the splash
143 SigC::Signal0<void> showSplash;
144 /// destroy the splash dialog
145 void destroySplash();
147 SigC::Signal1<void, InsetTabular *> showTabular;
149 SigC::Signal1<void, InsetTabular *> updateTabular;
151 SigC::Signal0<void> showTabularCreate;
153 SigC::Signal1<void, InsetMinipage *> showMinipage;
155 SigC::Signal1<void, InsetMinipage *> updateMinipage;
157 SigC::Signal1<void, InsetCommand *> showTOC;
159 SigC::Signal1<void, string const &> createTOC;
161 SigC::Signal1<void, InsetCommand *> showUrl;
163 SigC::Signal1<void, string const &> createUrl;
165 SigC::Signal0<void> updateCharacter; // allow update as cursor moves
168 /// Add a dialog to the vector of dialogs.
169 void add(DialogBase *);
170 /// the dialogs being managed
171 std::vector<db_ptr> dialogs_;
172 /// the splash dialog
173 boost::scoped_ptr<DialogBase> splash_;
176 inline void Dialogs::add(DialogBase * ptr)
179 dialogs_.push_back(db_ptr(ptr));
182 inline void Dialogs::destroySplash()