فهرست منبع

Added Fl_Progress, and constants for Fl_Pack.

mingodad 13 سال پیش
والد
کامیت
e969f8c750
1فایلهای تغییر یافته به همراه81 افزوده شده و 5 حذف شده
  1. 81 5
      ext/sq_fltk.cpp

+ 81 - 5
ext/sq_fltk.cpp

@@ -5,7 +5,7 @@
 #include <FL/Fl.H>
 #include <FL/Fl_Widget.H>
 #include <FL/Fl_Box.H>
-#include <FL/Fl_Button.H>
+#include <FL/Fl_Progress.H>
 #include <FL/Fl_Group.H>
 #include <FL/Fl_Window.H>
 #include <FL/Fl_Double_Window.H>
@@ -70,6 +70,7 @@ struct MyFltkUData {
 
 CREATE_TAG(Fl);
 CREATE_TAG(Fl_Widget);
+CREATE_TAG(Fl_Progress);
 CREATE_TAG(Fl_Button);
 CREATE_TAG(Fl_Light_Button);
 CREATE_TAG(Fl_Check_Button);
@@ -84,6 +85,7 @@ CREATE_TAG(Fl_Menu_Item);
 CREATE_TAG(Fl_Choice);
 CREATE_TAG(Fl_Input_);
 CREATE_TAG(Fl_Float_Input);
+CREATE_TAG(Fl_Float_Input_Fmt);
 CREATE_TAG(Fl_Int_Input);
 CREATE_TAG(Fl_Output);
 CREATE_TAG(Fl_Secret_Input);
@@ -317,6 +319,21 @@ static SQRESULT prefix##funcNAME(HSQUIRRELVM v) \
 	return sq_throwerror(v, _SC("invalid number of parameters"));\
 }
 
+#define FUNC_GETSET_FLOAT(prefix, getSelf, selfPtr, funcNAME, typeCast) \
+static SQRESULT prefix##funcNAME(HSQUIRRELVM v) \
+{\
+    getSelf(v);\
+    SQInteger argc = sq_gettop(v);\
+    SQFloat fparm;\
+    if(argc > 1){\
+        sq_getfloat(v, 2, &fparm);\
+        selfPtr funcNAME((typeCast)fparm);\
+        return 0;\
+    }\
+    sq_pushfloat(v, selfPtr funcNAME());\
+	return 1;\
+}
+
 #define FUNC_VOID_CALL(prefix, getSelf, selfPtr, funcNAME) \
 static SQRESULT prefix##funcNAME(HSQUIRRELVM v) \
 {\
@@ -824,6 +841,31 @@ static SQRegFunction fl_box_obj_funcs[]={
 };
 #undef _DECL_FUNC
 
+FLTK_CONSTRUCTOR(Fl_Progress);
+#define SETUP_FL_PROGRESS(v) SETUP_FL_KLASS(v, Fl_Progress)
+#define FL_PROGRESS_GETSET_FLOAT(funcNAME) FUNC_GETSET_FLOAT(_Fl_Progress_, SETUP_FL_PROGRESS, self->, funcNAME, float)
+FL_PROGRESS_GETSET_FLOAT(maximum);
+FL_PROGRESS_GETSET_FLOAT(minimum);
+
+static SQRESULT _Fl_Progress_value(HSQUIRRELVM v){
+    SETUP_FL_PROGRESS(v);
+    sq_pushfloat(v, self->value());
+    return 0;
+}
+
+CHEAP_RTTI_FOR(Fl_Progress);
+
+#define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Progress_##name,nparams,pmask,isStatic}
+static SQRegFunction fl_progress_obj_funcs[]={
+    CHEAP_RTTI_REG_FUN_FOR(Fl_Progress)
+	_DECL_FUNC(constructor,-5,FLTK_constructor_Mask, SQFalse),
+	_DECL_FUNC(maximum,-1,_SC("xn"), SQFalse),
+	_DECL_FUNC(minimum,-1,_SC("xn"), SQFalse),
+	_DECL_FUNC(value,1,_SC("x"), SQFalse),
+	{0,0}
+};
+#undef _DECL_FUNC
+
 FLTK_CONSTRUCTOR(Fl_Button);
 #define SETUP_FL_BUTTON(v) SETUP_FL_KLASS(v, Fl_Button)
 #define FL_BUTTON_GETSET_INT_CAST(funcNAME, typeNAME) FUNC_GETSET_INT(_Fl_Button_, SETUP_FL_BUTTON, self->, funcNAME, typeNAME)
@@ -1100,6 +1142,14 @@ static SQRegFunction fl_float_input_obj_funcs[]={
 	{0,0}
 };
 #undef _DECL_FUNC
+
+FLTK_CONSTRUCTOR(Fl_Float_Input_Fmt);
+#define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Float_Input_Fmt_##name,nparams,pmask,isStatic}
+static SQRegFunction fl_float_input_fmt_obj_funcs[]={
+	_DECL_FUNC(constructor,-5,FLTK_constructor_Mask, SQFalse),
+	{0,0}
+};
+#undef _DECL_FUNC
 
 FLTK_CONSTRUCTOR(Fl_Int_Input);
 CHEAP_RTTI_FOR(Fl_Int_Input);
@@ -1241,6 +1291,20 @@ static SQRESULT _Fl_Group_remove(HSQUIRRELVM v)
     }
 	return 0;
 }
