Example #1
0
    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()
Example #2
0
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()
Example #6
0
    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()