Explorar o código

More advance on FLTK module

mingodad %!s(int64=13) %!d(string=hai) anos
pai
achega
60f64761ef

+ 11 - 3
ext/sq_fltk.cpp

@@ -861,10 +861,15 @@ static SQInteger _Fl_Menu__copy(HSQUIRRELVM v)
 
 static SQInteger _Fl_Menu__add(HSQUIRRELVM v)
 {
-    SQ_FUNC_VARS_NO_TOP(v);
+    SQ_FUNC_VARS(v);
     SETUP_FL_MENU_(v);
     SQ_GET_STRING(v, 2, label);
-    self->add(label);
+    if(_top_ > 2) {
+        //SQObjectType ptype3 = sq_gettype(v, 3);
+        SQ_GET_INTEGER(v, 5, udata);
+        self->add(label, 0,0, (void*)udata, 0);
+    }
+    else self->add(label);
     return 0;
 }
 
@@ -876,14 +881,17 @@ static SQInteger _Fl_Menu__value(HSQUIRRELVM v)
     return 1;
 }
 
+FUNC_GETSET_INT(_Fl_Menu__, SETUP_FL_MENU_, self->, down_box, Fl_Boxtype);
+
 CHEAP_RTTI_FOR(Fl_Menu_);
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Menu__##name,nparams,pmask,isStatic}
 static SQRegFunction fl_menu__obj_funcs[]={
     CHEAP_RTTI_REG_FUN_FOR(Fl_Menu_)
 	_DECL_FUNC(constructor,-5,FLTK_constructor_Mask, SQFalse),
 	_DECL_FUNC(copy,-2,_SC("xa."),SQFalse),
-	_DECL_FUNC(add,2,_SC("xs"),SQFalse),
+	_DECL_FUNC(add,-2,_SC("xs s|i|o c|n .i"),SQFalse),
 	_DECL_FUNC(value,1,_SC("x"),SQFalse),
+	_DECL_FUNC(down_box,-1,_SC("xi"), SQFalse),
 	{0,0}
 };
 #undef _DECL_FUNC

+ 1 - 1
ourbiz/edit-entity-window.nut

@@ -225,7 +225,7 @@ this->when(FL_WHEN_RELEASE);
         btnDbAction->labelsize(16);
       } // Fl_Button* btnDbAction
       { 
-        dbAction = new Fl_Button(675, 520, 110, 25);
+        dbAction = new Fl_Choice_dbAction(675, 520, 110, 25);
         dbAction->label(_tr("Action"));
         dbAction->down_box(FL_BORDER_BOX);
         dbAction->labelsize(16);

+ 1 - 7
ourbiz/edit-order-window.nut

@@ -1,9 +1,3 @@
-class Fl_Choice_Int extends Fl_Button {
-	constructor(px, py, pw, ph, pl=""){
-		base.constructor(px, py, pw, ph, pl);
-	}
-}
-
 class Fl_Float_Input_Fmt extends Fl_Float_Input {
 	constructor(px, py, pw, ph, pl=""){
 		base.constructor(px, py, pw, ph, pl);
@@ -817,7 +811,7 @@ calendar_window = 0;
       dbAction->labelsize(16);
       dbAction->textsize(16);
     } // Fl_Choice* dbAction
-    { btnDbAction = new My_Fl_Return_Button(138, 525, 82, 25, _tr("Action"));
+    { btnDbAction = new Fl_Choice_dbAction(138, 525, 82, 25, _tr("Action"));
       btnDbAction->resize(138, 525, 82, 25);
       btnDbAction->label(_tr("Action"));
       btnDbAction->tooltip(_tr("Perform the selected action on this order"));

+ 1 - 7
ourbiz/edit-product-window.nut

@@ -5,12 +5,6 @@ class Fl_Image_Box extends Fl_Box {
 }
 
 
-class Fl_Choice_Int extends Fl_Button {
-	constructor(px, py, pw, ph, pl=""){
-		base.constructor(px, py, pw, ph, pl);
-	}
-}
-
 class Fl_Float_Input_Fmt extends Fl_Float_Input {
 	constructor(px, py, pw, ph, pl=""){
 		base.constructor(px, py, pw, ph, pl);
@@ -298,7 +292,7 @@ this->when(FL_WHEN_RELEASE);
         o->labeltype(FL_NO_LABEL);
         Fl_Group.current()->resizable(o);
       } // Fl_Box* o
-      { dbAction = new Fl_Button(675, 520, 110, 25);
+      { dbAction = new Fl_Choice_dbAction(675, 520, 110, 25);
         dbAction->label(_tr("Action"));
         dbAction->down_box(FL_BORDER_BOX);
         dbAction->labelsize(16);

+ 0 - 6
ourbiz/list-search-window.nut

@@ -9,12 +9,6 @@ class Fl_Image_Box extends Fl_Box {
 }
 
 
-class Fl_Choice_Int extends Fl_Button {
-	constructor(px, py, pw, ph, pl=""){
-		base.constructor(px, py, pw, ph, pl);
-	}
-}
-
 class Fl_Float_Input_Fmt extends Fl_Float_Input {
 	constructor(px, py, pw, ph, pl=""){
 		base.constructor(px, py, pw, ph, pl);

+ 40 - 0
ourbiz/ourbiz-fltk.nut

@@ -99,6 +99,46 @@ class Fl_Box_ClearLabel extends Fl_Box {
 	}
 }
 
+class Fl_Choice_Int extends Fl_Choice {
+	constructor(px, py, pw, ph, pl=""){
+		base.constructor(px, py, pw, ph, pl);
+	}
+}
+
+enum DbAction_Enum {
+		e_none, e_insert, e_update, e_delete,
+		e_export, e_import, e_refresh, e_copy, e_last
+		};
+	
+class Fl_Choice_dbAction extends Fl_Choice {
+	constructor(px, py, pw, ph, pl=null){
+		base.constructor(px, py, pw, ph, pl);
+		tooltip(_tr("Select an operation to perform on this record"));
+		add_tr("Insert", DbAction_Enum.e_insert);
+		add_tr("Update", DbAction_Enum.e_update);
+		add_tr("Delete", DbAction_Enum.e_delete);
+	}
+
+	function action(){return mvalue()->user_data();}
+	function action(act){
+		local m = menu();
+		for(local i=0, count = m->size(); i<count; ++i){
+			if(m[i].user_data() == act){
+				value(i);
+				break;
+			}
+		}
+	}
+	function add_tr(label, act){return add(_tr(label), 0, 0, act, 0);}
+
+	function insert_export_import(){
+		add_tr("Export", DbAction_Enum.e_export);
+		add_tr("Import", DbAction_Enum.e_import);
+	}
+	function insert_refresh(){add_tr("Refresh", DbAction_Enum.e_refresh);}
+	function insert_copy(){add_tr("Copy", DbAction_Enum.e_copy);}
+};
+
 class MyBaseWindow extends Fl_Window {
 	childWindows=null;
 	_db_map = null;

+ 1 - 1
ourbiz/sales-tax-window.nut

@@ -16,7 +16,7 @@ constructor() {
 	base.constructor(-1, -1, 500, 385, _tr("Sales Tax Rates List / Edit"));
 	db_map = {};
 	
-	dbAction = new Fl_Button(0, 0, 100, 25, _tr("Action"));
+	dbAction = new Fl_Choice_dbAction(0, 0, 100, 25, _tr("Action"));
 	btnDbAction = new Fl_Button(0, 0, 100, 25, _tr("Action"));
 	begin();
 	this->box(FL_FLAT_BOX);