def initComboBoxScanners(self, select_scanner=None): """ Initialization of the combobox list of system scanners. :param select_scanner: Which scanner to choose after initialization of the combo box, if None, then the first one in the list is selected. """ scanner_devices = self.scan_manager.getDeviceNames() self.scanner_comboBox.Clear() if scanner_devices: default_select = 0 i = 0 for scanner_name in scanner_devices: img_filename = os.path.normpath(os.path.join(os.path.dirname(__file__), u'img', u'scanner.png')) if scanner_name == select_scanner: default_select = i self.scanner_comboBox.Append(scanner_name, wx.Image.ConvertToBitmap(wx.Image(img_filename))) i += 1 self.scanner_comboBox.Select(default_select) else: log_func.warning(u'No scan devices found') msg = u'No scan devices found. Check if the devices are on / connected to them.' dlg_func.openWarningBox(u'WARNING', msg) try: self.EndModal(wx.ID_CANCEL) except: log_func.fatal()
def do_scan_dlg(parent=None, options=None, title=None): """ Calling the dialogue form of scanning. :param parent: Parent form. :param options: Scan options. :param title: Title dielog form. :return: True/False. """ result = True scan_dlg = iqScannerDlg(parent=parent) if title: scan_dlg.SetTitle(title) if options: scan_dlg.setOptions(**options) if scan_dlg.scan_manager.isDevices(): dlg_result = scan_dlg.ShowModal() result = dlg_result == wx.ID_OK else: msg = u'No scan devices found. Check if the devices are on / connected to them.' dlg_func.openWarningBox(u'WARNING', msg) result = False scan_dlg.Destroy() return result
def edit(self, rep_filename=None): """ Edit report. :param rep_filename: Report template filename. """ rprt_file_name = os.path.abspath(rep_filename) rep = res_func.loadResource(rprt_file_name) report_dir = os.path.abspath(self.getReportDir()) rep_file = os.path.join(report_dir, rep['generator']) reportman_designer_key = utilfunc.getRegValue( 'Software\\Classes\\Report Manager Designer\\shell\\open\\command', None) if reportman_designer_key: reportman_designer_run = reportman_designer_key.replace( '\'%1\'', '\'%s\'') % rep_file cmd = 'start %s' % reportman_designer_run log_func.debug(u'Execute command <%s>' % cmd) # Run Report Manager Designer os.system(cmd) else: msg = u'Not define Report Manager Designer <%s>' % reportman_designer_key log_func.warning(msg) dlg_func.openWarningBox(u'WARNING', msg) xml_file = os.path.normpath( os.path.abspath(os.path.splitext(rep_filename)[0] + '.xml')) cmd = 'start excel.exe \'%s\'' % xml_file log_func.debug(u'Execute command <%s>' % cmd) os.system(cmd)
def setTestingComponent(self, component): """ Set testing component. :param component: Testing component. :return: """ self.testing_component = component log_func.info(u'Testing component <%s>' % (self.testing_component.getName() if self.testing_component is not None else None)) tab_datasource = component.getTabDataSource() if component else None if tab_datasource is None: msg = u'The table datasource object is not set in the transform datasource results view window\nResult is empty' log_func.warning(msg) dlg_func.openWarningBox(title=u'WARNING', prompt_text=msg) elif isinstance(tab_datasource, data_query.COMPONENT): sql_query = tab_datasource.getSQLText() if txtgen_func.isGenered(sql_query): var_names = txtgen_func.getReplaceNames(sql_query) self.variables = dict([(name, u'') for name in var_names]) self.setVariables(self.variables) else: log_func.warning(u'Type error table datasource for testing <%s>' % tab_datasource.__class__.__name__)
def onRenameReport(self, event): """ Rename report menu item handler. """ item = self.rep_tree.GetSelection() item_data = self.rep_tree.GetItemData(item) if item_data is not None and item_data[REP_ITEMS_IDX] is None: old_rep_name = os.path.splitext( os.path.split(item_data[REP_FILE_IDX])[1])[0] new_rep_name = dlg_func.getTextEntryDlg( self, _(u'Rename report'), _(u'Entry new report name'), old_rep_name) if new_rep_name and new_rep_name != old_rep_name: new_rep_file_name = os.path.join( os.path.split(item_data[REP_FILE_IDX])[0], new_rep_name + REPORT_FILENAME_EXT) if not os.path.isfile(new_rep_file_name): self.renameReport(item_data[REP_FILE_IDX], new_rep_name) else: dlg_func.openWarningBox( title=_(u'WARNING'), prompt_text=_( u'A report with the same name already exists'), parent=self) event.Skip()
def generateReport(self, report=None, *args, **kwargs): """ Generate report. :param report: Report template data. :return: Generated report or None if error. """ try: if report is not None: self._report_template = report # 1. Get query table query_data = self.getQueryTbl(self._report_template) if not query_data: dlg_func.openWarningBox(u'WARNING', u'Not report data\nQuery <%s>' % self._report_template['query'], parent=self._parent_window) return None # 2. Generate rep_data = copy.deepcopy(self._report_template) rep_data['__data__'] = query_data return rep_data except: log_func.fatal(u'Error generate report <%s>' % self._report_template['name']) return None
def generate(self, report=None, db_url=None, sql=None, stylelib=None, vars=None, *args, **kwargs): """ Run report generator. :param report: Report template data. :param db_url: Connection string as url. For example: postgresql+psycopg2://postgres:[email protected]:5432/realization. :param sql: SQL query. :param stylelib: Style library. :param vars: Report variables dictionary. :return: Generated report or None if error. """ try: if report is not None: self._report_template = report if stylelib: self._report_template['style_lib'] = stylelib if vars: self._report_template['variables'] = vars # 1. Get query table _kwargs = copy.deepcopy(kwargs) _kwargs.update( dict(db_url=db_url, sql=sql, stylelib=stylelib, variables=vars)) query_tbl = self.getQueryTbl(self._report_template, **_kwargs) if self._isEmptyQueryTbl(query_tbl): dlg_func.openWarningBox(u'WARNING', u'Not report data\nQuery <%s>' % self._report_template['query'], parent=self._parent_window) return None # 2. Run generator rep = report_generator.iqReportGenerator() data_rep = rep.generate(self._report_template, query_tbl, name_space=vars, *args, **kwargs) return data_rep except: log_func.fatal(u'Error generate report <%s>' % self._report_template['name']) return None
def onPageSetupButton(self, event): """ Page setup button click handler. """ item = self.rep_tree.GetSelection() item_data = self.rep_tree.GetItemData(item) if item_data is not None and item_data[REP_ITEMS_IDX] is None: report_gen_func.getReportGeneratorSystem( item_data[REP_FILE_IDX], parent=self).setPageSetup() else: dlg_func.openWarningBox(title=_(u'WARNING'), message=_(u'You must select a report'), parent=self) event.Skip()
def onPrintRepButton(self, event): """ Print button click handler. """ item = self.rep_tree.GetSelection() item_data = self.rep_tree.GetItemData(item) log_func.debug(u'Print <%s>' % item_data[REP_FILE_IDX] if item_data else u'-') if item_data is not None and item_data[REP_ITEMS_IDX] is None: report_gen_func.getReportGeneratorSystem(item_data[REP_FILE_IDX], parent=self, refresh=True).print() else: dlg_func.openWarningBox(title=_(u'WARNING'), message=_(u'You must select a report'), parent=self) event.Skip()