[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libcvd-members] gvars3 gvars3/GUI_Fltk.h src/GUI_Fltk.cc src/GU...
From: |
Edward Rosten |
Subject: |
[libcvd-members] gvars3 gvars3/GUI_Fltk.h src/GUI_Fltk.cc src/GU... |
Date: |
Thu, 14 Jun 2007 21:37:28 +0000 |
CVSROOT: /cvsroot/libcvd
Module name: gvars3
Changes by: Edward Rosten <edrosten> 07/06/14 21:37:27
Modified files:
gvars3 : GUI_Fltk.h
src : GUI_Fltk.cc GUI_readline.cc
Log message:
Backported AddSpin to GUI_Fltk
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gvars3/gvars3/GUI_Fltk.h?cvsroot=libcvd&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/gvars3/src/GUI_Fltk.cc?cvsroot=libcvd&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/gvars3/src/GUI_readline.cc?cvsroot=libcvd&r1=1.5&r2=1.6
Patches:
Index: gvars3/GUI_Fltk.h
===================================================================
RCS file: /cvsroot/libcvd/gvars3/gvars3/GUI_Fltk.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- gvars3/GUI_Fltk.h 22 Nov 2005 18:33:27 -0000 1.4
+++ gvars3/GUI_Fltk.h 14 Jun 2007 21:37:27 -0000 1.5
@@ -53,6 +53,9 @@
void AddPushButton(std::string cmd, std::string args);
void AddToggleButton(std::string cmd, std::string args);
void AddSlider(std::string cmd, std::string args);
+ void AddSpin(std::string cmd, std::string args);
+ //void AddSmallToggle(std::string cmd, std::string args);
+
std::string remove_suffix(std::string cmd, std::string suffix);
bool check_window(std::string win_name, std::string fname);
@@ -81,6 +84,9 @@
static void AddToggleButtonCB(void*, std::string, std::string);
static void AddSliderCB(void*, std::string, std::string);
static void AddMonitorCB(void*, std::string, std::string);
+ static void AddSpinCB(void*, std::string, std::string);
+ //static void AddSmallToggleCB(void*, std::string, std::string);
+
static void* do_stuff_CB(void*);
};
Index: src/GUI_Fltk.cc
===================================================================
RCS file: /cvsroot/libcvd/gvars3/src/GUI_Fltk.cc,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- src/GUI_Fltk.cc 22 Nov 2005 18:33:34 -0000 1.4
+++ src/GUI_Fltk.cc 14 Jun 2007 21:37:27 -0000 1.5
@@ -34,6 +34,7 @@
#include <FL/Fl_Button.h>
#include <FL/Fl_Check_Button.h>
#include <Fl/Fl_Value_Slider.h>
+#include <Fl/Fl_Value_Input.h>
#include <Fl/Fl_Box.h>
@@ -170,9 +171,17 @@
void add(Fl_Widget* widg)
{
+ int lw = 0, lh = 0;
+
+ if((widg->align() & FL_ALIGN_LEFT) && !(widg->align() &
FL_ALIGN_INSIDE) )
+ widg->measure_label(lw, lh);
+
+
+
+
//Position the widget
- widg->resize(GUI_Fltk::widget_padding_x, h() +
GUI_Fltk::widget_padding_y,
- w() - 2 *
GUI_Fltk::widget_padding_x , GUI_Fltk::widget_height);
+ widg->resize(GUI_Fltk::widget_padding_x + lw, h() +
GUI_Fltk::widget_padding_y,
+ w() - 2 *
GUI_Fltk::widget_padding_x - lw , GUI_Fltk::widget_height);
//Resize the window
size(w(), h() + GUI_Fltk::widget_height + 2 *
GUI_Fltk::widget_padding_y);
@@ -259,6 +268,8 @@
gui->RegisterCommand(vs[0] + ".AddToggleButton", AddToggleButtonCB,
this);
gui->RegisterCommand(vs[0] + ".AddSlider", AddSliderCB, this);
gui->RegisterCommand(vs[0] + ".AddMonitor", AddMonitorCB, this);
+ gui->RegisterCommand(vs[0] + ".AddSpin", AddSpinCB, this);
+ //gui->RegisterCommand(vs[0] + ".AddSmallToggleButton",
AddSmallToggleCB, this);
}
void GUI_Fltk::DestroyWindowCB(void* ptr, string cmd, string args)
@@ -280,6 +291,9 @@
gui->UnRegisterCommand(win_name + ".AddToggleButton");
gui->UnRegisterCommand(win_name + ".AddSlider");
gui->UnRegisterCommand(win_name + ".AddMonitor");
+ gui->UnRegisterCommand(win_name + ".AddSpin");
+ //gui->UnRegisterCommand(win_name + ".AddSmallToggleButton");
+
delete windows[win_name].win;
//windows[win_name].win->hide();
@@ -589,4 +603,109 @@
}
//GUI_Fltk Gui_Fltk(&GUI);
+
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Spincontrol stuff
+//
+
+void GUI_Fltk::AddSpinCB(void* ptr, string cmd, string args)
+{
+ //Fl::lock();
+ UI.AddSpin(cmd, args);
+ //Fl::unlock();
+}
+
+class spin2: public Fl_Value_Input
+{
+ public:
+ spin2(string gvar_name, string t, GVars2 *pgv2, double min,
double max)
+ :Fl_Value_Input(0, 0, 1, 1),gv2(pgv2),varname(gvar_name),
title(t)
+ {
+ label(title.c_str());
+ align(FL_ALIGN_LEFT);
+ bounds(min, max);
+ callback(my_callback);
+ when(FL_WHEN_CHANGED);
+ increment(0, 1);
+ poll_update();
+ }
+
+ void poll_update()
+ {
+ string crnt=gv2->StringValue(varname, true);
+
+
+ if(crnt != cached_value)
+ {
+ cached_value = crnt;
+ double newval=0;
+ serialize::from_string(crnt, newval);
+
+ //Update range if necessary
+ if(newval > maximum()) maximum(newval);
+ if(newval < minimum()) minimum(newval);
+
+ value(newval);
+ }
+ }
+
+ void set_gvar_to_value()
+ {
+ ostringstream ost;
+ ost << value();
+ gv2->SetVar(varname, ost.str(), 1);
+ cached_value = ost.str();
+ }
+
+ private:
+ GVars2 *gv2;
+ string varname, cached_value, title;
+
+ static void my_callback(Fl_Widget* w, long what_shall_I_do)
+ {
+ spin2* s = (spin2*) w;
+
+ if(what_shall_I_do == POLL_UPDATE)
+ s->poll_update();
+ else
+ s->set_gvar_to_value();
+ }
+};
+
+void GUI_Fltk::AddSpin(string cmd, string args)
+{
+ string win_name = remove_suffix(cmd, ".AddSpin");
+ string title = "";
+
+ vector<string> vs = ChopAndUnquoteString(args);
+ if(vs.size() != 3 && vs.size() != 4)
+ {
+ cerr << "! GUI_Fltk::AddSpin: Need 3-4 params (gvar_name min
max [title]])." << endl;
+ return;
+ }
+
+ if(!check_window(win_name, "AddSpin"))
+ return;
+
+ window& w = windows[win_name];
+
+ double min, max;
+
+ serialize::from_string(vs[1], min);
+ serialize::from_string(vs[2], max);
+
+ if( vs.size() == 4)
+ title = vs[3];
+
+ Fl_Widget* b = new spin2(vs[0], title, gv2, min, max);
+
+ w.win->add(b);
+}
+
+
}
Index: src/GUI_readline.cc
===================================================================
RCS file: /cvsroot/libcvd/gvars3/src/GUI_readline.cc,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- src/GUI_readline.cc 8 Jun 2007 22:33:02 -0000 1.5
+++ src/GUI_readline.cc 14 Jun 2007 21:37:27 -0000 1.6
@@ -141,6 +141,7 @@
else
{
GUI.ParseLine(line);
+ if(line != "")
add_history(line);
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [libcvd-members] gvars3 gvars3/GUI_Fltk.h src/GUI_Fltk.cc src/GU...,
Edward Rosten <=