+
+/*
+static SQRESULT _Fl_Group_resize(HSQUIRRELVM v)
+{
+    SQ_FUNC_VARS_NO_TOP(v);
+    SETUP_FL_GROUP(v);
+    SQ_GET_INTEGER(v, 2, x);
+    SQ_GET_INTEGER(v, 3, y);
+    SQ_GET_INTEGER(v, 4, w);
+    SQ_GET_INTEGER(v, 5, h);
+    self->resize(x, y, w, h);
+    return 0;
+}
+*/
 
 CHEAP_RTTI_FOR(Fl_Group);
 #define _DECL_FUNC(name,nparams,pmask, isStatic) {_SC(#name),_Fl_Group_##name,nparams,pmask, isStatic}
@@ -1254,6 +1318,7 @@ static SQRegFunction fl_group_obj_funcs[]={
 	_DECL_FUNC(insert,3,_SC("xx x|i"), SQTrue),
 	_DECL_FUNC(remove,2,_SC("x x|i"), SQTrue),
 	_DECL_FUNC(current,1,_SC("y"), SQTrue),
+	//_DECL_FUNC(resize,5,_SC("xiiii"), SQFalse),
 	{0,0}
 };
 #undef _DECL_FUNC
@@ -4005,7 +4070,9 @@ SQRESULT sqext_register_fltklib(HSQUIRRELVM v)
 	sq_pushnewclass(v, FLTK_TAG(Flv_Style_List), NULL, (void*)FLTK_TAG(Flv_Style_List), flv_style_list_obj_funcs, SQFalse);
 
 	//Fl_Box class
-	PUSH_FL_CLASS(Fl_Box, Fl_Widget, fl_box_obj_funcs);
+	PUSH_FL_CLASS(Fl_Box, Fl_Widget, fl_box_obj_funcs);
+
+	PUSH_FL_CLASS(Fl_Progress, Fl_Widget, fl_progress_obj_funcs);
 
 	//Fl_Button class
 	PUSH_FL_CLASS(Fl_Button, Fl_Widget, fl_button_obj_funcs);
@@ -4036,13 +4103,23 @@ SQRESULT sqext_register_fltklib(HSQUIRRELVM v)
 	PUSH_FL_CLASS(Fl_Input_, Fl_Widget, fl_input__obj_funcs);
 	PUSH_FL_CLASS(Fl_Input, Fl_Input_, fl_input_obj_funcs);
 	PUSH_FL_CLASS(Fl_Float_Input, Fl_Input, fl_float_input_obj_funcs);
+	PUSH_FL_CLASS(Fl_Float_Input_Fmt, Fl_Float_Input, fl_float_input_fmt_obj_funcs);
 	PUSH_FL_CLASS(Fl_Int_Input, Fl_Input, fl_int_input_obj_funcs);
 	PUSH_FL_CLASS(Fl_Output, Fl_Input, fl_output_obj_funcs);
 	PUSH_FL_CLASS(Fl_Secret_Input, Fl_Input, fl_secret_input_obj_funcs);
 
 	//Fl_Group class
-	PUSH_FL_CLASS(Fl_Group, Fl_Widget, fl_group_obj_funcs);
-	PUSH_FL_CLASS(Fl_Pack, Fl_Group, fl_pack_obj_funcs);
+	PUSH_FL_CLASS(Fl_Group, Fl_Widget, fl_group_obj_funcs);
+
+	PUSH_FL_CLASS(Fl_Pack, Fl_Group, fl_pack_obj_funcs);
+	sq_pushnewclass(v, FLTK_TAG(Fl_Pack), FLTK_TAG(Fl_Group), (void*)FLTK_TAG(Fl_Pack),
+                 fl_pack_obj_funcs, SQTrue);
+#define FL_PACK_INT_CONST(key) INT_CONST_PREFIX(Fl_Pack::, key)
+
+	FL_PACK_INT_CONST(VERTICAL);
+	FL_PACK_INT_CONST(HORIZONTAL);
+	sq_poptop(v); //remove Fl_Pack
+
 	PUSH_FL_CLASS(Fl_Tabs, Fl_Group, fl_tabs_obj_funcs);
 	PUSH_FL_CLASS(Fl_Scroll, Fl_Group, fl_scroll_obj_funcs);
 	PUSH_FL_CLASS(Fl_Text_Display, Fl_Group, fl_text_display_obj_funcs);
@@ -4085,7 +4162,6 @@ SQRESULT sqext_register_fltklib(HSQUIRRELVM v)
     sq_pushnewclass(v, FLTK_TAG(Fl_PostScript_File_Device), FLTK_TAG(Fl_Paged_Device), (void*)FLTK_TAG(Fl_PostScript_File_Device), fl_postscript_file_device_obj_funcs, SQFalse);
 
     sq_pushconsttable(v);
-    INT_CONST_PREFIX_VALUE(, FL_SHADOW_LABEL, FL_SHADOW_LABEL);
     /* add constants to global table */
     int i=0;
     while (fltk_constants[i].name) {