Просмотр исходного кода

Expose more Fl_Text_Buffer methods

mingodad 6 лет назад
Родитель
Сommit
55c2f5217d
1 измененных файлов с 142 добавлено и 2 удалено
  1. 142 2
      SquiLu-ext/sq_fltk.cpp

+ 142 - 2
SquiLu-ext/sq_fltk.cpp

@@ -313,7 +313,7 @@ static SQRESULT getInstance_for_Fl_Klass(HSQUIRRELVM v, const SQChar *klass, SQU
 static SQRESULT get_fltk_klass_instance(HSQUIRRELVM v, SQInteger idx, void **Var, void *klass_Tag){
 static SQRESULT get_fltk_klass_instance(HSQUIRRELVM v, SQInteger idx, void **Var, void *klass_Tag){
     SQRESULT _rc_;
     SQRESULT _rc_;
 	if((_rc_ = sq_getinstanceup(v,idx,(SQUserPointer*)Var,klass_Tag)) < 0) return _rc_;
 	if((_rc_ = sq_getinstanceup(v,idx,(SQUserPointer*)Var,klass_Tag)) < 0) return _rc_;
-	if(!*Var) return sq_throwerror(v, _SC("widget (%s) is empty"), klass_Tag);
+	if(!*Var) return sq_throwerror(v, _SC("widget (%s) is empty"), (SQChar*)klass_Tag);
 	return _rc_;
 	return _rc_;
 }
 }
 
 
@@ -635,6 +635,7 @@ class My##klass : public klass {\
 };\
 };\
 CREATE_TAG(klass);\
 CREATE_TAG(klass);\
 FLTK_CONSTRUCTOR(My##klass);
 FLTK_CONSTRUCTOR(My##klass);
+
 #define MY_FL_CLASS_HANDLE(klass, setup_fl) \
 #define MY_FL_CLASS_HANDLE(klass, setup_fl) \
 MY_FL_CLASS(klass,\
 MY_FL_CLASS(klass,\
     int handle(int event){\
     int handle(int event){\
@@ -1434,6 +1435,7 @@ FLTK_CONSTRUCTOR(Fl_Input_);
 #define SETUP_FL_INPUT_(v) SETUP_FL_KLASS(v, Fl_Input_)
 #define SETUP_FL_INPUT_(v) SETUP_FL_KLASS(v, Fl_Input_)
 FUNC_GETSET_STR(_Fl_Input__, SETUP_FL_INPUT_, self->, value);
 FUNC_GETSET_STR(_Fl_Input__, SETUP_FL_INPUT_, self->, value);
 CHEAP_RTTI_FOR(Fl_Input_);
 CHEAP_RTTI_FOR(Fl_Input_);
+
 static SQRESULT _Fl_Input__value_int(HSQUIRRELVM v)
 static SQRESULT _Fl_Input__value_int(HSQUIRRELVM v)
 {
 {
     SQ_FUNC_VARS(v);
     SQ_FUNC_VARS(v);
@@ -1459,6 +1461,7 @@ static SQRESULT _Fl_Input__value_float(HSQUIRRELVM v)
     else sq_pushfloat(v, self->value_float());
     else sq_pushfloat(v, self->value_float());
 	return 1;
 	return 1;
 }
 }
+
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Input__##name,nparams,pmask,isStatic}
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Input__##name,nparams,pmask,isStatic}
 static SQRegFunction fl_input__obj_funcs[]={
 static SQRegFunction fl_input__obj_funcs[]={
     CHEAP_RTTI_REG_FUN_FOR(Fl_Input_)
     CHEAP_RTTI_REG_FUN_FOR(Fl_Input_)
@@ -1498,6 +1501,7 @@ static SQRegFunction fl_input_obj_funcs[]={
 
 
 FLTK_CONSTRUCTOR(Fl_Float_Input);
 FLTK_CONSTRUCTOR(Fl_Float_Input);
 CHEAP_RTTI_FOR(Fl_Float_Input);
 CHEAP_RTTI_FOR(Fl_Float_Input);
+
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Float_Input_##name,nparams,pmask,isStatic}
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Float_Input_##name,nparams,pmask,isStatic}
 static SQRegFunction fl_float_input_obj_funcs[]={
 static SQRegFunction fl_float_input_obj_funcs[]={
     CHEAP_RTTI_REG_FUN_FOR(Fl_Float_Input)
     CHEAP_RTTI_REG_FUN_FOR(Fl_Float_Input)
@@ -1784,6 +1788,7 @@ static SQRESULT _Flu_Combo_Box__get(HSQUIRRELVM v){
     }
     }
     return sq_throwerror(v, NULL);
     return sq_throwerror(v, NULL);
 }
 }
+
 CHEAP_RTTI_FOR(Flu_Combo_Box);
 CHEAP_RTTI_FOR(Flu_Combo_Box);
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Flu_Combo_Box_##name,nparams,pmask,isStatic}
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Flu_Combo_Box_##name,nparams,pmask,isStatic}
 static SQRegFunction flu_combo_box_obj_funcs[]={
 static SQRegFunction flu_combo_box_obj_funcs[]={
@@ -2554,10 +2559,12 @@ public:
                     }
                     }
                 }
                 }
                 break;
                 break;
+
             case FL_Up:
             case FL_Up:
             case FL_Down:
             case FL_Down:
                 if(Fl::event_shift()) mark_row(false, false);
                 if(Fl::event_shift()) mark_row(false, false);
             break;
             break;
+
                 //default:
                 //default:
                 //handled = handle_key(key);
                 //handled = handle_key(key);
             }
             }
@@ -2766,6 +2773,7 @@ static SQRESULT _Fl_Scroll_scroll_to(HSQUIRRELVM v){
     self->scroll_to(x, y);
     self->scroll_to(x, y);
     return 0;
     return 0;
 }
 }
+
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Scroll_##name,nparams,pmask,isStatic}
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Scroll_##name,nparams,pmask,isStatic}
 static SQRegFunction fl_scroll_obj_funcs[]={
 static SQRegFunction fl_scroll_obj_funcs[]={
     CHEAP_RTTI_REG_FUN_FOR(Fl_Scroll)
     CHEAP_RTTI_REG_FUN_FOR(Fl_Scroll)
@@ -2867,6 +2875,7 @@ static SQRESULT _Fl_Browser_size(HSQUIRRELVM v){
     sq_pushinteger(v, self->size());
     sq_pushinteger(v, self->size());
     return 1;
     return 1;
 }
 }
+
 CHEAP_RTTI_FOR(Fl_Browser);
 CHEAP_RTTI_FOR(Fl_Browser);
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Browser_##name,nparams,pmask,isStatic}
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Browser_##name,nparams,pmask,isStatic}
 static SQRegFunction fl_browser_obj_funcs[]={
 static SQRegFunction fl_browser_obj_funcs[]={
@@ -3123,6 +3132,7 @@ static SQRegFunction fl_svg_image_obj_funcs[]={
 	{0,0}
 	{0,0}
 };
 };
 #undef _DECL_FUNC
 #undef _DECL_FUNC
+
 #define SETUP_FL_IMAGE_DEVICE(v) SETUP_FL_KLASS(v, Fl_Image_Surface)
 #define SETUP_FL_IMAGE_DEVICE(v) SETUP_FL_KLASS(v, Fl_Image_Surface)
 
 
 static SQRESULT _Fl_Image_Surface_releasehook(SQUserPointer p, SQInteger size, void */*ep*/)
 static SQRESULT _Fl_Image_Surface_releasehook(SQUserPointer p, SQInteger size, void */*ep*/)
@@ -3162,6 +3172,8 @@ static SQRegFunction fl_image_surface_obj_funcs[]={
 	{0,0}
 	{0,0}
 };
 };
 #undef _DECL_FUNC
 #undef _DECL_FUNC
+
+
 static SQRESULT _Fl_Text_Buffer_releasehook(SQUserPointer p, SQInteger size, void */*ep*/)
 static SQRESULT _Fl_Text_Buffer_releasehook(SQUserPointer p, SQInteger size, void */*ep*/)
 {
 {
 	Fl_Text_Buffer *self = ((Fl_Text_Buffer *)p);
 	Fl_Text_Buffer *self = ((Fl_Text_Buffer *)p);
@@ -3260,6 +3272,102 @@ static SQRESULT _Fl_Text_Buffer_append(HSQUIRRELVM v)
     return 0;
     return 0;
 }
 }
 
 
+static SQRESULT _Fl_Text_Buffer_selection_position(HSQUIRRELVM v)
+{
+    SQ_FUNC_VARS_NO_TOP(v);
+    SETUP_FL_TEXT_BUFFER(v);
+    int pos_start, pos_end;
+    if(self->selection_position(&pos_start, &pos_end))
+    {
+        sq_newarray(v, 2);
+        sq_pushinteger(v, pos_start);
+        sq_arrayset(v, -2, 0);
+        sq_pushinteger(v, pos_end);
+        sq_arrayset(v, -2, 1);
+    }
+    else sq_pushnull(v);
+    return 1;
+}
+
+static SQRESULT _Fl_Text_Buffer_replace(HSQUIRRELVM v)
+{
+    SQ_FUNC_VARS_NO_TOP(v);
+    SETUP_FL_TEXT_BUFFER(v);
+    SQ_GET_INTEGER(v, 2, pos_start);
+    SQ_GET_INTEGER(v, 3, pos_end);
+    SQ_GET_STRING(v, 4, txt);
+    self->replace(pos_start, pos_end, txt);
+    return 0;
+}
+
+static SQRESULT _Fl_Text_Buffer_replace_selection(HSQUIRRELVM v)
+{
+    SQ_FUNC_VARS_NO_TOP(v);
+    SETUP_FL_TEXT_BUFFER(v);
+    SQ_GET_STRING(v, 2, txt);
+    self->replace_selection(txt);
+    return 0;
+}
+
+static SQRESULT _Fl_Text_Buffer_line_text(HSQUIRRELVM v)
+{
+    SQ_FUNC_VARS_NO_TOP(v);
+    SETUP_FL_TEXT_BUFFER(v);
+    SQ_GET_INTEGER(v, 2, pos);
+    char *txt = self->line_text(pos);
+    if(txt)
+    {
+        sq_pushstring(v, txt, -1);
+        free(txt);
+    }
+    else sq_pushnull(v);
+    return 1;
+}
+
+static SQRESULT _Fl_Text_Buffer_text_range(HSQUIRRELVM v)
+{
+    SQ_FUNC_VARS_NO_TOP(v);
+    SETUP_FL_TEXT_BUFFER(v);
+    SQ_GET_INTEGER(v, 2, pos_start);
+    SQ_GET_INTEGER(v, 3, pos_end);
+    char *txt = self->text_range(pos_start, pos_end);
+    if(txt)
+    {
+        sq_pushstring(v, txt, -1);
+        free(txt);
+    }
+    else sq_pushnull(v);
+    return 1;
+}
+
+static SQRESULT _Fl_Text_Buffer_word_start(HSQUIRRELVM v)
+{
+    SQ_FUNC_VARS_NO_TOP(v);
+    SETUP_FL_TEXT_BUFFER(v);
+    SQ_GET_INTEGER(v, 2, pos);
+    sq_pushinteger(v, self->word_start(pos));
+    return 1;
+}
+
+static SQRESULT _Fl_Text_Buffer_word_end(HSQUIRRELVM v)
+{
+    SQ_FUNC_VARS_NO_TOP(v);
+    SETUP_FL_TEXT_BUFFER(v);
+    SQ_GET_INTEGER(v, 2, pos);
+    sq_pushinteger(v, self->word_end(pos));
+    return 1;
+}
+
+static SQRESULT _Fl_Text_Buffer_undo(HSQUIRRELVM v)
+{
+    SQ_FUNC_VARS_NO_TOP(v);
+    SETUP_FL_TEXT_BUFFER(v);
+    int cursor_pos;
+    if(self->undo(&cursor_pos)) sq_pushinteger(v, cursor_pos);
+    else sq_pushnull(v);
+    return 1;
+}
+
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Text_Buffer_##name,nparams,pmask,isStatic}
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Text_Buffer_##name,nparams,pmask,isStatic}
 static SQRegFunction fl_text_buffer_obj_funcs[]={
 static SQRegFunction fl_text_buffer_obj_funcs[]={
 	_DECL_FUNC(constructor,-1,_SC("xii"),SQFalse),
 	_DECL_FUNC(constructor,-1,_SC("xii"),SQFalse),
@@ -3274,6 +3382,14 @@ static SQRegFunction fl_text_buffer_obj_funcs[]={
 	_DECL_FUNC(selected, 1,_SC("x"),SQFalse),
 	_DECL_FUNC(selected, 1,_SC("x"),SQFalse),
 	_DECL_FUNC(unselect, 1,_SC("x"),SQFalse),
 	_DECL_FUNC(unselect, 1,_SC("x"),SQFalse),
 	_DECL_FUNC(selection_text, 1,_SC("x"),SQFalse),
 	_DECL_FUNC(selection_text, 1,_SC("x"),SQFalse),
+	_DECL_FUNC(selection_position, 1,_SC("x"),SQFalse),
+	_DECL_FUNC(replace, 4,_SC("xiis"),SQFalse),
+	_DECL_FUNC(replace_selection, 2,_SC("xs"),SQFalse),
+	_DECL_FUNC(line_text, 2,_SC("xi"),SQFalse),
+	_DECL_FUNC(word_start, 2,_SC("xi"),SQFalse),
+	_DECL_FUNC(word_end, 2,_SC("xi"),SQFalse),
+	_DECL_FUNC(text_range, 3,_SC("xii"),SQFalse),
+	_DECL_FUNC(undo, 1,_SC("x"),SQFalse),
 	{0,0}
 	{0,0}
 };
 };
 #undef _DECL_FUNC
 #undef _DECL_FUNC
@@ -3331,6 +3447,26 @@ static SQRESULT _Fl_Text_Display_show_insert_position(HSQUIRRELVM v)
     return 0;
     return 0;
 }
 }
 
 
+static SQRESULT _Fl_Text_Display_redisplay_range(HSQUIRRELVM v)
+{
+    SQ_FUNC_VARS_NO_TOP(v);
+    SETUP_FL_TEXT_DISPLAY(v);
+    SQ_GET_INTEGER(v, 2, pos_start);
+    SQ_GET_INTEGER(v, 3, pos_end);
+    self->redisplay_range(pos_start, pos_end);
+    return 0;
+}
+
+static SQRESULT _Fl_Text_Display_scroll(HSQUIRRELVM v)
+{
+    SQ_FUNC_VARS_NO_TOP(v);
+    SETUP_FL_TEXT_DISPLAY(v);
+    SQ_GET_INTEGER(v, 2, topLineNum);
+    SQ_GET_INTEGER(v, 3, horizOffset);
+    self->scroll(topLineNum, horizOffset);
+    return 0;
+}
+
 CHEAP_RTTI_FOR(Fl_Text_Display);
 CHEAP_RTTI_FOR(Fl_Text_Display);
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Text_Display_##name,nparams,pmask,isStatic}
 #define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Text_Display_##name,nparams,pmask,isStatic}
 static SQRegFunction fl_text_display_obj_funcs[]={
 static SQRegFunction fl_text_display_obj_funcs[]={
@@ -3341,6 +3477,8 @@ static SQRegFunction fl_text_display_obj_funcs[]={
 	_DECL_FUNC(wrap_mode, 3,_SC("xii"),SQFalse),
 	_DECL_FUNC(wrap_mode, 3,_SC("xii"),SQFalse),
 	_DECL_FUNC(insert_position,-1,_SC("xi"),SQFalse),
 	_DECL_FUNC(insert_position,-1,_SC("xi"),SQFalse),
 	_DECL_FUNC(show_insert_position,1,_SC("x"),SQFalse),
 	_DECL_FUNC(show_insert_position,1,_SC("x"),SQFalse),
+	_DECL_FUNC(redisplay_range,3,_SC("xii"),SQFalse),
+	_DECL_FUNC(scroll,3,_SC("xii"),SQFalse),
 	{0,0}
 	{0,0}
 };
 };
 #undef _DECL_FUNC
 #undef _DECL_FUNC
@@ -3889,7 +4027,6 @@ static SQRegFunction fl_postscript_file_device_obj_funcs[]={
 };
 };
 #undef _DECL_FUNC
 #undef _DECL_FUNC
 
 
-
 static SQRESULT _Fl_File_Chooser_releasehook(SQUserPointer p, SQInteger size, void */*ep*/)
 static SQRESULT _Fl_File_Chooser_releasehook(SQUserPointer p, SQInteger size, void */*ep*/)
 {
 {
 	Fl_File_Chooser *self = ((Fl_File_Chooser *)p);
 	Fl_File_Chooser *self = ((Fl_File_Chooser *)p);
@@ -4018,6 +4155,7 @@ static SQRESULT _fl_handle(HSQUIRRELVM v)
 	sq_pushinteger(v, Fl::handle(event, window));
 	sq_pushinteger(v, Fl::handle(event, window));
 	return 1;
 	return 1;
 }
 }
+
 static void fltk_cb_hook(void* udata, bool freeAfter){
 static void fltk_cb_hook(void* udata, bool freeAfter){
     HSQOBJECT error_obj;
     HSQOBJECT error_obj;
     HSQUIRRELVM v = (HSQUIRRELVM) Fl::user_data;
     HSQUIRRELVM v = (HSQUIRRELVM) Fl::user_data;
@@ -4065,6 +4203,7 @@ static SQRESULT _fl_add_timeout(HSQUIRRELVM v)
     return 1;
     return 1;
 }
 }
 
 
+
 static SQRESULT _fl_repeat_timeout(HSQUIRRELVM v)
 static SQRESULT _fl_repeat_timeout(HSQUIRRELVM v)
 {
 {
     SQ_FUNC_VARS_NO_TOP(v);
     SQ_FUNC_VARS_NO_TOP(v);
@@ -4075,6 +4214,7 @@ static SQRESULT _fl_repeat_timeout(HSQUIRRELVM v)
     return 1;
     return 1;
 }
 }
 
 
+
 static SQRESULT _fl_remove_timeout(HSQUIRRELVM v)
 static SQRESULT _fl_remove_timeout(HSQUIRRELVM v)
 {
 {
     SQ_FUNC_VARS_NO_TOP(v);
     SQ_FUNC_VARS_NO_TOP(v);