FLUID: Create VisualStudio compatible long strings

Better labels on FLUDI image properties dialog
Better documentation on image compression
This commit is contained in:
Matthias Melcher 2024-04-19 14:30:47 +02:00
parent 15d9a350bf
commit 2eb5d175fd
11 changed files with 1965 additions and 1366 deletions

View File

@ -503,7 +503,7 @@ void compress_image_cb(Fl_Check_Button* b, void *v) {
if (v == LOAD) {
if (current_widget->is_widget() && !current_widget->is_a(ID_Window)) {
b->activate();
b->value(current_widget->compress_image_);
b->value(!current_widget->compress_image_);
} else {
b->deactivate();
}
@ -511,7 +511,7 @@ void compress_image_cb(Fl_Check_Button* b, void *v) {
int mod = 0;
for (Fl_Type *o = Fl_Type::first; o; o = o->next) {
if (o->selected && o->is_widget()) {
((Fl_Widget_Type*)o)->compress_image_ = b->value();
((Fl_Widget_Type*)o)->compress_image_ = !b->value();
mod = 1;
}
}
@ -585,7 +585,7 @@ void compress_deimage_cb(Fl_Check_Button* b, void *v) {
if (v == LOAD) {
if (current_widget->is_widget() && !current_widget->is_a(ID_Window)) {
b->activate();
b->value(current_widget->compress_deimage_);
b->value(!current_widget->compress_deimage_);
} else {
b->deactivate();
}
@ -593,7 +593,7 @@ void compress_deimage_cb(Fl_Check_Button* b, void *v) {
int mod = 0;
for (Fl_Type *o = Fl_Type::first; o; o = o->next) {
if (o->selected && o->is_widget()) {
((Fl_Widget_Type*)o)->compress_deimage_ = b->value();
((Fl_Widget_Type*)o)->compress_deimage_ = !b->value();
mod = 1;
}
}
@ -3432,6 +3432,7 @@ void Fl_Widget_Type::read_property(Fd_Project_Reader &f, const char *c) {
// the code below is for compatibility with older .fl files
const char *ext = fl_filename_ext(image_name_);
if ( strcmp(ext, ".jpg")
&& strcmp(ext, ".png")
&& strcmp(ext, ".svg")
&& strcmp(ext, ".svgz"))
compress_image_ = 0; // if it is neither of those, default to uncompressed
@ -3450,6 +3451,7 @@ void Fl_Widget_Type::read_property(Fd_Project_Reader &f, const char *c) {
// the code below is for compatibility with older .fl files
const char *ext = fl_filename_ext(inactive_name_);
if ( strcmp(ext, ".jpg")
&& strcmp(ext, ".png")
&& strcmp(ext, ".svg")
&& strcmp(ext, ".svgz"))
compress_deimage_ = 0; // if it is neither of those, default to uncompressed

File diff suppressed because it is too large Load Diff

View File

@ -35,7 +35,7 @@ if (!cbuf[0]) {
sprintf(cbuf, "Copyright © 1998 - %d\\nby Bill Spitzak and others", lt->tm_year+1900);
}} {}
Fl_Window about_panel {
label {About FLUID} open selected
label {About FLUID} open
xywh {449 217 345 180} type Double color 50 selection_color 47 hotspot
code0 {\#include "../src/flstring.h"} non_modal visible
} {
@ -71,6 +71,6 @@ Version x.x.x}
}
}
data fluid_org_png {
comment {Embedded image for internal fluid.html web page.} public local filename {../documentation/src/fluid-org.png}
data fluid_flow_chart_800_png {
comment {Embedded image for internal fluid.html web page.} selected public local filename {documentation/src/fluid_flow_chart_800.png}
}

View File

@ -28,5 +28,5 @@ extern Fl_Double_Window *about_panel;
#include <FL/Fl_Button.H>
#include <FL/Fl_Return_Button.H>
Fl_Double_Window* make_about_panel();
extern unsigned char fluid_org_png[27580];
extern unsigned char fluid_flow_chart_800_png[41559];
#endif

View File

@ -394,7 +394,8 @@ bool Fd_Code_Writer::c_contains(void *pp) {
/**
Write a C string to the code file, escaping non-ASCII characters.
Adds " before and after the text.
Text is broken into lines of 78 character.
FLUID " before and after every line text.
A list of control characters and ", ', and \\ are escaped by adding a \\ in
front of them. Escape ?? by writing ?\\?. All other characters that are not
@ -408,6 +409,7 @@ bool Fd_Code_Writer::c_contains(void *pp) {
\see f.write_cstring(const char*)
*/
void Fd_Code_Writer::write_cstring(const char *s, int length) {
const char *next_line = "\"\n\"";
if (varused_test) {
varused = 1;
return;
@ -443,7 +445,7 @@ void Fd_Code_Writer::write_cstring(const char *s, int length) {
case '\'':
case '\\':
QUOTED:
if (linelength >= 77) { crc_puts("\\\n"); linelength = 0; }
if (linelength >= 77) { crc_puts(next_line); linelength = 0; }
crc_putc('\\');
crc_putc(c);
linelength += 2;
@ -454,47 +456,28 @@ void Fd_Code_Writer::write_cstring(const char *s, int length) {
default:
if (c >= ' ' && c < 127) {
// a legal ASCII character
if (linelength >= 78) { crc_puts("\\\n"); linelength = 0; }
if (linelength >= 78) { crc_puts(next_line); linelength = 0; }
crc_putc(c);
linelength++;
break;
}
// if the UTF-8 option is checked, write unicode characters verbatim
if (g_project.utf8_in_src && (c&0x80)) {
if ((c&0x40)) {
// This is the first character in a utf-8 sequence (0b11......).
// A line break would be ok here. Do not put linebreak in front of
// following characters (0b10......)
if (linelength >= 78) { crc_puts("\\\n"); linelength = 0; }
}
crc_putc(c);
linelength++;
break;
if (g_project.utf8_in_src && (c&0x80)) {
if ((c&0x40)) {
// This is the first character in a utf-8 sequence (0b11......).
// A line break would be ok here. Do not put linebreak in front of
// following characters (0b10......)
if (linelength >= 78) { crc_puts(next_line); linelength = 0; }
}
crc_putc(c);
linelength++;
break;
}
// otherwise we must print it as an octal constant:
c &= 255;
if (c < 8) {
if (linelength >= 76) { crc_puts("\\\n"); linelength = 0; }
crc_printf("\\%o", c);
linelength += 2;
} else if (c < 64) {
if (linelength >= 75) { crc_puts("\\\n"); linelength = 0; }
crc_printf("\\%o", c);
linelength += 3;
} else {
if (linelength >= 74) { crc_puts("\\\n"); linelength = 0; }
crc_printf("\\%o", c);
linelength += 4;
}
// We must not put more numbers after it, because some C compilers
// consume them as part of the quoted sequence. Use string constant
// pasting to avoid this:
c = *p;
if (p < e && ( (c>='0'&&c<='9') || (c>='a'&&c<='f') || (c>='A'&&c<='F') )) {
crc_putc('\"'); linelength++;
if (linelength >= 79) { crc_puts("\n"); linelength = 0; }
crc_putc('\"'); linelength++;
}
if (linelength >= 74) { crc_puts(next_line); linelength = 0; }
crc_printf("\\%03o", c);
linelength += 4;
break;
}
}

View File

@ -86,12 +86,25 @@
file name, so you will need the image files as well to read a project file.
FLUID can read XBM bitmap files, XPM pixmaps with a transparency channel, and
all other types supported by the FLTK image extension. FLUID stores images
as bitmaps or RGB data by default. If *compressed* is selected in the image
properties field, the image is stored in its original format, and
the FLTK-images library must be linked to decompress the image at runtime.
all other types supported by the FLTK image extension. Images can be stored
in their original file format, or converted into their uncompressed rgb or
grayscale pixel data, with or without alpha channel. By default, image
files ending in .jpg, .png, .svg, and .svgz are stored as they are. All other
formats are converted to pixel data. The storage format can be manually
selected in the "convert to raw pixel data" checkbox in the image properties
dialog.
Images are stored at their original resolution. The image properties dialog
Images stored in their original format are usually compressed well and take a
lot less space, but they also require that the fltk-image library and all its
dependencies are linked to the application. Storing uncompressed pixel data
increases the size of the application, but has less dependencies and
saves time when launching because images don;t need to be decompressed.
As a good rule of thumb, keeping the original format is good for images larger
than 24x24 pixels and when the application links to the fltk-image anyway.
An app that has only a hand full of small icons may be better off storing raw
pixel data and not link with fltk-image.
The image properties dialog
provides *Scale* settings to scale the image before rendering to screen.
To make full use of high-dpi screen support, images should be stored at double
resolution and then scaled to FLTK coordinates. This gives FLTK the chance to

View File

@ -1504,8 +1504,8 @@ void show_help(const char *name) {
// if we can not read the file, we display the canned version instead
// or ask the native browser to open the page on www.fltk.org
if (strcmp(name, "fluid.html")==0) {
if (!Fl_Shared_Image::find("embedded:/fluid-org.png"))
new Fl_PNG_Image("embedded:/fluid-org.png", fluid_org_png, sizeof(fluid_org_png));
if (!Fl_Shared_Image::find("embedded:/fluid_flow_chart_800.png"))
new Fl_PNG_Image("embedded:/fluid_flow_chart_800.png", fluid_flow_chart_800_png, sizeof(fluid_flow_chart_800_png));
help_dialog->value
(
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n"
@ -1528,7 +1528,7 @@ void show_help(const char *name) {
"call the FLUID functions. These <code>.cxx</code> files must <code>"
"#include</code> the <code>.h</code> file or they can <code>#include</code> "
"the <code>.cxx</code> file so it still appears to be a single source file.<p>"
"<img src=\"embedded:/fluid-org.png\"></p>"
"<img src=\"embedded:/fluid_flow_chart_800.png\"></p>"
"<p>More information is available online at <a href="
"\"https://www.fltk.org/doc-1.4/fluid.html\">https://www.fltk.org/</a>"
"</body></html>"

View File

@ -386,10 +386,10 @@ Fl_Double_Window* make_decl_panel() {
{ Fl_Tile* o = new Fl_Tile(10, 40, 320, 180);
{ Fl_Group* o = new Fl_Group(10, 40, 320, 100);
o->box(FL_FLAT_BOX);
{ decl_input = new CodeEditor(10, 40, 320, 45, "This can be any declaration, like \"int x;\", an external symbol like \"exter\
n int foo();\", a #directive like \"#include <foo.h>\", a comment like \"//foo\
\" or \"/*foo*/\", or typedef like \"typedef char byte;\" or \"using std::list\
;\".");
{ decl_input = new CodeEditor(10, 40, 320, 45, "This can be any declaration, like \"int x;\", an external symbol like \"exter"
"n int foo();\", a #directive like \"#include <foo.h>\", a comment like \"//foo"
"\" or \"/*foo*/\", or typedef like \"typedef char byte;\" or \"using std::list"
";\".");
decl_input->box(FL_DOWN_FRAME);
decl_input->color(FL_BACKGROUND2_COLOR);
decl_input->selection_color(FL_SELECTION_COLOR);
@ -511,8 +511,8 @@ Fl_Double_Window* make_data_panel() {
data_class_choice->menu(menu_data_class_choice);
} // Fl_Choice* data_class_choice
{ data_mode = new Fl_Choice(10, 38, 185, 20);
data_mode->tooltip("text mode generates a \"const char*\" and a trailing NUL, compressed mode use\
s zlib to generate a binary block");
data_mode->tooltip("text mode generates a \"const char*\" and a trailing NUL, compressed mode use"
"s zlib to generate a binary block");
data_mode->down_box(FL_BORDER_BOX);
data_mode->labelsize(11);
data_mode->textsize(11);
@ -521,8 +521,8 @@ s zlib to generate a binary block");
o->end();
} // Fl_Group* o
{ data_input = new Fl_Input(10, 78, 320, 20, "Variable Name:");
data_input->tooltip("Inline Data variables are declared \"const unsigned char []\" in binary mode \
and \"const char*\" in text mode.");
data_input->tooltip("Inline Data variables are declared \"const unsigned char []\" in binary mode "
"and \"const char*\" in text mode.");
data_input->labelfont(1);
data_input->labelsize(11);
data_input->textfont(4);

View File

@ -2537,9 +2537,9 @@ Fl_Double_Window* make_settings_window() {
use_external_editor_button->value(G_use_external_editor);
} // Fl_Check_Button* use_external_editor_button
{ editor_command_input = new Fl_Input(120, 255, 200, 20, "External Editor:");
editor_command_input->tooltip("The editor command to open your external text editor.\nInclude any necessary \
flags to ensure your editor does not background itself.\nExamples:\n gvim -\
f\n gedit\n emacs");
editor_command_input->tooltip("The editor command to open your external text editor.\nInclude any necessary "
"flags to ensure your editor does not background itself.\nExamples:\n gvim -"
"f\n gedit\n emacs");
editor_command_input->labelfont(1);
editor_command_input->labelsize(11);
editor_command_input->textfont(4);
@ -2562,16 +2562,16 @@ f\n gedit\n emacs");
o->value(show_guides);
} // Fl_Check_Button* guides_button
{ Fl_Check_Button* o = restricted_button = new Fl_Check_Button(120, 320, 200, 20, "Show Restricted Areas");
restricted_button->tooltip("show overlapping and out of bounds areas, show unfilled areas in Fl_Pack grou\
ps");
restricted_button->tooltip("show overlapping and out of bounds areas, show unfilled areas in Fl_Pack grou"
"ps");
restricted_button->down_box(FL_DOWN_BOX);
restricted_button->labelsize(11);
restricted_button->callback((Fl_Callback*)toggle_restricted_cb);
o->value(show_restricted);
} // Fl_Check_Button* restricted_button
{ Fl_Check_Button* o = ghosted_outline_button = new Fl_Check_Button(120, 340, 200, 20, "Show Ghosted Group Outlines");
ghosted_outline_button->tooltip("groups with no box type or flat boxtypes without contrast will be rendered wi\
th a dim outline in the editing window only");
ghosted_outline_button->tooltip("groups with no box type or flat boxtypes without contrast will be rendered wi"
"th a dim outline in the editing window only");
ghosted_outline_button->down_box(FL_DOWN_BOX);
ghosted_outline_button->labelsize(11);
ghosted_outline_button->callback((Fl_Callback*)toggle_ghosted_outline_cb);
@ -2639,9 +2639,9 @@ th a dim outline in the editing window only");
use_FL_COMMAND_button->callback((Fl_Callback*)cb_use_FL_COMMAND_button);
} // Fl_Check_Button* use_FL_COMMAND_button
{ utf8_in_src_button = new Fl_Check_Button(100, 230, 220, 20, "allow Unicode UTF-8 in source code");
utf8_in_src_button->tooltip("For older compilers, characters outside of the printable ASCII range are esca\
ped using octal notation `\\0123`. If this option is checked, Fluid will write\
UTF-8 characters unchanged.");
utf8_in_src_button->tooltip("For older compilers, characters outside of the printable ASCII range are esca"
"ped using octal notation `\\0123`. If this option is checked, Fluid will write"
" UTF-8 characters unchanged.");
utf8_in_src_button->down_box(FL_DOWN_BOX);
utf8_in_src_button->labelsize(11);
utf8_in_src_button->callback((Fl_Callback*)cb_utf8_in_src_button);
@ -2660,9 +2660,9 @@ ped using octal notation `\\0123`. If this option is checked, Fluid will write\
} // Fl_Box* o
{ // // Matt: disabled
w_proj_mergeback = new Fl_Check_Button(100, 283, 220, 20, "generate MergeBack data");
w_proj_mergeback->tooltip("MergeBack is a feature under construction that allows changes in code files t\
o be merged back into the project file. Checking this option will generate add\
itional data in code and project files.");
w_proj_mergeback->tooltip("MergeBack is a feature under construction that allows changes in code files t"
"o be merged back into the project file. Checking this option will generate add"
"itional data in code and project files.");
w_proj_mergeback->down_box(FL_DOWN_BOX);
w_proj_mergeback->labelsize(11);
w_proj_mergeback->callback((Fl_Callback*)cb_w_proj_mergeback);
@ -3096,8 +3096,8 @@ itional data in code and project files.");
o->when(FL_WHEN_RELEASE);
} // Fl_Shortcut_Button* o
{ Fl_Choice* o = new Fl_Choice(100, 322, 130, 20, "Store:");
o->tooltip("store this shell command as a user setting or save it with the .fl project fi\
le");
o->tooltip("store this shell command as a user setting or save it with the .fl project fi"
"le");
o->down_box(FL_BORDER_BOX);
o->labelfont(1);
o->labelsize(11);
@ -3251,8 +3251,8 @@ le");
i18n_gnu_include_input->callback((Fl_Callback*)cb_i18n_gnu_include_input);
} // Fl_Input* i18n_gnu_include_input
{ i18n_gnu_conditional_input = new Fl_Input(100, 128, 220, 20, "Conditional:");
i18n_gnu_conditional_input->tooltip("only include the header file if this preprocessor macro is defined, for examp\
le FLTK_GETTEXT_FOUND");
i18n_gnu_conditional_input->tooltip("only include the header file if this preprocessor macro is defined, for examp"
"le FLTK_GETTEXT_FOUND");
i18n_gnu_conditional_input->box(FL_THIN_DOWN_BOX);
i18n_gnu_conditional_input->labelsize(11);
i18n_gnu_conditional_input->textfont(4);
@ -3260,8 +3260,8 @@ le FLTK_GETTEXT_FOUND");
i18n_gnu_conditional_input->callback((Fl_Callback*)cb_i18n_gnu_conditional_input);
} // Fl_Input* i18n_gnu_conditional_input
{ i18n_gnu_function_input = new Fl_Input(100, 153, 220, 20, "Function:");
i18n_gnu_function_input->tooltip("The function to call to translate labels and tooltips, usually \"gettext\" or\
\"_\"");
i18n_gnu_function_input->tooltip("The function to call to translate labels and tooltips, usually \"gettext\" or"
" \"_\"");
i18n_gnu_function_input->box(FL_THIN_DOWN_BOX);
i18n_gnu_function_input->labelsize(11);
i18n_gnu_function_input->textfont(4);
@ -3269,8 +3269,8 @@ le FLTK_GETTEXT_FOUND");
i18n_gnu_function_input->callback((Fl_Callback*)cb_i18n_gnu_function_input);
} // Fl_Input* i18n_gnu_function_input
{ i18n_gnu_static_function_input = new Fl_Input(100, 178, 220, 20, "Static Function:");
i18n_gnu_static_function_input->tooltip("function to call to translate static text, The function to call to internatio\
nalize labels and tooltips, usually \"gettext_noop\" or \"N_\"");
i18n_gnu_static_function_input->tooltip("function to call to translate static text, The function to call to internatio"
"nalize labels and tooltips, usually \"gettext_noop\" or \"N_\"");
i18n_gnu_static_function_input->box(FL_THIN_DOWN_BOX);
i18n_gnu_static_function_input->labelsize(11);
i18n_gnu_static_function_input->textfont(4);
@ -3291,8 +3291,8 @@ nalize labels and tooltips, usually \"gettext_noop\" or \"N_\"");
i18n_pos_include_input->callback((Fl_Callback*)cb_i18n_pos_include_input);
} // Fl_Input* i18n_pos_include_input
{ i18n_pos_conditional_input = new Fl_Input(100, 128, 220, 20, "Conditional:");
i18n_pos_conditional_input->tooltip("only include the header file if this preprocessor macro is defined, for examp\
le FLTK_GETTEXT_FOUND");
i18n_pos_conditional_input->tooltip("only include the header file if this preprocessor macro is defined, for examp"
"le FLTK_GETTEXT_FOUND");
i18n_pos_conditional_input->box(FL_THIN_DOWN_BOX);
i18n_pos_conditional_input->labelsize(11);
i18n_pos_conditional_input->textfont(4);

View File

@ -285,9 +285,10 @@ Fl_Double_Window* make_image_panel() {
o->labelsize(11);
o->align(Fl_Align(FL_ALIGN_RIGHT|FL_ALIGN_INSIDE));
} // Fl_Box* o
{ Fl_Check_Button* o = new Fl_Check_Button(75, 100, 170, 20, "compressed");
o->tooltip("store image uncompressed as RGBA data\nor compressed in the original file for\
mat");
{ Fl_Check_Button* o = new Fl_Check_Button(75, 100, 170, 20, "convert to raw pixel data");
o->tooltip("if unchecked, keep the image in its original format and store the data as is;"
" if checked, convert the image and store it as uncompressed RGB or grayscale p"
"ixel data");
o->down_box(FL_DOWN_BOX);
o->labelsize(11);
o->callback((Fl_Callback*)compress_image_cb);
@ -360,9 +361,10 @@ mat");
o->labelsize(11);
o->align(Fl_Align(FL_ALIGN_RIGHT|FL_ALIGN_INSIDE));
} // Fl_Box* o
{ Fl_Check_Button* o = new Fl_Check_Button(75, 240, 170, 20, "compressed");
o->tooltip("store image uncompressed as RGBA data\nor compressed in the original file for\
mat");
{ Fl_Check_Button* o = new Fl_Check_Button(75, 240, 170, 20, "convert to raw pixel data");
o->tooltip("if unchecked, keep the image in its original format and store the data as is;"
" if checked, convert the image and store it as uncompressed RGB or grayscale p"
"ixel data");
o->down_box(FL_DOWN_BOX);
o->labelsize(11);
o->callback((Fl_Callback*)compress_deimage_cb);
@ -1176,8 +1178,8 @@ Fl_Double_Window* make_widget_panel() {
o->callback((Fl_Callback*)position_group_cb);
o->align(Fl_Align(FL_ALIGN_LEFT));
{ widget_x_input = new Fluid_Coord_Input(95, 150, 55, 20, "X:");
widget_x_input->tooltip("The X position of the widget as a number or formula.\nFormulas can be simple \
math, including the variables\nx, px, sx, cx, and i");
widget_x_input->tooltip("The X position of the widget as a number or formula.\nFormulas can be simple "
"math, including the variables\nx, px, sx, cx, and i");
widget_x_input->box(FL_DOWN_BOX);
widget_x_input->color(FL_BACKGROUND2_COLOR);
widget_x_input->selection_color(FL_SELECTION_COLOR);
@ -1191,8 +1193,8 @@ math, including the variables\nx, px, sx, cx, and i");
widget_x_input->when(FL_WHEN_RELEASE);
} // Fluid_Coord_Input* widget_x_input
{ widget_y_input = new Fluid_Coord_Input(155, 150, 55, 20, "Y:");
widget_y_input->tooltip("The Y position of the widget as a number or formula.\nFormulas can be simple \
math, including the variables\ny, py, sy, cy, and i");
widget_y_input->tooltip("The Y position of the widget as a number or formula.\nFormulas can be simple "
"math, including the variables\ny, py, sy, cy, and i");
widget_y_input->box(FL_DOWN_BOX);
widget_y_input->color(FL_BACKGROUND2_COLOR);
widget_y_input->selection_color(FL_SELECTION_COLOR);
@ -1206,8 +1208,8 @@ math, including the variables\ny, py, sy, cy, and i");
widget_y_input->when(FL_WHEN_RELEASE);
} // Fluid_Coord_Input* widget_y_input
{ widget_w_input = new Fluid_Coord_Input(215, 150, 55, 20, "Width:");
widget_w_input->tooltip("The width of the widget as a number or formula.\nFormulas can be simple math,\
including the variables\nw, pw, sw, cw, and i");
widget_w_input->tooltip("The width of the widget as a number or formula.\nFormulas can be simple math,"
" including the variables\nw, pw, sw, cw, and i");
widget_w_input->box(FL_DOWN_BOX);
widget_w_input->color(FL_BACKGROUND2_COLOR);
widget_w_input->selection_color(FL_SELECTION_COLOR);
@ -1221,8 +1223,8 @@ math, including the variables\ny, py, sy, cy, and i");
widget_w_input->when(FL_WHEN_RELEASE);
} // Fluid_Coord_Input* widget_w_input
{ widget_h_input = new Fluid_Coord_Input(275, 150, 55, 20, "Height:");
widget_h_input->tooltip("The height of the widget as a number or formula.\nFormulas can be simple math\
, including the variables\nh, ph, sh, ch, and i");
widget_h_input->tooltip("The height of the widget as a number or formula.\nFormulas can be simple math"
", including the variables\nh, ph, sh, ch, and i");
widget_h_input->box(FL_DOWN_BOX);
widget_h_input->color(FL_BACKGROUND2_COLOR);
widget_h_input->selection_color(FL_SELECTION_COLOR);
@ -1236,9 +1238,9 @@ math, including the variables\ny, py, sy, cy, and i");
widget_h_input->when(FL_WHEN_RELEASE);
} // Fluid_Coord_Input* widget_h_input
{ Fl_Choice* o = new Fl_Choice(335, 150, 64, 20, "Children:");
o->tooltip("When instantiating a widget class, the children can either be fixed in their \
original position, automatically be repositioned, or both repsositioned and re\
sized to fit the container.");
o->tooltip("When instantiating a widget class, the children can either be fixed in their "
"original position, automatically be repositioned, or both repsositioned and re"
"sized to fit the container.");
o->down_box(FL_BORDER_BOX);
o->labelsize(11);
o->textsize(11);
@ -1771,8 +1773,8 @@ sized to fit the container.");
{ Fl_Group* o = new Fl_Group(95, 175, 310, 48);
o->box(FL_FLAT_BOX);
{ wComment = new Fl_Text_Editor(95, 175, 310, 45, "Comment:");
wComment->tooltip("Write a comment that will appear in the source code and in the widget tree ov\
erview.");
wComment->tooltip("Write a comment that will appear in the source code and in the widget tree ov"
"erview.");
wComment->box(FL_DOWN_BOX);
wComment->labelfont(1);
wComment->labelsize(11);
@ -1790,8 +1792,8 @@ erview.");
{ Fl_Group* o = new Fl_Group(95, 223, 310, 82);
o->box(FL_FLAT_BOX);
{ wCallback = new CodeEditor(95, 225, 310, 80, "Callback:");
wCallback->tooltip("The callback function or code for the widget. Use the variable name \'o\' to \
access the Widget pointer and \'v\' to access the user value.");
wCallback->tooltip("The callback function or code for the widget. Use the variable name \'o\' to "
"access the Widget pointer and \'v\' to access the user value.");
wCallback->box(FL_DOWN_BOX);
wCallback->color(FL_BACKGROUND2_COLOR);
wCallback->selection_color(FL_SELECTION_COLOR);
@ -2423,8 +2425,8 @@ access the Widget pointer and \'v\' to access the user value.");
{ Fl_Group* o = new Fl_Group(10, 370, 400, 20);
o->labelsize(11);
{ wLiveMode = new Fl_Button(10, 370, 80, 20, "Live &Resize");
wLiveMode->tooltip("Create a live duplicate of the selected widgets to test resizing and menu beh\
avior.");
wLiveMode->tooltip("Create a live duplicate of the selected widgets to test resizing and menu beh"
"avior.");
wLiveMode->type(1);
wLiveMode->labelsize(10);
wLiveMode->callback((Fl_Callback*)live_mode_cb);

View File

@ -164,10 +164,9 @@ Function {make_image_panel()} {
xywh {10 100 60 20} labelfont 1 labelsize 11 align 24
}
Fl_Check_Button {} {
label compressed
label {convert to raw pixel data}
callback compress_image_cb
tooltip {store image uncompressed as RGBA data
or compressed in the original file format} xywh {75 100 170 20} down_box DOWN_BOX labelsize 11
tooltip {if unchecked, keep the image in its original format and store the data as is; if checked, convert the image and store it as uncompressed RGB or grayscale pixel data} xywh {75 100 170 20} down_box DOWN_BOX labelsize 11
}
Fl_Check_Button {} {
label {bind to widget}
@ -287,10 +286,9 @@ or compressed in the original file format} xywh {75 100 170 20} down_box DOWN_BO
xywh {10 240 60 20} labelfont 1 labelsize 11 align 24
}
Fl_Check_Button {} {
label compressed
label {convert to raw pixel data}
callback compress_deimage_cb
tooltip {store image uncompressed as RGBA data
or compressed in the original file format} xywh {75 240 170 20} down_box DOWN_BOX labelsize 11
tooltip {if unchecked, keep the image in its original format and store the data as is; if checked, convert the image and store it as uncompressed RGB or grayscale pixel data} xywh {75 240 170 20} down_box DOWN_BOX labelsize 11
}
Fl_Check_Button {} {
label {bind to widget}