Bladeren bron

Added Fl_Display_Device to FLTK module.

mingodad 13 jaren geleden
bovenliggende
commit
44a610ddf8
2 gewijzigde bestanden met toevoegingen van 88 en 0 verwijderingen
  1. 15 0
      ext/sq_fltk.cpp
  2. 73 0
      ourbiz/ourbiz-fltk.nut

+ 15 - 0
ext/sq_fltk.cpp

@@ -100,6 +100,7 @@ CREATE_TAG(Fl_JPEG_Image);
 
 
 CREATE_TAG(Fl_Device);
 CREATE_TAG(Fl_Device);
 CREATE_TAG(Fl_Surface_Device);
 CREATE_TAG(Fl_Surface_Device);
+CREATE_TAG(Fl_Display_Device);
 CREATE_TAG(Fl_Paged_Device);
 CREATE_TAG(Fl_Paged_Device);
 CREATE_TAG(Fl_Pdf_File_Device);
 CREATE_TAG(Fl_Pdf_File_Device);
 CREATE_TAG(Fl_PostScript_File_Device);
 CREATE_TAG(Fl_PostScript_File_Device);
@@ -2489,6 +2490,19 @@ static SQRegFunction fl_surface_device_obj_funcs[]={
 };
 };
 #undef _DECL_FUNC
 #undef _DECL_FUNC
 
 
+#define SETUP_FL_DISPLAY_DEVICE(v) SETUP_FL_KLASS(v, Fl_Display_Device)
+static SQRESULT _Fl_Display_Device_display_device(HSQUIRRELVM v)
+{
+    return fltk_pushinstance(v, FLTK_TAG(Fl_Display_Device), Fl_Display_Device::display_device());
+}
+
+#define _DECL_FUNC(name,nparams,pmask,isStatic) {_SC(#name),_Fl_Display_Device_##name,nparams,pmask,isStatic}
+static SQRegFunction fl_display_device_obj_funcs[]={
+	_DECL_FUNC(display_device,1,_SC("y"),SQTrue),
+	{0,0}
+};
+#undef _DECL_FUNC
+
 #define SETUP_FL_PAGED_DEVICE(v) SETUP_FL_KLASS(v, Fl_Paged_Device)
 #define SETUP_FL_PAGED_DEVICE(v) SETUP_FL_KLASS(v, Fl_Paged_Device)
 //int start_job(int pagecount, int *frompage = NULL, int *topage = NULL);
 //int start_job(int pagecount, int *frompage = NULL, int *topage = NULL);
 static SQRESULT _Fl_Paged_Device_start_job(HSQUIRRELVM v)
 static SQRESULT _Fl_Paged_Device_start_job(HSQUIRRELVM v)
@@ -3728,6 +3742,7 @@ SQRESULT sqext_register_fltklib(HSQUIRRELVM v)
 
 
     sq_pushnewclass(v, FLTK_TAG(Fl_Device), NULL, (void*)FLTK_TAG(Fl_Device), fl_device_obj_funcs, SQFalse);
     sq_pushnewclass(v, FLTK_TAG(Fl_Device), NULL, (void*)FLTK_TAG(Fl_Device), fl_device_obj_funcs, SQFalse);
     sq_pushnewclass(v, FLTK_TAG(Fl_Surface_Device), FLTK_TAG(Fl_Device), (void*)FLTK_TAG(Fl_Surface_Device), fl_surface_device_obj_funcs, SQFalse);
     sq_pushnewclass(v, FLTK_TAG(Fl_Surface_Device), FLTK_TAG(Fl_Device), (void*)FLTK_TAG(Fl_Surface_Device), fl_surface_device_obj_funcs, SQFalse);
