]> git.lyx.org Git - lyx.git/blob - src/frontends/xforms/FormMathsPanel.h
Yet more dialog tweaking from Rob.
[lyx.git] / src / frontends / xforms / FormMathsPanel.h
1 // -*- C++ -*-
2 /**
3  * \file FormMathsPanel.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  *
7  * \author Alejandro Aguilar Sierra
8  * \author John Levon
9  * \author Angus Leeming 
10  *
11  * Full author contact details are available in file CREDITS
12  */
13
14 #ifndef FORM_MATHSPANEL_H
15 #define FORM_MATHSPANEL_H
16
17 #include "commandtags.h"
18
19 #ifdef __GNUG__
20 #pragma interface
21 #endif
22
23 #include "MathsCallbacks.h"
24 #include "FormBaseDeprecated.h"
25
26 #include <boost/scoped_ptr.hpp>
27
28 class FormMathsBitmap;
29 class FormMathsDeco;
30 class FormMathsDelim;
31 class FormMathsMatrix;
32 class FormMathsSpace;
33 class FormMathsStyle;
34 class FormMathsSub;
35 struct FD_maths_panel;
36
37 /**
38  * This class provides an XForms implementation of the maths panel.
39  */
40 class FormMathsPanel : public FormBaseBD {
41 public:
42         ///
43         FormMathsPanel(LyXView &, Dialogs &);
44         ///
45         void setActive(FormMathsSub *) const;
46         /// dispatch an LFUN:
47         void dispatchFunc(kb_action action) const;
48         /// dispatch a symbol insert
49         void insertSymbol(string const & sym, bool bs = true) const;
50 private:
51         /// Pointer to the actual instantiation of the ButtonController.
52         virtual xformsBC & bc();
53
54         /// Build the dialog
55         virtual void build();
56         /// input handler
57         virtual bool input(FL_OBJECT *, long);
58
59         /// Pointer to the actual instantiation of the xforms form
60         virtual FL_FORM * form() const;
61
62         // Real GUI implementation
63         boost::scoped_ptr<FD_maths_panel> dialog_;
64
65         /// send LFUN_MATH_DISPLAY
66         void mathDisplay() const;
67
68         /// Subdialogs
69         boost::scoped_ptr<FormMathsDeco>   deco_;
70         boost::scoped_ptr<FormMathsDelim>  delim_;
71         boost::scoped_ptr<FormMathsMatrix> matrix_;
72         boost::scoped_ptr<FormMathsSpace>  space_;
73         boost::scoped_ptr<FormMathsStyle>  style_;
74         boost::scoped_ptr<FormMathsBitmap> arrow_;
75         boost::scoped_ptr<FormMathsBitmap> boperator_;
76         boost::scoped_ptr<FormMathsBitmap> brelats_;
77         boost::scoped_ptr<FormMathsBitmap> greek_;
78         boost::scoped_ptr<FormMathsBitmap> misc_;
79         boost::scoped_ptr<FormMathsBitmap> dots_;
80         boost::scoped_ptr<FormMathsBitmap> varsize_;
81         boost::scoped_ptr<FormMathsBitmap> ams_misc_;
82         boost::scoped_ptr<FormMathsBitmap> ams_arrows_;
83         boost::scoped_ptr<FormMathsBitmap> ams_rel_;
84         boost::scoped_ptr<FormMathsBitmap> ams_nrel_;
85         boost::scoped_ptr<FormMathsBitmap> ams_ops_;
86
87         /// A pointer to the currently active subdialog
88         mutable FormMathsSub * active_;
89
90         /// The ButtonController
91         ButtonController<OkCancelReadOnlyPolicy, xformsBC> bc_;
92 };
93
94
95 class FormMathsSub : public FormBaseBD {
96         friend class FormMathsPanel; // has subdialogs to manipulate
97
98 public:
99         ///
100         FormMathsSub(LyXView &, Dialogs &, FormMathsPanel const &,
101                      string const &, bool allowResize = true);
102
103 protected:
104         /// Pointer to the actual instantiation of the ButtonController.
105         virtual xformsBC & bc();
106         /// The parent Maths Panel
107         FormMathsPanel const & parent_;
108 private:
109         ///
110         virtual void connect();
111         ///
112         virtual void disconnect();
113         /// The ButtonController
114         ButtonController<IgnorantPolicy, xformsBC> bc_;
115 };
116
117
118 inline
119 xformsBC & FormMathsSub::bc()
120 {
121         return bc_;
122 }
123
124 inline
125 xformsBC & FormMathsPanel::bc()
126 {
127         return bc_;
128 }
129 #endif //  FORM_MATHSPANEL_H