4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
8 * Full author contact details are available in file CREDITS.
14 #include <boost/utility.hpp>
15 #include <boost/signals/signal0.hpp>
16 #include <boost/signals/signal1.hpp>
22 /** Container of all dialogs and signals a LyXView needs or uses to access them
23 The list of dialog signals isn't comprehensive but should be a good guide
24 for any future additions. Remember don't go overboard -- think minimal.
26 class Dialogs : boost::noncopyable
34 /** Redraw all visible dialogs because, for example, the GUI colours
35 * have been re-mapped.
37 * Note that static boost signals break some compilers, so we return a
38 * reference to some hidden magic ;-)
40 static boost::signal0<void> & redrawGUI();
42 /// Toggle tooltips on/off in all dialogs.
43 static void toggleTooltips();
45 /// Are the tooltips on or off?
46 static bool tooltipsEnabled();
48 /// Signals slated to go
50 boost::signal0<void> hideAllSignal;
51 boost::signal0<void> hideBufferDependentSignal;
52 boost::signal1<void, bool> updateBufferDependentSignal;
55 /// Hide all visible dialogs
57 /// Hide any dialogs that require a buffer for them to operate
58 void hideBufferDependent() const;
59 /** Update visible, buffer-dependent dialogs
60 If the bool is true then a buffer change has occurred
61 else its still the same buffer.
63 void updateBufferDependent(bool) const ;
65 /** \param name == "about" etc; an identifier used to
66 launch a particular dialog.
67 \param data is a string encoding of the data used to populate
68 the dialog. Several of these dialogs do not need any data,
69 so it defaults to string().
71 void show(std::string const & name, std::string const & data = std::string());
73 /** \param name == "bibtex", "citation" etc; an identifier used to
74 launch a particular dialog.
75 \param data is a string representation of the Inset contents.
76 It is often little more than the output from Inset::write.
77 It is passed to, and parsed by, the frontend dialog.
78 \param inset is _not_ passed to the frontend dialog.
79 It is stored internally and used by the kernel to ascertain
80 what to do with the FuncRequest dispatched from the frontend
81 dialog on 'Apply'; should it be used to create a new inset at
82 the current cursor position or modify an existing, 'open' inset?
84 void show(std::string const & name, std::string const & data, InsetBase * inset);
86 /** \param name == "citation", "bibtex" etc; an identifier used
87 to update the contents of a particular dialog with \param data .
88 See the comments to 'show', above.
90 void update(std::string const & name, std::string const & data);
92 /// is the dialog currently visible?
93 bool visible(std::string const & name) const;
95 /** All Dialogs of the given \param name will be closed if they are
96 connected to the given \param inset.
98 static void hide(std::string const & name, InsetBase * inset);
100 void disconnect(std::string const & name);
102 InsetBase * getOpenInset(std::string const & name) const;
105 void hideSlot(std::string const & name, InsetBase * inset);
109 bool isValidName(std::string const & name) const;
111 Dialog * find_or_build(std::string const & name);
113 typedef boost::shared_ptr<Dialog> DialogPtr;
115 DialogPtr build(std::string const & name);
120 std::map<std::string, InsetBase *> open_insets_;
123 std::map<std::string, DialogPtr> dialogs_;
125 /// the stuff below is slated to go...