Adonthell  0.4
win_container.h
1 /*
2  (C) Copyright 2000/2001 Joel Vennin
3  Part of the Adonthell Project <http://adonthell.nongnu.org>
4 
5  Adonthell is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9 
10  Adonthell is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with Adonthell. If not, see <http://www.gnu.org/licenses/>.
17 */
18 
19 #ifndef _WIN_CONTAINER_H_
20 #define _WIN_CONTAINER_H_
21 
22 #include<list>
23 #include "win_base.h"
24 
25 using namespace std;
26 
27 typedef list<win_base*> lwb;
28 
29 class win_container : public win_base
30 {
31  public:
32 
33  win_container();
34 
35  void move(s_int16, s_int16);
36 
37  void resize(u_int16, u_int16);
38 
39  virtual void add(win_base *);
40 
41  virtual void remove(win_base *);
42 
43  virtual void remove_all();
44 
45  virtual void destroy();
46 
47  virtual ~win_container();
48 
49  virtual bool update();
50 
51  virtual bool input_update();
52 
53  virtual bool draw();
54 
55  void set_visible_all(bool b);
56 
57  virtual void set_brightness(bool b);
58 
59  virtual void set_trans(bool b);
60 
61  virtual void set_space_with_border(u_int16 b){space_with_border_=b;update_layout();}
62 
63  virtual void set_space_with_object(u_int16 o){space_with_object_=o;update_layout();}
64 
65  u_int16 space_with_border(){return space_with_border_;}
66 
67  u_int16 space_with_object(){return space_with_object_;}
68 
69  void set_layout(u_int8 l){layout_=l;update_layout();}
70 
71  void set_focus_object(win_base * f);
72 
73  win_base * focus_object(){return focus_object_;}
74 
75  const static u_int8 SPACE_WITH_BORDER = 10;
76  const static u_int8 SPACE_WITH_OBJECT = 10;
77 
78  const static u_int8 LIST_LAYOUT = 1;
79  const static u_int8 NO_LAYOUT = 0;
80 
81  protected:
82 
83  void update_position();
84  void update_layout();
85 
86  u_int16 space_with_object_;
87  u_int16 space_with_border_;
88  u_int8 layout_;
89 
90  lwb list_wb_;
91 
92  win_base * focus_object_;
93 
94 };
95 
96 
97 /*
98 class win_base;
99 class win_theme;
100 
101 class win_container : public win_base
102 {
103  protected:
104  list<win_base *> list_obj;
105  u_int16 space_between_border_;
106  u_int16 space_between_object_;
107  // u_int8 justify_;
108  u_int8 layout_;
109  void update_layout();
110 
111  public:
112  win_container(s_int16 tx,s_int16 ty,u_int16 tl,u_int16 th,win_theme * wth);
113  ~win_container();
114 
115  //add an object
116  virtual void add(win_base *);
117 
118  //remove an object
119  virtual void remove(win_base *);
120 
121  //remove all, but not in memory
122  virtual void remove_all();
123 
124  //destroy all object of the list and in memory
125  virtual void destroy();
126 
127  //update function
128  bool update();
129 
130  //draw on the screen
131  bool draw();
132 
133  void move(s_int16 tx,s_int16 ty);
134 
135  void resize(u_int16,u_int16);
136 
137 
138  //set the space between object and the border, work if you use layout or justify
139  virtual void set_space_between_border(u_int16);
140 
141  //set the space between object and the border, work if you use layout
142  virtual void set_space_between_object(u_int16);
143 
144  u_int16 space_between_border(){return space_between_border_;}
145  u_int16 space_between_object(){return space_between_object_;}
146 
147  //if true all of this object is in brightness mode
148  void set_draw_brightness(bool b);
149 
150  //bugs in this functions.
151  void set_visible_all(bool);
152 */
153  /*
154 
155  //justify all object : WIN_JUSTIFY_LEFT, WIN_JUSTIFY_RIGHT, WIN_JUSTIFY_CENTER
156  void set_justify(u_int8);
157 
158  //justify an win_base object in this object
159  void set_justify(win_base * wb,u_int8);
160  */
161 /*
162  //align all object
163  void set_align_all(u_int8);
164 
165 
166  //set the layout (like in java i think) Now 2 sort of layout but i can add several if you suggest me. WIN_LAYOUT_NO (no layout: you put your object where you want)
167  //and WIN_LAYOUT_LIST( all object show like a listbox)
168  void set_layout(u_int8 lay);
169 
170  //IMPORTANT: You can use set_justify and layout to do good window
171 
172  void update_real_position();
173 
174  void set_focus(bool b);
175  bool is_focus(){return focus_;}
176 };
177 
178 */
179 #endif
180 
181 
182 
183 
184 
185 
186 
187 
win_base
Common properties for each win_base's object.
Definition: win_base.h:51
u_int8
#define u_int8
8 bits long unsigned integer
Definition: types.h:35
s_int16
#define s_int16
16 bits long signed integer
Definition: types.h:47
win_base.h
u_int16
#define u_int16
16 bits long unsigned integer
Definition: types.h:38
win_container
Definition: win_container.h:29