mirror of https://github.com/fltk/fltk
Enable all of the new FLUID stuff...
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@1590 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
50fc2f4806
commit
4c97599917
26
CHANGES
26
CHANGES
|
@ -1,8 +1,3 @@
|
|||
TODO - FLUID now provides on-line help.
|
||||
|
||||
TODO - FLUID now supports image labels in addition to text
|
||||
labels + text over image alignment.
|
||||
|
||||
TODO - Documentation updates.
|
||||
|
||||
|
||||
|
@ -12,25 +7,46 @@ CHANGES IN FLTK 1.1.0b2
|
|||
needed a non-blank text string to display the image.
|
||||
This bug also caused all sorts of crashes and display
|
||||
problems.
|
||||
|
||||
- Added new filetype() method to Fl_FileBrowser to allow
|
||||
for file or directory browsing.
|
||||
|
||||
- Fixed the drawing of the focus box around
|
||||
Fl_Return_Button.
|
||||
|
||||
- Fixed menu item measurement bug (wasn't initializing
|
||||
image pointers to 0...)
|
||||
|
||||
- Radio and checkbox menu items now draw with the new
|
||||
style (round radio buttons with dots and square check
|
||||
buttons with check marks.)
|
||||
|
||||
- Improved the appearance of Fl_Check_Button.
|
||||
|
||||
- Improved the Fl_HelpView table formatting code; now
|
||||
dynamically sizes the table columns, and supports
|
||||
COLSPAN.
|
||||
|
||||
- The FLUID keyboard shortcuts now work as expected
|
||||
(CTRL-C copies, SHIFT-CTRL-C writes code, etc.)
|
||||
|
||||
- The FLTK_DOCDIR environment variable can now be
|
||||
used to tell FLUID where to find the on-line
|
||||
documentation files.
|
||||
|
||||
- FLUID now supports image labels in addition to text
|
||||
labels + text over image alignment.
|
||||
|
||||
- FLUID now supports tooltips.
|
||||
|
||||
- The widget panel in FLUID is now tabbed, a la FLTK
|
||||
2.0.
|
||||
|
||||
- The FLUID pixmap destructor tried to free 1 too many
|
||||
lines of image data.
|
||||
|
||||
- FLUID now provides on-line help.
|
||||
|
||||
|
||||
CHANGES IN FLTK 1.1.0b1
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// "$Id: Fl_Type.h,v 1.5.2.11.2.1 2001/08/11 16:09:26 easysw Exp $"
|
||||
// "$Id: Fl_Type.h,v 1.5.2.11.2.2 2001/09/29 06:20:15 easysw Exp $"
|
||||
//
|
||||
// Widget type header file for the Fast Light Tool Kit (FLTK).
|
||||
//
|
||||
|
@ -227,6 +227,9 @@ class Fl_Widget_Type : public Fl_Type {
|
|||
|
||||
const char *extra_code_[NUM_EXTRA_CODE];
|
||||
const char *subclass_;
|
||||
const char *tooltip_;
|
||||
const char *image_name_;
|
||||
const char *inactive_name_;
|
||||
uchar hotspot_;
|
||||
|
||||
protected:
|
||||
|
@ -246,6 +249,8 @@ public:
|
|||
|
||||
Fluid_Image *image;
|
||||
void setimage(Fluid_Image *);
|
||||
Fluid_Image *inactive;
|
||||
void setinactive(Fluid_Image *);
|
||||
|
||||
Fl_Widget_Type();
|
||||
Fl_Type *make();
|
||||
|
@ -255,6 +260,12 @@ public:
|
|||
void extra_code(int n,const char *);
|
||||
const char *subclass() const {return subclass_;}
|
||||
void subclass(const char *);
|
||||
const char *tooltip() const {return tooltip_;}
|
||||
void tooltip(const char *);
|
||||
const char *image_name() const {return image_name_;}
|
||||
void image_name(const char *);
|
||||
const char *inactive_name() const {return inactive_name_;}
|
||||
void inactive_name(const char *);
|
||||
uchar hotspot() const {return hotspot_;}
|
||||
void hotspot(uchar v) {hotspot_ = v;}
|
||||
uchar resizable() const;
|
||||
|
@ -549,5 +560,5 @@ int storestring(const char *n, const char * & p, int nostrip=0);
|
|||
extern int include_H_from_C;
|
||||
|
||||
//
|
||||
// End of "$Id: Fl_Type.h,v 1.5.2.11.2.1 2001/08/11 16:09:26 easysw Exp $".
|
||||
// End of "$Id: Fl_Type.h,v 1.5.2.11.2.2 2001/09/29 06:20:15 easysw Exp $".
|
||||
//
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// "$Id: Fl_Widget_Type.cxx,v 1.15.2.16.2.2 2001/09/29 03:36:27 easysw Exp $"
|
||||
// "$Id: Fl_Widget_Type.cxx,v 1.15.2.16.2.3 2001/09/29 06:20:15 easysw Exp $"
|
||||
//
|
||||
// Widget type code for the Fast Light Tool Kit (FLTK).
|
||||
//
|
||||
|
@ -146,19 +146,20 @@ void Fl_Widget_Type::setimage(Fluid_Image *i) {
|
|||
if (image) image->decrement();
|
||||
if (i) i->increment();
|
||||
image = i;
|
||||
if (i) i->label(o);
|
||||
else o->labeltype(FL_NORMAL_LABEL);
|
||||
i->image(o);
|
||||
redraw();
|
||||
}
|
||||
|
||||
void Fl_Widget_Type::setinactive(Fluid_Image *i) {
|
||||
if (i == inactive) return;
|
||||
if (inactive) inactive->decrement();
|
||||
if (i) i->increment();
|
||||
inactive = i;
|
||||
i->deimage(o);
|
||||
redraw();
|
||||
}
|
||||
|
||||
static char dont_touch_image;
|
||||
void Fl_Widget_Type::setlabel(const char *n) {
|
||||
if (image) {
|
||||
if (dont_touch_image) return;
|
||||
Fluid_Image *i = Fluid_Image::find(n);
|
||||
setimage(i);
|
||||
if (i) return;
|
||||
}
|
||||
o->label(n);
|
||||
redraw();
|
||||
}
|
||||
|
@ -166,7 +167,11 @@ void Fl_Widget_Type::setlabel(const char *n) {
|
|||
Fl_Widget_Type::Fl_Widget_Type() {
|
||||
for (int n=0; n<NUM_EXTRA_CODE; n++) {extra_code_[n] = 0; subclass_ = 0;}
|
||||
hotspot_ = 0;
|
||||
tooltip_ = 0;
|
||||
image_name_ = 0;
|
||||
inactive_name_ = 0;
|
||||
image = 0;
|
||||
inactive = 0;
|
||||
xclass = 0;
|
||||
o = 0;
|
||||
public_ = 1;
|
||||
|
@ -190,6 +195,21 @@ void Fl_Widget_Type::subclass(const char *n) {
|
|||
redraw_browser();
|
||||
}
|
||||
|
||||
void Fl_Widget_Type::tooltip(const char *n) {
|
||||
storestring(n,tooltip_);
|
||||
o->tooltip(n);
|
||||
}
|
||||
|
||||
void Fl_Widget_Type::image_name(const char *n) {
|
||||
setimage(Fluid_Image::find(n));
|
||||
storestring(n,image_name_);
|
||||
}
|
||||
|
||||
void Fl_Widget_Type::inactive_name(const char *n) {
|
||||
setinactive(Fluid_Image::find(n));
|
||||
storestring(n,inactive_name_);
|
||||
}
|
||||
|
||||
void Fl_Widget_Type::redraw() {
|
||||
Fl_Type *t = this;
|
||||
if (is_menu_item()) {
|
||||
|
@ -296,15 +316,26 @@ static Fl_Input *image_input;
|
|||
void image_cb(Fl_Input* i, void *v) {
|
||||
if (v == LOAD) {
|
||||
image_input = i;
|
||||
// i->static_value(current_widget->label());
|
||||
if (current_widget->is_widget()) {
|
||||
i->activate();
|
||||
i->static_value(((Fl_Widget_Type*)current_widget)->image_name());
|
||||
} else i->deactivate();
|
||||
} else {
|
||||
// for (Fl_Type *o = Fl_Type::first; o; o = o->next)
|
||||
// if (o->selected && o->is_widget()) o->label(i->value());
|
||||
for (Fl_Type *o = Fl_Type::first; o; o = o->next)
|
||||
if (o->selected && o->is_widget()) ((Fl_Widget_Type*)o)->image_name(i->value());
|
||||
}
|
||||
}
|
||||
|
||||
void image_browse_cb(Fl_Button* b, void *v) {
|
||||
if (v != LOAD) {
|
||||
if (v == LOAD) {
|
||||
if (current_widget->is_widget()) b->activate();
|
||||
else b->deactivate();
|
||||
} else {
|
||||
if (ui_find_image(image_input->value())) {
|
||||
image_input->value(ui_find_image_name);
|
||||
for (Fl_Type *o = Fl_Type::first; o; o = o->next)
|
||||
if (o->selected && o->is_widget()) ((Fl_Widget_Type*)o)->image_name(ui_find_image_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -313,15 +344,41 @@ static Fl_Input *inactive_input;
|
|||
void inactive_cb(Fl_Input* i, void *v) {
|
||||
if (v == LOAD) {
|
||||
inactive_input = i;
|
||||
// i->static_value(current_widget->label());
|
||||
if (current_widget->is_widget()) {
|
||||
i->activate();
|
||||
i->static_value(((Fl_Widget_Type*)current_widget)->inactive_name());
|
||||
} else i->deactivate();
|
||||
} else {
|
||||
// for (Fl_Type *o = Fl_Type::first; o; o = o->next)
|
||||
// if (o->selected && o->is_widget()) o->label(i->value());
|
||||
for (Fl_Type *o = Fl_Type::first; o; o = o->next)
|
||||
if (o->selected && o->is_widget()) ((Fl_Widget_Type*)o)->inactive_name(i->value());
|
||||
}
|
||||
}
|
||||
|
||||
void inactive_browse_cb(Fl_Button* b, void *v) {
|
||||
if (v != LOAD) {
|
||||
if (v == LOAD) {
|
||||
if (current_widget->is_widget()) b->activate();
|
||||
else b->deactivate();
|
||||
} else {
|
||||
if (ui_find_image(inactive_input->value())) {
|
||||
inactive_input->value(ui_find_image_name);
|
||||
for (Fl_Type *o = Fl_Type::first; o; o = o->next)
|
||||
if (o->selected && o->is_widget()) ((Fl_Widget_Type*)o)->inactive_name(ui_find_image_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static Fl_Input *tooltip_input;
|
||||
|
||||
void tooltip_cb(Fl_Input* i, void *v) {
|
||||
if (v == LOAD) {
|
||||
tooltip_input = i;
|
||||
if (current_widget->is_widget()) {
|
||||
i->activate();
|
||||
i->static_value(((Fl_Widget_Type*)current_widget)->tooltip());
|
||||
} else i->deactivate();
|
||||
} else {
|
||||
for (Fl_Type *o = Fl_Type::first; o; o = o->next)
|
||||
if (o->selected && o->is_widget()) ((Fl_Widget_Type*)o)->tooltip(i->value());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -724,6 +781,7 @@ void labelsize_cb(Fl_Value_Input* i, void *v) {
|
|||
}
|
||||
|
||||
extern const char *ui_find_image_name;
|
||||
#if 0
|
||||
void image_cb(Fl_Widget *a, void *) {
|
||||
Fluid_Image *i = ui_find_image(current_widget->label());
|
||||
if (!ui_find_image_name) return; // user hit "Cancel"
|
||||
|
@ -740,11 +798,10 @@ void image_cb(Fl_Widget *a, void *) {
|
|||
label_cb(label_input,LOAD);
|
||||
a->when(FL_WHEN_RELEASE|FL_WHEN_NOT_CHANGED);
|
||||
}
|
||||
#endif /* 0 */
|
||||
|
||||
Fl_Menu_Item labeltypemenu[] = {
|
||||
{"Image...",0,image_cb,(void*)(-1)},
|
||||
{"NORMAL_LABEL",0,0,(void*)0},
|
||||
{"SYMBOL_LABEL",0,0,(void*)FL_SYMBOL_LABEL},
|
||||
{"SHADOW_LABEL",0,0,(void*)FL_SHADOW_LABEL},
|
||||
{"ENGRAVED_LABEL",0,0,(void*)FL_ENGRAVED_LABEL},
|
||||
{"EMBOSSED_LABEL",0,0,(void*)FL_EMBOSSED_LABEL},
|
||||
|
@ -754,27 +811,17 @@ Fl_Menu_Item labeltypemenu[] = {
|
|||
void labeltype_cb(Fl_Choice* i, void *v) {
|
||||
if (v == LOAD) {
|
||||
int n;
|
||||
if (current_widget->image) {
|
||||
n = -1;
|
||||
i->when(FL_WHEN_RELEASE|FL_WHEN_NOT_CHANGED);
|
||||
} else {
|
||||
n = current_widget->o->labeltype();
|
||||
i->when(FL_WHEN_RELEASE);
|
||||
}
|
||||
n = current_widget->o->labeltype();
|
||||
i->when(FL_WHEN_RELEASE);
|
||||
for (int j = 0; j < int(sizeof(labeltypemenu)/sizeof(*labeltypemenu)); j++)
|
||||
if (labeltypemenu[j].argument() == n) {i->value(j); break;}
|
||||
} else {
|
||||
int m = i->value();
|
||||
int n = int(labeltypemenu[m].argument());
|
||||
if (n<0) return; // should not happen
|
||||
if (current_widget->image) label_input->activate();
|
||||
for (Fl_Type *o = Fl_Type::first; o; o = o->next)
|
||||
if (o->selected && o->is_widget()) {
|
||||
Fl_Widget_Type* p = (Fl_Widget_Type*)o;
|
||||
if (p->image) {
|
||||
p->setimage(0);
|
||||
p->o->label(p->label());
|
||||
}
|
||||
p->o->labeltype((Fl_Labeltype)n);
|
||||
p->redraw();
|
||||
}
|
||||
|
@ -846,6 +893,7 @@ static Fl_Menu_Item alignmenu[] = {
|
|||
{"FL_ALIGN_INSIDE",0,0,(void*)(FL_ALIGN_INSIDE)},
|
||||
{"FL_ALIGN_CLIP",0,0,(void*)(FL_ALIGN_CLIP)},
|
||||
{"FL_ALIGN_WRAP",0,0,(void*)(FL_ALIGN_WRAP)},
|
||||
{"FL_ALIGN_TEXT_OVER_IMAGE",0,0,(void*)(FL_ALIGN_TEXT_OVER_IMAGE)},
|
||||
{"FL_ALIGN_TOP_LEFT",0,0,(void*)(FL_ALIGN_TOP_LEFT)},
|
||||
{"FL_ALIGN_TOP_RIGHT",0,0,(void*)(FL_ALIGN_TOP_RIGHT)},
|
||||
{"FL_ALIGN_BOTTOM_LEFT",0,0,(void*)(FL_ALIGN_BOTTOM_LEFT)},
|
||||
|
@ -1437,7 +1485,7 @@ void Fl_Widget_Type::write_code1() {
|
|||
} else {
|
||||
write_c("new %s(%d, %d, %d, %d", t, o->x(), o->y(), o->w(), o->h());
|
||||
}
|
||||
if (!image && label() && *label()) {
|
||||
if (label() && *label()) {
|
||||
write_c(", ");
|
||||
switch (i18n_type) {
|
||||
case 0 : /* None */
|
||||
|
@ -1458,6 +1506,7 @@ void Fl_Widget_Type::write_code1() {
|
|||
}
|
||||
write_c(");\n");
|
||||
indentation += 2;
|
||||
|
||||
if (is_window()) write_c("%sw = o;\n",indent());
|
||||
if (varused) write_widget_code();
|
||||
}
|
||||
|
@ -1465,6 +1514,27 @@ void Fl_Widget_Type::write_code1() {
|
|||
// this is split from write_code1() for Fl_Window_Type:
|
||||
void Fl_Widget_Type::write_widget_code() {
|
||||
Fl_Widget* tplate = ((Fl_Widget_Type*)factory)->o;
|
||||
if (tooltip() && *tooltip()) {
|
||||
write_c("%so->tooltip(",indent());
|
||||
switch (i18n_type) {
|
||||
case 0 : /* None */
|
||||
write_cstring(tooltip());
|
||||
break;
|
||||
case 1 : /* GNU gettext */
|
||||
write_c("%s(", i18n_function);
|
||||
write_cstring(tooltip());
|
||||
write_c(")");
|
||||
break;
|
||||
case 2 : /* POSIX catgets */
|
||||
write_c("catgets(%s,%s,%d,", i18n_file[0] ? i18n_file : "_catalog",
|
||||
i18n_set, msgnum());
|
||||
write_cstring(tooltip());
|
||||
write_c(")");
|
||||
break;
|
||||
}
|
||||
write_c(");\n");
|
||||
}
|
||||
|
||||
if (o->type() != tplate->type() && !is_window())
|
||||
write_c("%so->type(%d);\n", indent(), o->type());
|
||||
if (o->box() != tplate->box())
|
||||
|
@ -1486,9 +1556,9 @@ void Fl_Widget_Type::write_widget_code() {
|
|||
write_c("%so->color(%d);\n", indent(), o->color());
|
||||
if (o->selection_color() != tplate->selection_color())
|
||||
write_c("%so->selection_color(%d);\n", indent(), o->selection_color());
|
||||
if (image)
|
||||
image->write_code();
|
||||
else if (o->labeltype() != tplate->labeltype())
|
||||
if (image) image->write_code();
|
||||
if (inactive) inactive->write_code(1);
|
||||
if (o->labeltype() != tplate->labeltype())
|
||||
write_c("%so->labeltype(FL_%s);\n", indent(),
|
||||
item_name(labeltypemenu, o->labeltype()));
|
||||
if (o->labelfont() != tplate->labelfont())
|
||||
|
@ -1572,6 +1642,18 @@ void Fl_Widget_Type::write_properties() {
|
|||
Fl_Type::write_properties();
|
||||
write_indent(level+1);
|
||||
if (!public_) write_string("private");
|
||||
if (tooltip() && *tooltip()) {
|
||||
write_string("tooltip");
|
||||
write_word(o->tooltip());
|
||||
}
|
||||
if (image_name() && *image_name()) {
|
||||
write_string("image");
|
||||
write_word(image_name());
|
||||
}
|
||||
if (inactive_name() && *inactive_name()) {
|
||||
write_string("deimage");
|
||||
write_word(inactive_name());
|
||||
}
|
||||
write_string("xywh {%d %d %d %d}", o->x(), o->y(), o->w(), o->h());
|
||||
Fl_Widget* tplate = ((Fl_Widget_Type*)factory)->o;
|
||||
if (o->type() != tplate->type()) {
|
||||
|
@ -1596,9 +1678,7 @@ void Fl_Widget_Type::write_properties() {
|
|||
write_string("color %d", o->color());
|
||||
if (o->selection_color()!=tplate->selection_color())
|
||||
write_string("selection_color %d", o->selection_color());
|
||||
if (image)
|
||||
write_string("labeltype image");
|
||||
else if (o->labeltype()!=tplate->labeltype()) {
|
||||
if (o->labeltype()!=tplate->labeltype()) {
|
||||
write_string("labeltype");
|
||||
write_word(item_name(labeltypemenu, o->labeltype()));
|
||||
}
|
||||
|
@ -1659,6 +1739,12 @@ void Fl_Widget_Type::read_property(const char *c) {
|
|||
y += pasteoffset;
|
||||
o->resize(x,y,w,h);
|
||||
}
|
||||
} else if (!strcmp(c,"tooltip")) {
|
||||
tooltip(read_word());
|
||||
} else if (!strcmp(c,"image")) {
|
||||
image_name(read_word());
|
||||
} else if (!strcmp(c,"deimage")) {
|
||||
inactive_name(read_word());
|
||||
} else if (!strcmp(c,"type")) {
|
||||
o->type(item_number(subtypes(), read_word()));
|
||||
} else if (!strcmp(c,"box")) {
|
||||
|
@ -1698,6 +1784,8 @@ void Fl_Widget_Type::read_property(const char *c) {
|
|||
Fluid_Image *i = Fluid_Image::find(label());
|
||||
if (!i) read_error("Image file '%s' not found", label());
|
||||
else setimage(i);
|
||||
image_name(label());
|
||||
label("");
|
||||
} else {
|
||||
o->labeltype((Fl_Labeltype)item_number(labeltypemenu,c));
|
||||
}
|
||||
|
@ -1791,7 +1879,6 @@ int Fl_Widget_Type::read_fdesign(const char* name, const char* value) {
|
|||
}
|
||||
} else if (!strcmp(name,"label")) {
|
||||
label(value);
|
||||
if (value[0] == '@') o->labeltype(FL_SYMBOL_LABEL);
|
||||
} else if (!strcmp(name,"name")) {
|
||||
this->name(value);
|
||||
} else if (!strcmp(name,"callback")) {
|
||||
|
@ -1868,5 +1955,5 @@ int Fl_Widget_Type::read_fdesign(const char* name, const char* value) {
|
|||
}
|
||||
|
||||
//
|
||||
// End of "$Id: Fl_Widget_Type.cxx,v 1.15.2.16.2.2 2001/09/29 03:36:27 easysw Exp $".
|
||||
// End of "$Id: Fl_Widget_Type.cxx,v 1.15.2.16.2.3 2001/09/29 06:20:15 easysw Exp $".
|
||||
//
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// "$Id: Fluid_Image.cxx,v 1.7.2.9.2.1 2001/08/05 23:58:54 easysw Exp $"
|
||||
// "$Id: Fluid_Image.cxx,v 1.7.2.9.2.2 2001/09/29 06:20:15 easysw Exp $"
|
||||
//
|
||||
// Pixmap label support for the Fast Light Tool Kit (FLTK).
|
||||
//
|
||||
|
@ -48,9 +48,10 @@ protected:
|
|||
public:
|
||||
pixmap_image(const char *name, FILE *);
|
||||
~pixmap_image();
|
||||
virtual void label(Fl_Widget *); // set the label of this widget
|
||||
virtual void image(Fl_Widget *); // set the image of this widget
|
||||
virtual void deimage(Fl_Widget *); // set the deimage of this widget
|
||||
virtual void write_static();
|
||||
virtual void write_code();
|
||||
virtual void write_code(int inactive = 0);
|
||||
static int test_file(char *buffer);
|
||||
};
|
||||
|
||||
|
@ -58,8 +59,12 @@ int pixmap_image::test_file(char *buffer) {
|
|||
return (strstr(buffer,"/* XPM") != 0);
|
||||
}
|
||||
|
||||
void pixmap_image::label(Fl_Widget *o) {
|
||||
if (p) p->label(o);
|
||||
void pixmap_image::image(Fl_Widget *o) {
|
||||
o->image(p);
|
||||
}
|
||||
|
||||
void pixmap_image::deimage(Fl_Widget *o) {
|
||||
o->deimage(p);
|
||||
}
|
||||
|
||||
static int pixmap_header_written;
|
||||
|
@ -84,9 +89,9 @@ void pixmap_image::write_static() {
|
|||
unique_id(this, "image", filename_name(name()), 0));
|
||||
}
|
||||
|
||||
void pixmap_image::write_code() {
|
||||
void pixmap_image::write_code(int inactive) {
|
||||
if (!p) return;
|
||||
write_c("%s%s.label(o);\n", indent(),
|
||||
write_c("%so->%s(%s);\n", indent(), inactive ? "deimage" : "image",
|
||||
unique_id(this, "pixmap", filename_name(name()), 0));
|
||||
}
|
||||
|
||||
|
@ -101,6 +106,10 @@ static int hexdigit(int x) {
|
|||
#define INITIALLINES 1024
|
||||
|
||||
pixmap_image::pixmap_image(const char *name, FILE *f) : Fluid_Image(name) {
|
||||
p = 0;
|
||||
numlines = 0;
|
||||
linelength = 0;
|
||||
|
||||
if (!f) return; // for subclasses
|
||||
// read all the c-strings out of the file:
|
||||
char* local_data[INITIALLINES];
|
||||
|
@ -181,7 +190,7 @@ pixmap_image::pixmap_image(const char *name, FILE *f) : Fluid_Image(name) {
|
|||
pixmap_image::~pixmap_image() {
|
||||
if (p && p->data) {
|
||||
char** real_data = (char**)(p->data);
|
||||
for (int i = 0; real_data[i]; i++) delete[] real_data[i];
|
||||
for (int i = 0; i < numlines; i++) delete[] real_data[i];
|
||||
free((void*)real_data);
|
||||
}
|
||||
free((void*)linelength);
|
||||
|
@ -234,9 +243,10 @@ class bitmap_image : public Fluid_Image {
|
|||
public:
|
||||
~bitmap_image();
|
||||
bitmap_image(const char *name, FILE *);
|
||||
virtual void label(Fl_Widget *); // set the label of this widget
|
||||
virtual void image(Fl_Widget *); // set the image of this widget
|
||||
virtual void deimage(Fl_Widget *); // set the deimage of this widget
|
||||
virtual void write_static();
|
||||
virtual void write_code();
|
||||
virtual void write_code(int inactive = 0);
|
||||
static int test_file(char *buffer);
|
||||
};
|
||||
|
||||
|
@ -245,8 +255,12 @@ int bitmap_image::test_file(char *buffer) {
|
|||
return (strstr(buffer,"#define ") != 0);
|
||||
}
|
||||
|
||||
void bitmap_image::label(Fl_Widget *o) {
|
||||
if (p) p->label(o); else o->labeltype(FL_NORMAL_LABEL);
|
||||
void bitmap_image::image(Fl_Widget *o) {
|
||||
o->image(p);
|
||||
}
|
||||
|
||||
void bitmap_image::deimage(Fl_Widget *o) {
|
||||
o->deimage(p);
|
||||
}
|
||||
|
||||
static int bitmap_header_written;
|
||||
|
@ -284,9 +298,9 @@ void bitmap_image::write_static() {
|
|||
p->w(), p->h());
|
||||
}
|
||||
|
||||
void bitmap_image::write_code() {
|
||||
void bitmap_image::write_code(int inactive) {
|
||||
if (!p) return;
|
||||
write_c("%s%s.label(o);\n", indent(),
|
||||
write_c("%so->%s(%s);\n", indent(), inactive ? "deimage" : "image",
|
||||
unique_id(this, "bitmap", filename_name(name()), 0));
|
||||
}
|
||||
|
||||
|
@ -436,5 +450,5 @@ Fluid_Image *ui_find_image(const char *oldname) {
|
|||
}
|
||||
|
||||
//
|
||||
// End of "$Id: Fluid_Image.cxx,v 1.7.2.9.2.1 2001/08/05 23:58:54 easysw Exp $".
|
||||
// End of "$Id: Fluid_Image.cxx,v 1.7.2.9.2.2 2001/09/29 06:20:15 easysw Exp $".
|
||||
//
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// "$Id: Fluid_Image.h,v 1.3.2.4 2001/01/22 15:13:38 easysw Exp $"
|
||||
// "$Id: Fluid_Image.h,v 1.3.2.4.2.1 2001/09/29 06:20:15 easysw Exp $"
|
||||
//
|
||||
// Pixmap image header file for the Fast Light Tool Kit (FLTK).
|
||||
//
|
||||
|
@ -43,18 +43,20 @@ public:
|
|||
static Fluid_Image* find(const char *);
|
||||
void decrement(); // reference counting & automatic free
|
||||
void increment();
|
||||
virtual void label(Fl_Widget *) = 0; // set the label of this widget
|
||||
virtual void image(Fl_Widget *) = 0; // set the image of this widget
|
||||
virtual void deimage(Fl_Widget *) = 0; // set the deimage of this widget
|
||||
virtual void write_static() = 0;
|
||||
virtual void write_code() = 0;
|
||||
virtual void write_code(int inactive = 0) = 0;
|
||||
const char *name() const {return name_;}
|
||||
};
|
||||
|
||||
// pop up file chooser and return a legal image selected by user,
|
||||
// or zero for any errors:
|
||||
Fluid_Image *ui_find_image(const char *);
|
||||
extern const char *ui_find_image_name;
|
||||
|
||||
#endif
|
||||
|
||||
//
|
||||
// End of "$Id: Fluid_Image.h,v 1.3.2.4 2001/01/22 15:13:38 easysw Exp $".
|
||||
// End of "$Id: Fluid_Image.h,v 1.3.2.4.2.1 2001/09/29 06:20:15 easysw Exp $".
|
||||
//
|
||||
|
|
|
@ -31,16 +31,16 @@ Fl_Window* make_widget_panel() {
|
|||
}
|
||||
{ Fl_Input* o = new Fl_Input(95, 65, 195, 20, "Image:");
|
||||
o->callback((Fl_Callback*)image_cb);
|
||||
o->when(FL_WHEN_CHANGED);
|
||||
}
|
||||
{ Fl_Button* o = new Fl_Button(290, 65, 105, 20, "Browse...");
|
||||
o->tooltip("}");
|
||||
o->callback((Fl_Callback*)image_browse_cb);
|
||||
}
|
||||
{ Fl_Input* o = new Fl_Input(95, 90, 195, 20, "Inactive:");
|
||||
o->callback((Fl_Callback*)inactive_cb);
|
||||
o->when(FL_WHEN_CHANGED);
|
||||
}
|
||||
{ Fl_Button* o = new Fl_Button(290, 90, 105, 20, "Browse...");
|
||||
o->tooltip("}");
|
||||
o->callback((Fl_Callback*)inactive_browse_cb);
|
||||
}
|
||||
{ Fl_Value_Input* o = new Fl_Value_Input(95, 150, 60, 20, "X:");
|
||||
|
@ -87,7 +87,7 @@ Fl_Window* make_widget_panel() {
|
|||
{ Fl_Button* o = new Fl_Button(175, 115, 55, 20, "text\nimage");
|
||||
o->type(1);
|
||||
o->labelsize(8);
|
||||
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_WRAP));
|
||||
o->callback((Fl_Callback*)align_cb, (void*)(FL_ALIGN_TEXT_OVER_IMAGE));
|
||||
}
|
||||
{ Fl_Button* o = new Fl_Button(295, 115, 20, 20, "@-1<-");
|
||||
o->type(1);
|
||||
|
@ -204,9 +204,11 @@ Fl_Window* make_widget_panel() {
|
|||
}
|
||||
{ Fl_Input* o = new Fl_Input(95, 235, 115, 20, "X Class:");
|
||||
o->callback((Fl_Callback*)xclass_cb);
|
||||
o->when(FL_WHEN_NEVER);
|
||||
}
|
||||
new Fl_Input(95, 285, 300, 20, "Tooltip:");
|
||||
{ Fl_Input* o = new Fl_Input(95, 285, 300, 20, "Tooltip:");
|
||||
o->tooltip("}");
|
||||
o->callback((Fl_Callback*)tooltip_cb);
|
||||
}
|
||||
o->end();
|
||||
}
|
||||
{ Fl_Group* o = new Fl_Group(10, 30, 395, 295, "Style");
|
||||
|
@ -273,7 +275,6 @@ Fl_Window* make_widget_panel() {
|
|||
o->hide();
|
||||
{ Fl_Input* o = new Fl_Input(100, 65, 230, 20, "Name:");
|
||||
o->callback((Fl_Callback*)name_cb);
|
||||
o->when(FL_WHEN_NEVER);
|
||||
}
|
||||
{ Fl_Light_Button* o = new Fl_Light_Button(330, 65, 65, 20, "public");
|
||||
o->selection_color(1);
|
||||
|
@ -284,7 +285,6 @@ Fl_Window* make_widget_panel() {
|
|||
{ Fl_Input* o = new Fl_Input(100, 40, 160, 20, "Class:");
|
||||
o->textfont(4);
|
||||
o->callback((Fl_Callback*)subclass_cb, (void*)(4));
|
||||
o->when(FL_WHEN_NEVER);
|
||||
}
|
||||
{ Fl_Choice* o = new Fl_Choice(260, 40, 135, 20);
|
||||
o->box(FL_THIN_UP_BOX);
|
||||
|
@ -294,22 +294,18 @@ Fl_Window* make_widget_panel() {
|
|||
{ Fl_Input* o = v_input[0] = new Fl_Input(100, 90, 295, 20, "Extra Code:");
|
||||
o->textfont(4);
|
||||
o->callback((Fl_Callback*)v_input_cb, (void*)(0));
|
||||
o->when(FL_WHEN_NEVER);
|
||||
}
|
||||
{ Fl_Input* o = v_input[1] = new Fl_Input(100, 110, 295, 20);
|
||||
o->textfont(4);
|
||||
o->callback((Fl_Callback*)v_input_cb, (void*)(1));
|
||||
o->when(FL_WHEN_NEVER);
|
||||
}
|
||||
{ Fl_Input* o = v_input[2] = new Fl_Input(100, 130, 295, 20);
|
||||
o->textfont(4);
|
||||
o->callback((Fl_Callback*)v_input_cb, (void*)(2));
|
||||
o->when(FL_WHEN_NEVER);
|
||||
}
|
||||
{ Fl_Input* o = v_input[3] = new Fl_Input(100, 150, 295, 20);
|
||||
o->textfont(4);
|
||||
o->callback((Fl_Callback*)v_input_cb, (void*)(3));
|
||||
o->when(FL_WHEN_NEVER);
|
||||
}
|
||||
{ Fl_Box* o = new Fl_Box(20, 175, 75, 20, "Callback:");
|
||||
o->align(FL_ALIGN_RIGHT|FL_ALIGN_INSIDE);
|
||||
|
@ -318,7 +314,6 @@ Fl_Window* make_widget_panel() {
|
|||
o->type(4);
|
||||
o->textfont(4);
|
||||
o->callback((Fl_Callback*)callback_cb);
|
||||
o->when(FL_WHEN_NEVER);
|
||||
}
|
||||
{ Fl_Box* o = new Fl_Box(95, 325, 100, 0, "label");
|
||||
o->hide();
|
||||
|
@ -327,18 +322,16 @@ Fl_Window* make_widget_panel() {
|
|||
{ Fl_Input* o = new Fl_Input(100, 270, 140, 20, "User Data:");
|
||||
o->textfont(4);
|
||||
o->callback((Fl_Callback*)user_data_cb);
|
||||
o->when(FL_WHEN_NEVER);
|
||||
}
|
||||
{ Fl_Input* o = new Fl_Input(100, 295, 140, 20, "Type:");
|
||||
o->textfont(4);
|
||||
o->callback((Fl_Callback*)user_data_type_cb);
|
||||
o->when(FL_WHEN_NEVER);
|
||||
}
|
||||
{ Fl_Choice* o = new Fl_Choice(290, 270, 105, 20, "When:");
|
||||
o->box(FL_THIN_UP_BOX);
|
||||
o->down_box(FL_BORDER_BOX);
|
||||
o->callback((Fl_Callback*)when_cb);
|
||||
o->when(FL_WHEN_NEVER);
|
||||
o->when(FL_WHEN_CHANGED);
|
||||
o->menu(whenmenu);
|
||||
}
|
||||
{ Fl_Light_Button* o = new Fl_Light_Button(290, 295, 105, 20, "No Change");
|
||||
|
|
|
@ -33,41 +33,41 @@ Function {make_widget_panel()} {open
|
|||
Fl_Input {} {
|
||||
label {Image:}
|
||||
callback image_cb
|
||||
xywh {95 65 195 20} when 1
|
||||
xywh {95 65 195 20}
|
||||
}
|
||||
Fl_Button {} {
|
||||
label {Browse...}
|
||||
callback image_browse_cb
|
||||
xywh {290 65 105 20}
|
||||
tooltip {\}} xywh {290 65 105 20}
|
||||
}
|
||||
Fl_Input {} {
|
||||
label {Inactive:}
|
||||
callback inactive_cb
|
||||
xywh {95 90 195 20} when 1
|
||||
xywh {95 90 195 20}
|
||||
}
|
||||
Fl_Button {} {
|
||||
label {Browse...}
|
||||
callback inactive_browse_cb
|
||||
xywh {290 90 105 20}
|
||||
tooltip {\}} xywh {290 90 105 20}
|
||||
}
|
||||
Fl_Value_Input {} {
|
||||
label {X:}
|
||||
callback x_cb selected
|
||||
callback x_cb
|
||||
xywh {95 150 60 20} labelsize 10 align 5 maximum 2048 step 1
|
||||
}
|
||||
Fl_Value_Input {} {
|
||||
label {Y:}
|
||||
callback y_cb selected
|
||||
callback y_cb
|
||||
xywh {155 150 60 20} labelsize 10 align 5 maximum 2048 step 1
|
||||
}
|
||||
Fl_Value_Input {} {
|
||||
label {Width:}
|
||||
callback w_cb selected
|
||||
callback w_cb
|
||||
xywh {215 150 60 20} labelsize 10 align 5 maximum 2048 step 1
|
||||
}
|
||||
Fl_Value_Input {} {
|
||||
label {Height:}
|
||||
callback h_cb selected
|
||||
callback h_cb
|
||||
xywh {275 150 60 20} labelsize 10 align 5 maximum 2048 step 1
|
||||
}
|
||||
Fl_Group {} {
|
||||
|
@ -90,7 +90,7 @@ Function {make_widget_panel()} {open
|
|||
Fl_Button {} {
|
||||
label {text
|
||||
image}
|
||||
user_data FL_ALIGN_WRAP
|
||||
user_data FL_ALIGN_TEXT_OVER_IMAGE
|
||||
callback align_cb
|
||||
xywh {175 115 55 20} type Toggle labelsize 8
|
||||
}
|
||||
|
@ -212,11 +212,12 @@ image}
|
|||
Fl_Input {} {
|
||||
label {X Class:}
|
||||
callback xclass_cb
|
||||
xywh {95 235 115 20} when 0
|
||||
xywh {95 235 115 20}
|
||||
}
|
||||
Fl_Input {} {
|
||||
label {Tooltip:}
|
||||
xywh {95 285 300 20}
|
||||
callback tooltip_cb
|
||||
tooltip {\}} xywh {95 285 300 20}
|
||||
}
|
||||
}
|
||||
Fl_Group {} {
|
||||
|
@ -289,7 +290,7 @@ image}
|
|||
Fl_Input {} {
|
||||
label {Name:}
|
||||
callback name_cb
|
||||
xywh {100 65 230 20} when 0
|
||||
xywh {100 65 230 20}
|
||||
}
|
||||
Fl_Light_Button {} {
|
||||
label public
|
||||
|
@ -300,7 +301,7 @@ image}
|
|||
label {Class:}
|
||||
user_data 4
|
||||
callback subclass_cb
|
||||
xywh {100 40 160 20} when 0 textfont 4
|
||||
xywh {100 40 160 20} textfont 4
|
||||
}
|
||||
Fl_Choice {} {
|
||||
callback subtype_cb open
|
||||
|
@ -310,22 +311,22 @@ image}
|
|||
label {Extra Code:}
|
||||
user_data 0
|
||||
callback v_input_cb
|
||||
xywh {100 90 295 20} when 0 textfont 4
|
||||
xywh {100 90 295 20} textfont 4
|
||||
}
|
||||
Fl_Input {v_input[1]} {
|
||||
user_data 1
|
||||
callback v_input_cb
|
||||
xywh {100 110 295 20} when 0 textfont 4
|
||||
xywh {100 110 295 20} textfont 4
|
||||
}
|
||||
Fl_Input {v_input[2]} {
|
||||
user_data 2
|
||||
callback v_input_cb
|
||||
xywh {100 130 295 20} when 0 textfont 4
|
||||
xywh {100 130 295 20} textfont 4
|
||||
}
|
||||
Fl_Input {v_input[3]} {
|
||||
user_data 3
|
||||
callback v_input_cb
|
||||
xywh {100 150 295 20} when 0 textfont 4
|
||||
xywh {100 150 295 20} textfont 4
|
||||
}
|
||||
Fl_Box {} {
|
||||
label {Callback:}
|
||||
|
@ -333,7 +334,7 @@ image}
|
|||
}
|
||||
Fl_Input {} {
|
||||
callback callback_cb
|
||||
xywh {100 175 295 90} type Multiline when 0 textfont 4
|
||||
xywh {100 175 295 90} type Multiline textfont 4
|
||||
}
|
||||
Fl_Box {} {
|
||||
label label
|
||||
|
@ -342,17 +343,17 @@ image}
|
|||
Fl_Input {} {
|
||||
label {User Data:}
|
||||
callback user_data_cb
|
||||
xywh {100 270 140 20} when 0 textfont 4
|
||||
xywh {100 270 140 20} textfont 4
|
||||
}
|
||||
Fl_Input {} {
|
||||
label {Type:}
|
||||
callback user_data_type_cb
|
||||
xywh {100 295 140 20} when 0 textfont 4
|
||||
xywh {100 295 140 20} textfont 4
|
||||
}
|
||||
Fl_Choice {} {
|
||||
label {When:}
|
||||
callback when_cb open
|
||||
xywh {290 270 105 20} box THIN_UP_BOX down_box BORDER_BOX when 0
|
||||
xywh {290 270 105 20} box THIN_UP_BOX down_box BORDER_BOX when 1
|
||||
code0 {extern Fl_Menu_Item whenmenu[];}
|
||||
code1 {o->menu(whenmenu);}
|
||||
} {}
|
||||
|
@ -383,7 +384,7 @@ image}
|
|||
}
|
||||
Fl_Return_Button {} {
|
||||
label OK
|
||||
callback ok_cb
|
||||
callback ok_cb selected
|
||||
xywh {240 335 80 25}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@ extern void active_cb(Fl_Light_Button*, void*);
|
|||
extern void resizable_cb(Fl_Light_Button*, void*);
|
||||
extern void hotspot_cb(Fl_Light_Button*, void*);
|
||||
extern void xclass_cb(Fl_Input*, void*);
|
||||
extern void tooltip_cb(Fl_Input*, void*);
|
||||
extern Fl_Menu_Item fontmenu[];
|
||||
extern void labelfont_cb(Fl_Choice*, void*);
|
||||
extern void labelsize_cb(Fl_Value_Input*, void*);
|
||||
|
|
Loading…
Reference in New Issue