summaryrefslogtreecommitdiff
path: root/fluid/Fl_Group_Type.h
diff options
context:
space:
mode:
authorMatthias Melcher <github@matthiasm.com>2023-07-19 17:44:44 +0200
committerMatthias Melcher <github@matthiasm.com>2023-07-19 17:45:28 +0200
commitf8a327877699a8565d36b2f0b1cbe074f224fba4 (patch)
tree00673ec9887fa97a108a56910c97df6b37c6ff8c /fluid/Fl_Group_Type.h
parent9ee8cdc727e7c510c28b51318b953d82aa1dd936 (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.h35
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