STR 3460: Fluid menu item types
Added pulldown menus to create radio style and checkbox style menu items without going through the Class menu.
This commit is contained in:
parent
b71601fe7c
commit
6a61772c80
@ -49,6 +49,7 @@ extern const char* i18n_file;
|
||||
extern const char* i18n_set;
|
||||
|
||||
static char submenuflag;
|
||||
static uchar menuitemtype = 0;
|
||||
|
||||
void Fl_Input_Choice_Type::build_menu() {
|
||||
Fl_Input_Choice* w = (Fl_Input_Choice*)o;
|
||||
@ -117,12 +118,27 @@ Fl_Type *Fl_Menu_Item_Type::make() {
|
||||
|
||||
Fl_Menu_Item_Type* t = submenuflag ? new Fl_Submenu_Type() : new Fl_Menu_Item_Type();
|
||||
t->o = new Fl_Button(0,0,100,20);
|
||||
t->o->type(menuitemtype);
|
||||
t->factory = this;
|
||||
t->add(p);
|
||||
if (!reading_file) t->label(submenuflag ? "submenu" : "item");
|
||||
return t;
|
||||
}
|
||||
|
||||
Fl_Type *Fl_Checkbox_Menu_Item_Type::make() {
|
||||
menuitemtype = FL_MENU_TOGGLE;
|
||||
Fl_Type* t = Fl_Menu_Item_Type::make();
|
||||
menuitemtype = 0;
|
||||
return t;
|
||||
}
|
||||
|
||||
Fl_Type *Fl_Radio_Menu_Item_Type::make() {
|
||||
menuitemtype = FL_MENU_RADIO;
|
||||
Fl_Type* t = Fl_Menu_Item_Type::make();
|
||||
menuitemtype = 0;
|
||||
return t;
|
||||
}
|
||||
|
||||
Fl_Type *Fl_Submenu_Type::make() {
|
||||
submenuflag = 1;
|
||||
Fl_Type* t = Fl_Menu_Item_Type::make();
|
||||
@ -131,6 +147,8 @@ Fl_Type *Fl_Submenu_Type::make() {
|
||||
}
|
||||
|
||||
Fl_Menu_Item_Type Fl_Menu_Item_type;
|
||||
Fl_Checkbox_Menu_Item_Type Fl_Checkbox_Menu_Item_type;
|
||||
Fl_Radio_Menu_Item_Type Fl_Radio_Menu_Item_type;
|
||||
Fl_Submenu_Type Fl_Submenu_type;
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
@ -424,7 +442,7 @@ void Fl_Menu_Type::build_menu() {
|
||||
}
|
||||
m->shortcut(((Fl_Button*)(i->o))->shortcut());
|
||||
m->callback(0,(void*)i);
|
||||
m->flags = i->flags();
|
||||
m->flags = i->flags() | i->o->type();
|
||||
m->labelfont(i->o->labelfont());
|
||||
m->labelsize(i->o->labelsize());
|
||||
m->labelcolor(i->o->labelcolor());
|
||||
|
@ -690,6 +690,16 @@ public:
|
||||
int pixmapID() { return 16; }
|
||||
};
|
||||
|
||||
class Fl_Radio_Menu_Item_Type : public Fl_Menu_Item_Type {
|
||||
public:
|
||||
Fl_Type* make();
|
||||
};
|
||||
|
||||
class Fl_Checkbox_Menu_Item_Type : public Fl_Menu_Item_Type {
|
||||
public:
|
||||
Fl_Type* make();
|
||||
};
|
||||
|
||||
class Fl_Submenu_Type : public Fl_Menu_Item_Type {
|
||||
public:
|
||||
Fl_Menu_Item* subtypes() {return 0;}
|
||||
@ -707,6 +717,7 @@ public:
|
||||
};
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl_Menu_.H>
|
||||
class Fl_Menu_Type : public Fl_Widget_Type {
|
||||
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) {
|
||||
|
@ -926,6 +926,8 @@ extern class Fl_Choice_Type Fl_Choice_type;
|
||||
extern class Fl_Menu_Bar_Type Fl_Menu_Bar_type;
|
||||
extern class Fl_Menu_Button_Type Fl_Menu_Button_type;
|
||||
extern class Fl_Menu_Item_Type Fl_Menu_Item_type;
|
||||
extern class Fl_Checkbox_Menu_Item_Type Fl_Checkbox_Menu_Item_type;
|
||||
extern class Fl_Radio_Menu_Item_Type Fl_Radio_Menu_Item_type;
|
||||
extern class Fl_Submenu_Type Fl_Submenu_type;
|
||||
extern class Fl_Wizard_Type Fl_Wizard_type;
|
||||
|
||||
@ -1029,6 +1031,8 @@ Fl_Menu_Item New_Menu[] = {
|
||||
{0,0,cb,(void*)&Fl_Input_Choice_type},
|
||||
{0,0,cb, (void*)&Fl_Submenu_type},
|
||||
{0,0,cb, (void*)&Fl_Menu_Item_type},
|
||||
{"Checkbox Menu Item",0,cb, (void*)&Fl_Checkbox_Menu_Item_type},
|
||||
{"Radio Menu Item",0,cb, (void*)&Fl_Radio_Menu_Item_type},
|
||||
{0},
|
||||
{"Browsers",0,0,0,FL_SUBMENU},
|
||||
{0,0,cb,(void*)&Fl_Browser_type},
|
||||
|
Loading…
x
Reference in New Issue
Block a user