diff options
Diffstat (limited to 'src/Basemenu.hh')
-rw-r--r-- | src/Basemenu.hh | 274 |
1 files changed, 137 insertions, 137 deletions
diff --git a/src/Basemenu.hh b/src/Basemenu.hh index 7a94c72..e14dd01 100644 --- a/src/Basemenu.hh +++ b/src/Basemenu.hh | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Basemenu.hh,v 1.19 2002/11/26 16:06:36 fluxgen Exp $ | 25 | // $Id: Basemenu.hh,v 1.20 2002/12/01 13:41:54 rathnor Exp $ |
26 | 26 | ||
27 | #ifndef BASEMENU_HH | 27 | #ifndef BASEMENU_HH |
28 | #define BASEMENU_HH | 28 | #define BASEMENU_HH |
@@ -37,122 +37,122 @@ class Fluxbox; | |||
37 | class BImageControl; | 37 | class BImageControl; |
38 | class BScreen; | 38 | class BScreen; |
39 | /** | 39 | /** |
40 | Base class for menus | 40 | Base class for menus |
41 | */ | 41 | */ |
42 | class Basemenu { | 42 | class Basemenu { |
43 | public: | 43 | public: |
44 | enum Alignment{ ALIGNDONTCARE = 1, ALIGNTOP, ALIGNBOTTOM }; | 44 | enum Alignment{ ALIGNDONTCARE = 1, ALIGNTOP, ALIGNBOTTOM }; |
45 | enum { RIGHT = 1, LEFT }; | 45 | enum { RIGHT = 1, LEFT }; |
46 | 46 | ||
47 | /** | 47 | /** |
48 | Bullet type | 48 | Bullet type |
49 | */ | 49 | */ |
50 | enum { EMPTY = 0, SQUARE, TRIANGLE, DIAMOND }; | 50 | enum { EMPTY = 0, SQUARE, TRIANGLE, DIAMOND }; |
51 | 51 | ||
52 | explicit Basemenu(BScreen *screen); | 52 | explicit Basemenu(BScreen *screen); |
53 | virtual ~Basemenu(); | 53 | virtual ~Basemenu(); |
54 | 54 | ||
55 | /** | 55 | /** |
56 | @name manipulators | 56 | @name manipulators |
57 | */ | 57 | */ |
58 | //@{ | 58 | //@{ |
59 | int insert(const char *label, int function= 0, const char *exec = 0, int pos = -1); | 59 | int insert(const char *label, int function= 0, const char *exec = 0, int pos = -1); |
60 | int insert(const char *label, Basemenu *submenu, int pos= -1); | 60 | int insert(const char *label, Basemenu *submenu, int pos= -1); |
61 | int remove(unsigned int item); | 61 | int remove(unsigned int item); |
62 | inline void setInternalMenu() { internal_menu = true; } | 62 | inline void setInternalMenu() { internal_menu = true; } |
63 | inline void setAlignment(Alignment a) { m_alignment = a; } | 63 | inline void setAlignment(Alignment a) { m_alignment = a; } |
64 | inline void setTorn() { torn = true; } | 64 | inline void setTorn() { torn = true; } |
65 | inline void removeParent() { if (internal_menu) m_parent = 0; } | 65 | inline void removeParent() { if (internal_menu) m_parent = 0; } |
66 | void raise(); | 66 | void raise(); |
67 | void lower(); | 67 | void lower(); |
68 | /** | 68 | /** |
69 | @name event handlers | 69 | @name event handlers |
70 | */ | 70 | */ |
71 | //@{ | 71 | //@{ |
72 | void buttonPressEvent(XButtonEvent *bp); | 72 | void buttonPressEvent(XButtonEvent *bp); |
73 | void buttonReleaseEvent(XButtonEvent *br); | 73 | void buttonReleaseEvent(XButtonEvent *br); |
74 | void motionNotifyEvent(XMotionEvent *mn); | 74 | void motionNotifyEvent(XMotionEvent *mn); |
75 | void enterNotifyEvent(XCrossingEvent *en); | 75 | void enterNotifyEvent(XCrossingEvent *en); |
76 | void leaveNotifyEvent(XCrossingEvent *ce); | 76 | void leaveNotifyEvent(XCrossingEvent *ce); |
77 | void exposeEvent(XExposeEvent *ee); | 77 | void exposeEvent(XExposeEvent *ee); |
78 | //@} | 78 | //@} |
79 | 79 | ||
80 | void reconfigure(); | 80 | void reconfigure(); |
81 | /// set label string | 81 | /// set label string |
82 | void setLabel(const char *labelstr); | 82 | void setLabel(const char *labelstr); |
83 | /// move menu to x,y | 83 | /// move menu to x,y |
84 | void move(int x, int y); | 84 | void move(int x, int y); |
85 | void update(); | 85 | void update(); |
86 | void setItemSelected(unsigned int index, bool val); | 86 | void setItemSelected(unsigned int index, bool val); |
87 | void setItemEnabled(unsigned int index, bool val); | 87 | void setItemEnabled(unsigned int index, bool val); |
88 | virtual void drawSubmenu(unsigned int index); | 88 | virtual void drawSubmenu(unsigned int index); |
89 | virtual void show(); | 89 | virtual void show(); |
90 | virtual void hide(); | 90 | virtual void hide(); |
91 | /*@}*/ | 91 | /*@}*/ |
92 | 92 | ||
93 | /** | 93 | /** |
94 | @name accessors | 94 | @name accessors |
95 | */ | 95 | */ |
96 | //@{ | 96 | //@{ |
97 | bool isTorn() const { return torn; } | 97 | bool isTorn() const { return torn; } |
98 | bool isVisible() const { return visible; } | 98 | bool isVisible() const { return visible; } |
99 | const BScreen *screen() const { return m_screen; } | 99 | const BScreen *screen() const { return m_screen; } |
100 | BScreen *screen() { return m_screen; } | 100 | BScreen *screen() { return m_screen; } |
101 | Window windowID() const { return menu.window; } | 101 | Window windowID() const { return menu.window; } |
102 | const std::string &label() const { return menu.label; } | 102 | const std::string &label() const { return menu.label; } |
103 | int x() const { return menu.x; } | 103 | int x() const { return menu.x; } |
104 | int y() const { return menu.y; } | 104 | int y() const { return menu.y; } |
105 | unsigned int width() const { return menu.width; } | 105 | unsigned int width() const { return menu.width; } |
106 | unsigned int height() const { return menu.height; } | 106 | unsigned int height() const { return menu.height; } |
107 | unsigned int numberOfItems() const { return menuitems.size(); } | 107 | unsigned int numberOfItems() const { return menuitems.size(); } |
108 | int currentSubmenu() const { return which_sub; } | 108 | int currentSubmenu() const { return which_sub; } |
109 | unsigned int titleHeight() const { return menu.title_h; } | 109 | unsigned int titleHeight() const { return menu.title_h; } |
110 | bool hasSubmenu(unsigned int index) const; | 110 | bool hasSubmenu(unsigned int index) const; |
111 | bool isItemSelected(unsigned int index) const; | 111 | bool isItemSelected(unsigned int index) const; |
112 | bool isItemEnabled(unsigned int index) const; | 112 | bool isItemEnabled(unsigned int index) const; |
113 | //@} | 113 | //@} |
114 | 114 | ||
115 | protected: | 115 | protected: |
116 | 116 | ||
117 | inline BasemenuItem *find(unsigned int index) const { return menuitems[index]; } | 117 | inline BasemenuItem *find(unsigned int index) const { return menuitems[index]; } |
118 | inline void setTitleVisibility(bool b) { title_vis = b; } | 118 | inline void setTitleVisibility(bool b) { title_vis = b; } |
119 | inline void setMovable(bool b) { movable = b; } | 119 | inline void setMovable(bool b) { movable = b; } |
120 | inline void setHideTree(bool h) { hide_tree = h; } | 120 | inline void setHideTree(bool h) { hide_tree = h; } |
121 | inline void setMinimumSublevels(int m) { menu.minsub = m; } | 121 | inline void setMinimumSublevels(int m) { menu.minsub = m; } |
122 | 122 | ||
123 | virtual void itemSelected(int button, unsigned int index) = 0; | 123 | virtual void itemSelected(int button, unsigned int index) = 0; |
124 | virtual void drawItem(unsigned int index, bool highlight= false, bool clear= false, | 124 | virtual void drawItem(unsigned int index, bool highlight= false, bool clear= false, |
125 | int x= -1, int y= -1, unsigned int width= 0, unsigned int height= 0); | 125 | int x= -1, int y= -1, unsigned int width= 0, unsigned int height= 0); |
126 | virtual void redrawTitle(); | 126 | virtual void redrawTitle(); |
127 | virtual void internal_hide(); | 127 | virtual void internal_hide(); |
128 | inline Basemenu *parent() { return m_parent; } | 128 | inline Basemenu *parent() { return m_parent; } |
129 | inline const Basemenu *parent() const { return m_parent; } | 129 | inline const Basemenu *parent() const { return m_parent; } |
130 | 130 | ||
131 | private: | 131 | private: |
132 | 132 | ||
133 | typedef std::vector<BasemenuItem *> Menuitems; | 133 | typedef std::vector<BasemenuItem *> Menuitems; |
134 | BScreen *m_screen; | 134 | BScreen *m_screen; |
135 | Display *m_display; | 135 | Display *m_display; |
136 | Basemenu *m_parent; | 136 | Basemenu *m_parent; |
137 | BImageControl *m_image_ctrl; | 137 | BImageControl *m_image_ctrl; |
138 | Menuitems menuitems; | 138 | Menuitems menuitems; |
139 | 139 | ||
140 | bool moving, visible, movable, torn, internal_menu, title_vis, shifted, | 140 | bool moving, visible, movable, torn, internal_menu, title_vis, shifted, |
141 | hide_tree; | 141 | hide_tree; |
142 | 142 | ||
143 | int which_sub, which_press, which_sbl; | 143 | int which_sub, which_press, which_sbl; |
144 | Alignment m_alignment; | 144 | Alignment m_alignment; |
145 | 145 | ||
146 | struct _menu { | 146 | struct _menu { |
147 | Pixmap frame_pixmap, title_pixmap, hilite_pixmap, sel_pixmap; | 147 | Pixmap frame_pixmap, title_pixmap, hilite_pixmap, sel_pixmap; |
148 | Window window, frame, title; | 148 | Window window, frame, title; |
149 | 149 | ||
150 | std::string label; | 150 | std::string label; |
151 | int x, y, x_move, y_move, x_shift, y_shift, sublevels, persub, minsub, | 151 | int x, y, x_move, y_move, x_shift, y_shift, sublevels, persub, minsub, |
152 | grab_x, grab_y; | 152 | grab_x, grab_y; |
153 | unsigned int width, height, title_h, frame_h, item_w, item_h, bevel_w, | 153 | unsigned int width, height, title_h, frame_h, item_w, item_h, bevel_w, |
154 | bevel_h; | 154 | bevel_h; |
155 | } menu; | 155 | } menu; |
156 | 156 | ||
157 | }; | 157 | }; |
158 | 158 | ||
@@ -161,50 +161,50 @@ private: | |||
161 | */ | 161 | */ |
162 | class BasemenuItem { | 162 | class BasemenuItem { |
163 | public: | 163 | public: |
164 | BasemenuItem( | 164 | BasemenuItem( |
165 | const char *label, | 165 | const char *label, |
166 | int function, | 166 | int function, |
167 | const char *exec = (const char *) 0) | 167 | const char *exec = (const char *) 0) |
168 | : m_label(label ? label : "") | 168 | : m_label(label ? label : "") |
169 | , m_exec(exec ? exec : "") | 169 | , m_exec(exec ? exec : "") |
170 | , m_submenu(0) | 170 | , m_submenu(0) |
171 | , m_function(function) | 171 | , m_function(function) |
172 | , m_enabled(true) | 172 | , m_enabled(true) |
173 | , m_selected(false) | 173 | , m_selected(false) |
174 | { } | 174 | { } |
175 | 175 | ||
176 | BasemenuItem(const char *label, Basemenu *submenu) | 176 | BasemenuItem(const char *label, Basemenu *submenu) |
177 | : m_label(label ? label : "") | 177 | : m_label(label ? label : "") |
178 | , m_exec("") | 178 | , m_exec("") |
179 | , m_submenu(submenu) | 179 | , m_submenu(submenu) |
180 | , m_function(0) | 180 | , m_function(0) |
181 | , m_enabled(true) | 181 | , m_enabled(true) |
182 | , m_selected(false) | 182 | , m_selected(false) |
183 | { } | 183 | { } |
184 | 184 | ||
185 | void setSelected(bool selected) { m_selected = selected; } | 185 | void setSelected(bool selected) { m_selected = selected; } |
186 | void setEnabled(bool enabled) { m_enabled = enabled; } | 186 | void setEnabled(bool enabled) { m_enabled = enabled; } |
187 | Basemenu *submenu() { return m_submenu; } | 187 | Basemenu *submenu() { return m_submenu; } |
188 | /** | 188 | /** |
189 | @name accessors | 189 | @name accessors |
190 | */ | 190 | */ |
191 | //@{ | 191 | //@{ |
192 | const std::string &exec() const { return m_exec; } | 192 | const std::string &exec() const { return m_exec; } |
193 | const std::string &label() const { return m_label; } | 193 | const std::string &label() const { return m_label; } |
194 | int function() const { return m_function; } | 194 | int function() const { return m_function; } |
195 | const Basemenu *submenu() const { return m_submenu; } | 195 | const Basemenu *submenu() const { return m_submenu; } |
196 | bool isEnabled() const { return m_enabled; } | 196 | bool isEnabled() const { return m_enabled; } |
197 | bool isSelected() const { return m_selected; } | 197 | bool isSelected() const { return m_selected; } |
198 | //@} | 198 | //@} |
199 | 199 | ||
200 | private: | 200 | private: |
201 | std::string m_label; ///< label of this item | 201 | std::string m_label; ///< label of this item |
202 | std::string m_exec; ///< command string to execute | 202 | std::string m_exec; ///< command string to execute |
203 | Basemenu *m_submenu; ///< a submenu, 0 if we don't have one | 203 | Basemenu *m_submenu; ///< a submenu, 0 if we don't have one |
204 | int m_function; | 204 | int m_function; |
205 | bool m_enabled, m_selected; | 205 | bool m_enabled, m_selected; |
206 | 206 | ||
207 | friend class Basemenu; | 207 | friend class Basemenu; |
208 | }; | 208 | }; |
209 | 209 | ||
210 | 210 | ||