summaryrefslogtreecommitdiff
path: root/fluid/panels/widget_panel.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'fluid/panels/widget_panel.cxx')
-rw-r--r--fluid/panels/widget_panel.cxx74
1 files changed, 46 insertions, 28 deletions
diff --git a/fluid/panels/widget_panel.cxx b/fluid/panels/widget_panel.cxx
index 57c1b4b1b..679a52c6c 100644
--- a/fluid/panels/widget_panel.cxx
+++ b/fluid/panels/widget_panel.cxx
@@ -17,7 +17,6 @@
// generated by Fast Light User Interface Designer (fluid) version 1.0500
#include "widget_panel.h"
-#include <stdlib.h> // free()
#include "Fluid.h"
#include "app/Snap_Action.h"
#include "app/Image_Asset.h"
@@ -32,6 +31,8 @@
#include <FL/Fl_Menu_Item.H>
#include <FL/Fl_File_Chooser.H>
#include <ctype.h>
+#include <stdlib.h> // free()
+#include <functional> // std::function
#define ZERO_ENTRY 1000
extern const char* when_symbol_name(int n);
extern void set_whenmenu(int n);
@@ -51,11 +52,43 @@ extern int haderror;
Allow widget navigation on text fields with Tab.
*/
static int use_tab_navigation(int, Fl_Text_Editor*) {
-//fl ▼ ------------------------ code ---~=--~~-~~=~~==~=-=-~- ▼ fl//
+//fl ▼ ------------------------ code ------=-~--==~-~=----=-- ▼ fl//
return 0;
//fl ▲ ----------~~-~=---~-------------~-=--~~-=~=-~~--~-~=-- ▲ fl//
}
+static void update_current(Fl_Input* o, void *v,
+ std::function<std::string()> getter,
+ std::function<void(std::string)> setter) {
+//fl ▼ ------------------------ code --~---=~--=-=-=---~=~~=~ ▼ fl//
+ if (v == LOAD) {
+ o->value( getter().c_str() );
+ } else {
+ std::string v = o->value();
+ if (v != getter()) {
+ setter(v);
+ Fluid.proj.set_modflag(1);
+ }
+ }
+//fl ▲ ----------~~~=~---=~-------------~=-~--~=~~-=--=-==~-= ▲ fl//
+}
+
+static void update_current(Fl_Text_Editor* o, void *v,
+ std::function<std::string()> getter,
+ std::function<void(std::string)> setter) {
+//fl ▼ ------------------------ code ----~-~-=~~~~=-~-==--~-- ▼ fl//
+ if (v == LOAD) {
+ o->buffer()->text( getter().c_str() );
+ } else {
+ std::string v = o->buffer()->text();
+ if (v != getter()) {
+ setter(v);
+ Fluid.proj.set_modflag(1);
+ }
+ }
+//fl ▲ ----------~~-=-~=--=-=----------~-~~=-~-~~-~~==~~--=~- ▲ fl//
+}
+
Fl_Double_Window *image_panel_window=(Fl_Double_Window *)0;
static void cb_image_panel_window(Fl_Double_Window* o, void* v) {
@@ -2586,21 +2619,11 @@ static void cb_wp_data_filename(Fl_Input* o, void* v) {
//fl ▼ ---------------------- callback ~-~=~~~~~~-=~~=~-==--- ▼ fl//
if (!current_node || !current_node->is_a(Type::Data)) return;
Data_Node* nd = (Data_Node*)current_node;
-
- if (v == LOAD) {
- const char *fn = nd->filename();
- o->value( fn ? fn : "" );
- } else {
- const char *c = o->value();
- const char *fn = nd->filename();
- if ( ( fn && (strcmp(fn, c) != 0))
- || (!fn && (strcmp("", c) != 0)) )
- {
- nd->filename(c);
- Fluid.proj.set_modflag(1);
- }
- }
-//fl ▲ ----------~=-~--=--~------------~~-~-----~=~-~=~--~-~- ▲ fl//
+ update_current(o, v,
+ [nd](){return nd->filename();},
+ [nd](std::string s){nd->filename(s);}
+ );
+//fl ▲ ----------~=-~--=--~------------~-~==--==-~=---==--~-~ ▲ fl//
}
static void cb_fileopen(Fl_Button*, void* v) {
@@ -2995,16 +3018,11 @@ static void cb_End(Fl_Input* o, void* v) {
//fl ▼ ---------------------- callback -~-~--~-----=-~~~~~=-~ ▼ fl//
if (!current_node || !current_node->is_a(Type::DeclBlock)) return;
DeclBlock_Node* nd = (DeclBlock_Node*)current_node;
- if (v == LOAD) {
- o->value( nd->end_code().c_str() );
- } else {
- std::string v = o->value();
- if (v != nd->end_code()) {
- nd->end_code( v );
- Fluid.proj.set_modflag(1);
- }
- }
-//fl ▲ ----------=~~~~~~=~-=-----------~~-~~---=--=-~~=---=~- ▲ fl//
+ update_current(o, v,
+ [nd](){return nd->end_code();},
+ [nd](std::string s){nd->end_code(s);}
+ );
+//fl ▲ ----------=~~~~~~=~-=-------------=~--~=~--=~~~=~~-~~= ▲ fl//
}
static void cb_implementations(Fl_Check_Button* o, void* v) {
@@ -4548,6 +4566,7 @@ Fl_Double_Window* make_widget_panel() {
wp_data_filename->textsize(11);
wp_data_filename->callback((Fl_Callback*)cb_wp_data_filename);
wp_data_filename->align(Fl_Align(132));
+ Fl_Group::current()->resizable(wp_data_filename);
} // Fl_Input* wp_data_filename
{ Fl_Button* o = new Fl_Button(365, 125, 40, 20, "@fileopen");
o->labelcolor((Fl_Color)134);
@@ -4561,7 +4580,6 @@ Fl_Double_Window* make_widget_panel() {
o->textsize(11);
o->callback((Fl_Callback*)cb_Comment);
o->align(Fl_Align(FL_ALIGN_LEFT));
- Fl_Group::current()->resizable(o);
o->buffer(new Fl_Text_Buffer());
o->add_key_binding(FL_Tab, 0, use_tab_navigation);
} // Fl_Text_Editor* o