Mercurial > otakunoraifu
comparison window/menuitem.h @ 0:223b71206888
Initial import
author | thib |
---|---|
date | Fri, 01 Aug 2008 16:32:45 +0000 |
parents | |
children | 5ae5533b3a9a |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:223b71206888 |
---|---|
1 #ifndef __MENUITEM_H__ | |
2 #define __MENUITEM_H__ | |
3 | |
4 #include"widget.h" | |
5 | |
6 #define MenuItem WidMenuItem | |
7 #define MenuRadioButton WidMenuRadioButton | |
8 #define MenuScale WidMenuScale | |
9 | |
10 // 必要なもの: | |
11 // | |
12 // ラベル:surfaceも貼れた方がよいが、まあいいや | |
13 // ラベル位置:ボタンの上、もしくは右 | |
14 // 右の場合:右中央へjustify するので、ラベル全体の幅と右マージンが必要 | |
15 // 上の場合:左下へjustify するので、左マージンと下マージンが必要 | |
16 | |
17 // 内容:x,y個数を指定、その中で中央割り当て | |
18 | |
19 // ラベル位置情報:上なら左下にjustify, 右なら右中央にjustify | |
20 // なので、下へのマージンと上へのマージン、 | |
21 // ラベル+四角ボタン(チェックボックス) | |
22 // ボタンが押されるとdeactivateされる | |
23 // | |
24 // ラジオボタン | |
25 // テキストボタンの集合体。x,y の個数を指定 | |
26 // スケール | |
27 | |
28 struct MenuItem : PicWidget { | |
29 int x_size, y_size; | |
30 int menu_width, menu_height; | |
31 int lb_width, lb_right, lb_left, lb_bottom; | |
32 PicWidget* label; | |
33 int* value_ptr; | |
34 std::vector<PicWidget*> item; | |
35 typedef std::vector<PicWidget*>::iterator iterator; | |
36 MenuItem(PicContainer* parent, const Rect& r_orig, int x_size, int y_size, int* value_ptr); | |
37 void SetLabelLeft(PicWidget* lb, const Rect& min_rect, const Rect& min_margin); | |
38 void SetLabelTop(PicWidget* lb, const Rect& left_margin, const Rect& bottom_margin); | |
39 void pack(void); | |
40 void activate(void); | |
41 void deactivate(void); | |
42 // callback | |
43 typedef void (*SetFunc)(void* pointer, MenuItem* widget); | |
44 SetFunc set_func; | |
45 void* set_pointer; | |
46 void SetValue(int new_value); | |
47 virtual void SetValueImpl(int new_value) {}; | |
48 }; | |
49 | |
50 struct RadioButton : MenuItem { | |
51 Event::Container& container; | |
52 PicContainer* parent; | |
53 int text_size; | |
54 Rect button_rect; | |
55 int buttons; | |
56 Color fore_color, pressed_color, back_color; | |
57 RadioButton(Event::Container& container, PicContainer* parent, const Rect& r_orig, int x_size, int y_size, int* value_ptr, const Rect& button_r, int text_size, const Color& fore, const Color& pressed, const Color& back); | |
58 void Add(const char* s, bool is_center = true); | |
59 void Add(const char* s, const Color& fore, const Color& pressed, const Color& back, bool is_center = true); | |
60 static void PressCallback(void* pointer, Button* from); | |
61 void SetValueImpl(int new_value); | |
62 }; | |
63 | |
64 #endif /* __MENUITEM_H__ */ |