Better support for Live mode in Fluid. Most Widget attributes are now supported including pulldown menus (in a very simple, but working way).

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@4433 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Matthias Melcher 2005-07-19 12:12:15 +00:00
parent d1808c6165
commit f64d694799
4 changed files with 59 additions and 23 deletions

View File

@ -249,6 +249,7 @@ Fl_Widget *Fl_Tabs_Type::enter_live_mode(int top) {
}
grp->end();
}
grp->value(((Fl_Tabs*)o)->value());
return live_widget;
}
@ -280,12 +281,26 @@ Fl_Menu_Item scroll_type_menu[] = {
Fl_Scroll_Type Fl_Scroll_type; // the "factory"
void Fl_Scroll_Type::copy_properties() {
Fl_Group_Type::copy_properties();
Fl_Scroll *s = (Fl_Scroll*)o, *d = (Fl_Scroll*)live_widget;
d->position(s->xposition(), s->yposition());
d->type(s->type()); // TODO: get this flag from Fl_Scroll_Type!
d->scrollbar.align(s->scrollbar.align());
d->hscrollbar.align(s->hscrollbar.align());
}
////////////////////////////////////////////////////////////////
const char tile_type_name[] = "Fl_Tile";
Fl_Tile_Type Fl_Tile_type; // the "factory"
void Fl_Tile_Type::copy_properties() {
Fl_Group_Type::copy_properties();
// no additional properties
}
//
// End of "$Id$".
//

View File

@ -448,6 +448,16 @@ void Fl_Menu_Type::write_code2() {
Fl_Widget_Type::write_code2();
}
void Fl_Menu_Type::copy_properties() {
Fl_Widget_Type::copy_properties();
Fl_Menu_ *s = (Fl_Menu_*)o, *d = (Fl_Menu_*)live_widget;
d->menu(s->menu());
d->down_box(s->down_box());
d->textcolor(s->textcolor());
d->textfont(s->textfont());
d->textsize(s->textsize());
}
////////////////////////////////////////////////////////////////
#include <FL/Fl_Menu_Button.H>
@ -472,6 +482,16 @@ Fl_Choice_Type Fl_Choice_type;
Fl_Input_Choice_Type Fl_Input_Choice_type;
void Fl_Input_Choice_Type::copy_properties() {
Fl_Widget_Type::copy_properties();
Fl_Input_Choice *s = (Fl_Input_Choice*)o, *d = (Fl_Input_Choice*)live_widget;
d->menu(s->menu());
d->down_box(s->down_box());
d->textcolor(s->textcolor());
d->textfont(s->textfont());
d->textsize(s->textsize());
}
////////////////////////////////////////////////////////////////
Fl_Menu_Bar_Type Fl_Menu_Bar_type;

View File

@ -430,6 +430,7 @@ public:
virtual const char *type_name() {return scroll_type_name;}
Fl_Widget_Type *_make() {return new Fl_Scroll_Type();}
int pixmapID() { return 19; }
void copy_properties();
};
extern const char tile_type_name[];
@ -439,6 +440,7 @@ public:
virtual const char *type_name() {return tile_type_name;}
Fl_Widget_Type *_make() {return new Fl_Tile_Type();}
int pixmapID() { return 20; }
void copy_properties();
};
extern const char wizard_type_name[];
@ -589,6 +591,7 @@ public:
void remove_child(Fl_Type*) {build_menu();}
Fl_Type* click_test(int x, int y);
void write_code2();
void copy_properties();
};
extern Fl_Menu_Item button_type_menu[];
@ -671,6 +674,7 @@ public:
Fl_Widget_Type *_make() {return new Fl_Input_Choice_Type();}
virtual void build_menu();
int pixmapID() { return 15; }
void copy_properties();
};
#include <FL/Fl_Window.H>

View File

@ -2315,25 +2315,12 @@ void Fl_Widget_Type::copy_properties() {
if (!live_widget)
return;
// copy all attributes common to all widget types
Fl_Widget *w = live_widget;
w->label(o->label());
w->tooltip(o->tooltip());
w->type(o->type());
w->box(o->box());
/* move this into the derived _type classes
if (is_button()) {
Fl_Button* d = (Fl_Button*)live_widget, *s = (Fl_Button*)o;
d->down_box(s->down_box());
d->shortcut(s->shortcut());
d->value(s->value());
} else if (!strcmp(type_name(), "Fl_Input_Choice")) {
Fl_Input_Choice* d = (Fl_Input_Choice*)live_widget, *s = (Fl_Input_Choice*)o;
d->down_box(s->down_box());
} else if (is_menu_button()) {
Fl_Menu_* d = (Fl_Menu_*)live_widget, *s = (Fl_Menu_*)o;
d->down_box(s->down_box());
}
*/
w->color(o->color());
w->selection_color(o->selection_color());
w->labeltype(o->labeltype());
@ -2341,28 +2328,38 @@ void Fl_Widget_Type::copy_properties() {
w->labelsize(o->labelsize());
w->labelcolor(o->labelcolor());
w->align(o->align());
/* move this into the derived _type classes
// copy all attributes specific to widgets derived from Fl_Button
if (is_button()) {
Fl_Button* d = (Fl_Button*)live_widget, *s = (Fl_Button*)o;
d->down_box(s->down_box());
d->shortcut(s->shortcut());
d->value(s->value());
}
// copy all attributes specific to Fl_Valuator and derived classes
if (is_valuator()) {
Fl_Valuator* d = (Fl_Valuator*)live_widget, *s = (Fl_Valuator*)o;
d->minimum(s->minimum());
d->maximum(s->maximum());
d->step(s->step());
d->value(s->value());
//if (is_valuator()==2) {
// double x = ((Fl_Slider*)v)->slider_size();
// double y = ((Fl_Slider*)f)->slider_size();
// if (x != y) write_string("slider_size %g", x);
//}
if (is_valuator()==2) {
Fl_Slider *d = (Fl_Slider*)live_widget, *s = (Fl_Slider*)o;
d->slider_size(s->slider_size());
}
}
*/
/* move this into the derived _type classes
/* TODO: implement this
{Fl_Font ff; int fs; Fl_Color fc; if (textstuff(4,ff,fs,fc)) {
Fl_Font f; int s; Fl_Color c; textstuff(0,f,s,c);
if (f != ff) write_string("textfont %d", f);
if (s != fs) write_string("textsize %d", s);
if (c != fc) write_string("textcolor %d", c);
}}*/
/// hmmm: if (!o->visible()) write_string("hide");
if (!o->visible())
w->hide();
if (!o->active())
w->deactivate();
if (resizable() && w->parent())