summaryrefslogtreecommitdiff
path: root/fluid
diff options
context:
space:
mode:
Diffstat (limited to 'fluid')
-rw-r--r--fluid/README_fl.txt3
-rw-r--r--fluid/app/shell_command.cxx10
-rw-r--r--fluid/io/Project_Reader.cxx7
-rw-r--r--fluid/nodes/Function_Node.cxx786
-rw-r--r--fluid/nodes/Function_Node.h48
-rw-r--r--fluid/nodes/Group_Node.cxx26
-rw-r--r--fluid/nodes/Group_Node.h2
-rw-r--r--fluid/nodes/Node.cxx2
-rw-r--r--fluid/nodes/Widget_Node.cxx92
-rw-r--r--fluid/nodes/Widget_Node.h3
-rw-r--r--fluid/panels/about_panel.fl1
-rw-r--r--fluid/panels/codeview_panel.fl1
-rw-r--r--fluid/panels/function_panel.cxx738
-rw-r--r--fluid/panels/function_panel.fl544
-rw-r--r--fluid/panels/function_panel.h90
-rw-r--r--fluid/panels/template_panel.fl1
-rw-r--r--fluid/panels/widget_panel.cxx3311
-rw-r--r--fluid/panels/widget_panel.fl2722
-rw-r--r--fluid/panels/widget_panel.h32
-rw-r--r--fluid/panels/widget_panel/Grid_Child_Tab.fl1
-rw-r--r--fluid/panels/widget_panel/Grid_Tab.fl1
-rw-r--r--fluid/tools/autodoc.cxx78
22 files changed, 4771 insertions, 3728 deletions
diff --git a/fluid/README_fl.txt b/fluid/README_fl.txt
index eeb2b6d56..975de0177 100644
--- a/fluid/README_fl.txt
+++ b/fluid/README_fl.txt
@@ -412,6 +412,7 @@ Type "data" <word> : C++ variable name
"filename" <word> : name or path as entered by user, forward slashes
"textmode" : defaults to binary mode
"compressed" : defaults to not compressed
+ "std_binary", "std_textmode", "std_compressed"
... : inherits more from decl
Type "declblock" <word> : C++ code
@@ -431,7 +432,7 @@ Type "comment" <word> : comment text
Type "class" <word> <word> : prefix, class name
none or "private" or "protected" : defaults to public
- ":" <word> : name of super class
+ ":" <word> : name of base class
... : inherits more from Node
Type "Fl_Widget" <word> : C++ variable name
diff --git a/fluid/app/shell_command.cxx b/fluid/app/shell_command.cxx
index e0080dfd5..337d17e2f 100644
--- a/fluid/app/shell_command.cxx
+++ b/fluid/app/shell_command.cxx
@@ -79,12 +79,12 @@
On macOS, we can write Apple Scripts:
- #!/usr/bin/env osascript
- say "@BASENAME@"
+ #!/usr/bin/env osascript
+ say "@BASENAME@"
- osascript <<EOD
- say "spark"
- EOD
+ osascript <<EOD
+ say "spark"
+ EOD
osascript <<EOD
tell application "Xcode"
diff --git a/fluid/io/Project_Reader.cxx b/fluid/io/Project_Reader.cxx
index 0e2809685..0eeee8014 100644
--- a/fluid/io/Project_Reader.cxx
+++ b/fluid/io/Project_Reader.cxx
@@ -319,9 +319,12 @@ Node *Project_Reader::read_children(Node *p, int merge, Strategy strategy, char
t->name(read_word());
c = read_word(1);
+ // There can actually be two keywords here. The first one used to be a
+ // "prefix" in Fluid < 1.5.0, but is no longer supported. So if we still
+ // find the prefix in files, it will simply be prefixed to the name.
if (strcmp(c,"{") && t->is_class()) { // <prefix> <name>
- ((Class_Node*)t)->prefix(t->name());
- t->name(c);
+ std::string tmp = std::string {t->name() } + " " + c;
+ t->name(tmp.c_str());
c = read_word(1);
}
diff --git a/fluid/nodes/Function_Node.cxx b/fluid/nodes/Function_Node.cxx
index a70b10462..095b3fc5f 100644
--- a/fluid/nodes/Function_Node.cxx
+++ b/fluid/nodes/Function_Node.cxx
@@ -35,6 +35,8 @@
#include <zlib.h>
+extern void open_panel();
+
using namespace fld;
using namespace fld::io;
using namespace fld::proj;
@@ -191,9 +193,9 @@ Function_Node Function_Node::prototype;
*/
Function_Node::Function_Node() :
Node(),
- return_type(nullptr),
+ return_type_(nullptr),
public_(0),
- cdecl_(0),
+ declare_c_(0),
constructor(0),
havewidgets(0)
{ }
@@ -202,7 +204,7 @@ Function_Node::Function_Node() :
Destructor.
*/
Function_Node::~Function_Node() {
- if (return_type) free((void*)return_type);
+ if (return_type_) free((void*)return_type_);
}
/**
@@ -221,11 +223,11 @@ Node *Function_Node::make(Strategy strategy) {
}
Function_Node *o = new Function_Node();
o->name("make_window()");
- o->return_type = nullptr;
+ o->return_type_ = nullptr;
o->add(anchor, strategy);
o->factory = this;
o->public_ = 1;
- o->cdecl_ = 0;
+ o->declare_c_ = 0;
return o;
}
@@ -241,10 +243,10 @@ void Function_Node::write_properties(fld::io::Project_Writer &f) {
case 0: f.write_string("private"); break;
case 2: f.write_string("protected"); break;
}
- if (cdecl_) f.write_string("C");
- if (return_type) {
+ if (declare_c_) f.write_string("C");
+ if (return_type_) {
f.write_string("return_type");
- f.write_word(return_type);
+ f.write_word(return_type_);
}
}
@@ -258,9 +260,9 @@ void Function_Node::read_property(fld::io::Project_Reader &f, const char *c) {
} else if (!strcmp(c,"protected")) {
public_ = 2;
} else if (!strcmp(c,"C")) {
- cdecl_ = 1;
+ declare_c_ = 1;
} else if (!strcmp(c,"return_type")) {
- storestring(f.read_word(),return_type);
+ storestring(f.read_word(),return_type_);
} else {
Node::read_property(f, c);
}
@@ -270,90 +272,7 @@ void Function_Node::read_property(fld::io::Project_Reader &f, const char *c) {
Open the function_panel dialog box to edit this function.
*/
void Function_Node::open() {
- // fill dialog box
- if (!function_panel) make_function_panel();
- f_return_type_input->value(return_type);
- f_name_input->value(name());
- if (is_in_class()) {
- f_public_member_choice->value(public_);
- f_public_member_choice->show();
- f_public_choice->hide();
- f_c_button->hide();
- } else {
- f_public_choice->value(public_);
- f_public_choice->show();
- f_public_member_choice->hide();
- f_c_button->show();
- }
- f_c_button->value(cdecl_);
- const char *c = comment();
- f_comment_input->buffer()->text(c?c:"");
- function_panel->show();
- const char* message = nullptr;
- for (;;) { // repeat as long as there are errors
- // - message loop until OK or cancel is pressed
- for (;;) {
- Fl_Widget* w = Fl::readqueue();
- if (w == f_panel_cancel) goto BREAK2;
- else if (w == f_panel_ok) break;
- else if (!w) Fl::wait();
- }
- // - check syntax
- const char *c = f_name_input->value();
- while (isspace(*c)) c++;
- message = c_check(c);
- if (!message) {
- const char *d = c;
- for (; *d != '('; d++) if (isspace(*d) || !*d) break;
- if (*c && *d != '(')
- message = "must be 'name(arguments)'";
- }
- if (!message) {
- c = f_return_type_input->value();
- message = c_check(c);
- }
- // - alert user
- if (message) {
- int v = fl_choice("Potential syntax error detected: %s",
- "Continue Editing", "Ignore Error", nullptr, message);
- if (v==0) continue; // Continue Editing
- //if (v==1) { } // Ignore Error and close dialog
- }
- // - copy dialog data to target variables
- int mod = 0;
- name(f_name_input->value());
- storestring(f_return_type_input->value(), return_type);
- if (is_in_class()) {
- if (public_ != f_public_member_choice->value()) {
- mod = 1;
- public_ = f_public_member_choice->value();
- redraw_browser();
- }
- } else {
- if (public_ != f_public_choice->value()) {
- mod = 1;
- public_ = f_public_choice->value();
- redraw_browser();
- }
- }
- if (cdecl_ != f_c_button->value()) {
- mod = 1;
- cdecl_ = f_c_button->value();
- }
- c = f_comment_input->buffer()->text();
- if (c && *c) {
- if (!comment() || strcmp(c, comment())) { Fluid.proj.set_modflag(1); redraw_browser(); }
- comment(c);
- } else {
- if (comment()) { Fluid.proj.set_modflag(1); redraw_browser(); }
- comment(nullptr);
- }
- if (c) free((void*)c);
- if (mod) Fluid.proj.set_modflag(1);
- break;
- }
-BREAK2:
- function_panel->hide();
+ open_panel();
}
/**
@@ -435,7 +354,7 @@ void Function_Node::write_code1(fld::io::Code_Writer& f) {
if (havechildren)
f.write_c("int main(int argc, char **argv) {\n");
} else {
- const char* rtype = return_type;
+ const char* rtype = return_type_;
const char* star = "";
// from matt: let the user type "static " at the start of type
// in order to declare a static method;
@@ -503,7 +422,7 @@ void Function_Node::write_code1(fld::io::Code_Writer& f) {
if (havechildren)
write_comment_c(f);
if (public_==1) {
- if (cdecl_)
+ if (declare_c_)
f.write_h("extern \"C\" { %s%s %s; }\n", rtype, star, name());
else
f.write_h("%s%s %s;\n", rtype, star, name());
@@ -547,7 +466,7 @@ void Function_Node::write_code2(fld::io::Code_Writer& f) {
f.write_c("%s%s->show(argc, argv);\n", f.indent(1), var);
if (havechildren)
f.write_c("%sreturn Fl::run();\n", f.indent(1));
- } else if (havewidgets && !constructor && !return_type) {
+ } else if (havewidgets && !constructor && !return_type_) {
f.write_c("%sreturn %s;\n", f.indent(1), var);
}
if (havechildren)
@@ -562,9 +481,9 @@ void Function_Node::write_code2(fld::io::Code_Writer& f) {
\return 1 if they match, 0 if not
*/
int Function_Node::has_signature(const char *rtype, const char *sig) const {
- if (rtype && !return_type) return 0;
+ if (rtype && !return_type_) return 0;
if (!name()) return 0;
- if ( (rtype==nullptr || strcmp(return_type, rtype)==0)
+ if ( (rtype==nullptr || strcmp(return_type_, rtype)==0)
&& fl_filename_match(name(), sig)) {
return 1;
}
@@ -632,38 +551,7 @@ void Code_Node::open() {
if ( editor_.open_editor(cmd, code) == 0 )
return; // return if editor opened ok, fall thru to built-in if not
}
- // Use built-in code editor..
- if (!code_panel) make_code_panel();
- const char *text = name();
- code_input->buffer()->text( text ? text : "" );
- code_input->insert_position(cursor_position_);
- code_input->scroll(code_input_scroll_row, code_input_scroll_col);
- code_panel->show();
- const char* message = nullptr;
- for (;;) { // repeat as long as there are errors
- for (;;) {
- Fl_Widget* w = Fl::readqueue();
- if (w == code_panel_cancel) goto BREAK2;
- else if (w == code_panel_ok) break;
- else if (!w) Fl::wait();
- }
- char*c = code_input->buffer()->text();
- message = c_check(c);
- if (message) {
- int v = fl_choice("Potential syntax error detected: %s",
- "Continue Editing", "Ignore Error", nullptr, message);
- if (v==0) continue; // Continue Editing
- //if (v==1) { } // Ignore Error and close dialog
- }
- name(c);
- free(c);
- break;
- }
- cursor_position_ = code_input->insert_position();
- code_input_scroll_row = code_input->scroll_row();
- code_input_scroll_col = code_input->scroll_col();
-BREAK2:
- code_panel->hide();
+ open_panel();
}
/**
@@ -817,38 +705,7 @@ void CodeBlock_Node::read_property(fld::io::Project_Reader &f, const char *c) {
Open the codeblock_panel.
*/
void CodeBlock_Node::open() {
- if (!codeblock_panel) make_codeblock_panel();
- code_before_input->value(name());
- code_after_input->value(after);
- codeblock_panel->show();
- const char* message = nullptr;
- for (;;) { // repeat as long as there are errors
- // event loop
- for (;;) {
- Fl_Widget* w = Fl::readqueue();
- if (w == codeblock_panel_cancel) goto BREAK2;
- else if (w == codeblock_panel_ok) break;
- else if (!w) Fl::wait();
- }
- // check for syntax errors
- message = c_check(code_before_input->value());
- if (!message) {
- message = c_check(code_after_input->value());
- }
- // alert user
- if (message) {
- int v = fl_choice("Potential syntax error detected: %s",
- "Continue Editing", "Ignore Error", nullptr, message);
- if (v==0) continue; // Continue Editing
- //if (v==1) { } // Ignore Error and close dialog
- }
- // write to variables
- name(code_before_input->value());
- storestring(code_after_input->value(), after);
- break;
- }
-BREAK2:
- codeblock_panel->hide();
+ open_panel();
}
/**
@@ -969,70 +826,7 @@ void Decl_Node::read_property(fld::io::Project_Reader &f, const char *c) {
Open the decl_panel to edit this node.
*/
void Decl_Node::open() {
- if (!decl_panel) make_decl_panel();
- decl_input->buffer()->text(name());
- if (is_in_class()) {
- decl_class_choice->value(public_);
- decl_class_choice->show();
- decl_choice->hide();
- } else {
- decl_choice->value((public_&1)|((static_&1)<<1));
- decl_choice->show();
- decl_class_choice->hide();
- }
- const char *c = comment();
- decl_comment_input->buffer()->text(c?c:"");
- decl_panel->show();
- const char* message = nullptr;
- for (;;) { // repeat as long as there are errors
- // event loop
- for (;;) {
- Fl_Widget* w = Fl::readqueue();
- if (w == decl_panel_cancel) goto BREAK2;
- else if (w == decl_panel_ok) break;
- else if (!w) Fl::wait();
- }
- // check values
- const char*c = decl_input->buffer()->text();
- while (isspace(*c)) c++;
- message = c_check(c&&c[0]=='#' ? c+1 : c);
- // alert user
- if (message) {
- int v = fl_choice("Potential syntax error detected: %s",
- "Continue Editing", "Ignore Error", nullptr, message);
- if (v==0) continue; // Continue Editing
- //if (v==1) { } // Ignore Error and close dialog
- }
- // copy vlaues
- name(c);
- if (is_in_class()) {
- if (public_!=decl_class_choice->value()) {
- Fluid.proj.set_modflag(1);
- public_ = decl_class_choice->value();
- }
- } else {
- if (public_!=(decl_choice->value()&1)) {
- Fluid.proj.set_modflag(1);
- public_ = (decl_choice->value()&1);
- }
- if (static_!=((decl_choice->value()>>1)&1)) {
- Fluid.proj.set_modflag(1);
- static_ = ((decl_choice->value()>>1)&1);
- }
- }
- c = decl_comment_input->buffer()->text();
- if (c && *c) {
- if (!comment() || strcmp(c, comment())) { Fluid.proj.set_modflag(1); redraw_browser(); }
- comment(c);
- } else {
- if (comment()) { Fluid.proj.set_modflag(1); redraw_browser(); }
- comment(nullptr);
- }
- if (c) free((void*)c);
- break;
- }
-BREAK2:
- decl_panel->hide();
+ open_panel();
}
/**
@@ -1120,9 +914,7 @@ Data_Node Data_Node::prototype;
Constructor.
*/
Data_Node::Data_Node() :
- Decl_Node(),
- filename_(nullptr),
- text_mode_(0)
+ Decl_Node()
{ }
/**
@@ -1151,7 +943,7 @@ Node *Data_Node::make(Strategy strategy) {
o->public_ = 1;
o->static_ = 1;
o->filename_ = nullptr;
- o->text_mode_ = 0;
+ o->output_format_ = 0;
o->name("myInlineData");
o->add(anchor, strategy);
o->factory = this;
@@ -1169,11 +961,12 @@ void Data_Node::write_properties(fld::io::Project_Writer &f) {
f.write_string("filename");
f.write_word(filename_);
}
- if (text_mode_ == 1) {
- f.write_string("textmode");
- }
- if (text_mode_ == 2) {
- f.write_string("compressed");
+ switch (output_format_) {
+ case 1: f.write_string("textmode"); break;
+ case 2: f.write_string("compressed"); break;
+ case 3: f.write_string("std_binary"); break;
+ case 4: f.write_string("std_textmode"); break;
+ case 5: f.write_string("std_compressed"); break;
}
}
@@ -1184,9 +977,15 @@ void Data_Node::read_property(fld::io::Project_Reader &f, const char *c) {
if (!strcmp(c,"filename")) {
storestring(f.read_word(), filename_, 1);
} else if (!strcmp(c,"textmode")) {
- text_mode_ = 1;
+ output_format_ = 1;
} else if (!strcmp(c,"compressed")) {
- text_mode_ = 2;
+ output_format_ = 2;
+ } else if (!strcmp(c,"std_binary")) {
+ output_format_ = 3;
+ } else if (!strcmp(c,"std_textmode")) {
+ output_format_ = 4;
+ } else if (!strcmp(c,"std_compressed")) {
+ output_format_ = 5;
} else {
Decl_Node::read_property(f, c);
}
@@ -1196,110 +995,7 @@ void Data_Node::read_property(fld::io::Project_Reader &f, const char *c) {
Open the data_panel to edit this node.
*/
void Data_Node::open() {
- if (!data_panel) make_data_panel();
- data_input->value(name());
- if (is_in_class()) {
- data_class_choice->value(public_);
- data_class_choice->show();
- data_choice->hide();
- } else {
- data_choice->value((public_&1)|((static_&1)<<1));
- data_choice->show();
- data_class_choice->hide();
- }
- data_mode->value(text_mode_);
- data_filename->value(filename_?filename_:"");
- const char *c = comment();
- data_comment_input->buffer()->text(c?c:"");
- data_panel->show();
- for (;;) { // repeat as long as there are errors
- for (;;) {
- Fl_Widget* w = Fl::readqueue();
- if (w == data_panel_cancel) goto BREAK2;
- else if (w == data_panel_ok) break;
- else if (w == data_filebrowser) {
- Fluid.proj.enter_project_dir();
- const char *fn = fl_file_chooser("Load Inline Data", nullptr, data_filename->value(), 1);
- Fluid.proj.leave_project_dir();
- if (fn) {
- if (strcmp(fn, data_filename->value()))
- Fluid.proj.set_modflag(1);
- data_filename->value(fn);
- }
- }
- else if (!w) Fl::wait();
- }
- // store the variable name:
- const char*c = data_input->value();
- char *s = fl_strdup(c), *p = s, *q, *n;
- for (;;++p) { // remove leading spaces
- if (!isspace((unsigned char)(*p))) break;
- }
- n = p;
- if ( (!isalpha((unsigned char)(*p))) && ((*p)!='_') && ((*p)!=':') ) goto OOPS;
- ++p;
- for (;;++p) {
- if ( (!isalnum((unsigned char)(*p))) && ((*p)!='_') && ((*p)!=':') ) break;
- }
- q = p;
- for (;;++q) {
- if (!*q) break;
- if (!isspace((unsigned char)(*q))) goto OOPS;
- }
- *p = 0; // remove trailing spaces
- if (n==q) {
- OOPS:
- int v = fl_choice("%s",
- "Continue Editing", "Ignore Error", nullptr,
- "Variable name must be a C identifier");
- if (v==0) { free(s); continue; } // Continue Editing
- //if (v==1) { } // Ignore Error and close dialog
- }
- Fluid.proj.undo.checkpoint();
- name(n);
- free(s);
- // store flags
- if (is_in_class()) {
- if (public_!=data_class_choice->value()) {
- Fluid.proj.set_modflag(1);
- public_ = data_class_choice->value();
- }
- } else {
- if (public_!=(data_choice->value()&1)) {
- Fluid.proj.set_modflag(1);
- public_ = (data_choice->value()&1);
- }
- if (static_!=((data_choice->value()>>1)&1)) {
- Fluid.proj.set_modflag(1);
- static_ = ((data_choice->value()>>1)&1);
- }
- }
- text_mode_ = data_mode->value();
- if (text_mode_ < 0) text_mode_ = 0;
- if (text_mode_ > 2) text_mode_ = 2;
- // store the filename
- c = data_filename->value();
- if (filename_ && strcmp(filename_, data_filename->value()))
- Fluid.proj.set_modflag(1);
- else if (!filename_ && *c)
- Fluid.proj.set_modflag(1);
- if (filename_) { free((void*)filename_); filename_ = nullptr; }
- if (c && *c) filename_ = fl_strdup(c);
- // store the comment
- c = data_comment_input->buffer()->text();
- if (c && *c) {
- if (!comment() || strcmp(c, comment())) { Fluid.proj.set_modflag(1); redraw_browser(); }
- comment(c);
- } else {
- if (comment()) { Fluid.proj.set_modflag(1); redraw_browser(); }
- comment(nullptr);
- }
- if (c) free((void*)c);
- Fluid.proj.set_modflag(1);
- break;
- }
-BREAK2:
- data_panel->hide();
+ open_panel();
}
/**
@@ -1327,7 +1023,7 @@ void Data_Node::write_code1(fld::io::Code_Writer& f) {
if (nData) {
data = (char*)calloc(nData, 1);
if (fread(data, nData, 1, f)==0) { /* use default */ }
- if (text_mode_ == 2) {
+ if ((output_format_ == 2) || (output_format_ == 5)) {
uncompressedDataSize = nData;
uLong nzData = compressBound(nData);
Bytef *zdata = (Bytef*)::malloc(nzData);
@@ -1344,27 +1040,47 @@ void Data_Node::write_code1(fld::io::Code_Writer& f) {
}
if (is_in_class()) {
f.write_public(public_);
- if (text_mode_ == 1) {
- f.write_h("%sstatic const char *%s;\n", f.indent(1), c);
+ if ((output_format_ == 1) || (output_format_ == 4)) {
f.write_c("\n");
write_comment_c(f);
- f.write_c("const char *%s::%s = /* text inlined from %s */\n", class_name(1), c, fn);
+ if (output_format_ == 1) {
+ f.write_h("%sstatic const char *%s;\n", f.indent(1), c);
+ f.write_c("const char *%s::%s = /* text inlined from %s */\n", class_name(1), c, fn);
+ } else {
+ f.write_h_once("#include <string>");
+ f.write_h("%sstatic const std::string %s;\n", f.indent(1), c);
+ f.write_c("const std::string %s::%s = /* text inlined from %s */\n", class_name(1), c, fn);
+ }
if (message) f.write_c("#error %s %s\n", message, fn);
f.write_cstring(data, nData);
- } else if (text_mode_ == 2) {
+ } else if ((output_format_ == 2) || (output_format_ == 5)) {
f.write_h("%sstatic int %s_size;\n", f.indent(1), c);
- f.write_h("%sstatic unsigned char %s[%d];\n", f.indent(1), c, nData);
f.write_c("\n");
write_comment_c(f);
f.write_c("int %s::%s_size = %d;\n", class_name(1), c, uncompressedDataSize);
- f.write_c("unsigned char %s::%s[%d] = /* data compressed and inlined from %s */\n", class_name(1), c, nData, fn);
+ if (output_format_ == 2) {
+ f.write_h("%sstatic unsigned char %s[%d];\n", f.indent(1), c, nData);
+ f.write_c("unsigned char %s::%s[%d] = /* data compressed and inlined from %s */\n", class_name(1), c, nData, fn);
+ } else {
+ f.write_h_once("#include <stdint.h>");
+ f.write_h_once("#include <vector>");
+ f.write_h("%sstatic std::vector<uint8_t> %s;\n", f.indent(1), c);
+ f.write_c("std::vector<uint8_t> %s::%s = /* data compressed and inlined from %s */\n", class_name(1), c, fn);
+ }
if (message) f.write_c("#error %s %s\n", message, fn);
f.write_cdata(data, nData);
} else {
- f.write_h("%sstatic unsigned char %s[%d];\n", f.indent(1), c, nData);
f.write_c("\n");
write_comment_c(f);
- f.write_c("unsigned char %s::%s[%d] = /* data inlined from %s */\n", class_name(1), c, nData, fn);
+ if (output_format_ == 0) {
+ f.write_h("%sstatic unsigned char %s[%d];\n", f.indent(1), c, nData);
+ f.write_c("unsigned char %s::%s[%d] = /* data inlined from %s */\n", class_name(1), c, nData, fn);
+ } else {
+ f.write_h_once("#include <stdint.h>");
+ f.write_h_once("#include <vector>");
+ f.write_h("%sstatic std::vector<uint8_t> %s;\n", f.indent(1), c);
+ f.write_c("std::vector<uint8_t> %s::%s = /* data inlined from %s */\n", class_name(1), c, fn);
+ }
if (message) f.write_c("#error %s %s\n", message, fn);
f.write_cdata(data, nData);
}
@@ -1373,27 +1089,47 @@ void Data_Node::write_code1(fld::io::Code_Writer& f) {
// the "header only" option does not apply here!
if (public_) {
if (static_) {
- if (text_mode_ == 1) {
- f.write_h("extern const char *%s;\n", c);
+ if ((output_format_ == 1) || (output_format_ == 4)) {
f.write_c("\n");
write_comment_c(f);
- f.write_c("const char *%s = /* text inlined from %s */\n", c, fn);
+ if (output_format_ == 1) {
+ f.write_h("extern const char *%s;\n", c);
+ f.write_c("const char *%s = /* text inlined from %s */\n", c, fn);
+ } else {
+ f.write_h_once("#include <string>");
+ f.write_h("extern const std::string %s;\n", c);
+ f.write_c("const std::string %s = /* text inlined from %s */\n", c, fn);
+ }
if (message) f.write_c("#error %s %s\n", message, fn);
f.write_cstring(data, nData);
- } else if (text_mode_ == 2) {
+ } else if ((output_format_ == 2) || (output_format_ == 5)) {
f.write_h("extern int %s_size;\n", c);
- f.write_h("extern unsigned char %s[%d];\n", c, nData);
f.write_c("\n");
write_comment_c(f);
f.write_c("int %s_size = %d;\n", c, uncompressedDataSize);
- f.write_c("unsigned char %s[%d] = /* data compressed and inlined from %s */\n", c, nData, fn);
+ if (output_format_ == 2) {
+ f.write_h("extern unsigned char %s[%d];\n", c, nData);
+ f.write_c("unsigned char %s[%d] = /* data compressed and inlined from %s */\n", c, nData, fn);
+ } else {
+ f.write_h_once("#include <stdint.h>");
+ f.write_h_once("#include <vector>");
+ f.write_h("extern std::vector<uint8_t> %s;\n", c);
+ f.write_c("std::vector<uint8_t> %s = /* data compressed and inlined from %s */\n", c, fn);
+ }
if (message) f.write_c("#error %s %s\n", message, fn);
f.write_cdata(data, nData);
} else {
- f.write_h("extern unsigned char %s[%d];\n", c, nData);
f.write_c("\n");
write_comment_c(f);
- f.write_c("unsigned char %s[%d] = /* data inlined from %s */\n", c, nData, fn);
+ if (output_format_ == 0) {
+ f.write_h("extern unsigned char %s[%d];\n", c, nData);
+ f.write_c("unsigned char %s[%d] = /* data inlined from %s */\n", c, nData, fn);
+ } else {
+ f.write_h_once("#include <stdint.h>");
+ f.write_h_once("#include <vector>");
+ f.write_h("extern std::vector<uint8_t> %s;\n", c);
+ f.write_c("std::vector<uint8_t> %s = /* data inlined from %s */\n", c, fn);
+ }
if (message) f.write_c("#error %s %s\n", message, fn);
f.write_cdata(data, nData);
}
@@ -1401,7 +1137,7 @@ void Data_Node::write_code1(fld::io::Code_Writer& f) {
} else {
write_comment_h(f);
f.write_h("#error Unsupported declaration loading inline data %s\n", fn);
- if (text_mode_ == 1)
+ if (output_format_ == 1)
f.write_h("const char *%s = \"abc...\";\n", c);
else
f.write_h("unsigned char %s[3] = { 1, 2, 3 };\n", c);
@@ -1409,20 +1145,41 @@ void Data_Node::write_code1(fld::io::Code_Writer& f) {
} else {
f.write_c("\n");
write_comment_c(f);
- if (static_)
- f.write_c("static ");
- if (text_mode_ == 1) {
- f.write_c("const char *%s = /* text inlined from %s */\n", c, fn);
+ if ((output_format_ == 1) || (output_format_ == 4)) {
+ if (output_format_ == 1) {
+ if (static_) f.write_c("static ");
+ f.write_c("const char *%s = /* text inlined from %s */\n", c, fn);
+ } else {
+ f.write_c_once("#include <string>");
+ if (static_) f.write_c("static ");
+ f.write_c("const std::string %s = /* text inlined from %s */\n", c, fn);
+ }
if (message) f.write_c("#error %s %s\n", message, fn);
f.write_cstring(data, nData);
- } else if (text_mode_ == 2) {
- f.write_c("int %s_size = %d;\n", c, uncompressedDataSize);
+ } else if ((output_format_ == 2) || (output_format_ == 5)) {
if (static_) f.write_c("static ");
- f.write_c("unsigned char %s[%d] = /* data compressed and inlined from %s */\n", c, nData, fn);
+ f.write_c("int %s_size = %d;\n", c, uncompressedDataSize);
+ if (output_format_ == 2) {
+ if (static_) f.write_c("static ");
+ f.write_c("unsigned char %s[%d] = /* data compressed and inlined from %s */\n", c, nData, fn);
+ } else {
+ f.write_c_once("#include <stdint.h>");
+ f.write_c_once("#include <vector>");
+ if (static_) f.write_c("static ");
+ f.write_c("std::vector<uint8_t> %s = /* data compressed and inlined from %s */\n", c, fn);
+ }
if (message) f.write_c("#error %s %s\n", message, fn);
f.write_cdata(data, nData);
} else {
- f.write_c("unsigned char %s[%d] = /* data inlined from %s */\n", c, nData, fn);
+ if (output_format_ == 0) {
+ if (static_) f.write_c("static ");
+ f.write_c("unsigned char %s[%d] = /* data inlined from %s */\n", c, nData, fn);
+ } else {
+ f.write_c_once("#include <stdint.h>");
+ f.write_c_once("#include <vector>");
+ if (static_) f.write_c("static ");
+ f.write_c("std::vector<uint8_t> %s = /* data inlined from %s */\n", c, fn);
+ }
if (message) f.write_c("#error %s %s\n", message, fn);
f.write_cdata(data, nData);
}
@@ -1440,6 +1197,11 @@ void Data_Node::write_code1(fld::io::Code_Writer& f) {
if (data) free(data);
}
+void Data_Node::filename(const char* fn) {
+ storestring(fn, filename_);
+}
+
+
// ---- DeclBlock_Node declaration
/** \class DeclBlock_Node
@@ -1456,10 +1218,8 @@ DeclBlock_Node DeclBlock_Node::prototype;
/**
Constructor.
*/
-DeclBlock_Node::DeclBlock_Node() :
- Node(),
- after(nullptr),
- write_map_(CODE_IN_SOURCE)
+DeclBlock_Node::DeclBlock_Node()
+: Node()
{ }
/**
@@ -1536,101 +1296,7 @@ void DeclBlock_Node::read_property(fld::io::Project_Reader &f, const char *c) {
Open the declblock_panel to edit this node.
*/
void DeclBlock_Node::open() {
- // build dialog box
- if (!declblock_panel) make_declblock_panel();
- // preset all values
- declblock_before_input->value(name());
- declblock_after_input->value(after);
- declblock_static_header->value(write_map_ & STATIC_IN_HEADER);
- declblock_static_source->value(write_map_ & STATIC_IN_SOURCE);
- declblock_code_header->value(write_map_ & CODE_IN_HEADER);
- declblock_code_source->value(write_map_ & CODE_IN_SOURCE);
- const char *c = comment();
- declblock_comment_input->buffer()->text(c?c:"");
- // show modal dialog and loop until satisfied
- declblock_panel->show();
- const char* message = nullptr;
- for (;;) { // repeat as long as there are errors
- for (;;) {
- Fl_Widget* w = Fl::readqueue();
- if (w == declblock_panel_cancel) goto BREAK2;
- else if (w == declblock_panel_ok) break;
- else if (!w) Fl::wait();
- }
- // verify user input
- const char* a = declblock_before_input->value();
- while (isspace(*a)) a++;
- const char* b = declblock_after_input->value();
- while (isspace(*b)) b++;
- message = c_check(a&&a[0]=='#' ? a+1 : a);
- if (!message)
- message = c_check(b&&b[0]=='#' ? b+1 : b);
- if (message) {
- int v = fl_choice("Potential syntax error detected: %s",
- "Continue Editing", "Ignore Error", nullptr, message);
- if (v==0) continue; // Continue Editing
- //if (v==1) { } // Ignore Error and close dialog
- }
- // store user choices in data structure
- name(a);
- storestring(b, after);
- if (write_map_ & STATIC_IN_HEADER) {
- if (declblock_static_header->value()==0) {
- write_map_ &= ~STATIC_IN_HEADER;
- Fluid.proj.set_modflag(1);
- }
- } else {
- if (declblock_static_header->value()) {
- write_map_ |= STATIC_IN_HEADER;
- Fluid.proj.set_modflag(1);
- }
- }
- if (write_map_ & STATIC_IN_SOURCE) {
- if (declblock_static_source->value()==0) {
- write_map_ &= ~STATIC_IN_SOURCE;
- Fluid.proj.set_modflag(1);
- }
- } else {
- if (declblock_static_source->value()) {
- write_map_ |= STATIC_IN_SOURCE;
- Fluid.proj.set_modflag(1);
- }
- }
- if (write_map_ & CODE_IN_HEADER) {
- if (declblock_code_header->value()==0) {
- write_map_ &= ~CODE_IN_HEADER;
- Fluid.proj.set_modflag(1);
- }
- } else {
- if (declblock_code_header->value()) {
- write_map_ |= CODE_IN_HEADER;
- Fluid.proj.set_modflag(1);
- }
- }
- if (write_map_ & CODE_IN_SOURCE) {
- if (declblock_code_source->value()==0) {
- write_map_ &= ~CODE_IN_SOURCE;
- Fluid.proj.set_modflag(1);
- }
- } else {
- if (declblock_code_source->value()) {
- write_map_ |= CODE_IN_SOURCE;
- Fluid.proj.set_modflag(1);
- }
- }
- c = declblock_comment_input->buffer()->text();
- if (c && *c) {
- if (!comment() || strcmp(c, comment())) { Fluid.proj.set_modflag(1); redraw_browser(); }
- comment(c);
- } else {
- if (comment()) { Fluid.proj.set_modflag(1); redraw_browser(); }
- comment(nullptr);
- }
- if (c) free((void*)c);
- break;
- }
-BREAK2:
- declblock_panel->hide();
+ open_panel();
}
/**
@@ -1767,7 +1433,7 @@ void Comment_Node::read_property(fld::io::Project_Reader &f, const char *c) {
add their own presets which are stored per user in a separate
preferences database.
*/
-static void load_comments_preset(Fl_Preferences &menu) {
+void load_comments_preset(Fl_Preferences &menu) {
static const char * const predefined_comment[] = {
"GNU Public License v3/GPL Header", "GNU Public License v3/GPL Footer",
"GNU Public License v3/LGPL Header", "GNU Public License v3/LGPL Footer",
@@ -1787,119 +1453,7 @@ static void load_comments_preset(Fl_Preferences &menu) {
Open the comment_panel to edit this node.
*/
void Comment_Node::open() {
- if (!comment_panel) make_comment_panel();
- const char *text = name();
- {
- int i=0, n=0, version = 0;
- Fl_Preferences menu(Fl_Preferences::USER_L, "fltk.org", "fluid_comments_menu");
- comment_predefined->clear();
- comment_predefined->add("_Edit/Add current comment...");
- comment_predefined->add("_Edit/Remove last selection...");
- menu.get("version", version, -1);
- if (version < 10400) load_comments_preset(menu);
- menu.get("n", n, 0);
- for (i=0;i<n;i++) {
- char *text;
- menu.get(Fl_Preferences::Name(i), text, "");
- comment_predefined->add(text);
- free(text);
- }
- }
- comment_input->buffer()->text( text ? text : "" );
- comment_in_source->value(in_c_);
- comment_in_header->value(in_h_);
- comment_panel->show();
- char itempath[FL_PATH_MAX]; itempath[0] = 0;
- int last_selected_item = 0;
- for (;;) { // repeat as long as there are errors
- for (;;) {
- Fl_Widget* w = Fl::readqueue();
- if (w == comment_panel_cancel) goto BREAK2;
- else if (w == comment_panel_ok) break;
- else if (w == comment_predefined) {
- if (comment_predefined->value()==1) {
- // add the current comment to the database
- const char *xname = fl_input(
- "Please enter a name to reference the current\ncomment in your database.\n\n"
- "Use forward slashes '/' to create submenus.",
- "My Comment");
- if (xname) {
- char *name = fl_strdup(xname);
- for (char*s=name;*s;s++) if (*s==':') *s = ';';
- int n;
- Fl_Preferences db(Fl_Preferences::USER_L, "fltk.org", "fluid_comments");
- db.set(name, comment_input->buffer()->text());
- Fl_Preferences menu(Fl_Preferences::USER_L, "fltk.org", "fluid_comments_menu");
- menu.get("n", n, 0);
- menu.set(Fl_Preferences::Name(n), name);
- menu.set("n", ++n);
- comment_predefined->add(name);
- free(name);
- }
- } else if (comment_predefined->value()==2) {
- // remove the last selected comment from the database
- if (itempath[0]==0 || last_selected_item==0) {
- fl_message("Please select an entry from this menu first.");
- } else if (fl_choice("Are you sure that you want to delete the entry\n"
- "\"%s\"\nfrom the database?", "Cancel", "Delete",
- nullptr, itempath)) {
- Fl_Preferences db(Fl_Preferences::USER_L, "fltk.org", "fluid_comments");
- db.deleteEntry(itempath);
- comment_predefined->remove(last_selected_item);
- Fl_Preferences menu(Fl_Preferences::USER_L, "fltk.org", "fluid_comments_menu");
- int i, n;
- for (i=4, n=0; i<comment_predefined->size(); i++) {
- const Fl_Menu_Item *mi = comment_predefined->menu()+i;
- if (comment_predefined->item_pathname(itempath, 255, mi)==0) {
- if (itempath[0]=='/') memmove(itempath, itempath+1, 255);
- if (itempath[0]) menu.set(Fl_Preferences::Name(n++), itempath);
- }
- }
- menu.set("n", n);
- }
- } else {
- // load the selected comment from the database
- if (comment_predefined->item_pathname(itempath, 255)==0) {
- if (itempath[0]=='/') memmove(itempath, itempath+1, 255);
- Fl_Preferences db(Fl_Preferences::USER_L, "fltk.org", "fluid_comments");
- char *text;
- db.get(itempath, text, "(no text found in data base)");
- comment_input->buffer()->text(text);
- free(text);
- last_selected_item = comment_predefined->value();
- }
- }
- }
- else if (w == comment_load) {
- // load a comment from disk
- fl_file_chooser_ok_label("Use File");
- const char *fname = fl_file_chooser("Pick a comment", nullptr, nullptr);
- fl_file_chooser_ok_label(nullptr);
- if (fname) {
- if (comment_input->buffer()->loadfile(fname)) {
- fl_alert("Error loading file\n%s", fname);
- }
- }
- }
- else if (!w) Fl::wait();
- }
- char*c = comment_input->buffer()->text();
- name(c);
- free(c);
- int mod = 0;
- if (in_c_ != comment_in_source->value()) {
- in_c_ = comment_in_source->value();
- mod = 1;
- }
- if (in_h_ != comment_in_header->value()) {
- in_h_ = comment_in_header->value();
- mod = 1;
- }
- if (mod) Fluid.proj.set_modflag(1);
- break;
- }
-BREAK2:
- comment_panel->hide();
+ open_panel();
}
/**
@@ -2049,75 +1603,7 @@ void Class_Node::read_property(fld::io::Project_Reader &f, const char *c) {
Open the class_panel to edit the class name and superclass name.
*/
void Class_Node::open() {
- if (!class_panel) make_class_panel();
- char fullname[FL_PATH_MAX]="";
- if (prefix() && strlen(prefix()))
- sprintf(fullname,"%s %s",prefix(),name());
- else
- strcpy(fullname, name());
- c_name_input->value(fullname);
- c_subclass_input->value(subclass_of);
- c_public_button->value(public_);
- const char *c = comment();
- c_comment_input->buffer()->text(c?c:"");
- class_panel->show();
- const char* message = nullptr;
-
- char *na=nullptr,*pr=nullptr,*p=nullptr; // name and prefix substrings
-
- for (;;) { // repeat as long as there are errors
- // we don;t give the option to ignore this error here because code depends
- // on this being a C++ identifier
- if (message) fl_alert("%s", message);
- for (;;) {
- Fl_Widget* w = Fl::readqueue();
- if (w == c_panel_cancel) goto BREAK2;
- else if (w == c_panel_ok) break;
- else if (!w) Fl::wait();
- }
- const char*c = c_name_input->value();
- char *s = fl_strdup(c);
- size_t len = strlen(s);
- if (!*s) goto OOPS;
- p = (char*) (s+len-1);
- while (p>=s && isspace(*p)) *(p--)='\0';
- if (p<s) goto OOPS;
- while (p>=s && is_id(*p)) p--;
- if ( (p<s && !is_id(*(p+1))) || !*(p+1) ) {
- OOPS: message = "class name must be C++ identifier";
- free((void*)s);
- continue;
- }
- na=p+1; // now we have the name
- if(p>s) *p--='\0';
- while (p>=s && isspace(*p)) *(p--)='\0';
- while (p>=s && is_id(*p)) p--;
- if (p<s) p++;
- if (is_id(*p) && p<na) pr=p; // prefix detected
- c = c_subclass_input->value();
- message = c_check(c);
- if (message) { free((void*)s);continue;}
- name(na);
- prefix(pr);
- free((void*)s);
- storestring(c, subclass_of);
- if (public_ != c_public_button->value()) {
- public_ = c_public_button->value();
- Fluid.proj.set_modflag(1);
- }
- c = c_comment_input->buffer()->text();
- if (c && *c) {
- if (!comment() || strcmp(c, comment())) { Fluid.proj.set_modflag(1); redraw_browser(); }
- comment(c);
- } else {
- if (comment()) { Fluid.proj.set_modflag(1); redraw_browser(); }
- comment(nullptr);
- }
- if (c) free((void*)c);
- break;
- }
-BREAK2:
- class_panel->hide();
+ open_panel();
}
/**
diff --git a/fluid/nodes/Function_Node.h b/fluid/nodes/Function_Node.h
index ac8bcdcc2..56a0046e0 100644
--- a/fluid/nodes/Function_Node.h
+++ b/fluid/nodes/Function_Node.h
@@ -48,8 +48,8 @@ public:
typedef Node super;
static Function_Node prototype;
private:
- const char* return_type;
- char public_, cdecl_, constructor, havewidgets;
+ const char* return_type_;
+ char public_, declare_c_, constructor, havewidgets;
public:
Function_Node();
~Function_Node();
@@ -70,6 +70,12 @@ public:
void write_properties(fld::io::Project_Writer &f) override;
void read_property(fld::io::Project_Reader &f, const char *) override;
int has_signature(const char *, const char*) const;
+ const char *return_type() { return return_type_; }
+ void return_type(const char *t) { storestring(t, return_type_); }
+ char visibility() { return public_; }
+ void visibility(char v) { public_ = v; }
+ char declare_c() { return declare_c_; }
+ void declare_c(char v) { declare_c_ = v; }
};
// ---- Code_Node declaration
@@ -79,11 +85,11 @@ class Code_Node : public Node
public:
typedef Node super;
static Code_Node prototype;
-private:
- ExternalCodeEditor editor_;
int cursor_position_;
int code_input_scroll_row;
int code_input_scroll_col;
+private:
+ ExternalCodeEditor editor_;
public:
Code_Node();
Node *make(Strategy strategy) override;
@@ -125,6 +131,8 @@ public:
bool is_a(Type inType) const override { return (inType==Type::CodeBlock) ? true : super::is_a(inType); }
void write_properties(fld::io::Project_Writer &f) override;
void read_property(fld::io::Project_Reader &f, const char *) override;
+ const char *end_code() { return after; }
+ void end_code(const char *c) { storestring(c, after); }
};
// ---- Decl_Node declaration
@@ -135,7 +143,7 @@ public:
typedef Node super;
static Decl_Node prototype;
protected:
- char public_;
+ char public_; // public = 0, private = 1, protected = 2
char static_;
public:
@@ -150,6 +158,10 @@ public:
int is_public() const override;
Type type() const override { return Type::Decl; }
bool is_a(Type inType) const override { return (inType==Type::Decl) ? true : super::is_a(inType); }
+ char visibility() { return public_; }
+ void visibility(char v) { public_ = v; }
+ char output_file() { return (public_&1)|((static_&1)<<1); }
+ void output_file(char f) { public_ = (f&1); static_ = ((f>>1)&1); }
};
// ---- Data_Node declaration
@@ -160,8 +172,8 @@ public:
typedef Decl_Node super;
static Data_Node prototype;
private:
- const char *filename_;
- int text_mode_;
+ const char *filename_ { nullptr };
+ int output_format_ { 0 };
public:
Data_Node();
@@ -175,6 +187,10 @@ public:
void read_property(fld::io::Project_Reader &f, const char *) override;
Type type() const override { return Type::Data; }
bool is_a(Type inType) const override { return (inType==Type::Data) ? true : super::is_a(inType); }
+ void filename(const char* fn);
+ const char* filename() { return filename_; }
+ int output_format() { return output_format_; }
+ void output_format(int fmt) { output_format_ = fmt; }
};
// ---- DeclBlock_Node declaration
@@ -184,15 +200,15 @@ class DeclBlock_Node : public Node
public:
typedef Node super;
static DeclBlock_Node prototype;
-private:
enum {
CODE_IN_HEADER = 1,
CODE_IN_SOURCE = 2,
STATIC_IN_HEADER = 4,
STATIC_IN_SOURCE = 8
};
- const char* after; ///< code after all children of this block
- int write_map_; ///< see enum above
+private:
+ const char* after { nullptr }; ///< code after all children of this block
+ int write_map_ { CODE_IN_SOURCE }; ///< see enum above
public:
DeclBlock_Node();
@@ -211,6 +227,10 @@ public:
int is_public() const override;
Type type() const override { return Type::DeclBlock; }
bool is_a(Type inType) const override { return (inType==Type::DeclBlock) ? true : super::is_a(inType); }
+ const char *end_code() { return after; }
+ void end_code(const char *c) { storestring(c, after); }
+ int write_map() { return write_map_; }
+ void write_map(int v) { write_map_ = v; }
};
// ---- Comment_Node declaration
@@ -235,6 +255,10 @@ public:
int is_public() const override { return 1; }
Type type() const override { return Type::Comment; }
bool is_a(Type inType) const override { return (inType==Type::Comment) ? true : super::is_a(inType); }
+ bool in_h() { return in_h_; }
+ void in_h(bool v) { in_h_ = v; }
+ bool in_c() { return in_c_; }
+ void in_c(bool v) { in_c_ = v; }
};
// ---- Class_Node declaration
@@ -268,6 +292,10 @@ public:
bool is_a(Type inType) const override { return (inType==Type::Class) ? true : super::is_a(inType); }
void write_properties(fld::io::Project_Writer &f) override;
void read_property(fld::io::Project_Reader &f, const char *) override;
+ const char* base_class_name() { return subclass_of; }
+ void base_class_name(const char* name) { storestring(name, subclass_of); }
+ char visibility() { return public_; }
+ void visibility(char v) { public_ = v; }
// class prefix attribute access
void prefix(const char* p);
diff --git a/fluid/nodes/Group_Node.cxx b/fluid/nodes/Group_Node.cxx
index d269b62ab..7565a5552 100644
--- a/fluid/nodes/Group_Node.cxx
+++ b/fluid/nodes/Group_Node.cxx
@@ -30,6 +30,7 @@
#include <FL/Fl.H>
#include <FL/Fl_Group.H>
+#include <FL/Fl_Tile.H>
#include <FL/Fl_Table.H>
#include <FL/Fl_Menu_Item.H>
#include <FL/fl_message.H>
@@ -222,8 +223,10 @@ void Group_Node::add_child(Node* cc, Node* before) {
// This is called when o is deleted. If it is in the tab group make
// sure it is not visible:
void Group_Node::remove_child(Node* cc) {
- Widget_Node* c = (Widget_Node*)cc;
- ((Fl_Group*)o)->remove(c->o);
+ if (cc->is_widget()) {
+ Widget_Node* c = (Widget_Node*)cc;
+ ((Fl_Group*)o)->remove(c->o);
+ }
o->redraw();
}
@@ -764,10 +767,12 @@ void Tabs_Node::add_child(Node* c, Node* before) {
}
void Tabs_Node::remove_child(Node* cc) {
- Widget_Node* c = (Widget_Node*)cc;
- Fl_Tabs *t = (Fl_Tabs*)o;
- if (t->value() == c->o) t->value(nullptr);
- Group_Node::remove_child(c);
+ if (cc->is_widget()) {
+ Widget_Node* c = (Widget_Node*)cc;
+ Fl_Tabs *t = (Fl_Tabs*)o;
+ if (t->value() == c->o) t->value(nullptr);
+ }
+ Group_Node::remove_child(cc);
}
Fl_Widget *Tabs_Node::enter_live_mode(int) {
@@ -816,6 +821,15 @@ Tile_Node Tile_Node::prototype; // the "factory"
const char tile_type_name[] = "Fl_Tile";
+// live mode support
+Fl_Widget* Tile_Node::enter_live_mode(int) {
+ Fl_Group *grp = new Fl_Tile(o->x(), o->y(), o->w(), o->h());
+ return propagate_live_mode(grp);
+}
+
+void Tile_Node::leave_live_mode() {
+}
+
void Tile_Node::copy_properties() {
Group_Node::copy_properties();
// no additional properties
diff --git a/fluid/nodes/Group_Node.h b/fluid/nodes/Group_Node.h
index 6b6fe9fcd..1aea39df5 100644
--- a/fluid/nodes/Group_Node.h
+++ b/fluid/nodes/Group_Node.h
@@ -229,6 +229,8 @@ public:
Widget_Node *_make() override {return new Tile_Node();}
Type type() const override { return Type::Tile; }
bool is_a(Type inType) const override { return (inType==Type::Tile) ? true : super::is_a(inType); }
+ Fl_Widget *enter_live_mode(int top=0) override;
+ void leave_live_mode() override;
void copy_properties() override;
};
diff --git a/fluid/nodes/Node.cxx b/fluid/nodes/Node.cxx
index 86c5d16f7..0b1cb2d4d 100644
--- a/fluid/nodes/Node.cxx
+++ b/fluid/nodes/Node.cxx
@@ -537,6 +537,8 @@ Node::~Node() {
if (Fluid.proj.tree.last == this) Fluid.proj.tree.last = prev;
if (Fluid.proj.tree.first == this) Fluid.proj.tree.first = next;
if (Fluid.proj.tree.current == this) Fluid.proj.tree.current = nullptr;
+ if (current_widget == this) current_widget = nullptr;
+ if (current_node == this) current_node = nullptr;
if (parent) parent->remove_child(this);
if (name_) free((void*)name_);
if (label_) free((void*)label_);
diff --git a/fluid/nodes/Widget_Node.cxx b/fluid/nodes/Widget_Node.cxx
index 3d076b29b..7a2a7c98a 100644
--- a/fluid/nodes/Widget_Node.cxx
+++ b/fluid/nodes/Widget_Node.cxx
@@ -321,6 +321,7 @@ Fl_Window *the_panel;
// with any actual useful values for the argument. I also use this to
// initialized parts of the widget that are nyi by fluid.
+Node* current_node { nullptr };
Widget_Node *current_widget; // one of the selected ones
void* const LOAD = (void *)"LOAD"; // "magic" pointer to indicate that we need to load values into the dialog
int numselected; // number selected
@@ -1192,12 +1193,18 @@ void overlay_cb(Fl_Button*o,void *v) {
void leave_live_mode_cb(Fl_Widget*, void*);
-void live_mode_cb(Fl_Button*o,void *) {
+void live_mode_cb(Fl_Button* o, void *) {
/// \todo live mode should end gracefully when the application quits
/// or when the user closes the live widget
static Node *live_type = nullptr;
static Fl_Widget *live_widget = nullptr;
static Fl_Window *live_window = nullptr;
+
+ if (!current_widget) {
+ o->value(0);
+ return;
+ }
+
// if 'o' is 0, we must quit live mode
if (!o) {
o = wLiveMode;
@@ -1263,29 +1270,67 @@ void load_panel() {
numselected = 0;
current_widget = nullptr;
if (Fluid.proj.tree.current) {
- if (Fluid.proj.tree.current->is_widget())
- current_widget=(Widget_Node*)Fluid.proj.tree.current;
- for (Node *o = Fluid.proj.tree.first; o; o = o->next) {
- if (o->is_widget() && o->selected) {
- numselected++;
- if (!current_widget) current_widget = (Widget_Node*)o;
+ if (Fluid.proj.tree.current->is_a(Type::Data)) {
+ current_node = Fluid.proj.tree.current;
+ tabs_wizard->value(data_tabs);
+ numselected = 1;
+ } else if (Fluid.proj.tree.current->is_a(Type::Comment)) {
+ current_node = Fluid.proj.tree.current;
+ tabs_wizard->value(comment_tabs);
+ numselected = 1;
+ } else if (Fluid.proj.tree.current->is_a(Type::Class)) {
+ current_node = Fluid.proj.tree.current;
+ tabs_wizard->value(class_tabs);
+ numselected = 1;
+ } else if (Fluid.proj.tree.current->is_a(Type::DeclBlock)) {
+ current_node = Fluid.proj.tree.current;
+ tabs_wizard->value(declblock_tabs);
+ numselected = 1;
+ } else if (Fluid.proj.tree.current->is_a(Type::Decl)) {
+ current_node = Fluid.proj.tree.current;
+ tabs_wizard->value(decl_tabs);
+ numselected = 1;
+ } else if (Fluid.proj.tree.current->is_a(Type::CodeBlock)) {
+ current_node = Fluid.proj.tree.current;
+ tabs_wizard->value(codeblock_tabs);
+ numselected = 1;
+ } else if (Fluid.proj.tree.current->is_a(Type::Code)) {
+ current_node = Fluid.proj.tree.current;
+ tabs_wizard->value(code_tabs);
+ numselected = 1;
+ } else if (Fluid.proj.tree.current->is_a(Type::Function)) {
+ current_node = Fluid.proj.tree.current;
+ tabs_wizard->value(func_tabs);
+ numselected = 1;
+ } else {
+ current_node = nullptr;
+ if (Fluid.proj.tree.current->is_widget())
+ current_widget=(Widget_Node*)Fluid.proj.tree.current;
+ for (Node *o = Fluid.proj.tree.first; o; o = o->next) {
+ if (o->is_widget() && o->selected) {
+ numselected++;
+ if (!current_widget) current_widget = (Widget_Node*)o;
+ }
}
}
}
- if (current_widget && current_widget->is_a(Type::Grid)) {
- if (widget_tab_grid->parent()!=widget_tabs)
- widget_tabs->add(widget_tab_grid);
- } else {
- if (widget_tab_grid->parent()==widget_tabs) {
- widget_tabs_repo->add(widget_tab_grid);
+ if (current_widget) {
+ tabs_wizard->value(widget_tabs);
+ if (current_widget && current_widget->is_a(Type::Grid)) {
+ if (widget_tab_grid->parent()!=widget_tabs)
+ widget_tabs->add(widget_tab_grid);
+ } else {
+ if (widget_tab_grid->parent()==widget_tabs) {
+ widget_tabs_repo->add(widget_tab_grid);
+ }
}
- }
- if (current_widget && current_widget->parent && current_widget->parent->is_a(Type::Grid)) {
- if (widget_tab_grid_child->parent()!=widget_tabs)
- widget_tabs->add(widget_tab_grid_child);
- } else {
- if (widget_tab_grid_child->parent()==widget_tabs) {
- widget_tabs_repo->add(widget_tab_grid_child);
+ if (current_widget && current_widget->parent && current_widget->parent->is_a(Type::Grid)) {
+ if (widget_tab_grid_child->parent()!=widget_tabs)
+ widget_tabs->add(widget_tab_grid_child);
+ } else {
+ if (widget_tab_grid_child->parent()==widget_tabs) {
+ widget_tabs_repo->add(widget_tab_grid_child);
+ }
}
}
if (numselected)
@@ -1297,7 +1342,7 @@ void load_panel() {
extern Fl_Window *widgetbin_panel;
// This is called when user double-clicks an item, open or update the panel:
-void Widget_Node::open() {
+void open_panel() {
bool adjust_position = false;
if (!the_panel) {
the_panel = make_widget_panel();
@@ -1323,6 +1368,11 @@ void Widget_Node::open() {
}
}
+// This is called when user double-clicks an item, open or update the panel:
+void Widget_Node::open() {
+ open_panel();
+}
+
extern void redraw_overlays();
extern void check_redraw_corresponding_parent(Node*);
extern void redraw_browser();
diff --git a/fluid/nodes/Widget_Node.h b/fluid/nodes/Widget_Node.h
index fd0b7ddbe..0276cbcdf 100644
--- a/fluid/nodes/Widget_Node.h
+++ b/fluid/nodes/Widget_Node.h
@@ -29,7 +29,8 @@ class Widget_Node;
class Image_Asset;
extern void* const LOAD;
-extern Widget_Node *current_widget; // one of the selected ones
+extern Node* current_node; // one of the selected ones
+extern Widget_Node* current_widget; // one of the selected ones
extern const char* subclassname(Node* l);
extern int is_name(const char *c);
diff --git a/fluid/panels/about_panel.fl b/fluid/panels/about_panel.fl
index 7e7feba5f..7ed5f1b4a 100644
--- a/fluid/panels/about_panel.fl
+++ b/fluid/panels/about_panel.fl
@@ -2,6 +2,7 @@
version 1.0500
header_name {.h}
code_name {.cxx}
+include_guard {}
comment {//
// About dialog for the Fast Light Tool Kit (FLTK).
//
diff --git a/fluid/panels/codeview_panel.fl b/fluid/panels/codeview_panel.fl
index 15aa8b818..1d5a0cad6 100644
--- a/fluid/panels/codeview_panel.fl
+++ b/fluid/panels/codeview_panel.fl
@@ -2,6 +2,7 @@
version 1.0500
header_name {.h}
code_name {.cxx}
+include_guard {}
comment {//
// Code dialogs for the Fast Light Tool Kit (FLTK).
//
diff --git a/fluid/panels/function_panel.cxx b/fluid/panels/function_panel.cxx
index 3703cb157..4fea9aa1e 100644
--- a/fluid/panels/function_panel.cxx
+++ b/fluid/panels/function_panel.cxx
@@ -25,744 +25,6 @@
#include "widgets/Bin_Button.h"
#include "widgets/Node_Browser.h"
-/**
- Allow widget navigation on text fields with Tab.
-*/
-static int use_tab_navigation(int, Fl_Text_Editor*) {
- return 0;
-}
-
-Fl_Double_Window *function_panel=(Fl_Double_Window *)0;
-
-Fl_Choice *f_public_member_choice=(Fl_Choice *)0;
-
-Fl_Menu_Item menu_f_public_member_choice[] = {
- {"private", 0, 0, (void*)(0), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"public", 0, 0, (void*)(1), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"protected", 0, 0, (void*)(2), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {0,0,0,0,0,0,0,0,0}
-};
-
-Fl_Choice *f_public_choice=(Fl_Choice *)0;
-
-Fl_Menu_Item menu_f_public_choice[] = {
- {"static", 0, 0, (void*)(0), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"global", 0, 0, (void*)(1), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"local", 0, 0, (void*)(2), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {0,0,0,0,0,0,0,0,0}
-};
-
-Fl_Light_Button *f_c_button=(Fl_Light_Button *)0;
-
-Fl_Input *f_name_input=(Fl_Input *)0;
-
-Fl_Input *f_return_type_input=(Fl_Input *)0;
-
-Fl_Text_Editor *f_comment_input=(Fl_Text_Editor *)0;
-
-Fl_Return_Button *f_panel_ok=(Fl_Return_Button *)0;
-
-Fl_Button *f_panel_cancel=(Fl_Button *)0;
-
-Fl_Double_Window* make_function_panel() {
- { function_panel = new Fl_Double_Window(343, 232, "Function/Method Properties");
- function_panel->align(Fl_Align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE));
- { Fl_Group* o = new Fl_Group(10, 10, 270, 20);
- { f_public_member_choice = new Fl_Choice(10, 10, 75, 20);
- f_public_member_choice->tooltip("Change member access attribute.");
- f_public_member_choice->down_box(FL_BORDER_BOX);
- f_public_member_choice->labelsize(11);
- f_public_member_choice->textsize(11);
- f_public_member_choice->when(FL_WHEN_CHANGED);
- f_public_member_choice->menu(menu_f_public_member_choice);
- } // Fl_Choice* f_public_member_choice
- { f_public_choice = new Fl_Choice(10, 10, 75, 20);
- f_public_choice->tooltip("Change widget accessibility.");
- f_public_choice->down_box(FL_BORDER_BOX);
- f_public_choice->labelsize(11);
- f_public_choice->textsize(11);
- f_public_choice->when(FL_WHEN_CHANGED);
- f_public_choice->menu(menu_f_public_choice);
- } // Fl_Choice* f_public_choice
- { f_c_button = new Fl_Light_Button(95, 10, 120, 20, "C declaration");
- f_c_button->tooltip("Declare with a C interface instead of C++.");
- f_c_button->labelsize(11);
- } // Fl_Light_Button* f_c_button
- { Fl_Box* o = new Fl_Box(235, 10, 45, 20);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- o->end();
- } // Fl_Group* o
- { f_name_input = new Fl_Input(10, 50, 320, 20, "Name(args): (blank for main())");
- f_name_input->tooltip("The name of the function or method.");
- f_name_input->labelfont(1);
- f_name_input->labelsize(11);
- f_name_input->textfont(4);
- f_name_input->textsize(11);
- f_name_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- f_name_input->when(FL_WHEN_NEVER);
- } // Fl_Input* f_name_input
- { f_return_type_input = new Fl_Input(10, 90, 320, 20, "Return Type: (blank to return outermost widget)");
- f_return_type_input->tooltip("The return type of the function or method.");
- f_return_type_input->labelfont(1);
- f_return_type_input->labelsize(11);
- f_return_type_input->textfont(4);
- f_return_type_input->textsize(11);
- f_return_type_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- f_return_type_input->when(FL_WHEN_NEVER);
- } // Fl_Input* f_return_type_input
- { f_comment_input = new Fl_Text_Editor(10, 125, 320, 65, "Comment:");
- f_comment_input->tooltip("Function comment in Doxygen format");
- f_comment_input->box(FL_DOWN_BOX);
- f_comment_input->labelfont(1);
- f_comment_input->labelsize(11);
- f_comment_input->textfont(4);
- f_comment_input->textsize(11);
- f_comment_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- Fl_Group::current()->resizable(f_comment_input);
- f_comment_input->buffer(new Fl_Text_Buffer());
- f_comment_input->add_key_binding(FL_Tab, 0, use_tab_navigation);
- } // Fl_Text_Editor* f_comment_input
- { Fl_Group* o = new Fl_Group(10, 200, 320, 20);
- { f_panel_ok = new Fl_Return_Button(220, 200, 50, 20, "OK");
- f_panel_ok->tooltip("Apply the changes.");
- f_panel_ok->labelsize(11);
- f_panel_ok->window()->hotspot(f_panel_ok);
- } // Fl_Return_Button* f_panel_ok
- { f_panel_cancel = new Fl_Button(280, 200, 50, 20, "Cancel");
- f_panel_cancel->tooltip("Cancel the changes.");
- f_panel_cancel->labelsize(11);
- } // Fl_Button* f_panel_cancel
- { Fl_Box* o = new Fl_Box(10, 200, 205, 20);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- o->end();
- } // Fl_Group* o
- function_panel->set_modal();
- function_panel->end();
- } // Fl_Double_Window* function_panel
- return function_panel;
-}
-
-Fl_Double_Window *code_panel=(Fl_Double_Window *)0;
-
-static void cb_code_panel(Fl_Double_Window*, void*) {
- if (Fl::event()==FL_SHORTCUT && Fl::event_key()==FL_Escape)
- return; // ignore Escape
- code_panel->hide(); // otherwise hide..;
-}
-
-fld::widget::Code_Editor *code_input=(fld::widget::Code_Editor *)0;
-
-Fl_Return_Button *code_panel_ok=(Fl_Return_Button *)0;
-
-Fl_Button *code_panel_cancel=(Fl_Button *)0;
-
-Fl_Double_Window* make_code_panel() {
- { Fl_Double_Window* o = code_panel = new Fl_Double_Window(540, 180, "Code Properties");
- code_panel->labelsize(11);
- code_panel->callback((Fl_Callback*)cb_code_panel);
- { fld::widget::Code_Editor* o = code_input = new fld::widget::Code_Editor(10, 10, 520, 130);
- code_input->box(FL_DOWN_BOX);
- code_input->color(FL_BACKGROUND2_COLOR);
- code_input->selection_color(FL_SELECTION_COLOR);
- code_input->labeltype(FL_NORMAL_LABEL);
- code_input->labelfont(0);
- code_input->labelsize(11);
- code_input->labelcolor(FL_FOREGROUND_COLOR);
- code_input->textfont(4);
- code_input->textsize(11);
- code_input->align(Fl_Align(FL_ALIGN_TOP));
- code_input->when(FL_WHEN_RELEASE);
- Fl_Group::current()->resizable(code_input);
- o->when(FL_WHEN_ENTER_KEY_CHANGED|FL_WHEN_RELEASE);
- } // fld::widget::Code_Editor* code_input
- { Fl_Group* o = new Fl_Group(10, 150, 520, 20);
- o->labelsize(11);
- { code_panel_ok = new Fl_Return_Button(400, 150, 60, 20, "OK");
- code_panel_ok->labelsize(11);
- code_panel_ok->window()->hotspot(code_panel_ok);
- } // Fl_Return_Button* code_panel_ok
- { code_panel_cancel = new Fl_Button(470, 150, 60, 20, "Cancel");
- code_panel_cancel->labelsize(11);
- } // Fl_Button* code_panel_cancel
- { Fl_Box* o = new Fl_Box(10, 150, 380, 20);
- o->labelsize(11);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- o->end();
- } // Fl_Group* o
- code_panel->set_modal();
- o->size_range(200, 150);
- code_panel->end();
- } // Fl_Double_Window* code_panel
- // Enable line numbers
- code_input->linenumber_width(60);
- code_input->linenumber_size(code_input->Fl_Text_Display::textsize());
- return code_panel;
-}
-
-Fl_Double_Window *codeblock_panel=(Fl_Double_Window *)0;
-
-Fl_Input *code_before_input=(Fl_Input *)0;
-
-Fl_Input *code_after_input=(Fl_Input *)0;
-
-Fl_Return_Button *codeblock_panel_ok=(Fl_Return_Button *)0;
-
-Fl_Button *codeblock_panel_cancel=(Fl_Button *)0;
-
-Fl_Double_Window* make_codeblock_panel() {
- { Fl_Double_Window* o = codeblock_panel = new Fl_Double_Window(300, 115, "Code Block Properties");
- codeblock_panel->labelsize(11);
- { code_before_input = new Fl_Input(10, 15, 280, 20, "Conditional code block");
- code_before_input->tooltip("#ifdef or similar conditional code block.");
- code_before_input->labelsize(11);
- code_before_input->textfont(4);
- code_before_input->textsize(11);
- code_before_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- code_before_input->when(FL_WHEN_NEVER);
- } // Fl_Input* code_before_input
- { code_after_input = new Fl_Input(10, 55, 280, 20, "\"{...child code...}\" is inserted here");
- code_after_input->tooltip("#endif or similar conditional code block.");
- code_after_input->labelsize(11);
- code_after_input->textfont(4);
- code_after_input->textsize(11);
- code_after_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- code_after_input->when(FL_WHEN_NEVER);
- Fl_Group::current()->resizable(code_after_input);
- } // Fl_Input* code_after_input
- { Fl_Group* o = new Fl_Group(10, 85, 280, 20);
- { codeblock_panel_ok = new Fl_Return_Button(160, 85, 60, 20, "OK");
- codeblock_panel_ok->labelsize(11);
- codeblock_panel_ok->window()->hotspot(codeblock_panel_ok);
- } // Fl_Return_Button* codeblock_panel_ok
- { codeblock_panel_cancel = new Fl_Button(230, 85, 60, 20, "Cancel");
- codeblock_panel_cancel->shortcut(0xff1b);
- codeblock_panel_cancel->labelsize(11);
- } // Fl_Button* codeblock_panel_cancel
- { Fl_Box* o = new Fl_Box(10, 85, 140, 20);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- o->end();
- } // Fl_Group* o
- codeblock_panel->set_modal();
- o->size_range(o->w(), o->h(), Fl::w(), o->h());
- codeblock_panel->end();
- } // Fl_Double_Window* codeblock_panel
- return codeblock_panel;
-}
-
-Fl_Double_Window *declblock_panel=(Fl_Double_Window *)0;
-
-Fl_Input *declblock_before_input=(Fl_Input *)0;
-
-Fl_Input *declblock_after_input=(Fl_Input *)0;
-
-Fl_Check_Button *declblock_code_source=(Fl_Check_Button *)0;
-
-Fl_Check_Button *declblock_static_source=(Fl_Check_Button *)0;
-
-Fl_Check_Button *declblock_code_header=(Fl_Check_Button *)0;
-
-Fl_Check_Button *declblock_static_header=(Fl_Check_Button *)0;
-
-Fl_Text_Editor *declblock_comment_input=(Fl_Text_Editor *)0;
-
-Fl_Return_Button *declblock_panel_ok=(Fl_Return_Button *)0;
-
-Fl_Button *declblock_panel_cancel=(Fl_Button *)0;
-
-Fl_Double_Window* make_declblock_panel() {
- { Fl_Double_Window* o = declblock_panel = new Fl_Double_Window(300, 355, "Declaration Block Properties");
- declblock_panel->labelsize(11);
- declblock_panel->align(Fl_Align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE));
- { declblock_before_input = new Fl_Input(10, 23, 280, 20, "Start Code:");
- declblock_before_input->tooltip("#ifdef or similar conditional declaration block.");
- declblock_before_input->labelfont(1);
- declblock_before_input->labelsize(11);
- declblock_before_input->textfont(4);
- declblock_before_input->textsize(11);
- declblock_before_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- declblock_before_input->when(FL_WHEN_NEVER);
- } // Fl_Input* declblock_before_input
- { Fl_Box* o = new Fl_Box(10, 48, 280, 20, "\"\\n...child code...\\n\" is inserted here");
- o->labelsize(11);
- } // Fl_Box* o
- { declblock_after_input = new Fl_Input(10, 80, 280, 20, "End Code:");
- declblock_after_input->tooltip("#endif or similar declaration code block.");
- declblock_after_input->labelfont(1);
- declblock_after_input->labelsize(11);
- declblock_after_input->textfont(4);
- declblock_after_input->textsize(11);
- declblock_after_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- declblock_after_input->when(FL_WHEN_NEVER);
- } // Fl_Input* declblock_after_input
- { Fl_Group* o = new Fl_Group(10, 105, 280, 120);
- { Fl_Box* o = new Fl_Box(10, 105, 270, 20, "Enclose code generated by children in source file:");
- o->labelsize(11);
- o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
- } // Fl_Box* o
- { declblock_code_source = new Fl_Check_Button(20, 125, 260, 20, "implementations");
- declblock_code_source->down_box(FL_DOWN_BOX);
- declblock_code_source->labelsize(11);
- } // Fl_Check_Button* declblock_code_source
- { declblock_static_source = new Fl_Check_Button(20, 145, 260, 20, "static initializations and callbacks");
- declblock_static_source->down_box(FL_DOWN_BOX);
- declblock_static_source->labelsize(11);
- } // Fl_Check_Button* declblock_static_source
- { Fl_Box* o = new Fl_Box(10, 165, 270, 20, "Enclose code in header file:");
- o->labelsize(11);
- o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
- } // Fl_Box* o
- { declblock_code_header = new Fl_Check_Button(20, 185, 260, 20, "forward declarations");
- declblock_code_header->down_box(FL_DOWN_BOX);
- declblock_code_header->labelsize(11);
- } // Fl_Check_Button* declblock_code_header
- { declblock_static_header = new Fl_Check_Button(20, 205, 260, 20, "preprecessor and callback declarations");
- declblock_static_header->down_box(FL_DOWN_BOX);
- declblock_static_header->labelsize(11);
- } // Fl_Check_Button* declblock_static_header
- { Fl_Box* o = new Fl_Box(280, 105, 10, 120);
- o->labelsize(11);
- o->hide();
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- o->end();
- } // Fl_Group* o
- { declblock_comment_input = new Fl_Text_Editor(10, 242, 280, 65, "Comment:");
- declblock_comment_input->tooltip("Declaration comment in Doxygen format");
- declblock_comment_input->box(FL_DOWN_BOX);
- declblock_comment_input->labelfont(1);
- declblock_comment_input->labelsize(11);
- declblock_comment_input->textfont(4);
- declblock_comment_input->textsize(11);
- declblock_comment_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- Fl_Group::current()->resizable(declblock_comment_input);
- declblock_comment_input->buffer(new Fl_Text_Buffer());
- declblock_comment_input->add_key_binding(FL_Tab, 0, use_tab_navigation);
- } // Fl_Text_Editor* declblock_comment_input
- { Fl_Group* o = new Fl_Group(10, 321, 280, 20);
- { declblock_panel_ok = new Fl_Return_Button(160, 321, 60, 20, "OK");
- declblock_panel_ok->labelsize(11);
- declblock_panel_ok->window()->hotspot(declblock_panel_ok);
- } // Fl_Return_Button* declblock_panel_ok
- { declblock_panel_cancel = new Fl_Button(230, 321, 60, 20, "Cancel");
- declblock_panel_cancel->shortcut(0xff1b);
- declblock_panel_cancel->labelsize(11);
- } // Fl_Button* declblock_panel_cancel
- { Fl_Box* o = new Fl_Box(10, 321, 140, 20);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- o->end();
- } // Fl_Group* o
- declblock_panel->set_modal();
- declblock_panel->size_range(300, 355);
- o->size_range(o->w(), o->h(), Fl::w(), o->h());
- declblock_panel->end();
- } // Fl_Double_Window* declblock_panel
- return declblock_panel;
-}
-
-Fl_Double_Window *decl_panel=(Fl_Double_Window *)0;
-
-Fl_Choice *decl_choice=(Fl_Choice *)0;
-
-Fl_Menu_Item menu_decl_choice[] = {
- {"in source file only", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"in header file only", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"\"static\" in source file", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"in source and \"extern\" in header", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {0,0,0,0,0,0,0,0,0}
-};
-
-Fl_Choice *decl_class_choice=(Fl_Choice *)0;
-
-Fl_Menu_Item menu_decl_class_choice[] = {
- {"private", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"public", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"protected", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {0,0,0,0,0,0,0,0,0}
-};
-
-fld::widget::Code_Editor *decl_input=(fld::widget::Code_Editor *)0;
-
-Fl_Text_Editor *decl_comment_input=(Fl_Text_Editor *)0;
-
-Fl_Return_Button *decl_panel_ok=(Fl_Return_Button *)0;
-
-Fl_Button *decl_panel_cancel=(Fl_Button *)0;
-
-Fl_Double_Window* make_decl_panel() {
- { decl_panel = new Fl_Double_Window(343, 262, "Declaration Properties");
- decl_panel->align(Fl_Align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE));
- { Fl_Group* o = new Fl_Group(10, 10, 270, 20);
- { Fl_Box* o = new Fl_Box(200, 10, 80, 20);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- { decl_choice = new Fl_Choice(10, 10, 185, 20);
- decl_choice->down_box(FL_BORDER_BOX);
- decl_choice->labelsize(11);
- decl_choice->textsize(11);
- decl_choice->menu(menu_decl_choice);
- } // Fl_Choice* decl_choice
- { decl_class_choice = new Fl_Choice(10, 10, 75, 20);
- decl_class_choice->down_box(FL_BORDER_BOX);
- decl_class_choice->labelsize(11);
- decl_class_choice->textsize(11);
- decl_class_choice->menu(menu_decl_class_choice);
- } // Fl_Choice* decl_class_choice
- o->end();
- } // Fl_Group* o
- { 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 fld::widget::Code_Editor(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);
- decl_input->labeltype(FL_NORMAL_LABEL);
- decl_input->labelfont(0);
- decl_input->labelsize(11);
- decl_input->labelcolor(FL_FOREGROUND_COLOR);
- decl_input->align(Fl_Align(134));
- decl_input->when(FL_WHEN_RELEASE);
- Fl_Group::current()->resizable(decl_input);
- } // fld::widget::Code_Editor* decl_input
- { Fl_Box* o = new Fl_Box(20, 139, 300, 1);
- o->box(FL_BORDER_FRAME);
- o->color((Fl_Color)43);
- } // Fl_Box* o
- o->end();
- Fl_Group::current()->resizable(o);
- } // Fl_Group* o
- { Fl_Group* o = new Fl_Group(10, 140, 320, 80);
- o->box(FL_FLAT_BOX);
- { decl_comment_input = new Fl_Text_Editor(10, 155, 320, 64, "Comment:");
- decl_comment_input->tooltip("Declaration comment in Doxygen format");
- decl_comment_input->box(FL_DOWN_BOX);
- decl_comment_input->labelfont(1);
- decl_comment_input->labelsize(11);
- decl_comment_input->textfont(4);
- decl_comment_input->textsize(11);
- decl_comment_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- Fl_Group::current()->resizable(decl_comment_input);
- decl_comment_input->buffer(new Fl_Text_Buffer());
- decl_comment_input->add_key_binding(FL_Tab, 0, use_tab_navigation);
- } // Fl_Text_Editor* decl_comment_input
- o->end();
- } // Fl_Group* o
- o->size_range(0, 320, 100);
- o->size_range(1, 320, 60);
- o->end();
- Fl_Group::current()->resizable(o);
- } // Fl_Tile* o
- { Fl_Group* o = new Fl_Group(10, 230, 320, 20);
- { decl_panel_ok = new Fl_Return_Button(200, 230, 60, 20, "OK");
- decl_panel_ok->labelsize(11);
- decl_panel_ok->window()->hotspot(decl_panel_ok);
- } // Fl_Return_Button* decl_panel_ok
- { decl_panel_cancel = new Fl_Button(270, 230, 60, 20, "Cancel");
- decl_panel_cancel->shortcut(0xff1b);
- decl_panel_cancel->labelsize(11);
- } // Fl_Button* decl_panel_cancel
- { Fl_Box* o = new Fl_Box(10, 230, 185, 20);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- o->end();
- } // Fl_Group* o
- decl_panel->size_range(343, 262);
- decl_panel->end();
- } // Fl_Double_Window* decl_panel
- return decl_panel;
-}
-
-Fl_Double_Window *data_panel=(Fl_Double_Window *)0;
-
-Fl_Choice *data_choice=(Fl_Choice *)0;
-
-Fl_Menu_Item menu_data_choice[] = {
- {"in source file only", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"in header file only", 0, 0, 0, 16, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"\"static\" in source file", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"in source and \"extern\" in header", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {0,0,0,0,0,0,0,0,0}
-};
-
-Fl_Choice *data_class_choice=(Fl_Choice *)0;
-
-Fl_Menu_Item menu_data_class_choice[] = {
- {"private", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"public", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"protected", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {0,0,0,0,0,0,0,0,0}
-};
-
-Fl_Choice *data_mode=(Fl_Choice *)0;
-
-Fl_Menu_Item menu_data_mode[] = {
- {"binary mode", 0, 0, (void*)(0), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"text mode", 0, 0, (void*)(1), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {"compressed binary", 0, 0, (void*)(2), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
- {0,0,0,0,0,0,0,0,0}
-};
-
-Fl_Input *data_input=(Fl_Input *)0;
-
-Fl_Input *data_filename=(Fl_Input *)0;
-
-Fl_Button *data_filebrowser=(Fl_Button *)0;
-
-Fl_Text_Editor *data_comment_input=(Fl_Text_Editor *)0;
-
-Fl_Return_Button *data_panel_ok=(Fl_Return_Button *)0;
-
-Fl_Button *data_panel_cancel=(Fl_Button *)0;
-
-Fl_Double_Window* make_data_panel() {
- { data_panel = new Fl_Double_Window(343, 264, "Inline Data Properties");
- data_panel->align(Fl_Align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE));
- { Fl_Group* o = new Fl_Group(10, 10, 320, 48);
- { Fl_Box* o = new Fl_Box(288, 10, 42, 20);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- { data_choice = new Fl_Choice(10, 10, 185, 20);
- data_choice->down_box(FL_BORDER_BOX);
- data_choice->labelsize(11);
- data_choice->textsize(11);
- data_choice->menu(menu_data_choice);
- } // Fl_Choice* data_choice
- { data_class_choice = new Fl_Choice(10, 10, 75, 20);
- data_class_choice->down_box(FL_BORDER_BOX);
- data_class_choice->labelsize(11);
- data_class_choice->textsize(11);
- 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->down_box(FL_BORDER_BOX);
- data_mode->labelsize(11);
- data_mode->textsize(11);
- data_mode->menu(menu_data_mode);
- } // Fl_Choice* data_mode
- 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->labelfont(1);
- data_input->labelsize(11);
- data_input->textfont(4);
- data_input->textsize(11);
- data_input->align(Fl_Align(133));
- data_input->when(FL_WHEN_NEVER);
- } // Fl_Input* data_input
- { data_filename = new Fl_Input(10, 116, 280, 20, "Filename:");
- data_filename->tooltip("Name and path of file that will be inlined.");
- data_filename->labelfont(1);
- data_filename->labelsize(11);
- data_filename->textfont(4);
- data_filename->textsize(11);
- data_filename->align(Fl_Align(133));
- data_filename->when(FL_WHEN_NEVER);
- } // Fl_Input* data_filename
- { data_filebrowser = new Fl_Button(290, 116, 40, 20, "@fileopen");
- data_filebrowser->labelcolor((Fl_Color)134);
- } // Fl_Button* data_filebrowser
- { data_comment_input = new Fl_Text_Editor(10, 156, 320, 65, "Comment:");
- data_comment_input->tooltip("Declaration comment in Doxygen format");
- data_comment_input->box(FL_DOWN_BOX);
- data_comment_input->labelfont(1);
- data_comment_input->labelsize(11);
- data_comment_input->textfont(4);
- data_comment_input->textsize(11);
- data_comment_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- Fl_Group::current()->resizable(data_comment_input);
- data_comment_input->buffer(new Fl_Text_Buffer());
- data_comment_input->add_key_binding(FL_Tab, 0, use_tab_navigation);
- } // Fl_Text_Editor* data_comment_input
- { Fl_Group* o = new Fl_Group(10, 231, 320, 20);
- { data_panel_ok = new Fl_Return_Button(200, 231, 60, 20, "OK");
- data_panel_ok->labelsize(11);
- data_panel_ok->window()->hotspot(data_panel_ok);
- } // Fl_Return_Button* data_panel_ok
- { data_panel_cancel = new Fl_Button(270, 231, 60, 20, "Cancel");
- data_panel_cancel->shortcut(0xff1b);
- data_panel_cancel->labelsize(11);
- } // Fl_Button* data_panel_cancel
- { Fl_Box* o = new Fl_Box(10, 231, 185, 20);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- o->end();
- } // Fl_Group* o
- data_panel->size_range(343, 237);
- data_panel->end();
- } // Fl_Double_Window* data_panel
- return data_panel;
-}
-
-Fl_Double_Window *class_panel=(Fl_Double_Window *)0;
-
-Fl_Light_Button *c_public_button=(Fl_Light_Button *)0;
-
-Fl_Input *c_name_input=(Fl_Input *)0;
-
-Fl_Input *c_subclass_input=(Fl_Input *)0;
-
-Fl_Text_Editor *c_comment_input=(Fl_Text_Editor *)0;
-
-Fl_Return_Button *c_panel_ok=(Fl_Return_Button *)0;
-
-Fl_Button *c_panel_cancel=(Fl_Button *)0;
-
-Fl_Double_Window* make_class_panel() {
- { class_panel = new Fl_Double_Window(342, 196, "Class Properties");
- class_panel->labelsize(11);
- { Fl_Group* o = new Fl_Group(10, 10, 280, 20);
- o->hide();
- { c_public_button = new Fl_Light_Button(10, 10, 60, 20, "public");
- c_public_button->tooltip("Make the class publicly accessible.");
- c_public_button->labelsize(11);
- c_public_button->when(FL_WHEN_NEVER);
- c_public_button->hide();
- } // Fl_Light_Button* c_public_button
- { Fl_Box* o = new Fl_Box(80, 10, 210, 20);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- o->end();
- } // Fl_Group* o
- { c_name_input = new Fl_Input(10, 20, 320, 20, "Name:");
- c_name_input->tooltip("Name of class.");
- c_name_input->labelfont(1);
- c_name_input->labelsize(11);
- c_name_input->textfont(4);
- c_name_input->textsize(11);
- c_name_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- c_name_input->when(FL_WHEN_NEVER);
- } // Fl_Input* c_name_input
- { c_subclass_input = new Fl_Input(10, 55, 320, 20, "Subclass of (text between : and {)");
- c_subclass_input->tooltip("Name of subclass.");
- c_subclass_input->labelfont(1);
- c_subclass_input->labelsize(11);
- c_subclass_input->textfont(4);
- c_subclass_input->textsize(11);
- c_subclass_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- c_subclass_input->when(FL_WHEN_NEVER);
- } // Fl_Input* c_subclass_input
- { c_comment_input = new Fl_Text_Editor(10, 90, 320, 65, "Comment:");
- c_comment_input->tooltip("Class comment in Doxygen format");
- c_comment_input->box(FL_DOWN_BOX);
- c_comment_input->labelfont(1);
- c_comment_input->labelsize(11);
- c_comment_input->textfont(4);
- c_comment_input->textsize(11);
- c_comment_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- Fl_Group::current()->resizable(c_comment_input);
- c_comment_input->buffer(new Fl_Text_Buffer());
- c_comment_input->add_key_binding(FL_Tab, 0, use_tab_navigation);
- } // Fl_Text_Editor* c_comment_input
- { Fl_Group* o = new Fl_Group(10, 165, 320, 20);
- { c_panel_ok = new Fl_Return_Button(200, 165, 60, 20, "OK");
- c_panel_ok->labelsize(11);
- c_panel_ok->window()->hotspot(c_panel_ok);
- } // Fl_Return_Button* c_panel_ok
- { c_panel_cancel = new Fl_Button(270, 165, 60, 20, "Cancel");
- c_panel_cancel->shortcut(0xff1b);
- c_panel_cancel->labelsize(11);
- } // Fl_Button* c_panel_cancel
- { Fl_Box* o = new Fl_Box(10, 165, 185, 20);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- o->end();
- } // Fl_Group* o
- class_panel->set_modal();
- class_panel->size_range(343, 188);
- class_panel->end();
- } // Fl_Double_Window* class_panel
- return class_panel;
-}
-
-Fl_Double_Window *comment_panel=(Fl_Double_Window *)0;
-
-Fl_Text_Editor *comment_input=(Fl_Text_Editor *)0;
-
-Fl_Return_Button *comment_panel_ok=(Fl_Return_Button *)0;
-
-Fl_Button *comment_panel_cancel=(Fl_Button *)0;
-
-Fl_Light_Button *comment_in_source=(Fl_Light_Button *)0;
-
-Fl_Light_Button *comment_in_header=(Fl_Light_Button *)0;
-
-Fl_Menu_Button *comment_predefined=(Fl_Menu_Button *)0;
-
-Fl_Button *comment_load=(Fl_Button *)0;
-
-Fl_Double_Window* make_comment_panel() {
- { Fl_Double_Window* o = comment_panel = new Fl_Double_Window(550, 280, "Comment Properties");
- comment_panel->labelsize(11);
- { Fl_Text_Editor* o = comment_input = new Fl_Text_Editor(110, 10, 430, 230);
- comment_input->box(FL_DOWN_BOX);
- comment_input->labelsize(11);
- comment_input->textfont(4);
- comment_input->textsize(11);
- comment_input->textcolor((Fl_Color)58);
- Fl_Group::current()->resizable(comment_input);
- o->when(FL_WHEN_ENTER_KEY_CHANGED|FL_WHEN_RELEASE);
- o->buffer(new Fl_Text_Buffer());
- } // Fl_Text_Editor* comment_input
- { Fl_Group* o = new Fl_Group(110, 250, 430, 20);
- o->labelsize(11);
- { comment_panel_ok = new Fl_Return_Button(370, 250, 80, 20, "OK");
- comment_panel_ok->labelsize(11);
- comment_panel_ok->window()->hotspot(comment_panel_ok);
- } // Fl_Return_Button* comment_panel_ok
- { comment_panel_cancel = new Fl_Button(460, 250, 80, 20, "Cancel");
- comment_panel_cancel->shortcut(0xff1b);
- comment_panel_cancel->labelsize(11);
- } // Fl_Button* comment_panel_cancel
- { Fl_Box* o = new Fl_Box(110, 250, 250, 20);
- o->labelsize(11);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- o->end();
- } // Fl_Group* o
- { Fl_Group* o = new Fl_Group(10, 10, 90, 243);
- o->labelsize(11);
- { comment_in_source = new Fl_Light_Button(10, 10, 90, 20, "In Source");
- comment_in_source->tooltip("Put the comment into the source (.cxx) file.");
- comment_in_source->labelsize(11);
- comment_in_source->when(FL_WHEN_NEVER);
- } // Fl_Light_Button* comment_in_source
- { comment_in_header = new Fl_Light_Button(10, 40, 90, 20, "In Header");
- comment_in_header->tooltip("Put the comment into the header (.h) file.");
- comment_in_header->labelsize(11);
- comment_in_header->when(FL_WHEN_NEVER);
- } // Fl_Light_Button* comment_in_header
- { comment_predefined = new Fl_Menu_Button(10, 70, 90, 20, "Predefined");
- comment_predefined->labelsize(11);
- comment_predefined->textsize(11);
- } // Fl_Menu_Button* comment_predefined
- { comment_load = new Fl_Button(10, 100, 90, 20, "Import...");
- comment_load->labelsize(11);
- } // Fl_Button* comment_load
- { Fl_Box* o = new Fl_Box(10, 132, 90, 121);
- o->labelsize(11);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- o->end();
- } // Fl_Group* o
- comment_panel->set_modal();
- o->size_range(320, 180);
- comment_panel->end();
- } // Fl_Double_Window* comment_panel
- return comment_panel;
-}
-
void type_make_cb(Fl_Widget*,void*d) {
const char *type_name = (const char*)d;
if (Fluid.proj.tree.current && Fluid.proj.tree.current->can_have_children())
diff --git a/fluid/panels/function_panel.fl b/fluid/panels/function_panel.fl
index d07af5c8c..23240f469 100644
--- a/fluid/panels/function_panel.fl
+++ b/fluid/panels/function_panel.fl
@@ -2,6 +2,7 @@
version 1.0500
header_name {.h}
code_name {.cxx}
+include_guard {}
snap {
ver 1
current_suite FLTK
@@ -46,545 +47,6 @@ decl {\#include "widgets/Bin_Button.h"} {private global
decl {\#include "widgets/Node_Browser.h"} {private local
}
-Function {use_tab_navigation(int, Fl_Text_Editor*)} {
- comment {Allow widget navigation on text fields with Tab.} private return_type int
-} {
- code {return 0;} {}
-}
-
-Function {make_function_panel()} {open
-} {
- Fl_Window function_panel {
- label {Function/Method Properties}
- xywh {540 418 343 232} type Double align 80 resizable modal visible
- } {
- Fl_Group {} {open
- xywh {10 10 270 20}
- } {
- Fl_Choice f_public_member_choice {open
- tooltip {Change member access attribute.} xywh {10 10 75 20} down_box BORDER_BOX labelsize 11 when 1 textsize 11
- } {
- MenuItem {} {
- label private
- user_data 0 user_data_type long
- xywh {5 5 100 20} labelsize 11
- }
- MenuItem {} {
- label public
- user_data 1 user_data_type long
- xywh {5 5 100 20} labelsize 11
- }
- MenuItem {} {
- label protected
- user_data 2 user_data_type long
- xywh {5 5 100 20} labelsize 11
- }
- }
- Fl_Choice f_public_choice {open
- tooltip {Change widget accessibility.} xywh {10 10 75 20} down_box BORDER_BOX labelsize 11 when 1 textsize 11
- } {
- MenuItem {} {
- label static
- user_data 0 user_data_type long
- xywh {15 15 100 20} labelsize 11
- }
- MenuItem {} {
- label global
- user_data 1 user_data_type long
- xywh {15 15 100 20} labelsize 11
- }
- MenuItem {} {
- label local
- user_data 2 user_data_type long
- xywh {15 15 100 20} labelsize 11
- }
- }
- Fl_Light_Button f_c_button {
- label {C declaration}
- tooltip {Declare with a C interface instead of C++.} xywh {95 10 120 20} labelsize 11
- }
- Fl_Box {} {
- xywh {235 10 45 20} resizable
- }
- }
- Fl_Input f_name_input {
- label {Name(args): (blank for main())}
- tooltip {The name of the function or method.} xywh {10 50 320 20} labelfont 1 labelsize 11 align 5 when 0 textfont 4 textsize 11
- }
- Fl_Input f_return_type_input {
- label {Return Type: (blank to return outermost widget)}
- tooltip {The return type of the function or method.} xywh {10 90 320 20} labelfont 1 labelsize 11 align 5 when 0 textfont 4 textsize 11
- }
- Fl_Text_Editor f_comment_input {
- label {Comment:}
- tooltip {Function comment in Doxygen format} xywh {10 125 320 65} box DOWN_BOX labelfont 1 labelsize 11 align 5 textfont 4 textsize 11 resizable
- code0 {f_comment_input->buffer(new Fl_Text_Buffer());}
- code1 {f_comment_input->add_key_binding(FL_Tab, 0, use_tab_navigation);}
- }
- Fl_Group {} {open
- xywh {10 200 320 20}
- } {
- Fl_Return_Button f_panel_ok {
- label OK
- tooltip {Apply the changes.} xywh {220 200 50 20} labelsize 11 hotspot
- }
- Fl_Button f_panel_cancel {
- label Cancel
- tooltip {Cancel the changes.} xywh {280 200 50 20} labelsize 11
- }
- Fl_Box {} {
- xywh {10 200 205 20} resizable
- }
- }
- }
-}
-
-Function {make_code_panel()} {open
-} {
- Fl_Window code_panel {
- label {Code Properties}
- callback {if (Fl::event()==FL_SHORTCUT && Fl::event_key()==FL_Escape)
- return; // ignore Escape
-code_panel->hide(); // otherwise hide..}
- xywh {539 567 540 180} type Double labelsize 11 hide resizable
- code0 {o->size_range(200, 150);} modal
- } {
- Fl_Text_Editor code_input {
- xywh {10 10 520 130} box DOWN_BOX labelsize 11 textfont 4 textsize 11 resizable
- code0 {o->when(FL_WHEN_ENTER_KEY_CHANGED|FL_WHEN_RELEASE);}
- code1 {\#include "widgets/Code_Editor.h"}
- class {fld::widget::Code_Editor}
- }
- Fl_Group {} {open
- xywh {10 150 520 20} labelsize 11
- } {
- Fl_Return_Button code_panel_ok {
- label OK
- xywh {400 150 60 20} labelsize 11 hotspot
- }
- Fl_Button code_panel_cancel {
- label Cancel
- xywh {470 150 60 20} labelsize 11
- }
- Fl_Box {} {
- xywh {10 150 380 20} labelsize 11 resizable
- }
- }
- }
- code {// Enable line numbers
-code_input->linenumber_width(60);
-code_input->linenumber_size(code_input->Fl_Text_Display::textsize());} {}
-}
-
-Function {make_codeblock_panel()} {open
-} {
- Fl_Window codeblock_panel {
- label {Code Block Properties}
- xywh {806 735 300 115} type Double labelsize 11 hide resizable
- code0 {o->size_range(o->w(), o->h(), Fl::w(), o->h());} modal
- } {
- Fl_Input code_before_input {
- label {Conditional code block}
- tooltip {\#ifdef or similar conditional code block.} xywh {10 15 280 20} labelsize 11 align 5 when 0 textfont 4 textsize 11
- }
- Fl_Input code_after_input {
- label {"{...child code...}" is inserted here}
- tooltip {\#endif or similar conditional code block.} xywh {10 55 280 20} labelsize 11 align 5 when 0 textfont 4 textsize 11 resizable
- }
- Fl_Group {} {open
- xywh {10 85 280 20}
- } {
- Fl_Return_Button codeblock_panel_ok {
- label OK
- xywh {160 85 60 20} labelsize 11 hotspot
- }
- Fl_Button codeblock_panel_cancel {
- label Cancel
- xywh {230 85 60 20} shortcut 0xff1b labelsize 11
- }
- Fl_Box {} {
- xywh {10 85 140 20} resizable
- }
- }
- }
-}
-
-Function {make_declblock_panel()} {open
-} {
- Fl_Window declblock_panel {
- label {Declaration Block Properties} open
- xywh {645 452 300 355} type Double labelsize 11 align 80 resizable
- code0 {o->size_range(o->w(), o->h(), Fl::w(), o->h());} modal size_range {300 355 0 0} visible
- } {
- Fl_Input declblock_before_input {
- label {Start Code:}
- tooltip {\#ifdef or similar conditional declaration block.} xywh {10 23 280 20} labelfont 1 labelsize 11 align 5 when 0 textfont 4 textsize 11
- }
- Fl_Box {} {
- label {"\\n...child code...\\n" is inserted here}
- xywh {10 48 280 20} labelsize 11
- }
- Fl_Input declblock_after_input {
- label {End Code:}
- tooltip {\#endif or similar declaration code block.} xywh {10 80 280 20} labelfont 1 labelsize 11 align 5 when 0 textfont 4 textsize 11
- }
- Fl_Group {} {open
- xywh {10 105 280 120}
- } {
- Fl_Box {} {
- label {Enclose code generated by children in source file:}
- xywh {10 105 270 20} labelsize 11 align 20
- }
- Fl_Check_Button declblock_code_source {
- label implementations
- xywh {20 125 260 20} down_box DOWN_BOX labelsize 11
- }
- Fl_Check_Button declblock_static_source {
- label {static initializations and callbacks}
- xywh {20 145 260 20} down_box DOWN_BOX labelsize 11
- }
- Fl_Box {} {
- label {Enclose code in header file:}
- xywh {10 165 270 20} labelsize 11 align 20
- }
- Fl_Check_Button declblock_code_header {
- label {forward declarations}
- xywh {20 185 260 20} down_box DOWN_BOX labelsize 11
- }
- Fl_Check_Button declblock_static_header {
- label {preprecessor and callback declarations}
- xywh {20 205 260 20} down_box DOWN_BOX labelsize 11
- }
- Fl_Box {} {
- xywh {280 105 10 120} labelsize 11 hide resizable
- }
- }
- Fl_Text_Editor declblock_comment_input {
- label {Comment:}
- tooltip {Declaration comment in Doxygen format} xywh {10 242 280 65} box DOWN_BOX labelfont 1 labelsize 11 align 5 textfont 4 textsize 11 resizable
- code0 {declblock_comment_input->buffer(new Fl_Text_Buffer());}
- code1 {declblock_comment_input->add_key_binding(FL_Tab, 0, use_tab_navigation);}
- }
- Fl_Group {} {
- xywh {10 321 280 20}
- } {
- Fl_Return_Button declblock_panel_ok {
- label OK
- xywh {160 321 60 20} labelsize 11 hotspot
- }
- Fl_Button declblock_panel_cancel {
- label Cancel
- xywh {230 321 60 20} shortcut 0xff1b labelsize 11
- }
- Fl_Box {} {
- xywh {10 321 140 20} resizable
- }
- }
- }
-}
-
-Function {make_decl_panel()} {open
-} {
- Fl_Window decl_panel {
- label {Declaration Properties}
- xywh {497 618 343 262} type Double align 80 resizable size_range {343 262 0 0} visible
- } {
- Fl_Group {} {
- xywh {10 10 270 20}
- } {
- Fl_Box {} {
- xywh {200 10 80 20} resizable
- }
- Fl_Choice decl_choice {
- xywh {10 10 185 20} down_box BORDER_BOX labelsize 11 textsize 11
- } {
- MenuItem {} {
- label {in source file only}
- xywh {0 0 100 20} labelsize 11
- }
- MenuItem {} {
- label {in header file only}
- xywh {0 0 100 20} labelsize 11
- }
- MenuItem {} {
- label {"static" in source file}
- xywh {0 0 100 20} labelsize 11
- }
- MenuItem {} {
- label {in source and "extern" in header}
- xywh {0 0 100 20} labelsize 11
- }
- }
- Fl_Choice decl_class_choice {
- xywh {10 10 75 20} down_box BORDER_BOX labelsize 11 textsize 11
- } {
- MenuItem {} {
- label private
- xywh {10 10 100 20} labelsize 11
- }
- MenuItem {} {
- label public
- xywh {10 10 100 20} labelsize 11
- }
- MenuItem {} {
- label protected
- xywh {10 10 100 20} labelsize 11
- }
- }
- }
- Fl_Tile {} {open
- xywh {10 40 320 180} resizable
- code2 {o->size_range(0, 320, 100);}
- code3 {o->size_range(1, 320, 60);}
- } {
- Fl_Group {} {open
- xywh {10 40 320 100} box FLAT_BOX resizable
- } {
- Fl_Text_Editor decl_input {
- label {This can be any declaration, like "int x;", an external symbol like "extern int foo();", a \#directive like "\#include <foo.h>", a comment like "//foo" or "/*foo*/", or typedef like "typedef char byte;" or "using std::list;".}
- xywh {10 40 320 45} labelsize 11 align 134 resizable
- code0 {\#include "widgets/Code_Editor.h"}
- class {fld::widget::Code_Editor}
- }
- Fl_Box {} {
- xywh {20 139 300 1} box BORDER_FRAME color 43
- }
- }
- Fl_Group {} {open
- xywh {10 140 320 80} box FLAT_BOX
- } {
- Fl_Text_Editor decl_comment_input {
- label {Comment:}
- tooltip {Declaration comment in Doxygen format} xywh {10 155 320 64} box DOWN_BOX labelfont 1 labelsize 11 align 5 textfont 4 textsize 11 resizable
- code0 {decl_comment_input->buffer(new Fl_Text_Buffer());}
- code1 {decl_comment_input->add_key_binding(FL_Tab, 0, use_tab_navigation);}
- }
- }
- }
- Fl_Group {} {open
- xywh {10 230 320 20}
- } {
- Fl_Return_Button decl_panel_ok {
- label OK
- xywh {200 230 60 20} labelsize 11 hotspot
- }
- Fl_Button decl_panel_cancel {
- label Cancel
- xywh {270 230 60 20} shortcut 0xff1b labelsize 11
- }
- Fl_Box {} {
- xywh {10 230 185 20} resizable
- }
- }
- }
-}
-
-Function {make_data_panel()} {open
-} {
- Fl_Window data_panel {
- label {Inline Data Properties}
- xywh {567 382 343 264} type Double align 80 resizable size_range {343 237 0 0} visible
- } {
- Fl_Group {} {open
- xywh {10 10 320 48}
- } {
- Fl_Box {} {
- xywh {288 10 42 20} resizable
- }
- Fl_Choice data_choice {open
- xywh {10 10 185 20} down_box BORDER_BOX labelsize 11 textsize 11
- } {
- MenuItem {} {
- label {in source file only}
- xywh {0 0 100 20} labelsize 11
- }
- MenuItem {} {
- label {in header file only}
- xywh {0 0 100 20} labelsize 11 hide
- }
- MenuItem {} {
- label {"static" in source file}
- xywh {0 0 100 20} labelsize 11
- }
- MenuItem {} {
- label {in source and "extern" in header}
- xywh {0 0 100 20} labelsize 11
- }
- }
- Fl_Choice data_class_choice {open
- xywh {10 10 75 20} down_box BORDER_BOX labelsize 11 textsize 11
- } {
- MenuItem {} {
- label private
- xywh {10 10 100 20} labelsize 11
- }
- MenuItem {} {
- label public
- xywh {10 10 100 20} labelsize 11
- }
- MenuItem {} {
- label protected
- xywh {10 10 100 20} labelsize 11
- }
- }
- Fl_Choice data_mode {open
- tooltip {text mode generates a "const char*" and a trailing NUL, compressed mode uses zlib to generate a binary block} xywh {10 38 185 20} down_box BORDER_BOX labelsize 11 textsize 11
- } {
- MenuItem {} {
- label {binary mode}
- user_data 0 user_data_type long
- xywh {0 0 100 20} labelsize 11
- }
- MenuItem {} {
- label {text mode}
- user_data 1 user_data_type long
- xywh {0 0 100 20} labelsize 11
- }
- MenuItem {} {
- label {compressed binary}
- user_data 2 user_data_type long
- xywh {0 0 100 20} labelsize 11
- }
- }
- }
- Fl_Input data_input {
- label {Variable Name:}
- tooltip {Inline Data variables are declared "const unsigned char []" in binary mode and "const char*" in text mode.} xywh {10 78 320 20} labelfont 1 labelsize 11 align 133 when 0 textfont 4 textsize 11
- }
- Fl_Input data_filename {
- label {Filename:}
- tooltip {Name and path of file that will be inlined.} xywh {10 116 280 20} labelfont 1 labelsize 11 align 133 when 0 textfont 4 textsize 11
- }
- Fl_Button data_filebrowser {
- label {@fileopen}
- xywh {290 116 40 20} labelcolor 134
- }
- Fl_Text_Editor data_comment_input {
- label {Comment:}
- tooltip {Declaration comment in Doxygen format} xywh {10 156 320 65} box DOWN_BOX labelfont 1 labelsize 11 align 5 textfont 4 textsize 11 resizable
- code0 {data_comment_input->buffer(new Fl_Text_Buffer());}
- code1 {data_comment_input->add_key_binding(FL_Tab, 0, use_tab_navigation);}
- }
- Fl_Group {} {open
- xywh {10 231 320 20}
- } {
- Fl_Return_Button data_panel_ok {
- label OK
- xywh {200 231 60 20} labelsize 11 hotspot
- }
- Fl_Button data_panel_cancel {
- label Cancel
- xywh {270 231 60 20} shortcut 0xff1b labelsize 11
- }
- Fl_Box {} {
- xywh {10 231 185 20} resizable
- }
- }
- }
-}
-
-Function {make_class_panel()} {open
-} {
- Fl_Window class_panel {
- label {Class Properties}
- xywh {795 337 342 196} type Double labelsize 11 hide resizable modal size_range {343 188 0 0}
- } {
- Fl_Group {} {open
- xywh {10 10 280 20} hide
- } {
- Fl_Light_Button c_public_button {
- label public
- tooltip {Make the class publicly accessible.} xywh {10 10 60 20} labelsize 11 when 0 hide
- }
- Fl_Box {} {
- xywh {80 10 210 20} resizable
- }
- }
- Fl_Input c_name_input {
- label {Name:}
- tooltip {Name of class.} xywh {10 20 320 20} labelfont 1 labelsize 11 align 5 when 0 textfont 4 textsize 11
- }
- Fl_Input c_subclass_input {
- label {Subclass of (text between : and \{)}
- tooltip {Name of subclass.} xywh {10 55 320 20} labelfont 1 labelsize 11 align 5 when 0 textfont 4 textsize 11
- }
- Fl_Text_Editor c_comment_input {
- label {Comment:}
- tooltip {Class comment in Doxygen format} xywh {10 90 320 65} box DOWN_BOX labelfont 1 labelsize 11 align 5 textfont 4 textsize 11 resizable
- code0 {c_comment_input->buffer(new Fl_Text_Buffer());}
- code1 {c_comment_input->add_key_binding(FL_Tab, 0, use_tab_navigation);}
- }
- Fl_Group {} {open
- xywh {10 165 320 20}
- } {
- Fl_Return_Button c_panel_ok {
- label OK
- xywh {200 165 60 20} labelsize 11 hotspot
- }
- Fl_Button c_panel_cancel {
- label Cancel
- xywh {270 165 60 20} shortcut 0xff1b labelsize 11
- }
- Fl_Box {} {
- xywh {10 165 185 20} resizable
- }
- }
- }
-}
-
-Function {make_comment_panel()} {open
-} {
- Fl_Window comment_panel {
- label {Comment Properties}
- xywh {519 374 550 280} type Double labelsize 11 hide resizable
- code0 {o->size_range(320, 180);} modal
- } {
- Fl_Text_Editor comment_input {
- xywh {110 10 430 230} box DOWN_BOX labelsize 11 textfont 4 textsize 11 textcolor 58 resizable
- code0 {o->when(FL_WHEN_ENTER_KEY_CHANGED|FL_WHEN_RELEASE);}
- code1 {o->buffer(new Fl_Text_Buffer());}
- }
- Fl_Group {} {open
- xywh {110 250 430 20} labelsize 11
- } {
- Fl_Return_Button comment_panel_ok {
- label OK
- xywh {370 250 80 20} labelsize 11 hotspot
- }
- Fl_Button comment_panel_cancel {
- label Cancel
- xywh {460 250 80 20} shortcut 0xff1b labelsize 11
- }
- Fl_Box {} {
- xywh {110 250 250 20} labelsize 11 resizable
- }
- }
- Fl_Group {} {open
- xywh {10 10 90 243} labelsize 11
- } {
- Fl_Light_Button comment_in_source {
- label {In Source}
- tooltip {Put the comment into the source (.cxx) file.} xywh {10 10 90 20} labelsize 11 when 0
- }
- Fl_Light_Button comment_in_header {
- label {In Header}
- tooltip {Put the comment into the header (.h) file.} xywh {10 40 90 20} labelsize 11 when 0
- }
- Fl_Menu_Button comment_predefined {
- label Predefined open
- xywh {10 70 90 20} labelsize 11 textsize 11
- } {}
- Fl_Button comment_load {
- label {Import...}
- xywh {10 100 90 20} labelsize 11
- }
- Fl_Box {} {
- xywh {10 132 90 121} labelsize 11 resizable
- }
- }
- }
-}
-
Function {type_make_cb(Fl_Widget*,void*d)} {open return_type void
} {
code {const char *type_name = (const char*)d;
@@ -601,7 +63,7 @@ Function {make_widgetbin()} {open
callback {if (Fl::event()==FL_SHORTCUT && Fl::event_key()==FL_Escape)
Fluid.quit();
else
- Fluid.toggle_widget_bin();} open
+ Fluid.toggle_widget_bin();}
xywh {395 227 600 102} type Single align 80 non_modal visible
} {
Fl_Group {} {
@@ -677,7 +139,7 @@ else
}
Fl_Button {} {
user_data {"Fl_Group"}
- callback type_make_cb selected
+ callback type_make_cb
tooltip Group xywh {114 21 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[(int)Type::Group]);}
class {fld::widget::Bin_Button}
diff --git a/fluid/panels/function_panel.h b/fluid/panels/function_panel.h
index b7c9f749d..207a9ee84 100644
--- a/fluid/panels/function_panel.h
+++ b/fluid/panels/function_panel.h
@@ -19,97 +19,11 @@
#ifndef function_panel_h
#define function_panel_h
#include <FL/Fl.H>
-#include <FL/Fl_Double_Window.H>
-extern Fl_Double_Window *function_panel;
-#include <FL/Fl_Group.H>
-#include <FL/Fl_Choice.H>
-extern Fl_Choice *f_public_member_choice;
-extern Fl_Choice *f_public_choice;
-#include <FL/Fl_Light_Button.H>
-extern Fl_Light_Button *f_c_button;
-#include <FL/Fl_Box.H>
-#include <FL/Fl_Input.H>
-extern Fl_Input *f_name_input;
-extern Fl_Input *f_return_type_input;
-#include <FL/Fl_Text_Editor.H>
-extern Fl_Text_Editor *f_comment_input;
-#include <FL/Fl_Return_Button.H>
-extern Fl_Return_Button *f_panel_ok;
-#include <FL/Fl_Button.H>
-extern Fl_Button *f_panel_cancel;
-Fl_Double_Window* make_function_panel();
-extern Fl_Menu_Item menu_f_public_member_choice[];
-extern Fl_Menu_Item menu_f_public_choice[];
-extern Fl_Double_Window *code_panel;
-#include "widgets/Code_Editor.h"
-extern fld::widget::Code_Editor *code_input;
-extern Fl_Return_Button *code_panel_ok;
-extern Fl_Button *code_panel_cancel;
-Fl_Double_Window* make_code_panel();
-extern Fl_Double_Window *codeblock_panel;
-extern Fl_Input *code_before_input;
-extern Fl_Input *code_after_input;
-extern Fl_Return_Button *codeblock_panel_ok;
-extern Fl_Button *codeblock_panel_cancel;
-Fl_Double_Window* make_codeblock_panel();
-extern Fl_Double_Window *declblock_panel;
-extern Fl_Input *declblock_before_input;
-extern Fl_Input *declblock_after_input;
-#include <FL/Fl_Check_Button.H>
-extern Fl_Check_Button *declblock_code_source;
-extern Fl_Check_Button *declblock_static_source;
-extern Fl_Check_Button *declblock_code_header;
-extern Fl_Check_Button *declblock_static_header;
-extern Fl_Text_Editor *declblock_comment_input;
-extern Fl_Return_Button *declblock_panel_ok;
-extern Fl_Button *declblock_panel_cancel;
-Fl_Double_Window* make_declblock_panel();
-extern Fl_Double_Window *decl_panel;
-extern Fl_Choice *decl_choice;
-extern Fl_Choice *decl_class_choice;
-#include <FL/Fl_Tile.H>
-extern fld::widget::Code_Editor *decl_input;
-extern Fl_Text_Editor *decl_comment_input;
-extern Fl_Return_Button *decl_panel_ok;
-extern Fl_Button *decl_panel_cancel;
-Fl_Double_Window* make_decl_panel();
-extern Fl_Menu_Item menu_decl_choice[];
-extern Fl_Menu_Item menu_decl_class_choice[];
-extern Fl_Double_Window *data_panel;
-extern Fl_Choice *data_choice;
-extern Fl_Choice *data_class_choice;
-extern Fl_Choice *data_mode;
-extern Fl_Input *data_input;
-extern Fl_Input *data_filename;
-extern Fl_Button *data_filebrowser;
-extern Fl_Text_Editor *data_comment_input;
-extern Fl_Return_Button *data_panel_ok;
-extern Fl_Button *data_panel_cancel;
-Fl_Double_Window* make_data_panel();
-extern Fl_Menu_Item menu_data_choice[];
-extern Fl_Menu_Item menu_data_class_choice[];
-extern Fl_Menu_Item menu_data_mode[];
-extern Fl_Double_Window *class_panel;
-extern Fl_Light_Button *c_public_button;
-extern Fl_Input *c_name_input;
-extern Fl_Input *c_subclass_input;
-extern Fl_Text_Editor *c_comment_input;
-extern Fl_Return_Button *c_panel_ok;
-extern Fl_Button *c_panel_cancel;
-Fl_Double_Window* make_class_panel();
-extern Fl_Double_Window *comment_panel;
-extern Fl_Text_Editor *comment_input;
-extern Fl_Return_Button *comment_panel_ok;
-extern Fl_Button *comment_panel_cancel;
-extern Fl_Light_Button *comment_in_source;
-extern Fl_Light_Button *comment_in_header;
-#include <FL/Fl_Menu_Button.H>
-extern Fl_Menu_Button *comment_predefined;
-extern Fl_Button *comment_load;
-Fl_Double_Window* make_comment_panel();
void type_make_cb(Fl_Widget*,void*d);
#include <FL/Fl_Window.H>
extern Fl_Window *widgetbin_panel;
+#include <FL/Fl_Group.H>
+#include <FL/Fl_Button.H>
Fl_Window* make_widgetbin();
#endif
diff --git a/fluid/panels/template_panel.fl b/fluid/panels/template_panel.fl
index be0376c2c..31b54a697 100644
--- a/fluid/panels/template_panel.fl
+++ b/fluid/panels/template_panel.fl
@@ -2,6 +2,7 @@
version 1.0500
header_name {.h}
code_name {.cxx}
+include_guard {}
comment {//
// FLUID template support for the Fast Light Tool Kit (FLTK).
//
diff --git a/fluid/panels/widget_panel.cxx b/fluid/panels/widget_panel.cxx
index 049667d69..5bbde2fec 100644
--- a/fluid/panels/widget_panel.cxx
+++ b/fluid/panels/widget_panel.cxx
@@ -24,16 +24,17 @@
#include "proj/undo.h"
#include "nodes/Window_Node.h"
#include "nodes/Grid_Node.h"
+#include "nodes/Function_Node.h"
#include <FL/Fl_Spinner.H>
#include <FL/Fl_Grid.H>
#include <FL/Fl_Flex.H>
#include <FL/fl_ask.H>
#include <FL/Fl_Menu_Item.H>
+#include <FL/Fl_File_Chooser.H>
#define ZERO_ENTRY 1000
extern const char* when_symbol_name(int n);
extern void set_whenmenu(int n);
extern void redraw_browser();
-const char *c_check(const char *c, int type=0);
extern Fl_Color fl_show_colormap(Fl_Color oldcol);
extern void labelcolor_common(Fl_Color c);
extern void color_common(Fl_Color c);
@@ -45,6 +46,13 @@ extern int numselected;
extern Fl_Menu_Item boxmenu[];
extern int haderror;
+/**
+ Allow widget navigation on text fields with Tab.
+*/
+static int use_tab_navigation(int, Fl_Text_Editor*) {
+ return 0;
+}
+
Fl_Double_Window *image_panel_window=(Fl_Double_Window *)0;
static void cb_image_panel_window(Fl_Double_Window* o, void* v) {
@@ -388,7 +396,7 @@ Fl_Double_Window* make_image_panel() {
o->callback((Fl_Callback*)cb_convert);
} // Fl_Check_Button* o
{ Fl_Check_Button* o = new Fl_Check_Button(75, 120, 170, 20, "bind to widget");
- o->tooltip("bind the image to the widget, so it will be deleted automatically");
+ o->tooltip("bind the image to the widget, so it will be deleted with the widget");
o->down_box(FL_DOWN_BOX);
o->labelsize(11);
o->callback((Fl_Callback*)cb_bind);
@@ -464,7 +472,7 @@ Fl_Double_Window* make_image_panel() {
o->callback((Fl_Callback*)cb_convert1);
} // Fl_Check_Button* o
{ Fl_Check_Button* o = new Fl_Check_Button(75, 260, 170, 20, "bind to widget");
- o->tooltip("bind the image to the widget, so it will be deleted automatically");
+ o->tooltip("bind the image to the widget, so it will be deleted with the widget");
o->down_box(FL_DOWN_BOX);
o->labelsize(11);
o->callback((Fl_Callback*)cb_bind1);
@@ -525,10 +533,17 @@ void flex_margin_cb(Fl_Value_Input* i, void* v, void (*load_margin)(Fl_Flex*,Fl_
}
}
+Fl_Wizard *tabs_wizard=(Fl_Wizard *)0;
+
+static void cb_tabs_wizard(Fl_Wizard* o, void* v) {
+ propagate_load((Fl_Group *)o,v);
+}
+
Fl_Tabs *widget_tabs=(Fl_Tabs *)0;
static void cb_widget_tabs(Fl_Tabs* o, void* v) {
- propagate_load((Fl_Group *)o,v);
+ if (current_widget)
+ propagate_load((Fl_Group *)o,v);
}
Fl_Group *wp_gui_tab=(Fl_Group *)0;
@@ -620,7 +635,7 @@ static void cb_Browse1(Fl_Button* o, void* v) {
Fl_Group *wp_gui_alignment=(Fl_Group *)0;
Fl_Menu_Item menu_[] = {
- {" Image Alignment ", 0, 0, (void*)((fl_intptr_t)-1), 1024, (uchar)FL_NORMAL_LABEL, 1, 10, 0},
+ {" Image Alignment ", 0, 0, (void*)((fl_intptr_t)-1), 0, (uchar)FL_NORMAL_LABEL, 1, 10, 0},
{"image over text", 0, 0, (void*)((fl_intptr_t)FL_ALIGN_IMAGE_OVER_TEXT), 0, (uchar)FL_NORMAL_LABEL, 0, 9, 0},
{"text over image", 0, 0, (void*)((fl_intptr_t)FL_ALIGN_TEXT_OVER_IMAGE), 0, (uchar)FL_NORMAL_LABEL, 0, 9, 0},
{"text next to image", 0, 0, (void*)((fl_intptr_t)FL_ALIGN_TEXT_NEXT_TO_IMAGE), 0, (uchar)FL_NORMAL_LABEL, 0, 9, 0},
@@ -630,7 +645,7 @@ Fl_Menu_Item menu_[] = {
};
Fl_Menu_Item menu_1[] = {
- {" Inside && Outside ", 0, 0, (void*)((fl_intptr_t)-1), 1024, (uchar)FL_NORMAL_LABEL, 1, 10, 0},
+ {" Inside && Outside ", 0, 0, (void*)((fl_intptr_t)-1), 0, (uchar)FL_NORMAL_LABEL, 1, 10, 0},
{"top left", 0, 0, (void*)((fl_intptr_t)FL_ALIGN_TOP_LEFT), 0, (uchar)FL_NORMAL_LABEL, 0, 9, 0},
{"top", 0, 0, (void*)((fl_intptr_t)FL_ALIGN_TOP), 0, (uchar)FL_NORMAL_LABEL, 0, 9, 0},
{"top right", 0, 0, (void*)((fl_intptr_t)FL_ALIGN_TOP_RIGHT), 0, (uchar)FL_NORMAL_LABEL, 0, 9, 0},
@@ -640,7 +655,7 @@ Fl_Menu_Item menu_1[] = {
{"bottom left", 0, 0, (void*)((fl_intptr_t)FL_ALIGN_BOTTOM_LEFT), 0, (uchar)FL_NORMAL_LABEL, 0, 9, 0},
{"bottom", 0, 0, (void*)((fl_intptr_t)FL_ALIGN_BOTTOM), 0, (uchar)FL_NORMAL_LABEL, 0, 9, 0},
{"bottom right", 0, 0, (void*)((fl_intptr_t)FL_ALIGN_BOTTOM_RIGHT), 0, (uchar)FL_NORMAL_LABEL, 0, 9, 0},
- {" Outside Alignment ", 0, 0, (void*)((fl_intptr_t)-1), 1024, (uchar)FL_NORMAL_LABEL, 1, 10, 0},
+ {" Outside Alignment ", 0, 0, (void*)((fl_intptr_t)-1), 0, (uchar)FL_NORMAL_LABEL, 1, 10, 0},
{"left top", 0, 0, (void*)((fl_intptr_t)FL_ALIGN_LEFT_TOP), 0, (uchar)FL_NORMAL_LABEL, 0, 9, 0},
{"right top", 0, 0, (void*)((fl_intptr_t)FL_ALIGN_RIGHT_TOP), 0, (uchar)FL_NORMAL_LABEL, 0, 9, 0},
{"left bottom", 0, 0, (void*)((fl_intptr_t)FL_ALIGN_LEFT_BOTTOM), 0, (uchar)FL_NORMAL_LABEL, 0, 9, 0},
@@ -1455,12 +1470,16 @@ static void cb_Active(Fl_Light_Button* o, void* v) {
static void cb_Resizable(Fl_Light_Button* o, void* v) {
if (v == LOAD) {
if (current_widget->is_a(Type::Menu_Item)) {
- o->hide();
+ o->hide();
return;
}
- if (numselected > 1) {o->deactivate(); return;}
o->show();
o->value(current_widget->resizable());
+ if (numselected > 1) {
+ o->deactivate();
+ return;
+ }
+ o->activate();
} else {
Fluid.proj.undo.checkpoint();
current_widget->resizable(o->value());
@@ -1471,7 +1490,7 @@ static void cb_Resizable(Fl_Light_Button* o, void* v) {
static void cb_Headline(Fl_Light_Button* o, void* v) {
if (v == LOAD) {
if (!current_widget->is_a(Type::Menu_Item)) {
- o->hide();
+ o->hide();
return;
}
o->show();
@@ -2247,6 +2266,952 @@ static void cb_widget_tab_grid_child(Grid_Child_Tab* o, void*) {
o->callback((Fl_Callback*)propagate_load);
}
+Fl_Tabs *data_tabs=(Fl_Tabs *)0;
+
+static void cb_data_tabs(Fl_Tabs* o, void* v) {
+ if (current_node && current_node->is_a(Type::Data))
+ propagate_load((Fl_Group *)o,v);
+}
+
+Fl_Group *data_tabs_data=(Fl_Group *)0;
+
+static void cb_15(Fl_Choice* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Data)) return;
+ Data_Node* nd = (Data_Node*)current_node;
+
+ if (v == LOAD) {
+ if (!nd->is_in_class()) {
+ o->value(nd->output_file());
+ o->show();
+ } else {
+ o->hide();
+ }
+ } else {
+ if (!nd->is_in_class()) {
+ if (nd->output_file() != o->value()) {
+ nd->output_file(o->value());
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+ }
+}
+
+Fl_Menu_Item menu_5[] = {
+ {"in source file only", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"in header file only", 0, 0, 0, 16, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"\"static\" in source file", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"in source and \"extern\" in header", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {0,0,0,0,0,0,0,0,0}
+};
+
+static void cb_16(Fl_Choice* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Data)) return;
+ Data_Node* nd = (Data_Node*)current_node;
+
+ if (v == LOAD) {
+ if (nd->is_in_class()) {
+ o->value(nd->visibility());
+ o->show();
+ } else {
+ o->hide();
+ }
+ } else {
+ if (nd->is_in_class()) {
+ if (nd->visibility() != o->value()) {
+ nd->visibility(o->value());
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+ }
+}
+
+Fl_Menu_Item menu_6[] = {
+ {"private", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"public", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"protected", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {0,0,0,0,0,0,0,0,0}
+};
+
+static void cb_17(Fl_Choice* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Data)) return;
+ Data_Node* nd = (Data_Node*)current_node;
+
+ if (v == LOAD) {
+ o->value(nd->output_format());
+ } else {
+ if (nd->output_format() != o->value()) {
+ nd->output_format( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+ }
+}
+
+Fl_Menu_Item menu_7[] = {
+ {"binary: unsigned char[]", 0, 0, (void*)(0), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"text: const char*", 0, 0, (void*)(1), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"compressed: unsigned char[]", 0, 0, (void*)(2), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"binary: std::vector<uint8_t>", 0, 0, (void*)(3), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"text: std::string", 0, 0, (void*)(4), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"compressed: std::vector<uint8_t>", 0, 0, (void*)(5), 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {0,0,0,0,0,0,0,0,0}
+};
+
+static void cb_Name(Fl_Input* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Data)) return;
+ Data_Node* nd = (Data_Node*)current_node;
+
+ if (v == LOAD) {
+ o->value( nd->name() );
+ the_panel->label("Inline Data Properties");
+ } else {
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->name( o->value() );
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+}
+
+Fl_Input *wp_data_filename=(Fl_Input *)0;
+
+static void cb_wp_data_filename(Fl_Input* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Data)) return;
+ Data_Node* nd = (Data_Node*)current_node;
+
+ if (v == LOAD) {
+ const char *fn = nd->filename();
+ o->value( fn ? fn : "" );
+ } else {
+ const char *c = o->value();
+ const char *fn = nd->filename();
+ if ( ( fn && (strcmp(fn, c) != 0))
+ || (!fn && (strcmp("", c) != 0)) )
+ {
+ nd->filename(c);
+ Fluid.proj.set_modflag(1);
+ }
+ }
+}
+
+static void cb_fileopen(Fl_Button*, void* v) {
+ if (v != LOAD) {
+ Fluid.proj.enter_project_dir();
+ const char *fn = fl_file_chooser("Load Inline Data",
+ nullptr, wp_data_filename->value(), 1);
+ Fluid.proj.leave_project_dir();
+ if (fn) {
+ if (strcmp(fn, wp_data_filename->value())) {
+ Fluid.proj.set_modflag(1);
+ wp_data_filename->value(fn);
+ wp_data_filename->do_callback();
+ }
+ }
+ }
+}
+
+static void cb_Comment(Fl_Text_Editor* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Data)) return;
+ Data_Node* nd = (Data_Node*)current_node;
+
+ if (v == LOAD) {
+ const char *cmttext = nd->comment();
+ o->buffer()->text( cmttext ? cmttext : "" );
+ } else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->comment();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->comment(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+ }
+}
+
+Fl_Tabs *comment_tabs=(Fl_Tabs *)0;
+
+static void cb_comment_tabs(Fl_Tabs* o, void* v) {
+ if (current_node && current_node->is_a(Type::Comment))
+ propagate_load((Fl_Group *)o,v);
+}
+
+Fl_Group *comment_tabs_comment=(Fl_Group *)0;
+
+Fl_Text_Editor *comment_tabs_name=(Fl_Text_Editor *)0;
+
+static void cb_comment_tabs_name(Fl_Text_Editor* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Comment)) return;
+ Comment_Node* nd = (Comment_Node*)current_node;
+
+ if (v == LOAD) {
+ the_panel->label("Comment Properties");
+ const char *cmttext = nd->name();
+ o->buffer()->text( cmttext ? cmttext : "" );
+ } else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->name(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+ }
+}
+
+Fl_Menu_Button *comment_predefined_2=(Fl_Menu_Button *)0;
+
+static void cb_comment_predefined_2(Fl_Menu_Button* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Comment)) return;
+
+ static char itempath[256];
+ static int last_selected_item { 0 };
+
+ if (v == LOAD) {
+ int i=0, n=0, version = 0;
+ Fl_Preferences menu(Fl_Preferences::USER_L, "fltk.org", "fluid_comments_menu");
+ o->clear();
+ o->add("_Edit/Add current comment...");
+ o->add("_Edit/Remove last selection...");
+ menu.get("version", version, -1);
+ if (version < 10400) load_comments_preset(menu);
+ menu.get("n", n, 0);
+ for (i=0;i<n;i++) {
+ char *text;
+ menu.get(Fl_Preferences::Name(i), text, "");
+ o->add(text);
+ free(text);
+ }
+ } else {
+ if (o->value()==1) {
+ // add the current comment to the database
+ const char *xname = fl_input(
+ "Please enter a name to reference the current\ncomment in your database.\n\n"
+ "Use forward slashes '/' to create submenus.",
+ "My Comment");
+ if (xname) {
+ char *name = fl_strdup(xname);
+ for (char*s=name;*s;s++) if (*s==':') *s = ';';
+ int n;
+ Fl_Preferences db(Fl_Preferences::USER_L, "fltk.org", "fluid_comments");
+ db.set(name, comment_tabs_name->buffer()->text());
+ Fl_Preferences menu(Fl_Preferences::USER_L, "fltk.org", "fluid_comments_menu");
+ menu.get("n", n, 0);
+ menu.set(Fl_Preferences::Name(n), name);
+ menu.set("n", ++n);
+ o->add(name);
+ free(name);
+ }
+ } else if (o->value()==2) {
+ // remove the last selected comment from the database
+ if (itempath[0]==0 || last_selected_item==0) {
+ fl_message("Please select an entry from this menu first.");
+ } else if (fl_choice("Are you sure that you want to delete the entry\n"
+ "\"%s\"\nfrom the database?", "Cancel", "Delete",
+ nullptr, itempath)) {
+ Fl_Preferences db(Fl_Preferences::USER_L, "fltk.org", "fluid_comments");
+ db.deleteEntry(itempath);
+ o->remove(last_selected_item);
+ Fl_Preferences menu(Fl_Preferences::USER_L, "fltk.org", "fluid_comments_menu");
+ int i, n;
+ for (i=4, n=0; i<o->size(); i++) {
+ const Fl_Menu_Item *mi = o->menu()+i;
+ if (o->item_pathname(itempath, 255, mi)==0) {
+ if (itempath[0]=='/') memmove(itempath, itempath+1, 255);
+ if (itempath[0]) menu.set(Fl_Preferences::Name(n++), itempath);
+ }
+ }
+ menu.set("n", n);
+ }
+ } else {
+ // load the selected comment from the database
+ if (o->item_pathname(itempath, 255)==0) {
+ if (itempath[0]=='/') memmove(itempath, itempath+1, 255);
+ Fl_Preferences db(Fl_Preferences::USER_L, "fltk.org", "fluid_comments");
+ char *text;
+ db.get(itempath, text, "(no text found in data base)");
+ comment_tabs_name->buffer()->text(text);
+ comment_tabs_name->do_callback();
+ free(text);
+ last_selected_item = o->value();
+ }
+ }
+ }
+}
+
+Fl_Button *comment_load_2=(Fl_Button *)0;
+
+static void cb_comment_load_2(Fl_Button*, void* v) {
+ // load a comment from disk
+ if (v != LOAD) {
+ fl_file_chooser_ok_label("Load");
+ const char *fname = fl_file_chooser("Pick a comment", nullptr, nullptr);
+ fl_file_chooser_ok_label(nullptr);
+ if (fname) {
+ if (comment_tabs_name->buffer()->loadfile(fname)) {
+ fl_alert("Error loading file\n%s", fname);
+ }
+ comment_tabs_name->do_callback();
+ }
+ }
+}
+
+static void cb_output(Fl_Check_Button* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Comment)) return;
+ Comment_Node* nd = (Comment_Node*)current_node;
+
+ if (v == LOAD) {
+ o->value(nd->in_h());
+ } else {
+ if (((int)nd->in_h()) != o->value()) {
+ nd->in_h( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+ }
+}
+
+static void cb_output1(Fl_Check_Button* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Comment)) return;
+ Comment_Node* nd = (Comment_Node*)current_node;
+
+ if (v == LOAD) {
+ o->value(nd->in_c());
+ } else {
+ if (((int)nd->in_c()) != o->value()) {
+ nd->in_c( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+ }
+}
+
+Fl_Tabs *class_tabs=(Fl_Tabs *)0;
+
+static void cb_class_tabs(Fl_Tabs* o, void* v) {
+ if (current_node && current_node->is_a(Type::Class))
+ propagate_load((Fl_Group *)o,v);
+}
+
+Fl_Group *class_tabs_main=(Fl_Group *)0;
+
+static void cb_18(Fl_Choice* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Class)) return;
+ Class_Node* nd = (Class_Node*)current_node;
+
+ if (v == LOAD) {
+ if (nd->is_in_class()) {
+ o->value(nd->visibility());
+ o->activate();
+ } else {
+ o->deactivate();
+ }
+ } else {
+ if (nd->is_in_class()) {
+ if (nd->visibility() != o->value()) {
+ nd->visibility(o->value());
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+ }
+}
+
+Fl_Menu_Item menu_8[] = {
+ {"private", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"public", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"protected", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {0,0,0,0,0,0,0,0,0}
+};
+
+static void cb_Attribute(Fl_Input* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Class)) return;
+ Class_Node* nd = (Class_Node*)current_node;
+
+ if (v == LOAD) {
+ o->value( nd->prefix() );
+ } else {
+ const char *nn = nd->prefix();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->prefix( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+ }
+}
+
+static void cb_Class(Fl_Input* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Class)) return;
+ Class_Node* nd = (Class_Node*)current_node;
+
+ if (v == LOAD) {
+ the_panel->label("Class Properties");
+ o->value( nd->name() );
+ } else {
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->name( o->value() );
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+}
+
+static void cb_Base(Fl_Input* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Class)) return;
+ Class_Node* nd = (Class_Node*)current_node;
+
+ if (v == LOAD) {
+ o->value( nd->base_class_name() );
+ } else {
+ const char *nn = nd->base_class_name();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->base_class_name( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+ }
+}
+
+static void cb_Comment1(Fl_Text_Editor* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Class)) return;
+ Class_Node* nd = (Class_Node*)current_node;
+
+ if (v == LOAD) {
+ const char *cmttext = nd->comment();
+ o->buffer()->text( cmttext ? cmttext : "" );
+ } else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->comment();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->comment(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+ }
+}
+
+Fl_Tabs *declblock_tabs=(Fl_Tabs *)0;
+
+static void cb_declblock_tabs(Fl_Tabs* o, void* v) {
+ if (current_node && current_node->is_a(Type::DeclBlock))
+ propagate_load((Fl_Group *)o,v);
+}
+
+Fl_Group *declblock_tabs_main=(Fl_Group *)0;
+
+static void cb_Start(Fl_Input* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
+ DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
+
+ if (v == LOAD) {
+ the_panel->label("Declaration Block Properties");
+ o->value( nd->name() );
+ } else {
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->name( o->value() );
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+}
+
+static void cb_End(Fl_Input* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
+ DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
+
+ if (v == LOAD) {
+ o->value( nd->end_code() );
+ } else {
+ const char *nn = nd->end_code();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->end_code( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+ }
+}
+
+static void cb_implementations(Fl_Check_Button* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
+ DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
+
+ if (v == LOAD) {
+ int f = ((nd->write_map() & DeclBlock_Node::CODE_IN_SOURCE) != 0);
+ o->value(f);
+ } else {
+ int f = ((nd->write_map() & DeclBlock_Node::CODE_IN_SOURCE) != 0);
+ if (f != o->value()) {
+ if (o->value())
+ nd->write_map( nd->write_map() | DeclBlock_Node::CODE_IN_SOURCE );
+ else
+ nd->write_map( nd->write_map() & ~DeclBlock_Node::CODE_IN_SOURCE );
+ Fluid.proj.set_modflag(1);
+ }
+ }
+}
+
+static void cb_static(Fl_Check_Button* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
+ DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
+
+ if (v == LOAD) {
+ int f = ((nd->write_map() & DeclBlock_Node::STATIC_IN_SOURCE) != 0);
+ o->value(f);
+ } else {
+ int f = ((nd->write_map() & DeclBlock_Node::STATIC_IN_SOURCE) != 0);
+ if (f != o->value()) {
+ if (o->value())
+ nd->write_map( nd->write_map() | DeclBlock_Node::STATIC_IN_SOURCE );
+ else
+ nd->write_map( nd->write_map() & ~DeclBlock_Node::STATIC_IN_SOURCE );
+ Fluid.proj.set_modflag(1);
+ }
+ }
+}
+
+static void cb_forward(Fl_Check_Button* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
+ DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
+
+ if (v == LOAD) {
+ int f = ((nd->write_map() & DeclBlock_Node::CODE_IN_HEADER) != 0);
+ o->value(f);
+ } else {
+ int f = ((nd->write_map() & DeclBlock_Node::CODE_IN_HEADER) != 0);
+ if (f != o->value()) {
+ if (o->value())
+ nd->write_map( nd->write_map() | DeclBlock_Node::CODE_IN_HEADER );
+ else
+ nd->write_map( nd->write_map() & ~DeclBlock_Node::CODE_IN_HEADER );
+ Fluid.proj.set_modflag(1);
+ }
+ }
+}
+
+static void cb_preprecessor(Fl_Check_Button* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
+ DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
+
+ if (v == LOAD) {
+ int f = ((nd->write_map() & DeclBlock_Node::STATIC_IN_HEADER) != 0);
+ o->value(f);
+ } else {
+ int f = ((nd->write_map() & DeclBlock_Node::STATIC_IN_HEADER) != 0);
+ if (f != o->value()) {
+ if (o->value())
+ nd->write_map( nd->write_map() | DeclBlock_Node::STATIC_IN_HEADER );
+ else
+ nd->write_map( nd->write_map() & ~DeclBlock_Node::STATIC_IN_HEADER );
+ Fluid.proj.set_modflag(1);
+ }
+ }
+}
+
+static void cb_Comment2(Fl_Text_Editor* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
+ DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
+
+ if (v == LOAD) {
+ const char *cmttext = nd->comment();
+ o->buffer()->text( cmttext ? cmttext : "" );
+ } else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->comment();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->comment(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+ }
+}
+
+Fl_Tabs *decl_tabs=(Fl_Tabs *)0;
+
+static void cb_decl_tabs(Fl_Tabs* o, void* v) {
+ if (current_node && current_node->is_a(Type::Decl))
+ propagate_load((Fl_Group *)o,v);
+}
+
+Fl_Group *decl_tabs_main=(Fl_Group *)0;
+
+static void cb_19(Fl_Choice* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Decl)) return;
+ Decl_Node* nd = (Decl_Node*)current_node;
+
+ if (v == LOAD) {
+ if (!nd->is_in_class()) {
+ o->value(nd->output_file());
+ o->show();
+ } else {
+ o->hide();
+ }
+ } else {
+ if (!nd->is_in_class()) {
+ if (nd->output_file() != o->value()) {
+ nd->output_file(o->value());
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+ }
+}
+
+Fl_Menu_Item menu_9[] = {
+ {"in source file only", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"in header file only", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"\"static\" in source file", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"in source and \"extern\" in header", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {0,0,0,0,0,0,0,0,0}
+};
+
+static void cb_1a(Fl_Choice* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Decl)) return;
+ Decl_Node* nd = (Decl_Node*)current_node;
+
+ if (v == LOAD) {
+ if (nd->is_in_class()) {
+ o->value(nd->visibility());
+ o->show();
+ } else {
+ o->hide();
+ }
+ } else {
+ if (nd->is_in_class()) {
+ if (nd->visibility() != o->value()) {
+ nd->visibility(o->value());
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+ }
+}
+
+Fl_Menu_Item menu_a[] = {
+ {"private", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"public", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"protected", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {0,0,0,0,0,0,0,0,0}
+};
+
+static void cb_1b(Fl_Tile* o, void* v) {
+ propagate_load(o, v);
+}
+
+static void cb_Declaration(fld::widget::Code_Editor* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Decl)) return;
+ Decl_Node* nd = (Decl_Node*)current_node;
+
+ if (v == LOAD) {
+ the_panel->label("Declaration Properties");
+ const char *cmttext = nd->name();
+ o->buffer()->text( cmttext ? cmttext : "" );
+ } else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->name(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+ }
+}
+
+static void cb_Comment3(Fl_Text_Editor* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Decl)) return;
+ Decl_Node* nd = (Decl_Node*)current_node;
+
+ if (v == LOAD) {
+ const char *cmttext = nd->comment();
+ o->buffer()->text( cmttext ? cmttext : "" );
+ } else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->comment();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->comment(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+ }
+}
+
+Fl_Tabs *codeblock_tabs=(Fl_Tabs *)0;
+
+static void cb_codeblock_tabs(Fl_Tabs* o, void* v) {
+ if (current_node && current_node->is_a(Type::CodeBlock))
+ propagate_load((Fl_Group *)o,v);
+}
+
+Fl_Group *codeblock_tabs_main=(Fl_Group *)0;
+
+static void cb_Start1(Fl_Input* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::CodeBlock)) return;
+ CodeBlock_Node* nd = (CodeBlock_Node*)current_node;
+
+ if (v == LOAD) {
+ o->value( nd->name() );
+ the_panel->label("Code Block Properties");
+ } else {
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->name( o->value() );
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+}
+
+static void cb_End1(Fl_Input* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::CodeBlock)) return;
+ CodeBlock_Node* nd = (CodeBlock_Node*)current_node;
+
+ if (v == LOAD) {
+ o->value( nd->end_code() );
+ } else {
+ const char *nn = nd->end_code();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->end_code( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+ }
+}
+
+static void cb_Comment4(Fl_Text_Editor* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::CodeBlock)) return;
+ CodeBlock_Node* nd = (CodeBlock_Node*)current_node;
+
+ if (v == LOAD) {
+ const char *cmttext = nd->comment();
+ o->buffer()->text( cmttext ? cmttext : "" );
+ } else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->comment();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->comment(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+ }
+}
+
+Fl_Tabs *code_tabs=(Fl_Tabs *)0;
+
+static void cb_code_tabs(Fl_Tabs* o, void* v) {
+ if (current_node && current_node->is_a(Type::Code))
+ propagate_load((Fl_Group *)o,v);
+}
+
+Fl_Group *code_tabs_main=(Fl_Group *)0;
+
+static void cb_1c(fld::widget::Code_Editor* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Code)) return;
+ Code_Node* nd = (Code_Node*)current_node;
+
+ if (v == LOAD) {
+ the_panel->label("Code Editor");
+ const char *cmttext = nd->name();
+ o->buffer()->text( cmttext ? cmttext : "" );
+ o->insert_position(nd->cursor_position_);
+ o->scroll(nd->code_input_scroll_row, nd->code_input_scroll_col);
+ } else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->name(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ nd->cursor_position_ = o->insert_position();
+ nd->code_input_scroll_row = o->scroll_row();
+ nd->code_input_scroll_col = o->scroll_col();
+ free(c);
+ }
+}
+
+Fl_Tabs *func_tabs=(Fl_Tabs *)0;
+
+static void cb_func_tabs(Fl_Tabs* o, void* v) {
+ if (current_node && current_node->is_a(Type::Function))
+ propagate_load((Fl_Group *)o,v);
+}
+
+Fl_Group *func_tabs_main=(Fl_Group *)0;
+
+static void cb_1d(Fl_Choice* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Function)) return;
+ Function_Node* nd = (Function_Node*)current_node;
+
+ if (v == LOAD) {
+ if (!nd->is_in_class()) {
+ o->value(nd->visibility());
+ o->show();
+ } else {
+ o->hide();
+ }
+ } else {
+ if (!nd->is_in_class()) {
+ if (nd->visibility() != o->value()) {
+ nd->visibility(o->value());
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+ }
+}
+
+Fl_Menu_Item menu_b[] = {
+ {"static", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"global", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"local", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {0,0,0,0,0,0,0,0,0}
+};
+
+static void cb_1e(Fl_Choice* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Function)) return;
+ Function_Node* nd = (Function_Node*)current_node;
+
+ if (v == LOAD) {
+ if (nd->is_in_class()) {
+ o->value(nd->visibility());
+ o->show();
+ } else {
+ o->hide();
+ }
+ } else {
+ if (nd->is_in_class()) {
+ if (nd->visibility() != o->value()) {
+ nd->visibility(o->value());
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+ }
+}
+
+Fl_Menu_Item menu_c[] = {
+ {"private", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"public", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {"protected", 0, 0, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 11, 0},
+ {0,0,0,0,0,0,0,0,0}
+};
+
+static void cb_declare(Fl_Check_Button* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Function)) return;
+ Function_Node* nd = (Function_Node*)current_node;
+
+ if (v == LOAD) {
+ o->value(nd->declare_c());
+ } else {
+ if (nd->declare_c() != o->value()) {
+ nd->declare_c( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+ }
+}
+
+static void cb_1f(Fl_Tile* o, void* v) {
+ propagate_load(o, v);
+}
+
+static void cb_Function(fld::widget::Code_Editor* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Function)) return;
+ Function_Node* nd = (Function_Node*)current_node;
+
+ if (v == LOAD) {
+ the_panel->label("Function Properties");
+ const char *cmttext = nd->name();
+ o->buffer()->text( cmttext ? cmttext : "" );
+ } else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->name(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+ }
+}
+
+static void cb_Return(fld::widget::Code_Editor* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Function)) return;
+ Function_Node* nd = (Function_Node*)current_node;
+
+ if (v == LOAD) {
+ const char *cmttext = nd->return_type();
+ o->buffer()->text( cmttext ? cmttext : "" );
+ } else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->return_type();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->return_type(c);
+ Fluid.proj.set_modflag(1);
+ }
+ free(c);
+ }
+}
+
+static void cb_Comment5(Fl_Text_Editor* o, void* v) {
+ if (!current_node || !current_node->is_a(Type::Function)) return;
+ Function_Node* nd = (Function_Node*)current_node;
+
+ if (v == LOAD) {
+ const char *cmttext = nd->comment();
+ o->buffer()->text( cmttext ? cmttext : "" );
+ } else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->comment();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->comment(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+ }
+}
+
Fl_Tabs *widget_tabs_repo=(Fl_Tabs *)0;
Fl_Button *wLiveMode=(Fl_Button *)0;
@@ -2264,944 +3229,1544 @@ Fl_Double_Window* make_widget_panel() {
o->labelsize(11);
o->align(Fl_Align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE));
o->hotspot(o);
- { Fl_Tabs* o = widget_tabs = new Fl_Tabs(10, 10, 400, 350);
- widget_tabs->selection_color((Fl_Color)12);
- widget_tabs->labelsize(11);
- widget_tabs->labelcolor(FL_BACKGROUND2_COLOR);
- widget_tabs->callback((Fl_Callback*)cb_widget_tabs);
- widget_tabs->when(FL_WHEN_NEVER);
- { wp_gui_tab = new Fl_Group(10, 30, 400, 330, "GUI");
- wp_gui_tab->labelsize(11);
- wp_gui_tab->callback((Fl_Callback*)propagate_load);
- wp_gui_tab->when(FL_WHEN_NEVER);
- { Fl_Group* o = new Fl_Group(95, 40, 309, 20, "Label:");
- o->labelfont(1);
- o->labelsize(11);
- o->callback((Fl_Callback*)propagate_load);
- o->align(Fl_Align(FL_ALIGN_LEFT));
- { wp_gui_label = new Fl_Input(95, 40, 190, 20);
- wp_gui_label->tooltip("The label text for the widget.\nUse Ctrl-J for newlines.");
- wp_gui_label->labelfont(1);
- wp_gui_label->labelsize(11);
- wp_gui_label->textsize(11);
- wp_gui_label->callback((Fl_Callback*)label_cb);
- wp_gui_label->when(FL_WHEN_RELEASE | FL_WHEN_ENTER_KEY_CHANGED);
- Fl_Group::current()->resizable(wp_gui_label);
- } // Fl_Input* wp_gui_label
- { Fl_Choice* o = new Fl_Choice(285, 40, 119, 20);
- o->tooltip("The label style for the widget.");
- o->box(FL_THIN_UP_BOX);
- o->down_box(FL_BORDER_BOX);
+ { tabs_wizard = new Fl_Wizard(10, 10, 400, 350);
+ tabs_wizard->box(FL_NO_BOX);
+ tabs_wizard->labelsize(11);
+ tabs_wizard->callback((Fl_Callback*)cb_tabs_wizard);
+ { Fl_Tabs* o = widget_tabs = new Fl_Tabs(10, 10, 400, 350);
+ widget_tabs->selection_color((Fl_Color)12);
+ widget_tabs->labelsize(11);
+ widget_tabs->labelcolor(FL_BACKGROUND2_COLOR);
+ widget_tabs->callback((Fl_Callback*)cb_widget_tabs);
+ widget_tabs->when(FL_WHEN_NEVER);
+ { wp_gui_tab = new Fl_Group(10, 30, 400, 330, "GUI");
+ wp_gui_tab->labelsize(11);
+ wp_gui_tab->callback((Fl_Callback*)propagate_load);
+ wp_gui_tab->when(FL_WHEN_NEVER);
+ { Fl_Group* o = new Fl_Group(95, 40, 309, 20, "Label:");
o->labelfont(1);
o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)labeltype_cb);
- o->menu(labeltypemenu);
- } // Fl_Choice* o
- o->end();
- } // Fl_Group* o
- { Fl_Group* o = new Fl_Group(95, 65, 309, 20, "Image:");
- o->labelfont(1);
- o->labelsize(11);
- o->callback((Fl_Callback*)propagate_load);
- o->align(Fl_Align(FL_ALIGN_LEFT));
- { widget_image_input = new Fl_Input(95, 65, 200, 20);
- widget_image_input->tooltip("The active image for the widget.");
- widget_image_input->labelfont(1);
- widget_image_input->labelsize(11);
- widget_image_input->textsize(11);
- widget_image_input->callback((Fl_Callback*)cb_widget_image_input);
- Fl_Group::current()->resizable(widget_image_input);
- } // Fl_Input* widget_image_input
- { Fl_Button* o = new Fl_Button(295, 65, 89, 20, "Browse...");
- o->tooltip("Click to choose the active image.");
- o->labelsize(11);
- o->callback((Fl_Callback*)cb_Browse);
- o->align(Fl_Align(256));
- } // Fl_Button* o
- { Fl_Button* o = new Fl_Button(384, 65, 20, 20, "...");
- o->tooltip("more image options");
- o->callback((Fl_Callback*)cb_);
- } // Fl_Button* o
- o->end();
- } // Fl_Group* o
- { Fl_Group* o = new Fl_Group(95, 90, 309, 20, "Inactive:");
- o->labelfont(1);
- o->labelsize(11);
- o->callback((Fl_Callback*)propagate_load);
- o->align(Fl_Align(FL_ALIGN_LEFT));
- { widget_deimage_input = new Fl_Input(95, 90, 200, 20);
- widget_deimage_input->tooltip("The inactive image for the widget.");
- widget_deimage_input->labelfont(1);
- widget_deimage_input->labelsize(11);
- widget_deimage_input->textsize(11);
- widget_deimage_input->callback((Fl_Callback*)cb_widget_deimage_input);
- Fl_Group::current()->resizable(widget_deimage_input);
- } // Fl_Input* widget_deimage_input
- { Fl_Button* o = new Fl_Button(295, 90, 89, 20, "Browse...");
- o->tooltip("Click to choose the inactive image.");
- o->labelsize(11);
- o->callback((Fl_Callback*)cb_Browse1);
- } // Fl_Button* o
- o->end();
- } // Fl_Group* o
- { wp_gui_alignment = new Fl_Group(95, 115, 312, 20, "Alignment:");
- wp_gui_alignment->labelfont(1);
- wp_gui_alignment->labelsize(11);
- wp_gui_alignment->callback((Fl_Callback*)propagate_load);
- wp_gui_alignment->align(Fl_Align(FL_ALIGN_LEFT));
- { Fl_Button* o = new Fl_Button(95, 115, 30, 20, "Clip");
- o->tooltip("Clip the label to the inside of the widget.");
- o->type(1);
- o->selection_color(FL_INACTIVE_COLOR);
- o->labelsize(11);
- o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_CLIP));
- o->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
- } // Fl_Button* o
- { Fl_Button* o = new Fl_Button(130, 115, 38, 20, "Wrap");
- o->tooltip("Wrap the label text.");
- o->type(1);
- o->selection_color(FL_INACTIVE_COLOR);
- o->labelsize(11);
- o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_WRAP));
- } // Fl_Button* o
- { Fl_Button* o = new Fl_Button(278, 115, 20, 20, "@-1<-");
- o->tooltip("Left-align the label.");
- o->type(1);
- o->selection_color(FL_INACTIVE_COLOR);
- o->labelsize(11);
- o->labelcolor(FL_INACTIVE_COLOR);
- o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_LEFT));
- o->hide();
- } // Fl_Button* o
- { Fl_Button* o = new Fl_Button(303, 115, 20, 20, "@-1->");
- o->tooltip("Right-align the label.");
- o->type(1);
- o->selection_color(FL_INACTIVE_COLOR);
- o->labelsize(11);
- o->labelcolor(FL_INACTIVE_COLOR);
- o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_RIGHT));
- o->hide();
- } // Fl_Button* o
- { Fl_Button* o = new Fl_Button(328, 115, 20, 20, "@-18");
- o->tooltip("Top-align the label.");
- o->type(1);
- o->selection_color(FL_INACTIVE_COLOR);
- o->labelsize(11);
- o->labelcolor(FL_INACTIVE_COLOR);
- o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_TOP));
- o->hide();
- } // Fl_Button* o
- { Fl_Button* o = new Fl_Button(353, 115, 20, 20, "@-12");
- o->tooltip("Bottom-align the label.");
- o->type(1);
- o->selection_color(FL_INACTIVE_COLOR);
- o->labelsize(11);
- o->labelcolor(FL_INACTIVE_COLOR);
- o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_BOTTOM));
- o->hide();
- } // Fl_Button* o
- { Fl_Choice* o = new Fl_Choice(172, 115, 116, 20);
- o->down_box(FL_BORDER_BOX);
- o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)align_text_image_cb);
- o->menu(menu_);
- } // Fl_Choice* o
- { Fl_Choice* o = new Fl_Choice(293, 115, 86, 20);
- o->down_box(FL_BORDER_BOX);
+ o->callback((Fl_Callback*)propagate_load);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ { wp_gui_label = new Fl_Input(95, 40, 190, 20);
+ wp_gui_label->tooltip("The label text for the widget.\nUse Ctrl-J for newlines.");
+ wp_gui_label->labelfont(1);
+ wp_gui_label->labelsize(11);
+ wp_gui_label->textsize(11);
+ wp_gui_label->callback((Fl_Callback*)label_cb);
+ wp_gui_label->when(FL_WHEN_RELEASE | FL_WHEN_ENTER_KEY_CHANGED);
+ Fl_Group::current()->resizable(wp_gui_label);
+ } // Fl_Input* wp_gui_label
+ { Fl_Choice* o = new Fl_Choice(285, 40, 119, 20);
+ o->tooltip("The label style for the widget.");
+ o->box(FL_THIN_UP_BOX);
+ o->down_box(FL_BORDER_BOX);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)labeltype_cb);
+ o->menu(labeltypemenu);
+ } // Fl_Choice* o
+ o->end();
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 65, 309, 20, "Image:");
+ o->labelfont(1);
o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)align_position_cb);
- o->menu(menu_1);
- } // Fl_Choice* o
- { Fl_Button* o = new Fl_Button(384, 115, 20, 20, "@-3square");
- o->tooltip("Show the label inside the widget.");
- o->type(1);
- o->selection_color(FL_INACTIVE_COLOR);
+ o->callback((Fl_Callback*)propagate_load);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ { widget_image_input = new Fl_Input(95, 65, 200, 20);
+ widget_image_input->tooltip("The active image for the widget.");
+ widget_image_input->labelfont(1);
+ widget_image_input->labelsize(11);
+ widget_image_input->textsize(11);
+ widget_image_input->callback((Fl_Callback*)cb_widget_image_input);
+ Fl_Group::current()->resizable(widget_image_input);
+ } // Fl_Input* widget_image_input
+ { Fl_Button* o = new Fl_Button(295, 65, 89, 20, "Browse...");
+ o->tooltip("Click to choose the active image.");
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_Browse);
+ o->align(Fl_Align(256));
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(384, 65, 20, 20, "...");
+ o->tooltip("more image options");
+ o->callback((Fl_Callback*)cb_);
+ } // Fl_Button* o
+ o->end();
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 90, 309, 20, "Inactive:");
+ o->labelfont(1);
o->labelsize(11);
- o->labelcolor(FL_INACTIVE_COLOR);
- o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_INSIDE));
- } // Fl_Button* o
- { Fl_Box* o = new Fl_Box(406, 115, 1, 20);
+ o->callback((Fl_Callback*)propagate_load);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ { widget_deimage_input = new Fl_Input(95, 90, 200, 20);
+ widget_deimage_input->tooltip("The inactive image for the widget.");
+ widget_deimage_input->labelfont(1);
+ widget_deimage_input->labelsize(11);
+ widget_deimage_input->textsize(11);
+ widget_deimage_input->callback((Fl_Callback*)cb_widget_deimage_input);
+ Fl_Group::current()->resizable(widget_deimage_input);
+ } // Fl_Input* widget_deimage_input
+ { Fl_Button* o = new Fl_Button(295, 90, 89, 20, "Browse...");
+ o->tooltip("Click to choose the inactive image.");
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_Browse1);
+ } // Fl_Button* o
+ o->end();
+ } // Fl_Group* o
+ { wp_gui_alignment = new Fl_Group(95, 115, 312, 20, "Alignment:");
+ wp_gui_alignment->labelfont(1);
+ wp_gui_alignment->labelsize(11);
+ wp_gui_alignment->callback((Fl_Callback*)propagate_load);
+ wp_gui_alignment->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Button* o = new Fl_Button(95, 115, 30, 20, "Clip");
+ o->tooltip("Clip the label to the inside of the widget.");
+ o->type(1);
+ o->selection_color(FL_INACTIVE_COLOR);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_CLIP));
+ o->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(130, 115, 38, 20, "Wrap");
+ o->tooltip("Wrap the label text.");
+ o->type(1);
+ o->selection_color(FL_INACTIVE_COLOR);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_WRAP));
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(278, 115, 20, 20, "@-1<-");
+ o->tooltip("Left-align the label.");
+ o->type(1);
+ o->selection_color(FL_INACTIVE_COLOR);
+ o->labelsize(11);
+ o->labelcolor(FL_INACTIVE_COLOR);
+ o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_LEFT));
+ o->hide();
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(303, 115, 20, 20, "@-1->");
+ o->tooltip("Right-align the label.");
+ o->type(1);
+ o->selection_color(FL_INACTIVE_COLOR);
+ o->labelsize(11);
+ o->labelcolor(FL_INACTIVE_COLOR);
+ o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_RIGHT));
+ o->hide();
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(328, 115, 20, 20, "@-18");
+ o->tooltip("Top-align the label.");
+ o->type(1);
+ o->selection_color(FL_INACTIVE_COLOR);
+ o->labelsize(11);
+ o->labelcolor(FL_INACTIVE_COLOR);
+ o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_TOP));
+ o->hide();
+ } // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(353, 115, 20, 20, "@-12");
+ o->tooltip("Bottom-align the label.");
+ o->type(1);
+ o->selection_color(FL_INACTIVE_COLOR);
+ o->labelsize(11);
+ o->labelcolor(FL_INACTIVE_COLOR);
+ o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_BOTTOM));
+ o->hide();
+ } // Fl_Button* o
+ { Fl_Choice* o = new Fl_Choice(172, 115, 116, 20);
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)align_text_image_cb);
+ o->menu(menu_);
+ } // Fl_Choice* o
+ { Fl_Choice* o = new Fl_Choice(293, 115, 86, 20);
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)align_position_cb);
+ o->menu(menu_1);
+ } // Fl_Choice* o
+ { Fl_Button* o = new Fl_Button(384, 115, 20, 20, "@-3square");
+ o->tooltip("Show the label inside the widget.");
+ o->type(1);
+ o->selection_color(FL_INACTIVE_COLOR);
+ o->labelsize(11);
+ o->labelcolor(FL_INACTIVE_COLOR);
+ o->callback((Fl_Callback*)align_cb, (void*)((fl_intptr_t)FL_ALIGN_INSIDE));
+ } // Fl_Button* o
+ { Fl_Box* o = new Fl_Box(406, 115, 1, 20);
+ o->labelsize(11);
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ wp_gui_alignment->end();
+ } // Fl_Group* wp_gui_alignment
+ { Fl_Group* o = new Fl_Group(95, 150, 314, 20, "Position:");
+ o->labelfont(1);
o->labelsize(11);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- wp_gui_alignment->end();
- } // Fl_Group* wp_gui_alignment
- { Fl_Group* o = new Fl_Group(95, 150, 314, 20, "Position:");
- o->labelfont(1);
- o->labelsize(11);
- o->callback((Fl_Callback*)position_group_cb);
- o->align(Fl_Align(FL_ALIGN_LEFT));
- { widget_x_input = new fld::widget::Formula_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 "
+ o->callback((Fl_Callback*)position_group_cb);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ { widget_x_input = new fld::widget::Formula_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->box(FL_DOWN_BOX);
- widget_x_input->color(FL_BACKGROUND2_COLOR);
- widget_x_input->selection_color(FL_SELECTION_COLOR);
- widget_x_input->labeltype(FL_NORMAL_LABEL);
- widget_x_input->labelfont(0);
- widget_x_input->labelsize(11);
- widget_x_input->labelcolor(FL_FOREGROUND_COLOR);
- widget_x_input->textsize(11);
- widget_x_input->callback((Fl_Callback*)cb_widget_x_input);
- widget_x_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- widget_x_input->when(FL_WHEN_RELEASE);
- } // fld::widget::Formula_Input* widget_x_input
- { widget_y_input = new fld::widget::Formula_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 "
+ widget_x_input->box(FL_DOWN_BOX);
+ widget_x_input->color(FL_BACKGROUND2_COLOR);
+ widget_x_input->selection_color(FL_SELECTION_COLOR);
+ widget_x_input->labeltype(FL_NORMAL_LABEL);
+ widget_x_input->labelfont(0);
+ widget_x_input->labelsize(11);
+ widget_x_input->labelcolor(FL_FOREGROUND_COLOR);
+ widget_x_input->textsize(11);
+ widget_x_input->callback((Fl_Callback*)cb_widget_x_input);
+ widget_x_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ widget_x_input->when(FL_WHEN_RELEASE);
+ } // fld::widget::Formula_Input* widget_x_input
+ { widget_y_input = new fld::widget::Formula_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->box(FL_DOWN_BOX);
- widget_y_input->color(FL_BACKGROUND2_COLOR);
- widget_y_input->selection_color(FL_SELECTION_COLOR);
- widget_y_input->labeltype(FL_NORMAL_LABEL);
- widget_y_input->labelfont(0);
- widget_y_input->labelsize(11);
- widget_y_input->labelcolor(FL_FOREGROUND_COLOR);
- widget_y_input->textsize(11);
- widget_y_input->callback((Fl_Callback*)cb_widget_y_input);
- widget_y_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- widget_y_input->when(FL_WHEN_RELEASE);
- } // fld::widget::Formula_Input* widget_y_input
- { widget_w_input = new fld::widget::Formula_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,"
+ widget_y_input->box(FL_DOWN_BOX);
+ widget_y_input->color(FL_BACKGROUND2_COLOR);
+ widget_y_input->selection_color(FL_SELECTION_COLOR);
+ widget_y_input->labeltype(FL_NORMAL_LABEL);
+ widget_y_input->labelfont(0);
+ widget_y_input->labelsize(11);
+ widget_y_input->labelcolor(FL_FOREGROUND_COLOR);
+ widget_y_input->textsize(11);
+ widget_y_input->callback((Fl_Callback*)cb_widget_y_input);
+ widget_y_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ widget_y_input->when(FL_WHEN_RELEASE);
+ } // fld::widget::Formula_Input* widget_y_input
+ { widget_w_input = new fld::widget::Formula_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->box(FL_DOWN_BOX);
- widget_w_input->color(FL_BACKGROUND2_COLOR);
- widget_w_input->selection_color(FL_SELECTION_COLOR);
- widget_w_input->labeltype(FL_NORMAL_LABEL);
- widget_w_input->labelfont(0);
- widget_w_input->labelsize(11);
- widget_w_input->labelcolor(FL_FOREGROUND_COLOR);
- widget_w_input->textsize(11);
- widget_w_input->callback((Fl_Callback*)cb_widget_w_input);
- widget_w_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- widget_w_input->when(FL_WHEN_RELEASE);
- } // fld::widget::Formula_Input* widget_w_input
- { widget_h_input = new fld::widget::Formula_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"
+ widget_w_input->box(FL_DOWN_BOX);
+ widget_w_input->color(FL_BACKGROUND2_COLOR);
+ widget_w_input->selection_color(FL_SELECTION_COLOR);
+ widget_w_input->labeltype(FL_NORMAL_LABEL);
+ widget_w_input->labelfont(0);
+ widget_w_input->labelsize(11);
+ widget_w_input->labelcolor(FL_FOREGROUND_COLOR);
+ widget_w_input->textsize(11);
+ widget_w_input->callback((Fl_Callback*)cb_widget_w_input);
+ widget_w_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ widget_w_input->when(FL_WHEN_RELEASE);
+ } // fld::widget::Formula_Input* widget_w_input
+ { widget_h_input = new fld::widget::Formula_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->box(FL_DOWN_BOX);
- widget_h_input->color(FL_BACKGROUND2_COLOR);
- widget_h_input->selection_color(FL_SELECTION_COLOR);
- widget_h_input->labeltype(FL_NORMAL_LABEL);
- widget_h_input->labelfont(0);
- widget_h_input->labelsize(11);
- widget_h_input->labelcolor(FL_FOREGROUND_COLOR);
- widget_h_input->textsize(11);
- widget_h_input->callback((Fl_Callback*)cb_widget_h_input);
- widget_h_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- widget_h_input->when(FL_WHEN_RELEASE);
- } // fld::widget::Formula_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 "
+ widget_h_input->box(FL_DOWN_BOX);
+ widget_h_input->color(FL_BACKGROUND2_COLOR);
+ widget_h_input->selection_color(FL_SELECTION_COLOR);
+ widget_h_input->labeltype(FL_NORMAL_LABEL);
+ widget_h_input->labelfont(0);
+ widget_h_input->labelsize(11);
+ widget_h_input->labelcolor(FL_FOREGROUND_COLOR);
+ widget_h_input->textsize(11);
+ widget_h_input->callback((Fl_Callback*)cb_widget_h_input);
+ widget_h_input->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ widget_h_input->when(FL_WHEN_RELEASE);
+ } // fld::widget::Formula_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->down_box(FL_BORDER_BOX);
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Children);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ o->menu(menu_Children);
+ } // Fl_Choice* o
+ { Fl_Box* o = new Fl_Box(399, 150, 1, 20);
+ o->hide();
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ o->end();
+ } // Fl_Group* o
+ { // This group is only visible if the parent is an Fl_Flex widget
+ wp_gui_flexp = new Fl_Group(95, 150, 314, 20, "Flex Parent:");
+ wp_gui_flexp->labelfont(1);
+ wp_gui_flexp->labelsize(11);
+ wp_gui_flexp->callback((Fl_Callback*)cb_wp_gui_flexp);
+ wp_gui_flexp->align(Fl_Align(FL_ALIGN_LEFT));
+ wp_gui_flexp->hide();
+ { widget_flex_size = new Fl_Value_Input(95, 150, 55, 20, "Size:");
+ widget_flex_size->tooltip("Fixed Width or Height for a horizontal or vertical Fl_Flex Parent.");
+ widget_flex_size->labelsize(11);
+ widget_flex_size->textsize(11);
+ widget_flex_size->callback((Fl_Callback*)cb_widget_flex_size);
+ widget_flex_size->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* widget_flex_size
+ { widget_flex_fixed = new Fl_Check_Button(155, 150, 55, 20, "fixed");
+ widget_flex_fixed->tooltip("If checked, the size of the widget stays fixed.");
+ widget_flex_fixed->down_box(FL_DOWN_BOX);
+ widget_flex_fixed->labelsize(11);
+ widget_flex_fixed->callback((Fl_Callback*)cb_widget_flex_fixed);
+ } // Fl_Check_Button* widget_flex_fixed
+ { Fl_Box* o = new Fl_Box(398, 150, 1, 20);
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ wp_gui_flexp->end();
+ } // Fl_Group* wp_gui_flexp
+ { wp_gui_values = new Fl_Group(95, 185, 300, 20, "Values:");
+ wp_gui_values->labelfont(1);
+ wp_gui_values->labelsize(11);
+ wp_gui_values->callback((Fl_Callback*)cb_wp_gui_values);
+ wp_gui_values->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Value_Input* o = new Fl_Value_Input(95, 185, 55, 20, "Size:");
+ o->tooltip("The size of the slider.");
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Size);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(155, 185, 55, 20, "Minimum:");
+ o->tooltip("The minimum value of the widget.");
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Minimum);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(215, 185, 55, 20, "Maximum:");
+ o->tooltip("The maximum value of the widget.");
+ o->labelsize(11);
+ o->value(1);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Maximum);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(275, 185, 55, 20, "Step:");
+ o->tooltip("The resolution of the widget value.");
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Step);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(335, 185, 55, 20, "Value:");
+ o->tooltip("The current widget value.");
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Value);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Box* o = new Fl_Box(395, 185, 0, 20);
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ wp_gui_values->end();
+ } // Fl_Group* wp_gui_values
+ { // This group is only visible for Fl_Flex widgets
+ wp_gui_margins = new Fl_Group(95, 185, 300, 20, "Margins:");
+ wp_gui_margins->labelfont(1);
+ wp_gui_margins->labelsize(11);
+ wp_gui_margins->callback((Fl_Callback*)cb_wp_gui_margins);
+ wp_gui_margins->align(Fl_Align(FL_ALIGN_LEFT));
+ wp_gui_margins->hide();
+ { Fl_Value_Input* o = new Fl_Value_Input(95, 185, 55, 20, "Left:");
+ o->tooltip("Left margin in group.");
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Left);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(155, 185, 55, 20, "Top:");
+ o->tooltip("Top margin in group.");
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Top);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(215, 185, 55, 20, "Right:");
+ o->tooltip("Right margin in group.");
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Right);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(275, 185, 55, 20, "Bottom:");
+ o->tooltip("Bottom margin in group.");
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Bottom);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(335, 185, 55, 20, "Gap:");
+ o->tooltip("Gap between children.");
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Gap);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Box* o = new Fl_Box(395, 185, 0, 20);
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ wp_gui_margins->end();
+ } // Fl_Group* wp_gui_margins
+ { wp_gui_sizerange = new Fl_Group(95, 185, 300, 20, "Size Range:");
+ wp_gui_sizerange->labelfont(1);
+ wp_gui_sizerange->labelsize(11);
+ wp_gui_sizerange->callback((Fl_Callback*)cb_wp_gui_sizerange);
+ wp_gui_sizerange->align(Fl_Align(FL_ALIGN_LEFT));
+ wp_gui_sizerange->hide();
+ { Fl_Value_Input* o = new Fl_Value_Input(95, 185, 55, 20, "Minimum Size:");
+ o->tooltip("The size of the slider.");
+ o->labelsize(11);
+ o->maximum(2048);
+ o->step(1);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Minimum1);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(155, 185, 55, 20);
+ o->tooltip("The minimum value of the widget.");
+ o->labelsize(11);
+ o->maximum(2048);
+ o->step(1);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_1);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Button* o = new Fl_Button(215, 185, 25, 20, "set");
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_set);
+ } // Fl_Button* o
+ { Fl_Value_Input* o = new Fl_Value_Input(245, 185, 55, 20, "Maximum Size:");
+ o->tooltip("The maximum value of the widget.");
+ o->labelsize(11);
+ o->maximum(2048);
+ o->step(1);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Maximum1);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(305, 185, 55, 20);
+ o->tooltip("The resolution of the widget value.");
+ o->labelsize(11);
+ o->maximum(2048);
+ o->step(1);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_2);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Button* o = new Fl_Button(365, 185, 25, 20, "set");
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_set1);
+ } // Fl_Button* o
+ { Fl_Box* o = new Fl_Box(395, 185, 0, 20);
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ wp_gui_sizerange->end();
+ } // Fl_Group* wp_gui_sizerange
+ { Fl_Group* o = new Fl_Group(95, 210, 310, 20, "Shortcut:");
+ o->labelfont(1);
o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Children);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- o->menu(menu_Children);
- } // Fl_Choice* o
- { Fl_Box* o = new Fl_Box(399, 150, 1, 20);
+ o->callback((Fl_Callback*)propagate_load);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ { // This is a special button that grabs keystrokes directly
+ wp_gui_shortcut = new Fl_Shortcut_Button(95, 210, 310, 20);
+ wp_gui_shortcut->tooltip("The shortcut key for the widget.\nUse \'Backspace\' key to clear.");
+ wp_gui_shortcut->box(FL_DOWN_BOX);
+ wp_gui_shortcut->color(FL_BACKGROUND2_COLOR);
+ wp_gui_shortcut->selection_color((Fl_Color)12);
+ wp_gui_shortcut->labeltype(FL_NORMAL_LABEL);
+ wp_gui_shortcut->labelfont(0);
+ wp_gui_shortcut->labelsize(11);
+ wp_gui_shortcut->labelcolor(FL_FOREGROUND_COLOR);
+ wp_gui_shortcut->callback((Fl_Callback*)cb_wp_gui_shortcut);
+ wp_gui_shortcut->align(Fl_Align(FL_ALIGN_CENTER));
+ wp_gui_shortcut->when(FL_WHEN_CHANGED);
+ } // Fl_Shortcut_Button* wp_gui_shortcut
+ o->end();
+ } // Fl_Group* o
+ { wp_gui_xclass = new Fl_Group(95, 235, 300, 20, "X Class:");
+ wp_gui_xclass->labelfont(1);
+ wp_gui_xclass->labelsize(11);
+ wp_gui_xclass->callback((Fl_Callback*)propagate_load);
+ wp_gui_xclass->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Input* o = new Fl_Input(95, 235, 95, 20, ":");
+ o->tooltip("The X resource class.");
+ o->labelfont(1);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_3);
+ Fl_Group::current()->resizable(o);
+ } // Fl_Input* o
+ { Fl_Light_Button* o = new Fl_Light_Button(195, 235, 60, 20, "Border");
+ o->tooltip("Add a border around the window.");
+ o->selection_color((Fl_Color)1);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_Border);
+ } // Fl_Light_Button* o
+ { Fl_Light_Button* o = new Fl_Light_Button(260, 235, 55, 20, "Modal");
+ o->tooltip("Make the window modal.");
+ o->selection_color((Fl_Color)1);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_Modal);
+ } // Fl_Light_Button* o
+ { Fl_Light_Button* o = new Fl_Light_Button(320, 235, 75, 20, "Nonmodal");
+ o->tooltip("Make the window non-modal.");
+ o->selection_color((Fl_Color)1);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_Nonmodal);
+ o->align(Fl_Align(132|FL_ALIGN_INSIDE));
+ } // Fl_Light_Button* o
+ wp_gui_xclass->end();
+ } // Fl_Group* wp_gui_xclass
+ { wp_gui_attributes = new Fl_Group(95, 260, 305, 20, "Attributes:");
+ wp_gui_attributes->labelfont(1);
+ wp_gui_attributes->labelsize(11);
+ wp_gui_attributes->callback((Fl_Callback*)propagate_load);
+ wp_gui_attributes->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Light_Button* o = new Fl_Light_Button(95, 260, 60, 20, "Visible");
+ o->tooltip("Show the widget.");
+ o->selection_color((Fl_Color)1);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_Visible);
+ } // Fl_Light_Button* o
+ { Fl_Light_Button* o = new Fl_Light_Button(160, 260, 60, 20, "Active");
+ o->tooltip("Activate the widget.");
+ o->selection_color((Fl_Color)1);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_Active);
+ } // Fl_Light_Button* o
+ { Fl_Light_Button* o = new Fl_Light_Button(225, 260, 75, 20, "Resizable");
+ o->tooltip("Make the widget resizable.");
+ o->selection_color((Fl_Color)1);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_Resizable);
+ o->when(FL_WHEN_CHANGED);
+ } // Fl_Light_Button* o
+ { Fl_Light_Button* o = new Fl_Light_Button(225, 260, 75, 20, "Headline");
+ o->tooltip("Make a menu item the headline of a menu\nunselectable, but not grayed out");
+ o->selection_color((Fl_Color)1);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_Headline);
+ o->when(FL_WHEN_CHANGED);
+ o->hide();
+ } // Fl_Light_Button* o
+ { Fl_Light_Button* o = new Fl_Light_Button(305, 260, 70, 20, "Hotspot");
+ o->tooltip("Center the window under this widget.");
+ o->selection_color((Fl_Color)1);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_Hotspot);
+ o->when(FL_WHEN_CHANGED);
+ } // Fl_Light_Button* o
+ { Fl_Box* o = new Fl_Box(395, 260, 0, 20);
+ o->labelsize(11);
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ wp_gui_attributes->end();
+ } // Fl_Group* wp_gui_attributes
+ { wp_gui_tooltip = new Fl_Input(95, 285, 310, 20, "Tooltip:");
+ wp_gui_tooltip->tooltip("The tooltip text for the widget.\nUse Ctrl-J for newlines.");
+ wp_gui_tooltip->labelfont(1);
+ wp_gui_tooltip->labelsize(11);
+ wp_gui_tooltip->textsize(11);
+ wp_gui_tooltip->callback((Fl_Callback*)cb_wp_gui_tooltip);
+ } // Fl_Input* wp_gui_tooltip
+ { Fl_Box* o = new Fl_Box(95, 305, 300, 5);
o->hide();
Fl_Group::current()->resizable(o);
} // Fl_Box* o
- o->end();
- } // Fl_Group* o
- { // This group is only visible if the parent is an Fl_Flex widget
- wp_gui_flexp = new Fl_Group(95, 150, 314, 20, "Flex Parent:");
- wp_gui_flexp->labelfont(1);
- wp_gui_flexp->labelsize(11);
- wp_gui_flexp->callback((Fl_Callback*)cb_wp_gui_flexp);
- wp_gui_flexp->align(Fl_Align(FL_ALIGN_LEFT));
- wp_gui_flexp->hide();
- { widget_flex_size = new Fl_Value_Input(95, 150, 55, 20, "Size:");
- widget_flex_size->tooltip("Fixed Width or Height for a horizontal or vertical Fl_Flex Parent.");
- widget_flex_size->labelsize(11);
- widget_flex_size->textsize(11);
- widget_flex_size->callback((Fl_Callback*)cb_widget_flex_size);
- widget_flex_size->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* widget_flex_size
- { widget_flex_fixed = new Fl_Check_Button(155, 150, 55, 20, "fixed");
- widget_flex_fixed->tooltip("If checked, the size of the widget stays fixed.");
- widget_flex_fixed->down_box(FL_DOWN_BOX);
- widget_flex_fixed->labelsize(11);
- widget_flex_fixed->callback((Fl_Callback*)cb_widget_flex_fixed);
- } // Fl_Check_Button* widget_flex_fixed
- { Fl_Box* o = new Fl_Box(398, 150, 1, 20);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- wp_gui_flexp->end();
- } // Fl_Group* wp_gui_flexp
- { wp_gui_values = new Fl_Group(95, 185, 300, 20, "Values:");
- wp_gui_values->labelfont(1);
- wp_gui_values->labelsize(11);
- wp_gui_values->callback((Fl_Callback*)cb_wp_gui_values);
- wp_gui_values->align(Fl_Align(FL_ALIGN_LEFT));
- { Fl_Value_Input* o = new Fl_Value_Input(95, 185, 55, 20, "Size:");
- o->tooltip("The size of the slider.");
- o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Size);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Value_Input* o = new Fl_Value_Input(155, 185, 55, 20, "Minimum:");
- o->tooltip("The minimum value of the widget.");
- o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Minimum);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Value_Input* o = new Fl_Value_Input(215, 185, 55, 20, "Maximum:");
- o->tooltip("The maximum value of the widget.");
+ wp_gui_tab->end();
+ Fl_Group::current()->resizable(wp_gui_tab);
+ } // Fl_Group* wp_gui_tab
+ { wp_style_tab = new Fl_Group(10, 30, 400, 330, "Style");
+ wp_style_tab->labelsize(11);
+ wp_style_tab->callback((Fl_Callback*)propagate_load);
+ wp_style_tab->when(FL_WHEN_NEVER);
+ wp_style_tab->hide();
+ { wp_style_label = new Fl_Group(99, 40, 305, 20, "Label Font:");
+ wp_style_label->labelfont(1);
+ wp_style_label->labelsize(11);
+ wp_style_label->callback((Fl_Callback*)propagate_load);
+ wp_style_label->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Choice* o = new Fl_Choice(99, 40, 148, 20);
+ o->tooltip("The style of the label text.");
+ o->box(FL_THIN_UP_BOX);
+ o->down_box(FL_BORDER_BOX);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_4);
+ Fl_Group::current()->resizable(o);
+ o->menu(fontmenu);
+ } // Fl_Choice* o
+ { Fl_Value_Input* o = new Fl_Value_Input(247, 40, 49, 20);
+ o->tooltip("The size of the label text.");
+ o->labelsize(11);
+ o->maximum(100);
+ o->step(1);
+ o->value(14);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_5);
+ } // Fl_Value_Input* o
+ { w_labelcolor = new Fl_Button(296, 40, 90, 20, "Label Color");
+ w_labelcolor->tooltip("The color of the label text.");
+ w_labelcolor->labelsize(11);
+ w_labelcolor->callback((Fl_Callback*)cb_w_labelcolor);
+ } // Fl_Button* w_labelcolor
+ { Fl_Menu_Button* o = new Fl_Menu_Button(386, 40, 18, 20);
+ o->callback((Fl_Callback*)cb_6);
+ o->menu(colormenu);
+ } // Fl_Menu_Button* o
+ wp_style_label->end();
+ } // Fl_Group* wp_style_label
+ { wp_style_box = new Fl_Group(99, 65, 305, 20, "Box:");
+ wp_style_box->labelfont(1);
+ wp_style_box->labelsize(11);
+ wp_style_box->callback((Fl_Callback*)propagate_load);
+ wp_style_box->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Choice* o = new Fl_Choice(100, 65, 196, 20);
+ o->tooltip("The \"up\" box of the widget.");
+ o->box(FL_THIN_UP_BOX);
+ o->down_box(FL_BORDER_BOX);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_7);
+ Fl_Group::current()->resizable(o);
+ o->menu(boxmenu);
+ } // Fl_Choice* o
+ { w_color = new Fl_Button(296, 65, 90, 20, "Color");
+ w_color->tooltip("The background color of the widget.");
+ w_color->labelsize(11);
+ w_color->callback((Fl_Callback*)cb_w_color);
+ } // Fl_Button* w_color
+ { Fl_Menu_Button* o = new Fl_Menu_Button(386, 65, 18, 20);
+ o->callback((Fl_Callback*)cb_8);
+ o->menu(colormenu);
+ } // Fl_Menu_Button* o
+ wp_style_box->end();
+ } // Fl_Group* wp_style_box
+ { wp_style_downbox = new Fl_Group(99, 90, 305, 20, "Down Box:");
+ wp_style_downbox->labelfont(1);
+ wp_style_downbox->labelsize(11);
+ wp_style_downbox->callback((Fl_Callback*)propagate_load);
+ wp_style_downbox->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Choice* o = new Fl_Choice(99, 90, 197, 20);
+ o->tooltip("The \"down\" box of the widget.");
+ o->box(FL_THIN_UP_BOX);
+ o->down_box(FL_BORDER_BOX);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_9);
+ Fl_Group::current()->resizable(o);
+ o->menu(boxmenu);
+ } // Fl_Choice* o
+ { w_selectcolor = new Fl_Button(296, 90, 90, 20, "Select Color");
+ w_selectcolor->tooltip("The selection color of the widget.");
+ w_selectcolor->labelsize(11);
+ w_selectcolor->callback((Fl_Callback*)cb_w_selectcolor);
+ } // Fl_Button* w_selectcolor
+ { Fl_Menu_Button* o = new Fl_Menu_Button(386, 90, 18, 20);
+ o->callback((Fl_Callback*)cb_a);
+ o->menu(colormenu);
+ } // Fl_Menu_Button* o
+ wp_style_downbox->end();
+ } // Fl_Group* wp_style_downbox
+ { wp_style_text = new Fl_Group(99, 115, 305, 20, "Text Font:");
+ wp_style_text->labelfont(1);
+ wp_style_text->labelsize(11);
+ wp_style_text->callback((Fl_Callback*)propagate_load);
+ wp_style_text->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Choice* o = new Fl_Choice(99, 115, 148, 20);
+ o->tooltip("The value text style.");
+ o->box(FL_DOWN_BOX);
+ o->down_box(FL_BORDER_BOX);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_b);
+ Fl_Group::current()->resizable(o);
+ o->menu(fontmenu);
+ } // Fl_Choice* o
+ { Fl_Value_Input* o = new Fl_Value_Input(247, 115, 49, 20);
+ o->tooltip("The value text size.");
+ o->labelsize(11);
+ o->maximum(100);
+ o->step(1);
+ o->value(14);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_c);
+ } // Fl_Value_Input* o
+ { w_textcolor = new Fl_Button(296, 115, 90, 20, "Text Color");
+ w_textcolor->tooltip("The value text color.");
+ w_textcolor->labelsize(11);
+ w_textcolor->callback((Fl_Callback*)cb_w_textcolor);
+ } // Fl_Button* w_textcolor
+ { Fl_Menu_Button* o = new Fl_Menu_Button(386, 115, 18, 20);
+ o->callback((Fl_Callback*)cb_d);
+ o->menu(colormenu);
+ } // Fl_Menu_Button* o
+ wp_style_text->end();
+ } // Fl_Group* wp_style_text
+ { Fl_Group* o = new Fl_Group(99, 150, 242, 20, "Label Margin:");
+ o->labelfont(1);
o->labelsize(11);
- o->value(1);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Maximum);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Value_Input* o = new Fl_Value_Input(275, 185, 55, 20, "Step:");
- o->tooltip("The resolution of the widget value.");
+ o->callback((Fl_Callback*)propagate_load);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Value_Input* o = new Fl_Value_Input(99, 150, 55, 20, "Horizontal:");
+ o->tooltip("Spacing between label and the horizontally aligned side of the widget.");
+ o->labelsize(11);
+ o->minimum(-127);
+ o->maximum(128);
+ o->step(1);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Horizontal);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(159, 150, 55, 20, "Vertical:");
+ o->tooltip("Spacing between label and the vertically aligned side of the widget.");
+ o->labelsize(11);
+ o->minimum(-127);
+ o->maximum(127);
+ o->step(1);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Vertical);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Value_Input* o = new Fl_Value_Input(219, 150, 55, 20, "Image Gap:");
+ o->tooltip("Gap between label image and text in pixels");
+ o->labelsize(11);
+ o->maximum(255);
+ o->step(1);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Image);
+ o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
+ } // Fl_Value_Input* o
+ { Fl_Box* o = new Fl_Box(281, 150, 60, 20);
+ o->labelsize(11);
+ o->hide();
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ o->end();
+ } // Fl_Group* o
+ { Fl_Light_Button* o = new Fl_Light_Button(99, 175, 90, 20, "Compact");
+ o->tooltip("use compact box types for closely set buttons");
+ o->selection_color((Fl_Color)1);
o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Step);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Value_Input* o = new Fl_Value_Input(335, 185, 55, 20, "Value:");
- o->tooltip("The current widget value.");
+ o->callback((Fl_Callback*)cb_Compact);
+ } // Fl_Light_Button* o
+ { Fl_Box* o = new Fl_Box(195, 205, 40, 40);
o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Value);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Box* o = new Fl_Box(395, 185, 0, 20);
Fl_Group::current()->resizable(o);
} // Fl_Box* o
- wp_gui_values->end();
- } // Fl_Group* wp_gui_values
- { // This group is only visible for Fl_Flex widgets
- wp_gui_margins = new Fl_Group(95, 185, 300, 20, "Margins:");
- wp_gui_margins->labelfont(1);
- wp_gui_margins->labelsize(11);
- wp_gui_margins->callback((Fl_Callback*)cb_wp_gui_margins);
- wp_gui_margins->align(Fl_Align(FL_ALIGN_LEFT));
- wp_gui_margins->hide();
- { Fl_Value_Input* o = new Fl_Value_Input(95, 185, 55, 20, "Left:");
- o->tooltip("Left margin in group.");
- o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Left);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Value_Input* o = new Fl_Value_Input(155, 185, 55, 20, "Top:");
- o->tooltip("Top margin in group.");
- o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Top);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Value_Input* o = new Fl_Value_Input(215, 185, 55, 20, "Right:");
- o->tooltip("Right margin in group.");
- o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Right);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Value_Input* o = new Fl_Value_Input(275, 185, 55, 20, "Bottom:");
- o->tooltip("Bottom margin in group.");
- o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Bottom);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Value_Input* o = new Fl_Value_Input(335, 185, 55, 20, "Gap:");
- o->tooltip("Gap between children.");
- o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Gap);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Box* o = new Fl_Box(395, 185, 0, 20);
+ wp_style_tab->end();
+ } // Fl_Group* wp_style_tab
+ { wp_cpp_tab = new Fl_Group(10, 30, 400, 330, "C++");
+ wp_cpp_tab->labelsize(11);
+ wp_cpp_tab->callback((Fl_Callback*)propagate_load);
+ wp_cpp_tab->when(FL_WHEN_NEVER);
+ wp_cpp_tab->hide();
+ { wp_cpp_class = new Fl_Group(95, 40, 310, 20, "Class:");
+ wp_cpp_class->labelfont(1);
+ wp_cpp_class->labelsize(11);
+ wp_cpp_class->callback((Fl_Callback*)propagate_load);
+ wp_cpp_class->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Input* o = new Fl_Input(95, 40, 172, 20);
+ o->tooltip("The widget subclass.");
+ o->labelfont(1);
+ o->labelsize(11);
+ o->textfont(4);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_e, (void*)(4));
+ Fl_Group::current()->resizable(o);
+ } // Fl_Input* o
+ { Fl_Choice* o = new Fl_Choice(267, 40, 138, 20);
+ o->tooltip("The widget subtype.");
+ o->box(FL_THIN_UP_BOX);
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_f);
+ } // Fl_Choice* o
+ wp_cpp_class->end();
+ } // Fl_Group* wp_cpp_class
+ { wp_cpp_name = new Fl_Group(95, 65, 310, 20, "Name:");
+ wp_cpp_name->labelfont(1);
+ wp_cpp_name->labelsize(11);
+ wp_cpp_name->callback((Fl_Callback*)propagate_load);
+ wp_cpp_name->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Input* o = new Fl_Input(95, 65, 235, 20);
+ o->tooltip("The name of the widget.");
+ o->labelfont(1);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_10);
+ Fl_Group::current()->resizable(o);
+ } // Fl_Input* o
+ { Fl_Choice* o = new Fl_Choice(330, 65, 75, 20);
+ o->tooltip("Change member access attribute.");
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_11);
+ o->when(FL_WHEN_CHANGED);
+ o->menu(menu_2);
+ } // Fl_Choice* o
+ { Fl_Choice* o = new Fl_Choice(330, 65, 75, 20);
+ o->tooltip("Change widget accessibility.");
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)name_public_cb);
+ o->when(FL_WHEN_CHANGED);
+ o->hide();
+ o->menu(menu_3);
+ } // Fl_Choice* o
+ wp_cpp_name->end();
+ } // Fl_Group* wp_cpp_name
+ { v_input[0] = new Fl_Input(95, 90, 310, 20, "Extra Code:");
+ v_input[0]->tooltip("Extra initialization code for the widget.");
+ v_input[0]->labelfont(1);
+ v_input[0]->labelsize(11);
+ v_input[0]->textfont(4);
+ v_input[0]->textsize(11);
+ v_input[0]->callback((Fl_Callback*)cb_v_input, (void*)(0));
+ } // Fl_Input* v_input[0]
+ { v_input[1] = new Fl_Input(95, 110, 310, 20);
+ v_input[1]->tooltip("Extra initialization code for the widget.");
+ v_input[1]->labelsize(11);
+ v_input[1]->textfont(4);
+ v_input[1]->textsize(11);
+ v_input[1]->callback((Fl_Callback*)cb_v_input1, (void*)(1));
+ } // Fl_Input* v_input[1]
+ { v_input[2] = new Fl_Input(95, 130, 310, 20);
+ v_input[2]->tooltip("Extra initialization code for the widget.");
+ v_input[2]->labelsize(11);
+ v_input[2]->textfont(4);
+ v_input[2]->textsize(11);
+ v_input[2]->callback((Fl_Callback*)cb_v_input2, (void*)(2));
+ } // Fl_Input* v_input[2]
+ { v_input[3] = new Fl_Input(95, 150, 310, 20);
+ v_input[3]->tooltip("Extra initialization code for the widget.");
+ v_input[3]->labelsize(11);
+ v_input[3]->textfont(4);
+ v_input[3]->textsize(11);
+ v_input[3]->callback((Fl_Callback*)cb_v_input3, (void*)(3));
+ } // Fl_Input* v_input[3]
+ { Fl_Tile* o = new Fl_Tile(95, 175, 310, 130);
+ o->callback((Fl_Callback*)cb_12);
+ { 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->box(FL_DOWN_BOX);
+ wComment->labelfont(1);
+ wComment->labelsize(11);
+ wComment->textfont(6);
+ wComment->textsize(11);
+ wComment->textcolor((Fl_Color)59);
+ wComment->callback((Fl_Callback*)cb_wComment);
+ wComment->align(Fl_Align(FL_ALIGN_LEFT));
+ wComment->when(FL_WHEN_CHANGED);
+ Fl_Group::current()->resizable(wComment);
+ wComment->buffer(new Fl_Text_Buffer());
+ } // Fl_Text_Editor* wComment
+ o->end();
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 223, 310, 82);
+ o->box(FL_FLAT_BOX);
+ { wCallback = new fld::widget::Code_Editor(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->box(FL_DOWN_BOX);
+ wCallback->color(FL_BACKGROUND2_COLOR);
+ wCallback->selection_color(FL_SELECTION_COLOR);
+ wCallback->labeltype(FL_NORMAL_LABEL);
+ wCallback->labelfont(1);
+ wCallback->labelsize(11);
+ wCallback->labelcolor(FL_FOREGROUND_COLOR);
+ wCallback->textfont(4);
+ wCallback->textsize(11);
+ wCallback->callback((Fl_Callback*)cb_wCallback);
+ wCallback->align(Fl_Align(FL_ALIGN_LEFT));
+ wCallback->when(FL_WHEN_RELEASE);
+ Fl_Group::current()->resizable(wCallback);
+ } // fld::widget::Code_Editor* wCallback
+ o->end();
+ } // Fl_Group* o
+ o->end();
Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- wp_gui_margins->end();
- } // Fl_Group* wp_gui_margins
- { wp_gui_sizerange = new Fl_Group(95, 185, 300, 20, "Size Range:");
- wp_gui_sizerange->labelfont(1);
- wp_gui_sizerange->labelsize(11);
- wp_gui_sizerange->callback((Fl_Callback*)cb_wp_gui_sizerange);
- wp_gui_sizerange->align(Fl_Align(FL_ALIGN_LEFT));
- wp_gui_sizerange->hide();
- { Fl_Value_Input* o = new Fl_Value_Input(95, 185, 55, 20, "Minimum Size:");
- o->tooltip("The size of the slider.");
- o->labelsize(11);
- o->maximum(2048);
- o->step(1);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Minimum1);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Value_Input* o = new Fl_Value_Input(155, 185, 55, 20);
- o->tooltip("The minimum value of the widget.");
+ } // Fl_Tile* o
+ { wp_cpp_callback = new Fl_Group(95, 310, 310, 20, "User Data:");
+ wp_cpp_callback->labelfont(1);
+ wp_cpp_callback->labelsize(11);
+ wp_cpp_callback->callback((Fl_Callback*)propagate_load);
+ wp_cpp_callback->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Input* o = new Fl_Input(95, 310, 158, 20);
+ o->tooltip("The user data to pass into the callback code.");
+ o->labelfont(1);
+ o->labelsize(11);
+ o->textfont(4);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_13);
+ Fl_Group::current()->resizable(o);
+ } // Fl_Input* o
+ { Fl_Menu_Button* o = new Fl_Menu_Button(260, 310, 145, 20, "When");
+ o->tooltip("When to call the callback function.");
+ o->box(FL_THIN_UP_BOX);
+ o->down_box(FL_BORDER_BOX);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_When);
+ o->when(FL_WHEN_CHANGED);
+ o->menu(whenmenu);
+ } // Fl_Menu_Button* o
+ wp_cpp_callback->end();
+ } // Fl_Group* wp_cpp_callback
+ { Fl_Group* o = new Fl_Group(95, 332, 310, 26, "Type:");
+ o->labelfont(1);
o->labelsize(11);
- o->maximum(2048);
- o->step(1);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_1);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Button* o = new Fl_Button(215, 185, 25, 20, "set");
+ o->callback((Fl_Callback*)propagate_load);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Input_Choice* o = new Fl_Input_Choice(95, 335, 158, 20);
+ o->tooltip("The type of the user data.");
+ o->labelfont(1);
+ o->labelsize(11);
+ o->textfont(4);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_14);
+ Fl_Group::current()->resizable(o);
+ o->menu(menu_4);
+ } // Fl_Input_Choice* o
+ { w_when_box = new Fl_Box(260, 332, 145, 26, "FL_WHEN_NEVER");
+ w_when_box->box(FL_FLAT_BOX);
+ w_when_box->selection_color((Fl_Color)1);
+ w_when_box->labelsize(8);
+ w_when_box->align(Fl_Align(193|FL_ALIGN_INSIDE));
+ } // Fl_Box* w_when_box
+ o->end();
+ } // Fl_Group* o
+ wp_cpp_tab->end();
+ } // Fl_Group* wp_cpp_tab
+ { widget_tab_grid = new Grid_Tab(10, 30, 400, 330, "Grid");
+ widget_tab_grid->box(FL_NO_BOX);
+ widget_tab_grid->color(FL_BACKGROUND_COLOR);
+ widget_tab_grid->selection_color(FL_BACKGROUND_COLOR);
+ widget_tab_grid->labeltype(FL_NORMAL_LABEL);
+ widget_tab_grid->labelfont(0);
+ widget_tab_grid->labelsize(11);
+ widget_tab_grid->labelcolor(FL_FOREGROUND_COLOR);
+ widget_tab_grid->callback((Fl_Callback*)cb_widget_tab_grid);
+ widget_tab_grid->align(Fl_Align(FL_ALIGN_TOP));
+ widget_tab_grid->when(FL_WHEN_RELEASE);
+ widget_tab_grid->hide();
+ widget_tab_grid->end();
+ } // Grid_Tab* widget_tab_grid
+ { widget_tab_grid_child = new Grid_Child_Tab(10, 30, 400, 330, "Grid Child");
+ widget_tab_grid_child->box(FL_NO_BOX);
+ widget_tab_grid_child->color(FL_BACKGROUND_COLOR);
+ widget_tab_grid_child->selection_color(FL_BACKGROUND_COLOR);
+ widget_tab_grid_child->labeltype(FL_NORMAL_LABEL);
+ widget_tab_grid_child->labelfont(0);
+ widget_tab_grid_child->labelsize(11);
+ widget_tab_grid_child->labelcolor(FL_FOREGROUND_COLOR);
+ widget_tab_grid_child->callback((Fl_Callback*)cb_widget_tab_grid_child);
+ widget_tab_grid_child->align(Fl_Align(FL_ALIGN_TOP));
+ widget_tab_grid_child->when(FL_WHEN_RELEASE);
+ widget_tab_grid_child->hide();
+ widget_tab_grid_child->end();
+ } // Grid_Child_Tab* widget_tab_grid_child
+ o->show();
+ widget_tabs->end();
+ } // Fl_Tabs* widget_tabs
+ { data_tabs = new Fl_Tabs(10, 10, 400, 350);
+ data_tabs->selection_color((Fl_Color)12);
+ data_tabs->labelsize(11);
+ data_tabs->labelcolor(FL_WHITE);
+ data_tabs->callback((Fl_Callback*)cb_data_tabs);
+ data_tabs->hide();
+ { data_tabs_data = new Fl_Group(10, 30, 400, 330, "Inline Data");
+ data_tabs_data->labelsize(11);
+ data_tabs_data->callback((Fl_Callback*)propagate_load);
+ { Fl_Group* o = new Fl_Group(95, 49, 310, 21, "Visibility:");
+ o->labelfont(1);
o->labelsize(11);
- o->callback((Fl_Callback*)cb_set);
- } // Fl_Button* o
- { Fl_Value_Input* o = new Fl_Value_Input(245, 185, 55, 20, "Maximum Size:");
- o->tooltip("The maximum value of the widget.");
+ o->callback((Fl_Callback*)propagate_load);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Choice* o = new Fl_Choice(95, 50, 210, 20);
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_15);
+ o->menu(menu_5);
+ } // Fl_Choice* o
+ { Fl_Choice* o = new Fl_Choice(95, 50, 75, 20);
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_16);
+ o->menu(menu_6);
+ } // Fl_Choice* o
+ { Fl_Box* o = new Fl_Box(363, 49, 42, 20);
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ o->end();
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(95, 75, 310, 20, "Output: ");
+ o->labelfont(1);
o->labelsize(11);
- o->maximum(2048);
- o->step(1);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Maximum1);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Value_Input* o = new Fl_Value_Input(305, 185, 55, 20);
- o->tooltip("The resolution of the widget value.");
+ o->callback((Fl_Callback*)propagate_load);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Choice* o = new Fl_Choice(95, 75, 210, 20);
+ o->tooltip("text mode generates a \"const char*\" and a trailing NUL, compressed mode use"
+"s zlib to generate a binary block");
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_17);
+ o->menu(menu_7);
+ } // Fl_Choice* o
+ { Fl_Box* o = new Fl_Box(363, 75, 42, 20);
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ o->end();
+ } // Fl_Group* o
+ { Fl_Input* o = new Fl_Input(95, 100, 310, 20, "Name:");
+ o->tooltip("Inline Data variables are declared \"const unsigned char []\" in binary mode "
+"and \"const char*\" in text mode.");
+ o->labelfont(1);
o->labelsize(11);
- o->maximum(2048);
- o->step(1);
+ o->textfont(4);
o->textsize(11);
- o->callback((Fl_Callback*)cb_2);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Button* o = new Fl_Button(365, 185, 25, 20, "set");
- o->labelsize(11);
- o->callback((Fl_Callback*)cb_set1);
+ o->callback((Fl_Callback*)cb_Name);
+ o->align(Fl_Align(132));
+ } // Fl_Input* o
+ { wp_data_filename = new Fl_Input(95, 125, 270, 20, "Filename:");
+ wp_data_filename->tooltip("name and path of file that will be inlined");
+ wp_data_filename->labelfont(1);
+ wp_data_filename->labelsize(11);
+ wp_data_filename->textfont(4);
+ wp_data_filename->textsize(11);
+ wp_data_filename->callback((Fl_Callback*)cb_wp_data_filename);
+ wp_data_filename->align(Fl_Align(132));
+ } // Fl_Input* wp_data_filename
+ { Fl_Button* o = new Fl_Button(365, 125, 40, 20, "@fileopen");
+ o->labelcolor((Fl_Color)134);
+ o->callback((Fl_Callback*)cb_fileopen);
} // Fl_Button* o
- { Fl_Box* o = new Fl_Box(395, 185, 0, 20);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- wp_gui_sizerange->end();
- } // Fl_Group* wp_gui_sizerange
- { Fl_Group* o = new Fl_Group(95, 210, 310, 20, "Shortcut:");
- o->labelfont(1);
- o->labelsize(11);
- o->callback((Fl_Callback*)propagate_load);
- o->align(Fl_Align(FL_ALIGN_LEFT));
- { // This is a special button that grabs keystrokes directly
- wp_gui_shortcut = new Fl_Shortcut_Button(95, 210, 310, 20);
- wp_gui_shortcut->tooltip("The shortcut key for the widget.\nUse \'Backspace\' key to clear.");
- wp_gui_shortcut->box(FL_DOWN_BOX);
- wp_gui_shortcut->color(FL_BACKGROUND2_COLOR);
- wp_gui_shortcut->selection_color((Fl_Color)12);
- wp_gui_shortcut->labeltype(FL_NORMAL_LABEL);
- wp_gui_shortcut->labelfont(0);
- wp_gui_shortcut->labelsize(11);
- wp_gui_shortcut->labelcolor(FL_FOREGROUND_COLOR);
- wp_gui_shortcut->callback((Fl_Callback*)cb_wp_gui_shortcut);
- wp_gui_shortcut->align(Fl_Align(FL_ALIGN_CENTER));
- wp_gui_shortcut->when(FL_WHEN_CHANGED);
- } // Fl_Shortcut_Button* wp_gui_shortcut
- o->end();
- } // Fl_Group* o
- { wp_gui_xclass = new Fl_Group(95, 235, 300, 20, "X Class:");
- wp_gui_xclass->labelfont(1);
- wp_gui_xclass->labelsize(11);
- wp_gui_xclass->callback((Fl_Callback*)propagate_load);
- wp_gui_xclass->align(Fl_Align(FL_ALIGN_LEFT));
- { Fl_Input* o = new Fl_Input(95, 235, 95, 20, ":");
- o->tooltip("The X resource class.");
+ { Fl_Text_Editor* o = new Fl_Text_Editor(95, 150, 310, 105, "Comment:");
+ o->box(FL_DOWN_BOX);
o->labelfont(1);
o->labelsize(11);
+ o->textfont(4);
o->textsize(11);
- o->callback((Fl_Callback*)cb_3);
+ o->callback((Fl_Callback*)cb_Comment);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
Fl_Group::current()->resizable(o);
- } // Fl_Input* o
- { Fl_Light_Button* o = new Fl_Light_Button(195, 235, 60, 20, "Border");
- o->tooltip("Add a border around the window.");
- o->selection_color((Fl_Color)1);
- o->labelsize(11);
- o->callback((Fl_Callback*)cb_Border);
- } // Fl_Light_Button* o
- { Fl_Light_Button* o = new Fl_Light_Button(260, 235, 55, 20, "Modal");
- o->tooltip("Make the window modal.");
- o->selection_color((Fl_Color)1);
- o->labelsize(11);
- o->callback((Fl_Callback*)cb_Modal);
- } // Fl_Light_Button* o
- { Fl_Light_Button* o = new Fl_Light_Button(320, 235, 75, 20, "Nonmodal");
- o->tooltip("Make the window non-modal.");
- o->selection_color((Fl_Color)1);
- o->labelsize(11);
- o->callback((Fl_Callback*)cb_Nonmodal);
- o->align(Fl_Align(132|FL_ALIGN_INSIDE));
- } // Fl_Light_Button* o
- wp_gui_xclass->end();
- } // Fl_Group* wp_gui_xclass
- { wp_gui_attributes = new Fl_Group(95, 260, 305, 20, "Attributes:");
- wp_gui_attributes->labelfont(1);
- wp_gui_attributes->labelsize(11);
- wp_gui_attributes->callback((Fl_Callback*)propagate_load);
- wp_gui_attributes->align(Fl_Align(FL_ALIGN_LEFT));
- { Fl_Light_Button* o = new Fl_Light_Button(95, 260, 60, 20, "Visible");
- o->tooltip("Show the widget.");
- o->selection_color((Fl_Color)1);
- o->labelsize(11);
- o->callback((Fl_Callback*)cb_Visible);
- } // Fl_Light_Button* o
- { Fl_Light_Button* o = new Fl_Light_Button(160, 260, 60, 20, "Active");
- o->tooltip("Activate the widget.");
- o->selection_color((Fl_Color)1);
- o->labelsize(11);
- o->callback((Fl_Callback*)cb_Active);
- } // Fl_Light_Button* o
- { Fl_Light_Button* o = new Fl_Light_Button(225, 260, 75, 20, "Resizable");
- o->tooltip("Make the widget resizable.");
- o->selection_color((Fl_Color)1);
- o->labelsize(11);
- o->callback((Fl_Callback*)cb_Resizable);
- o->when(FL_WHEN_CHANGED);
- } // Fl_Light_Button* o
- { Fl_Light_Button* o = new Fl_Light_Button(225, 260, 75, 20, "Headline");
- o->tooltip("Make a menu item the headline of a menu\nunselectable, but not grayed out");
- o->selection_color((Fl_Color)1);
+ o->buffer(new Fl_Text_Buffer());
+ o->add_key_binding(FL_Tab, 0, use_tab_navigation);
+ } // Fl_Text_Editor* o
+ data_tabs_data->end();
+ Fl_Group::current()->resizable(data_tabs_data);
+ } // Fl_Group* data_tabs_data
+ data_tabs->end();
+ } // Fl_Tabs* data_tabs
+ { comment_tabs = new Fl_Tabs(10, 10, 400, 350);
+ comment_tabs->selection_color((Fl_Color)12);
+ comment_tabs->labelsize(11);
+ comment_tabs->labelcolor(FL_WHITE);
+ comment_tabs->callback((Fl_Callback*)cb_comment_tabs);
+ comment_tabs->hide();
+ { comment_tabs_comment = new Fl_Group(10, 30, 400, 330, "Comment");
+ comment_tabs_comment->labelsize(11);
+ comment_tabs_comment->callback((Fl_Callback*)propagate_load);
+ { Fl_Text_Editor* o = comment_tabs_name = new Fl_Text_Editor(95, 45, 310, 235, "Comment:");
+ comment_tabs_name->box(FL_DOWN_BOX);
+ comment_tabs_name->labelfont(1);
+ comment_tabs_name->labelsize(11);
+ comment_tabs_name->textfont(4);
+ comment_tabs_name->textsize(11);
+ comment_tabs_name->textcolor((Fl_Color)58);
+ comment_tabs_name->callback((Fl_Callback*)cb_comment_tabs_name);
+ comment_tabs_name->align(Fl_Align(FL_ALIGN_LEFT));
+ Fl_Group::current()->resizable(comment_tabs_name);
+ o->when(FL_WHEN_ENTER_KEY_CHANGED|FL_WHEN_RELEASE);
+ o->buffer(new Fl_Text_Buffer());
+ } // Fl_Text_Editor* comment_tabs_name
+ { Fl_Group* o = new Fl_Group(95, 285, 310, 65);
+ o->callback((Fl_Callback*)propagate_load);
+ { comment_predefined_2 = new Fl_Menu_Button(95, 285, 90, 20, "Predefined");
+ comment_predefined_2->labelsize(11);
+ comment_predefined_2->textsize(11);
+ comment_predefined_2->callback((Fl_Callback*)cb_comment_predefined_2);
+ } // Fl_Menu_Button* comment_predefined_2
+ { comment_load_2 = new Fl_Button(190, 285, 90, 20, "Import...");
+ comment_load_2->labelsize(11);
+ comment_load_2->callback((Fl_Callback*)cb_comment_load_2);
+ } // Fl_Button* comment_load_2
+ { Fl_Check_Button* o = new Fl_Check_Button(95, 310, 120, 20, "output to header file");
+ o->tooltip("write the comment into the header (.h) file");
+ o->down_box(FL_DOWN_BOX);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_output);
+ o->when(FL_WHEN_CHANGED);
+ } // Fl_Check_Button* o
+ { Fl_Check_Button* o = new Fl_Check_Button(95, 330, 120, 20, "output to source file");
+ o->tooltip("write the comment into the source (.cxx) file");
+ o->down_box(FL_DOWN_BOX);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_output1);
+ o->when(FL_WHEN_CHANGED);
+ } // Fl_Check_Button* o
+ { Fl_Box* o = new Fl_Box(404, 285, 1, 65);
+ o->labelsize(11);
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ o->end();
+ } // Fl_Group* o
+ comment_tabs_comment->end();
+ Fl_Group::current()->resizable(comment_tabs_comment);
+ } // Fl_Group* comment_tabs_comment
+ comment_tabs->end();
+ } // Fl_Tabs* comment_tabs
+ { class_tabs = new Fl_Tabs(10, 10, 400, 350);
+ class_tabs->selection_color((Fl_Color)12);
+ class_tabs->labelsize(11);
+ class_tabs->labelcolor(FL_WHITE);
+ class_tabs->callback((Fl_Callback*)cb_class_tabs);
+ class_tabs->hide();
+ { class_tabs_main = new Fl_Group(10, 30, 400, 330, "Class");
+ class_tabs_main->labelsize(11);
+ class_tabs_main->callback((Fl_Callback*)propagate_load);
+ { /*
+ This elemnt is hidden because we don't
+ support a class inside a class at this point
+ */
+ Fl_Group* o = new Fl_Group(95, 50, 310, 21, "Visibility:");
+ o->labelfont(1);
o->labelsize(11);
- o->callback((Fl_Callback*)cb_Headline);
- o->when(FL_WHEN_CHANGED);
+ o->callback((Fl_Callback*)propagate_load);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
o->hide();
- } // Fl_Light_Button* o
- { Fl_Light_Button* o = new Fl_Light_Button(305, 260, 70, 20, "Hotspot");
- o->tooltip("Center the window under this widget.");
- o->selection_color((Fl_Color)1);
- o->labelsize(11);
- o->callback((Fl_Callback*)cb_Hotspot);
- o->when(FL_WHEN_CHANGED);
- } // Fl_Light_Button* o
- { Fl_Box* o = new Fl_Box(395, 260, 0, 20);
- o->labelsize(11);
- } // Fl_Box* o
- wp_gui_attributes->end();
- } // Fl_Group* wp_gui_attributes
- { wp_gui_tooltip = new Fl_Input(95, 285, 310, 20, "Tooltip:");
- wp_gui_tooltip->tooltip("The tooltip text for the widget.\nUse Ctrl-J for newlines.");
- wp_gui_tooltip->labelfont(1);
- wp_gui_tooltip->labelsize(11);
- wp_gui_tooltip->textsize(11);
- wp_gui_tooltip->callback((Fl_Callback*)cb_wp_gui_tooltip);
- } // Fl_Input* wp_gui_tooltip
- { Fl_Box* o = new Fl_Box(95, 305, 300, 5);
- o->hide();
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- wp_gui_tab->end();
- Fl_Group::current()->resizable(wp_gui_tab);
- } // Fl_Group* wp_gui_tab
- { wp_style_tab = new Fl_Group(10, 30, 400, 330, "Style");
- wp_style_tab->labelsize(11);
- wp_style_tab->callback((Fl_Callback*)propagate_load);
- wp_style_tab->when(FL_WHEN_NEVER);
- wp_style_tab->hide();
- { wp_style_label = new Fl_Group(99, 40, 305, 20, "Label Font:");
- wp_style_label->labelfont(1);
- wp_style_label->labelsize(11);
- wp_style_label->callback((Fl_Callback*)propagate_load);
- wp_style_label->align(Fl_Align(FL_ALIGN_LEFT));
- { Fl_Choice* o = new Fl_Choice(99, 40, 148, 20);
- o->tooltip("The style of the label text.");
- o->box(FL_THIN_UP_BOX);
- o->down_box(FL_BORDER_BOX);
+ { Fl_Choice* o = new Fl_Choice(95, 50, 75, 20);
+ o->tooltip("visibility for a class inside a class");
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_18);
+ o->menu(menu_8);
+ } // Fl_Choice* o
+ { Fl_Box* o = new Fl_Box(363, 50, 42, 20);
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ o->end();
+ } // Fl_Group* o
+ { Fl_Input* o = new Fl_Input(95, 50, 305, 20, "Attribute:");
+ o->tooltip("class attribute or `alignas()`");
o->labelfont(1);
o->labelsize(11);
+ o->textfont(4);
o->textsize(11);
- o->callback((Fl_Callback*)cb_4);
- Fl_Group::current()->resizable(o);
- o->menu(fontmenu);
- } // Fl_Choice* o
- { Fl_Value_Input* o = new Fl_Value_Input(247, 40, 49, 20);
- o->tooltip("The size of the label text.");
- o->labelsize(11);
- o->maximum(100);
- o->step(1);
- o->value(14);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_5);
- } // Fl_Value_Input* o
- { w_labelcolor = new Fl_Button(296, 40, 90, 20, "Label Color");
- w_labelcolor->tooltip("The color of the label text.");
- w_labelcolor->labelsize(11);
- w_labelcolor->callback((Fl_Callback*)cb_w_labelcolor);
- } // Fl_Button* w_labelcolor
- { Fl_Menu_Button* o = new Fl_Menu_Button(386, 40, 18, 20);
- o->callback((Fl_Callback*)cb_6);
- o->menu(colormenu);
- } // Fl_Menu_Button* o
- wp_style_label->end();
- } // Fl_Group* wp_style_label
- { wp_style_box = new Fl_Group(99, 65, 305, 20, "Box:");
- wp_style_box->labelfont(1);
- wp_style_box->labelsize(11);
- wp_style_box->callback((Fl_Callback*)propagate_load);
- wp_style_box->align(Fl_Align(FL_ALIGN_LEFT));
- { Fl_Choice* o = new Fl_Choice(100, 65, 196, 20);
- o->tooltip("The \"up\" box of the widget.");
- o->box(FL_THIN_UP_BOX);
- o->down_box(FL_BORDER_BOX);
+ o->callback((Fl_Callback*)cb_Attribute);
+ } // Fl_Input* o
+ { Fl_Input* o = new Fl_Input(95, 75, 305, 20, "Class Name:");
+ o->tooltip("class name, must be a single C++ keyword");
o->labelfont(1);
o->labelsize(11);
+ o->textfont(4);
o->textsize(11);
- o->callback((Fl_Callback*)cb_7);
- Fl_Group::current()->resizable(o);
- o->menu(boxmenu);
- } // Fl_Choice* o
- { w_color = new Fl_Button(296, 65, 90, 20, "Color");
- w_color->tooltip("The background color of the widget.");
- w_color->labelsize(11);
- w_color->callback((Fl_Callback*)cb_w_color);
- } // Fl_Button* w_color
- { Fl_Menu_Button* o = new Fl_Menu_Button(386, 65, 18, 20);
- o->callback((Fl_Callback*)cb_8);
- o->menu(colormenu);
- } // Fl_Menu_Button* o
- wp_style_box->end();
- } // Fl_Group* wp_style_box
- { wp_style_downbox = new Fl_Group(99, 90, 305, 20, "Down Box:");
- wp_style_downbox->labelfont(1);
- wp_style_downbox->labelsize(11);
- wp_style_downbox->callback((Fl_Callback*)propagate_load);
- wp_style_downbox->align(Fl_Align(FL_ALIGN_LEFT));
- { Fl_Choice* o = new Fl_Choice(99, 90, 197, 20);
- o->tooltip("The \"down\" box of the widget.");
- o->box(FL_THIN_UP_BOX);
- o->down_box(FL_BORDER_BOX);
+ o->callback((Fl_Callback*)cb_Class);
+ } // Fl_Input* o
+ { Fl_Input* o = new Fl_Input(95, 100, 305, 20, "Base Class:");
+ o->tooltip("visibility and name of base class or classes\ne.g. `public Fl_Widget`");
o->labelfont(1);
o->labelsize(11);
+ o->textfont(4);
o->textsize(11);
- o->callback((Fl_Callback*)cb_9);
- Fl_Group::current()->resizable(o);
- o->menu(boxmenu);
- } // Fl_Choice* o
- { w_selectcolor = new Fl_Button(296, 90, 90, 20, "Select Color");
- w_selectcolor->tooltip("The selection color of the widget.");
- w_selectcolor->labelsize(11);
- w_selectcolor->callback((Fl_Callback*)cb_w_selectcolor);
- } // Fl_Button* w_selectcolor
- { Fl_Menu_Button* o = new Fl_Menu_Button(386, 90, 18, 20);
- o->callback((Fl_Callback*)cb_a);
- o->menu(colormenu);
- } // Fl_Menu_Button* o
- wp_style_downbox->end();
- } // Fl_Group* wp_style_downbox
- { wp_style_text = new Fl_Group(99, 115, 305, 20, "Text Font:");
- wp_style_text->labelfont(1);
- wp_style_text->labelsize(11);
- wp_style_text->callback((Fl_Callback*)propagate_load);
- wp_style_text->align(Fl_Align(FL_ALIGN_LEFT));
- { Fl_Choice* o = new Fl_Choice(99, 115, 148, 20);
- o->tooltip("The value text style.");
+ o->callback((Fl_Callback*)cb_Base);
+ } // Fl_Input* o
+ { Fl_Text_Editor* o = new Fl_Text_Editor(95, 125, 305, 110, "Comment:");
o->box(FL_DOWN_BOX);
- o->down_box(FL_BORDER_BOX);
o->labelfont(1);
o->labelsize(11);
+ o->textfont(4);
o->textsize(11);
- o->callback((Fl_Callback*)cb_b);
- Fl_Group::current()->resizable(o);
- o->menu(fontmenu);
- } // Fl_Choice* o
- { Fl_Value_Input* o = new Fl_Value_Input(247, 115, 49, 20);
- o->tooltip("The value text size.");
- o->labelsize(11);
- o->maximum(100);
- o->step(1);
- o->value(14);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_c);
- } // Fl_Value_Input* o
- { w_textcolor = new Fl_Button(296, 115, 90, 20, "Text Color");
- w_textcolor->tooltip("The value text color.");
- w_textcolor->labelsize(11);
- w_textcolor->callback((Fl_Callback*)cb_w_textcolor);
- } // Fl_Button* w_textcolor
- { Fl_Menu_Button* o = new Fl_Menu_Button(386, 115, 18, 20);
- o->callback((Fl_Callback*)cb_d);
- o->menu(colormenu);
- } // Fl_Menu_Button* o
- wp_style_text->end();
- } // Fl_Group* wp_style_text
- { Fl_Group* o = new Fl_Group(99, 150, 242, 20, "Label Margin:");
- o->labelfont(1);
- o->labelsize(11);
- o->callback((Fl_Callback*)propagate_load);
- o->align(Fl_Align(FL_ALIGN_LEFT));
- { Fl_Value_Input* o = new Fl_Value_Input(99, 150, 55, 20, "Horizontal:");
- o->tooltip("Spacing between label and the horizontally aligned side of the widget.");
- o->labelsize(11);
- o->minimum(-127);
- o->maximum(128);
- o->step(1);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Horizontal);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Value_Input* o = new Fl_Value_Input(159, 150, 55, 20, "Vertical:");
- o->tooltip("Spacing between label and the vertically aligned side of the widget.");
- o->labelsize(11);
- o->minimum(-127);
- o->maximum(127);
- o->step(1);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Vertical);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Value_Input* o = new Fl_Value_Input(219, 150, 55, 20, "Image Gap:");
- o->tooltip("Gap between label image and text in pixels");
- o->labelsize(11);
- o->maximum(255);
- o->step(1);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Image);
- o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- } // Fl_Value_Input* o
- { Fl_Box* o = new Fl_Box(281, 150, 60, 20);
- o->labelsize(11);
- o->hide();
+ o->callback((Fl_Callback*)cb_Comment1);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- o->end();
- } // Fl_Group* o
- { Fl_Light_Button* o = new Fl_Light_Button(99, 175, 90, 20, "Compact");
- o->tooltip("use compact box types for closely set buttons");
- o->selection_color((Fl_Color)1);
- o->labelsize(11);
- o->callback((Fl_Callback*)cb_Compact);
- } // Fl_Light_Button* o
- { Fl_Box* o = new Fl_Box(195, 205, 40, 40);
- o->labelsize(11);
- Fl_Group::current()->resizable(o);
- } // Fl_Box* o
- wp_style_tab->end();
- } // Fl_Group* wp_style_tab
- { wp_cpp_tab = new Fl_Group(10, 30, 400, 330, "C++");
- wp_cpp_tab->labelsize(11);
- wp_cpp_tab->callback((Fl_Callback*)propagate_load);
- wp_cpp_tab->when(FL_WHEN_NEVER);
- wp_cpp_tab->hide();
- { wp_cpp_class = new Fl_Group(95, 40, 310, 20, "Class:");
- wp_cpp_class->labelfont(1);
- wp_cpp_class->labelsize(11);
- wp_cpp_class->callback((Fl_Callback*)propagate_load);
- wp_cpp_class->align(Fl_Align(FL_ALIGN_LEFT));
- { Fl_Input* o = new Fl_Input(95, 40, 172, 20);
- o->tooltip("The widget subclass.");
+ o->buffer(new Fl_Text_Buffer());
+ o->add_key_binding(FL_Tab, 0, use_tab_navigation);
+ } // Fl_Text_Editor* o
+ class_tabs_main->end();
+ Fl_Group::current()->resizable(class_tabs_main);
+ } // Fl_Group* class_tabs_main
+ class_tabs->end();
+ } // Fl_Tabs* class_tabs
+ { declblock_tabs = new Fl_Tabs(10, 10, 400, 350);
+ declblock_tabs->selection_color((Fl_Color)12);
+ declblock_tabs->labelsize(11);
+ declblock_tabs->labelcolor(FL_WHITE);
+ declblock_tabs->callback((Fl_Callback*)cb_declblock_tabs);
+ declblock_tabs->hide();
+ { declblock_tabs_main = new Fl_Group(10, 30, 400, 330, "Declaration Block");
+ declblock_tabs_main->labelsize(11);
+ declblock_tabs_main->callback((Fl_Callback*)propagate_load);
+ { Fl_Input* o = new Fl_Input(95, 50, 305, 20, "Start Code:");
+ o->tooltip("`#ifdef` or similar conditional declaration block");
o->labelfont(1);
o->labelsize(11);
o->textfont(4);
o->textsize(11);
- o->callback((Fl_Callback*)cb_e, (void*)(4));
- Fl_Group::current()->resizable(o);
+ o->callback((Fl_Callback*)cb_Start);
} // Fl_Input* o
- { Fl_Choice* o = new Fl_Choice(267, 40, 138, 20);
- o->tooltip("The widget subtype.");
- o->box(FL_THIN_UP_BOX);
- o->down_box(FL_BORDER_BOX);
- o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_f);
- } // Fl_Choice* o
- wp_cpp_class->end();
- } // Fl_Group* wp_cpp_class
- { wp_cpp_name = new Fl_Group(95, 65, 310, 20, "Name:");
- wp_cpp_name->labelfont(1);
- wp_cpp_name->labelsize(11);
- wp_cpp_name->callback((Fl_Callback*)propagate_load);
- wp_cpp_name->align(Fl_Align(FL_ALIGN_LEFT));
- { Fl_Input* o = new Fl_Input(95, 65, 235, 20);
- o->tooltip("The name of the widget.");
+ { Fl_Input* o = new Fl_Input(95, 75, 305, 20, "End Code:");
+ o->tooltip("`#endif` or similar declaration code block");
o->labelfont(1);
o->labelsize(11);
+ o->textfont(4);
o->textsize(11);
- o->callback((Fl_Callback*)cb_10);
- Fl_Group::current()->resizable(o);
+ o->callback((Fl_Callback*)cb_End);
} // Fl_Input* o
- { Fl_Choice* o = new Fl_Choice(330, 65, 75, 20);
- o->tooltip("Change member access attribute.");
- o->down_box(FL_BORDER_BOX);
+ { Fl_Group* o = new Fl_Group(95, 100, 305, 120);
+ o->callback((Fl_Callback*)propagate_load);
+ { Fl_Box* o = new Fl_Box(95, 100, 270, 20, "Enclose code generated by children in source file:");
+ o->labelsize(11);
+ o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
+ } // Fl_Box* o
+ { Fl_Check_Button* o = new Fl_Check_Button(105, 120, 260, 20, "implementations");
+ o->down_box(FL_DOWN_BOX);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_implementations);
+ } // Fl_Check_Button* o
+ { Fl_Check_Button* o = new Fl_Check_Button(105, 140, 260, 20, "static initializations and callbacks");
+ o->down_box(FL_DOWN_BOX);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_static);
+ } // Fl_Check_Button* o
+ { Fl_Box* o = new Fl_Box(95, 160, 270, 20, "Enclose code in header file:");
+ o->labelsize(11);
+ o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
+ } // Fl_Box* o
+ { Fl_Check_Button* o = new Fl_Check_Button(105, 180, 260, 20, "forward declarations");
+ o->down_box(FL_DOWN_BOX);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_forward);
+ } // Fl_Check_Button* o
+ { Fl_Check_Button* o = new Fl_Check_Button(105, 200, 260, 20, "preprecessor and callback declarations");
+ o->down_box(FL_DOWN_BOX);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_preprecessor);
+ } // Fl_Check_Button* o
+ { Fl_Box* o = new Fl_Box(365, 100, 35, 120);
+ o->labelsize(11);
+ o->hide();
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ o->end();
+ } // Fl_Group* o
+ { Fl_Text_Editor* o = new Fl_Text_Editor(95, 225, 305, 117, "Comment:");
+ o->box(FL_DOWN_BOX);
+ o->labelfont(1);
o->labelsize(11);
+ o->textfont(4);
o->textsize(11);
- o->callback((Fl_Callback*)cb_11);
- o->when(FL_WHEN_CHANGED);
- o->menu(menu_2);
- } // Fl_Choice* o
- { Fl_Choice* o = new Fl_Choice(330, 65, 75, 20);
- o->tooltip("Change widget accessibility.");
- o->down_box(FL_BORDER_BOX);
+ o->callback((Fl_Callback*)cb_Comment2);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ Fl_Group::current()->resizable(o);
+ o->buffer(new Fl_Text_Buffer());
+ o->add_key_binding(FL_Tab, 0, use_tab_navigation);
+ } // Fl_Text_Editor* o
+ declblock_tabs_main->end();
+ Fl_Group::current()->resizable(declblock_tabs_main);
+ } // Fl_Group* declblock_tabs_main
+ declblock_tabs->end();
+ } // Fl_Tabs* declblock_tabs
+ { decl_tabs = new Fl_Tabs(10, 10, 400, 350);
+ decl_tabs->selection_color((Fl_Color)12);
+ decl_tabs->labelsize(11);
+ decl_tabs->labelcolor(FL_WHITE);
+ decl_tabs->callback((Fl_Callback*)cb_decl_tabs);
+ decl_tabs->hide();
+ { decl_tabs_main = new Fl_Group(10, 30, 400, 330, "Declaration");
+ decl_tabs_main->labelsize(11);
+ decl_tabs_main->callback((Fl_Callback*)propagate_load);
+ { Fl_Group* o = new Fl_Group(15, 50, 390, 20);
+ o->labelfont(1);
o->labelsize(11);
- o->textsize(11);
- o->callback((Fl_Callback*)name_public_cb);
- o->when(FL_WHEN_CHANGED);
- o->hide();
- o->menu(menu_3);
- } // Fl_Choice* o
- wp_cpp_name->end();
- } // Fl_Group* wp_cpp_name
- { v_input[0] = new Fl_Input(95, 90, 310, 20, "Extra Code:");
- v_input[0]->tooltip("Extra initialization code for the widget.");
- v_input[0]->labelfont(1);
- v_input[0]->labelsize(11);
- v_input[0]->textfont(4);
- v_input[0]->textsize(11);
- v_input[0]->callback((Fl_Callback*)cb_v_input, (void*)(0));
- } // Fl_Input* v_input[0]
- { v_input[1] = new Fl_Input(95, 110, 310, 20);
- v_input[1]->tooltip("Extra initialization code for the widget.");
- v_input[1]->labelsize(11);
- v_input[1]->textfont(4);
- v_input[1]->textsize(11);
- v_input[1]->callback((Fl_Callback*)cb_v_input1, (void*)(1));
- } // Fl_Input* v_input[1]
- { v_input[2] = new Fl_Input(95, 130, 310, 20);
- v_input[2]->tooltip("Extra initialization code for the widget.");
- v_input[2]->labelsize(11);
- v_input[2]->textfont(4);
- v_input[2]->textsize(11);
- v_input[2]->callback((Fl_Callback*)cb_v_input2, (void*)(2));
- } // Fl_Input* v_input[2]
- { v_input[3] = new Fl_Input(95, 150, 310, 20);
- v_input[3]->tooltip("Extra initialization code for the widget.");
- v_input[3]->labelsize(11);
- v_input[3]->textfont(4);
- v_input[3]->textsize(11);
- v_input[3]->callback((Fl_Callback*)cb_v_input3, (void*)(3));
- } // Fl_Input* v_input[3]
- { Fl_Tile* o = new Fl_Tile(95, 175, 310, 130);
- o->callback((Fl_Callback*)cb_12);
- { 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->box(FL_DOWN_BOX);
- wComment->labelfont(1);
- wComment->labelsize(11);
- wComment->textfont(6);
- wComment->textsize(11);
- wComment->textcolor((Fl_Color)59);
- wComment->callback((Fl_Callback*)cb_wComment);
- wComment->align(Fl_Align(FL_ALIGN_LEFT));
- wComment->when(FL_WHEN_CHANGED);
- Fl_Group::current()->resizable(wComment);
- wComment->buffer(new Fl_Text_Buffer());
- } // Fl_Text_Editor* wComment
+ o->callback((Fl_Callback*)propagate_load);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Box* o = new Fl_Box(404, 50, 1, 20);
+ o->hide();
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ { Fl_Box* o = new Fl_Box(95, 50, 1, 20, "Visibility:");
+ o->labelfont(1);
+ o->labelsize(11);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ } // Fl_Box* o
+ { Fl_Choice* o = new Fl_Choice(95, 50, 185, 20);
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_19);
+ o->menu(menu_9);
+ } // Fl_Choice* o
+ { Fl_Choice* o = new Fl_Choice(95, 50, 75, 20);
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_1a);
+ o->menu(menu_a);
+ } // Fl_Choice* o
o->end();
} // Fl_Group* o
- { Fl_Group* o = new Fl_Group(95, 223, 310, 82);
- o->box(FL_FLAT_BOX);
- { wCallback = new fld::widget::Code_Editor(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->box(FL_DOWN_BOX);
- wCallback->color(FL_BACKGROUND2_COLOR);
- wCallback->selection_color(FL_SELECTION_COLOR);
- wCallback->labeltype(FL_NORMAL_LABEL);
- wCallback->labelfont(1);
- wCallback->labelsize(11);
- wCallback->labelcolor(FL_FOREGROUND_COLOR);
- wCallback->textfont(4);
- wCallback->textsize(11);
- wCallback->callback((Fl_Callback*)cb_wCallback);
- wCallback->align(Fl_Align(FL_ALIGN_LEFT));
- wCallback->when(FL_WHEN_RELEASE);
- Fl_Group::current()->resizable(wCallback);
- } // fld::widget::Code_Editor* wCallback
+ { Fl_Tile* o = new Fl_Tile(15, 75, 390, 210);
+ o->callback((Fl_Callback*)cb_1b);
+ { Fl_Group* o = new Fl_Group(15, 75, 390, 105);
+ o->box(FL_FLAT_BOX);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)propagate_load);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ { fld::widget::Code_Editor* o = new fld::widget::Code_Editor(95, 75, 310, 100, "Declaration:");
+ o->tooltip("a declaration: `int x;`, an external symbol: `extern int foo();`,\na `#` dire"
+"ctive: `#include <foo.h>`, a typedef `typedef char byte;`,\n or a `using` stat"
+"ement, etc.");
+ o->box(FL_DOWN_FRAME);
+ o->color(FL_BACKGROUND2_COLOR);
+ o->selection_color(FL_SELECTION_COLOR);
+ o->labeltype(FL_NORMAL_LABEL);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->labelcolor(FL_FOREGROUND_COLOR);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Declaration);
+ o->align(Fl_Align(132));
+ o->when(FL_WHEN_RELEASE);
+ Fl_Group::current()->resizable(o);
+ o->add_key_binding(FL_Tab, 0, use_tab_navigation);
+ } // fld::widget::Code_Editor* o
+ o->end();
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(15, 180, 390, 105);
+ o->box(FL_FLAT_BOX);
+ o->callback((Fl_Callback*)propagate_load);
+ { Fl_Text_Editor* o = new Fl_Text_Editor(95, 185, 310, 100, "Comment:");
+ o->box(FL_DOWN_BOX);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->textfont(4);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Comment3);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ Fl_Group::current()->resizable(o);
+ o->buffer(new Fl_Text_Buffer());
+ o->add_key_binding(FL_Tab, 0, use_tab_navigation);
+ } // Fl_Text_Editor* o
+ o->end();
+ } // Fl_Group* o
+ o->size_range(0, 25, 55);
+ o->size_range(1, 25, 55);
o->end();
- } // Fl_Group* o
- o->end();
- Fl_Group::current()->resizable(o);
- } // Fl_Tile* o
- { wp_cpp_callback = new Fl_Group(95, 310, 310, 20, "User Data:");
- wp_cpp_callback->labelfont(1);
- wp_cpp_callback->labelsize(11);
- wp_cpp_callback->callback((Fl_Callback*)propagate_load);
- wp_cpp_callback->align(Fl_Align(FL_ALIGN_LEFT));
- { Fl_Input* o = new Fl_Input(95, 310, 158, 20);
- o->tooltip("The user data to pass into the callback code.");
+ Fl_Group::current()->resizable(o);
+ } // Fl_Tile* o
+ decl_tabs_main->end();
+ Fl_Group::current()->resizable(decl_tabs_main);
+ } // Fl_Group* decl_tabs_main
+ decl_tabs->end();
+ } // Fl_Tabs* decl_tabs
+ { codeblock_tabs = new Fl_Tabs(10, 10, 400, 350);
+ codeblock_tabs->selection_color((Fl_Color)12);
+ codeblock_tabs->labelsize(11);
+ codeblock_tabs->labelcolor(FL_WHITE);
+ codeblock_tabs->callback((Fl_Callback*)cb_codeblock_tabs);
+ codeblock_tabs->hide();
+ { codeblock_tabs_main = new Fl_Group(10, 30, 400, 330, "Code Block");
+ codeblock_tabs_main->labelsize(11);
+ codeblock_tabs_main->callback((Fl_Callback*)propagate_load);
+ { Fl_Input* o = new Fl_Input(95, 50, 305, 20, "Start Code:");
+ o->tooltip("condition statement: `if (x==1)`, or empty");
o->labelfont(1);
o->labelsize(11);
o->textfont(4);
o->textsize(11);
- o->callback((Fl_Callback*)cb_13);
- Fl_Group::current()->resizable(o);
+ o->callback((Fl_Callback*)cb_Start1);
} // Fl_Input* o
- { Fl_Menu_Button* o = new Fl_Menu_Button(260, 310, 145, 20, "When");
- o->tooltip("When to call the callback function.");
- o->box(FL_THIN_UP_BOX);
- o->down_box(FL_BORDER_BOX);
+ { Fl_Input* o = new Fl_Input(95, 75, 305, 20, "End Code:");
+ o->tooltip("condition end: `while (x==1);`, or empty");
o->labelfont(1);
o->labelsize(11);
+ o->textfont(4);
o->textsize(11);
- o->callback((Fl_Callback*)cb_When);
- o->when(FL_WHEN_CHANGED);
- o->menu(whenmenu);
- } // Fl_Menu_Button* o
- wp_cpp_callback->end();
- } // Fl_Group* wp_cpp_callback
- { Fl_Group* o = new Fl_Group(95, 332, 310, 26, "Type:");
- o->labelfont(1);
- o->labelsize(11);
- o->callback((Fl_Callback*)propagate_load);
- o->align(Fl_Align(FL_ALIGN_LEFT));
- { Fl_Input_Choice* o = new Fl_Input_Choice(95, 335, 158, 20);
- o->tooltip("The type of the user data.");
+ o->callback((Fl_Callback*)cb_End1);
+ } // Fl_Input* o
+ { Fl_Text_Editor* o = new Fl_Text_Editor(95, 100, 305, 117, "Comment:");
+ o->tooltip("code block comment");
+ o->box(FL_DOWN_BOX);
o->labelfont(1);
o->labelsize(11);
o->textfont(4);
o->textsize(11);
- o->callback((Fl_Callback*)cb_14);
+ o->callback((Fl_Callback*)cb_Comment4);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
Fl_Group::current()->resizable(o);
- o->menu(menu_4);
- } // Fl_Input_Choice* o
- { w_when_box = new Fl_Box(260, 332, 145, 26, "FL_WHEN_NEVER");
- w_when_box->box(FL_FLAT_BOX);
- w_when_box->selection_color((Fl_Color)1);
- w_when_box->labelsize(8);
- w_when_box->align(Fl_Align(193|FL_ALIGN_INSIDE));
- } // Fl_Box* w_when_box
- o->end();
- } // Fl_Group* o
- wp_cpp_tab->end();
- } // Fl_Group* wp_cpp_tab
- { widget_tab_grid = new Grid_Tab(10, 30, 400, 330, "Grid");
- widget_tab_grid->box(FL_NO_BOX);
- widget_tab_grid->color(FL_BACKGROUND_COLOR);
- widget_tab_grid->selection_color(FL_BACKGROUND_COLOR);
- widget_tab_grid->labeltype(FL_NORMAL_LABEL);
- widget_tab_grid->labelfont(0);
- widget_tab_grid->labelsize(11);
- widget_tab_grid->labelcolor(FL_FOREGROUND_COLOR);
- widget_tab_grid->callback((Fl_Callback*)cb_widget_tab_grid);
- widget_tab_grid->align(Fl_Align(FL_ALIGN_TOP));
- widget_tab_grid->when(FL_WHEN_RELEASE);
- widget_tab_grid->hide();
- widget_tab_grid->end();
- } // Grid_Tab* widget_tab_grid
- { widget_tab_grid_child = new Grid_Child_Tab(10, 30, 400, 330, "Grid Child");
- widget_tab_grid_child->box(FL_NO_BOX);
- widget_tab_grid_child->color(FL_BACKGROUND_COLOR);
- widget_tab_grid_child->selection_color(FL_BACKGROUND_COLOR);
- widget_tab_grid_child->labeltype(FL_NORMAL_LABEL);
- widget_tab_grid_child->labelfont(0);
- widget_tab_grid_child->labelsize(11);
- widget_tab_grid_child->labelcolor(FL_FOREGROUND_COLOR);
- widget_tab_grid_child->callback((Fl_Callback*)cb_widget_tab_grid_child);
- widget_tab_grid_child->align(Fl_Align(FL_ALIGN_TOP));
- widget_tab_grid_child->when(FL_WHEN_RELEASE);
- widget_tab_grid_child->hide();
- widget_tab_grid_child->end();
- } // Grid_Child_Tab* widget_tab_grid_child
- o->show();
- widget_tabs->end();
- Fl_Group::current()->resizable(widget_tabs);
- } // Fl_Tabs* widget_tabs
+ o->buffer(new Fl_Text_Buffer());
+ o->add_key_binding(FL_Tab, 0, use_tab_navigation);
+ } // Fl_Text_Editor* o
+ codeblock_tabs_main->end();
+ Fl_Group::current()->resizable(codeblock_tabs_main);
+ } // Fl_Group* codeblock_tabs_main
+ codeblock_tabs->end();
+ } // Fl_Tabs* codeblock_tabs
+ { code_tabs = new Fl_Tabs(10, 10, 400, 350);
+ code_tabs->selection_color((Fl_Color)12);
+ code_tabs->labelsize(11);
+ code_tabs->labelcolor(FL_WHITE);
+ code_tabs->callback((Fl_Callback*)cb_code_tabs);
+ code_tabs->hide();
+ { code_tabs_main = new Fl_Group(10, 30, 400, 330, "Code");
+ code_tabs_main->labelsize(11);
+ code_tabs_main->callback((Fl_Callback*)propagate_load);
+ { fld::widget::Code_Editor* o = new fld::widget::Code_Editor(15, 40, 390, 315);
+ o->box(FL_DOWN_BOX);
+ o->color(FL_BACKGROUND2_COLOR);
+ o->selection_color(FL_SELECTION_COLOR);
+ o->labeltype(FL_NORMAL_LABEL);
+ o->labelfont(0);
+ o->labelsize(11);
+ o->labelcolor(FL_FOREGROUND_COLOR);
+ o->textfont(4);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_1c);
+ o->align(Fl_Align(FL_ALIGN_TOP));
+ o->when(FL_WHEN_RELEASE | FL_WHEN_ENTER_KEY_CHANGED);
+ Fl_Group::current()->resizable(o);
+ o->linenumber_width(60);
+o->linenumber_size(o->Fl_Text_Display::textsize());
+ } // fld::widget::Code_Editor* o
+ code_tabs_main->end();
+ Fl_Group::current()->resizable(code_tabs_main);
+ } // Fl_Group* code_tabs_main
+ code_tabs->end();
+ } // Fl_Tabs* code_tabs
+ { func_tabs = new Fl_Tabs(10, 10, 400, 350);
+ func_tabs->selection_color((Fl_Color)12);
+ func_tabs->labelsize(11);
+ func_tabs->labelcolor(FL_WHITE);
+ func_tabs->callback((Fl_Callback*)cb_func_tabs);
+ func_tabs->hide();
+ { func_tabs_main = new Fl_Group(10, 30, 400, 330, "Function");
+ func_tabs_main->labelsize(11);
+ func_tabs_main->callback((Fl_Callback*)propagate_load);
+ { Fl_Group* o = new Fl_Group(15, 50, 390, 45);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)propagate_load);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ { Fl_Box* o = new Fl_Box(404, 50, 1, 20);
+ o->hide();
+ Fl_Group::current()->resizable(o);
+ } // Fl_Box* o
+ { Fl_Box* o = new Fl_Box(95, 50, 1, 20, "Visibility:");
+ o->labelfont(1);
+ o->labelsize(11);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ } // Fl_Box* o
+ { Fl_Choice* o = new Fl_Choice(95, 50, 80, 20);
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_1d);
+ o->menu(menu_b);
+ } // Fl_Choice* o
+ { Fl_Choice* o = new Fl_Choice(95, 50, 75, 20);
+ o->down_box(FL_BORDER_BOX);
+ o->labelsize(11);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_1e);
+ o->menu(menu_c);
+ } // Fl_Choice* o
+ { Fl_Check_Button* o = new Fl_Check_Button(95, 75, 90, 20, "declare \"C\"");
+ o->down_box(FL_DOWN_BOX);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)cb_declare);
+ } // Fl_Check_Button* o
+ o->end();
+ } // Fl_Group* o
+ { Fl_Tile* o = new Fl_Tile(15, 100, 390, 220);
+ o->callback((Fl_Callback*)cb_1f);
+ { Fl_Group* o = new Fl_Group(15, 100, 390, 55);
+ o->box(FL_FLAT_BOX);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)propagate_load);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ { fld::widget::Code_Editor* o = new fld::widget::Code_Editor(95, 100, 310, 50, "Function\nName and\nArgs:");
+ o->tooltip("function name and args, or blank for `main(..)`");
+ o->box(FL_DOWN_FRAME);
+ o->color(FL_BACKGROUND2_COLOR);
+ o->selection_color(FL_SELECTION_COLOR);
+ o->labeltype(FL_NORMAL_LABEL);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->labelcolor(FL_FOREGROUND_COLOR);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Function);
+ o->align(Fl_Align(132));
+ o->when(FL_WHEN_RELEASE);
+ Fl_Group::current()->resizable(o);
+ o->add_key_binding(FL_Tab, 0, use_tab_navigation);
+ } // fld::widget::Code_Editor* o
+ o->end();
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(15, 155, 390, 60);
+ o->box(FL_FLAT_BOX);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->callback((Fl_Callback*)propagate_load);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ { fld::widget::Code_Editor* o = new fld::widget::Code_Editor(95, 160, 310, 50, "Return Type:");
+ o->tooltip("return type, or blank to return outermost widget");
+ o->box(FL_DOWN_FRAME);
+ o->color(FL_BACKGROUND2_COLOR);
+ o->selection_color(FL_SELECTION_COLOR);
+ o->labeltype(FL_NORMAL_LABEL);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->labelcolor(FL_FOREGROUND_COLOR);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Return);
+ o->align(Fl_Align(132));
+ o->when(FL_WHEN_RELEASE);
+ Fl_Group::current()->resizable(o);
+ o->add_key_binding(FL_Tab, 0, use_tab_navigation);
+ } // fld::widget::Code_Editor* o
+ o->end();
+ } // Fl_Group* o
+ { Fl_Group* o = new Fl_Group(15, 215, 390, 105);
+ o->box(FL_FLAT_BOX);
+ o->callback((Fl_Callback*)propagate_load);
+ { Fl_Text_Editor* o = new Fl_Text_Editor(95, 220, 310, 100, "Comment:");
+ o->box(FL_DOWN_BOX);
+ o->labelfont(1);
+ o->labelsize(11);
+ o->textfont(4);
+ o->textsize(11);
+ o->callback((Fl_Callback*)cb_Comment5);
+ o->align(Fl_Align(FL_ALIGN_LEFT));
+ Fl_Group::current()->resizable(o);
+ o->buffer(new Fl_Text_Buffer());
+ o->add_key_binding(FL_Tab, 0, use_tab_navigation);
+ } // Fl_Text_Editor* o
+ o->end();
+ } // Fl_Group* o
+ o->size_range(0, 25, 50);
+ o->size_range(1, 25, 50);
+ o->size_range(2, 25, 50);
+ o->end();
+ Fl_Group::current()->resizable(o);
+ } // Fl_Tile* o
+ func_tabs_main->end();
+ Fl_Group::current()->resizable(func_tabs_main);
+ } // Fl_Group* func_tabs_main
+ func_tabs->end();
+ Fl_Group::current()->resizable(func_tabs);
+ } // Fl_Tabs* func_tabs
+ tabs_wizard->end();
+ Fl_Group::current()->resizable(tabs_wizard);
+ } // Fl_Wizard* tabs_wizard
{ Fl_Tabs* o = widget_tabs_repo = new Fl_Tabs(10, 10, 400, 350);
widget_tabs_repo->hide();
{ Fl_Group* o = new Fl_Group(10, 30, 400, 330);
diff --git a/fluid/panels/widget_panel.fl b/fluid/panels/widget_panel.fl
index 2c2e75a08..beba75690 100644
--- a/fluid/panels/widget_panel.fl
+++ b/fluid/panels/widget_panel.fl
@@ -59,6 +59,9 @@ decl {\#include "nodes/Window_Node.h"} {private global
decl {\#include "nodes/Grid_Node.h"} {private global
}
+decl {\#include "nodes/Function_Node.h"} {private global
+}
+
decl {\#include <FL/Fl_Spinner.H>} {private global
}
@@ -74,13 +77,15 @@ decl {\#include <FL/fl_ask.H>} {private global
decl {\#include <FL/Fl_Menu_Item.H>} {private global
}
+decl {\#include <FL/Fl_File_Chooser.H>} {private global
+}
+
decl {\#define ZERO_ENTRY 1000} {private global
}
decl {extern const char* when_symbol_name(int n);
extern void set_whenmenu(int n);
extern void redraw_browser();
-const char *c_check(const char *c, int type=0);
extern Fl_Color fl_show_colormap(Fl_Color oldcol);
extern void labelcolor_common(Fl_Color c);
extern void color_common(Fl_Color c);
@@ -97,6 +102,12 @@ extern Fl_Menu_Item boxmenu[];} {private global
decl {extern int haderror;} {private global
}
+Function {use_tab_navigation(int, Fl_Text_Editor*)} {
+ comment {Allow widget navigation on text fields with Tab.} private return_type int
+} {
+ code {return 0;} {}
+}
+
Function {make_image_panel()} {
comment {Create a panel for editing widget image data}
} {
@@ -253,7 +264,7 @@ Function {make_image_panel()} {
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {bind the image to the widget, so it will be deleted automatically} xywh {75 120 170 20} down_box DOWN_BOX labelsize 11 hotspot
+ tooltip {bind the image to the widget, so it will be deleted with the widget} xywh {75 120 170 20} down_box DOWN_BOX labelsize 11 hotspot
}
}
Fl_Group image_panel_deimagegroup {
@@ -403,7 +414,7 @@ Function {make_image_panel()} {
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {bind the image to the widget, so it will be deleted automatically} xywh {75 260 170 20} down_box DOWN_BOX labelsize 11
+ tooltip {bind the image to the widget, so it will be deleted with the widget} xywh {75 260 170 20} down_box DOWN_BOX labelsize 11
}
}
Fl_Button image_panel_close {
@@ -466,43 +477,48 @@ Function {make_widget_panel()} {
} {
Fl_Window {} {
comment {Use a Double Window to avoid flickering.} open
- xywh {372 208 420 400} type Double labelsize 11 align 80 resizable hotspot
+ xywh {485 255 420 400} type Double labelsize 11 align 80 resizable hotspot
code0 {o->size_range(o->w(), o->h());} size_range {420 400 0 0} visible
} {
- Fl_Tabs widget_tabs {
+ Fl_Wizard tabs_wizard {
callback {propagate_load((Fl_Group *)o,v);} open
- xywh {10 10 400 350} selection_color 12 labelsize 11 labelcolor 7 when 0 resizable
- code0 {o->show();}
+ xywh {10 10 400 350} box NO_BOX labelsize 11 resizable
} {
- Fl_Group wp_gui_tab {
- label GUI
- callback propagate_load open
- xywh {10 30 400 330} labelsize 11 when 0 resizable
+ Fl_Tabs widget_tabs {
+ callback {if (current_widget)
+ propagate_load((Fl_Group *)o,v);} selected
+ xywh {10 10 400 350} selection_color 12 labelsize 11 labelcolor 7 when 0
+ code0 {o->show();}
} {
- Fl_Group {} {
- label {Label:}
+ Fl_Group wp_gui_tab {
+ label GUI
callback propagate_load open
- xywh {95 40 309 20} labelfont 1 labelsize 11 align 4
+ xywh {10 30 400 330} labelsize 11 when 0 resizable
} {
- Fl_Input wp_gui_label {
- callback label_cb
- tooltip {The label text for the widget.
+ Fl_Group {} {
+ label {Label:}
+ callback propagate_load open
+ xywh {95 40 309 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Input wp_gui_label {
+ callback label_cb
+ tooltip {The label text for the widget.
Use Ctrl-J for newlines.} xywh {95 40 190 20} labelfont 1 labelsize 11 when 15 textsize 11 resizable
- }
- Fl_Choice {} {
- callback labeltype_cb open
- tooltip {The label style for the widget.} xywh {285 40 119 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11
- code0 {extern Fl_Menu_Item labeltypemenu[];}
- code1 {o->menu(labeltypemenu);}
- } {}
- }
- Fl_Group {} {
- label {Image:}
- callback propagate_load open
- xywh {95 65 309 20} labelfont 1 labelsize 11 align 4
- } {
- Fl_Input widget_image_input {
- callback {if (v == LOAD) {
+ }
+ Fl_Choice {} {
+ callback labeltype_cb open
+ tooltip {The label style for the widget.} xywh {285 40 119 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11
+ code0 {extern Fl_Menu_Item labeltypemenu[];}
+ code1 {o->menu(labeltypemenu);}
+ } {}
+ }
+ Fl_Group {} {
+ label {Image:}
+ callback propagate_load open
+ xywh {95 65 309 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Input widget_image_input {
+ callback {if (v == LOAD) {
if (current_widget->is_widget() && !current_widget->is_a(Type::Window)) {
o->activate();
o->value(((Widget_Node*)current_widget)->image_name());
@@ -515,11 +531,11 @@ Use Ctrl-J for newlines.} xywh {95 40 190 20} labelfont 1 labelsize 11 when 15 t
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The active image for the widget.} xywh {95 65 200 20} labelfont 1 labelsize 11 textsize 11 resizable
- }
- Fl_Button {} {
- label {Browse...}
- callback {if (v == LOAD) {
+ tooltip {The active image for the widget.} xywh {95 65 200 20} labelfont 1 labelsize 11 textsize 11 resizable
+ }
+ Fl_Button {} {
+ label {Browse...}
+ callback {if (v == LOAD) {
if (current_widget->is_widget() && !current_widget->is_a(Type::Window))
o->activate();
else
@@ -536,23 +552,23 @@ Use Ctrl-J for newlines.} xywh {95 40 190 20} labelfont 1 labelsize 11 when 15 t
if (mod) Fluid.proj.set_modflag(1);
}
}}
- tooltip {Click to choose the active image.} xywh {295 65 89 20} labelsize 11 align 256
- }
- Fl_Button {} {
- label {...}
- callback {if (v != LOAD) {
+ tooltip {Click to choose the active image.} xywh {295 65 89 20} labelsize 11 align 256
+ }
+ Fl_Button {} {
+ label {...}
+ callback {if (v != LOAD) {
run_image_panel();
}}
- tooltip {more image options} bind_image 1 xywh {384 65 20 20}
+ tooltip {more image options} bind_image 1 xywh {384 65 20 20}
+ }
}
- }
- Fl_Group {} {
- label {Inactive:}
- callback propagate_load open
- xywh {95 90 309 20} labelfont 1 labelsize 11 align 4
- } {
- Fl_Input widget_deimage_input {
- callback {if (v == LOAD) {
+ Fl_Group {} {
+ label {Inactive:}
+ callback propagate_load open
+ xywh {95 90 309 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Input widget_deimage_input {
+ callback {if (v == LOAD) {
if (current_widget->is_widget() && !current_widget->is_a(Type::Window)) {
o->activate();
o->value(((Widget_Node*)current_widget)->inactive_name());
@@ -565,11 +581,11 @@ Use Ctrl-J for newlines.} xywh {95 40 190 20} labelfont 1 labelsize 11 when 15 t
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The inactive image for the widget.} xywh {95 90 200 20} labelfont 1 labelsize 11 textsize 11 resizable
- }
- Fl_Button {} {
- label {Browse...}
- callback {if (v == LOAD) {
+ tooltip {The inactive image for the widget.} xywh {95 90 200 20} labelfont 1 labelsize 11 textsize 11 resizable
+ }
+ Fl_Button {} {
+ label {Browse...}
+ callback {if (v == LOAD) {
if (current_widget->is_widget() && !current_widget->is_a(Type::Window))
o->activate();
else
@@ -586,183 +602,183 @@ Use Ctrl-J for newlines.} xywh {95 40 190 20} labelfont 1 labelsize 11 when 15 t
if (mod) Fluid.proj.set_modflag(1);
}
}}
- tooltip {Click to choose the inactive image.} xywh {295 90 89 20} labelsize 11
- }
- }
- Fl_Group wp_gui_alignment {
- label {Alignment:}
- callback propagate_load open
- xywh {95 115 312 20} labelfont 1 labelsize 11 align 4
- } {
- Fl_Button {} {
- label Clip
- user_data {(fl_intptr_t)FL_ALIGN_CLIP}
- callback align_cb
- tooltip {Clip the label to the inside of the widget.} xywh {95 115 30 20} type Toggle selection_color 8 labelsize 11 align 16
- }
- Fl_Button {} {
- label Wrap
- user_data {(fl_intptr_t)FL_ALIGN_WRAP}
- callback align_cb
- tooltip {Wrap the label text.} xywh {130 115 38 20} type Toggle selection_color 8 labelsize 11
- }
- Fl_Button {} {
- label {@-1<-}
- user_data {(fl_intptr_t)FL_ALIGN_LEFT}
- callback align_cb
- tooltip {Left-align the label.} xywh {278 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide
- }
- Fl_Button {} {
- label {@-1->}
- user_data {(fl_intptr_t)FL_ALIGN_RIGHT}
- callback align_cb
- tooltip {Right-align the label.} xywh {303 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide
- }
- Fl_Button {} {
- label {@-18}
- user_data {(fl_intptr_t)FL_ALIGN_TOP}
- callback align_cb
- tooltip {Top-align the label.} xywh {328 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide
- }
- Fl_Button {} {
- label {@-12}
- user_data {(fl_intptr_t)FL_ALIGN_BOTTOM}
- callback align_cb
- tooltip {Bottom-align the label.} xywh {353 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide
- }
- Fl_Choice {} {
- callback align_text_image_cb open
- xywh {172 115 116 20} down_box BORDER_BOX labelsize 11 textsize 11
- } {
- MenuItem {} {
- label { Image Alignment }
- user_data {(fl_intptr_t)-1} selected
- xywh {145 145 100 20} labelfont 1 labelsize 10 headline
- }
- MenuItem {} {
- label {image over text}
- user_data {(fl_intptr_t)FL_ALIGN_IMAGE_OVER_TEXT}
- xywh {25 25 100 20} labelsize 9
- }
- MenuItem {} {
- label {text over image}
- user_data {(fl_intptr_t)FL_ALIGN_TEXT_OVER_IMAGE}
- xywh {15 15 100 20} labelsize 9
- }
- MenuItem {} {
- label {text next to image}
- user_data {(fl_intptr_t)FL_ALIGN_TEXT_NEXT_TO_IMAGE}
- xywh {35 35 100 20} labelsize 9
- }
- MenuItem {} {
- label {image next to text}
- user_data {(fl_intptr_t)FL_ALIGN_IMAGE_NEXT_TO_TEXT}
- xywh {45 45 100 20} labelsize 9
- }
- MenuItem {} {
- label {image is backdrop}
- user_data {(fl_intptr_t)FL_ALIGN_IMAGE_BACKDROP}
- xywh {55 55 100 20} labelsize 9
+ tooltip {Click to choose the inactive image.} xywh {295 90 89 20} labelsize 11
}
}
- Fl_Choice {} {
- callback align_position_cb open
- xywh {293 115 86 20} down_box BORDER_BOX labelsize 11 textsize 11
+ Fl_Group wp_gui_alignment {
+ label {Alignment:}
+ callback propagate_load open
+ xywh {95 115 312 20} labelfont 1 labelsize 11 align 4
} {
- MenuItem {} {
- label { Inside && Outside }
- user_data {(fl_intptr_t)-1}
- xywh {135 135 100 20} labelfont 1 labelsize 10 headline
- }
- MenuItem {} {
- label {top left}
- user_data {(fl_intptr_t)FL_ALIGN_TOP_LEFT}
- xywh {45 45 100 20} labelsize 9
- }
- MenuItem {} {
- label top
- user_data {(fl_intptr_t)FL_ALIGN_TOP}
- xywh {55 55 100 20} labelsize 9
+ Fl_Button {} {
+ label Clip
+ user_data {(fl_intptr_t)FL_ALIGN_CLIP}
+ callback align_cb
+ tooltip {Clip the label to the inside of the widget.} xywh {95 115 30 20} type Toggle selection_color 8 labelsize 11 align 16
}
- MenuItem {} {
- label {top right}
- user_data {(fl_intptr_t)FL_ALIGN_TOP_RIGHT}
- xywh {65 65 100 20} labelsize 9
+ Fl_Button {} {
+ label Wrap
+ user_data {(fl_intptr_t)FL_ALIGN_WRAP}
+ callback align_cb
+ tooltip {Wrap the label text.} xywh {130 115 38 20} type Toggle selection_color 8 labelsize 11
}
- MenuItem {} {
- label left
+ Fl_Button {} {
+ label {@-1<-}
user_data {(fl_intptr_t)FL_ALIGN_LEFT}
- xywh {75 75 100 20} labelsize 9
- }
- MenuItem {} {
- label center
- user_data {(fl_intptr_t)FL_ALIGN_CENTER}
- xywh {35 35 100 20} labelsize 9
+ callback align_cb
+ tooltip {Left-align the label.} xywh {278 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide
}
- MenuItem {} {
- label right
+ Fl_Button {} {
+ label {@-1->}
user_data {(fl_intptr_t)FL_ALIGN_RIGHT}
- xywh {85 85 100 20} labelsize 9
+ callback align_cb
+ tooltip {Right-align the label.} xywh {303 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide
}
- MenuItem {} {
- label {bottom left}
- user_data {(fl_intptr_t)FL_ALIGN_BOTTOM_LEFT}
- xywh {95 95 100 20} labelsize 9
+ Fl_Button {} {
+ label {@-18}
+ user_data {(fl_intptr_t)FL_ALIGN_TOP}
+ callback align_cb
+ tooltip {Top-align the label.} xywh {328 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide
}
- MenuItem {} {
- label bottom
+ Fl_Button {} {
+ label {@-12}
user_data {(fl_intptr_t)FL_ALIGN_BOTTOM}
- xywh {105 105 100 20} labelsize 9
- }
- MenuItem {} {
- label {bottom right}
- user_data {(fl_intptr_t)FL_ALIGN_BOTTOM_RIGHT}
- xywh {115 115 100 20} labelsize 9
- }
- MenuItem {} {
- label { Outside Alignment }
- user_data {(fl_intptr_t)-1}
- xywh {125 125 100 20} labelfont 1 labelsize 10 headline
- }
- MenuItem {} {
- label {left top}
- user_data {(fl_intptr_t)FL_ALIGN_LEFT_TOP}
- xywh {135 135 100 20} labelsize 9
- }
- MenuItem {} {
- label {right top}
- user_data {(fl_intptr_t)FL_ALIGN_RIGHT_TOP}
- xywh {145 145 100 20} labelsize 9
- }
- MenuItem {} {
- label {left bottom}
- user_data {(fl_intptr_t)FL_ALIGN_LEFT_BOTTOM}
- xywh {155 155 100 20} labelsize 9
- }
- MenuItem {} {
- label {right bottom}
- user_data {(fl_intptr_t)FL_ALIGN_RIGHT_BOTTOM}
- xywh {45 45 100 20} labelsize 9
+ callback align_cb
+ tooltip {Bottom-align the label.} xywh {353 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8 hide
+ }
+ Fl_Choice {} {
+ callback align_text_image_cb
+ xywh {172 115 116 20} down_box BORDER_BOX labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label { Image Alignment }
+ user_data {(fl_intptr_t)-1}
+ xywh {145 145 100 20} labelfont 1 labelsize 10
+ }
+ MenuItem {} {
+ label {image over text}
+ user_data {(fl_intptr_t)FL_ALIGN_IMAGE_OVER_TEXT}
+ xywh {25 25 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label {text over image}
+ user_data {(fl_intptr_t)FL_ALIGN_TEXT_OVER_IMAGE}
+ xywh {15 15 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label {text next to image}
+ user_data {(fl_intptr_t)FL_ALIGN_TEXT_NEXT_TO_IMAGE}
+ xywh {35 35 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label {image next to text}
+ user_data {(fl_intptr_t)FL_ALIGN_IMAGE_NEXT_TO_TEXT}
+ xywh {45 45 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label {image is backdrop}
+ user_data {(fl_intptr_t)FL_ALIGN_IMAGE_BACKDROP}
+ xywh {55 55 100 20} labelsize 9
+ }
+ }
+ Fl_Choice {} {
+ callback align_position_cb
+ xywh {293 115 86 20} down_box BORDER_BOX labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label { Inside && Outside }
+ user_data {(fl_intptr_t)-1}
+ xywh {135 135 100 20} labelfont 1 labelsize 10
+ }
+ MenuItem {} {
+ label {top left}
+ user_data {(fl_intptr_t)FL_ALIGN_TOP_LEFT}
+ xywh {45 45 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label top
+ user_data {(fl_intptr_t)FL_ALIGN_TOP}
+ xywh {55 55 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label {top right}
+ user_data {(fl_intptr_t)FL_ALIGN_TOP_RIGHT}
+ xywh {65 65 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label left
+ user_data {(fl_intptr_t)FL_ALIGN_LEFT}
+ xywh {75 75 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label center
+ user_data {(fl_intptr_t)FL_ALIGN_CENTER}
+ xywh {35 35 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label right
+ user_data {(fl_intptr_t)FL_ALIGN_RIGHT}
+ xywh {85 85 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label {bottom left}
+ user_data {(fl_intptr_t)FL_ALIGN_BOTTOM_LEFT}
+ xywh {95 95 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label bottom
+ user_data {(fl_intptr_t)FL_ALIGN_BOTTOM}
+ xywh {105 105 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label {bottom right}
+ user_data {(fl_intptr_t)FL_ALIGN_BOTTOM_RIGHT}
+ xywh {115 115 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label { Outside Alignment }
+ user_data {(fl_intptr_t)-1}
+ xywh {125 125 100 20} labelfont 1 labelsize 10
+ }
+ MenuItem {} {
+ label {left top}
+ user_data {(fl_intptr_t)FL_ALIGN_LEFT_TOP}
+ xywh {135 135 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label {right top}
+ user_data {(fl_intptr_t)FL_ALIGN_RIGHT_TOP}
+ xywh {145 145 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label {left bottom}
+ user_data {(fl_intptr_t)FL_ALIGN_LEFT_BOTTOM}
+ xywh {155 155 100 20} labelsize 9
+ }
+ MenuItem {} {
+ label {right bottom}
+ user_data {(fl_intptr_t)FL_ALIGN_RIGHT_BOTTOM}
+ xywh {45 45 100 20} labelsize 9
+ }
+ }
+ Fl_Button {} {
+ label {@-3square}
+ user_data {(fl_intptr_t)FL_ALIGN_INSIDE}
+ callback align_cb
+ tooltip {Show the label inside the widget.} xywh {384 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
+ }
+ Fl_Box {} {
+ xywh {406 115 1 20} labelsize 11 resizable
}
}
- Fl_Button {} {
- label {@-3square}
- user_data {(fl_intptr_t)FL_ALIGN_INSIDE}
- callback align_cb
- tooltip {Show the label inside the widget.} xywh {384 115 20 20} type Toggle selection_color 8 labelsize 11 labelcolor 8
- }
- Fl_Box {} {
- xywh {406 115 1 20} labelsize 11 resizable
- }
- }
- Fl_Group {} {
- label {Position:}
- callback position_group_cb open
- xywh {95 150 314 20} labelfont 1 labelsize 11 align 4
- } {
- Fl_Input widget_x_input {
- label {X:}
- callback {if (v == LOAD) {
+ Fl_Group {} {
+ label {Position:}
+ callback position_group_cb open
+ xywh {95 150 314 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Input widget_x_input {
+ label {X:}
+ callback {if (v == LOAD) {
if (current_widget->is_true_widget()) {
o->value(((Widget_Node *)current_widget)->o->x());
o->activate();
@@ -789,14 +805,14 @@ Use Ctrl-J for newlines.} xywh {95 40 190 20} labelfont 1 labelsize 11 when 15 t
// calculation. Keep the formula if it was not used.
}
}}
- tooltip {The X position of the widget as a number or formula.
+ tooltip {The X position of the widget as a number or formula.
Formulas can be simple math, including the variables
x, px, sx, cx, and i} xywh {95 150 55 20} labelsize 11 align 5 textsize 11
- class {fld::widget::Formula_Input}
- }
- Fl_Input widget_y_input {
- label {Y:}
- callback {if (v == LOAD) {
+ class {fld::widget::Formula_Input}
+ }
+ Fl_Input widget_y_input {
+ label {Y:}
+ callback {if (v == LOAD) {
if (current_widget->is_true_widget()) {
o->value(((Widget_Node *)current_widget)->o->y());
o->activate();
@@ -822,14 +838,14 @@ x, px, sx, cx, and i} xywh {95 150 55 20} labelsize 11 align 5 textsize 11
o->value(v);
}
}}
- tooltip {The Y position of the widget as a number or formula.
+ tooltip {The Y position of the widget as a number or formula.
Formulas can be simple math, including the variables
y, py, sy, cy, and i} xywh {155 150 55 20} labelsize 11 align 5 textsize 11
- class {fld::widget::Formula_Input}
- }
- Fl_Input widget_w_input {
- label {Width:}
- callback {if (v == LOAD) {
+ class {fld::widget::Formula_Input}
+ }
+ Fl_Input widget_w_input {
+ label {Width:}
+ callback {if (v == LOAD) {
if (current_widget->is_true_widget()) {
o->value(((Widget_Node *)current_widget)->o->w());
o->activate();
@@ -855,14 +871,14 @@ y, py, sy, cy, and i} xywh {155 150 55 20} labelsize 11 align 5 textsize 11
o->value(v);
}
}}
- tooltip {The width of the widget as a number or formula.
+ tooltip {The width of the widget as a number or formula.
Formulas can be simple math, including the variables
w, pw, sw, cw, and i} xywh {215 150 55 20} labelsize 11 align 5 textsize 11
- class {fld::widget::Formula_Input}
- }
- Fl_Input widget_h_input {
- label {Height:}
- callback {if (v == LOAD) {
+ class {fld::widget::Formula_Input}
+ }
+ Fl_Input widget_h_input {
+ label {Height:}
+ callback {if (v == LOAD) {
if (current_widget->is_true_widget()) {
o->value(((Widget_Node *)current_widget)->o->h());
o->activate();
@@ -888,14 +904,14 @@ w, pw, sw, cw, and i} xywh {215 150 55 20} labelsize 11 align 5 textsize 11
o->value(v);
}
}}
- tooltip {The height of the widget as a number or formula.
+ tooltip {The height of the widget as a number or formula.
Formulas can be simple math, including the variables
h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
- class {fld::widget::Formula_Input}
- }
- Fl_Choice {} {
- label {Children:}
- callback {if (v == LOAD) {
+ class {fld::widget::Formula_Input}
+ }
+ Fl_Choice {} {
+ label {Children:}
+ callback {if (v == LOAD) {
if (current_widget->is_a(Type::Widget_Class)) {
o->show();
o->value(((Widget_Class_Node *)current_widget)->wc_relative);
@@ -914,28 +930,28 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {When instantiating a widget class, the children can either be fixed in their original position, automatically be repositioned, or both repsositioned and resized to fit the container.} xywh {335 150 64 20} down_box BORDER_BOX labelsize 11 align 5 textsize 11
- } {
- MenuItem {} {
- label Fixed
- xywh {0 0 31 20} labelsize 11
+ tooltip {When instantiating a widget class, the children can either be fixed in their original position, automatically be repositioned, or both repsositioned and resized to fit the container.} xywh {335 150 64 20} down_box BORDER_BOX labelsize 11 align 5 textsize 11
+ } {
+ MenuItem {} {
+ label Fixed
+ xywh {0 0 31 20} labelsize 11
+ }
+ MenuItem {} {
+ label Reposition
+ xywh {0 0 31 20} labelsize 11
+ }
+ MenuItem {} {
+ label Resize
+ xywh {0 0 31 20} labelsize 11
+ }
}
- MenuItem {} {
- label Reposition
- xywh {0 0 31 20} labelsize 11
+ Fl_Box {} {
+ xywh {399 150 1 20} hide resizable
}
- MenuItem {} {
- label Resize
- xywh {0 0 31 20} labelsize 11
- }
- }
- Fl_Box {} {
- xywh {399 150 1 20} hide resizable
}
- }
- Fl_Group wp_gui_flexp {
- label {Flex Parent:}
- callback {if (v == LOAD) {
+ Fl_Group wp_gui_flexp {
+ label {Flex Parent:}
+ callback {if (v == LOAD) {
if (Flex_Node::parent_is_flex(current_widget)) {
o->show();
propagate_load(o, v);
@@ -943,12 +959,12 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
o->hide();
}
}}
- comment {This group is only visible if the parent is an Fl_Flex widget}
- xywh {95 150 314 20} labelfont 1 labelsize 11 align 4 hide
- } {
- Fl_Value_Input widget_flex_size {
- label {Size:}
- callback {if (v == LOAD) {
+ comment {This group is only visible if the parent is an Fl_Flex widget}
+ xywh {95 150 314 20} labelfont 1 labelsize 11 align 4 hide
+ } {
+ Fl_Value_Input widget_flex_size {
+ label {Size:}
+ callback {if (v == LOAD) {
if (Flex_Node::parent_is_flex(current_widget)) {
o->value(Flex_Node::size(current_widget));
}
@@ -980,11 +996,11 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {Fixed Width or Height for a horizontal or vertical Fl_Flex Parent.} xywh {95 150 55 20} labelsize 11 align 5 textsize 11
- }
- Fl_Check_Button widget_flex_fixed {
- label fixed
- callback {if (v == LOAD) {
+ tooltip {Fixed Width or Height for a horizontal or vertical Fl_Flex Parent.} xywh {95 150 55 20} labelsize 11 align 5 textsize 11
+ }
+ Fl_Check_Button widget_flex_fixed {
+ label fixed
+ callback {if (v == LOAD) {
if (Flex_Node::parent_is_flex(current_widget)) {
o->value(Flex_Node::is_fixed(current_widget));
}
@@ -1013,15 +1029,15 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {If checked, the size of the widget stays fixed.} xywh {155 150 55 20} down_box DOWN_BOX labelsize 11
- }
- Fl_Box {} {
- xywh {398 150 1 20} resizable
+ tooltip {If checked, the size of the widget stays fixed.} xywh {155 150 55 20} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Box {} {
+ xywh {398 150 1 20} resizable
+ }
}
- }
- Fl_Group wp_gui_values {
- label {Values:}
- callback {if (v == LOAD) {
+ Fl_Group wp_gui_values {
+ label {Values:}
+ callback {if (v == LOAD) {
if ( current_widget->is_a(Type::Flex)
|| current_widget->is_a(Type::Grid)
|| current_widget->is_a(Type::Window))
@@ -1031,12 +1047,12 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
o->show();
propagate_load(o, v);
}
-}} open
- xywh {95 185 300 20} labelfont 1 labelsize 11 align 4
- } {
- Fl_Value_Input {} {
- label {Size:}
- callback {if (v == LOAD) {
+}}
+ xywh {95 185 300 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Value_Input {} {
+ label {Size:}
+ callback {if (v == LOAD) {
if (!current_widget->is_a(Type::Slider)) {o->deactivate(); return;}
o->activate();
o->value(((Fl_Slider*)(current_widget->o))->slider_size());
@@ -1053,11 +1069,11 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The size of the slider.} xywh {95 185 55 20} labelsize 11 align 5 textsize 11
- }
- Fl_Value_Input {} {
- label {Minimum:}
- callback {if (v == LOAD) {
+ tooltip {The size of the slider.} xywh {95 185 55 20} labelsize 11 align 5 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Minimum:}
+ callback {if (v == LOAD) {
if (current_widget->is_a(Type::Valuator_)) {
o->activate();
o->value(((Fl_Valuator*)(current_widget->o))->minimum());
@@ -1085,11 +1101,11 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The minimum value of the widget.} xywh {155 185 55 20} labelsize 11 align 5 textsize 11
- }
- Fl_Value_Input {} {
- label {Maximum:}
- callback {if (v == LOAD) {
+ tooltip {The minimum value of the widget.} xywh {155 185 55 20} labelsize 11 align 5 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Maximum:}
+ callback {if (v == LOAD) {
if (current_widget->is_a(Type::Valuator_)) {
o->activate();
o->value(((Fl_Valuator*)(current_widget->o))->maximum());
@@ -1117,11 +1133,11 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The maximum value of the widget.} xywh {215 185 55 20} labelsize 11 align 5 value 1 textsize 11
- }
- Fl_Value_Input {} {
- label {Step:}
- callback {if (v == LOAD) {
+ tooltip {The maximum value of the widget.} xywh {215 185 55 20} labelsize 11 align 5 value 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Step:}
+ callback {if (v == LOAD) {
if (current_widget->is_a(Type::Valuator_)) {
o->activate();
o->value(((Fl_Valuator*)(current_widget->o))->step());
@@ -1149,11 +1165,11 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The resolution of the widget value.} xywh {275 185 55 20} labelsize 11 align 5 textsize 11
- }
- Fl_Value_Input {} {
- label {Value:}
- callback {if (v == LOAD) {
+ tooltip {The resolution of the widget value.} xywh {275 185 55 20} labelsize 11 align 5 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Value:}
+ callback {if (v == LOAD) {
if (current_widget->is_a(Type::Valuator_)) {
o->activate();
o->value(((Fl_Valuator*)(current_widget->o))->value());
@@ -1184,15 +1200,15 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The current widget value.} xywh {335 185 55 20} labelsize 11 align 5 textsize 11
- }
- Fl_Box {} {
- xywh {395 185 0 20} resizable
+ tooltip {The current widget value.} xywh {335 185 55 20} labelsize 11 align 5 textsize 11
+ }
+ Fl_Box {} {
+ xywh {395 185 0 20} resizable
+ }
}
- }
- Fl_Group wp_gui_margins {
- label {Margins:}
- callback {if (v == LOAD) {
+ Fl_Group wp_gui_margins {
+ label {Margins:}
+ callback {if (v == LOAD) {
if (current_widget->is_a(Type::Flex)) {
o->show();
propagate_load(o, v);
@@ -1200,12 +1216,12 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
o->hide();
}
}}
- comment {This group is only visible for Fl_Flex widgets}
- xywh {95 185 300 20} labelfont 1 labelsize 11 align 4 hide
- } {
- Fl_Value_Input {} {
- label {Left:}
- callback {flex_margin_cb(o, v,
+ comment {This group is only visible for Fl_Flex widgets}
+ xywh {95 185 300 20} labelfont 1 labelsize 11 align 4 hide
+ } {
+ Fl_Value_Input {} {
+ label {Left:}
+ callback {flex_margin_cb(o, v,
[](Fl_Flex *w, Fl_Value_Input* i) -> void
{
int v;
@@ -1224,11 +1240,11 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
}
);}
- tooltip {Left margin in group.} xywh {95 185 55 20} labelsize 11 align 5 textsize 11
- }
- Fl_Value_Input {} {
- label {Top:}
- callback {flex_margin_cb(o, v,
+ tooltip {Left margin in group.} xywh {95 185 55 20} labelsize 11 align 5 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Top:}
+ callback {flex_margin_cb(o, v,
[](Fl_Flex *w, Fl_Value_Input* i) -> void
{
int v;
@@ -1247,11 +1263,11 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
}
);}
- tooltip {Top margin in group.} xywh {155 185 55 20} labelsize 11 align 5 textsize 11
- }
- Fl_Value_Input {} {
- label {Right:}
- callback {flex_margin_cb(o, v,
+ tooltip {Top margin in group.} xywh {155 185 55 20} labelsize 11 align 5 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Right:}
+ callback {flex_margin_cb(o, v,
[](Fl_Flex *w, Fl_Value_Input* i) -> void
{
int v;
@@ -1270,11 +1286,11 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
}
);}
- tooltip {Right margin in group.} xywh {215 185 55 20} labelsize 11 align 5 textsize 11
- }
- Fl_Value_Input {} {
- label {Bottom:}
- callback {flex_margin_cb(o, v,
+ tooltip {Right margin in group.} xywh {215 185 55 20} labelsize 11 align 5 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Bottom:}
+ callback {flex_margin_cb(o, v,
[](Fl_Flex *w, Fl_Value_Input* i) -> void
{
int v;
@@ -1293,11 +1309,11 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
}
);}
- tooltip {Bottom margin in group.} xywh {275 185 55 20} labelsize 11 align 5 textsize 11
- }
- Fl_Value_Input {} {
- label {Gap:}
- callback {flex_margin_cb(o, v,
+ tooltip {Bottom margin in group.} xywh {275 185 55 20} labelsize 11 align 5 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Gap:}
+ callback {flex_margin_cb(o, v,
[](Fl_Flex *w, Fl_Value_Input* o) -> void
{
int v = w->gap();
@@ -1314,15 +1330,15 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
}
);}
- tooltip {Gap between children.} xywh {335 185 55 20} labelsize 11 align 5 textsize 11
- }
- Fl_Box {} {
- xywh {395 185 0 20} resizable
+ tooltip {Gap between children.} xywh {335 185 55 20} labelsize 11 align 5 textsize 11
+ }
+ Fl_Box {} {
+ xywh {395 185 0 20} resizable
+ }
}
- }
- Fl_Group wp_gui_sizerange {
- label {Size Range:}
- callback {if (v == LOAD) {
+ Fl_Group wp_gui_sizerange {
+ label {Size Range:}
+ callback {if (v == LOAD) {
if (current_widget->is_a(Type::Window)) {
o->show();
propagate_load(o, v);
@@ -1330,11 +1346,11 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
o->hide();
}
}}
- xywh {95 185 300 20} labelfont 1 labelsize 11 align 4 hide
- } {
- Fl_Value_Input {} {
- label {Minimum Size:}
- callback {if (v == LOAD) {
+ xywh {95 185 300 20} labelfont 1 labelsize 11 align 4 hide
+ } {
+ Fl_Value_Input {} {
+ label {Minimum Size:}
+ callback {if (v == LOAD) {
if (!current_widget->is_a(Type::Window)) return;
o->value(((Window_Node*)current_widget)->sr_min_w);
} else {
@@ -1349,10 +1365,10 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The size of the slider.} xywh {95 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
- }
- Fl_Value_Input {} {
- callback {if (v == LOAD) {
+ tooltip {The size of the slider.} xywh {95 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ callback {if (v == LOAD) {
if (!current_widget->is_a(Type::Window)) return;
o->value(((Window_Node*)current_widget)->sr_min_h);
} else {
@@ -1367,11 +1383,11 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The minimum value of the widget.} xywh {155 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
- }
- Fl_Button {} {
- label set
- callback {if (v == LOAD) {
+ tooltip {The minimum value of the widget.} xywh {155 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
+ }
+ Fl_Button {} {
+ label set
+ callback {if (v == LOAD) {
} else {
int mod = 0;
Fluid.proj.undo.checkpoint();
@@ -1386,11 +1402,11 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
propagate_load(the_panel, LOAD);
if (mod) Fluid.proj.set_modflag(1);
}}
- xywh {215 185 25 20} labelsize 11
- }
- Fl_Value_Input {} {
- label {Maximum Size:}
- callback {if (v == LOAD) {
+ xywh {215 185 25 20} labelsize 11
+ }
+ Fl_Value_Input {} {
+ label {Maximum Size:}
+ callback {if (v == LOAD) {
if (!current_widget->is_a(Type::Window)) return;
o->value(((Window_Node*)current_widget)->sr_max_w);
} else {
@@ -1405,10 +1421,10 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The maximum value of the widget.} xywh {245 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
- }
- Fl_Value_Input {} {
- callback {if (v == LOAD) {
+ tooltip {The maximum value of the widget.} xywh {245 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ callback {if (v == LOAD) {
if (!current_widget->is_a(Type::Window)) return;
o->value(((Window_Node*)current_widget)->sr_max_h);
} else {
@@ -1423,11 +1439,11 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The resolution of the widget value.} xywh {305 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
- }
- Fl_Button {} {
- label set
- callback {if (v == LOAD) {
+ tooltip {The resolution of the widget value.} xywh {305 185 55 20} labelsize 11 align 5 maximum 2048 step 1 textsize 11
+ }
+ Fl_Button {} {
+ label set
+ callback {if (v == LOAD) {
} else {
int mod = 0;
Fluid.proj.undo.checkpoint();
@@ -1442,19 +1458,19 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
propagate_load(the_panel, LOAD);
if (mod) Fluid.proj.set_modflag(1);
}}
- xywh {365 185 25 20} labelsize 11
- }
- Fl_Box {} {
- xywh {395 185 0 20} resizable
+ xywh {365 185 25 20} labelsize 11
+ }
+ Fl_Box {} {
+ xywh {395 185 0 20} resizable
+ }
}
- }
- Fl_Group {} {
- label {Shortcut:}
- callback propagate_load
- xywh {95 210 310 20} labelfont 1 labelsize 11 align 4
- } {
- Fl_Button wp_gui_shortcut {
- callback {if (v == LOAD) {
+ Fl_Group {} {
+ label {Shortcut:}
+ callback propagate_load
+ xywh {95 210 310 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Button wp_gui_shortcut {
+ callback {if (v == LOAD) {
if (current_widget->is_button())
o->value( ((Fl_Button*)(current_widget->o))->shortcut() );
else if (current_widget->is_a(Type::Input))
@@ -1495,21 +1511,21 @@ h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
}
if (mod) Fluid.proj.set_modflag(1);
}}
- comment {This is a special button that grabs keystrokes directly}
- tooltip {The shortcut key for the widget.
+ comment {This is a special button that grabs keystrokes directly}
+ tooltip {The shortcut key for the widget.
Use 'Backspace' key to clear.} xywh {95 210 310 20} box DOWN_BOX color 7 selection_color 12 labelsize 11 when 1
- code0 {\#include <FL/Fl_Shortcut_Button.H>}
- class Fl_Shortcut_Button
+ code0 {\#include <FL/Fl_Shortcut_Button.H>}
+ class Fl_Shortcut_Button
+ }
}
- }
- Fl_Group wp_gui_xclass {
- label {X Class:}
- callback propagate_load
- xywh {95 235 300 20} labelfont 1 labelsize 11 align 4
- } {
- Fl_Input {} {
- label {:}
- callback {if (v == LOAD) {
+ Fl_Group wp_gui_xclass {
+ label {X Class:}
+ callback propagate_load
+ xywh {95 235 300 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Input {} {
+ label {:}
+ callback {if (v == LOAD) {
if (current_widget->is_a(Type::Window)) {
o->show();
o->parent()->show();
@@ -1531,11 +1547,11 @@ Use 'Backspace' key to clear.} xywh {95 210 310 20} box DOWN_BOX color 7 selecti
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The X resource class.} xywh {95 235 95 20} labelfont 1 labelsize 11 textsize 11 resizable
- }
- Fl_Light_Button {} {
- label Border
- callback {if (v == LOAD) {
+ tooltip {The X resource class.} xywh {95 235 95 20} labelfont 1 labelsize 11 textsize 11 resizable
+ }
+ Fl_Light_Button {} {
+ label Border
+ callback {if (v == LOAD) {
if (!current_widget->is_a(Type::Window)) {o->hide(); return;}
o->show();
o->value(((Fl_Window*)(current_widget->o))->border());
@@ -1544,11 +1560,11 @@ Use 'Backspace' key to clear.} xywh {95 210 310 20} box DOWN_BOX color 7 selecti
((Fl_Window*)(current_widget->o))->border(o->value());
Fluid.proj.set_modflag(1);
}}
- tooltip {Add a border around the window.} xywh {195 235 60 20} selection_color 1 labelsize 11
- }
- Fl_Light_Button {} {
- label Modal
- callback {if (v == LOAD) {
+ tooltip {Add a border around the window.} xywh {195 235 60 20} selection_color 1 labelsize 11
+ }
+ Fl_Light_Button {} {
+ label Modal
+ callback {if (v == LOAD) {
if (!current_widget->is_a(Type::Window)) {o->hide(); return;}
o->show();
o->value(((Window_Node *)current_widget)->modal);
@@ -1557,11 +1573,11 @@ Use 'Backspace' key to clear.} xywh {95 210 310 20} box DOWN_BOX color 7 selecti
((Window_Node *)current_widget)->modal = o->value();
Fluid.proj.set_modflag(1);
}}
- tooltip {Make the window modal.} xywh {260 235 55 20} selection_color 1 labelsize 11
- }
- Fl_Light_Button {} {
- label Nonmodal
- callback {if (v == LOAD) {
+ tooltip {Make the window modal.} xywh {260 235 55 20} selection_color 1 labelsize 11
+ }
+ Fl_Light_Button {} {
+ label Nonmodal
+ callback {if (v == LOAD) {
if (!current_widget->is_a(Type::Window)) {o->hide(); return;}
o->show();
o->value(((Window_Node *)current_widget)->non_modal);
@@ -1570,17 +1586,17 @@ Use 'Backspace' key to clear.} xywh {95 210 310 20} box DOWN_BOX color 7 selecti
((Window_Node *)current_widget)->non_modal = o->value();
Fluid.proj.set_modflag(1);
}}
- tooltip {Make the window non-modal.} xywh {320 235 75 20} selection_color 1 labelsize 11 align 148
+ tooltip {Make the window non-modal.} xywh {320 235 75 20} selection_color 1 labelsize 11 align 148
+ }
}
- }
- Fl_Group wp_gui_attributes {
- label {Attributes:}
- callback propagate_load open
- xywh {95 260 305 20} labelfont 1 labelsize 11 align 4
- } {
- Fl_Light_Button {} {
- label Visible
- callback {if (v == LOAD) {
+ Fl_Group wp_gui_attributes {
+ label {Attributes:}
+ callback propagate_load
+ xywh {95 260 305 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Light_Button {} {
+ label Visible
+ callback {if (v == LOAD) {
o->value(current_widget->o->visible());
if (current_widget->is_a(Type::Window)) o->deactivate();
else o->activate();
@@ -1607,11 +1623,11 @@ Use 'Backspace' key to clear.} xywh {95 210 310 20} box DOWN_BOX color 7 selecti
redraw_browser();
}
}}
- tooltip {Show the widget.} xywh {95 260 60 20} selection_color 1 labelsize 11
- }
- Fl_Light_Button {} {
- label Active
- callback {if (v == LOAD) {
+ tooltip {Show the widget.} xywh {95 260 60 20} selection_color 1 labelsize 11
+ }
+ Fl_Light_Button {} {
+ label Active
+ callback {if (v == LOAD) {
o->value(current_widget->o->active());
if (current_widget->is_a(Type::Window)) o->deactivate();
else o->activate();
@@ -1628,30 +1644,34 @@ Use 'Backspace' key to clear.} xywh {95 210 310 20} box DOWN_BOX color 7 selecti
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {Activate the widget.} xywh {160 260 60 20} selection_color 1 labelsize 11
- }
- Fl_Light_Button {} {
- label Resizable
- callback {if (v == LOAD) {
+ tooltip {Activate the widget.} xywh {160 260 60 20} selection_color 1 labelsize 11
+ }
+ Fl_Light_Button {} {
+ label Resizable
+ callback {if (v == LOAD) {
if (current_widget->is_a(Type::Menu_Item)) {
- o->hide();
+ o->hide();
return;
}
- if (numselected > 1) {o->deactivate(); return;}
o->show();
o->value(current_widget->resizable());
+ if (numselected > 1) {
+ o->deactivate();
+ return;
+ }
+ o->activate();
} else {
Fluid.proj.undo.checkpoint();
current_widget->resizable(o->value());
Fluid.proj.set_modflag(1);
}}
- tooltip {Make the widget resizable.} xywh {225 260 75 20} selection_color 1 labelsize 11 when 1
- }
- Fl_Light_Button {} {
- label Headline
- callback {if (v == LOAD) {
+ tooltip {Make the widget resizable.} xywh {225 260 75 20} selection_color 1 labelsize 11 when 1
+ }
+ Fl_Light_Button {} {
+ label Headline
+ callback {if (v == LOAD) {
if (!current_widget->is_a(Type::Menu_Item)) {
- o->hide();
+ o->hide();
return;
}
o->show();
@@ -1671,12 +1691,12 @@ Use 'Backspace' key to clear.} xywh {95 210 310 20} box DOWN_BOX color 7 selecti
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {Make a menu item the headline of a menu
+ tooltip {Make a menu item the headline of a menu
unselectable, but not grayed out} xywh {225 260 75 20} selection_color 1 labelsize 11 when 1 hide
- }
- Fl_Light_Button {} {
- label Hotspot
- callback {if (v == LOAD) {
+ }
+ Fl_Light_Button {} {
+ label Hotspot
+ callback {if (v == LOAD) {
if (numselected > 1) {o->deactivate(); return;}
if (current_widget->is_a(Type::Menu_Item)) o->label("divider");
else o->label("hotspot");
@@ -1700,15 +1720,15 @@ unselectable, but not grayed out} xywh {225 260 75 20} selection_color 1 labelsi
}
Fluid.proj.set_modflag(1);
}}
- tooltip {Center the window under this widget.} xywh {305 260 70 20} selection_color 1 labelsize 11 when 1
- }
- Fl_Box {} {
- xywh {395 260 0 20} labelsize 11
+ tooltip {Center the window under this widget.} xywh {305 260 70 20} selection_color 1 labelsize 11 when 1
+ }
+ Fl_Box {} {
+ xywh {395 260 0 20} labelsize 11 resizable
+ }
}
- }
- Fl_Input wp_gui_tooltip {
- label {Tooltip:}
- callback {if (v == LOAD) {
+ Fl_Input wp_gui_tooltip {
+ label {Tooltip:}
+ callback {if (v == LOAD) {
if (current_widget->is_widget()) {
o->activate();
o->value(((Widget_Node*)current_widget)->tooltip());
@@ -1723,25 +1743,25 @@ unselectable, but not grayed out} xywh {225 260 75 20} selection_color 1 labelsi
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The tooltip text for the widget.
+ tooltip {The tooltip text for the widget.
Use Ctrl-J for newlines.} xywh {95 285 310 20} labelfont 1 labelsize 11 textsize 11
+ }
+ Fl_Box {} {
+ xywh {95 305 300 5} hide resizable
+ }
}
- Fl_Box {} {
- xywh {95 305 300 5} hide resizable
- }
- }
- Fl_Group wp_style_tab {
- label Style
- callback propagate_load open
- xywh {10 30 400 330} labelsize 11 when 0 hide
- } {
- Fl_Group wp_style_label {
- label {Label Font:}
+ Fl_Group wp_style_tab {
+ label Style
callback propagate_load open
- xywh {99 40 305 20} labelfont 1 labelsize 11 align 4
+ xywh {10 30 400 330} labelsize 11 when 0 hide
} {
- Fl_Choice {} {
- callback {if (v == LOAD) {
+ Fl_Group wp_style_label {
+ label {Label Font:}
+ callback propagate_load open
+ xywh {99 40 305 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Choice {} {
+ callback {if (v == LOAD) {
int n = current_widget->o->labelfont();
if (n > 15) n = 0;
o->value(n);
@@ -1757,12 +1777,12 @@ Use Ctrl-J for newlines.} xywh {95 285 310 20} labelfont 1 labelsize 11 textsize
}
if (mod) Fluid.proj.set_modflag(1);
}} open
- tooltip {The style of the label text.} xywh {99 40 148 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
- code0 {extern Fl_Menu_Item fontmenu[];}
- code1 {o->menu(fontmenu);}
- } {}
- Fl_Value_Input {} {
- callback {int n;
+ tooltip {The style of the label text.} xywh {99 40 148 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
+ code0 {extern Fl_Menu_Item fontmenu[];}
+ code1 {o->menu(fontmenu);}
+ } {}
+ Fl_Value_Input {} {
+ callback {int n;
if (v == LOAD) {
n = current_widget->o->labelsize();
} else {
@@ -1777,11 +1797,11 @@ if (v == LOAD) {
if (mod) Fluid.proj.set_modflag(1);
}
o->value(n);}
- tooltip {The size of the label text.} xywh {247 40 49 20} labelsize 11 maximum 100 step 1 value 14 textsize 11
- }
- Fl_Button w_labelcolor {
- label {Label Color}
- callback {Fl_Color c = current_widget->o->labelcolor();
+ tooltip {The size of the label text.} xywh {247 40 49 20} labelsize 11 maximum 100 step 1 value 14 textsize 11
+ }
+ Fl_Button w_labelcolor {
+ label {Label Color}
+ callback {Fl_Color c = current_widget->o->labelcolor();
if (v != LOAD) {
Fl_Color d = fl_show_colormap(c);
if (d == c) return;
@@ -1791,10 +1811,10 @@ if (v != LOAD) {
o->color(c);
o->labelcolor(fl_contrast(FL_BLACK,c));
o->redraw();}
- tooltip {The color of the label text.} xywh {296 40 90 20} labelsize 11
- }
- Fl_Menu_Button {} {
- callback {Fl_Color c = current_widget->o->labelcolor();
+ tooltip {The color of the label text.} xywh {296 40 90 20} labelsize 11
+ }
+ Fl_Menu_Button {} {
+ callback {Fl_Color c = current_widget->o->labelcolor();
if (v != LOAD) {
Fl_Color d = (Fl_Color)(o->mvalue()->argument());
if (d == c) return;
@@ -1804,18 +1824,18 @@ if (v != LOAD) {
w_labelcolor->labelcolor(fl_contrast(FL_BLACK,c));
w_labelcolor->redraw();
}} open
- xywh {386 40 18 20}
- code0 {extern Fl_Menu_Item colormenu[];}
- code1 {o->menu(colormenu);}
- } {}
- }
- Fl_Group wp_style_box {
- label {Box:}
- callback propagate_load open
- xywh {99 65 305 20} labelfont 1 labelsize 11 align 4
- } {
- Fl_Choice {} {
- callback {if (v == LOAD) {
+ xywh {386 40 18 20}
+ code0 {extern Fl_Menu_Item colormenu[];}
+ code1 {o->menu(colormenu);}
+ } {}
+ }
+ Fl_Group wp_style_box {
+ label {Box:}
+ callback propagate_load open
+ xywh {99 65 305 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Choice {} {
+ callback {if (v == LOAD) {
if (current_widget->is_a(Type::Menu_Item)) {o->deactivate(); return;} else o->activate();
int n = current_widget->o->box();
if (!n) n = ZERO_ENTRY;
@@ -1834,13 +1854,13 @@ if (v != LOAD) {
}
if (mod) Fluid.proj.set_modflag(1);
}} open
- tooltip {The "up" box of the widget.} xywh {100 65 196 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
- code0 {extern Fl_Menu_Item boxmenu[];}
- code1 {o->menu(boxmenu);}
- } {}
- Fl_Button w_color {
- label Color
- callback {Fl_Color c = current_widget->o->color();
+ tooltip {The "up" box of the widget.} xywh {100 65 196 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
+ code0 {extern Fl_Menu_Item boxmenu[];}
+ code1 {o->menu(boxmenu);}
+ } {}
+ Fl_Button w_color {
+ label Color
+ callback {Fl_Color c = current_widget->o->color();
if (v == LOAD) {
if (current_widget->is_a(Type::Menu_Item)) {
o->deactivate();
@@ -1856,10 +1876,10 @@ if (v == LOAD) {
o->color(c);
o->labelcolor(fl_contrast(FL_BLACK,c));
o->redraw();}
- tooltip {The background color of the widget.} xywh {296 65 90 20} labelsize 11
- }
- Fl_Menu_Button {} {
- callback {Fl_Color c = current_widget->o->color();
+ tooltip {The background color of the widget.} xywh {296 65 90 20} labelsize 11
+ }
+ Fl_Menu_Button {} {
+ callback {Fl_Color c = current_widget->o->color();
if (v == LOAD) {
if (current_widget->is_a(Type::Menu_Item)) {o->deactivate(); return;} else o->activate();
} else {
@@ -1871,18 +1891,18 @@ if (v == LOAD) {
w_color->labelcolor(fl_contrast(FL_BLACK,c));
w_color->redraw();
}} open
- xywh {386 65 18 20}
- code0 {extern Fl_Menu_Item colormenu[];}
- code1 {o->menu(colormenu);}
- } {}
- }
- Fl_Group wp_style_downbox {
- label {Down Box:}
- callback propagate_load open
- xywh {99 90 305 20} labelfont 1 labelsize 11 align 4
- } {
- Fl_Choice {} {
- callback {if (v == LOAD) {
+ xywh {386 65 18 20}
+ code0 {extern Fl_Menu_Item colormenu[];}
+ code1 {o->menu(colormenu);}
+ } {}
+ }
+ Fl_Group wp_style_downbox {
+ label {Down Box:}
+ callback propagate_load open
+ xywh {99 90 305 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Choice {} {
+ callback {if (v == LOAD) {
int n;
if (current_widget->is_a(Type::Button))
n = ((Fl_Button*)(current_widget->o))->down_box();
@@ -1916,13 +1936,13 @@ if (v == LOAD) {
}
if (mod) Fluid.proj.set_modflag(1);
}} open
- tooltip {The "down" box of the widget.} xywh {99 90 197 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
- code0 {extern Fl_Menu_Item boxmenu[];}
- code1 {o->menu(boxmenu);}
- } {}
- Fl_Button w_selectcolor {
- label {Select Color}
- callback {Fl_Color c = current_widget->o->selection_color();
+ tooltip {The "down" box of the widget.} xywh {99 90 197 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
+ code0 {extern Fl_Menu_Item boxmenu[];}
+ code1 {o->menu(boxmenu);}
+ } {}
+ Fl_Button w_selectcolor {
+ label {Select Color}
+ callback {Fl_Color c = current_widget->o->selection_color();
if (v == LOAD) {
if (current_widget->is_a(Type::Menu_Item)) {
o->deactivate();
@@ -1939,10 +1959,10 @@ if (v == LOAD) {
o->color(c);
o->labelcolor(fl_contrast(FL_BLACK,c));
o->redraw();}
- tooltip {The selection color of the widget.} xywh {296 90 90 20} labelsize 11
- }
- Fl_Menu_Button {} {
- callback {Fl_Color c = current_widget->o->selection_color();
+ tooltip {The selection color of the widget.} xywh {296 90 90 20} labelsize 11
+ }
+ Fl_Menu_Button {} {
+ callback {Fl_Color c = current_widget->o->selection_color();
if (v == LOAD) {
if (current_widget->is_a(Type::Menu_Item)) {
o->deactivate();
@@ -1959,18 +1979,18 @@ if (v == LOAD) {
w_selectcolor->labelcolor(fl_contrast(FL_BLACK,c));
w_selectcolor->redraw();
}} open
- xywh {386 90 18 20}
- code0 {extern Fl_Menu_Item colormenu[];}
- code1 {o->menu(colormenu);}
- } {}
- }
- Fl_Group wp_style_text {
- label {Text Font:}
- callback propagate_load open
- xywh {99 115 305 20} labelfont 1 labelsize 11 align 4
- } {
- Fl_Choice {} {
- callback {Fl_Font n; int s; Fl_Color c;
+ xywh {386 90 18 20}
+ code0 {extern Fl_Menu_Item colormenu[];}
+ code1 {o->menu(colormenu);}
+ } {}
+ }
+ Fl_Group wp_style_text {
+ label {Text Font:}
+ callback propagate_load open
+ xywh {99 115 305 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Choice {} {
+ callback {Fl_Font n; int s; Fl_Color c;
if (v == LOAD) {
if (!current_widget->textstuff(0,n,s,c)) {o->deactivate(); return;}
o->activate();
@@ -1987,12 +2007,12 @@ if (v == LOAD) {
}
if (mod) Fluid.proj.set_modflag(1);
}} open
- tooltip {The value text style.} xywh {99 115 148 20} box DOWN_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
- code0 {extern Fl_Menu_Item fontmenu[];}
- code1 {o->menu(fontmenu);}
- } {}
- Fl_Value_Input {} {
- callback {Fl_Font n; int s; Fl_Color c;
+ tooltip {The value text style.} xywh {99 115 148 20} box DOWN_BOX down_box BORDER_BOX labelfont 1 labelsize 11 textsize 11 resizable
+ code0 {extern Fl_Menu_Item fontmenu[];}
+ code1 {o->menu(fontmenu);}
+ } {}
+ Fl_Value_Input {} {
+ callback {Fl_Font n; int s; Fl_Color c;
if (v == LOAD) {
if (!current_widget->textstuff(0,n,s,c)) {o->deactivate(); return;}
o->activate();
@@ -2009,11 +2029,11 @@ if (v == LOAD) {
if (mod) Fluid.proj.set_modflag(1);
}
o->value(s);}
- tooltip {The value text size.} xywh {247 115 49 20} labelsize 11 maximum 100 step 1 value 14 textsize 11
- }
- Fl_Button w_textcolor {
- label {Text Color}
- callback {Fl_Font n; int s; Fl_Color c;
+ tooltip {The value text size.} xywh {247 115 49 20} labelsize 11 maximum 100 step 1 value 14 textsize 11
+ }
+ Fl_Button w_textcolor {
+ label {Text Color}
+ callback {Fl_Font n; int s; Fl_Color c;
if (v == LOAD) {
if (!current_widget->textstuff(0,n,s,c)) {
o->deactivate();
@@ -2030,10 +2050,10 @@ if (v == LOAD) {
o->color(c);
o->labelcolor(fl_contrast(FL_BLACK,c));
o->redraw();}
- tooltip {The value text color.} xywh {296 115 90 20} labelsize 11
- }
- Fl_Menu_Button {} {
- callback {Fl_Font n; int s; Fl_Color c;
+ tooltip {The value text color.} xywh {296 115 90 20} labelsize 11
+ }
+ Fl_Menu_Button {} {
+ callback {Fl_Font n; int s; Fl_Color c;
if (v == LOAD) {
if (!current_widget->textstuff(0,n,s,c)) {
o->deactivate();
@@ -2050,19 +2070,19 @@ if (v == LOAD) {
w_textcolor->labelcolor(fl_contrast(FL_BLACK,c));
w_textcolor->redraw();
}} open
- xywh {386 115 18 20}
- code0 {extern Fl_Menu_Item colormenu[];}
- code1 {o->menu(colormenu);}
- } {}
- }
- Fl_Group {} {
- label {Label Margin:}
- callback propagate_load open
- xywh {99 150 242 20} labelfont 1 labelsize 11 align 4
- } {
- Fl_Value_Input {} {
- label {Horizontal:}
- callback {int s;
+ xywh {386 115 18 20}
+ code0 {extern Fl_Menu_Item colormenu[];}
+ code1 {o->menu(colormenu);}
+ } {}
+ }
+ Fl_Group {} {
+ label {Label Margin:}
+ callback propagate_load open
+ xywh {99 150 242 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Value_Input {} {
+ label {Horizontal:}
+ callback {int s;
if (v == LOAD) {
if (!current_widget->is_true_widget()) {
o->deactivate();
@@ -2087,11 +2107,11 @@ if (v == LOAD) {
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {Spacing between label and the horizontally aligned side of the widget.} xywh {99 150 55 20} labelsize 11 align 5 minimum -127 maximum 128 step 1 textsize 11
- }
- Fl_Value_Input {} {
- label {Vertical:}
- callback {int s;
+ tooltip {Spacing between label and the horizontally aligned side of the widget.} xywh {99 150 55 20} labelsize 11 align 5 minimum -127 maximum 128 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Vertical:}
+ callback {int s;
if (v == LOAD) {
if (!current_widget->is_true_widget()) {
o->deactivate();
@@ -2116,11 +2136,11 @@ if (v == LOAD) {
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {Spacing between label and the vertically aligned side of the widget.} xywh {159 150 55 20} labelsize 11 align 5 minimum -127 maximum 127 step 1 textsize 11
- }
- Fl_Value_Input {} {
- label {Image Gap:}
- callback {int s;
+ tooltip {Spacing between label and the vertically aligned side of the widget.} xywh {159 150 55 20} labelsize 11 align 5 minimum -127 maximum 127 step 1 textsize 11
+ }
+ Fl_Value_Input {} {
+ label {Image Gap:}
+ callback {int s;
if (v == LOAD) {
if (!current_widget->is_true_widget()) {
o->deactivate();
@@ -2145,15 +2165,15 @@ if (v == LOAD) {
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {Gap between label image and text in pixels} xywh {219 150 55 20} labelsize 11 align 5 maximum 255 step 1 textsize 11
- }
- Fl_Box {} {
- xywh {281 150 60 20} labelsize 11 hide resizable
+ tooltip {Gap between label image and text in pixels} xywh {219 150 55 20} labelsize 11 align 5 maximum 255 step 1 textsize 11
+ }
+ Fl_Box {} {
+ xywh {281 150 60 20} labelsize 11 hide resizable
+ }
}
- }
- Fl_Light_Button {} {
- label Compact
- callback {if (v == LOAD) {
+ Fl_Light_Button {} {
+ label Compact
+ callback {if (v == LOAD) {
uchar n;
if (current_widget->is_a(Type::Button) && !current_widget->is_a(Type::Menu_Item)) {
n = ((Fl_Button*)(current_widget->o))->compact();
@@ -2180,25 +2200,25 @@ if (v == LOAD) {
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {use compact box types for closely set buttons} xywh {99 175 90 20} selection_color 1 labelsize 11
- }
- Fl_Box {} {
- xywh {195 205 40 40} labelsize 11 resizable
+ tooltip {use compact box types for closely set buttons} xywh {99 175 90 20} selection_color 1 labelsize 11
+ }
+ Fl_Box {} {
+ xywh {195 205 40 40} labelsize 11 resizable
+ }
}
- }
- Fl_Group wp_cpp_tab {
- label {C++}
- callback propagate_load
- xywh {10 30 400 330} labelsize 11 when 0 hide
- } {
- Fl_Group wp_cpp_class {
- label {Class:}
+ Fl_Group wp_cpp_tab {
+ label {C++}
callback propagate_load open
- xywh {95 40 310 20} labelfont 1 labelsize 11 align 4
+ xywh {10 30 400 330} labelsize 11 when 0 hide
} {
- Fl_Input {} {
- user_data 4
- callback {if (v == LOAD) {
+ Fl_Group wp_cpp_class {
+ label {Class:}
+ callback propagate_load open
+ xywh {95 40 310 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Input {} {
+ user_data 4
+ callback {if (v == LOAD) {
if (current_widget->is_a(Type::Menu_Item)) {
o->deactivate();
} else {
@@ -2214,10 +2234,10 @@ if (v == LOAD) {
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The widget subclass.} xywh {95 40 172 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable
- }
- Fl_Choice {} {
- callback {static Fl_Menu_Item empty_type_menu[] = {
+ tooltip {The widget subclass.} xywh {95 40 172 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable
+ }
+ Fl_Choice {} {
+ callback {static Fl_Menu_Item empty_type_menu[] = {
{"Normal",0,nullptr,(void*)nullptr},
{nullptr}};
@@ -2260,16 +2280,16 @@ if (v == LOAD) {
}
if (mod) Fluid.proj.set_modflag(1);
}} open
- tooltip {The widget subtype.} xywh {267 40 138 20} box THIN_UP_BOX down_box BORDER_BOX labelsize 11 textsize 11
- } {}
- }
- Fl_Group wp_cpp_name {
- label {Name:}
- callback propagate_load open
- xywh {95 65 310 20} labelfont 1 labelsize 11 align 4
- } {
- Fl_Input {} {
- callback {if (v == LOAD) {
+ tooltip {The widget subtype.} xywh {267 40 138 20} box THIN_UP_BOX down_box BORDER_BOX labelsize 11 textsize 11
+ } {}
+ }
+ Fl_Group wp_cpp_name {
+ label {Name:}
+ callback propagate_load open
+ xywh {95 65 310 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Input {} {
+ callback {if (v == LOAD) {
static char buf[1024];
if (numselected != 1) {
snprintf(buf, sizeof(buf), "Widget Properties (%d widgets)", numselected);
@@ -2290,10 +2310,10 @@ if (v == LOAD) {
// ((Fl_Window*)(o->parent()->parent()->parent()))->label(current_widget->title());
}
}}
- tooltip {The name of the widget.} xywh {95 65 235 20} labelfont 1 labelsize 11 textsize 11 resizable
- }
- Fl_Choice {} {
- callback {if (v == LOAD) {
+ tooltip {The name of the widget.} xywh {95 65 235 20} labelfont 1 labelsize 11 textsize 11 resizable
+ }
+ Fl_Choice {} {
+ callback {if (v == LOAD) {
o->value(current_widget->public_);
if (current_widget->is_in_class()) o->show(); else o->hide();
} else {
@@ -2312,44 +2332,44 @@ if (v == LOAD) {
redraw_browser();
}
}} open
- tooltip {Change member access attribute.} xywh {330 65 75 20} down_box BORDER_BOX labelsize 11 when 1 textsize 11
- } {
- MenuItem {} {
- label private
- user_data 0 user_data_type long
- xywh {0 0 100 20} labelsize 11
- }
- MenuItem {} {
- label public
- user_data 1 user_data_type long
- xywh {0 0 100 20} labelsize 11
+ tooltip {Change member access attribute.} xywh {330 65 75 20} down_box BORDER_BOX labelsize 11 when 1 textsize 11
+ } {
+ MenuItem {} {
+ label private
+ user_data 0 user_data_type long
+ xywh {0 0 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label public
+ user_data 1 user_data_type long
+ xywh {0 0 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label protected
+ user_data 2 user_data_type long
+ xywh {0 0 100 20} labelsize 11
+ }
}
- MenuItem {} {
- label protected
- user_data 2 user_data_type long
- xywh {0 0 100 20} labelsize 11
+ Fl_Choice {} {
+ callback name_public_cb open
+ tooltip {Change widget accessibility.} xywh {330 65 75 20} down_box BORDER_BOX labelsize 11 when 1 textsize 11 hide
+ } {
+ MenuItem {} {
+ label local
+ user_data 0 user_data_type long
+ xywh {10 10 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label global
+ user_data 1 user_data_type long
+ xywh {10 10 100 20} labelsize 11
+ }
}
}
- Fl_Choice {} {
- callback name_public_cb open
- tooltip {Change widget accessibility.} xywh {330 65 75 20} down_box BORDER_BOX labelsize 11 when 1 textsize 11 hide
- } {
- MenuItem {} {
- label local
- user_data 0 user_data_type long
- xywh {10 10 100 20} labelsize 11
- }
- MenuItem {} {
- label global
- user_data 1 user_data_type long
- xywh {10 10 100 20} labelsize 11
- }
- }
- }
- Fl_Input {v_input[0]} {
- label {Extra Code:}
- user_data 0
- callback {int n = fl_int(o->user_data());
+ Fl_Input {v_input[0]} {
+ label {Extra Code:}
+ user_data 0
+ callback {int n = fl_int(o->user_data());
if (v == LOAD) {
o->value(current_widget->extra_code(n));
} else {
@@ -2363,34 +2383,34 @@ if (v == LOAD) {
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {Extra initialization code for the widget.} xywh {95 90 310 20} labelfont 1 labelsize 11 textfont 4 textsize 11
- }
- Fl_Input {v_input[1]} {
- user_data 1
- callback {cb_v_input(o, v);}
- tooltip {Extra initialization code for the widget.} xywh {95 110 310 20} labelsize 11 textfont 4 textsize 11
- }
- Fl_Input {v_input[2]} {
- user_data 2
- callback {cb_v_input(o, v);}
- tooltip {Extra initialization code for the widget.} xywh {95 130 310 20} labelsize 11 textfont 4 textsize 11
- }
- Fl_Input {v_input[3]} {
- user_data 3
- callback {cb_v_input(o, v);}
- tooltip {Extra initialization code for the widget.} xywh {95 150 310 20} labelsize 11 textfont 4 textsize 11
- }
- Fl_Tile {} {
- callback {wComment->do_callback(wComment, v);
+ tooltip {Extra initialization code for the widget.} xywh {95 90 310 20} labelfont 1 labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Input {v_input[1]} {
+ user_data 1
+ callback {cb_v_input(o, v);}
+ tooltip {Extra initialization code for the widget.} xywh {95 110 310 20} labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Input {v_input[2]} {
+ user_data 2
+ callback {cb_v_input(o, v);}
+ tooltip {Extra initialization code for the widget.} xywh {95 130 310 20} labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Input {v_input[3]} {
+ user_data 3
+ callback {cb_v_input(o, v);}
+ tooltip {Extra initialization code for the widget.} xywh {95 150 310 20} labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Tile {} {
+ callback {wComment->do_callback(wComment, v);
wCallback->do_callback(wCallback, v);} open
- xywh {95 175 310 130} resizable
- } {
- Fl_Group {} {open
- xywh {95 175 310 48} box FLAT_BOX
+ xywh {95 175 310 130} resizable
} {
- Fl_Text_Editor wComment {
- label {Comment:}
- callback {if (v == LOAD) {
+ Fl_Group {} {open
+ xywh {95 175 310 48} box FLAT_BOX
+ } {
+ Fl_Text_Editor wComment {
+ label {Comment:}
+ callback {if (v == LOAD) {
const char *cmttext = current_widget->comment();
o->buffer()->text( cmttext ? cmttext : "" );
} else {
@@ -2403,16 +2423,16 @@ wCallback->do_callback(wCallback, v);} open
if (mod) Fluid.proj.set_modflag(1);
free(c);
}}
- tooltip {Write a comment that will appear in the source code and in the widget tree overview.} xywh {95 175 310 45} box DOWN_BOX labelfont 1 labelsize 11 align 4 when 1 textfont 6 textsize 11 textcolor 59 resizable
- code0 {wComment->buffer(new Fl_Text_Buffer());}
+ tooltip {Write a comment that will appear in the source code and in the widget tree overview.} xywh {95 175 310 45} box DOWN_BOX labelfont 1 labelsize 11 align 4 when 1 textfont 6 textsize 11 textcolor 59 resizable
+ code0 {wComment->buffer(new Fl_Text_Buffer());}
+ }
}
- }
- Fl_Group {} {open
- xywh {95 223 310 82} box FLAT_BOX
- } {
- Fl_Text_Editor wCallback {
- label {Callback:}
- callback {if (v == LOAD) {
+ Fl_Group {} {open
+ xywh {95 223 310 82} box FLAT_BOX
+ } {
+ Fl_Text_Editor wCallback {
+ label {Callback:}
+ callback {if (v == LOAD) {
const char *cbtext = current_widget->callback();
o->buffer()->text( cbtext ? cbtext : "" );
} else {
@@ -2431,19 +2451,19 @@ wCallback->do_callback(wCallback, v);} open
if (mod) Fluid.proj.set_modflag(1);
free(c);
}}
- 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.} xywh {95 225 310 80} box DOWN_BOX labelfont 1 labelsize 11 align 4 textfont 4 textsize 11 resizable
- code0 {\#include "widgets/Code_Editor.h"}
- class {fld::widget::Code_Editor}
+ 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.} xywh {95 225 310 80} box DOWN_BOX labelfont 1 labelsize 11 align 4 textfont 4 textsize 11 resizable
+ code0 {\#include "widgets/Code_Editor.h"}
+ class {fld::widget::Code_Editor}
+ }
}
}
- }
- Fl_Group wp_cpp_callback {
- label {User Data:}
- callback propagate_load open
- xywh {95 310 310 20} labelfont 1 labelsize 11 align 4
- } {
- Fl_Input {} {
- callback {if (v == LOAD) {
+ Fl_Group wp_cpp_callback {
+ label {User Data:}
+ callback propagate_load open
+ xywh {95 310 310 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Input {} {
+ callback {if (v == LOAD) {
o->value(current_widget->user_data());
} else {
int mod = 0;
@@ -2456,11 +2476,11 @@ wCallback->do_callback(wCallback, v);} open
}
if (mod) Fluid.proj.set_modflag(1);
}}
- tooltip {The user data to pass into the callback code.} xywh {95 310 158 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable
- }
- Fl_Menu_Button {} {
- label When
- callback {if (v == LOAD) {
+ tooltip {The user data to pass into the callback code.} xywh {95 310 158 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable
+ }
+ Fl_Menu_Button {} {
+ label When
+ callback {if (v == LOAD) {
if (current_widget->is_a(Type::Menu_Item)) {o->deactivate(); return;} else o->activate();
int n = current_widget->o->when();
set_whenmenu(n);
@@ -2485,18 +2505,18 @@ wCallback->do_callback(wCallback, v);} open
}
if (mod) Fluid.proj.set_modflag(1);
}} open
- tooltip {When to call the callback function.} xywh {260 310 145 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 when 1 textsize 11
- code0 {extern Fl_Menu_Item whenmenu[];}
- code1 {o->menu(whenmenu);}
- } {}
- }
- Fl_Group {} {
- label {Type:}
- callback propagate_load open
- xywh {95 332 310 26} labelfont 1 labelsize 11 align 4
- } {
- Fl_Input_Choice {} {
- callback {static const char *dflt = "void*";
+ tooltip {When to call the callback function.} xywh {260 310 145 20} box THIN_UP_BOX down_box BORDER_BOX labelfont 1 labelsize 11 when 1 textsize 11
+ code0 {extern Fl_Menu_Item whenmenu[];}
+ code1 {o->menu(whenmenu);}
+ } {}
+ }
+ Fl_Group {} {
+ label {Type:}
+ callback propagate_load open
+ xywh {95 332 310 26} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Input_Choice {} {
+ callback {static const char *dflt = "void*";
if (v == LOAD) {
const char *c = current_widget->user_data_type();
if (!c) c = dflt;
@@ -2518,41 +2538,1245 @@ if (v == LOAD) {
}
if (mod) Fluid.proj.set_modflag(1);
}} open
- tooltip {The type of the user data.} xywh {95 335 158 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable
+ tooltip {The type of the user data.} xywh {95 335 158 20} labelfont 1 labelsize 11 textfont 4 textsize 11 resizable
+ } {
+ MenuItem {} {
+ label {void*}
+ xywh {0 0 31 20} labelfont 4 labelsize 11
+ }
+ MenuItem {} {
+ label long
+ xywh {0 0 31 20} labelfont 4 labelsize 11
+ }
+ }
+ Fl_Box w_when_box {
+ label FL_WHEN_NEVER
+ xywh {260 332 145 26} box FLAT_BOX selection_color 1 labelsize 8 align 209
+ }
+ }
+ }
+ Fl_Group widget_tab_grid {
+ label Grid
+ callback {o->callback((Fl_Callback*)propagate_load);} open
+ xywh {10 30 400 330} labelsize 11 hide
+ class Grid_Tab
+ } {}
+ Fl_Group widget_tab_grid_child {
+ label {Grid Child}
+ callback {o->callback((Fl_Callback*)propagate_load);} open
+ xywh {10 30 400 330} labelsize 11 hide
+ class Grid_Child_Tab
+ } {}
+ }
+ Fl_Tabs data_tabs {
+ callback {if (current_node && current_node->is_a(Type::Data))
+ propagate_load((Fl_Group *)o,v);}
+ xywh {10 10 400 350} selection_color 12 labelsize 11 labelcolor 255 hide
+ } {
+ Fl_Group data_tabs_data {
+ label {Inline Data}
+ callback propagate_load open
+ xywh {10 30 400 330} labelsize 11 resizable
+ } {
+ Fl_Group {} {
+ label {Visibility:}
+ callback propagate_load open
+ xywh {95 49 310 21} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Choice {} {
+ callback {if (!current_node || !current_node->is_a(Type::Data)) return;
+Data_Node* nd = (Data_Node*)current_node;
+
+if (v == LOAD) {
+ if (!nd->is_in_class()) {
+ o->value(nd->output_file());
+ o->show();
+ } else {
+ o->hide();
+ }
+} else {
+ if (!nd->is_in_class()) {
+ if (nd->output_file() != o->value()) {
+ nd->output_file(o->value());
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+}} open
+ xywh {95 50 210 20} down_box BORDER_BOX labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label {in source file only}
+ xywh {10 10 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {in header file only}
+ xywh {10 10 100 20} labelsize 11 hide
+ }
+ MenuItem {} {
+ label {"static" in source file}
+ xywh {10 10 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {in source and "extern" in header}
+ xywh {10 10 100 20} labelsize 11
+ }
+ }
+ Fl_Choice {} {
+ callback {if (!current_node || !current_node->is_a(Type::Data)) return;
+Data_Node* nd = (Data_Node*)current_node;
+
+if (v == LOAD) {
+ if (nd->is_in_class()) {
+ o->value(nd->visibility());
+ o->show();
+ } else {
+ o->hide();
+ }
+} else {
+ if (nd->is_in_class()) {
+ if (nd->visibility() != o->value()) {
+ nd->visibility(o->value());
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+}} open
+ xywh {95 50 75 20} down_box BORDER_BOX labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label private
+ xywh {20 20 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label public
+ xywh {20 20 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label protected
+ xywh {20 20 100 20} labelsize 11
+ }
+ }
+ Fl_Box {} {
+ xywh {363 49 42 20} resizable
+ }
+ }
+ Fl_Group {} {
+ label {Output: }
+ callback propagate_load open
+ xywh {95 75 310 20} labelfont 1 labelsize 11 align 4
} {
- MenuItem {} {
- label {void*}
- xywh {0 0 31 20} labelfont 4 labelsize 11
+ Fl_Choice {} {
+ callback {if (!current_node || !current_node->is_a(Type::Data)) return;
+Data_Node* nd = (Data_Node*)current_node;
+
+if (v == LOAD) {
+ o->value(nd->output_format());
+} else {
+ if (nd->output_format() != o->value()) {
+ nd->output_format( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+}} open
+ tooltip {text mode generates a "const char*" and a trailing NUL, compressed mode uses zlib to generate a binary block} xywh {95 75 210 20} down_box BORDER_BOX labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label {binary: unsigned char[]}
+ user_data 0 user_data_type long
+ xywh {10 10 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {text: const char*}
+ user_data 1 user_data_type long
+ xywh {10 10 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {compressed: unsigned char[]}
+ user_data 2 user_data_type long
+ xywh {10 10 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {binary: std::vector<uint8_t>}
+ user_data 3 user_data_type long
+ xywh {10 10 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {text: std::string}
+ user_data 4 user_data_type long
+ xywh {10 10 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {compressed: std::vector<uint8_t>}
+ user_data 5 user_data_type long
+ xywh {10 10 100 20} labelsize 11
+ }
}
- MenuItem {} {
- label long
- xywh {0 0 31 20} labelfont 4 labelsize 11
+ Fl_Box {} {
+ xywh {363 75 42 20} resizable
}
}
- Fl_Box w_when_box {
- label FL_WHEN_NEVER
- xywh {260 332 145 26} box FLAT_BOX selection_color 1 labelsize 8 align 209
+ Fl_Input {} {
+ label {Name:}
+ callback {if (!current_node || !current_node->is_a(Type::Data)) return;
+Data_Node* nd = (Data_Node*)current_node;
+
+if (v == LOAD) {
+ o->value( nd->name() );
+ the_panel->label("Inline Data Properties");
+} else {
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->name( o->value() );
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+}}
+ tooltip {Inline Data variables are declared "const unsigned char []" in binary mode and "const char*" in text mode.} xywh {95 100 310 20} labelfont 1 labelsize 11 align 132 textfont 4 textsize 11
+ }
+ Fl_Input wp_data_filename {
+ label {Filename:}
+ callback {if (!current_node || !current_node->is_a(Type::Data)) return;
+Data_Node* nd = (Data_Node*)current_node;
+
+if (v == LOAD) {
+ const char *fn = nd->filename();
+ o->value( fn ? fn : "" );
+} else {
+ const char *c = o->value();
+ const char *fn = nd->filename();
+ if ( ( fn && (strcmp(fn, c) != 0))
+ || (!fn && (strcmp("", c) != 0)) )
+ {
+ nd->filename(c);
+ Fluid.proj.set_modflag(1);
+ }
+}}
+ tooltip {name and path of file that will be inlined} xywh {95 125 270 20} labelfont 1 labelsize 11 align 132 textfont 4 textsize 11
+ }
+ Fl_Button {} {
+ label {@fileopen}
+ callback {if (v != LOAD) {
+ Fluid.proj.enter_project_dir();
+ const char *fn = fl_file_chooser("Load Inline Data",
+ nullptr, wp_data_filename->value(), 1);
+ Fluid.proj.leave_project_dir();
+ if (fn) {
+ if (strcmp(fn, wp_data_filename->value())) {
+ Fluid.proj.set_modflag(1);
+ wp_data_filename->value(fn);
+ wp_data_filename->do_callback();
+ }
+ }
+}}
+ xywh {365 125 40 20} labelcolor 134
+ }
+ Fl_Text_Editor {} {
+ label {Comment:}
+ callback {if (!current_node || !current_node->is_a(Type::Data)) return;
+Data_Node* nd = (Data_Node*)current_node;
+
+if (v == LOAD) {
+ const char *cmttext = nd->comment();
+ o->buffer()->text( cmttext ? cmttext : "" );
+} else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->comment();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->comment(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+}}
+ xywh {95 150 310 105} box DOWN_BOX labelfont 1 labelsize 11 align 4 textfont 4 textsize 11 resizable
+ code0 {o->buffer(new Fl_Text_Buffer());}
+ code1 {o->add_key_binding(FL_Tab, 0, use_tab_navigation);}
}
}
}
- Fl_Group widget_tab_grid {
- label Grid
- callback {o->callback((Fl_Callback*)propagate_load);} open
- xywh {10 30 400 330} labelsize 11 hide
- class Grid_Tab
- } {}
- Fl_Group widget_tab_grid_child {
- label {Grid Child}
- callback {o->callback((Fl_Callback*)propagate_load);} open
- xywh {10 30 400 330} labelsize 11 hide
- class Grid_Child_Tab
- } {}
+ Fl_Tabs comment_tabs {
+ callback {if (current_node && current_node->is_a(Type::Comment))
+ propagate_load((Fl_Group *)o,v);}
+ xywh {10 10 400 350} selection_color 12 labelsize 11 labelcolor 255 hide
+ } {
+ Fl_Group comment_tabs_comment {
+ label Comment
+ callback propagate_load open
+ xywh {10 30 400 330} labelsize 11 resizable
+ } {
+ Fl_Text_Editor comment_tabs_name {
+ label {Comment:}
+ callback {if (!current_node || !current_node->is_a(Type::Comment)) return;
+Comment_Node* nd = (Comment_Node*)current_node;
+
+if (v == LOAD) {
+ the_panel->label("Comment Properties");
+ const char *cmttext = nd->name();
+ o->buffer()->text( cmttext ? cmttext : "" );
+} else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->name(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+}}
+ xywh {95 45 310 235} box DOWN_BOX labelfont 1 labelsize 11 align 4 textfont 4 textsize 11 textcolor 58 resizable
+ code0 {o->when(FL_WHEN_ENTER_KEY_CHANGED|FL_WHEN_RELEASE);}
+ code1 {o->buffer(new Fl_Text_Buffer());}
+ }
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {95 285 310 65}
+ } {
+ Fl_Menu_Button comment_predefined_2 {
+ label Predefined
+ callback {if (!current_node || !current_node->is_a(Type::Comment)) return;
+
+static char itempath[256];
+static int last_selected_item { 0 };
+
+if (v == LOAD) {
+ int i=0, n=0, version = 0;
+ Fl_Preferences menu(Fl_Preferences::USER_L, "fltk.org", "fluid_comments_menu");
+ o->clear();
+ o->add("_Edit/Add current comment...");
+ o->add("_Edit/Remove last selection...");
+ menu.get("version", version, -1);
+ if (version < 10400) load_comments_preset(menu);
+ menu.get("n", n, 0);
+ for (i=0;i<n;i++) {
+ char *text;
+ menu.get(Fl_Preferences::Name(i), text, "");
+ o->add(text);
+ free(text);
+ }
+} else {
+ if (o->value()==1) {
+ // add the current comment to the database
+ const char *xname = fl_input(
+ "Please enter a name to reference the current\\ncomment in your database.\\n\\n"
+ "Use forward slashes '/' to create submenus.",
+ "My Comment");
+ if (xname) {
+ char *name = fl_strdup(xname);
+ for (char*s=name;*s;s++) if (*s==':') *s = ';';
+ int n;
+ Fl_Preferences db(Fl_Preferences::USER_L, "fltk.org", "fluid_comments");
+ db.set(name, comment_tabs_name->buffer()->text());
+ Fl_Preferences menu(Fl_Preferences::USER_L, "fltk.org", "fluid_comments_menu");
+ menu.get("n", n, 0);
+ menu.set(Fl_Preferences::Name(n), name);
+ menu.set("n", ++n);
+ o->add(name);
+ free(name);
+ }
+ } else if (o->value()==2) {
+ // remove the last selected comment from the database
+ if (itempath[0]==0 || last_selected_item==0) {
+ fl_message("Please select an entry from this menu first.");
+ } else if (fl_choice("Are you sure that you want to delete the entry\\n"
+ "\\"%s\\"\\nfrom the database?", "Cancel", "Delete",
+ nullptr, itempath)) {
+ Fl_Preferences db(Fl_Preferences::USER_L, "fltk.org", "fluid_comments");
+ db.deleteEntry(itempath);
+ o->remove(last_selected_item);
+ Fl_Preferences menu(Fl_Preferences::USER_L, "fltk.org", "fluid_comments_menu");
+ int i, n;
+ for (i=4, n=0; i<o->size(); i++) {
+ const Fl_Menu_Item *mi = o->menu()+i;
+ if (o->item_pathname(itempath, 255, mi)==0) {
+ if (itempath[0]=='/') memmove(itempath, itempath+1, 255);
+ if (itempath[0]) menu.set(Fl_Preferences::Name(n++), itempath);
+ }
+ }
+ menu.set("n", n);
+ }
+ } else {
+ // load the selected comment from the database
+ if (o->item_pathname(itempath, 255)==0) {
+ if (itempath[0]=='/') memmove(itempath, itempath+1, 255);
+ Fl_Preferences db(Fl_Preferences::USER_L, "fltk.org", "fluid_comments");
+ char *text;
+ db.get(itempath, text, "(no text found in data base)");
+ comment_tabs_name->buffer()->text(text);
+ comment_tabs_name->do_callback();
+ free(text);
+ last_selected_item = o->value();
+ }
+ }
+}} open
+ xywh {95 285 90 20} labelsize 11 textsize 11
+ code0 {extern void load_comments_preset(Fl_Preferences &menu);}
+ code1 {\#include <FL/fl_string_functions.h>}
+ } {}
+ Fl_Button comment_load_2 {
+ label {Import...}
+ callback {// load a comment from disk
+if (v != LOAD) {
+ fl_file_chooser_ok_label("Load");
+ const char *fname = fl_file_chooser("Pick a comment", nullptr, nullptr);
+ fl_file_chooser_ok_label(nullptr);
+ if (fname) {
+ if (comment_tabs_name->buffer()->loadfile(fname)) {
+ fl_alert("Error loading file\\n%s", fname);
+ }
+ comment_tabs_name->do_callback();
+ }
+}}
+ xywh {190 285 90 20} labelsize 11
+ }
+ Fl_Check_Button {} {
+ label {output to header file}
+ callback {if (!current_node || !current_node->is_a(Type::Comment)) return;
+Comment_Node* nd = (Comment_Node*)current_node;
+
+if (v == LOAD) {
+ o->value(nd->in_h());
+} else {
+ if (((int)nd->in_h()) != o->value()) {
+ nd->in_h( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+}}
+ tooltip {write the comment into the header (.h) file} xywh {95 310 120 20} down_box DOWN_BOX labelsize 11 when 1
+ }
+ Fl_Check_Button {} {
+ label {output to source file}
+ callback {if (!current_node || !current_node->is_a(Type::Comment)) return;
+Comment_Node* nd = (Comment_Node*)current_node;
+
+if (v == LOAD) {
+ o->value(nd->in_c());
+} else {
+ if (((int)nd->in_c()) != o->value()) {
+ nd->in_c( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+}}
+ tooltip {write the comment into the source (.cxx) file} xywh {95 330 120 20} down_box DOWN_BOX labelsize 11 when 1
+ }
+ Fl_Box {} {
+ xywh {404 285 1 65} labelsize 11 resizable
+ }
+ }
+ }
+ }
+ Fl_Tabs class_tabs {
+ callback {if (current_node && current_node->is_a(Type::Class))
+ propagate_load((Fl_Group *)o,v);}
+ xywh {10 10 400 350} selection_color 12 labelsize 11 labelcolor 255 hide
+ } {
+ Fl_Group class_tabs_main {
+ label Class
+ callback propagate_load open
+ xywh {10 30 400 330} labelsize 11 resizable
+ } {
+ Fl_Group {} {
+ label {Visibility:}
+ callback propagate_load
+ comment {This elemnt is hidden because we don't
+support a class inside a class at this point} open
+ xywh {95 50 310 21} labelfont 1 labelsize 11 align 4 hide
+ } {
+ Fl_Choice {} {
+ callback {if (!current_node || !current_node->is_a(Type::Class)) return;
+Class_Node* nd = (Class_Node*)current_node;
+
+if (v == LOAD) {
+ if (nd->is_in_class()) {
+ o->value(nd->visibility());
+ o->activate();
+ } else {
+ o->deactivate();
+ }
+} else {
+ if (nd->is_in_class()) {
+ if (nd->visibility() != o->value()) {
+ nd->visibility(o->value());
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+}} open
+ tooltip {visibility for a class inside a class} xywh {95 50 75 20} down_box BORDER_BOX labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label private
+ xywh {30 30 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label public
+ xywh {30 30 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label protected
+ xywh {30 30 100 20} labelsize 11
+ }
+ }
+ Fl_Box {} {
+ xywh {363 50 42 20} resizable
+ }
+ }
+ Fl_Input {} {
+ label {Attribute:}
+ callback {if (!current_node || !current_node->is_a(Type::Class)) return;
+Class_Node* nd = (Class_Node*)current_node;
+
+if (v == LOAD) {
+ o->value( nd->prefix() );
+} else {
+ const char *nn = nd->prefix();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->prefix( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+}}
+ tooltip {class attribute or `alignas()`} xywh {95 50 305 20} labelfont 1 labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Input {} {
+ label {Class Name:}
+ callback {if (!current_node || !current_node->is_a(Type::Class)) return;
+Class_Node* nd = (Class_Node*)current_node;
+
+if (v == LOAD) {
+ the_panel->label("Class Properties");
+ o->value( nd->name() );
+} else {
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->name( o->value() );
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+}}
+ tooltip {class name, must be a single C++ keyword} xywh {95 75 305 20} labelfont 1 labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Input {} {
+ label {Base Class:}
+ callback {if (!current_node || !current_node->is_a(Type::Class)) return;
+Class_Node* nd = (Class_Node*)current_node;
+
+if (v == LOAD) {
+ o->value( nd->base_class_name() );
+} else {
+ const char *nn = nd->base_class_name();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->base_class_name( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+}}
+ tooltip {visibility and name of base class or classes
+e.g. `public Fl_Widget`} xywh {95 100 305 20} labelfont 1 labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Text_Editor {} {
+ label {Comment:}
+ callback {if (!current_node || !current_node->is_a(Type::Class)) return;
+Class_Node* nd = (Class_Node*)current_node;
+
+if (v == LOAD) {
+ const char *cmttext = nd->comment();
+ o->buffer()->text( cmttext ? cmttext : "" );
+} else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->comment();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->comment(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+}}
+ xywh {95 125 305 110} box DOWN_BOX labelfont 1 labelsize 11 align 4 textfont 4 textsize 11 resizable
+ code0 {o->buffer(new Fl_Text_Buffer());}
+ code1 {o->add_key_binding(FL_Tab, 0, use_tab_navigation);}
+ }
+ }
+ }
+ Fl_Tabs declblock_tabs {
+ callback {if (current_node && current_node->is_a(Type::DeclBlock))
+ propagate_load((Fl_Group *)o,v);}
+ xywh {10 10 400 350} selection_color 12 labelsize 11 labelcolor 255 hide
+ } {
+ Fl_Group declblock_tabs_main {
+ label {Declaration Block}
+ callback propagate_load open
+ xywh {10 30 400 330} labelsize 11 resizable
+ } {
+ Fl_Input {} {
+ label {Start Code:}
+ callback {if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
+DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
+
+if (v == LOAD) {
+ the_panel->label("Declaration Block Properties");
+ o->value( nd->name() );
+} else {
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->name( o->value() );
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+}}
+ tooltip {`\#ifdef` or similar conditional declaration block} xywh {95 50 305 20} labelfont 1 labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Input {} {
+ label {End Code:}
+ callback {if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
+DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
+
+if (v == LOAD) {
+ o->value( nd->end_code() );
+} else {
+ const char *nn = nd->end_code();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->end_code( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+}}
+ tooltip {`\#endif` or similar declaration code block} xywh {95 75 305 20} labelfont 1 labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {95 100 305 120}
+ } {
+ Fl_Box {} {
+ label {Enclose code generated by children in source file:}
+ xywh {95 100 270 20} labelsize 11 align 20
+ }
+ Fl_Check_Button {} {
+ label implementations
+ callback {if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
+DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
+
+if (v == LOAD) {
+ int f = ((nd->write_map() & DeclBlock_Node::CODE_IN_SOURCE) != 0);
+ o->value(f);
+} else {
+ int f = ((nd->write_map() & DeclBlock_Node::CODE_IN_SOURCE) != 0);
+ if (f != o->value()) {
+ if (o->value())
+ nd->write_map( nd->write_map() | DeclBlock_Node::CODE_IN_SOURCE );
+ else
+ nd->write_map( nd->write_map() & ~DeclBlock_Node::CODE_IN_SOURCE );
+ Fluid.proj.set_modflag(1);
+ }
+}}
+ xywh {105 120 260 20} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Check_Button {} {
+ label {static initializations and callbacks}
+ callback {if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
+DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
+
+if (v == LOAD) {
+ int f = ((nd->write_map() & DeclBlock_Node::STATIC_IN_SOURCE) != 0);
+ o->value(f);
+} else {
+ int f = ((nd->write_map() & DeclBlock_Node::STATIC_IN_SOURCE) != 0);
+ if (f != o->value()) {
+ if (o->value())
+ nd->write_map( nd->write_map() | DeclBlock_Node::STATIC_IN_SOURCE );
+ else
+ nd->write_map( nd->write_map() & ~DeclBlock_Node::STATIC_IN_SOURCE );
+ Fluid.proj.set_modflag(1);
+ }
+}}
+ xywh {105 140 260 20} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Box {} {
+ label {Enclose code in header file:}
+ xywh {95 160 270 20} labelsize 11 align 20
+ }
+ Fl_Check_Button {} {
+ label {forward declarations}
+ callback {if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
+DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
+
+if (v == LOAD) {
+ int f = ((nd->write_map() & DeclBlock_Node::CODE_IN_HEADER) != 0);
+ o->value(f);
+} else {
+ int f = ((nd->write_map() & DeclBlock_Node::CODE_IN_HEADER) != 0);
+ if (f != o->value()) {
+ if (o->value())
+ nd->write_map( nd->write_map() | DeclBlock_Node::CODE_IN_HEADER );
+ else
+ nd->write_map( nd->write_map() & ~DeclBlock_Node::CODE_IN_HEADER );
+ Fluid.proj.set_modflag(1);
+ }
+}}
+ xywh {105 180 260 20} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Check_Button {} {
+ label {preprecessor and callback declarations}
+ callback {if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
+DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
+
+if (v == LOAD) {
+ int f = ((nd->write_map() & DeclBlock_Node::STATIC_IN_HEADER) != 0);
+ o->value(f);
+} else {
+ int f = ((nd->write_map() & DeclBlock_Node::STATIC_IN_HEADER) != 0);
+ if (f != o->value()) {
+ if (o->value())
+ nd->write_map( nd->write_map() | DeclBlock_Node::STATIC_IN_HEADER );
+ else
+ nd->write_map( nd->write_map() & ~DeclBlock_Node::STATIC_IN_HEADER );
+ Fluid.proj.set_modflag(1);
+ }
+}}
+ xywh {105 200 260 20} down_box DOWN_BOX labelsize 11
+ }
+ Fl_Box {} {
+ xywh {365 100 35 120} labelsize 11 hide resizable
+ }
+ }
+ Fl_Text_Editor {} {
+ label {Comment:}
+ callback {if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
+DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
+
+if (v == LOAD) {
+ const char *cmttext = nd->comment();
+ o->buffer()->text( cmttext ? cmttext : "" );
+} else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->comment();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->comment(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+}}
+ xywh {95 225 305 117} box DOWN_BOX labelfont 1 labelsize 11 align 4 textfont 4 textsize 11 resizable
+ code0 {o->buffer(new Fl_Text_Buffer());}
+ code1 {o->add_key_binding(FL_Tab, 0, use_tab_navigation);}
+ }
+ }
+ }
+ Fl_Tabs decl_tabs {
+ callback {if (current_node && current_node->is_a(Type::Decl))
+ propagate_load((Fl_Group *)o,v);}
+ xywh {10 10 400 350} selection_color 12 labelsize 11 labelcolor 255 hide
+ } {
+ Fl_Group decl_tabs_main {
+ label Declaration
+ callback propagate_load open
+ xywh {10 30 400 330} labelsize 11 resizable
+ } {
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {15 50 390 20} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Box {} {
+ xywh {404 50 1 20} hide resizable
+ }
+ Fl_Box {} {
+ label {Visibility:}
+ xywh {95 50 1 20} labelfont 1 labelsize 11 align 4
+ }
+ Fl_Choice {} {
+ callback {if (!current_node || !current_node->is_a(Type::Decl)) return;
+Decl_Node* nd = (Decl_Node*)current_node;
+
+if (v == LOAD) {
+ if (!nd->is_in_class()) {
+ o->value(nd->output_file());
+ o->show();
+ } else {
+ o->hide();
+ }
+} else {
+ if (!nd->is_in_class()) {
+ if (nd->output_file() != o->value()) {
+ nd->output_file(o->value());
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+}}
+ xywh {95 50 185 20} down_box BORDER_BOX labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label {in source file only}
+ xywh {10 10 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {in header file only}
+ xywh {10 10 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {"static" in source file}
+ xywh {10 10 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label {in source and "extern" in header}
+ xywh {10 10 100 20} labelsize 11
+ }
+ }
+ Fl_Choice {} {
+ callback {if (!current_node || !current_node->is_a(Type::Decl)) return;
+Decl_Node* nd = (Decl_Node*)current_node;
+
+if (v == LOAD) {
+ if (nd->is_in_class()) {
+ o->value(nd->visibility());
+ o->show();
+ } else {
+ o->hide();
+ }
+} else {
+ if (nd->is_in_class()) {
+ if (nd->visibility() != o->value()) {
+ nd->visibility(o->value());
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+}}
+ xywh {95 50 75 20} down_box BORDER_BOX labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label private
+ xywh {20 20 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label public
+ xywh {20 20 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label protected
+ xywh {20 20 100 20} labelsize 11
+ }
+ }
+ }
+ Fl_Tile {} {
+ callback {propagate_load(o, v);} open
+ xywh {15 75 390 210} resizable
+ code0 {o->size_range(0, 25, 55);}
+ code1 {o->size_range(1, 25, 55);}
+ } {
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {15 75 390 105} box FLAT_BOX labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Text_Editor {} {
+ label {Declaration:}
+ callback {if (!current_node || !current_node->is_a(Type::Decl)) return;
+Decl_Node* nd = (Decl_Node*)current_node;
+
+if (v == LOAD) {
+ the_panel->label("Declaration Properties");
+ const char *cmttext = nd->name();
+ o->buffer()->text( cmttext ? cmttext : "" );
+} else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->name(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+}}
+ tooltip {a declaration: `int x;`, an external symbol: `extern int foo();`,
+a `\#` directive: `\#include <foo.h>`, a typedef `typedef char byte;`,
+ or a `using` statement, etc.} xywh {95 75 310 100} labelfont 1 labelsize 11 align 132 textsize 11 resizable
+ code0 {\#include "widgets/Code_Editor.h"}
+ code1 {o->add_key_binding(FL_Tab, 0, use_tab_navigation);}
+ class {fld::widget::Code_Editor}
+ }
+ }
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {15 180 390 105} box FLAT_BOX
+ } {
+ Fl_Text_Editor {} {
+ label {Comment:}
+ callback {if (!current_node || !current_node->is_a(Type::Decl)) return;
+Decl_Node* nd = (Decl_Node*)current_node;
+
+if (v == LOAD) {
+ const char *cmttext = nd->comment();
+ o->buffer()->text( cmttext ? cmttext : "" );
+} else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->comment();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->comment(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+}}
+ xywh {95 185 310 100} box DOWN_BOX labelfont 1 labelsize 11 align 4 textfont 4 textsize 11 resizable
+ code0 {o->buffer(new Fl_Text_Buffer());}
+ code1 {o->add_key_binding(FL_Tab, 0, use_tab_navigation);}
+ }
+ }
+ }
+ }
+ }
+ Fl_Tabs codeblock_tabs {
+ callback {if (current_node && current_node->is_a(Type::CodeBlock))
+ propagate_load((Fl_Group *)o,v);}
+ xywh {10 10 400 350} selection_color 12 labelsize 11 labelcolor 255 hide
+ } {
+ Fl_Group codeblock_tabs_main {
+ label {Code Block}
+ callback propagate_load open
+ xywh {10 30 400 330} labelsize 11 resizable
+ } {
+ Fl_Input {} {
+ label {Start Code:}
+ callback {if (!current_node || !current_node->is_a(Type::CodeBlock)) return;
+CodeBlock_Node* nd = (CodeBlock_Node*)current_node;
+
+if (v == LOAD) {
+ o->value( nd->name() );
+ the_panel->label("Code Block Properties");
+} else {
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->name( o->value() );
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+}}
+ tooltip {condition statement: `if (x==1)`, or empty} xywh {95 50 305 20} labelfont 1 labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Input {} {
+ label {End Code:}
+ callback {if (!current_node || !current_node->is_a(Type::CodeBlock)) return;
+CodeBlock_Node* nd = (CodeBlock_Node*)current_node;
+
+if (v == LOAD) {
+ o->value( nd->end_code() );
+} else {
+ const char *nn = nd->end_code();
+ if ( ( nn && (strcmp(nn, o->value()) != 0))
+ || (!nn && (strcmp("", o->value()) != 0)) )
+ {
+ nd->end_code( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+}}
+ tooltip {condition end: `while (x==1);`, or empty} xywh {95 75 305 20} labelfont 1 labelsize 11 textfont 4 textsize 11
+ }
+ Fl_Text_Editor {} {
+ label {Comment:}
+ callback {if (!current_node || !current_node->is_a(Type::CodeBlock)) return;
+CodeBlock_Node* nd = (CodeBlock_Node*)current_node;
+
+if (v == LOAD) {
+ const char *cmttext = nd->comment();
+ o->buffer()->text( cmttext ? cmttext : "" );
+} else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->comment();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->comment(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+}}
+ tooltip {code block comment} xywh {95 100 305 117} box DOWN_BOX labelfont 1 labelsize 11 align 4 textfont 4 textsize 11 resizable
+ code0 {o->buffer(new Fl_Text_Buffer());}
+ code1 {o->add_key_binding(FL_Tab, 0, use_tab_navigation);}
+ }
+ }
+ }
+ Fl_Tabs code_tabs {
+ callback {if (current_node && current_node->is_a(Type::Code))
+ propagate_load((Fl_Group *)o,v);}
+ xywh {10 10 400 350} selection_color 12 labelsize 11 labelcolor 255 hide
+ } {
+ Fl_Group code_tabs_main {
+ label Code
+ callback propagate_load open
+ xywh {10 30 400 330} labelsize 11 resizable
+ } {
+ Fl_Text_Editor {} {
+ callback {if (!current_node || !current_node->is_a(Type::Code)) return;
+Code_Node* nd = (Code_Node*)current_node;
+
+if (v == LOAD) {
+ the_panel->label("Code Editor");
+ const char *cmttext = nd->name();
+ o->buffer()->text( cmttext ? cmttext : "" );
+ o->insert_position(nd->cursor_position_);
+ o->scroll(nd->code_input_scroll_row, nd->code_input_scroll_col);
+} else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->name(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ nd->cursor_position_ = o->insert_position();
+ nd->code_input_scroll_row = o->scroll_row();
+ nd->code_input_scroll_col = o->scroll_col();
+ free(c);
+}}
+ xywh {15 40 390 315} box DOWN_BOX labelsize 11 when 15 textfont 4 textsize 11 resizable
+ code1 {\#include "widgets/Code_Editor.h"}
+ code2 {o->linenumber_width(60);
+o->linenumber_size(o->Fl_Text_Display::textsize());}
+ class {fld::widget::Code_Editor}
+ }
+ }
+ }
+ Fl_Tabs func_tabs {
+ callback {if (current_node && current_node->is_a(Type::Function))
+ propagate_load((Fl_Group *)o,v);}
+ xywh {10 10 400 350} selection_color 12 labelsize 11 labelcolor 255 hide resizable
+ } {
+ Fl_Group func_tabs_main {
+ label Function
+ callback propagate_load open
+ xywh {10 30 400 330} labelsize 11 resizable
+ } {
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {15 50 390 45} labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Box {} {
+ xywh {404 50 1 20} hide resizable
+ }
+ Fl_Box {} {
+ label {Visibility:}
+ xywh {95 50 1 20} labelfont 1 labelsize 11 align 4
+ }
+ Fl_Choice {} {
+ callback {if (!current_node || !current_node->is_a(Type::Function)) return;
+Function_Node* nd = (Function_Node*)current_node;
+
+if (v == LOAD) {
+ if (!nd->is_in_class()) {
+ o->value(nd->visibility());
+ o->show();
+ } else {
+ o->hide();
+ }
+} else {
+ if (!nd->is_in_class()) {
+ if (nd->visibility() != o->value()) {
+ nd->visibility(o->value());
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
}
- Fl_Tabs widget_tabs_repo {
+ }
+}} open
+ xywh {95 50 80 20} down_box BORDER_BOX labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label static
+ xywh {10 10 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label global
+ xywh {10 10 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label local
+ xywh {10 10 100 20} labelsize 11
+ }
+ }
+ Fl_Choice {} {
+ callback {if (!current_node || !current_node->is_a(Type::Function)) return;
+Function_Node* nd = (Function_Node*)current_node;
+
+if (v == LOAD) {
+ if (nd->is_in_class()) {
+ o->value(nd->visibility());
+ o->show();
+ } else {
+ o->hide();
+ }
+} else {
+ if (nd->is_in_class()) {
+ if (nd->visibility() != o->value()) {
+ nd->visibility(o->value());
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ }
+}} open
+ xywh {95 50 75 20} down_box BORDER_BOX labelsize 11 textsize 11
+ } {
+ MenuItem {} {
+ label private
+ xywh {20 20 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label public
+ xywh {20 20 100 20} labelsize 11
+ }
+ MenuItem {} {
+ label protected
+ xywh {20 20 100 20} labelsize 11
+ }
+ }
+ Fl_Check_Button {} {
+ label {declare "C"}
+ callback {if (!current_node || !current_node->is_a(Type::Function)) return;
+Function_Node* nd = (Function_Node*)current_node;
+
+if (v == LOAD) {
+ o->value(nd->declare_c());
+} else {
+ if (nd->declare_c() != o->value()) {
+ nd->declare_c( o->value() );
+ Fluid.proj.set_modflag(1);
+ }
+}}
+ xywh {95 75 90 20} down_box DOWN_BOX labelsize 11
+ }
+ }
+ Fl_Tile {} {
+ callback {propagate_load(o, v);} open
+ xywh {15 100 390 220} resizable
+ code0 {o->size_range(0, 25, 50);}
+ code1 {o->size_range(1, 25, 50);}
+ code2 {o->size_range(2, 25, 50);}
+ } {
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {15 100 390 55} box FLAT_BOX labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Text_Editor {} {
+ label {Function
+Name and
+Args:}
+ callback {if (!current_node || !current_node->is_a(Type::Function)) return;
+Function_Node* nd = (Function_Node*)current_node;
+
+if (v == LOAD) {
+ the_panel->label("Function Properties");
+ const char *cmttext = nd->name();
+ o->buffer()->text( cmttext ? cmttext : "" );
+} else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->name();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->name(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+}}
+ tooltip {function name and args, or blank for `main(..)`} xywh {95 100 310 50} labelfont 1 labelsize 11 align 132 textsize 11 resizable
+ code0 {\#include "widgets/Code_Editor.h"}
+ code1 {o->add_key_binding(FL_Tab, 0, use_tab_navigation);}
+ class {fld::widget::Code_Editor}
+ }
+ }
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {15 155 390 60} box FLAT_BOX labelfont 1 labelsize 11 align 4
+ } {
+ Fl_Text_Editor {} {
+ label {Return Type:}
+ callback {if (!current_node || !current_node->is_a(Type::Function)) return;
+Function_Node* nd = (Function_Node*)current_node;
+
+if (v == LOAD) {
+ const char *cmttext = nd->return_type();
+ o->buffer()->text( cmttext ? cmttext : "" );
+} else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->return_type();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->return_type(c);
+ Fluid.proj.set_modflag(1);
+ }
+ free(c);
+}}
+ tooltip {return type, or blank to return outermost widget} xywh {95 160 310 50} labelfont 1 labelsize 11 align 132 textsize 11 resizable
+ code0 {\#include "widgets/Code_Editor.h"}
+ code1 {o->add_key_binding(FL_Tab, 0, use_tab_navigation);}
+ class {fld::widget::Code_Editor}
+ }
+ }
+ Fl_Group {} {
+ callback propagate_load open
+ xywh {15 215 390 105} box FLAT_BOX
+ } {
+ Fl_Text_Editor {} {
+ label {Comment:}
+ callback {if (!current_node || !current_node->is_a(Type::Function)) return;
+Function_Node* nd = (Function_Node*)current_node;
+
+if (v == LOAD) {
+ const char *cmttext = nd->comment();
+ o->buffer()->text( cmttext ? cmttext : "" );
+} else {
+ char *c = o->buffer()->text();
+ const char *nn = nd->comment();
+ if ( ( nn && (strcmp(nn, c) != 0))
+ || (!nn && (strcmp("", c) != 0)) )
+ {
+ nd->comment(c);
+ Fluid.proj.set_modflag(1);
+ redraw_browser();
+ }
+ free(c);
+}}
+ xywh {95 220 310 100} box DOWN_BOX labelfont 1 labelsize 11 align 4 textfont 4 textsize 11 resizable
+ code0 {o->buffer(new Fl_Text_Buffer());}
+ code1 {o->add_key_binding(FL_Tab, 0, use_tab_navigation);}
+ }
+ }
+ }
+ }
+ }
+ }
+ Fl_Tabs widget_tabs_repo {open
xywh {10 10 400 350} hide
code0 {o->hide();}
} {
- Fl_Group {} {open
+ Fl_Group {} {
xywh {10 30 400 330} resizable
} {}
}
diff --git a/fluid/panels/widget_panel.h b/fluid/panels/widget_panel.h
index 80ccd4171..98d1066b7 100644
--- a/fluid/panels/widget_panel.h
+++ b/fluid/panels/widget_panel.h
@@ -43,6 +43,8 @@ extern Fl_Button *image_panel_close;
Fl_Double_Window* make_image_panel();
void run_image_panel();
void flex_margin_cb(Fl_Value_Input* i, void* v, void (*load_margin)(Fl_Flex*,Fl_Value_Input*), int (*update_margin)(Fl_Flex*,int));
+#include <FL/Fl_Wizard.H>
+extern Fl_Wizard *tabs_wizard;
#include <FL/Fl_Tabs.H>
extern Fl_Tabs *widget_tabs;
extern Fl_Group *wp_gui_tab;
@@ -105,6 +107,28 @@ extern Fl_Menu_Item whenmenu[];
extern Fl_Box *w_when_box;
extern Grid_Tab *widget_tab_grid;
extern Grid_Child_Tab *widget_tab_grid_child;
+extern Fl_Tabs *data_tabs;
+extern Fl_Group *data_tabs_data;
+extern Fl_Input *wp_data_filename;
+extern Fl_Tabs *comment_tabs;
+extern Fl_Group *comment_tabs_comment;
+extern Fl_Text_Editor *comment_tabs_name;
+extern void load_comments_preset(Fl_Preferences &menu);
+#include <FL/fl_string_functions.h>
+extern Fl_Menu_Button *comment_predefined_2;
+extern Fl_Button *comment_load_2;
+extern Fl_Tabs *class_tabs;
+extern Fl_Group *class_tabs_main;
+extern Fl_Tabs *declblock_tabs;
+extern Fl_Group *declblock_tabs_main;
+extern Fl_Tabs *decl_tabs;
+extern Fl_Group *decl_tabs_main;
+extern Fl_Tabs *codeblock_tabs;
+extern Fl_Group *codeblock_tabs_main;
+extern Fl_Tabs *code_tabs;
+extern Fl_Group *code_tabs_main;
+extern Fl_Tabs *func_tabs;
+extern Fl_Group *func_tabs_main;
extern Fl_Tabs *widget_tabs_repo;
extern void live_mode_cb(Fl_Button*, void*);
extern Fl_Button *wLiveMode;
@@ -119,4 +143,12 @@ extern Fl_Menu_Item menu_Children[];
extern Fl_Menu_Item menu_2[];
extern Fl_Menu_Item menu_3[];
extern Fl_Menu_Item menu_4[];
+extern Fl_Menu_Item menu_5[];
+extern Fl_Menu_Item menu_6[];
+extern Fl_Menu_Item menu_7[];
+extern Fl_Menu_Item menu_8[];
+extern Fl_Menu_Item menu_9[];
+extern Fl_Menu_Item menu_a[];
+extern Fl_Menu_Item menu_b[];
+extern Fl_Menu_Item menu_c[];
#endif
diff --git a/fluid/panels/widget_panel/Grid_Child_Tab.fl b/fluid/panels/widget_panel/Grid_Child_Tab.fl
index 161eab696..0fa9ffef9 100644
--- a/fluid/panels/widget_panel/Grid_Child_Tab.fl
+++ b/fluid/panels/widget_panel/Grid_Child_Tab.fl
@@ -2,6 +2,7 @@
version 1.0500
header_name {.h}
code_name {.cxx}
+include_guard {}
decl {\#include "widgets/Formula_Input.h"} {public global
}
diff --git a/fluid/panels/widget_panel/Grid_Tab.fl b/fluid/panels/widget_panel/Grid_Tab.fl
index e37610ca5..422ddf789 100644
--- a/fluid/panels/widget_panel/Grid_Tab.fl
+++ b/fluid/panels/widget_panel/Grid_Tab.fl
@@ -2,6 +2,7 @@
version 1.0500
header_name {.h}
code_name {.cxx}
+include_guard {}
decl {\#include "widgets/Formula_Input.h"} {public global
}
diff --git a/fluid/tools/autodoc.cxx b/fluid/tools/autodoc.cxx
index ee9f289b0..4c1dc5bff 100644
--- a/fluid/tools/autodoc.cxx
+++ b/fluid/tools/autodoc.cxx
@@ -23,6 +23,7 @@
#include "nodes/factory.h"
#include "nodes/Widget_Node.h"
#include "nodes/Window_Node.h"
+#include "nodes/Function_Node.h"
#include "panels/widget_panel.h"
#include "panels/function_panel.h"
#include "panels/settings_panel.h"
@@ -401,6 +402,17 @@ void run_autodoc(const std::string &target_dir) {
select_only(t_grp);
Node *t_grd = add_new_widget_from_user("Fl_Grid", Strategy::AS_LAST_CHILD, false);
Node *t_grdc = add_new_widget_from_user("Fl_Button", Strategy::AS_LAST_CHILD, false);
+ Node *t_data = add_new_widget_from_user("Data", Strategy::AS_LAST_CHILD, false);
+ Node *t_comment = add_new_widget_from_user("Comment", Strategy::AS_LAST_CHILD, false);
+ t_comment->name("All work and no play make Jack a dull boy.");
+ Node *t_class = add_new_widget_from_user("Class", Strategy::AS_LAST_CHILD, false);
+ Node *t_decl = add_new_widget_from_user("Decl", Strategy::AS_LAST_CHILD, false);
+ t_decl->name("const char *damage = \"'tis but a scratch\";");
+ Node *t_func = add_new_widget_from_user("Function", Strategy::AS_LAST_CHILD, false);
+ Node *t_code = add_new_widget_from_user("Code", Strategy::AS_LAST_CHILD, false);
+ t_code->name("// increment user count\nif (new_user) {\n user_count++;\n}\n");
+ Node *t_codeblock = add_new_widget_from_user("CodeBlock", Strategy::AFTER_CURRENT, false);
+ Node *t_declblock = add_new_widget_from_user("DeclBlock", Strategy::AS_LAST_CHILD, false);
widget_browser->rebuild();
Fluid.proj.update_settings_dialog();
@@ -487,64 +499,39 @@ void run_autodoc(const std::string &target_dir) {
// ---- dialog types
// list and show all non-widget types and their respective dialog boxes
+ // Make sure we have a widget panel
+ t_win->open();
+ t_win->open();
+
// -- Type::Function
- Fl_Window *adoc_function_panel = make_function_panel();
- f_name_input->value("count_trees(const char *forest_name)");
- f_return_type_input->value("unsigned int");
- fl_snapshot((target_dir + "function_panel.png").c_str(), adoc_function_panel, win_margin, win_blend);
- adoc_function_panel->hide();
+ select_only(t_func);
+ fl_snapshot((target_dir + "function_panel.png").c_str(), func_tabs_main, tab_margin, row_blend);
// -- Type::Code
- Fl_Window *adoc_code_panel = make_code_panel();
- code_input->buffer()->text("// increment user count\nif (new_user) {\n user_count++;\n}\n");
- fl_snapshot((target_dir + "code_panel.png").c_str(), adoc_code_panel, win_margin, win_blend);
- adoc_code_panel->hide();
+ select_only(t_code);
+ fl_snapshot((target_dir + "code_panel.png").c_str(), code_tabs_main, tab_margin, row_blend);
// -- Type::CodeBlock
- Fl_Window *adoc_codeblock_panel = make_codeblock_panel();
- code_before_input->value("if (test())");
- code_after_input->value("// test widgets added...");
- fl_snapshot((target_dir + "codeblock_panel.png").c_str(), adoc_codeblock_panel, win_margin, win_blend);
- adoc_codeblock_panel->hide();
+ select_only(t_codeblock);
+ fl_snapshot((target_dir + "codeblock_panel.png").c_str(), declblock_tabs_main, tab_margin, row_blend);
// -- Type::Decl
- Fl_Window *adoc_decl_panel = make_decl_panel();
- decl_class_choice->hide();
- decl_input->buffer()->text("const char *damage = \"'tis but a scratch\";");
- fl_snapshot((target_dir + "decl_panel.png").c_str(), adoc_decl_panel, win_margin, win_blend);
- adoc_decl_panel->hide();
+ select_only(t_decl);
+ fl_snapshot((target_dir + "decl_panel.png").c_str(), decl_tabs_main, tab_margin, row_blend);
// -- Type::DeclBlock
- Fl_Window *adoc_declblock_panel = make_declblock_panel();
- declblock_before_input->value("#ifdef NDEBUG");
- declblock_after_input->value("#endif // NDEBUG");
- fl_snapshot((target_dir + "declblock_panel.png").c_str(), adoc_declblock_panel, win_margin, win_blend);
- adoc_declblock_panel->hide();
+ select_only(t_declblock);
+ fl_snapshot((target_dir + "declblock_panel.png").c_str(), declblock_tabs_main, tab_margin, row_blend);
// -- Type::Class
- Fl_Window *adoc_class_panel = make_class_panel();
- decl_class_choice->hide();
- c_name_input->value("Zoo_Giraffe");
- c_subclass_input->value("Zoo_Animal");
- fl_snapshot((target_dir + "class_panel.png").c_str(), adoc_class_panel, win_margin, win_blend);
- adoc_class_panel->hide();
+ select_only(t_class);
+ fl_snapshot((target_dir + "class_panel.png").c_str(), class_tabs_main, tab_margin, row_blend);
// -- Type::Widget_Class is handled like Window_Node
// -- Type::Comment
- Fl_Window *adoc_comment_panel = make_comment_panel();
- comment_input->buffer()->text("Make sure that the giraffe gets enough hay,\nbut the monkey can't reach it.");
- fl_snapshot((target_dir + "comment_panel.png").c_str(), adoc_comment_panel, win_margin, win_blend);
- adoc_comment_panel->hide();
-
- // -- Type::Data
- Fl_Window *adoc_data_panel = make_data_panel();
- data_class_choice->hide();
- data_input->value("emulated_ROM");
- data_filename->value("./ROM.bin");
- fl_snapshot((target_dir + "data_panel.png").c_str(), adoc_data_panel, win_margin, win_blend);
- adoc_data_panel->hide();
-
+ select_only(t_comment);
+ fl_snapshot((target_dir + "comment_panel.png").c_str(), comment_tabs_comment, tab_margin, row_blend);
// ---- widget dialog
t_win->open(); // open the window
@@ -608,6 +595,11 @@ void run_autodoc(const std::string &target_dir) {
select_only(t_grdc);
widget_tabs->value(widget_tab_grid_child);
fl_snapshot((target_dir + "wp_gridc_tab.png").c_str(), widget_tab_grid_child, tab_margin, row_blend);
+
+ // -- Type::Data
+ select_only(t_data);
+ fl_snapshot((target_dir + "data_panel.png").c_str(), data_tabs_data, tab_margin, row_blend);
+
}