00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef Fl_Group_H
00032 #define Fl_Group_H
00033
00034 #ifndef Fl_Widget_H
00035 #include "Fl_Widget.H"
00036 #endif
00037
00045 class FL_EXPORT Fl_Group : public Fl_Widget {
00046
00047 Fl_Widget** array_;
00048 Fl_Widget* savedfocus_;
00049 Fl_Widget* resizable_;
00050 int children_;
00051 int *sizes_;
00052
00053 int navigation(int);
00054 static Fl_Group *current_;
00055
00056
00057 Fl_Group(const Fl_Group&);
00058 Fl_Group& operator=(const Fl_Group&);
00059
00060 protected:
00061 void draw();
00062 void draw_child(Fl_Widget& widget) const;
00063 void draw_children();
00064 void draw_outside_label(const Fl_Widget& widget) const ;
00065 void update_child(Fl_Widget& widget) const;
00066 int *sizes();
00067
00068 public:
00069
00070 int handle(int);
00071 void begin();
00072 void end();
00073 static Fl_Group *current();
00074 static void current(Fl_Group *g);
00075
00079 int children() const {return children_;}
00083 Fl_Widget* child(int n) const {return array()[n];}
00084 int find(const Fl_Widget*) const;
00088 int find(const Fl_Widget& o) const {return find(&o);}
00089 Fl_Widget* const* array() const;
00090
00091 void resize(int,int,int,int);
00096 Fl_Group(int,int,int,int, const char * = 0);
00097 virtual ~Fl_Group();
00098 void add(Fl_Widget&);
00102 void add(Fl_Widget* o) {add(*o);}
00103 void insert(Fl_Widget&, int i);
00108 void insert(Fl_Widget& o, Fl_Widget* before) {insert(o,find(before));}
00109 void remove(int index);
00110 void remove(Fl_Widget&);
00115 void remove(Fl_Widget* o) {remove(*o);}
00116 void clear();
00117
00121 void resizable(Fl_Widget& o) {resizable_ = &o;}
00150 void resizable(Fl_Widget* o) {resizable_ = o;}
00154 Fl_Widget* resizable() const {return resizable_;}
00158 void add_resizable(Fl_Widget& o) {resizable_ = &o; add(o);}
00159 void init_sizes();
00160
00170 void clip_children(int c) { if (c) set_flag(CLIP_CHILDREN); else clear_flag(CLIP_CHILDREN); }
00178 unsigned int clip_children() { return (flags() & CLIP_CHILDREN) != 0; }
00179
00186 virtual Fl_Group* as_group() { return this; }
00187
00188
00189
00195 void focus(Fl_Widget* W) {W->take_focus();}
00196
00198 Fl_Widget* & _ddfdesign_kludge() {return resizable_;}
00199
00201 void forms_end();
00202 };
00203
00204
00205
00225 class FL_EXPORT Fl_End {
00226 public:
00228 Fl_End() {Fl_Group::current()->end();}
00229 };
00230
00231 #endif
00232
00233
00234
00235