+    sq_pushnewclass(v, FLTK_TAG(Fl_Display_Device), FLTK_TAG(Fl_Surface_Device), (void*)FLTK_TAG(Fl_Display_Device), fl_display_device_obj_funcs, SQFalse);
     sq_pushnewclass(v, FLTK_TAG(Fl_Paged_Device), FLTK_TAG(Fl_Surface_Device), (void*)FLTK_TAG(Fl_Paged_Device), fl_paged_device_obj_funcs, SQFalse);
     sq_pushnewclass(v, FLTK_TAG(Fl_Paged_Device), FLTK_TAG(Fl_Surface_Device), (void*)FLTK_TAG(Fl_Paged_Device), fl_paged_device_obj_funcs, SQFalse);
     sq_pushnewclass(v, FLTK_TAG(Fl_Pdf_File_Device), FLTK_TAG(Fl_Paged_Device), (void*)FLTK_TAG(Fl_Pdf_File_Device), fl_pdf_file_device_obj_funcs, SQFalse);
     sq_pushnewclass(v, FLTK_TAG(Fl_Pdf_File_Device), FLTK_TAG(Fl_Paged_Device), (void*)FLTK_TAG(Fl_Pdf_File_Device), fl_pdf_file_device_obj_funcs, SQFalse);
     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_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);

+ 73 - 0
ourbiz/ourbiz-fltk.nut

@@ -761,6 +761,76 @@ class EntitiesListSearch extends MyListSearchWindow {
 	}
 	}
 }
 }
 
 
+function print_products_list()
+{
+	//SafeCursorWait cursor_wait;
+	fl_cursor(FL_CURSOR_WAIT);
+	local mydata = [];
+	appServer.products_list_get_list(mydata);
+
+	local report = new BaseReportA4(0,0,420,594);
+	//report.resize(0,0, 546, 772);
+	report.resize(0,0, 546, 790);
+	//report.rpt_Body->_forPrint = true;
+	local lines_per_page = 56;
+
+	local _cols_info = [
+                "id|ID|6|R",
+                "reference|Reference|9",
+                "sell_description|Description|-1",
+                "kit|Kit|4|C",
+                "price_taxed|Price+V.A.T.|12|R|M",
+                "quantity_onhand|Onhand|9|R|N",
+	    ];
+	report.rpt_Body->set_cols(_cols_info);
+
+	local nrows = mydata.size();
+	local npages = nrows/lines_per_page;
+	if(nrows%lines_per_page) npages++; //check integer division truncation
+
+	local printer = Fl_Pdf_File_Device();
+	printer.compress(true);
+	local result = printer.start_job("products-list.pdf", 1);
+	local date = os.date("*t");
+	local bufSubTitle, bufSubFooter;
+
+	local rptData = report.rpt_Body->_data;
+	local iter1, iter2, iter0 = 0;
+	
+	local function array_assign(dest, src, start, end){
+		dest.clear();
+		dest.extend(src.slice(start, end));
+	}
+
+	for(local i=0; i< npages; ++i)
+	{
+	    local line_start = i*lines_per_page;
+	    local line_end = line_start + lines_per_page;
+	    iter1 = iter0 + line_start;
+	    iter2 = iter0 + (line_end > nrows ? nrows : line_end);
+	    array_assign(rptData, mydata, iter1, iter2);
+	    report.rpt_Body->recalc_data();
+
+	    report.rpt_Title->label(_tr("Products List"));
+	    bufSubTitle = format("%s %.2d/%.2d/%d", _tr("Date"), date.day, date.month, date.year);
+	    report.rpt_SubTitle->label(bufSubTitle);
+
+	    bufSubFooter = format("%s %d / %d", _tr("Page"), i+1, npages);
+	    report.rpt_SubFooter->label(bufSubFooter);
+	    printer.start_page();
+	    printer.origin(30,25);
+	    printer.print_widget(report);
+	    printer.end_page();
+	    
+            //to allow user do something meanwhile
+            Fl_Display_Device.display_device()->set_current();
+            Fl.check();
+            printer.set_current();	    
+	}
+	printer.end_job();
+	fl_cursor(FL_CURSOR_DEFAULT);
+}
+
 class MyEditProductWindow extends EditProductWindow {
 class MyEditProductWindow extends EditProductWindow {
 	constructor(){
 	constructor(){
 		base.constructor();
 		base.constructor();
@@ -843,6 +913,9 @@ class ProductsListSearch extends MyListSearchWindow {
 			}	
 			}	
 		}
 		}
 	}
 	}
+	function cb_btnUpdate(sender, udata){
+		print_products_list();
+	}
 }
 }
 
 
 class MyEditOrderWindow extends EditOrderWindow {
 class MyEditOrderWindow extends EditOrderWindow {