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