mirror of
https://github.com/fltk/fltk.git
synced 2026-05-29 04:26:27 +08:00
Fluid: Rebuilding most of the widget directory.
One file per logical unit. Namespaces. Non-static data member initializers to never get an uninitialized field again.
This commit is contained in:
+12
-6
@@ -50,9 +50,12 @@ set(CPPFILES
|
|||||||
rsrcs/pixmaps.cxx
|
rsrcs/pixmaps.cxx
|
||||||
tools/autodoc.cxx
|
tools/autodoc.cxx
|
||||||
tools/fluid_filename.cxx
|
tools/fluid_filename.cxx
|
||||||
widgets/CodeEditor.cxx
|
widgets/Code_Editor.cxx
|
||||||
widgets/custom_widgets.cxx
|
widgets/Code_Viewer.cxx
|
||||||
widgets/StyleParse.cxx
|
widgets/Text_Viewer.cxx
|
||||||
|
widgets/Formula_Input.cxx
|
||||||
|
widgets/Bin_Button.cxx
|
||||||
|
widgets/Style_Parser.cxx
|
||||||
widgets/widget_browser.cxx
|
widgets/widget_browser.cxx
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -87,9 +90,12 @@ set(HEADERFILES
|
|||||||
rsrcs/pixmaps.h
|
rsrcs/pixmaps.h
|
||||||
tools/autodoc.h
|
tools/autodoc.h
|
||||||
tools/fluid_filename.h
|
tools/fluid_filename.h
|
||||||
widgets/CodeEditor.h
|
widgets/Code_Editor.h
|
||||||
widgets/custom_widgets.h
|
widgets/Code_Viewer.h
|
||||||
widgets/StyleParse.h
|
widgets/Text_Viewer.h
|
||||||
|
widgets/Formula_Input.h
|
||||||
|
widgets/Bin_Button.h
|
||||||
|
widgets/Style_Parser.h
|
||||||
widgets/widget_browser.h
|
widgets/widget_browser.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
#include "io/file.h"
|
#include "io/file.h"
|
||||||
#include "io/code.h"
|
#include "io/code.h"
|
||||||
#include "widgets/widget_browser.h"
|
#include "widgets/widget_browser.h"
|
||||||
#include "widgets/custom_widgets.h"
|
#include "widgets/Formula_Input.h"
|
||||||
|
|
||||||
#include <FL/Fl_Grid.H>
|
#include <FL/Fl_Grid.H>
|
||||||
#include <FL/Fl_Value_Input.H>
|
#include <FL/Fl_Value_Input.H>
|
||||||
@@ -777,11 +777,11 @@ void Fl_Grid_Type::layout_widget() {
|
|||||||
// TODO: ways to resize rows and columns, add and delete them in the project window, pulldown menu?
|
// TODO: ways to resize rows and columns, add and delete them in the project window, pulldown menu?
|
||||||
// TODO: alignment can be FL_GRID_LEFT|FL_GRID_VERTICAL?
|
// TODO: alignment can be FL_GRID_LEFT|FL_GRID_VERTICAL?
|
||||||
|
|
||||||
extern Fluid_Coord_Input *widget_grid_row_input, *widget_grid_col_input,
|
extern fld::widget::Formula_Input *widget_grid_row_input, *widget_grid_col_input,
|
||||||
*widget_grid_rowspan_input, *widget_grid_colspan_input;
|
*widget_grid_rowspan_input, *widget_grid_colspan_input;
|
||||||
extern Fl_Group *widget_tab_grid_child;
|
extern Fl_Group *widget_tab_grid_child;
|
||||||
|
|
||||||
void grid_child_cb(Fluid_Coord_Input* i, void* v, int what) {
|
void grid_child_cb(fld::widget::Formula_Input* i, void* v, int what) {
|
||||||
if ( !current_widget
|
if ( !current_widget
|
||||||
|| !current_widget->parent
|
|| !current_widget->parent
|
||||||
|| !current_widget->parent->is_a(ID_Grid))
|
|| !current_widget->parent->is_a(ID_Grid))
|
||||||
@@ -850,7 +850,7 @@ void grid_child_cb(Fluid_Coord_Input* i, void* v, int what) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void grid_set_row_cb(Fluid_Coord_Input* i, void* v) {
|
void grid_set_row_cb(fld::widget::Formula_Input* i, void* v) {
|
||||||
grid_child_cb(i, v, 8);
|
grid_child_cb(i, v, 8);
|
||||||
if (v!=LOAD) widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
if (v!=LOAD) widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
||||||
}
|
}
|
||||||
@@ -866,7 +866,7 @@ void grid_inc_row_cb(Fl_Button* i, void* v) {
|
|||||||
widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void grid_set_col_cb(Fluid_Coord_Input* i, void* v) {
|
void grid_set_col_cb(fld::widget::Formula_Input* i, void* v) {
|
||||||
grid_child_cb(i, v, 9);
|
grid_child_cb(i, v, 9);
|
||||||
if (v!=LOAD) widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
if (v!=LOAD) widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
||||||
}
|
}
|
||||||
@@ -882,7 +882,7 @@ void grid_inc_col_cb(Fl_Button* i, void* v) {
|
|||||||
widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void grid_set_rowspan_cb(Fluid_Coord_Input* i, void* v) {
|
void grid_set_rowspan_cb(fld::widget::Formula_Input* i, void* v) {
|
||||||
grid_child_cb(i, v, 10);
|
grid_child_cb(i, v, 10);
|
||||||
if (v!=LOAD) widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
if (v!=LOAD) widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
||||||
}
|
}
|
||||||
@@ -898,7 +898,7 @@ void grid_inc_rowspan_cb(Fl_Button* i, void* v) {
|
|||||||
widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void grid_set_colspan_cb(Fluid_Coord_Input* i, void* v) {
|
void grid_set_colspan_cb(fld::widget::Formula_Input* i, void* v) {
|
||||||
grid_child_cb(i, v, 11);
|
grid_child_cb(i, v, 11);
|
||||||
if (v!=LOAD) widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
if (v!=LOAD) widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
||||||
}
|
}
|
||||||
@@ -914,10 +914,10 @@ void grid_inc_colspan_cb(Fl_Button* i, void* v) {
|
|||||||
widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
widget_tab_grid_child->do_callback(widget_tab_grid_child, LOAD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void grid_set_min_wdt_cb(Fluid_Coord_Input* i, void* v) {
|
void grid_set_min_wdt_cb(fld::widget::Formula_Input* i, void* v) {
|
||||||
grid_child_cb(i, v, 12);
|
grid_child_cb(i, v, 12);
|
||||||
}
|
}
|
||||||
void grid_set_min_hgt_cb(Fluid_Coord_Input* i, void* v) {
|
void grid_set_min_hgt_cb(fld::widget::Formula_Input* i, void* v) {
|
||||||
grid_child_cb(i, v, 13);
|
grid_child_cb(i, v, 13);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
#include "io/file.h"
|
#include "io/file.h"
|
||||||
#include "io/code.h"
|
#include "io/code.h"
|
||||||
#include "nodes/Fl_Window_Type.h"
|
#include "nodes/Fl_Window_Type.h"
|
||||||
#include "widgets/custom_widgets.h"
|
#include "widgets/Formula_Input.h"
|
||||||
#include "widgets/widget_browser.h"
|
#include "widgets/widget_browser.h"
|
||||||
|
|
||||||
#include <FL/Fl.H>
|
#include <FL/Fl.H>
|
||||||
|
|||||||
@@ -627,92 +627,92 @@ void tooltip_cb(Fl_Input* i, void *v) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Fluid_Coord_Input *x_input, *y_input, *w_input, *h_input;
|
fld::widget::Formula_Input *x_input, *y_input, *w_input, *h_input;
|
||||||
|
|
||||||
static int widget_i = 0;
|
static int widget_i = 0;
|
||||||
|
|
||||||
static int vars_i_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_i_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
return widget_i;
|
return widget_i;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_x_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_x_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
Fl_Type *t = (Fl_Type*)v;
|
Fl_Type *t = (Fl_Type*)v;
|
||||||
if (t->is_widget())
|
if (t->is_widget())
|
||||||
return ((Fl_Widget_Type*)t)->o->x();
|
return ((Fl_Widget_Type*)t)->o->x();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_y_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_y_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
Fl_Type *t = (Fl_Type*)v;
|
Fl_Type *t = (Fl_Type*)v;
|
||||||
if (t->is_widget())
|
if (t->is_widget())
|
||||||
return ((Fl_Widget_Type*)t)->o->y();
|
return ((Fl_Widget_Type*)t)->o->y();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_w_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_w_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
Fl_Type *t = (Fl_Type*)v;
|
Fl_Type *t = (Fl_Type*)v;
|
||||||
if (t->is_widget())
|
if (t->is_widget())
|
||||||
return ((Fl_Widget_Type*)t)->o->w();
|
return ((Fl_Widget_Type*)t)->o->w();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_h_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_h_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
Fl_Type *t = (Fl_Type*)v;
|
Fl_Type *t = (Fl_Type*)v;
|
||||||
if (t->is_widget())
|
if (t->is_widget())
|
||||||
return ((Fl_Widget_Type*)t)->o->h();
|
return ((Fl_Widget_Type*)t)->o->h();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_px_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_px_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
Fl_Type *t = ((Fl_Type*)v)->parent;
|
Fl_Type *t = ((Fl_Type*)v)->parent;
|
||||||
if (t && t->is_widget())
|
if (t && t->is_widget())
|
||||||
return ((Fl_Widget_Type*)t)->o->x();
|
return ((Fl_Widget_Type*)t)->o->x();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_py_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_py_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
Fl_Type *t = ((Fl_Type*)v)->parent;
|
Fl_Type *t = ((Fl_Type*)v)->parent;
|
||||||
if (t && t->is_widget())
|
if (t && t->is_widget())
|
||||||
return ((Fl_Widget_Type*)t)->o->y();
|
return ((Fl_Widget_Type*)t)->o->y();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_pw_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_pw_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
Fl_Type *t = ((Fl_Type*)v)->parent;
|
Fl_Type *t = ((Fl_Type*)v)->parent;
|
||||||
if (t && t->is_widget())
|
if (t && t->is_widget())
|
||||||
return ((Fl_Widget_Type*)t)->o->w();
|
return ((Fl_Widget_Type*)t)->o->w();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_ph_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_ph_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
Fl_Type *t = ((Fl_Type*)v)->parent;
|
Fl_Type *t = ((Fl_Type*)v)->parent;
|
||||||
if (t && t->is_widget())
|
if (t && t->is_widget())
|
||||||
return ((Fl_Widget_Type*)t)->o->h();
|
return ((Fl_Widget_Type*)t)->o->h();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_sx_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_sx_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
Fl_Type *t = ((Fl_Type*)v)->prev_sibling();
|
Fl_Type *t = ((Fl_Type*)v)->prev_sibling();
|
||||||
if (t && t->is_widget())
|
if (t && t->is_widget())
|
||||||
return ((Fl_Widget_Type*)t)->o->x();
|
return ((Fl_Widget_Type*)t)->o->x();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_sy_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_sy_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
Fl_Type *t = ((Fl_Type*)v)->prev_sibling();
|
Fl_Type *t = ((Fl_Type*)v)->prev_sibling();
|
||||||
if (t && t->is_widget())
|
if (t && t->is_widget())
|
||||||
return ((Fl_Widget_Type*)t)->o->y();
|
return ((Fl_Widget_Type*)t)->o->y();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_sw_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_sw_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
Fl_Type *t = ((Fl_Type*)v)->prev_sibling();
|
Fl_Type *t = ((Fl_Type*)v)->prev_sibling();
|
||||||
if (t && t->is_widget())
|
if (t && t->is_widget())
|
||||||
return ((Fl_Widget_Type*)t)->o->w();
|
return ((Fl_Widget_Type*)t)->o->w();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_sh_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_sh_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
Fl_Type *t = ((Fl_Type*)v)->prev_sibling();
|
Fl_Type *t = ((Fl_Type*)v)->prev_sibling();
|
||||||
if (t && t->is_widget())
|
if (t && t->is_widget())
|
||||||
return ((Fl_Widget_Type*)t)->o->h();
|
return ((Fl_Widget_Type*)t)->o->h();
|
||||||
@@ -743,27 +743,27 @@ static void calculate_bbox(Fl_Type *p) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_cx_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_cx_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
calculate_bbox((Fl_Type*)v);
|
calculate_bbox((Fl_Type*)v);
|
||||||
return bbox_x;
|
return bbox_x;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_cy_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_cy_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
calculate_bbox((Fl_Type*)v);
|
calculate_bbox((Fl_Type*)v);
|
||||||
return bbox_y;
|
return bbox_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_cw_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_cw_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
calculate_bbox((Fl_Type*)v);
|
calculate_bbox((Fl_Type*)v);
|
||||||
return bbox_r - bbox_x;
|
return bbox_r - bbox_x;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vars_ch_cb(const Fluid_Coord_Input*, void *v) {
|
static int vars_ch_cb(const fld::widget::Formula_Input*, void *v) {
|
||||||
calculate_bbox((Fl_Type*)v);
|
calculate_bbox((Fl_Type*)v);
|
||||||
return bbox_b - bbox_y;
|
return bbox_b - bbox_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
Fluid_Coord_Input_Vars widget_vars[] = {
|
fld::widget::Formula_Input_Vars widget_vars[] = {
|
||||||
{ "i", vars_i_cb }, // zero based counter of selected widgets
|
{ "i", vars_i_cb }, // zero based counter of selected widgets
|
||||||
{ "x", vars_x_cb }, // position and size of current widget
|
{ "x", vars_x_cb }, // position and size of current widget
|
||||||
{ "y", vars_y_cb },
|
{ "y", vars_y_cb },
|
||||||
@@ -784,7 +784,7 @@ Fluid_Coord_Input_Vars widget_vars[] = {
|
|||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
void x_cb(Fluid_Coord_Input *i, void *v) {
|
void x_cb(fld::widget::Formula_Input *i, void *v) {
|
||||||
if (v == LOAD) {
|
if (v == LOAD) {
|
||||||
x_input = i;
|
x_input = i;
|
||||||
if (current_widget->is_true_widget()) {
|
if (current_widget->is_true_widget()) {
|
||||||
@@ -815,7 +815,7 @@ void x_cb(Fluid_Coord_Input *i, void *v) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void y_cb(Fluid_Coord_Input *i, void *v) {
|
void y_cb(fld::widget::Formula_Input *i, void *v) {
|
||||||
if (v == LOAD) {
|
if (v == LOAD) {
|
||||||
y_input = i;
|
y_input = i;
|
||||||
if (current_widget->is_true_widget()) {
|
if (current_widget->is_true_widget()) {
|
||||||
@@ -845,7 +845,7 @@ void y_cb(Fluid_Coord_Input *i, void *v) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void w_cb(Fluid_Coord_Input *i, void *v) {
|
void w_cb(fld::widget::Formula_Input *i, void *v) {
|
||||||
if (v == LOAD) {
|
if (v == LOAD) {
|
||||||
w_input = i;
|
w_input = i;
|
||||||
if (current_widget->is_true_widget()) {
|
if (current_widget->is_true_widget()) {
|
||||||
@@ -875,7 +875,7 @@ void w_cb(Fluid_Coord_Input *i, void *v) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void h_cb(Fluid_Coord_Input *i, void *v) {
|
void h_cb(fld::widget::Formula_Input *i, void *v) {
|
||||||
if (v == LOAD) {
|
if (v == LOAD) {
|
||||||
h_input = i;
|
h_input = i;
|
||||||
if (current_widget->is_true_widget()) {
|
if (current_widget->is_true_widget()) {
|
||||||
@@ -1739,7 +1739,7 @@ void align_text_image_cb(Fl_Choice *i, void *v) {
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void callback_cb(CodeEditor* i, void *v) {
|
void callback_cb(fld::widget::Code_Editor* i, void *v) {
|
||||||
if (v == LOAD) {
|
if (v == LOAD) {
|
||||||
const char *cbtext = current_widget->callback();
|
const char *cbtext = current_widget->callback();
|
||||||
i->buffer()->text( cbtext ? cbtext : "" );
|
i->buffer()->text( cbtext ? cbtext : "" );
|
||||||
|
|||||||
@@ -265,13 +265,13 @@ Fl_Tabs *cv_tab=(Fl_Tabs *)0;
|
|||||||
|
|
||||||
Fl_Group *cv_source_tab=(Fl_Group *)0;
|
Fl_Group *cv_source_tab=(Fl_Group *)0;
|
||||||
|
|
||||||
CodeViewer *cv_source=(CodeViewer *)0;
|
fld::widget::Code_Viewer *cv_source=(fld::widget::Code_Viewer *)0;
|
||||||
|
|
||||||
CodeViewer *cv_header=(CodeViewer *)0;
|
fld::widget::Code_Viewer *cv_header=(fld::widget::Code_Viewer *)0;
|
||||||
|
|
||||||
TextViewer *cv_strings=(TextViewer *)0;
|
fld::widget::Text_Viewer *cv_strings=(fld::widget::Text_Viewer *)0;
|
||||||
|
|
||||||
TextViewer *cv_project=(TextViewer *)0;
|
fld::widget::Text_Viewer *cv_project=(fld::widget::Text_Viewer *)0;
|
||||||
|
|
||||||
Fl_Group *cv_find_row=(Fl_Group *)0;
|
Fl_Group *cv_find_row=(Fl_Group *)0;
|
||||||
|
|
||||||
@@ -400,7 +400,7 @@ Fl_Double_Window* make_codeview() {
|
|||||||
cv_tab->callback((Fl_Callback*)update_codeview_position_cb);
|
cv_tab->callback((Fl_Callback*)update_codeview_position_cb);
|
||||||
{ cv_source_tab = new Fl_Group(10, 35, 500, 415, "Source");
|
{ cv_source_tab = new Fl_Group(10, 35, 500, 415, "Source");
|
||||||
cv_source_tab->labelsize(13);
|
cv_source_tab->labelsize(13);
|
||||||
{ CodeViewer* o = cv_source = new CodeViewer(10, 40, 500, 410);
|
{ fld::widget::Code_Viewer* o = cv_source = new fld::widget::Code_Viewer(10, 40, 500, 410);
|
||||||
cv_source->box(FL_DOWN_FRAME);
|
cv_source->box(FL_DOWN_FRAME);
|
||||||
cv_source->color(FL_BACKGROUND2_COLOR);
|
cv_source->color(FL_BACKGROUND2_COLOR);
|
||||||
cv_source->selection_color(FL_SELECTION_COLOR);
|
cv_source->selection_color(FL_SELECTION_COLOR);
|
||||||
@@ -415,14 +415,14 @@ Fl_Double_Window* make_codeview() {
|
|||||||
Fl_Group::current()->resizable(cv_source);
|
Fl_Group::current()->resizable(cv_source);
|
||||||
o->linenumber_width(60);
|
o->linenumber_width(60);
|
||||||
o->linenumber_size(o->Fl_Text_Display::textsize());
|
o->linenumber_size(o->Fl_Text_Display::textsize());
|
||||||
} // CodeViewer* cv_source
|
} // fld::widget::Code_Viewer* cv_source
|
||||||
cv_source_tab->end();
|
cv_source_tab->end();
|
||||||
Fl_Group::current()->resizable(cv_source_tab);
|
Fl_Group::current()->resizable(cv_source_tab);
|
||||||
} // Fl_Group* cv_source_tab
|
} // Fl_Group* cv_source_tab
|
||||||
{ Fl_Group* o = new Fl_Group(10, 35, 500, 415, "Header");
|
{ Fl_Group* o = new Fl_Group(10, 35, 500, 415, "Header");
|
||||||
o->labelsize(13);
|
o->labelsize(13);
|
||||||
o->hide();
|
o->hide();
|
||||||
{ CodeViewer* o = cv_header = new CodeViewer(10, 40, 500, 410);
|
{ fld::widget::Code_Viewer* o = cv_header = new fld::widget::Code_Viewer(10, 40, 500, 410);
|
||||||
cv_header->box(FL_DOWN_FRAME);
|
cv_header->box(FL_DOWN_FRAME);
|
||||||
cv_header->color(FL_BACKGROUND2_COLOR);
|
cv_header->color(FL_BACKGROUND2_COLOR);
|
||||||
cv_header->selection_color(FL_SELECTION_COLOR);
|
cv_header->selection_color(FL_SELECTION_COLOR);
|
||||||
@@ -437,13 +437,13 @@ Fl_Double_Window* make_codeview() {
|
|||||||
Fl_Group::current()->resizable(cv_header);
|
Fl_Group::current()->resizable(cv_header);
|
||||||
o->linenumber_width(60);
|
o->linenumber_width(60);
|
||||||
o->linenumber_size(o->Fl_Text_Display::textsize());
|
o->linenumber_size(o->Fl_Text_Display::textsize());
|
||||||
} // CodeViewer* cv_header
|
} // fld::widget::Code_Viewer* cv_header
|
||||||
o->end();
|
o->end();
|
||||||
} // Fl_Group* o
|
} // Fl_Group* o
|
||||||
{ Fl_Group* o = new Fl_Group(10, 35, 500, 415, "Strings");
|
{ Fl_Group* o = new Fl_Group(10, 35, 500, 415, "Strings");
|
||||||
o->labelsize(13);
|
o->labelsize(13);
|
||||||
o->hide();
|
o->hide();
|
||||||
{ TextViewer* o = cv_strings = new TextViewer(10, 40, 500, 410);
|
{ fld::widget::Text_Viewer* o = cv_strings = new fld::widget::Text_Viewer(10, 40, 500, 410);
|
||||||
cv_strings->box(FL_DOWN_FRAME);
|
cv_strings->box(FL_DOWN_FRAME);
|
||||||
cv_strings->color(FL_BACKGROUND2_COLOR);
|
cv_strings->color(FL_BACKGROUND2_COLOR);
|
||||||
cv_strings->selection_color(FL_SELECTION_COLOR);
|
cv_strings->selection_color(FL_SELECTION_COLOR);
|
||||||
@@ -458,13 +458,13 @@ Fl_Double_Window* make_codeview() {
|
|||||||
Fl_Group::current()->resizable(cv_strings);
|
Fl_Group::current()->resizable(cv_strings);
|
||||||
o->linenumber_width(60);
|
o->linenumber_width(60);
|
||||||
o->linenumber_size(o->Fl_Text_Display::textsize());
|
o->linenumber_size(o->Fl_Text_Display::textsize());
|
||||||
} // TextViewer* cv_strings
|
} // fld::widget::Text_Viewer* cv_strings
|
||||||
o->end();
|
o->end();
|
||||||
} // Fl_Group* o
|
} // Fl_Group* o
|
||||||
{ Fl_Group* o = new Fl_Group(10, 35, 500, 415, "Project");
|
{ Fl_Group* o = new Fl_Group(10, 35, 500, 415, "Project");
|
||||||
o->labelsize(13);
|
o->labelsize(13);
|
||||||
o->hide();
|
o->hide();
|
||||||
{ TextViewer* o = cv_project = new TextViewer(10, 40, 500, 410);
|
{ fld::widget::Text_Viewer* o = cv_project = new fld::widget::Text_Viewer(10, 40, 500, 410);
|
||||||
cv_project->box(FL_DOWN_FRAME);
|
cv_project->box(FL_DOWN_FRAME);
|
||||||
cv_project->color(FL_BACKGROUND2_COLOR);
|
cv_project->color(FL_BACKGROUND2_COLOR);
|
||||||
cv_project->selection_color(FL_SELECTION_COLOR);
|
cv_project->selection_color(FL_SELECTION_COLOR);
|
||||||
@@ -479,7 +479,7 @@ Fl_Double_Window* make_codeview() {
|
|||||||
Fl_Group::current()->resizable(cv_project);
|
Fl_Group::current()->resizable(cv_project);
|
||||||
o->linenumber_width(60);
|
o->linenumber_width(60);
|
||||||
o->linenumber_size(o->Fl_Text_Display::textsize());
|
o->linenumber_size(o->Fl_Text_Display::textsize());
|
||||||
} // TextViewer* cv_project
|
} // fld::widget::Text_Viewer* cv_project
|
||||||
o->end();
|
o->end();
|
||||||
} // Fl_Group* o
|
} // Fl_Group* o
|
||||||
cv_tab->end();
|
cv_tab->end();
|
||||||
|
|||||||
@@ -296,10 +296,10 @@ Function {make_codeview()} {open
|
|||||||
} {
|
} {
|
||||||
Fl_Text_Editor cv_source {
|
Fl_Text_Editor cv_source {
|
||||||
xywh {10 40 500 410} textfont 4 textsize 11 resizable
|
xywh {10 40 500 410} textfont 4 textsize 11 resizable
|
||||||
code0 {\#include "widgets/CodeEditor.h"}
|
code0 {\#include "widgets/Code_Viewer.h"}
|
||||||
code1 {o->linenumber_width(60);}
|
code1 {o->linenumber_width(60);}
|
||||||
code2 {o->linenumber_size(o->Fl_Text_Display::textsize());}
|
code2 {o->linenumber_size(o->Fl_Text_Display::textsize());}
|
||||||
class CodeViewer
|
class {fld::widget::Code_Viewer}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
@@ -308,10 +308,10 @@ Function {make_codeview()} {open
|
|||||||
} {
|
} {
|
||||||
Fl_Text_Editor cv_header {
|
Fl_Text_Editor cv_header {
|
||||||
xywh {10 40 500 410} textfont 4 textsize 11 resizable
|
xywh {10 40 500 410} textfont 4 textsize 11 resizable
|
||||||
code0 {\#include "widgets/CodeEditor.h"}
|
code0 {\#include "widgets/Code_Viewer.h"}
|
||||||
code1 {o->linenumber_width(60);}
|
code1 {o->linenumber_width(60);}
|
||||||
code2 {o->linenumber_size(o->Fl_Text_Display::textsize());}
|
code2 {o->linenumber_size(o->Fl_Text_Display::textsize());}
|
||||||
class CodeViewer
|
class {fld::widget::Code_Viewer}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
@@ -320,9 +320,10 @@ Function {make_codeview()} {open
|
|||||||
} {
|
} {
|
||||||
Fl_Text_Display cv_strings {
|
Fl_Text_Display cv_strings {
|
||||||
xywh {10 40 500 410} textfont 4 textsize 11 resizable
|
xywh {10 40 500 410} textfont 4 textsize 11 resizable
|
||||||
|
code0 {\#include "widgets/Text_Viewer.h"}
|
||||||
code1 {o->linenumber_width(60);}
|
code1 {o->linenumber_width(60);}
|
||||||
code2 {o->linenumber_size(o->Fl_Text_Display::textsize());}
|
code2 {o->linenumber_size(o->Fl_Text_Display::textsize());}
|
||||||
class TextViewer
|
class {fld::widget::Text_Viewer}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
@@ -331,9 +332,10 @@ Function {make_codeview()} {open
|
|||||||
} {
|
} {
|
||||||
Fl_Text_Display cv_project {
|
Fl_Text_Display cv_project {
|
||||||
xywh {10 40 500 410} textfont 4 textsize 11 resizable
|
xywh {10 40 500 410} textfont 4 textsize 11 resizable
|
||||||
|
code0 {\#include "widgets/Text_Viewer.h"}
|
||||||
code1 {o->linenumber_width(60);}
|
code1 {o->linenumber_width(60);}
|
||||||
code2 {o->linenumber_size(o->Fl_Text_Display::textsize());}
|
code2 {o->linenumber_size(o->Fl_Text_Display::textsize());}
|
||||||
class TextViewer
|
class {fld::widget::Text_Viewer}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,11 +33,12 @@ extern Fl_Double_Window *codeview_panel;
|
|||||||
extern Fl_Tabs *cv_tab;
|
extern Fl_Tabs *cv_tab;
|
||||||
#include <FL/Fl_Group.H>
|
#include <FL/Fl_Group.H>
|
||||||
extern Fl_Group *cv_source_tab;
|
extern Fl_Group *cv_source_tab;
|
||||||
#include "widgets/CodeEditor.h"
|
#include "widgets/Code_Viewer.h"
|
||||||
extern CodeViewer *cv_source;
|
extern fld::widget::Code_Viewer *cv_source;
|
||||||
extern CodeViewer *cv_header;
|
extern fld::widget::Code_Viewer *cv_header;
|
||||||
extern TextViewer *cv_strings;
|
#include "widgets/Text_Viewer.h"
|
||||||
extern TextViewer *cv_project;
|
extern fld::widget::Text_Viewer *cv_strings;
|
||||||
|
extern fld::widget::Text_Viewer *cv_project;
|
||||||
extern Fl_Group *cv_find_row;
|
extern Fl_Group *cv_find_row;
|
||||||
#include <FL/Fl_Button.H>
|
#include <FL/Fl_Button.H>
|
||||||
extern Fl_Button *cv_find_text_case;
|
extern Fl_Button *cv_find_text_case;
|
||||||
|
|||||||
+105
-105
File diff suppressed because it is too large
Load Diff
@@ -28,7 +28,7 @@ comment {//
|
|||||||
decl {\#include "app/fluid.h"} {private local
|
decl {\#include "app/fluid.h"} {private local
|
||||||
}
|
}
|
||||||
|
|
||||||
decl {\#include "app/undo.h"} {selected private local
|
decl {\#include "app/undo.h"} {private local
|
||||||
}
|
}
|
||||||
|
|
||||||
decl {\#include "nodes/Fl_Type.h"} {private local
|
decl {\#include "nodes/Fl_Type.h"} {private local
|
||||||
@@ -40,7 +40,7 @@ decl {\#include "nodes/factory.h"} {private local
|
|||||||
decl {\#include "rsrcs/pixmaps.h"} {private local
|
decl {\#include "rsrcs/pixmaps.h"} {private local
|
||||||
}
|
}
|
||||||
|
|
||||||
decl {\#include "widgets/custom_widgets.h"} {private global
|
decl {\#include "widgets/Bin_Button.h"} {private global
|
||||||
}
|
}
|
||||||
|
|
||||||
decl {\#include "widgets/widget_browser.h"} {private local
|
decl {\#include "widgets/widget_browser.h"} {private local
|
||||||
@@ -152,8 +152,8 @@ code_panel->hide(); // otherwise hide..}
|
|||||||
Fl_Text_Editor code_input {
|
Fl_Text_Editor code_input {
|
||||||
xywh {10 10 520 130} box DOWN_BOX labelsize 11 textfont 4 textsize 11 resizable
|
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);}
|
code0 {o->when(FL_WHEN_ENTER_KEY_CHANGED|FL_WHEN_RELEASE);}
|
||||||
code1 {\#include "widgets/CodeEditor.h"}
|
code1 {\#include "widgets/Code_Editor.h"}
|
||||||
class CodeEditor
|
class {fld::widget::Code_Editor}
|
||||||
}
|
}
|
||||||
Fl_Group {} {open
|
Fl_Group {} {open
|
||||||
xywh {10 150 520 20} labelsize 11
|
xywh {10 150 520 20} labelsize 11
|
||||||
@@ -343,8 +343,8 @@ Function {make_decl_panel()} {open
|
|||||||
Fl_Text_Editor decl_input {
|
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;".}
|
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
|
xywh {10 40 320 45} labelsize 11 align 134 resizable
|
||||||
code0 {\#include "widgets/CodeEditor.h"}
|
code0 {\#include "widgets/Code_Editor.h"}
|
||||||
class CodeEditor
|
class {fld::widget::Code_Editor}
|
||||||
}
|
}
|
||||||
Fl_Box {} {
|
Fl_Box {} {
|
||||||
xywh {20 139 300 1} box BORDER_FRAME color 43
|
xywh {20 139 300 1} box BORDER_FRAME color 43
|
||||||
@@ -643,7 +643,7 @@ else
|
|||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Widget Class} xywh {55 46 24 24} box THIN_UP_BOX
|
tooltip {Widget Class} xywh {55 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Widget_Class]);}
|
code0 {o->image(pixmap[ID_Widget_Class]);}
|
||||||
class Widget_Bin_Window_Button
|
class {fld::widget::Bin_Window_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"decl"}
|
user_data {"decl"}
|
||||||
@@ -673,63 +673,63 @@ else
|
|||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Window xywh {89 21 24 24} box THIN_UP_BOX
|
tooltip Window xywh {89 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Window]);}
|
code0 {o->image(pixmap[ID_Window]);}
|
||||||
class Widget_Bin_Window_Button
|
class {fld::widget::Bin_Window_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Group"}
|
user_data {"Fl_Group"}
|
||||||
callback type_make_cb
|
callback type_make_cb selected
|
||||||
tooltip Group xywh {114 21 24 24} box THIN_UP_BOX
|
tooltip Group xywh {114 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Group]);}
|
code0 {o->image(pixmap[ID_Group]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Pack"}
|
user_data {"Fl_Pack"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Pack xywh {139 21 24 24} box THIN_UP_BOX
|
tooltip Pack xywh {139 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Pack]);}
|
code0 {o->image(pixmap[ID_Pack]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Tabs"}
|
user_data {"Fl_Tabs"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Tabs xywh {89 46 24 24} box THIN_UP_BOX
|
tooltip Tabs xywh {89 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Tabs]);}
|
code0 {o->image(pixmap[ID_Tabs]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Scroll"}
|
user_data {"Fl_Scroll"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Scroll xywh {114 46 24 24} box THIN_UP_BOX
|
tooltip Scroll xywh {114 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Scroll]);}
|
code0 {o->image(pixmap[ID_Scroll]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Flex"}
|
user_data {"Fl_Flex"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Flex xywh {139 46 24 24} box THIN_UP_BOX
|
tooltip Flex xywh {139 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Flex]);}
|
code0 {o->image(pixmap[ID_Flex]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Tile"}
|
user_data {"Fl_Tile"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Tile xywh {89 71 24 24} box THIN_UP_BOX
|
tooltip Tile xywh {89 71 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Tile]);}
|
code0 {o->image(pixmap[ID_Tile]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Wizard"}
|
user_data {"Fl_Wizard"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Wizard xywh {114 71 24 24} box THIN_UP_BOX
|
tooltip Wizard xywh {114 71 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Wizard]);}
|
code0 {o->image(pixmap[ID_Wizard]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Grid"}
|
user_data {"Fl_Grid"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Grid xywh {139 71 24 24} box THIN_UP_BOX
|
tooltip Grid xywh {139 71 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Grid]);}
|
code0 {o->image(pixmap[ID_Grid]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
@@ -741,42 +741,42 @@ else
|
|||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Button xywh {173 21 24 24} box THIN_UP_BOX
|
tooltip Button xywh {173 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Button]);}
|
code0 {o->image(pixmap[ID_Button]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Return_Button"}
|
user_data {"Fl_Return_Button"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Return Button} xywh {198 21 24 24} box THIN_UP_BOX
|
tooltip {Return Button} xywh {198 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Return_Button]);}
|
code0 {o->image(pixmap[ID_Return_Button]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Light_Button"}
|
user_data {"Fl_Light_Button"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Light Button} xywh {173 46 24 24} box THIN_UP_BOX
|
tooltip {Light Button} xywh {173 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Light_Button]);}
|
code0 {o->image(pixmap[ID_Light_Button]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Repeat_Button"}
|
user_data {"Fl_Repeat_Button"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Repeat Button} xywh {198 46 24 24} box THIN_UP_BOX
|
tooltip {Repeat Button} xywh {198 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Repeat_Button]);}
|
code0 {o->image(pixmap[ID_Repeat_Button]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Check_Button"}
|
user_data {"Fl_Check_Button"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Check Button} xywh {173 71 24 24} box THIN_UP_BOX
|
tooltip {Check Button} xywh {173 71 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Check_Button]);}
|
code0 {o->image(pixmap[ID_Check_Button]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Round_Button"}
|
user_data {"Fl_Round_Button"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Round Button} xywh {198 71 24 24} box THIN_UP_BOX
|
tooltip {Round Button} xywh {198 71 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Round_Button]);}
|
code0 {o->image(pixmap[ID_Round_Button]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
@@ -788,70 +788,70 @@ else
|
|||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Slider xywh {232 21 24 24} box THIN_UP_BOX
|
tooltip Slider xywh {232 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Slider]);}
|
code0 {o->image(pixmap[ID_Slider]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Scrollbar"}
|
user_data {"Fl_Scrollbar"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Scroll Bar} xywh {257 21 24 24} box THIN_UP_BOX
|
tooltip {Scroll Bar} xywh {257 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Scrollbar]);}
|
code0 {o->image(pixmap[ID_Scrollbar]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Value_Slider"}
|
user_data {"Fl_Value_Slider"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Value Slider} xywh {282 21 24 24} box THIN_UP_BOX
|
tooltip {Value Slider} xywh {282 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Value_Slider]);}
|
code0 {o->image(pixmap[ID_Value_Slider]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Value_Output"}
|
user_data {"Fl_Value_Output"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Value Output} xywh {307 21 24 24} box THIN_UP_BOX
|
tooltip {Value Output} xywh {307 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Value_Output]);}
|
code0 {o->image(pixmap[ID_Value_Output]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Adjuster"}
|
user_data {"Fl_Adjuster"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Adjuster xywh {232 46 24 24} box THIN_UP_BOX
|
tooltip Adjuster xywh {232 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Adjuster]);}
|
code0 {o->image(pixmap[ID_Adjuster]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Counter"}
|
user_data {"Fl_Counter"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Counter xywh {257 46 24 24} box THIN_UP_BOX
|
tooltip Counter xywh {257 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Counter]);}
|
code0 {o->image(pixmap[ID_Counter]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Dial"}
|
user_data {"Fl_Dial"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Dial xywh {282 46 24 24} box THIN_UP_BOX
|
tooltip Dial xywh {282 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Dial]);}
|
code0 {o->image(pixmap[ID_Dial]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Roller"}
|
user_data {"Fl_Roller"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Roller xywh {232 71 24 24} box THIN_UP_BOX
|
tooltip Roller xywh {232 71 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Roller]);}
|
code0 {o->image(pixmap[ID_Roller]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Spinner"}
|
user_data {"Fl_Spinner"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Spinner xywh {257 71 24 24} box THIN_UP_BOX
|
tooltip Spinner xywh {257 71 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Spinner]);}
|
code0 {o->image(pixmap[ID_Spinner]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Value_Input"}
|
user_data {"Fl_Value_Input"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Value Input} xywh {282 71 24 24} box THIN_UP_BOX
|
tooltip {Value Input} xywh {282 71 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Value_Input]);}
|
code0 {o->image(pixmap[ID_Value_Input]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
@@ -863,42 +863,42 @@ else
|
|||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Input xywh {341 21 24 24} box THIN_UP_BOX
|
tooltip Input xywh {341 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Input]);}
|
code0 {o->image(pixmap[ID_Input]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Output"}
|
user_data {"Fl_Output"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Output xywh {366 21 24 24} box THIN_UP_BOX
|
tooltip Output xywh {366 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Output]);}
|
code0 {o->image(pixmap[ID_Output]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Text_Editor"}
|
user_data {"Fl_Text_Editor"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Text Edit} xywh {341 46 24 24} box THIN_UP_BOX
|
tooltip {Text Edit} xywh {341 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Text_Editor]);}
|
code0 {o->image(pixmap[ID_Text_Editor]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Text_Display"}
|
user_data {"Fl_Text_Display"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Text Display} xywh {366 46 24 24} box THIN_UP_BOX
|
tooltip {Text Display} xywh {366 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Text_Display]);}
|
code0 {o->image(pixmap[ID_Text_Display]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_File_Input"}
|
user_data {"Fl_File_Input"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {File Input} xywh {341 71 24 24} box THIN_UP_BOX
|
tooltip {File Input} xywh {341 71 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_File_Input]);}
|
code0 {o->image(pixmap[ID_File_Input]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Terminal"}
|
user_data {"Fl_Terminal"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Terminal xywh {366 71 24 24} box THIN_UP_BOX
|
tooltip Terminal xywh {366 71 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Terminal]);}
|
code0 {o->image(pixmap[ID_Terminal]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
@@ -910,56 +910,56 @@ else
|
|||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Input Choice} xywh {400 22 24 24} box THIN_UP_BOX
|
tooltip {Input Choice} xywh {400 22 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Input_Choice]);}
|
code0 {o->image(pixmap[ID_Input_Choice]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"menuitem"}
|
user_data {"menuitem"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Menu Item} xywh {425 21 24 24} box THIN_UP_BOX
|
tooltip {Menu Item} xywh {425 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Menu_Item]);}
|
code0 {o->image(pixmap[ID_Menu_Item]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Menu_Bar"}
|
user_data {"Fl_Menu_Bar"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Menu Bar} xywh {450 21 24 24} box THIN_UP_BOX
|
tooltip {Menu Bar} xywh {450 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Menu_Bar]);}
|
code0 {o->image(pixmap[ID_Menu_Bar]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Menu_Button"}
|
user_data {"Fl_Menu_Button"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Menu Button} xywh {400 46 24 24} box THIN_UP_BOX
|
tooltip {Menu Button} xywh {400 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Menu_Button]);}
|
code0 {o->image(pixmap[ID_Menu_Button]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"checkmenuitem"}
|
user_data {"checkmenuitem"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Checkbox Menu Item} xywh {425 46 24 24} box THIN_UP_BOX
|
tooltip {Checkbox Menu Item} xywh {425 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Checkbox_Menu_Item]);}
|
code0 {o->image(pixmap[ID_Checkbox_Menu_Item]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"submenu"}
|
user_data {"submenu"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Sub Menu} xywh {450 46 24 24} box THIN_UP_BOX
|
tooltip {Sub Menu} xywh {450 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Submenu]);}
|
code0 {o->image(pixmap[ID_Submenu]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Choice"}
|
user_data {"Fl_Choice"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Choice xywh {400 71 24 24} box THIN_UP_BOX
|
tooltip Choice xywh {400 71 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Choice]);}
|
code0 {o->image(pixmap[ID_Choice]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"radiomenuitem"}
|
user_data {"radiomenuitem"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Radio Menu Item} xywh {425 71 24 24} box THIN_UP_BOX
|
tooltip {Radio Menu Item} xywh {425 71 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Radio_Menu_Item]);}
|
code0 {o->image(pixmap[ID_Radio_Menu_Item]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
@@ -971,42 +971,42 @@ else
|
|||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Browser xywh {484 21 24 24} box THIN_UP_BOX
|
tooltip Browser xywh {484 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Browser]);}
|
code0 {o->image(pixmap[ID_Browser]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Tree"}
|
user_data {"Fl_Tree"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Tree xywh {509 21 24 24} box THIN_UP_BOX
|
tooltip Tree xywh {509 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Tree]);}
|
code0 {o->image(pixmap[ID_Tree]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Check_Browser"}
|
user_data {"Fl_Check_Browser"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Check Browser} xywh {484 46 24 24} box THIN_UP_BOX
|
tooltip {Check Browser} xywh {484 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Check_Browser]);}
|
code0 {o->image(pixmap[ID_Check_Browser]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Help_View"}
|
user_data {"Fl_Help_View"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {Help Browser} xywh {509 46 24 24} box THIN_UP_BOX
|
tooltip {Help Browser} xywh {509 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Help_View]);}
|
code0 {o->image(pixmap[ID_Help_View]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_File_Browser"}
|
user_data {"Fl_File_Browser"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip {File Browser} xywh {484 71 24 24} box THIN_UP_BOX
|
tooltip {File Browser} xywh {484 71 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_File_Browser]);}
|
code0 {o->image(pixmap[ID_File_Browser]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Table"}
|
user_data {"Fl_Table"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Table xywh {509 71 24 24} box THIN_UP_BOX
|
tooltip Table xywh {509 71 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Table]);}
|
code0 {o->image(pixmap[ID_Table]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
@@ -1018,21 +1018,21 @@ else
|
|||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Box xywh {542 21 24 24} box THIN_UP_BOX
|
tooltip Box xywh {542 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Box]);}
|
code0 {o->image(pixmap[ID_Box]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Clock"}
|
user_data {"Fl_Clock"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Clock xywh {567 21 24 24} box THIN_UP_BOX
|
tooltip Clock xywh {567 21 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Clock]);}
|
code0 {o->image(pixmap[ID_Clock]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
user_data {"Fl_Progress"}
|
user_data {"Fl_Progress"}
|
||||||
callback type_make_cb
|
callback type_make_cb
|
||||||
tooltip Progress xywh {542 46 24 24} box THIN_UP_BOX
|
tooltip Progress xywh {542 46 24 24} box THIN_UP_BOX
|
||||||
code0 {o->image(pixmap[ID_Progress]);}
|
code0 {o->image(pixmap[ID_Progress]);}
|
||||||
class Widget_Bin_Button
|
class {fld::widget::Bin_Button}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,8 +41,8 @@ Fl_Double_Window* make_function_panel();
|
|||||||
extern Fl_Menu_Item menu_f_public_member_choice[];
|
extern Fl_Menu_Item menu_f_public_member_choice[];
|
||||||
extern Fl_Menu_Item menu_f_public_choice[];
|
extern Fl_Menu_Item menu_f_public_choice[];
|
||||||
extern Fl_Double_Window *code_panel;
|
extern Fl_Double_Window *code_panel;
|
||||||
#include "widgets/CodeEditor.h"
|
#include "widgets/Code_Editor.h"
|
||||||
extern CodeEditor *code_input;
|
extern fld::widget::Code_Editor *code_input;
|
||||||
extern Fl_Return_Button *code_panel_ok;
|
extern Fl_Return_Button *code_panel_ok;
|
||||||
extern Fl_Button *code_panel_cancel;
|
extern Fl_Button *code_panel_cancel;
|
||||||
Fl_Double_Window* make_code_panel();
|
Fl_Double_Window* make_code_panel();
|
||||||
@@ -68,7 +68,7 @@ extern Fl_Double_Window *decl_panel;
|
|||||||
extern Fl_Choice *decl_choice;
|
extern Fl_Choice *decl_choice;
|
||||||
extern Fl_Choice *decl_class_choice;
|
extern Fl_Choice *decl_class_choice;
|
||||||
#include <FL/Fl_Tile.H>
|
#include <FL/Fl_Tile.H>
|
||||||
extern CodeEditor *decl_input;
|
extern fld::widget::Code_Editor *decl_input;
|
||||||
extern Fl_Text_Editor *decl_comment_input;
|
extern Fl_Text_Editor *decl_comment_input;
|
||||||
extern Fl_Return_Button *decl_panel_ok;
|
extern Fl_Return_Button *decl_panel_ok;
|
||||||
extern Fl_Button *decl_panel_cancel;
|
extern Fl_Button *decl_panel_cancel;
|
||||||
|
|||||||
@@ -219,25 +219,25 @@ void template_delete_cb(Fl_Button *, void *) {
|
|||||||
|
|
||||||
static int tmpl_FLTK_License_fl_size = 614;
|
static int tmpl_FLTK_License_fl_size = 614;
|
||||||
static unsigned char tmpl_FLTK_License_fl[397] = /* data compressed and inlined from ../templates/FLTK_License.fl */
|
static unsigned char tmpl_FLTK_License_fl[397] = /* data compressed and inlined from ../templates/FLTK_License.fl */
|
||||||
{120,156,133,82,77,79,27,49,16,189,239,175,120,162,23,144,202,110,130,56,20,
|
{120,156,133,82,77,79,27,49,16,189,239,175,120,130,11,72,237,110,130,90,169,
|
||||||
78,208,80,170,8,148,34,17,14,61,33,239,122,118,61,194,177,87,246,44,75,26,229,
|
112,130,134,82,69,160,20,137,244,208,19,242,174,103,215,35,28,123,101,123,89,
|
||||||
191,215,94,18,245,88,159,236,241,251,154,177,191,64,43,81,104,217,18,90,31,32,
|
210,40,255,157,241,146,168,199,250,100,143,223,215,140,125,10,173,146,66,203,
|
||||||
134,112,111,229,13,47,145,2,150,78,40,180,170,33,220,81,228,206,165,210,105,107,
|
150,208,250,128,100,8,119,54,189,224,119,164,128,165,75,20,90,213,16,110,41,114,
|
||||||
7,214,103,197,59,133,200,222,97,94,206,46,103,243,194,144,210,20,94,157,218,
|
231,164,116,214,218,129,245,121,241,74,33,178,119,152,151,179,47,179,121,97,72,
|
||||||
16,118,165,217,23,141,215,116,60,54,31,31,185,176,217,144,19,236,170,170,168,
|
105,10,207,78,109,8,187,210,236,139,198,107,58,30,155,183,183,92,216,108,200,37,
|
||||||
42,220,44,87,207,235,219,213,226,199,205,63,95,21,5,143,220,25,193,218,123,139,
|
236,170,170,168,42,92,47,87,79,235,155,213,226,199,245,63,95,21,19,30,184,51,9,
|
||||||
7,22,156,222,63,174,31,206,202,226,147,180,240,253,54,76,128,249,213,213,183,
|
107,239,45,238,57,225,236,238,97,125,127,94,22,31,164,133,239,183,97,2,204,47,
|
||||||
243,139,217,197,37,234,45,190,179,181,120,238,89,254,168,55,40,167,225,147,92,
|
47,191,125,190,152,93,124,69,189,197,119,182,22,79,61,167,191,234,5,202,105,
|
||||||
136,71,214,218,112,132,229,58,168,176,69,218,182,129,8,209,183,50,170,64,37,238,
|
120,145,11,241,200,90,27,142,176,92,7,21,182,144,109,27,136,16,125,155,70,21,
|
||||||
56,74,224,122,144,220,78,102,15,145,48,185,68,36,0,252,32,150,29,105,176,203,
|
168,196,45,199,20,184,30,82,110,39,179,135,72,152,92,34,4,0,63,36,203,142,52,
|
||||||
106,57,233,52,174,147,197,175,167,223,203,213,207,19,140,134,27,131,104,252,96,
|
216,101,181,156,116,26,215,201,226,215,227,159,229,234,231,9,70,195,141,65,52,
|
||||||
53,140,122,39,212,68,46,225,27,59,232,68,28,89,76,226,101,235,68,44,129,101,59,
|
126,176,26,70,189,18,106,34,39,248,198,14,90,136,35,39,35,188,108,45,196,18,88,
|
||||||
29,179,220,36,149,110,54,28,35,187,14,105,22,90,109,84,71,250,43,98,202,153,
|
182,211,49,203,77,82,114,179,225,24,217,117,144,89,104,181,81,29,233,79,136,146,
|
||||||
237,44,55,228,82,40,37,215,135,150,242,50,34,125,188,174,170,113,28,203,54,61,
|
51,219,89,110,200,73,40,149,174,14,45,229,101,82,234,227,85,85,141,227,88,182,
|
||||||
89,233,67,87,29,50,149,189,233,15,208,39,75,42,113,143,90,173,183,214,143,217,
|
242,100,165,15,93,117,200,84,246,166,63,64,31,45,41,225,30,181,90,111,173,31,
|
||||||
169,79,38,72,45,27,63,66,60,2,245,62,8,234,161,139,211,20,82,158,129,226,127,13,
|
179,83,47,38,144,150,141,31,145,60,2,245,62,36,212,67,23,167,41,72,158,129,226,
|
||||||
51,254,232,182,199,142,221,107,244,67,72,63,38,237,62,63,69,177,47,254,2,228,
|
127,13,51,254,232,182,199,142,221,115,244,67,144,31,35,187,143,79,81,236,139,
|
||||||
190,201,192};
|
119,230,100,201,193};
|
||||||
|
|
||||||
static int tmpl_1of7GUIs_fl_size = 763;
|
static int tmpl_1of7GUIs_fl_size = 763;
|
||||||
static unsigned char tmpl_1of7GUIs_fl[486] = /* data compressed and inlined from ../templates/1of7GUIs.fl */
|
static unsigned char tmpl_1of7GUIs_fl[486] = /* data compressed and inlined from ../templates/1of7GUIs.fl */
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -34,7 +34,7 @@ decl {\#include "nodes/Fl_Widget_Type.h"} {private global
|
|||||||
decl {\#include "nodes/Fl_Grid_Type.h"} {private global
|
decl {\#include "nodes/Fl_Grid_Type.h"} {private global
|
||||||
}
|
}
|
||||||
|
|
||||||
decl {\#include "widgets/custom_widgets.h"} {selected public global
|
decl {\#include "widgets/Formula_Input.h"} {selected public global
|
||||||
}
|
}
|
||||||
|
|
||||||
decl {\#include <FL/Fl_Grid.H>} {private global
|
decl {\#include <FL/Fl_Grid.H>} {private global
|
||||||
@@ -112,7 +112,7 @@ Function {make_image_panel()} {
|
|||||||
if (mod) set_modflag(1);
|
if (mod) set_modflag(1);
|
||||||
}}
|
}}
|
||||||
tooltip {Scale image to this width in pixel units} xywh {75 75 55 20} labelsize 11 align 5 textsize 11
|
tooltip {Scale image to this width in pixel units} xywh {75 75 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Input image_panel_imageh {
|
Fl_Input image_panel_imageh {
|
||||||
label {Height:}
|
label {Height:}
|
||||||
@@ -142,7 +142,7 @@ Function {make_image_panel()} {
|
|||||||
if (mod) set_modflag(1);
|
if (mod) set_modflag(1);
|
||||||
}}
|
}}
|
||||||
tooltip {Scale image to this height in pixel units} xywh {135 75 55 20} labelsize 11 align 5 textsize 11
|
tooltip {Scale image to this height in pixel units} xywh {135 75 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
label Reset
|
label Reset
|
||||||
@@ -234,7 +234,7 @@ Function {make_image_panel()} {
|
|||||||
if (mod) set_modflag(1);
|
if (mod) set_modflag(1);
|
||||||
}}
|
}}
|
||||||
tooltip {Scale image to this width in pixel units} xywh {75 215 55 20} labelsize 11 align 5 textsize 11
|
tooltip {Scale image to this width in pixel units} xywh {75 215 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Input image_panel_deimageh {
|
Fl_Input image_panel_deimageh {
|
||||||
label {Height:}
|
label {Height:}
|
||||||
@@ -264,7 +264,7 @@ Function {make_image_panel()} {
|
|||||||
if (mod) set_modflag(1);
|
if (mod) set_modflag(1);
|
||||||
}}
|
}}
|
||||||
tooltip {Scale image to this height in pixel units} xywh {135 215 55 20} labelsize 11 align 5 textsize 11
|
tooltip {Scale image to this height in pixel units} xywh {135 215 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
label Reset
|
label Reset
|
||||||
@@ -577,7 +577,7 @@ Use Ctrl-J for newlines.} xywh {95 40 190 20} labelfont 1 labelsize 11 when 15 t
|
|||||||
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
|
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
|
x, px, sx, cx, and i} xywh {95 150 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Input widget_y_input {
|
Fl_Input widget_y_input {
|
||||||
label {Y:}
|
label {Y:}
|
||||||
@@ -585,7 +585,7 @@ x, px, sx, cx, and i} xywh {95 150 55 20} labelsize 11 align 5 textsize 11
|
|||||||
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
|
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
|
y, py, sy, cy, and i} xywh {155 150 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Input widget_w_input {
|
Fl_Input widget_w_input {
|
||||||
label {Width:}
|
label {Width:}
|
||||||
@@ -593,7 +593,7 @@ y, py, sy, cy, and i} xywh {155 150 55 20} labelsize 11 align 5 textsize 11
|
|||||||
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
|
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
|
w, pw, sw, cw, and i} xywh {215 150 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Input widget_h_input {
|
Fl_Input widget_h_input {
|
||||||
label {Height:}
|
label {Height:}
|
||||||
@@ -601,7 +601,7 @@ w, pw, sw, cw, and i} xywh {215 150 55 20} labelsize 11 align 5 textsize 11
|
|||||||
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
|
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
|
h, ph, sh, ch, and i} xywh {275 150 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Choice {} {
|
Fl_Choice {} {
|
||||||
label {Children:}
|
label {Children:}
|
||||||
@@ -1076,8 +1076,8 @@ wCallback->do_callback(wCallback, v);} open
|
|||||||
label {Callback:}
|
label {Callback:}
|
||||||
callback callback_cb
|
callback callback_cb
|
||||||
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
|
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/CodeEditor.h"}
|
code0 {\#include "widgets/Code_Editor.h"}
|
||||||
class CodeEditor
|
class {fld::widget::Code_Editor}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1136,7 +1136,7 @@ wCallback->do_callback(wCallback, v);} open
|
|||||||
label {Row:}
|
label {Row:}
|
||||||
callback grid_set_row_cb
|
callback grid_set_row_cb
|
||||||
xywh {95 60 40 20} labelsize 11 align 5 textsize 11
|
xywh {95 60 40 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Group {} {open
|
Fl_Group {} {open
|
||||||
xywh {135 60 30 20}
|
xywh {135 60 30 20}
|
||||||
@@ -1158,7 +1158,7 @@ wCallback->do_callback(wCallback, v);} open
|
|||||||
label {Column:}
|
label {Column:}
|
||||||
callback grid_set_col_cb
|
callback grid_set_col_cb
|
||||||
xywh {175 60 40 20} labelsize 11 align 5 textsize 11
|
xywh {175 60 40 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Group {} {open
|
Fl_Group {} {open
|
||||||
xywh {215 60 30 20}
|
xywh {215 60 30 20}
|
||||||
@@ -1271,13 +1271,13 @@ wCallback->do_callback(wCallback, v);} open
|
|||||||
label {Width:}
|
label {Width:}
|
||||||
callback grid_set_min_wdt_cb
|
callback grid_set_min_wdt_cb
|
||||||
xywh {95 135 55 20} labelsize 11 align 5 textsize 11
|
xywh {95 135 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Input {} {
|
Fl_Input {} {
|
||||||
label {Height:}
|
label {Height:}
|
||||||
callback grid_set_min_hgt_cb
|
callback grid_set_min_hgt_cb
|
||||||
xywh {155 135 55 20} labelsize 11 align 5 textsize 11
|
xywh {155 135 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Box {} {
|
Fl_Box {} {
|
||||||
xywh {395 135 1 20} hide resizable
|
xywh {395 135 1 20} hide resizable
|
||||||
@@ -1292,7 +1292,7 @@ wCallback->do_callback(wCallback, v);} open
|
|||||||
label {Row Span:}
|
label {Row Span:}
|
||||||
callback grid_set_rowspan_cb
|
callback grid_set_rowspan_cb
|
||||||
xywh {95 170 40 20} labelsize 11 align 5 textsize 11
|
xywh {95 170 40 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Group {} {open
|
Fl_Group {} {open
|
||||||
xywh {135 170 30 20}
|
xywh {135 170 30 20}
|
||||||
@@ -1314,7 +1314,7 @@ wCallback->do_callback(wCallback, v);} open
|
|||||||
label {Col. Span:}
|
label {Col. Span:}
|
||||||
callback grid_set_colspan_cb
|
callback grid_set_colspan_cb
|
||||||
xywh {175 170 40 20} labelsize 11 align 5 textsize 11
|
xywh {175 170 40 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Group {} {open
|
Fl_Group {} {open
|
||||||
xywh {215 170 30 20}
|
xywh {215 170 30 20}
|
||||||
@@ -1376,7 +1376,7 @@ if (v == LOAD) {
|
|||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
tooltip {Number of horizontal rows in the Grid group} xywh {95 60 40 20} labelsize 11 align 5 textsize 11
|
tooltip {Number of horizontal rows in the Grid group} xywh {95 60 40 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Group {} {open
|
Fl_Group {} {open
|
||||||
xywh {135 60 30 20}
|
xywh {135 60 30 20}
|
||||||
@@ -1426,7 +1426,7 @@ if (v == LOAD) {
|
|||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
tooltip {Number of vertical columns in the Grid group} xywh {175 60 40 20} labelsize 11 align 5 textsize 11
|
tooltip {Number of vertical columns in the Grid group} xywh {175 60 40 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Group {} {open
|
Fl_Group {} {open
|
||||||
xywh {215 60 30 20}
|
xywh {215 60 30 20}
|
||||||
@@ -1618,7 +1618,7 @@ if (v == LOAD) {
|
|||||||
widget_grid_curr_row_attributes->do_callback(widget_grid_curr_row_attributes, LOAD);
|
widget_grid_curr_row_attributes->do_callback(widget_grid_curr_row_attributes, LOAD);
|
||||||
}}
|
}}
|
||||||
xywh {95 175 40 20} labelsize 11 align 5 textsize 11
|
xywh {95 175 40 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
callback propagate_load open
|
callback propagate_load open
|
||||||
@@ -1669,7 +1669,7 @@ if (v == LOAD) {
|
|||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
xywh {180 175 55 20} labelsize 11 align 5 textsize 11
|
xywh {180 175 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Input {} {
|
Fl_Input {} {
|
||||||
label {Weight:}
|
label {Weight:}
|
||||||
@@ -1689,7 +1689,7 @@ if (v == LOAD) {
|
|||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
xywh {240 175 55 20} labelsize 11 align 5 textsize 11
|
xywh {240 175 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Input {} {
|
Fl_Input {} {
|
||||||
label {Gap:}
|
label {Gap:}
|
||||||
@@ -1709,7 +1709,7 @@ if (v == LOAD) {
|
|||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
xywh {300 175 55 20} labelsize 11 align 5 textsize 11
|
xywh {300 175 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Box {} {
|
Fl_Box {} {
|
||||||
@@ -1735,7 +1735,7 @@ if (v == LOAD) {
|
|||||||
widget_grid_curr_col_attributes->do_callback(widget_grid_curr_col_attributes, LOAD);
|
widget_grid_curr_col_attributes->do_callback(widget_grid_curr_col_attributes, LOAD);
|
||||||
}}
|
}}
|
||||||
xywh {95 210 40 20} labelsize 11 align 5 textsize 11
|
xywh {95 210 40 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Group {} {open
|
Fl_Group {} {open
|
||||||
xywh {135 210 30 20}
|
xywh {135 210 30 20}
|
||||||
@@ -1785,7 +1785,7 @@ if (v == LOAD) {
|
|||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
xywh {180 210 55 20} labelsize 11 align 5 textsize 11
|
xywh {180 210 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Input {} {
|
Fl_Input {} {
|
||||||
label {Weight:}
|
label {Weight:}
|
||||||
@@ -1805,7 +1805,7 @@ if (v == LOAD) {
|
|||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
xywh {240 210 55 20} labelsize 11 align 5 textsize 11
|
xywh {240 210 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
Fl_Input {} {
|
Fl_Input {} {
|
||||||
label {Gap:}
|
label {Gap:}
|
||||||
@@ -1825,7 +1825,7 @@ if (v == LOAD) {
|
|||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
xywh {300 210 55 20} labelsize 11 align 5 textsize 11
|
xywh {300 210 55 20} labelsize 11 align 5 textsize 11
|
||||||
class Fluid_Coord_Input
|
class {fld::widget::Formula_Input}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Box {} {
|
Fl_Box {} {
|
||||||
|
|||||||
+30
-30
@@ -19,7 +19,7 @@
|
|||||||
#ifndef widget_panel_h
|
#ifndef widget_panel_h
|
||||||
#define widget_panel_h
|
#define widget_panel_h
|
||||||
#include <FL/Fl.H>
|
#include <FL/Fl.H>
|
||||||
#include "widgets/custom_widgets.h"
|
#include "widgets/Formula_Input.h"
|
||||||
#include <FL/Fl_Double_Window.H>
|
#include <FL/Fl_Double_Window.H>
|
||||||
extern Fl_Double_Window *image_panel_window;
|
extern Fl_Double_Window *image_panel_window;
|
||||||
#include <FL/Fl_Group.H>
|
#include <FL/Fl_Group.H>
|
||||||
@@ -28,16 +28,16 @@ extern Fl_Group *image_panel_imagegroup;
|
|||||||
#include <FL/Fl_Box.H>
|
#include <FL/Fl_Box.H>
|
||||||
#include <FL/Fl_Shared_Image.H>
|
#include <FL/Fl_Shared_Image.H>
|
||||||
extern Fl_Box *image_panel_data;
|
extern Fl_Box *image_panel_data;
|
||||||
extern Fluid_Coord_Input *image_panel_imagew;
|
extern fld::widget::Formula_Input *image_panel_imagew;
|
||||||
extern Fluid_Coord_Input *image_panel_imageh;
|
extern fld::widget::Formula_Input *image_panel_imageh;
|
||||||
#include <FL/Fl_Button.H>
|
#include <FL/Fl_Button.H>
|
||||||
#include <FL/Fl_Check_Button.H>
|
#include <FL/Fl_Check_Button.H>
|
||||||
extern void compress_image_cb(Fl_Check_Button*, void*);
|
extern void compress_image_cb(Fl_Check_Button*, void*);
|
||||||
extern void bind_image_cb(Fl_Check_Button*, void*);
|
extern void bind_image_cb(Fl_Check_Button*, void*);
|
||||||
extern Fl_Group *image_panel_deimagegroup;
|
extern Fl_Group *image_panel_deimagegroup;
|
||||||
extern Fl_Box *image_panel_dedata;
|
extern Fl_Box *image_panel_dedata;
|
||||||
extern Fluid_Coord_Input *image_panel_deimagew;
|
extern fld::widget::Formula_Input *image_panel_deimagew;
|
||||||
extern Fluid_Coord_Input *image_panel_deimageh;
|
extern fld::widget::Formula_Input *image_panel_deimageh;
|
||||||
extern void compress_deimage_cb(Fl_Check_Button*, void*);
|
extern void compress_deimage_cb(Fl_Check_Button*, void*);
|
||||||
extern void bind_deimage_cb(Fl_Check_Button*, void*);
|
extern void bind_deimage_cb(Fl_Check_Button*, void*);
|
||||||
extern Fl_Button *image_panel_close;
|
extern Fl_Button *image_panel_close;
|
||||||
@@ -63,14 +63,14 @@ extern void align_cb(Fl_Button*, void*);
|
|||||||
extern void align_text_image_cb(Fl_Choice*, void*);
|
extern void align_text_image_cb(Fl_Choice*, void*);
|
||||||
extern void align_position_cb(Fl_Choice*, void*);
|
extern void align_position_cb(Fl_Choice*, void*);
|
||||||
extern void position_group_cb(Fl_Group*, void*);
|
extern void position_group_cb(Fl_Group*, void*);
|
||||||
extern void x_cb(Fluid_Coord_Input*, void*);
|
extern void x_cb(fld::widget::Formula_Input*, void*);
|
||||||
extern Fluid_Coord_Input *widget_x_input;
|
extern fld::widget::Formula_Input *widget_x_input;
|
||||||
extern void y_cb(Fluid_Coord_Input*, void*);
|
extern void y_cb(fld::widget::Formula_Input*, void*);
|
||||||
extern Fluid_Coord_Input *widget_y_input;
|
extern fld::widget::Formula_Input *widget_y_input;
|
||||||
extern void w_cb(Fluid_Coord_Input*, void*);
|
extern void w_cb(fld::widget::Formula_Input*, void*);
|
||||||
extern Fluid_Coord_Input *widget_w_input;
|
extern fld::widget::Formula_Input *widget_w_input;
|
||||||
extern void h_cb(Fluid_Coord_Input*, void*);
|
extern void h_cb(fld::widget::Formula_Input*, void*);
|
||||||
extern Fluid_Coord_Input *widget_h_input;
|
extern fld::widget::Formula_Input *widget_h_input;
|
||||||
extern void wc_relative_cb(Fl_Choice*, void*);
|
extern void wc_relative_cb(Fl_Choice*, void*);
|
||||||
extern void flex_size_group_cb(Fl_Group*, void*);
|
extern void flex_size_group_cb(Fl_Group*, void*);
|
||||||
extern Fl_Group *wp_gui_flexp;
|
extern Fl_Group *wp_gui_flexp;
|
||||||
@@ -161,9 +161,9 @@ extern Fl_Input *v_input[4];
|
|||||||
#include <FL/Fl_Tile.H>
|
#include <FL/Fl_Tile.H>
|
||||||
#include <FL/Fl_Text_Editor.H>
|
#include <FL/Fl_Text_Editor.H>
|
||||||
extern Fl_Text_Editor *wComment;
|
extern Fl_Text_Editor *wComment;
|
||||||
#include "widgets/CodeEditor.h"
|
#include "widgets/Code_Editor.h"
|
||||||
extern void callback_cb(CodeEditor*, void*);
|
extern void callback_cb(fld::widget::Code_Editor*, void*);
|
||||||
extern CodeEditor *wCallback;
|
extern fld::widget::Code_Editor *wCallback;
|
||||||
extern Fl_Group *wp_cpp_callback;
|
extern Fl_Group *wp_cpp_callback;
|
||||||
extern void user_data_cb(Fl_Input*, void*);
|
extern void user_data_cb(Fl_Input*, void*);
|
||||||
extern Fl_Menu_Item whenmenu[];
|
extern Fl_Menu_Item whenmenu[];
|
||||||
@@ -172,12 +172,12 @@ extern void when_cb(Fl_Menu_Button*, void*);
|
|||||||
extern void user_data_type_cb(Fl_Input_Choice*, void*);
|
extern void user_data_type_cb(Fl_Input_Choice*, void*);
|
||||||
extern Fl_Box *w_when_box;
|
extern Fl_Box *w_when_box;
|
||||||
extern Fl_Group *widget_tab_grid_child;
|
extern Fl_Group *widget_tab_grid_child;
|
||||||
extern void grid_set_row_cb(Fluid_Coord_Input*, void*);
|
extern void grid_set_row_cb(fld::widget::Formula_Input*, void*);
|
||||||
extern Fluid_Coord_Input *widget_grid_row_input;
|
extern fld::widget::Formula_Input *widget_grid_row_input;
|
||||||
extern void grid_dec_row_cb(Fl_Button*, void*);
|
extern void grid_dec_row_cb(Fl_Button*, void*);
|
||||||
extern void grid_inc_row_cb(Fl_Button*, void*);
|
extern void grid_inc_row_cb(Fl_Button*, void*);
|
||||||
extern void grid_set_col_cb(Fluid_Coord_Input*, void*);
|
extern void grid_set_col_cb(fld::widget::Formula_Input*, void*);
|
||||||
extern Fluid_Coord_Input *widget_grid_col_input;
|
extern fld::widget::Formula_Input *widget_grid_col_input;
|
||||||
extern void grid_dec_col_cb(Fl_Button*, void*);
|
extern void grid_dec_col_cb(Fl_Button*, void*);
|
||||||
extern void grid_inc_col_cb(Fl_Button*, void*);
|
extern void grid_inc_col_cb(Fl_Button*, void*);
|
||||||
extern Fl_Box *widget_grid_transient;
|
extern Fl_Box *widget_grid_transient;
|
||||||
@@ -186,24 +186,24 @@ extern Fl_Group *wp_gridc_align;
|
|||||||
extern void grid_align_horizontal_cb(Fl_Choice*, void*);
|
extern void grid_align_horizontal_cb(Fl_Choice*, void*);
|
||||||
extern void grid_align_vertical_cb(Fl_Choice*, void*);
|
extern void grid_align_vertical_cb(Fl_Choice*, void*);
|
||||||
extern Fl_Group *wp_gridc_size;
|
extern Fl_Group *wp_gridc_size;
|
||||||
extern void grid_set_min_wdt_cb(Fluid_Coord_Input*, void*);
|
extern void grid_set_min_wdt_cb(fld::widget::Formula_Input*, void*);
|
||||||
extern void grid_set_min_hgt_cb(Fluid_Coord_Input*, void*);
|
extern void grid_set_min_hgt_cb(fld::widget::Formula_Input*, void*);
|
||||||
extern void grid_set_rowspan_cb(Fluid_Coord_Input*, void*);
|
extern void grid_set_rowspan_cb(fld::widget::Formula_Input*, void*);
|
||||||
extern Fluid_Coord_Input *widget_grid_rowspan_input;
|
extern fld::widget::Formula_Input *widget_grid_rowspan_input;
|
||||||
extern void grid_dec_rowspan_cb(Fl_Button*, void*);
|
extern void grid_dec_rowspan_cb(Fl_Button*, void*);
|
||||||
extern void grid_inc_rowspan_cb(Fl_Button*, void*);
|
extern void grid_inc_rowspan_cb(Fl_Button*, void*);
|
||||||
extern void grid_set_colspan_cb(Fluid_Coord_Input*, void*);
|
extern void grid_set_colspan_cb(fld::widget::Formula_Input*, void*);
|
||||||
extern Fluid_Coord_Input *widget_grid_colspan_input;
|
extern fld::widget::Formula_Input *widget_grid_colspan_input;
|
||||||
extern void grid_dec_colspan_cb(Fl_Button*, void*);
|
extern void grid_dec_colspan_cb(Fl_Button*, void*);
|
||||||
extern void grid_inc_colspan_cb(Fl_Button*, void*);
|
extern void grid_inc_colspan_cb(Fl_Button*, void*);
|
||||||
extern Fl_Group *widget_tab_grid;
|
extern Fl_Group *widget_tab_grid;
|
||||||
extern Fluid_Coord_Input *widget_grid_rows;
|
extern fld::widget::Formula_Input *widget_grid_rows;
|
||||||
extern Fluid_Coord_Input *widget_grid_cols;
|
extern fld::widget::Formula_Input *widget_grid_cols;
|
||||||
extern Fl_Group *wp_grid_margin;
|
extern Fl_Group *wp_grid_margin;
|
||||||
extern Fl_Group *wp_grid_gaps;
|
extern Fl_Group *wp_grid_gaps;
|
||||||
extern Fluid_Coord_Input *widget_grid_curr_row;
|
extern fld::widget::Formula_Input *widget_grid_curr_row;
|
||||||
extern Fl_Group *widget_grid_curr_row_attributes;
|
extern Fl_Group *widget_grid_curr_row_attributes;
|
||||||
extern Fluid_Coord_Input *widget_grid_curr_col;
|
extern fld::widget::Formula_Input *widget_grid_curr_col;
|
||||||
extern Fl_Group *widget_grid_curr_col_attributes;
|
extern Fl_Group *widget_grid_curr_col_attributes;
|
||||||
extern Fl_Tabs *widget_tabs_repo;
|
extern Fl_Tabs *widget_tabs_repo;
|
||||||
extern void live_mode_cb(Fl_Button*, void*);
|
extern void live_mode_cb(Fl_Button*, void*);
|
||||||
|
|||||||
@@ -0,0 +1,128 @@
|
|||||||
|
//
|
||||||
|
// Widget Bin Button code for the Fast Light Tool Kit (FLTK).
|
||||||
|
//
|
||||||
|
// Copyright 1998-2025 by Bill Spitzak and others.
|
||||||
|
//
|
||||||
|
// This library is free software. Distribution and use rights are outlined in
|
||||||
|
// the file "COPYING" which should have been included with this file. If this
|
||||||
|
// file is missing or damaged, see the license at:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/COPYING.php
|
||||||
|
//
|
||||||
|
// Please see the following page on how to report bugs and issues:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/bugs.php
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "widgets/Bin_Button.h"
|
||||||
|
|
||||||
|
#include "app/fluid.h"
|
||||||
|
#include "nodes/factory.h"
|
||||||
|
#include "nodes/Fl_Window_Type.h"
|
||||||
|
#include "widgets/widget_browser.h"
|
||||||
|
|
||||||
|
#include <FL/Fl_Button.H>
|
||||||
|
#include <FL/Fl_Window.H>
|
||||||
|
|
||||||
|
using namespace fld;
|
||||||
|
using namespace fld::widget;
|
||||||
|
|
||||||
|
|
||||||
|
/** \class fld::widget::Bin_Button
|
||||||
|
The Bin_Button button is a button that can be used in the widget bin to
|
||||||
|
allow the user to drag and drop widgets into a window or group. This feature
|
||||||
|
makes it easy for the user to position a widget at a specific location within
|
||||||
|
the window or group.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert mouse dragging into a drag and drop event.
|
||||||
|
*/
|
||||||
|
int fld::widget::Bin_Button::handle(int inEvent)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
switch (inEvent) {
|
||||||
|
case FL_PUSH:
|
||||||
|
Fl_Button::handle(inEvent);
|
||||||
|
return 1; // make sure that we get drag events
|
||||||
|
case FL_DRAG:
|
||||||
|
ret = Fl_Button::handle(inEvent);
|
||||||
|
if (!user_data())
|
||||||
|
return ret;
|
||||||
|
if (!Fl::event_is_click()) { // make it a dnd event
|
||||||
|
// fake a drag outside of the widget
|
||||||
|
Fl::e_x = x()-1;
|
||||||
|
Fl_Button::handle(inEvent);
|
||||||
|
// fake a button release
|
||||||
|
Fl_Button::handle(FL_RELEASE);
|
||||||
|
// make it into a dnd event
|
||||||
|
const char *type_name = (const char*)user_data();
|
||||||
|
Fl_Type::current_dnd = Fl_Type::current;
|
||||||
|
Fl::copy(type_name, (int)strlen(type_name)+1, 0);
|
||||||
|
Fl::dnd();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return Fl_Button::handle(inEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** \class fld::widget::Bin_Window_Button
|
||||||
|
The Bin_Window_Button button is used in the widget bin to create new
|
||||||
|
windows by dragging and dropping. When the button is dragged and dropped onto
|
||||||
|
the desktop, a new window will be created at the drop location.
|
||||||
|
|
||||||
|
This does not work in Wayland because Wayland does not allow client
|
||||||
|
applications to control window placement.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convert mouse dragging into a drag and drop event.
|
||||||
|
*/
|
||||||
|
int fld::widget::Bin_Window_Button::handle(int inEvent)
|
||||||
|
{
|
||||||
|
static Fl_Window *drag_win = NULL;
|
||||||
|
int ret = 0;
|
||||||
|
switch (inEvent) {
|
||||||
|
case FL_PUSH:
|
||||||
|
Fl_Button::handle(inEvent);
|
||||||
|
return 1; // make sure that we get drag events
|
||||||
|
case FL_DRAG:
|
||||||
|
ret = Fl_Button::handle(inEvent);
|
||||||
|
if (!user_data())
|
||||||
|
return ret;
|
||||||
|
if (!Fl::event_is_click()) {
|
||||||
|
if (!drag_win) {
|
||||||
|
drag_win = new Fl_Window(0, 0, 480, 320);
|
||||||
|
drag_win->border(0);
|
||||||
|
drag_win->set_non_modal();
|
||||||
|
}
|
||||||
|
if (drag_win) {
|
||||||
|
drag_win->position(Fl::event_x_root()+1, Fl::event_y_root()+1);
|
||||||
|
drag_win->show();
|
||||||
|
}
|
||||||
|
// Does not work outside window: fl_cursor(FL_CURSOR_HAND);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
case FL_RELEASE:
|
||||||
|
if (drag_win) {
|
||||||
|
Fl::delete_widget(drag_win);
|
||||||
|
drag_win = NULL;
|
||||||
|
// create a new window here
|
||||||
|
Fl_Type *prototype = typename_to_prototype((char*)user_data());
|
||||||
|
if (prototype) {
|
||||||
|
Fl_Type *new_type = add_new_widget_from_user(prototype, Strategy::AFTER_CURRENT);
|
||||||
|
if (new_type && new_type->is_a(ID_Window)) {
|
||||||
|
Fl_Window_Type *new_window = (Fl_Window_Type*)new_type;
|
||||||
|
Fl_Window *w = (Fl_Window *)new_window->o;
|
||||||
|
w->position(Fl::event_x_root(), Fl::event_y_root());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
widget_browser->display(Fl_Type::current);
|
||||||
|
widget_browser->rebuild();
|
||||||
|
}
|
||||||
|
return Fl_Button::handle(inEvent);
|
||||||
|
}
|
||||||
|
return Fl_Button::handle(inEvent);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
//
|
||||||
|
// Widget Bin Button header file for the Fast Light Tool Kit (FLTK).
|
||||||
|
//
|
||||||
|
// Copyright 1998-2025 by Bill Spitzak and others.
|
||||||
|
//
|
||||||
|
// This library is free software. Distribution and use rights are outlined in
|
||||||
|
// the file "COPYING" which should have been included with this file. If this
|
||||||
|
// file is missing or damaged, see the license at:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/COPYING.php
|
||||||
|
//
|
||||||
|
// Please see the following page on how to report bugs and issues:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/bugs.php
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef FLUID_WIDGETS_BIN_BUTTON_H
|
||||||
|
#define FLUID_WIDGETS_BIN_BUTTON_H
|
||||||
|
|
||||||
|
#include <FL/Fl_Button.H>
|
||||||
|
|
||||||
|
namespace fld {
|
||||||
|
namespace widget {
|
||||||
|
|
||||||
|
// Adding drag and drop for dragging widgets into windows.
|
||||||
|
class Bin_Button : public Fl_Button {
|
||||||
|
public:
|
||||||
|
int handle(int) override;
|
||||||
|
Bin_Button(int X,int Y,int W,int H, const char* l = nullptr) :
|
||||||
|
Fl_Button(X,Y,W,H,l) { }
|
||||||
|
};
|
||||||
|
|
||||||
|
// Adding drag and drop functionality to drag window prototypes onto the desktop.
|
||||||
|
class Bin_Window_Button : public Fl_Button {
|
||||||
|
public:
|
||||||
|
int handle(int) override;
|
||||||
|
Bin_Window_Button(int X,int Y,int W,int H, const char* l = nullptr) :
|
||||||
|
Fl_Button(X,Y,W,H,l) { }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace widget
|
||||||
|
} // namespace fld
|
||||||
|
|
||||||
|
#endif // FLUID_WIDGETS_BIN_BUTTON_H
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
//
|
|
||||||
// Code editor widget for the Fast Light Tool Kit (FLTK).
|
|
||||||
// Syntax highlighting rewritten by erco@seriss.com 09/15/20.
|
|
||||||
//
|
|
||||||
// Copyright 1998-2025 by Bill Spitzak and others.
|
|
||||||
//
|
|
||||||
// This library is free software. Distribution and use rights are outlined in
|
|
||||||
// the file "COPYING" which should have been included with this file. If this
|
|
||||||
// file is missing or damaged, see the license at:
|
|
||||||
//
|
|
||||||
// https://www.fltk.org/COPYING.php
|
|
||||||
//
|
|
||||||
// Please see the following page on how to report bugs and issues:
|
|
||||||
//
|
|
||||||
// https://www.fltk.org/bugs.php
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef CodeEditor_h
|
|
||||||
#define CodeEditor_h
|
|
||||||
|
|
||||||
//
|
|
||||||
// Include necessary headers...
|
|
||||||
//
|
|
||||||
|
|
||||||
#include "StyleParse.h"
|
|
||||||
|
|
||||||
#include <FL/Fl.H>
|
|
||||||
#include <FL/Fl_Text_Buffer.H>
|
|
||||||
#include <FL/Fl_Text_Editor.H>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
|
|
||||||
// ---- CodeEditor declaration
|
|
||||||
|
|
||||||
/**
|
|
||||||
A widget derived from Fl_Text_Editor that implements C++ code highlighting.
|
|
||||||
|
|
||||||
CodeEditor is used in Fluid whenever the user can edit C++ source
|
|
||||||
code or header text.
|
|
||||||
*/
|
|
||||||
class CodeEditor : public Fl_Text_Editor {
|
|
||||||
friend class StyleParse;
|
|
||||||
|
|
||||||
static Fl_Text_Display::Style_Table_Entry styletable[];
|
|
||||||
static void style_parse(const char *tbuff, char *sbuff, int len, char style);
|
|
||||||
static void style_unfinished_cb(int, void*);
|
|
||||||
static void style_update(int pos, int nInserted, int nDeleted,
|
|
||||||
int /*nRestyled*/, const char * /*deletedText*/,
|
|
||||||
void *cbArg);
|
|
||||||
static int auto_indent(int, CodeEditor* e);
|
|
||||||
|
|
||||||
public:
|
|
||||||
CodeEditor(int X, int Y, int W, int H, const char *L=0);
|
|
||||||
~CodeEditor();
|
|
||||||
void textsize(Fl_Fontsize s);
|
|
||||||
|
|
||||||
/// access to protected member get_absolute_top_line_number()
|
|
||||||
int top_line() { return get_absolute_top_line_number(); }
|
|
||||||
|
|
||||||
/// access to protected member mTopLineNum
|
|
||||||
int scroll_row() { return mTopLineNum; }
|
|
||||||
|
|
||||||
/// access to protected member mHorizOffset
|
|
||||||
int scroll_col() { return mHorizOffset; }
|
|
||||||
};
|
|
||||||
|
|
||||||
// ---- CodeViewer declaration
|
|
||||||
|
|
||||||
/**
|
|
||||||
A widget derived from CodeEditor with highlighting for code blocks.
|
|
||||||
|
|
||||||
This widget is used by the codeview system to show the design's
|
|
||||||
source and header code. The secondary highlighting show the text
|
|
||||||
part that corresponds to the selected widget(s).
|
|
||||||
*/
|
|
||||||
class CodeViewer : public CodeEditor {
|
|
||||||
public:
|
|
||||||
CodeViewer(int X, int Y, int W, int H, const char *L=0);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void draw() FL_OVERRIDE;
|
|
||||||
|
|
||||||
/// Limit event handling to viewing, not editing
|
|
||||||
int handle(int ev) FL_OVERRIDE { return Fl_Text_Display::handle(ev); }
|
|
||||||
};
|
|
||||||
|
|
||||||
// ---- Project File Text Viewer declaration
|
|
||||||
|
|
||||||
/**
|
|
||||||
A text viewer with an additional highlighting color scheme.
|
|
||||||
*/
|
|
||||||
class TextViewer : public Fl_Text_Display {
|
|
||||||
public:
|
|
||||||
TextViewer(int X, int Y, int W, int H, const char *L=0);
|
|
||||||
~TextViewer();
|
|
||||||
void draw() FL_OVERRIDE;
|
|
||||||
|
|
||||||
/// access to protected member get_absolute_top_line_number()
|
|
||||||
int top_line() { return get_absolute_top_line_number(); }
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // !CodeEditor_h
|
|
||||||
@@ -19,20 +19,18 @@
|
|||||||
// Include necessary headers...
|
// Include necessary headers...
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "widgets/CodeEditor.h"
|
#include "widgets/Code_Editor.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
using namespace fld;
|
||||||
#include <stdlib.h>
|
using namespace fld::widget;
|
||||||
#include <string.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
|
|
||||||
// ---- CodeEditor implementation
|
// ---- Code_Editor implementation
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Lookup table for all supported styles.
|
Lookup table for all supported styles.
|
||||||
Every table entry describes a rendering style for the corresponding text.
|
Every table entry describes a rendering style for the corresponding text.
|
||||||
*/
|
*/
|
||||||
Fl_Text_Display::Style_Table_Entry CodeEditor::styletable[] = { // Style table
|
Fl_Text_Display::Style_Table_Entry Code_Editor::styletable[] = { // Style table
|
||||||
{ FL_FOREGROUND_COLOR, FL_COURIER, 11 }, // A - Plain
|
{ FL_FOREGROUND_COLOR, FL_COURIER, 11 }, // A - Plain
|
||||||
{ FL_DARK_GREEN, FL_COURIER_ITALIC, 11 }, // B - Line comments
|
{ FL_DARK_GREEN, FL_COURIER_ITALIC, 11 }, // B - Line comments
|
||||||
{ FL_DARK_GREEN, FL_COURIER_ITALIC, 11 }, // C - Block comments
|
{ FL_DARK_GREEN, FL_COURIER_ITALIC, 11 }, // C - Block comments
|
||||||
@@ -50,7 +48,7 @@ Fl_Text_Display::Style_Table_Entry CodeEditor::styletable[] = { // Style table
|
|||||||
\param[in] in_len byte length to parse
|
\param[in] in_len byte length to parse
|
||||||
\param[in] in_style starting style letter
|
\param[in] in_style starting style letter
|
||||||
*/
|
*/
|
||||||
void CodeEditor::style_parse(const char *in_tbuff, // text buffer to parse
|
void Code_Editor::style_parse(const char *in_tbuff, // text buffer to parse
|
||||||
char *in_sbuff, // style buffer we modify
|
char *in_sbuff, // style buffer we modify
|
||||||
int in_len, // byte length to parse
|
int in_len, // byte length to parse
|
||||||
char in_style) { // starting style letter
|
char in_style) { // starting style letter
|
||||||
@@ -65,7 +63,7 @@ void CodeEditor::style_parse(const char *in_tbuff, // text buffer to par
|
|||||||
// 'G' - Keywords if, while..
|
// 'G' - Keywords if, while..
|
||||||
// 'H' - Chars 'x'
|
// 'H' - Chars 'x'
|
||||||
|
|
||||||
StyleParse sp;
|
Style_Parser sp;
|
||||||
sp.tbuff = in_tbuff;
|
sp.tbuff = in_tbuff;
|
||||||
sp.sbuff = in_sbuff;
|
sp.sbuff = in_sbuff;
|
||||||
sp.len = in_len;
|
sp.len = in_len;
|
||||||
@@ -103,7 +101,7 @@ void CodeEditor::style_parse(const char *in_tbuff, // text buffer to par
|
|||||||
/**
|
/**
|
||||||
Update unfinished styles.
|
Update unfinished styles.
|
||||||
*/
|
*/
|
||||||
void CodeEditor::style_unfinished_cb(int, void*) {
|
void Code_Editor::style_unfinished_cb(int, void*) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -113,10 +111,10 @@ void CodeEditor::style_unfinished_cb(int, void*) {
|
|||||||
\param[in] nDeleted number of bytes deleted
|
\param[in] nDeleted number of bytes deleted
|
||||||
\param[in] cbArg pointer back to the code editor
|
\param[in] cbArg pointer back to the code editor
|
||||||
*/
|
*/
|
||||||
void CodeEditor::style_update(int pos, int nInserted, int nDeleted,
|
void Code_Editor::style_update(int pos, int nInserted, int nDeleted,
|
||||||
int /*nRestyled*/, const char * /*deletedText*/,
|
int /*nRestyled*/, const char * /*deletedText*/,
|
||||||
void *cbArg) {
|
void *cbArg) {
|
||||||
CodeEditor *editor = (CodeEditor*)cbArg;
|
Code_Editor *editor = (Code_Editor*)cbArg;
|
||||||
char *style, // Style data
|
char *style, // Style data
|
||||||
*text; // Text data
|
*text; // Text data
|
||||||
|
|
||||||
@@ -164,7 +162,7 @@ void CodeEditor::style_update(int pos, int nInserted, int nDeleted,
|
|||||||
Find the right indentation depth after pressing the Enter key.
|
Find the right indentation depth after pressing the Enter key.
|
||||||
\param[in] e pointer back to the code editor
|
\param[in] e pointer back to the code editor
|
||||||
*/
|
*/
|
||||||
int CodeEditor::auto_indent(int, CodeEditor* e) {
|
int Code_Editor::auto_indent(int, Code_Editor* e) {
|
||||||
if (e->buffer()->selected()) {
|
if (e->buffer()->selected()) {
|
||||||
e->insert_position(e->buffer()->primary_selection()->start());
|
e->insert_position(e->buffer()->primary_selection()->start());
|
||||||
e->buffer()->remove_selection();
|
e->buffer()->remove_selection();
|
||||||
@@ -198,11 +196,11 @@ int CodeEditor::auto_indent(int, CodeEditor* e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Create a CodeEditor widget.
|
Create a Code_Editor widget.
|
||||||
\param[in] X, Y, W, H position and size of the widget
|
\param[in] X, Y, W, H position and size of the widget
|
||||||
\param[in] L optional label
|
\param[in] L optional label
|
||||||
*/
|
*/
|
||||||
CodeEditor::CodeEditor(int X, int Y, int W, int H, const char *L) :
|
Code_Editor::Code_Editor(int X, int Y, int W, int H, const char *L) :
|
||||||
Fl_Text_Editor(X, Y, W, H, L) {
|
Fl_Text_Editor(X, Y, W, H, L) {
|
||||||
buffer(new Fl_Text_Buffer);
|
buffer(new Fl_Text_Buffer);
|
||||||
|
|
||||||
@@ -228,9 +226,9 @@ CodeEditor::CodeEditor(int X, int Y, int W, int H, const char *L) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destroy a CodeEditor widget.
|
Destroy a Code_Editor widget.
|
||||||
*/
|
*/
|
||||||
CodeEditor::~CodeEditor() {
|
Code_Editor::~Code_Editor() {
|
||||||
Fl_Text_Buffer *buf = mStyleBuffer;
|
Fl_Text_Buffer *buf = mStyleBuffer;
|
||||||
mStyleBuffer = 0;
|
mStyleBuffer = 0;
|
||||||
delete buf;
|
delete buf;
|
||||||
@@ -245,7 +243,7 @@ CodeEditor::~CodeEditor() {
|
|||||||
This works by updating the fontsizes in the style table.
|
This works by updating the fontsizes in the style table.
|
||||||
\param[in] s the new general height of the text font
|
\param[in] s the new general height of the text font
|
||||||
*/
|
*/
|
||||||
void CodeEditor::textsize(Fl_Fontsize s) {
|
void Code_Editor::textsize(Fl_Fontsize s) {
|
||||||
Fl_Text_Editor::textsize(s); // call base class method
|
Fl_Text_Editor::textsize(s); // call base class method
|
||||||
// now attempt to update our styletable to honor the new size...
|
// now attempt to update our styletable to honor the new size...
|
||||||
int entries = sizeof(styletable) / sizeof(styletable[0]);
|
int entries = sizeof(styletable) / sizeof(styletable[0]);
|
||||||
@@ -254,63 +252,3 @@ void CodeEditor::textsize(Fl_Fontsize s) {
|
|||||||
}
|
}
|
||||||
} // textsize
|
} // textsize
|
||||||
|
|
||||||
// ---- CodeViewer implementation
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create a CodeViewer widget.
|
|
||||||
\param[in] X, Y, W, H position and size of the widget
|
|
||||||
\param[in] L optional label
|
|
||||||
*/
|
|
||||||
CodeViewer::CodeViewer(int X, int Y, int W, int H, const char *L)
|
|
||||||
: CodeEditor(X, Y, W, H, L)
|
|
||||||
{
|
|
||||||
default_key_function(kf_ignore);
|
|
||||||
remove_all_key_bindings(&key_bindings);
|
|
||||||
cursor_style(CARET_CURSOR);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Tricking Fl_Text_Display into using bearable colors for this specific task.
|
|
||||||
*/
|
|
||||||
void CodeViewer::draw()
|
|
||||||
{
|
|
||||||
Fl_Color c = Fl::get_color(FL_SELECTION_COLOR);
|
|
||||||
Fl::set_color(FL_SELECTION_COLOR, fl_color_average(FL_BACKGROUND_COLOR, FL_FOREGROUND_COLOR, 0.9f));
|
|
||||||
CodeEditor::draw();
|
|
||||||
Fl::set_color(FL_SELECTION_COLOR, c);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---- TextViewer implementation
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create a TextViewer widget.
|
|
||||||
\param[in] X, Y, W, H position and size of the widget
|
|
||||||
\param[in] L optional label
|
|
||||||
*/
|
|
||||||
TextViewer::TextViewer(int X, int Y, int W, int H, const char *L)
|
|
||||||
: Fl_Text_Display(X, Y, W, H, L)
|
|
||||||
{
|
|
||||||
buffer(new Fl_Text_Buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Avoid memory leaks.
|
|
||||||
*/
|
|
||||||
TextViewer::~TextViewer() {
|
|
||||||
Fl_Text_Buffer *buf = mBuffer;
|
|
||||||
buffer(0);
|
|
||||||
delete buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Tricking Fl_Text_Display into using bearable colors for this specific task.
|
|
||||||
*/
|
|
||||||
void TextViewer::draw()
|
|
||||||
{
|
|
||||||
Fl_Color c = Fl::get_color(FL_SELECTION_COLOR);
|
|
||||||
Fl::set_color(FL_SELECTION_COLOR, fl_color_average(FL_BACKGROUND_COLOR, FL_FOREGROUND_COLOR, 0.9f));
|
|
||||||
Fl_Text_Display::draw();
|
|
||||||
Fl::set_color(FL_SELECTION_COLOR, c);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
//
|
||||||
|
// Code editor widget for the Fast Light Tool Kit (FLTK).
|
||||||
|
// Syntax highlighting rewritten by erco@seriss.com 09/15/20.
|
||||||
|
//
|
||||||
|
// Copyright 1998-2025 by Bill Spitzak and others.
|
||||||
|
//
|
||||||
|
// This library is free software. Distribution and use rights are outlined in
|
||||||
|
// the file "COPYING" which should have been included with this file. If this
|
||||||
|
// file is missing or damaged, see the license at:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/COPYING.php
|
||||||
|
//
|
||||||
|
// Please see the following page on how to report bugs and issues:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/bugs.php
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef FLUID_WIDGETS_CODE_EDITOR_H
|
||||||
|
#define FLUID_WIDGETS_CODE_EDITOR_H
|
||||||
|
|
||||||
|
//
|
||||||
|
// Include necessary headers...
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "Style_Parser.h"
|
||||||
|
|
||||||
|
#include <FL/Fl_Text_Editor.H>
|
||||||
|
|
||||||
|
namespace fld {
|
||||||
|
namespace widget {
|
||||||
|
|
||||||
|
// ---- Code_Editor declaration
|
||||||
|
|
||||||
|
/**
|
||||||
|
A widget derived from Fl_Text_Editor that implements C++ code highlighting.
|
||||||
|
|
||||||
|
Code_Editor is used in Fluid whenever the user can edit C++ source
|
||||||
|
code or header text.
|
||||||
|
*/
|
||||||
|
class Code_Editor : public Fl_Text_Editor {
|
||||||
|
friend class Style_Parser;
|
||||||
|
|
||||||
|
static Fl_Text_Display::Style_Table_Entry styletable[];
|
||||||
|
static void style_parse(const char *tbuff, char *sbuff, int len, char style);
|
||||||
|
static void style_unfinished_cb(int, void*);
|
||||||
|
static void style_update(int pos, int nInserted, int nDeleted,
|
||||||
|
int /*nRestyled*/, const char * /*deletedText*/,
|
||||||
|
void *cbArg);
|
||||||
|
static int auto_indent(int, Code_Editor* e);
|
||||||
|
|
||||||
|
public:
|
||||||
|
Code_Editor(int X, int Y, int W, int H, const char *L=0);
|
||||||
|
~Code_Editor();
|
||||||
|
void textsize(Fl_Fontsize s);
|
||||||
|
|
||||||
|
/// access to protected member get_absolute_top_line_number()
|
||||||
|
int top_line() { return get_absolute_top_line_number(); }
|
||||||
|
|
||||||
|
/// access to protected member mTopLineNum
|
||||||
|
int scroll_row() { return mTopLineNum; }
|
||||||
|
|
||||||
|
/// access to protected member mHorizOffset
|
||||||
|
int scroll_col() { return mHorizOffset; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace widget
|
||||||
|
} // namespace fld
|
||||||
|
|
||||||
|
|
||||||
|
#endif // FLUID_WIDGETS_CODE_EDITOR_H
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
//
|
||||||
|
// Code editor widget for the Fast Light Tool Kit (FLTK).
|
||||||
|
// Syntax highlighting rewritten by erco@seriss.com 09/15/20.
|
||||||
|
//
|
||||||
|
// Copyright 1998-2025 by Bill Spitzak and others.
|
||||||
|
//
|
||||||
|
// This library is free software. Distribution and use rights are outlined in
|
||||||
|
// the file "COPYING" which should have been included with this file. If this
|
||||||
|
// file is missing or damaged, see the license at:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/COPYING.php
|
||||||
|
//
|
||||||
|
// Please see the following page on how to report bugs and issues:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/bugs.php
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
// Include necessary headers...
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "widgets/Code_Viewer.h"
|
||||||
|
|
||||||
|
using namespace fld;
|
||||||
|
using namespace fld::widget;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create a fld::widget::Code_Viewer widget.
|
||||||
|
\param[in] X, Y, W, H position and size of the widget
|
||||||
|
\param[in] L optional label
|
||||||
|
*/
|
||||||
|
Code_Viewer::Code_Viewer(int X, int Y, int W, int H, const char *L)
|
||||||
|
: Code_Editor(X, Y, W, H, L)
|
||||||
|
{
|
||||||
|
default_key_function(kf_ignore);
|
||||||
|
remove_all_key_bindings(&key_bindings);
|
||||||
|
cursor_style(CARET_CURSOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Tricking Fl_Text_Display into using bearable colors for this specific task.
|
||||||
|
*/
|
||||||
|
void Code_Viewer::draw()
|
||||||
|
{
|
||||||
|
Fl_Color c = Fl::get_color(FL_SELECTION_COLOR);
|
||||||
|
Fl::set_color(FL_SELECTION_COLOR, fl_color_average(FL_BACKGROUND_COLOR, FL_FOREGROUND_COLOR, 0.9f));
|
||||||
|
Code_Editor::draw();
|
||||||
|
Fl::set_color(FL_SELECTION_COLOR, c);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
//
|
||||||
|
// Code editor widget for the Fast Light Tool Kit (FLTK).
|
||||||
|
// Syntax highlighting rewritten by erco@seriss.com 09/15/20.
|
||||||
|
//
|
||||||
|
// Copyright 1998-2025 by Bill Spitzak and others.
|
||||||
|
//
|
||||||
|
// This library is free software. Distribution and use rights are outlined in
|
||||||
|
// the file "COPYING" which should have been included with this file. If this
|
||||||
|
// file is missing or damaged, see the license at:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/COPYING.php
|
||||||
|
//
|
||||||
|
// Please see the following page on how to report bugs and issues:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/bugs.php
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef FLUID_WIDGETS_CODE_VIEWER_H
|
||||||
|
#define FLUID_WIDGETS_CODE_VIEWER_H
|
||||||
|
|
||||||
|
//
|
||||||
|
// Include necessary headers...
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "widgets/Code_Editor.h"
|
||||||
|
|
||||||
|
namespace fld {
|
||||||
|
namespace widget {
|
||||||
|
|
||||||
|
/**
|
||||||
|
A widget derived from Code_Editor with highlighting for code blocks.
|
||||||
|
|
||||||
|
This widget is used by the codeview system to show the design's
|
||||||
|
source and header code. The secondary highlighting show the text
|
||||||
|
part that corresponds to the selected widget(s).
|
||||||
|
*/
|
||||||
|
class Code_Viewer : public Code_Editor {
|
||||||
|
public:
|
||||||
|
Code_Viewer(int X, int Y, int W, int H, const char *L = nullptr);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void draw() override;
|
||||||
|
|
||||||
|
/// Limit event handling to viewing, not editing
|
||||||
|
int handle(int ev) override { return Fl_Text_Display::handle(ev); }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace widget
|
||||||
|
} // namespace fld
|
||||||
|
|
||||||
|
#endif // FLUID_WIDGETS_CODE_VIEWER_H
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
//
|
//
|
||||||
// Widget type code for the Fast Light Tool Kit (FLTK).
|
// Widget type code for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
// Copyright 1998-2023 by Bill Spitzak and others.
|
// Copyright 1998-2025 by Bill Spitzak and others.
|
||||||
//
|
//
|
||||||
// This library is free software. Distribution and use rights are outlined in
|
// This library is free software. Distribution and use rights are outlined in
|
||||||
// the file "COPYING" which should have been included with this file. If this
|
// the file "COPYING" which should have been included with this file. If this
|
||||||
@@ -14,119 +14,20 @@
|
|||||||
// https://www.fltk.org/bugs.php
|
// https://www.fltk.org/bugs.php
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "widgets/custom_widgets.h"
|
#include "widgets/Formula_Input.h"
|
||||||
|
|
||||||
#include "app/fluid.h"
|
|
||||||
#include "nodes/Fl_Window_Type.h"
|
|
||||||
#include "nodes/factory.h"
|
|
||||||
#include "panels/widget_panel.h"
|
|
||||||
#include "widgets/widget_browser.h"
|
|
||||||
|
|
||||||
#include <FL/platform.H>
|
|
||||||
#include <FL/Fl_Button.H>
|
|
||||||
#include <FL/Fl_Window.H>
|
|
||||||
#include <FL/fl_draw.H>
|
|
||||||
#include <FL/Fl_Menu_.H>
|
|
||||||
#include <FL/fl_string_functions.h>
|
#include <FL/fl_string_functions.h>
|
||||||
#include "../src/flstring.h"
|
#include "../src/flstring.h"
|
||||||
|
|
||||||
/** \class Widget_Bin_Button
|
#include <stdlib.h>
|
||||||
The Widget_Bin_Button button is a button that can be used in the widget bin to
|
#include <ctype.h>
|
||||||
allow the user to drag and drop widgets into a window or group. This feature
|
#include <string.h>
|
||||||
makes it easy for the user to position a widget at a specific location within
|
|
||||||
the window or group.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
using namespace fld;
|
||||||
Convert mouse dragging into a drag and drop event.
|
using namespace fld::widget;
|
||||||
*/
|
|
||||||
int Widget_Bin_Button::handle(int inEvent)
|
|
||||||
{
|
|
||||||
int ret = 0;
|
|
||||||
switch (inEvent) {
|
|
||||||
case FL_PUSH:
|
|
||||||
Fl_Button::handle(inEvent);
|
|
||||||
return 1; // make sure that we get drag events
|
|
||||||
case FL_DRAG:
|
|
||||||
ret = Fl_Button::handle(inEvent);
|
|
||||||
if (!user_data())
|
|
||||||
return ret;
|
|
||||||
if (!Fl::event_is_click()) { // make it a dnd event
|
|
||||||
// fake a drag outside of the widget
|
|
||||||
Fl::e_x = x()-1;
|
|
||||||
Fl_Button::handle(inEvent);
|
|
||||||
// fake a button release
|
|
||||||
Fl_Button::handle(FL_RELEASE);
|
|
||||||
// make it into a dnd event
|
|
||||||
const char *type_name = (const char*)user_data();
|
|
||||||
Fl_Type::current_dnd = Fl_Type::current;
|
|
||||||
Fl::copy(type_name, (int)strlen(type_name)+1, 0);
|
|
||||||
Fl::dnd();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
return Fl_Button::handle(inEvent);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** \class Widget_Bin_Window_Button
|
/** \class fld::widget::Formula_Input
|
||||||
The Widget_Bin_Window_Button button is used in the widget bin to create new
|
The Formula_Input widget is an input field for entering widget coordinates
|
||||||
windows by dragging and dropping. When the button is dragged and dropped onto
|
|
||||||
the desktop, a new window will be created at the drop location.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
Convert mouse dragging into a drag and drop event.
|
|
||||||
*/
|
|
||||||
int Widget_Bin_Window_Button::handle(int inEvent)
|
|
||||||
{
|
|
||||||
static Fl_Window *drag_win = NULL;
|
|
||||||
int ret = 0;
|
|
||||||
switch (inEvent) {
|
|
||||||
case FL_PUSH:
|
|
||||||
Fl_Button::handle(inEvent);
|
|
||||||
return 1; // make sure that we get drag events
|
|
||||||
case FL_DRAG:
|
|
||||||
ret = Fl_Button::handle(inEvent);
|
|
||||||
if (!user_data())
|
|
||||||
return ret;
|
|
||||||
if (!Fl::event_is_click()) {
|
|
||||||
if (!drag_win) {
|
|
||||||
drag_win = new Fl_Window(0, 0, 480, 320);
|
|
||||||
drag_win->border(0);
|
|
||||||
drag_win->set_non_modal();
|
|
||||||
}
|
|
||||||
if (drag_win) {
|
|
||||||
drag_win->position(Fl::event_x_root()+1, Fl::event_y_root()+1);
|
|
||||||
drag_win->show();
|
|
||||||
}
|
|
||||||
// Does not work outside window: fl_cursor(FL_CURSOR_HAND);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
case FL_RELEASE:
|
|
||||||
if (drag_win) {
|
|
||||||
Fl::delete_widget(drag_win);
|
|
||||||
drag_win = NULL;
|
|
||||||
// create a new window here
|
|
||||||
Fl_Type *prototype = typename_to_prototype((char*)user_data());
|
|
||||||
if (prototype) {
|
|
||||||
Fl_Type *new_type = add_new_widget_from_user(prototype, Strategy::AFTER_CURRENT);
|
|
||||||
if (new_type && new_type->is_a(ID_Window)) {
|
|
||||||
Fl_Window_Type *new_window = (Fl_Window_Type*)new_type;
|
|
||||||
Fl_Window *w = (Fl_Window *)new_window->o;
|
|
||||||
w->position(Fl::event_x_root(), Fl::event_y_root());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
widget_browser->display(Fl_Type::current);
|
|
||||||
widget_browser->rebuild();
|
|
||||||
}
|
|
||||||
return Fl_Button::handle(inEvent);
|
|
||||||
}
|
|
||||||
return Fl_Button::handle(inEvent);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** \class Fluid_Coord_Input
|
|
||||||
The Fluid_Coord_Input widget is an input field for entering widget coordinates
|
|
||||||
and sizes. It includes basic math capabilities and allows the use of variables
|
and sizes. It includes basic math capabilities and allows the use of variables
|
||||||
in formulas. This widget is useful for specifying precise positions and
|
in formulas. This widget is useful for specifying precise positions and
|
||||||
dimensions for widgets in a graphical user interface.
|
dimensions for widgets in a graphical user interface.
|
||||||
@@ -135,21 +36,18 @@ int Widget_Bin_Window_Button::handle(int inEvent)
|
|||||||
/**
|
/**
|
||||||
Create an input field.
|
Create an input field.
|
||||||
*/
|
*/
|
||||||
Fluid_Coord_Input::Fluid_Coord_Input(int x, int y, int w, int h, const char *l) :
|
Formula_Input::Formula_Input(int x, int y, int w, int h, const char *l)
|
||||||
Fl_Input(x, y, w, h, l),
|
: Fl_Input(x, y, w, h, l)
|
||||||
user_callback_(0L),
|
|
||||||
vars_(0L),
|
|
||||||
vars_user_data_(0L)
|
|
||||||
{
|
{
|
||||||
Fl_Input::callback((Fl_Callback*)callback_handler_cb);
|
Fl_Input::callback((Fl_Callback*)callback_handler_cb);
|
||||||
text("0");
|
text("0");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Fluid_Coord_Input::callback_handler_cb(Fluid_Coord_Input *This, void *v) {
|
void Formula_Input::callback_handler_cb(Formula_Input *This, void *v) {
|
||||||
This->callback_handler(v);
|
This->callback_handler(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Fluid_Coord_Input::callback_handler(void *v) {
|
void Formula_Input::callback_handler(void *v) {
|
||||||
if (user_callback_)
|
if (user_callback_)
|
||||||
(*user_callback_)(this, v);
|
(*user_callback_)(this, v);
|
||||||
// do *not* update the value to show the evaluated formula here, because the
|
// do *not* update the value to show the evaluated formula here, because the
|
||||||
@@ -165,7 +63,7 @@ void Fluid_Coord_Input::callback_handler(void *v) {
|
|||||||
the last character of the variable name when returning.
|
the last character of the variable name when returning.
|
||||||
\return the integer value that was found or calculated
|
\return the integer value that was found or calculated
|
||||||
*/
|
*/
|
||||||
int Fluid_Coord_Input::eval_var(uchar *&s) const {
|
int Formula_Input::eval_var(uchar *&s) const {
|
||||||
if (!vars_)
|
if (!vars_)
|
||||||
return 0;
|
return 0;
|
||||||
// find the end of the variable name
|
// find the end of the variable name
|
||||||
@@ -173,7 +71,7 @@ int Fluid_Coord_Input::eval_var(uchar *&s) const {
|
|||||||
while (isalpha(*s)) s++;
|
while (isalpha(*s)) s++;
|
||||||
int n = (int)(s-v);
|
int n = (int)(s-v);
|
||||||
// find the variable in the list
|
// find the variable in the list
|
||||||
for (Fluid_Coord_Input_Vars *vars = vars_; vars->name_; vars++) {
|
for (Formula_Input_Vars *vars = vars_; vars->name_; vars++) {
|
||||||
if (strncmp((char*)v, vars->name_, n)==0 && vars->name_[n]==0)
|
if (strncmp((char*)v, vars->name_, n)==0 && vars->name_[n]==0)
|
||||||
return vars->callback_(this, vars_user_data_);
|
return vars->callback_(this, vars_user_data_);
|
||||||
}
|
}
|
||||||
@@ -187,7 +85,7 @@ int Fluid_Coord_Input::eval_var(uchar *&s) const {
|
|||||||
\param prio priority of current operation
|
\param prio priority of current operation
|
||||||
\return the value so far
|
\return the value so far
|
||||||
*/
|
*/
|
||||||
int Fluid_Coord_Input::eval(uchar *&s, int prio) const {
|
int Formula_Input::eval(uchar *&s, int prio) const {
|
||||||
int v = 0, sgn = 1;
|
int v = 0, sgn = 1;
|
||||||
uchar c = *s++;
|
uchar c = *s++;
|
||||||
|
|
||||||
@@ -248,7 +146,7 @@ int Fluid_Coord_Input::eval(uchar *&s, int prio) const {
|
|||||||
/**
|
/**
|
||||||
Evaluate a formula into an integer.
|
Evaluate a formula into an integer.
|
||||||
|
|
||||||
The Fluid_Coord_Input widget includes a formula interpreter that allows you
|
The Formula_Input widget includes a formula interpreter that allows you
|
||||||
to evaluate a string containing a mathematical formula and obtain the result
|
to evaluate a string containing a mathematical formula and obtain the result
|
||||||
as an integer. The interpreter supports unary plus and minus, basic integer
|
as an integer. The interpreter supports unary plus and minus, basic integer
|
||||||
math operations (such as addition, subtraction, multiplication, and division),
|
math operations (such as addition, subtraction, multiplication, and division),
|
||||||
@@ -259,7 +157,7 @@ int Fluid_Coord_Input::eval(uchar *&s, int prio) const {
|
|||||||
\param s formula as a C string
|
\param s formula as a C string
|
||||||
\return the calculated value
|
\return the calculated value
|
||||||
*/
|
*/
|
||||||
int Fluid_Coord_Input::eval(const char *s) const
|
int Formula_Input::eval(const char *s) const
|
||||||
{
|
{
|
||||||
// duplicate the text, so we can modify it
|
// duplicate the text, so we can modify it
|
||||||
uchar *buf = (uchar*)fl_strdup(s);
|
uchar *buf = (uchar*)fl_strdup(s);
|
||||||
@@ -281,14 +179,14 @@ int Fluid_Coord_Input::eval(const char *s) const
|
|||||||
/**
|
/**
|
||||||
Evaluate the formula and return the result.
|
Evaluate the formula and return the result.
|
||||||
*/
|
*/
|
||||||
int Fluid_Coord_Input::value() const {
|
int Formula_Input::value() const {
|
||||||
return eval(text());
|
return eval(text());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Set the field to an integer value, replacing previous texts.
|
Set the field to an integer value, replacing previous texts.
|
||||||
*/
|
*/
|
||||||
void Fluid_Coord_Input::value(int v) {
|
void Formula_Input::value(int v) {
|
||||||
char buf[32];
|
char buf[32];
|
||||||
fl_snprintf(buf, sizeof(buf), "%d", v);
|
fl_snprintf(buf, sizeof(buf), "%d", v);
|
||||||
text(buf);
|
text(buf);
|
||||||
@@ -297,7 +195,7 @@ void Fluid_Coord_Input::value(int v) {
|
|||||||
/**
|
/**
|
||||||
Allow vertical mouse dragging and mouse wheel to interactively change the value.
|
Allow vertical mouse dragging and mouse wheel to interactively change the value.
|
||||||
*/
|
*/
|
||||||
int Fluid_Coord_Input::handle(int event) {
|
int Formula_Input::handle(int event) {
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case FL_MOUSEWHEEL:
|
case FL_MOUSEWHEEL:
|
||||||
if (Fl::event_dy()) {
|
if (Fl::event_dy()) {
|
||||||
@@ -309,3 +207,11 @@ int Fluid_Coord_Input::handle(int event) {
|
|||||||
}
|
}
|
||||||
return Fl_Input::handle(event);
|
return Fl_Input::handle(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Set the list of the available variables
|
||||||
|
\param vars array of variables, last entry `has name_` set to `NULL`
|
||||||
|
\param user_data is forwarded to the Variable callback */
|
||||||
|
void Formula_Input::variables(Formula_Input_Vars *vars, void *user_data) {
|
||||||
|
vars_ = vars;
|
||||||
|
vars_user_data_ = user_data;
|
||||||
|
}
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
//
|
||||||
|
// Formula_Input widget header file for the Fast Light Tool Kit (FLTK).
|
||||||
|
//
|
||||||
|
// Copyright 1998-2025 by Bill Spitzak and others.
|
||||||
|
//
|
||||||
|
// This library is free software. Distribution and use rights are outlined in
|
||||||
|
// the file "COPYING" which should have been included with this file. If this
|
||||||
|
// file is missing or damaged, see the license at:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/COPYING.php
|
||||||
|
//
|
||||||
|
// Please see the following page on how to report bugs and issues:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/bugs.php
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef FLUID_WIDGETS_FORMULA_INPUT_H
|
||||||
|
#define FLUID_WIDGETS_FORMULA_INPUT_H
|
||||||
|
|
||||||
|
#include <FL/Fl_Input.H>
|
||||||
|
|
||||||
|
namespace fld {
|
||||||
|
namespace widget {
|
||||||
|
|
||||||
|
class Formula_Input;
|
||||||
|
|
||||||
|
// Callback signature for function returning the value of a variable.
|
||||||
|
typedef int (Fluid_Coord_Callback)(Formula_Input const *, void*);
|
||||||
|
|
||||||
|
// Entry for a list of variables available to an input field.
|
||||||
|
// Formula_Input::variables() expects an array of
|
||||||
|
// Formula_Input_Vars with the last entry's name_ set to NULL.
|
||||||
|
typedef struct Formula_Input_Vars {
|
||||||
|
const char *name_;
|
||||||
|
Fluid_Coord_Callback *callback_;
|
||||||
|
} Formula_Input_Vars;
|
||||||
|
|
||||||
|
// A text input widget that understands simple math.
|
||||||
|
class Formula_Input : public Fl_Input
|
||||||
|
{
|
||||||
|
Fl_Callback *user_callback_ { nullptr };
|
||||||
|
Formula_Input_Vars *vars_ { nullptr };
|
||||||
|
void *vars_user_data_ { nullptr };
|
||||||
|
|
||||||
|
static void callback_handler_cb(Formula_Input *This, void *v);
|
||||||
|
void callback_handler(void *v);
|
||||||
|
int eval_var(uchar *&s) const;
|
||||||
|
int eval(uchar *&s, int prio) const;
|
||||||
|
int eval(const char *s) const;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Formula_Input(int x, int y, int w, int h, const char *l = nullptr);
|
||||||
|
|
||||||
|
/** Return the text in the widget text field. */
|
||||||
|
const char *text() const { return Fl_Input::value(); }
|
||||||
|
|
||||||
|
/** Set the text in the text field */
|
||||||
|
void text(const char *v) { Fl_Input::value(v); }
|
||||||
|
|
||||||
|
int value() const;
|
||||||
|
void value(int v);
|
||||||
|
|
||||||
|
/** Set the general callback for this widget. */
|
||||||
|
void callback(Fl_Callback *cb) { user_callback_ = cb; }
|
||||||
|
|
||||||
|
void variables(fld::widget::Formula_Input_Vars *vars, void *user_data);
|
||||||
|
int handle(int) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace widget
|
||||||
|
} // namespace fld
|
||||||
|
|
||||||
|
#endif // FLUID_WIDGETS_FORMULA_INPUT_H
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
//
|
//
|
||||||
// Syntax highlighting for the Fast Light Tool Kit (FLTK).
|
// Syntax highlighting for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
// Copyright 1998-2020 by Bill Spitzak and others.
|
// Copyright 1998-2025 by Bill Spitzak and others.
|
||||||
// Copyright 2020 Greg Ercolano.
|
// Copyright 2020 Greg Ercolano.
|
||||||
//
|
//
|
||||||
// This library is free software. Distribution and use rights are outlined in
|
// This library is free software. Distribution and use rights are outlined in
|
||||||
@@ -15,13 +15,16 @@
|
|||||||
// https://www.fltk.org/bugs.php
|
// https://www.fltk.org/bugs.php
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "StyleParse.h"
|
#include "Style_Parser.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <stdlib.h> // bsearch()
|
#include <stdlib.h> // bsearch()
|
||||||
|
|
||||||
|
using namespace fld;
|
||||||
|
using namespace fld::widget;
|
||||||
|
|
||||||
// Sorted list of C/C++ keywords...
|
// Sorted list of C/C++ keywords...
|
||||||
static const char * const code_keywords[] = {
|
static const char * const code_keywords[] = {
|
||||||
"and",
|
"and",
|
||||||
@@ -130,7 +133,7 @@ static void* search_types(char *find) {
|
|||||||
// Applies the current style, advances to next text + style char.
|
// Applies the current style, advances to next text + style char.
|
||||||
// Returns 0 if hit end of buffer, 1 otherwise.
|
// Returns 0 if hit end of buffer, 1 otherwise.
|
||||||
//
|
//
|
||||||
int StyleParse::parse_over_char(int handle_crlf) {
|
int Style_Parser::parse_over_char(int handle_crlf) {
|
||||||
char c = *tbuff;
|
char c = *tbuff;
|
||||||
|
|
||||||
// End of line?
|
// End of line?
|
||||||
@@ -157,7 +160,7 @@ int StyleParse::parse_over_char(int handle_crlf) {
|
|||||||
// Parse over white space using current style
|
// Parse over white space using current style
|
||||||
// Returns 0 if hit end of buffer, 1 otherwise.
|
// Returns 0 if hit end of buffer, 1 otherwise.
|
||||||
//
|
//
|
||||||
int StyleParse::parse_over_white() {
|
int Style_Parser::parse_over_white() {
|
||||||
while ( len > 0 && strchr(" \t", *tbuff))
|
while ( len > 0 && strchr(" \t", *tbuff))
|
||||||
{ if ( !parse_over_char() ) return 0; }
|
{ if ( !parse_over_char() ) return 0; }
|
||||||
return 1;
|
return 1;
|
||||||
@@ -166,7 +169,7 @@ int StyleParse::parse_over_white() {
|
|||||||
// Parse over non-white alphabetic text
|
// Parse over non-white alphabetic text
|
||||||
// Returns 0 if hit end of buffer, 1 otherwise.
|
// Returns 0 if hit end of buffer, 1 otherwise.
|
||||||
//
|
//
|
||||||
int StyleParse::parse_over_alpha() {
|
int Style_Parser::parse_over_alpha() {
|
||||||
while ( len > 0 && isalpha(*tbuff) )
|
while ( len > 0 && isalpha(*tbuff) )
|
||||||
{ if ( !parse_over_char() ) return 0; }
|
{ if ( !parse_over_char() ) return 0; }
|
||||||
return 1;
|
return 1;
|
||||||
@@ -175,7 +178,7 @@ int StyleParse::parse_over_alpha() {
|
|||||||
// Parse to end of line in specified style.
|
// Parse to end of line in specified style.
|
||||||
// Returns 0 if hit end of buffer, 1 otherwise.
|
// Returns 0 if hit end of buffer, 1 otherwise.
|
||||||
//
|
//
|
||||||
int StyleParse::parse_to_eol(char s) {
|
int Style_Parser::parse_to_eol(char s) {
|
||||||
char save = style;
|
char save = style;
|
||||||
style = s;
|
style = s;
|
||||||
while ( *tbuff != '\n' )
|
while ( *tbuff != '\n' )
|
||||||
@@ -187,7 +190,7 @@ int StyleParse::parse_to_eol(char s) {
|
|||||||
// Parse a block comment until end of comment or buffer.
|
// Parse a block comment until end of comment or buffer.
|
||||||
// Returns 0 if hit end of buffer, 1 otherwise.
|
// Returns 0 if hit end of buffer, 1 otherwise.
|
||||||
//
|
//
|
||||||
int StyleParse::parse_block_comment() {
|
int Style_Parser::parse_block_comment() {
|
||||||
char save = style;
|
char save = style;
|
||||||
style = 'C'; // block comment style
|
style = 'C'; // block comment style
|
||||||
while ( len > 0 ) {
|
while ( len > 0 ) {
|
||||||
@@ -203,7 +206,7 @@ int StyleParse::parse_block_comment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Copy keyword from tbuff -> keyword[] buffer
|
// Copy keyword from tbuff -> keyword[] buffer
|
||||||
void StyleParse::buffer_keyword() {
|
void Style_Parser::buffer_keyword() {
|
||||||
char *key = keyword;
|
char *key = keyword;
|
||||||
char *kend = key + sizeof(keyword) - 1; // end of buffer
|
char *kend = key + sizeof(keyword) - 1; // end of buffer
|
||||||
for ( const char *s=tbuff;
|
for ( const char *s=tbuff;
|
||||||
@@ -215,7 +218,7 @@ void StyleParse::buffer_keyword() {
|
|||||||
// Parse over specified 'key'word in specified style 's'.
|
// Parse over specified 'key'word in specified style 's'.
|
||||||
// Returns 0 if hit end of buffer, 1 otherwise.
|
// Returns 0 if hit end of buffer, 1 otherwise.
|
||||||
//
|
//
|
||||||
int StyleParse::parse_over_key(const char *key, char s) {
|
int Style_Parser::parse_over_key(const char *key, char s) {
|
||||||
char save = style;
|
char save = style;
|
||||||
style = s;
|
style = s;
|
||||||
// Parse over the keyword while applying style to sbuff
|
// Parse over the keyword while applying style to sbuff
|
||||||
@@ -229,7 +232,7 @@ int StyleParse::parse_over_key(const char *key, char s) {
|
|||||||
// Parse over angle brackets <..> in specified style.
|
// Parse over angle brackets <..> in specified style.
|
||||||
// Returns 0 if hit end of buffer, 1 otherwise.
|
// Returns 0 if hit end of buffer, 1 otherwise.
|
||||||
//
|
//
|
||||||
int StyleParse::parse_over_angles(char s) {
|
int Style_Parser::parse_over_angles(char s) {
|
||||||
if ( *tbuff != '<' ) return 1; // not <..>, early exit
|
if ( *tbuff != '<' ) return 1; // not <..>, early exit
|
||||||
char save = style;
|
char save = style;
|
||||||
style = s;
|
style = s;
|
||||||
@@ -245,7 +248,7 @@ int StyleParse::parse_over_angles(char s) {
|
|||||||
// spi.keyword[] will contain parsed word.
|
// spi.keyword[] will contain parsed word.
|
||||||
// Returns 0 if hit end of buffer, 1 otherwise.
|
// Returns 0 if hit end of buffer, 1 otherwise.
|
||||||
//
|
//
|
||||||
int StyleParse::parse_keyword() {
|
int Style_Parser::parse_keyword() {
|
||||||
// Parse into 'keyword' buffer
|
// Parse into 'keyword' buffer
|
||||||
buffer_keyword();
|
buffer_keyword();
|
||||||
char *key = keyword;
|
char *key = keyword;
|
||||||
@@ -262,7 +265,7 @@ int StyleParse::parse_keyword() {
|
|||||||
// Style parse a quoted string, either "" or ''.
|
// Style parse a quoted string, either "" or ''.
|
||||||
// Returns 0 if hit end of buffer, 1 otherwise.
|
// Returns 0 if hit end of buffer, 1 otherwise.
|
||||||
//
|
//
|
||||||
int StyleParse::parse_quoted_string(char quote_char, // e.g. '"' or '\''
|
int Style_Parser::parse_quoted_string(char quote_char, // e.g. '"' or '\''
|
||||||
char in_style) { // style for quoted text
|
char in_style) { // style for quoted text
|
||||||
style = in_style; // start string style
|
style = in_style; // start string style
|
||||||
if ( !parse_over_char() ) return 0; // parse over opening quote
|
if ( !parse_over_char() ) return 0; // parse over opening quote
|
||||||
@@ -289,7 +292,7 @@ int StyleParse::parse_quoted_string(char quote_char, // e.g. '"' or '\''
|
|||||||
// Style parse a directive (#include, #define..)
|
// Style parse a directive (#include, #define..)
|
||||||
// Returns 0 if hit end of buffer, 1 otherwise.
|
// Returns 0 if hit end of buffer, 1 otherwise.
|
||||||
//
|
//
|
||||||
int StyleParse::parse_directive() {
|
int Style_Parser::parse_directive() {
|
||||||
style = 'E'; // start directive style
|
style = 'E'; // start directive style
|
||||||
if ( !parse_over_char() ) return 0; // Parse over '#'
|
if ( !parse_over_char() ) return 0; // Parse over '#'
|
||||||
if ( !parse_over_white() ) return 0; // Parse over any whitespace after '#'
|
if ( !parse_over_white() ) return 0; // Parse over any whitespace after '#'
|
||||||
@@ -303,7 +306,7 @@ int StyleParse::parse_directive() {
|
|||||||
// Style parse a line comment to end of line.
|
// Style parse a line comment to end of line.
|
||||||
// Returns 0 if hit end of buffer, 1 otherwise.
|
// Returns 0 if hit end of buffer, 1 otherwise.
|
||||||
//
|
//
|
||||||
int StyleParse::parse_line_comment() {
|
int Style_Parser::parse_line_comment() {
|
||||||
return parse_to_eol('B');
|
return parse_to_eol('B');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -312,7 +315,7 @@ int StyleParse::parse_line_comment() {
|
|||||||
// a continuation of a line, such as in a multiline #directive.
|
// a continuation of a line, such as in a multiline #directive.
|
||||||
// Returns 0 if hit end of buffer, 1 otherwise.
|
// Returns 0 if hit end of buffer, 1 otherwise.
|
||||||
//
|
//
|
||||||
int StyleParse::parse_escape() {
|
int Style_Parser::parse_escape() {
|
||||||
const char no_crlf = 0;
|
const char no_crlf = 0;
|
||||||
if ( !parse_over_char(no_crlf) ) return 0; // backslash
|
if ( !parse_over_char(no_crlf) ) return 0; // backslash
|
||||||
if ( !parse_over_char(no_crlf) ) return 0; // char escaped
|
if ( !parse_over_char(no_crlf) ) return 0; // char escaped
|
||||||
@@ -322,7 +325,7 @@ int StyleParse::parse_escape() {
|
|||||||
// Parse all other non-specific characters
|
// Parse all other non-specific characters
|
||||||
// Returns 0 if hit end of buffer, 1 otherwise.
|
// Returns 0 if hit end of buffer, 1 otherwise.
|
||||||
//
|
//
|
||||||
int StyleParse::parse_all_else() {
|
int Style_Parser::parse_all_else() {
|
||||||
last = isalnum(*tbuff) || *tbuff == '_' || *tbuff == '.';
|
last = isalnum(*tbuff) || *tbuff == '_' || *tbuff == '.';
|
||||||
return parse_over_char();
|
return parse_over_char();
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
//
|
//
|
||||||
// Syntax highlighting for the Fast Light Tool Kit (FLTK).
|
// Syntax highlighting for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
// Copyright 1998-2020 by Bill Spitzak and others.
|
// Copyright 1998-2025 by Bill Spitzak and others.
|
||||||
// Copyright 2020 Greg Ercolano.
|
// Copyright 2020 Greg Ercolano.
|
||||||
//
|
//
|
||||||
// This library is free software. Distribution and use rights are outlined in
|
// This library is free software. Distribution and use rights are outlined in
|
||||||
@@ -15,30 +15,25 @@
|
|||||||
// https://www.fltk.org/bugs.php
|
// https://www.fltk.org/bugs.php
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef StyleParse_h
|
#ifndef FLUID_WIDGETS_STYLE_PARSER_H
|
||||||
#define StyleParse_h
|
#define FLUID_WIDGETS_STYLE_PARSER_H
|
||||||
|
|
||||||
// Class to manage style parsing, friend of CodeEditor
|
namespace fld {
|
||||||
class StyleParse {
|
namespace widget {
|
||||||
|
|
||||||
|
// Class to manage style parsing, friend of Code_Editor
|
||||||
|
class Style_Parser {
|
||||||
public:
|
public:
|
||||||
const char *tbuff; // text buffer
|
const char *tbuff { nullptr }; // text buffer
|
||||||
char *sbuff; // style buffer
|
char *sbuff { nullptr }; // style buffer
|
||||||
int len; // running length
|
int len { 0 }; // running length
|
||||||
char style; // current style
|
char style { 0 }; // current style
|
||||||
char lwhite; // leading white space (1=white, 0=past white)
|
char lwhite { 1 }; // leading white space (1=white, 0=past white)
|
||||||
int col; // line's column counter
|
int col { 0 }; // line's column counter
|
||||||
char keyword[40]; // keyword parsing buffer
|
char keyword[40] { }; // keyword parsing buffer
|
||||||
char last; // flag for keyword parsing
|
char last { 0 }; // flag for keyword parsing
|
||||||
|
|
||||||
StyleParse() {
|
Style_Parser() = default;
|
||||||
tbuff = 0;
|
|
||||||
sbuff = 0;
|
|
||||||
len = 0;
|
|
||||||
style = 0;
|
|
||||||
lwhite = 1;
|
|
||||||
col = 0;
|
|
||||||
last = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methods to aid in parsing
|
// Methods to aid in parsing
|
||||||
int parse_over_char(int handle_crlf=1);
|
int parse_over_char(int handle_crlf=1);
|
||||||
@@ -51,11 +46,14 @@ public:
|
|||||||
int parse_over_angles(char s);
|
int parse_over_angles(char s);
|
||||||
int parse_keyword(); // "switch"
|
int parse_keyword(); // "switch"
|
||||||
int parse_quoted_string(char quote_char, char in_style);
|
int parse_quoted_string(char quote_char, char in_style);
|
||||||
// "hello", 'x'
|
// "hello", 'x'
|
||||||
int parse_directive(); // "#define"
|
int parse_directive(); // "#define"
|
||||||
int parse_line_comment(); // "// text.."
|
int parse_line_comment(); // "// text.."
|
||||||
int parse_escape(); // "\'"
|
int parse_escape(); // "\'"
|
||||||
int parse_all_else(); // all other code
|
int parse_all_else(); // all other code
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // StyleParse_h
|
} // namespace widget
|
||||||
|
} // namespace fld
|
||||||
|
|
||||||
|
#endif // FLUID_WIDGETS_STYLE_PARSER_H
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
//
|
||||||
|
// Code editor widget for the Fast Light Tool Kit (FLTK).
|
||||||
|
// Syntax highlighting rewritten by erco@seriss.com 09/15/20.
|
||||||
|
//
|
||||||
|
// Copyright 1998-2025 by Bill Spitzak and others.
|
||||||
|
//
|
||||||
|
// This library is free software. Distribution and use rights are outlined in
|
||||||
|
// the file "COPYING" which should have been included with this file. If this
|
||||||
|
// file is missing or damaged, see the license at:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/COPYING.php
|
||||||
|
//
|
||||||
|
// Please see the following page on how to report bugs and issues:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/bugs.php
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
// Include necessary headers...
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "widgets/Text_Viewer.h"
|
||||||
|
|
||||||
|
using namespace fld;
|
||||||
|
using namespace fld::widget;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create a fld::widget::Text_Viewer widget.
|
||||||
|
\param[in] X, Y, W, H position and size of the widget
|
||||||
|
\param[in] L optional label
|
||||||
|
*/
|
||||||
|
Text_Viewer::Text_Viewer(int X, int Y, int W, int H, const char *L)
|
||||||
|
: Fl_Text_Display(X, Y, W, H, L)
|
||||||
|
{
|
||||||
|
buffer(new Fl_Text_Buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Avoid memory leaks.
|
||||||
|
*/
|
||||||
|
Text_Viewer::~Text_Viewer() {
|
||||||
|
Fl_Text_Buffer *buf = mBuffer;
|
||||||
|
buffer(0);
|
||||||
|
delete buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Tricking Fl_Text_Display into using bearable colors for this specific task.
|
||||||
|
*/
|
||||||
|
void Text_Viewer::draw()
|
||||||
|
{
|
||||||
|
Fl_Color c = Fl::get_color(FL_SELECTION_COLOR);
|
||||||
|
Fl::set_color(FL_SELECTION_COLOR, fl_color_average(FL_BACKGROUND_COLOR, FL_FOREGROUND_COLOR, 0.9f));
|
||||||
|
Fl_Text_Display::draw();
|
||||||
|
Fl::set_color(FL_SELECTION_COLOR, c);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
//
|
||||||
|
// Code editor widget for the Fast Light Tool Kit (FLTK).
|
||||||
|
// Syntax highlighting rewritten by erco@seriss.com 09/15/20.
|
||||||
|
//
|
||||||
|
// Copyright 1998-2025 by Bill Spitzak and others.
|
||||||
|
//
|
||||||
|
// This library is free software. Distribution and use rights are outlined in
|
||||||
|
// the file "COPYING" which should have been included with this file. If this
|
||||||
|
// file is missing or damaged, see the license at:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/COPYING.php
|
||||||
|
//
|
||||||
|
// Please see the following page on how to report bugs and issues:
|
||||||
|
//
|
||||||
|
// https://www.fltk.org/bugs.php
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef FLUID_WIDGETS_TEXT_VIEWER_H
|
||||||
|
#define FLUID_WIDGETS_TEXT_VIEWER_H
|
||||||
|
|
||||||
|
//
|
||||||
|
// Include necessary headers...
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <FL/Fl_Text_Display.H>
|
||||||
|
|
||||||
|
namespace fld {
|
||||||
|
namespace widget {
|
||||||
|
|
||||||
|
/**
|
||||||
|
A text viewer with an additional highlighting color scheme.
|
||||||
|
*/
|
||||||
|
class Text_Viewer : public Fl_Text_Display {
|
||||||
|
public:
|
||||||
|
Text_Viewer(int X, int Y, int W, int H, const char *L = nullptr);
|
||||||
|
~Text_Viewer();
|
||||||
|
void draw() override;
|
||||||
|
|
||||||
|
/// access to protected member get_absolute_top_line_number()
|
||||||
|
int top_line() { return get_absolute_top_line_number(); }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace widget
|
||||||
|
} // namespace fld
|
||||||
|
|
||||||
|
#endif // FLUID_WIDGETS_TEXT_VIEWER_H
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
//
|
|
||||||
// Shortcut header file for the Fast Light Tool Kit (FLTK).
|
|
||||||
//
|
|
||||||
// Copyright 1998-2023 by Bill Spitzak and others.
|
|
||||||
//
|
|
||||||
// This library is free software. Distribution and use rights are outlined in
|
|
||||||
// the file "COPYING" which should have been included with this file. If this
|
|
||||||
// file is missing or damaged, see the license at:
|
|
||||||
//
|
|
||||||
// https://www.fltk.org/COPYING.php
|
|
||||||
//
|
|
||||||
// Please see the following page on how to report bugs and issues:
|
|
||||||
//
|
|
||||||
// https://www.fltk.org/bugs.php
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef _FLUID_SHORTCUT_BUTTON_H
|
|
||||||
#define _FLUID_SHORTCUT_BUTTON_H
|
|
||||||
|
|
||||||
#include <FL/Fl_Button.H>
|
|
||||||
#include <FL/Fl_Input.H>
|
|
||||||
|
|
||||||
// Adding drag and drop for dragging widgets into windows.
|
|
||||||
class Widget_Bin_Button : public Fl_Button {
|
|
||||||
public:
|
|
||||||
int handle(int) FL_OVERRIDE;
|
|
||||||
Widget_Bin_Button(int X,int Y,int W,int H, const char* l = 0) :
|
|
||||||
Fl_Button(X,Y,W,H,l) { }
|
|
||||||
};
|
|
||||||
|
|
||||||
// Adding drag and drop functionality to drag window prototypes onto the desktop.
|
|
||||||
class Widget_Bin_Window_Button : public Fl_Button {
|
|
||||||
public:
|
|
||||||
int handle(int) FL_OVERRIDE;
|
|
||||||
Widget_Bin_Window_Button(int X,int Y,int W,int H, const char* l = 0) :
|
|
||||||
Fl_Button(X,Y,W,H,l) { }
|
|
||||||
};
|
|
||||||
|
|
||||||
// Callback signature for function returning the value of a variable.
|
|
||||||
typedef int (Fluid_Coord_Callback)(class Fluid_Coord_Input const *, void*);
|
|
||||||
|
|
||||||
// Entry for a list of variables available to an input field.
|
|
||||||
// Fluid_Coord_Input::variables() expects an array of Fluid_Coord_Input_Vars
|
|
||||||
// with the last entry's name_ set to NULL.
|
|
||||||
typedef struct Fluid_Coord_Input_Vars {
|
|
||||||
const char *name_;
|
|
||||||
Fluid_Coord_Callback *callback_;
|
|
||||||
} Fluid_Coord_Input_Vars;
|
|
||||||
|
|
||||||
// A text input widget that understands simple math.
|
|
||||||
class Fluid_Coord_Input : public Fl_Input
|
|
||||||
{
|
|
||||||
Fl_Callback *user_callback_;
|
|
||||||
Fluid_Coord_Input_Vars *vars_;
|
|
||||||
void *vars_user_data_;
|
|
||||||
static void callback_handler_cb(Fluid_Coord_Input *This, void *v);
|
|
||||||
void callback_handler(void *v);
|
|
||||||
int eval_var(uchar *&s) const;
|
|
||||||
int eval(uchar *&s, int prio) const;
|
|
||||||
int eval(const char *s) const;
|
|
||||||
|
|
||||||
public:
|
|
||||||
Fluid_Coord_Input(int x, int y, int w, int h, const char *l=0L);
|
|
||||||
|
|
||||||
/** Return the text in the widget text field. */
|
|
||||||
const char *text() const { return Fl_Input::value(); }
|
|
||||||
|
|
||||||
/** Set the text in the text field */
|
|
||||||
void text(const char *v) { Fl_Input::value(v); }
|
|
||||||
|
|
||||||
int value() const;
|
|
||||||
void value(int v);
|
|
||||||
|
|
||||||
/** Set the general callback for this widget. */
|
|
||||||
void callback(Fl_Callback *cb) {
|
|
||||||
user_callback_ = cb;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set the list of the available variables
|
|
||||||
\param vars array of variables, last entry `has name_` set to `NULL`
|
|
||||||
\param user_data is forwarded to the Variable callback */
|
|
||||||
void variables(Fluid_Coord_Input_Vars *vars, void *user_data) {
|
|
||||||
vars_ = vars;
|
|
||||||
vars_user_data_ = user_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
int handle(int) FL_OVERRIDE;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
Reference in New Issue
Block a user