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
48 /** Container of all dialogs and signals a LyXView needs or uses to access them
49 The list of dialog signals isn't comprehensive but should be a good guide
50 for any future additions. Remember don't go overboard -- think minimal.
52 class Dialogs : public noncopyable
56 typedef boost::shared_ptr<DialogBase> db_ptr;
57 /**@name Constructor */
63 /** Redraw all visible popups because, for example, the GUI colours
64 have been re-mapped. */
65 static SigC::Signal0<void> redrawGUI;
67 /**@name Global Hide and Update Signals */
69 /// Hide all visible popups
70 SigC::Signal0<void> hideAll;
72 /// Hide any dialogs that require a buffer for them to operate
73 SigC::Signal0<void> hideBufferDependent;
75 /** Update visible, buffer-dependent dialogs
76 If the bool is true then a buffer change has occurred
77 else its still the same buffer.
79 SigC::Signal1<void, bool> updateBufferDependent;
82 /**@name Dialog Access Signals.
83 Put into some sort of alphabetical order */
85 /// Do we really have to push this?
86 SigC::Signal1<void, std::vector<string> const &> SetDocumentClassChoice;
87 /// show the key and label of a bibliography entry
88 SigC::Signal1<void, InsetCommand *> showBibitem;
89 /// show the bibtex dialog
90 SigC::Signal1<void, InsetCommand *> showBibtex;
92 SigC::Signal0<void> showCharacter;
94 SigC::Signal1<void, InsetCommand *> showCitation;
96 SigC::Signal1<void, string const &> createCitation;
98 SigC::Signal0<void> showCopyright;
100 SigC::Signal0<void> showCredits;
102 SigC::Signal1<void, InsetError *> showError;
103 /// show the external inset dialog
104 SigC::Signal1<void, InsetExternal *> showExternal;
106 SigC::Signal1<void, InsetGraphics *> showGraphics;
107 /// show the details of a LyX file include inset
108 SigC::Signal1<void, InsetInclude *> showInclude;
110 SigC::Signal1<void, InsetCommand *> showIndex;
112 SigC::Signal1<void, string const &> createIndex;
114 SigC::Signal1<void, InsetInfo *> showInfo;
116 SigC::Signal0<void> showLayoutDocument;
118 SigC::Signal0<void> showLayoutParagraph;
120 SigC::Signal0<void> showLayoutCharacter;
122 SigC::Signal0<void> setUserFreeFont;
123 /// show the version control log
124 SigC::Signal0<void> showVCLogFile;
125 /// show the LaTeX log or build file
126 SigC::Signal0<void> showLogFile;
128 SigC::Signal0<void> showPreamble;
130 SigC::Signal0<void> showPreferences;
132 SigC::Signal0<void> showPrint;
134 SigC::Signal1<void, InsetCommand *> showRef;
136 SigC::Signal1<void, string const &> createRef;
138 SigC::Signal0<void> showSearch;
139 /// pop up the splash
140 SigC::Signal0<void> showSplash;
141 /// destroy the splash dialog
142 void destroySplash();
144 SigC::Signal1<void, InsetTabular *> showTabular;
146 SigC::Signal1<void, InsetTabular *> updateTabular;
148 SigC::Signal0<void> showTabularCreate;
150 SigC::Signal1<void, InsetCommand *> showTOC;
152 SigC::Signal1<void, string const &> createTOC;
154 SigC::Signal1<void, InsetCommand *> showUrl;
156 SigC::Signal1<void, string const &> createUrl;
158 SigC::Signal0<void> updateCharacter; // allow update as cursor moves
161 /// Add a dialog to the vector of dialogs.
162 void add(DialogBase *);
163 /// the dialogs being managed
164 std::vector<db_ptr> dialogs_;
165 /// the splash dialog
166 boost::scoped_ptr<DialogBase> splash_;
169 inline void Dialogs::add(DialogBase * ptr)
172 dialogs_.push_back(db_ptr(ptr));
175 inline void Dialogs::destroySplash()