diff options
| author | Matthias Melcher <github@matthiasm.com> | 2023-07-19 17:44:44 +0200 |
|---|---|---|
| committer | Matthias Melcher <github@matthiasm.com> | 2023-07-19 17:45:28 +0200 |
| commit | f8a327877699a8565d36b2f0b1cbe074f224fba4 (patch) | |
| tree | 00673ec9887fa97a108a56910c97df6b37c6ff8c /fluid/Fl_Group_Type.h | |
| parent | 9ee8cdc727e7c510c28b51318b953d82aa1dd936 (diff) | |
FLUID: emulated RTTI for all types
Complete type hierarchy in Fl_Types doc
Window now derives correctly from Group
Menu Items now correctly (functionally in FLUID) derived form Button
Menu Buttons have a better hierarchy
Fixing two possible crash bugs where Input_Choice was assumed to be a Menu_
Hoping I have not degraded the original code!
Diffstat (limited to 'fluid/Fl_Group_Type.h')
| -rw-r--r-- | fluid/Fl_Group_Type.h | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/fluid/Fl_Group_Type.h b/fluid/Fl_Group_Type.h index 4be5973e9..d98e6121c 100644 --- a/fluid/Fl_Group_Type.h +++ b/fluid/Fl_Group_Type.h @@ -36,7 +36,9 @@ public: igroup(int X,int Y,int W,int H) : Fl_Group(X,Y,W,H) {Fl_Group::current(0);} }; -class Fl_Group_Type : public Fl_Widget_Type { +class Fl_Group_Type : public Fl_Widget_Type +{ + typedef Fl_Widget_Type super; public: const char *type_name() FL_OVERRIDE {return "Fl_Group";} const char *alt_type_name() FL_OVERRIDE {return "fltk::Group";} @@ -52,6 +54,7 @@ public: int is_parent() const FL_OVERRIDE {return 1;} int is_group() const FL_OVERRIDE {return 1;} ID id() const FL_OVERRIDE { return ID_Group; } + bool is_a(ID inID) FL_OVERRIDE { return (inID==ID_Group) ? true : super::is_a(inID); } Fl_Widget *enter_live_mode(int top=0) FL_OVERRIDE; void leave_live_mode() FL_OVERRIDE; void copy_properties() FL_OVERRIDE; @@ -62,13 +65,16 @@ public: extern const char pack_type_name[]; extern Fl_Menu_Item pack_type_menu[]; -class Fl_Pack_Type : public Fl_Group_Type { +class Fl_Pack_Type : public Fl_Group_Type +{ + typedef Fl_Group_Type super; Fl_Menu_Item *subtypes() FL_OVERRIDE {return pack_type_menu;} public: const char *type_name() FL_OVERRIDE {return pack_type_name;} const char *alt_type_name() FL_OVERRIDE {return "fltk::PackedGroup";} Fl_Widget_Type *_make() FL_OVERRIDE {return new Fl_Pack_Type();} ID id() const FL_OVERRIDE { return ID_Pack; } + bool is_a(ID inID) FL_OVERRIDE { return (inID==ID_Pack) ? true : super::is_a(inID); } Fl_Widget *enter_live_mode(int top=0) FL_OVERRIDE; void copy_properties() FL_OVERRIDE; }; @@ -78,7 +84,9 @@ public: extern const char flex_type_name[]; extern Fl_Menu_Item flex_type_menu[]; -class Fl_Flex_Type : public Fl_Group_Type { +class Fl_Flex_Type : public Fl_Group_Type +{ + typedef Fl_Group_Type super; Fl_Menu_Item *subtypes() FL_OVERRIDE {return flex_type_menu;} int fixedSizeTupleSize; /* number of pairs in array */ int *fixedSizeTuple; /* [ index, size, index2, size2, ... ] */ @@ -91,6 +99,7 @@ public: Fl_Widget *widget(int X,int Y,int W,int H) FL_OVERRIDE { Fl_Flex *g = new Fl_Flex(X,Y,W,H); Fl_Group::current(0); return g;} ID id() const FL_OVERRIDE { return ID_Flex; } + bool is_a(ID inID) FL_OVERRIDE { return (inID==ID_Flex) ? true : super::is_a(inID); } void write_properties(Fd_Project_Writer &f) FL_OVERRIDE; void read_property(Fd_Project_Reader &f, const char *) FL_OVERRIDE; Fl_Widget *enter_live_mode(int top=0) FL_OVERRIDE; @@ -137,7 +146,9 @@ public: itabs(int X,int Y,int W,int H) : Fl_Tabs(X,Y,W,H) {} }; -class Fl_Tabs_Type : public Fl_Group_Type { +class Fl_Tabs_Type : public Fl_Group_Type +{ + typedef Fl_Group_Type super; public: const char *type_name() FL_OVERRIDE {return tabs_type_name;} const char *alt_type_name() FL_OVERRIDE {return "fltk::TabGroup";} @@ -148,6 +159,7 @@ public: void add_child(Fl_Type*, Fl_Type*) FL_OVERRIDE; void remove_child(Fl_Type*) FL_OVERRIDE; ID id() const FL_OVERRIDE { return ID_Tabs; } + bool is_a(ID inID) FL_OVERRIDE { return (inID==ID_Tabs) ? true : super::is_a(inID); } Fl_Widget *enter_live_mode(int top=0) FL_OVERRIDE; int is_tabs() const FL_OVERRIDE {return 1;} }; @@ -157,13 +169,16 @@ public: extern const char scroll_type_name[]; extern Fl_Menu_Item scroll_type_menu[]; -class Fl_Scroll_Type : public Fl_Group_Type { +class Fl_Scroll_Type : public Fl_Group_Type +{ + typedef Fl_Group_Type super; Fl_Menu_Item *subtypes() FL_OVERRIDE {return scroll_type_menu;} public: const char *type_name() FL_OVERRIDE {return scroll_type_name;} const char *alt_type_name() FL_OVERRIDE {return "fltk::ScrollGroup";} Fl_Widget_Type *_make() FL_OVERRIDE {return new Fl_Scroll_Type();} ID id() const FL_OVERRIDE { return ID_Scroll; } + bool is_a(ID inID) FL_OVERRIDE { return (inID==ID_Scroll) ? true : super::is_a(inID); } Fl_Widget *enter_live_mode(int top=0) FL_OVERRIDE; void copy_properties() FL_OVERRIDE; int is_scroll() const FL_OVERRIDE { return 1; } @@ -173,12 +188,15 @@ public: extern const char tile_type_name[]; -class Fl_Tile_Type : public Fl_Group_Type { +class Fl_Tile_Type : public Fl_Group_Type +{ + typedef Fl_Group_Type super; public: const char *type_name() FL_OVERRIDE {return tile_type_name;} const char *alt_type_name() FL_OVERRIDE {return "fltk::TileGroup";} Fl_Widget_Type *_make() FL_OVERRIDE {return new Fl_Tile_Type();} ID id() const FL_OVERRIDE { return ID_Tile; } + bool is_a(ID inID) FL_OVERRIDE { return (inID==ID_Tile) ? true : super::is_a(inID); } void copy_properties() FL_OVERRIDE; }; @@ -193,7 +211,9 @@ public: extern const char wizard_type_name[]; -class Fl_Wizard_Type : public Fl_Group_Type { +class Fl_Wizard_Type : public Fl_Group_Type +{ + typedef Fl_Group_Type super; public: const char *type_name() FL_OVERRIDE {return wizard_type_name;} const char *alt_type_name() FL_OVERRIDE {return "fltk::WizardGroup";} @@ -201,6 +221,7 @@ public: iwizard *g = new iwizard(X,Y,W,H); Fl_Group::current(0); return g;} Fl_Widget_Type *_make() FL_OVERRIDE {return new Fl_Wizard_Type();} ID id() const FL_OVERRIDE { return ID_Wizard; } + bool is_a(ID inID) FL_OVERRIDE { return (inID==ID_Wizard) ? true : super::is_a(inID); } }; #endif // _FLUID_FL_GROUP_TYPE_H |
