Selaa lähdekoodia

Added a check in fltk_pushinstance for fltk_get_registered_instance, this way no new instance is generated if it's found.
Also now instead of referencing fields on callbacks through a reference to the main window class we are assigning the main window instance to the calback "this".

mingodad 13 vuotta sitten
vanhempi
sitoutus
2ecddf7760
4 muutettua tiedostoa jossa 57 lisäystä ja 55 poistoa
  1. 1 0
      ext/sq_fltk.cpp
  2. 29 30
      ourbiz/help-view.nut
  3. 25 25
      ourbiz/ourbiz-fltk.nut
  4. 2 0
      sq/sq.c

+ 1 - 0
ext/sq_fltk.cpp

@@ -454,6 +454,7 @@ static SQChar Fl_Image_TAG[] = _SC("Fl_Image");
 
 static SQRESULT fltk_pushinstance(HSQUIRRELVM v, const SQChar *klass, SQUserPointer self){
 	sq_pushstring(v, klass,-1);
+	if(fltk_get_registered_instance(v, self) == SQ_OK) return 1;
 	if(sq_getonroottable(v) == SQ_OK){
 	    if(sq_createinstance(v, -1) == SQ_OK){
 	        sq_setinstanceup(v, -1, self);

+ 29 - 30
ourbiz/help-view.nut

@@ -3,6 +3,7 @@ class OurHelpWindow extends HelpWindow
 	_help_file_name = null;
 	_navigation = null;
 	_last_found_pos = null;
+	_help_text_buffer = null;
 
 
 	constructor() {
@@ -11,6 +12,7 @@ class OurHelpWindow extends HelpWindow
 		_last_found_pos = 0;
 		_navigation = [];
 		help_text->wrap_mode(1, 0);
+		_help_text_buffer = help_text->buffer();
 		view_html->textsize(view_html->labelsize());
 		view_html->link(hlp_link);
 		btnSavehelp.callback(save_help_file);
@@ -25,30 +27,30 @@ class OurHelpWindow extends HelpWindow
 	}
 
 	function hlp_link(sender, uri, anchor){
-	    if(uri.startswith("db:/")){
-		printf("%s\n", uri);
-		return null;
-	    }
-	    local hw = sender->window();
-	    hw->_navigation.push(sender->topline());
-	    return uri;
+		this = sender->window();
+		if(uri.startswith("db:/")){
+			printf("%s\n", uri);
+			return null;
+		}
+		_navigation.push(sender->topline());
+		return uri;
 	}
 
 	function refresh_html() {
-		local html = markdown2html(help_text->buffer()->text(), help_text->buffer()->length());
+		local html = markdown2html(_help_text_buffer->text(), _help_text_buffer->length());
 		view_html->value(html);
 		//printf(html.c_str());
 	}
 
 	function load_help_file(fn=null){
 		fn = fn ? fn : _help_file_name;
-		help_text->buffer()->loadfile(fn);
+		_help_text_buffer->loadfile(fn);
 		_help_file_name = fn;
 		refresh_html();
 	}
 
 	function save_help_file() {
-		help_text->buffer()->savefile(_help_file_name);
+		_help_text_buffer->savefile(_help_file_name);
 		btnSavehelp->deactivate();
 	}
 
@@ -60,7 +62,7 @@ class OurHelpWindow extends HelpWindow
 		words_to_search->value(topic);
 		if(!topic) return;
 
-		if(!help_text->buffer()->length()) load_help_file();
+		if(!_help_text_buffer->length()) load_help_file();
 
 		if(fromStart || words_to_search->changed2()){
 			_last_found_pos =0;
@@ -68,7 +70,7 @@ class OurHelpWindow extends HelpWindow
 		}
 
 		local foundPos = -1;
-
+		
 		if(tabs->value() == tabView){
 			foundPos = view_html->find(topic, _last_found_pos);
 			if(foundPos >= 0) _last_found_pos = foundPos;
@@ -76,8 +78,8 @@ class OurHelpWindow extends HelpWindow
 		}
 		else
 		{
-			if((foundPos = help_text->buffer()->search_forward(_last_found_pos, topic)) >= 0){
-				help_text->buffer()->select(foundPos, foundPos+topic.len());
+			if((foundPos = _help_text_buffer->search_forward(_last_found_pos, topic)) >= 0){
+				_help_text_buffer->select(foundPos, foundPos+topic.len());
 				help_text->insert_position(foundPos);
 				help_text->show_insert_position();
 				_last_found_pos = foundPos+1;
@@ -92,10 +94,7 @@ class OurHelpWindow extends HelpWindow
 	}
 
 	function on_font_size(sender, udata){
-		local pr = sender->window();
-		local view_html = pr->view_html;
-		local btnFontSmaller = pr->btnFontSmaller;
-		local btnFontBigger = pr->btnFontBigger;
+		this = sender->window(); //resolve vars on this window class
 		
 		local fsize = view_html->textsize();
 		if(sender == btnFontSmaller){
@@ -120,25 +119,25 @@ class OurHelpWindow extends HelpWindow
 	}
 
 	function on_navigate(sender, udata){
-		local pr = sender->window();
-		if(sender == pr->btnBackward && !pr->_navigation.empty() )
+		this = sender->window();
+		if(sender == btnBackward && !_navigation.empty() )
 		{
-			pr->view_html->topline(pr->_navigation.top());
-			pr->_navigation.pop();
+			view_html->topline(_navigation.top());
+			_navigation.pop();
 		}
-		else if(sender == pr->btnTop)
+		else if(sender == btnTop)
 		{
-			pr->view_html->topline(0);
+			view_html->topline(0);
 		}
 	}
     
 	function on_tab_change(sender, udata){
-		local pr = sender->window();
-		if(pr->tabs->value() == pr->tabView){
-			if(pr->help_text->changed2()){
-				pr->refresh_html();
-				pr->help_text->clear_changed2();
-				pr->btnSavehelp->activate();
+		this = sender->window();
+		if(tabs->value() == tabView){
+			if(help_text->changed2()){
+				refresh_html();
+				help_text->clear_changed2();
+				btnSavehelp->activate();
 			}
 		}
 	}

+ 25 - 25
ourbiz/ourbiz-fltk.nut

@@ -567,8 +567,8 @@ class MyListSearchWindow extends ListSearch {
 		fl_cursor(FL_CURSOR_DEFAULT);
 	}
 	function cb_btnSearch(sender, udata){
-		local pr = sender.parent_root();
-		pr->fill_grid();
+		this = sender.window();
+		fill_grid();
 	}
 	
 	function create_search_by0(name, Klass, pack){
@@ -608,8 +608,8 @@ class MyListSearchWindow extends ListSearch {
 		group_filter.callback(on_filter);
 	}
 	function on_filter(sender, udata){
-		local pr = sender.parent_root();
-		pr->cb_btnSearch(sender, udata);
+		this = sender.window();
+		cb_btnSearch(sender, udata);
 	}
 	
 	function setFilterComboTree(){
@@ -775,8 +775,8 @@ class EntitiesListSearch extends MyListSearchWindow {
 	function get_edit_window(){return getChildWindow("Entity Edit", MyEditEntityWindow);}
 	
 	function cb_btnInsert(sender, udata){
-		local pr = sender.parent_root();
-		local win = pr.showChildWindow("Entity Edit", EditEntitiesWindow);
+		this = sender.window();
+		local win = showChildWindow("Entity Edit", EditEntitiesWindow);
 	}
 	function cb_btnUpdate(sender, udata){
 		print_entities_list_contact_report();
@@ -915,21 +915,21 @@ class ProductsListSearch extends MyListSearchWindow {
 	function get_edit_window(){return getChildWindow("Product Edit", MyEditProductWindow);}
 
 	function cb_btnInsert(sender, udata){
-		local pr = sender.parent_root();
-		local win = pr.showChildWindow("Product Edit", EditProductWindow);
+		this = sender.windw();
+		local win = showChildWindow("Product Edit", EditProductWindow);
 	}
 	
 	function grid_cb(sender, udata){
 		//print("on_row_changed", sender, row);
 		if(sender->why_event() == FLVE_ROW_CHANGED){
-			local pr = sender.parent_root();
-			if(pr->shown()){
+			this = sender.window();
+			if(shown()){
 				local img_id = sender->get_data_value(sender->row(), sender->cols()-1);
 				if(img_id){
 					img_id = img_id.tointeger();
-					if(img_id != pr->_last_image_id){
-						button_show_db_image(pr->btnThumbImage, img_id, pr->_image_window, true, false);
-						pr->_last_image_id = img_id;
+					if(img_id != _last_image_id){
+						button_show_db_image(btnThumbImage, img_id, _image_window, true, false);
+						_last_image_id = img_id;
 					}
 				}
 			}	
@@ -999,8 +999,8 @@ class OrdersListSearch extends MyListSearchWindow {
 	function get_edit_window(){return getChildWindow("Order Edit", MyEditOrderWindow);}
 
 	function cb_btnInsert(sender, udata){
-		local pr = sender.parent_root();
-		local win = pr.showChildWindow("Order Edit", EditOrderWindow);
+		this = sender.windw();
+		local win = showChildWindow("Order Edit", EditOrderWindow);
 	}
 	function mk_popup()
 	{
@@ -1015,26 +1015,26 @@ class OrdersListSearch extends MyListSearchWindow {
 	function on_popupmenu_cb(sender, udata){
 		//printf("%p : %d : %s\n", sender, popup->value(),
 		//       popup->menu_at(popup->value())->label());
-		local pr = sender.parent_root();
-		local row = pr->grid->row();
+		this = sender.windw();
+		local row = grid->row();
 		if(row < 0) return;
-		switch(pr->_popup->value()){
+		switch(_popup->value()){
 			case 0:{
 				local vi = [];
-				pr->grid->get_selection(vi, true);
-				if(vi.size() == 0) vi.push(pr->grid->get_row_id(row));
-				pr->copy_order(vi, false, pr->_sab);
+				grid->get_selection(vi, true);
+				if(vi.size() == 0) vi.push(grid->get_row_id(row));
+				copy_order(vi, false, _sab);
 			}
 			break;
 			case 1:{
 			    local vi = [];
-			    pr->grid->get_selection(vi, true);
-			    pr->copy_order(vi, true, pr->_sab);
+			    grid->get_selection(vi, true);
+			    copy_order(vi, true, _sab);
 			}
 			break;
 			case 2:{
-			    pr->grid->clear_selection();
-			    pr->grid->redraw();
+			    grid->clear_selection();
+			    grid->redraw();
 			}
 			break;
 		}

+ 2 - 0
sq/sq.c

@@ -320,6 +320,7 @@ SQRESULT sqext_register_mix (HSQUIRRELVM sqvm);
 SQRESULT sqext_register_rs232(HSQUIRRELVM v);
 SQRESULT sqext_register_tinyxml2(HSQUIRRELVM v);
 SQRESULT sqext_register_decimal(HSQUIRRELVM v);
+SQRESULT sqext_register_markdown(HSQUIRRELVM v);
 
 int sq_main_argc = 0;
 char** sq_main_argv = 0;
@@ -362,6 +363,7 @@ int main(int argc, char* argv[])
 	sqext_register_sq_slave_vm(v);
 	sqext_register_tinyxml2(v);
 	sqext_register_decimal(v);
+	sqext_register_markdown(v);
 
 	sqext_register_sq_zmq3(v);