FLUID: emulating RTTI and fixing type dependencies (Buttons)

This commit is contained in:
Matthias Melcher
2023-07-17 18:31:58 +02:00
parent 80ad543963
commit 9794d200b3
11 changed files with 185 additions and 120 deletions
+2
View File
@@ -705,9 +705,11 @@ void shortcut_in_cb(Fl_Shortcut_Button* i, void* v) {
i->value( ((Fl_Text_Display*)(current_widget->o))->shortcut() );
else {
i->hide();
i->parent()->hide();
return;
}
i->show();
i->parent()->show();
i->redraw();
} else {
int mod = 0;
+3 -3
View File
@@ -5,7 +5,7 @@
// This should have the widget pointer in it, but it is still in the
// Fl_Type base class.
//
// Copyright 1998-2010 by Bill Spitzak and others.
// Copyright 1998-2023 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
@@ -31,7 +31,7 @@
extern Fl_Menu_Item menu_item_type_menu[];
class Fl_Menu_Item_Type : public Fl_Widget_Type {
class Fl_Menu_Item_Type : public Fl_Widget_Type { // FIXME: hmmmmm
public:
Fl_Menu_Item* subtypes() FL_OVERRIDE {return menu_item_type_menu;}
const char* type_name() FL_OVERRIDE {return "MenuItem";}
@@ -157,7 +157,7 @@ public:
ID id() const FL_OVERRIDE { return ID::Choice; }
};
class Fl_Input_Choice_Type : public Fl_Menu_Type {
class Fl_Input_Choice_Type : public Fl_Menu_Type { // FIXME: Composite: Fl_Group
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) FL_OVERRIDE {
Fl_Input_Choice *myo = (Fl_Input_Choice*)(w==4 ? ((Fl_Widget_Type*)this->factory)->o : this->o);
switch (w) {
+2 -1
View File
@@ -1,7 +1,7 @@
//
// Widget type header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2021 by Bill Spitzak and others.
// Copyright 1998-2023 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
@@ -197,6 +197,7 @@ public:
virtual int is_public() const {return 1;}
virtual ID id() const { return ID::Base_; }
virtual bool is_a(ID inID) { return (inID==ID::Base_); }
const char* class_name(const int need_nest) const;
const class Fl_Class_Type* is_in_class() const;
+2 -3
View File
@@ -186,7 +186,6 @@ Fl_Widget_Type::Fl_Widget_Type()
inactive_name_ = 0;
image = 0;
inactive = 0;
xclass = 0;
o = 0;
public_ = 1;
bind_image_ = 0;
@@ -1047,7 +1046,7 @@ void box_cb(Fl_Choice* i, void *v) {
void down_box_cb(Fl_Choice* i, void *v) {
if (v == LOAD) {
int n;
if (current_widget->is_button() && !current_widget->is_menu_item())
if (current_widget->is_a(Fl_Type::ID::Button))
n = ((Fl_Button*)(current_widget->o))->down_box();
else if (current_widget->id() == Fl_Type::ID::Input_Choice)
n = ((Fl_Input_Choice*)(current_widget->o))->down_box();
@@ -1068,7 +1067,7 @@ void down_box_cb(Fl_Choice* i, void *v) {
if (n == ZERO_ENTRY) n = 0;
for (Fl_Type *o = Fl_Type::first; o; o = o->next) {
if (o->selected) {
if (o->is_button() && !o->is_menu_item()) {
if (o->is_a(Fl_Type::ID::Button)) {
Fl_Widget_Type* q = (Fl_Widget_Type*)o;
((Fl_Button*)(q->o))->down_box((Fl_Boxtype)n);
if (((Fl_Button*)(q->o))->value()) q->redraw();
+6 -3
View File
@@ -5,7 +5,7 @@
// This should have the widget pointer in it, but it is still in the
// Fl_Type base class.
//
// Copyright 1998-2010 by Bill Spitzak and others.
// Copyright 1998-2023 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
@@ -37,7 +37,10 @@ void selection_changed(Fl_Type* new_current);
Fl_Type *sort(Fl_Type *parent);
void comment_cb(class Fl_Text_Editor* i, void *v);
class Fl_Widget_Type : public Fl_Type {
class Fl_Widget_Type : public Fl_Type
{
typedef Fl_Type super;
virtual Fl_Widget *widget(int,int,int,int) = 0;
virtual Fl_Widget_Type *_make() = 0; // virtual constructor
void setlabel(const char *) FL_OVERRIDE;
@@ -67,7 +70,6 @@ protected:
Fl_Widget *live_widget;
public:
const char *xclass; // junk string, used for shortcut
Fl_Widget *o;
int public_;
int bind_image_;
@@ -103,6 +105,7 @@ public:
virtual Fl_Menu_Item *subtypes();
ID id() const FL_OVERRIDE { return ID::Widget_; }
bool is_a(ID inID) FL_OVERRIDE { return (inID==ID::Widget_) ? true : super::is_a(inID); }
int is_widget() const FL_OVERRIDE;
int is_public() const FL_OVERRIDE;
+9 -11
View File
@@ -340,25 +340,23 @@ void border_cb(Fl_Light_Button* i, void* v) {
void xclass_cb(Fl_Input* i, void* v) {
if (v == LOAD) {
if (!current_widget->is_window()) {
if (current_widget->is_window()) {
i->show();
i->parent()->show();
i->value(((Fl_Window_Type *)current_widget)->xclass);
} else {
i->hide();
i->parent()->hide(); // hides the "X Class:" label as well
return;
}
i->show();
i->parent()->show();
i->value(((Fl_Widget_Type *)current_widget)->xclass);
} else {
int mod = 0;
undo_checkpoint();
for (Fl_Type *o = Fl_Type::first; o; o = o->next) {
if (o->selected && o->is_widget()) {
if (o->selected && o->is_window()) {
mod = 1;
Fl_Widget_Type* w = (Fl_Widget_Type*)o;
if (w->is_window() || w->is_button())
storestring(i->value(),w->xclass);
if (w->is_window()) ((Fl_Window*)(w->o))->xclass(w->xclass);
else if (w->is_menu_item()) w->redraw();
Fl_Window_Type *wt = (Fl_Window_Type *)o;
storestring(i->value(), wt->xclass);
((Fl_Window*)(wt->o))->xclass(wt->xclass);
}
}
if (mod) set_modflag(1);
+3 -1
View File
@@ -43,7 +43,7 @@ enum {
FD_BOX = 32 // user creates a new selection box
};
class Fl_Window_Type : public Fl_Widget_Type {
class Fl_Window_Type : public Fl_Widget_Type { // FIXME: Fl_Group
protected:
Fl_Menu_Item* subtypes() FL_OVERRIDE {return window_type_menu;}
@@ -85,9 +85,11 @@ public:
numselected(0),
recalc(0),
modal(0), non_modal(0),
xclass(NULL),
sr_min_w(0), sr_min_h(0), sr_max_w(0), sr_max_h(0)
{ }
uchar modal, non_modal;
const char *xclass; // junk string, used for shortcut
Fl_Type *make(Strategy strategy) FL_OVERRIDE;
const char *type_name() FL_OVERRIDE {return "Fl_Window";}
+127 -69
View File
@@ -33,6 +33,12 @@
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Return_Button.H>
#include <FL/Fl_Repeat_Button.H>
#include <FL/Fl_Light_Button.H>
#include <FL/Fl_Check_Button.H>
#include <FL/Fl_Round_Button.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Menu_Item.H>
#include <FL/Fl_Pixmap.H>
@@ -57,117 +63,169 @@ public:
};
static Fl_Box_Type Fl_Box_type;
////////////////////////////////////////////////////////////////
#include <FL/Fl_Button.H>
// ---- Button Types --------------------------------------------------- MARK: -
// ---- Button ----
static Fl_Menu_Item buttontype_menu[] = {
{"Normal",0,0,(void*)0},
{"Toggle",0,0,(void*)FL_TOGGLE_BUTTON},
{"Radio",0,0,(void*)FL_RADIO_BUTTON},
{0}};
class Fl_Button_Type : public Fl_Widget_Type {
Fl_Menu_Item *subtypes() FL_OVERRIDE {return buttontype_menu;}
{0}
};
/**
\brief A handler for the simple push button and a base class for all other buttons.
*/
class Fl_Button_Type : public Fl_Widget_Type
{
typedef Fl_Widget_Type super;
Fl_Menu_Item *subtypes() FL_OVERRIDE { return buttontype_menu; }
public:
void ideal_size(int &w, int &h) FL_OVERRIDE {
// TODO: this is a really bad size suggestion
Fl_Widget_Type::ideal_size(w, h);
w += 2 * (o->labelsize() - 4);
h = (h / 5) * 5;
}
const char *type_name() FL_OVERRIDE {return "Fl_Button";}
const char *alt_type_name() FL_OVERRIDE {return "fltk::Button";}
Fl_Widget *widget(int x,int y,int w,int h) FL_OVERRIDE {
return new Fl_Button(x,y,w,h,"button");}
Fl_Widget_Type *_make() FL_OVERRIDE {return new Fl_Button_Type();}
int is_button() const FL_OVERRIDE {return 1;}
const char *type_name() FL_OVERRIDE { return "Fl_Button"; }
const char *alt_type_name() FL_OVERRIDE { return "fltk::Button"; }
Fl_Widget *widget(int x, int y, int w, int h) FL_OVERRIDE {
return new Fl_Button(x, y, w, h, "button");
}
Fl_Widget_Type *_make() FL_OVERRIDE { return new Fl_Button_Type(); }
int is_button() const FL_OVERRIDE { return 1; }
ID id() const FL_OVERRIDE { return ID::Button; }
bool is_a(ID inID) FL_OVERRIDE { return (inID==ID::Button) ? true : super::is_a(inID); }
};
static Fl_Button_Type Fl_Button_type;
////////////////////////////////////////////////////////////////
#include <FL/Fl_Return_Button.H>
class Fl_Return_Button_Type : public Fl_Button_Type {
// ---- Return Button ----
/**
\brief The Return Button is simply a Button with the return key as a hotkey.
*/
class Fl_Return_Button_Type : public Fl_Button_Type
{
typedef Fl_Button_Type super;
public:
void ideal_size(int &w, int &h) FL_OVERRIDE {
// TODO: this is a really bad size suggestion
Fl_Button_Type::ideal_size(w, h);
int W = o->h();
if (o->w()/3 < W) W = o->w()/3;
w += W + 8 - o->labelsize();
}
const char *type_name() FL_OVERRIDE {return "Fl_Return_Button";}
const char *alt_type_name() FL_OVERRIDE {return "fltk::ReturnButton";}
Fl_Widget *widget(int x,int y,int w,int h) FL_OVERRIDE {
return new Fl_Return_Button(x,y,w,h,"button");}
Fl_Widget_Type *_make() FL_OVERRIDE {return new Fl_Return_Button_Type();}
const char *type_name() FL_OVERRIDE { return "Fl_Return_Button"; }
const char *alt_type_name() FL_OVERRIDE { return "fltk::ReturnButton"; }
Fl_Widget *widget(int x, int y, int w, int h) FL_OVERRIDE {
return new Fl_Return_Button(x, y, w, h, "button");
}
Fl_Widget_Type *_make() FL_OVERRIDE { return new Fl_Return_Button_Type(); }
ID id() const FL_OVERRIDE { return ID::Return_Button; }
bool is_a(ID inID) FL_OVERRIDE { return (inID==ID::Return_Button) ? true : super::is_a(inID); }
};
static Fl_Return_Button_Type Fl_Return_Button_type;
////////////////////////////////////////////////////////////////
#include <FL/Fl_Repeat_Button.H>
class Fl_Repeat_Button_Type : public Fl_Widget_Type {
// ---- Repeat Button ----
/**
\brief Handler for Fl_Repeat_Button.
\note Even though Fl_Repeat_Button is somewhat limited compared to Fl_Button,
and some settings may not make much sense, it is still derived from it,
so the wrapper should be as well.
*/
class Fl_Repeat_Button_Type : public Fl_Button_Type
{
typedef Fl_Button_Type super;
public:
const char *type_name() FL_OVERRIDE {return "Fl_Repeat_Button";}
const char *alt_type_name() FL_OVERRIDE {return "fltk::RepeatButton";}
Fl_Widget *widget(int x,int y,int w,int h) FL_OVERRIDE {
return new Fl_Repeat_Button(x,y,w,h,"button");}
Fl_Widget_Type *_make() FL_OVERRIDE {return new Fl_Repeat_Button_Type();}
const char *type_name() FL_OVERRIDE { return "Fl_Repeat_Button"; }
const char *alt_type_name() FL_OVERRIDE { return "fltk::RepeatButton"; }
Fl_Widget *widget(int x, int y, int w, int h) FL_OVERRIDE {
return new Fl_Repeat_Button(x, y, w, h, "button");
}
Fl_Widget_Type *_make() FL_OVERRIDE { return new Fl_Repeat_Button_Type(); }
ID id() const FL_OVERRIDE { return ID::Repeat_Button; }
bool is_a(ID inID) FL_OVERRIDE { return (inID==ID::Repeat_Button) ? true : super::is_a(inID); }
};
static Fl_Repeat_Button_Type Fl_Repeat_Button_type;
////////////////////////////////////////////////////////////////
#include <FL/Fl_Light_Button.H>
class Fl_Light_Button_Type : public Fl_Button_Type {
// ---- Light Button ----
class Fl_Light_Button_Type : public Fl_Button_Type
{
typedef Fl_Button_Type super;
public:
void ideal_size(int &w, int &h) FL_OVERRIDE {
// TODO: improve this
Fl_Button_Type::ideal_size(w, h);
w += 4;
}
const char *type_name() FL_OVERRIDE {return "Fl_Light_Button";}
const char *alt_type_name() FL_OVERRIDE {return "fltk::LightButton";}
Fl_Widget *widget(int x,int y,int w,int h) FL_OVERRIDE {
return new Fl_Light_Button(x,y,w,h,"button");}
Fl_Widget_Type *_make() FL_OVERRIDE {return new Fl_Light_Button_Type();}
const char *type_name() FL_OVERRIDE { return "Fl_Light_Button"; }
const char *alt_type_name() FL_OVERRIDE { return "fltk::LightButton"; }
Fl_Widget *widget(int x, int y, int w, int h) FL_OVERRIDE {
return new Fl_Light_Button(x, y, w, h, "button");
}
Fl_Widget_Type *_make() FL_OVERRIDE { return new Fl_Light_Button_Type(); }
ID id() const FL_OVERRIDE { return ID::Light_Button; }
bool is_a(ID inID) FL_OVERRIDE { return (inID==ID::Light_Button) ? true : super::is_a(inID); }
};
static Fl_Light_Button_Type Fl_Light_Button_type;
////////////////////////////////////////////////////////////////
#include <FL/Fl_Check_Button.H>
class Fl_Check_Button_Type : public Fl_Button_Type {
// ---- Check Button ----
class Fl_Check_Button_Type : public Fl_Button_Type
{
typedef Fl_Button_Type super;
public:
void ideal_size(int &w, int &h) FL_OVERRIDE {
// TODO: fix this
Fl_Button_Type::ideal_size(w, h);
w += 4;
}
const char *type_name() FL_OVERRIDE {return "Fl_Check_Button";}
const char *alt_type_name() FL_OVERRIDE {return "fltk::CheckButton";}
Fl_Widget *widget(int x,int y,int w,int h) FL_OVERRIDE {
return new Fl_Check_Button(x,y,w,h,"button");}
Fl_Widget_Type *_make() FL_OVERRIDE {return new Fl_Check_Button_Type();}
const char *type_name() FL_OVERRIDE { return "Fl_Check_Button"; }
const char *alt_type_name() FL_OVERRIDE { return "fltk::CheckButton"; }
Fl_Widget *widget(int x, int y, int w, int h) FL_OVERRIDE {
return new Fl_Check_Button(x, y, w, h, "button");
}
Fl_Widget_Type *_make() FL_OVERRIDE { return new Fl_Check_Button_Type(); }
ID id() const FL_OVERRIDE { return ID::Check_Button; }
bool is_a(ID inID) FL_OVERRIDE { return (inID==ID::Check_Button) ? true : super::is_a(inID); }
};
static Fl_Check_Button_Type Fl_Check_Button_type;
////////////////////////////////////////////////////////////////
#include <FL/Fl_Round_Button.H>
class Fl_Round_Button_Type : public Fl_Button_Type {
// ---- Round Button ----
class Fl_Round_Button_Type : public Fl_Button_Type
{
typedef Fl_Button_Type super;
public:
void ideal_size(int &w, int &h) FL_OVERRIDE {
// TODO: ideas?
Fl_Button_Type::ideal_size(w, h);
w += 4;
}
const char *type_name() FL_OVERRIDE {return "Fl_Round_Button";}
const char *alt_type_name() FL_OVERRIDE {return "fltk::RadioButton";}
Fl_Widget *widget(int x,int y,int w,int h) FL_OVERRIDE {
return new Fl_Round_Button(x,y,w,h,"button");}
Fl_Widget_Type *_make() FL_OVERRIDE {return new Fl_Round_Button_Type();}
const char *type_name() FL_OVERRIDE { return "Fl_Round_Button"; }
const char *alt_type_name() FL_OVERRIDE { return "fltk::RadioButton"; }
Fl_Widget *widget(int x, int y, int w, int h) FL_OVERRIDE {
return new Fl_Round_Button(x, y, w, h, "button");
}
Fl_Widget_Type *_make() FL_OVERRIDE { return new Fl_Round_Button_Type(); }
ID id() const FL_OVERRIDE { return ID::Round_Button; }
bool is_a(ID inID) FL_OVERRIDE { return (inID==ID::Round_Button) ? true : super::is_a(inID); }
};
static Fl_Round_Button_Type Fl_Round_Button_type;
@@ -183,7 +241,7 @@ static Fl_Menu_Item browser_type_menu[] = {
{"Hold",0,0,(void*)FL_HOLD_BROWSER},
{"Multi",0,0,(void*)FL_MULTI_BROWSER},
{0}};
class Fl_Browser_Type : public Fl_Widget_Type {
class Fl_Browser_Type : public Fl_Widget_Type { // FIXME: Fl_Group(!), Fl_Browser_
Fl_Menu_Item *subtypes() FL_OVERRIDE {return browser_type_menu;}
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) FL_OVERRIDE;
public:
@@ -230,7 +288,7 @@ int Fl_Browser_Type::textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) {
return 1;
}
class Fl_Check_Browser_Type : public Fl_Widget_Type {
class Fl_Check_Browser_Type : public Fl_Widget_Type { // FIXME: Fl_Browser_
Fl_Menu_Item *subtypes() FL_OVERRIDE {return browser_type_menu;}
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) FL_OVERRIDE;
public:
@@ -277,7 +335,7 @@ int Fl_Check_Browser_Type::textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) {
return 1;
}
class Fl_Tree_Type : public Fl_Widget_Type {
class Fl_Tree_Type : public Fl_Widget_Type { // FIXME: Fl_Group
public:
void ideal_size(int &w, int &h) FL_OVERRIDE {
if (h < 60) h = 60;
@@ -304,7 +362,7 @@ public:
};
static Fl_Tree_Type Fl_Tree_type;
class Fl_File_Browser_Type : public Fl_Widget_Type {
class Fl_File_Browser_Type : public Fl_Widget_Type { // FIXME: Fl_Browser (no underscore)
Fl_Menu_Item *subtypes() FL_OVERRIDE {return browser_type_menu;}
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) FL_OVERRIDE;
public:
@@ -354,7 +412,7 @@ static Fl_Menu_Item counter_type_menu[] = {
{"Normal",0,0,(void*)FL_NORMAL_COUNTER},
{"Simple",0,0,(void*)FL_SIMPLE_COUNTER},
{0}};
class Fl_Counter_Type : public Fl_Widget_Type {
class Fl_Counter_Type : public Fl_Widget_Type { // FIXME: Fl_Valuator
Fl_Menu_Item *subtypes() FL_OVERRIDE {return counter_type_menu;}
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) FL_OVERRIDE;
int is_valuator() const FL_OVERRIDE {return 1;}
@@ -387,7 +445,7 @@ static Fl_Menu_Item spinner_type_menu[] = {
{"Integer",0,0,(void*)FL_INT_INPUT},
{"Float", 0,0,(void*)FL_FLOAT_INPUT},
{0}};
class Fl_Spinner_Type : public Fl_Widget_Type {
class Fl_Spinner_Type : public Fl_Widget_Type { // FIXME: Fl_Group, *NOT* Fl_Valuator
Fl_Menu_Item *subtypes() FL_OVERRIDE {return spinner_type_menu;}
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) FL_OVERRIDE;
public:
@@ -434,7 +492,7 @@ static Fl_Menu_Item input_type_menu[] = {
{"Int",0,0,(void*)FL_INT_INPUT},
{"Float",0,0,(void*)FL_FLOAT_INPUT},
{0}};
class Fl_Input_Type : public Fl_Widget_Type {
class Fl_Input_Type : public Fl_Widget_Type { // FIXME: Fl_Input_
Fl_Menu_Item *subtypes() FL_OVERRIDE {return input_type_menu;}
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) FL_OVERRIDE;
public:
@@ -484,7 +542,7 @@ int Fl_Input_Type::textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) {
////////////////////////////////////////////////////////////////
#include <FL/Fl_File_Input.H>
class Fl_File_Input_Type : public Fl_Widget_Type {
class Fl_File_Input_Type : public Fl_Widget_Type { // FIXME: Fl_Input
Fl_Menu_Item *subtypes() FL_OVERRIDE {return 0;}
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) FL_OVERRIDE;
public:
@@ -526,7 +584,7 @@ int Fl_File_Input_Type::textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) {
////////////////////////////////////////////////////////////////
#include <FL/Fl_Text_Display.H>
class Fl_Text_Display_Type : public Fl_Widget_Type {
class Fl_Text_Display_Type : public Fl_Widget_Type { // FIXME: Fl_Group
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) FL_OVERRIDE;
public:
void ideal_size(int &w, int &h) FL_OVERRIDE {
@@ -567,7 +625,7 @@ int Fl_Text_Display_Type::textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) {
////////////////////////////////////////////////////////////////
#include <FL/Fl_Text_Editor.H>
class Fl_Text_Editor_Type : public Fl_Widget_Type {
class Fl_Text_Editor_Type : public Fl_Widget_Type { // FIXME: Fl_Text_Display
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) FL_OVERRIDE;
public:
void ideal_size(int &w, int &h) FL_OVERRIDE {
@@ -608,7 +666,7 @@ int Fl_Text_Editor_Type::textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) {
////////////////////////////////////////////////////////////////
#include <FL/Fl_Simple_Terminal.H>
class Fl_Simple_Terminal_Type : public Fl_Text_Editor_Type {
class Fl_Simple_Terminal_Type : public Fl_Text_Editor_Type { // FIXME: Fl_Text_Display
public:
const char *type_name() FL_OVERRIDE {return "Fl_Simple_Terminal";}
const char *alt_type_name() FL_OVERRIDE {return "fltk::SimpleTerminal";}
@@ -647,7 +705,7 @@ static Fl_Clock_Type Fl_Clock_type;
////////////////////////////////////////////////////////////////
#include <FL/Fl_Help_View.H>
class Fl_Help_View_Type : public Fl_Widget_Type {
class Fl_Help_View_Type : public Fl_Widget_Type { // FIXME: Fl_Group
public:
void ideal_size(int &w, int &h) FL_OVERRIDE {
Fl_Help_View *myo = (Fl_Help_View *)o;
@@ -693,7 +751,7 @@ static Fl_Progress_Type Fl_Progress_type;
////////////////////////////////////////////////////////////////
#include <FL/Fl_Adjuster.H>
class Fl_Adjuster_Type : public Fl_Widget_Type {
class Fl_Adjuster_Type : public Fl_Widget_Type { // FIXME: Fl_Valuator
int is_valuator() const FL_OVERRIDE {return 1;}
public:
const char *type_name() FL_OVERRIDE {return "Fl_Adjuster";}
@@ -713,7 +771,7 @@ static Fl_Menu_Item dial_type_menu[] = {
{"Line",0,0,(void*)FL_LINE_DIAL},
{"Fill",0,0,(void*)FL_FILL_DIAL},
{0}};
class Fl_Dial_Type : public Fl_Widget_Type {
class Fl_Dial_Type : public Fl_Widget_Type { // FIXME: Fl_Valuator
Fl_Menu_Item *subtypes() FL_OVERRIDE {return dial_type_menu;}
int is_valuator() const FL_OVERRIDE {return 1;}
public:
@@ -733,7 +791,7 @@ static Fl_Menu_Item roller_type_menu[] = {
{"Vertical",0,0,(void*)0},
{"Horizontal",0,0,(void*)FL_HORIZONTAL},
{0}};
class Fl_Roller_Type : public Fl_Widget_Type {
class Fl_Roller_Type : public Fl_Widget_Type { // FIXME: Fl_Valuator
Fl_Menu_Item *subtypes() FL_OVERRIDE {return roller_type_menu;}
int is_valuator() const FL_OVERRIDE {return 1;}
public:
@@ -757,7 +815,7 @@ static Fl_Menu_Item slider_type_menu[] = {
{"Vert Knob",0,0,(void*)FL_VERT_NICE_SLIDER},
{"Horz Knob",0,0,(void*)FL_HOR_NICE_SLIDER},
{0}};
class Fl_Slider_Type : public Fl_Widget_Type {
class Fl_Slider_Type : public Fl_Widget_Type { // FIXME: Fl_Valuator
Fl_Menu_Item *subtypes() FL_OVERRIDE {return slider_type_menu;}
int is_valuator() const FL_OVERRIDE {return 2;}
public:
@@ -822,7 +880,7 @@ static Fl_Output_Type Fl_Output_type;
////////////////////////////////////////////////////////////////
#include <FL/Fl_Value_Input.H>
class Fl_Value_Input_Type : public Fl_Widget_Type {
class Fl_Value_Input_Type : public Fl_Widget_Type { // FIXME: Fl_Input_
public:
void ideal_size(int &w, int &h) FL_OVERRIDE {
Fl_Value_Input *myo = (Fl_Value_Input *)o;
@@ -863,7 +921,7 @@ int Fl_Value_Input_Type::textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) {
////////////////////////////////////////////////////////////////
#include <FL/Fl_Value_Output.H>
class Fl_Value_Output_Type : public Fl_Widget_Type {
class Fl_Value_Output_Type : public Fl_Widget_Type { // FIXME: Fl_Valuator
public:
void ideal_size(int &w, int &h) FL_OVERRIDE {
Fl_Value_Output *myo = (Fl_Value_Output *)o;
+1 -1
View File
@@ -1,7 +1,7 @@
//
// Fluid Image management for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2021 by Bill Spitzak and others.
// Copyright 1998-2023 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
+16 -16
View File
@@ -565,26 +565,27 @@ sized to fit the container.");
} // Fl_Box* o
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(95, 210, 0, 20, "Shortcut:");
{ Fl_Group* o = new Fl_Group(95, 210, 310, 20, "Shortcut:");
o->labelfont(1);
o->labelsize(11);
o->callback((Fl_Callback*)propagate_load);
o->align(Fl_Align(FL_ALIGN_LEFT));
{ // This is a special button that grabs keystrokes directly
Fl_Shortcut_Button* o = new Fl_Shortcut_Button(95, 210, 310, 20);
o->tooltip("The shortcut key for the widget.\nUse \'Backspace\' key to clear.");
o->box(FL_DOWN_BOX);
o->color(FL_BACKGROUND2_COLOR);
o->selection_color((Fl_Color)12);
o->labeltype(FL_NORMAL_LABEL);
o->labelfont(0);
o->labelsize(11);
o->labelcolor(FL_FOREGROUND_COLOR);
o->callback((Fl_Callback*)shortcut_in_cb);
o->align(Fl_Align(FL_ALIGN_CENTER));
o->when(FL_WHEN_CHANGED);
} // Fl_Shortcut_Button* o
o->end();
} // Fl_Group* o
{ // This is a special button that grabs keystrokes directly
Fl_Shortcut_Button* o = new Fl_Shortcut_Button(95, 210, 310, 20);
o->tooltip("The shortcut key for the widget.\nUse \'Backspace\' key to clear.");
o->box(FL_DOWN_BOX);
o->color(FL_BACKGROUND2_COLOR);
o->selection_color((Fl_Color)12);
o->labeltype(FL_NORMAL_LABEL);
o->labelfont(0);
o->labelsize(11);
o->labelcolor(FL_FOREGROUND_COLOR);
o->callback((Fl_Callback*)shortcut_in_cb);
o->align(Fl_Align(FL_ALIGN_CENTER));
o->when(FL_WHEN_CHANGED);
} // Fl_Shortcut_Button* o
{ Fl_Group* o = new Fl_Group(95, 235, 300, 20, "X Class:");
o->labelfont(1);
o->labelsize(11);
@@ -632,7 +633,6 @@ sized to fit the container.");
} // Fl_Light_Button* o
{ Fl_Light_Button* o = new Fl_Light_Button(160, 260, 60, 20, "Active");
o->tooltip("Activate the widget.");
o->shortcut(0x400061);
o->selection_color((Fl_Color)1);
o->labelsize(11);
o->callback((Fl_Callback*)active_cb);
+14 -12
View File
@@ -334,7 +334,7 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
xywh {0 0 31 20} labelsize 11
}
MenuItem {} {
label Reposition selected
label Reposition
xywh {0 0 31 20} labelsize 11
}
MenuItem {} {
@@ -471,20 +471,22 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
}
Fl_Group {} {
label {Shortcut:} open
xywh {95 210 0 20} labelfont 1 labelsize 11 align 4
} {}
Fl_Button {} {
callback shortcut_in_cb
comment {This is a special button that grabs keystrokes directly}
tooltip {The shortcut key for the widget.
label {Shortcut:}
callback propagate_load open
xywh {95 210 310 20} labelfont 1 labelsize 11 align 4
} {
Fl_Button {} {
callback shortcut_in_cb
comment {This is a special button that grabs keystrokes directly} selected
tooltip {The shortcut key for the widget.
Use 'Backspace' key to clear.} xywh {95 210 310 20} box DOWN_BOX color 7 selection_color 12 labelsize 11 when 1
code0 {\#include <FL/Fl_Shortcut_Button.H>}
class Fl_Shortcut_Button
code0 {\#include <FL/Fl_Shortcut_Button.H>}
class Fl_Shortcut_Button
}
}
Fl_Group {} {
label {X Class:}
callback propagate_load
callback propagate_load open
xywh {95 235 300 20} labelfont 1 labelsize 11 align 4
} {
Fl_Input {} {
@@ -521,7 +523,7 @@ Use 'Backspace' key to clear.} xywh {95 210 310 20} box DOWN_BOX color 7 selecti
Fl_Light_Button {} {
label Active
callback active_cb
tooltip {Activate the widget.} xywh {160 260 60 20} shortcut 0x400061 selection_color 1 labelsize 11
tooltip {Activate the widget.} xywh {160 260 60 20} selection_color 1 labelsize 11
}
Fl_Light_Button {} {
label Resizable