]> git.lyx.org Git - lyx.git/blob - src/frontends/Dialogs.h
Remove the Forks dialog.
[lyx.git] / src / frontends / Dialogs.h
1 // -*- C++ -*-
2 /**
3  * \file Dialogs.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  * \author Allan Rae
7  *
8  * Full author contact details are available in file CREDITS.
9  */
10
11 #ifndef DIALOGS_H
12 #define DIALOGS_H
13
14 #include <boost/utility.hpp>
15 #include <boost/signals/signal0.hpp>
16 #include <boost/signals/signal1.hpp>
17
18 class Dialog;
19 class InsetBase;
20 class LyXView;
21
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.
25  */
26 class Dialogs : boost::noncopyable
27 {
28 public:
29         ///
30         Dialogs(LyXView &);
31         ///
32         ~Dialogs();
33
34         /** Redraw all visible dialogs because, for example, the GUI colours
35          *  have been re-mapped.
36          *
37          *  Note that static boost signals break some compilers, so we return a
38          *  reference to some hidden magic ;-)
39          */
40         static boost::signal0<void> & redrawGUI();
41
42         /// Toggle tooltips on/off in all dialogs.
43         static void toggleTooltips();
44
45         /// Are the tooltips on or off?
46         static bool tooltipsEnabled();
47
48         /// Signals slated to go
49         //@{
50         boost::signal0<void> hideAllSignal;
51         boost::signal0<void> hideBufferDependentSignal;
52         boost::signal1<void, bool> updateBufferDependentSignal;
53         //@}
54
55         /// Hide all visible dialogs
56         void hideAll() const;
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.
62          */
63         void updateBufferDependent(bool) const ;
64
65         /**@name Dialog Access Signals.
66            Put into some sort of alphabetical order */
67         //@{
68         ///
69         void showDocument();
70         ///
71         void showPreamble();
72         ///
73         void showPreferences();
74         ///
75         void showPrint();
76         ///
77         void showSendto();
78         /// bring up the spellchecker
79         void showSpellchecker();
80         //@}
81
82         /** \param name == "about" etc; an identifier used to
83             launch a particular dialog.
84             \param data is a string encoding of the data used to populate
85             the dialog. Several of these dialogs do not need any data,
86             so it defaults to string().
87         */
88         void show(std::string const & name, std::string const & data = std::string());
89
90         /** \param name == "bibtex", "citation" etc; an identifier used to
91             launch a particular dialog.
92             \param data is a string representation of the Inset contents.
93             It is often little more than the output from Inset::write.
94             It is passed to, and parsed by, the frontend dialog.
95             \param inset is _not_ passed to the frontend dialog.
96             It is stored internally and used by the kernel to ascertain
97             what to do with the FuncRequest dispatched from the frontend
98             dialog on 'Apply'; should it be used to create a new inset at
99             the current cursor position or modify an existing, 'open' inset?
100         */
101         void show(std::string const & name, std::string const & data, InsetBase * inset);
102
103         /** \param name == "citation", "bibtex" etc; an identifier used
104             to update the contents of a particular dialog with \param data .
105             See the comments to 'show', above.
106         */
107         void update(std::string const & name, std::string const & data);
108
109         /// is the dialog currently visible?
110         bool visible(std::string const & name) const;
111
112         /** All Dialogs of the given \param name will be closed if they are
113             connected to the given \param inset.
114         */
115         static void hide(std::string const & name, InsetBase * inset);
116         ///
117         void disconnect(std::string const & name);
118         ///
119         InsetBase * getOpenInset(std::string const & name) const;
120 private:
121         ///
122         void hideSlot(std::string const & name, InsetBase * inset);
123         ///
124         void redraw() const;
125         ///
126         bool isValidName(std::string const & name) const;
127         ///
128         Dialog * find_or_build(std::string const & name);
129         ///
130         Dialog * build(std::string const & name);
131
132         ///
133         LyXView & lyxview_;
134         ///
135         std::map<std::string, InsetBase *> open_insets_;
136
137         ///
138         typedef boost::shared_ptr<Dialog> DialogPtr;
139         ///
140         std::map<std::string, DialogPtr> dialogs_;
141
142         /// the stuff below is slated to go...
143         void init_pimpl();
144         ///
145         class Impl;
146         ///
147         Impl * pimpl_;
148 };
149
150 #endif