diff --git a/fluid/Fl_Function_Type.cxx b/fluid/Fl_Function_Type.cxx index 9b6b06b8c..f464378aa 100644 --- a/fluid/Fl_Function_Type.cxx +++ b/fluid/Fl_Function_Type.cxx @@ -750,7 +750,9 @@ void Fl_Comment_Type::open() { // remove the last selected comment from the database if (itempath[0]==0 || last_selected_item==0) { fl_message("Please select an entry form this menu first."); - } else if (fl_ask("Are you sure that you want to delete the entry\n\"%s\"\nfrom the database?", itempath)) { + } else if (fl_choice("Are you sure that you want to delete the entry\n" + "\"%s\"\nfrom the database?", "Cancel", "Delete", + NULL, itempath)) { Fl_Preferences db(Fl_Preferences::USER, "fltk.org", "fluid_comments"); db.deleteEntry(itempath); comment_predefined->remove(last_selected_item); diff --git a/fluid/Fl_Type.h b/fluid/Fl_Type.h index 107460094..ef9048da6 100644 --- a/fluid/Fl_Type.h +++ b/fluid/Fl_Type.h @@ -437,6 +437,8 @@ public: extern Fl_Menu_Item window_type_menu[]; class Fl_Window_Type : public Fl_Widget_Type { +protected: + Fl_Menu_Item* subtypes() {return window_type_menu;} friend class Overlay_Window; @@ -486,6 +488,18 @@ public: int is_window() const {return 1;} }; +class Fl_Widget_Class_Type : private Fl_Window_Type { +public: + void write_code1(); + void write_code2(); + Fl_Type *make(); + virtual const char *type_name() {return "widget_class";} + int is_parent() const {return 1;} + int is_decl_block() const {return 1;} + int is_class() const {return 1;} +}; + + extern Fl_Menu_Item menu_item_type_menu[]; class Fl_Menu_Item_Type : public Fl_Widget_Type { diff --git a/fluid/Fl_Window_Type.cxx b/fluid/Fl_Window_Type.cxx index dbd8a3a1c..7fe924488 100644 --- a/fluid/Fl_Window_Type.cxx +++ b/fluid/Fl_Window_Type.cxx @@ -1288,6 +1288,60 @@ int Fl_Window_Type::read_fdesign(const char* propname, const char* value) { return 1; } +/////////////////////////////////////////////////////////////////////// + +Fl_Widget_Class_Type Fl_Widget_Class_type; + +Fl_Type *Fl_Widget_Class_Type::make() { + Fl_Type *p = Fl_Type::current; + while (p && !p->is_decl_block()) p = p->parent; + Fl_Widget_Class_Type *myo = new Fl_Widget_Class_Type(); + myo->name("UserInterface"); + + if (!this->o) {// template widget + this->o = new Fl_Window(100,100); + Fl_Group::current(0); + } + // Set the size ranges for this window; in order to avoid opening the + // X display we use an arbitrary maximum size... + ((Fl_Window *)(this->o))->size_range(gridx, gridy, + 3072, 2048, + gridx, gridy, 0); + myo->factory = this; + myo->drag = 0; + myo->numselected = 0; + Overlay_Window *w = new Overlay_Window(100,100); + w->window = myo; + myo->o = w; + myo->add(p); + myo->modal = 0; + myo->non_modal = 0; + + return myo; +} + + +void Fl_Widget_Class_Type::write_code1() { + Fl_Widget_Type::write_code1(); +} + +void Fl_Widget_Class_Type::write_code2() { + write_extra_code(); + if (modal) write_c("%so->set_modal();\n", indent()); + else if (non_modal) write_c("%so->set_non_modal();\n", indent()); + if (!((Fl_Window*)o)->border()) write_c("%so->clear_border();\n", indent()); + if (xclass) { + write_c("%so->xclass(", indent()); + write_cstring(xclass); + write_c(");\n"); + } + write_c("%so->end();\n", indent()); + if (((Fl_Window*)o)->resizable() == o) + write_c("%so->resizable(o);\n", indent()); + write_block_close(); +} + + // // End of "$Id$". // diff --git a/fluid/factory.cxx b/fluid/factory.cxx index 88bdaa7c3..e7a174557 100644 --- a/fluid/factory.cxx +++ b/fluid/factory.cxx @@ -869,6 +869,7 @@ extern class Fl_DeclBlock_Type Fl_DeclBlock_type; extern class Fl_Comment_Type Fl_Comment_type; extern class Fl_Class_Type Fl_Class_type; extern class Fl_Window_Type Fl_Window_type; +extern class Fl_Widget_Class_Type Fl_Widget_Class_type; extern class Fl_Group_Type Fl_Group_type; extern class Fl_Pack_Type Fl_Pack_type; extern class Fl_Tabs_Type Fl_Tabs_type; @@ -934,6 +935,7 @@ Fl_Menu_Item New_Menu[] = { {"Declaration",0,cb,(void*)&Fl_Decl_type}, {"Declaration Block",0,cb,(void*)&Fl_DeclBlock_type}, {"Class",0,cb,(void*)&Fl_Class_type}, + {"Widget Class",0,cb,(void*)&Fl_Widget_Class_type}, {"Comment",0,cb,(void*)&Fl_Comment_type}, {0}, {"Group",0,0,0,FL_SUBMENU},