コード例 #1
0
 def do(self):
     SimpleAction.do(self)
     labeleditor = LabelEditor()
     if labeleditor.edit(self.__main_win.window):
         logger.info("Adding label %s to doc %s" %
                     (labeleditor.label.name, self.__main_win.doc))
         job = self.__doc_properties.job_factories['label_creator'].make(
             self.__main_win.docsearch, labeleditor.label,
             self.__main_win.doc)
         self.__main_win.schedulers['main'].schedule(job)
コード例 #2
0
ファイル: __init__.py プロジェクト: jflesch/paperwork
 def do(self, new_text):
     SimpleAction.do(self, new_text=new_text)
     new_text = str(int(new_text))  # make sure it's a valid number
     docs_gui = self.__dialog.lists['docs']['gui']
     (model, selection_iter) = docs_gui.get_selection().get_selected()
     if selection_iter is None:
         logger.warning("No doc selected")
         return
     line = model[selection_iter]
     int(new_text)  # make sure it's a valid number
     line[1] = new_text
コード例 #3
0
ファイル: __init__.py プロジェクト: awesome-archive/paperwork
 def do(self):
     SimpleAction.do(self)
     docs_gui = self.__dialog.lists['docs']['gui']
     (model, selection_iter) = docs_gui.get_selection().get_selected()
     if selection_iter is None:
         logger.warning("No doc selected")
         return
     self.__dialog.lists['docs']['gui'].set_cursor(
         model.get_path(selection_iter),
         self.__dialog.lists['docs']['columns']['nb_pages'],
         start_editing=True)
コード例 #4
0
ファイル: __init__.py プロジェクト: jflesch/paperwork
 def do(self):
     SimpleAction.do(self)
     docs_gui = self.__dialog.lists['docs']['gui']
     (model, selection_iter) = docs_gui.get_selection().get_selected()
     if selection_iter is None:
         logger.warning("No doc selected")
         return
     self.__dialog.lists['docs']['gui'].set_cursor(
         model.get_path(selection_iter),
         self.__dialog.lists['docs']['columns']['nb_pages'],
         start_editing=True)
コード例 #5
0
ファイル: __init__.py プロジェクト: awesome-archive/paperwork
 def do(self, new_text):
     SimpleAction.do(self, new_text=new_text)
     new_text = str(int(new_text))  # make sure it's a valid number
     docs_gui = self.__dialog.lists['docs']['gui']
     (model, selection_iter) = docs_gui.get_selection().get_selected()
     if selection_iter is None:
         logger.warning("No doc selected")
         return
     line = model[selection_iter]
     int(new_text)  # make sure it's a valid number
     line[1] = new_text
コード例 #6
0
ファイル: __init__.py プロジェクト: awesome-archive/paperwork
 def do(self):
     SimpleAction.do(self)
     selection = self.__dialog.lists['docs']['gui'].get_selection()
     if selection is None:
         logger.warning("No doc selected")
         return
     (model, selection_iter) = selection.get_selected()
     if selection_iter is None:
         logger.warning("No doc selected")
         return
     val = model.get_value(selection_iter, 5)
     self.__dialog.removeDocButton.set_sensitive(val)
コード例 #7
0
ファイル: __init__.py プロジェクト: jflesch/paperwork
 def do(self):
     SimpleAction.do(self)
     selection = self.__dialog.lists['docs']['gui'].get_selection()
     if selection is None:
         logger.warning("No doc selected")
         return
     (model, selection_iter) = selection.get_selected()
     if selection_iter is None:
         logger.warning("No doc selected")
         return
     val = model.get_value(selection_iter, 5)
     self.__dialog.removeDocButton.set_sensitive(val)
コード例 #8
0
ファイル: __init__.py プロジェクト: awesome-archive/paperwork
 def do(self):
     SimpleAction.do(self)
     docidx = len(self.__dialog.lists['docs']['model'])
     if not self.__dialog.lists['docs']['include_current_doc']:
         docidx += 1
     self.__dialog.lists['docs']['model'].append([
         _("Document %d") % docidx,
         "1",  # nb_pages
         True,  # can_edit (nb_pages)
         0,  # scan_progress_int
         "",  # scan_progress_txt
         True  # can_delete
     ])
コード例 #9
0
ファイル: __init__.py プロジェクト: jflesch/paperwork
 def do(self):
     SimpleAction.do(self)
     docidx = len(self.__dialog.lists['docs']['model'])
     if not self.__dialog.lists['docs']['include_current_doc']:
         docidx += 1
     self.__dialog.lists['docs']['model'].append(
         [
             _("Document %d") % docidx,
             "1",  # nb_pages
             True,  # can_edit (nb_pages)
             0,  # scan_progress_int
             "",  # scan_progress_txt
             True  # can_delete
         ])
コード例 #10
0
ファイル: __init__.py プロジェクト: awesome-archive/paperwork
 def do(self):
     SimpleAction.do(self)
     docs_gui = self.__dialog.lists['docs']['gui']
     (model, selection_iter) = docs_gui.get_selection().get_selected()
     if selection_iter is None:
         logger.warning("No doc selected")
         return
     model.remove(selection_iter)
     for line_idx in range(0, len(self.__dialog.lists['docs']['model'])):
         line = self.__dialog.lists['docs']['model'][line_idx]
         if not self.__dialog.lists['docs']['include_current_doc']:
             line[0] = _("Document %d") % (line_idx + 1)
         elif line_idx != 0:
             line[0] = _("Document %d") % line_idx
コード例 #11
0
ファイル: __init__.py プロジェクト: jflesch/paperwork
 def do(self):
     SimpleAction.do(self)
     docs_gui = self.__dialog.lists['docs']['gui']
     (model, selection_iter) = docs_gui.get_selection().get_selected()
     if selection_iter is None:
         logger.warning("No doc selected")
         return
     model.remove(selection_iter)
     for (line_idx, line) in enumerate(
                 self.__dialog.lists['docs']['model']
             ):
         if not self.__dialog.lists['docs']['include_current_doc']:
             line[0] = _("Document %d") % (line_idx + 1)
         elif line_idx != 0:
             line[0] = _("Document %d") % line_idx
コード例 #12
0
    def do(self):
        SimpleAction.do(self)
        calendar = self.__main_win.doc_properties_panel.widgets['calendar']
        popover = self.__main_win.doc_properties_panel.popovers['calendar']
        date = calendar.get_date()
        date = datetime.datetime(year=date[0], month=date[1] + 1, day=date[2])
        date_txt = BasicDoc.get_name(date)

        entry = self.__main_win.doc_properties_panel.widgets['name']
        entry.set_text(date_txt)

        if self.__main_win.doc_properties_panel.doc.date != date:
            self.__main_win.doc_properties_panel.new_doc_date = date
        else:
            self.__main_win.doc_properties_panel.new_doc_date = None

        popover.set_visible(False)
コード例 #13
0
    def do(self):
        SimpleAction.do(self)

        doclist = self.__doclist.gui['list']
        row = doclist.get_selected_row()
        if row is None:
            return
        docid = self.__doclist.model['by_row'][row]
        doc = self.__main_win.docsearch.get_doc_from_docid(docid, inst=False)
        if doc is None:
            # assume new doc
            doc = self.__doclist.get_new_doc()

        logger.info("Showing doc %s" % doc)
        if doc.nb_pages <= 1:
            self.__main_win.set_layout('paged', force_refresh=False)
        else:
            self.__main_win.set_layout('grid', force_refresh=False)
        self.__main_win.show_doc(doc)
コード例 #14
0
    def _do(self):
        SimpleAction.do(self)
        if self.__doc is None:
            doc = self.__main_win.doc
        else:
            doc = self.__doc

        self.__main_win.actions['new_doc'][1].do()

        logger.info("Deleting ...")
        job = self.__main_win.job_factories['index_updater'].make(
            self.__main_win.docsearch,
            del_docs={doc},
            optimize=False,
            reload_list=True)
        job.connect(
            "index-update-end",
            lambda job: GLib.idle_add(self._on_doc_deleted_from_index, doc))
        self.__main_win.new_doc()
        self.__main_win.schedulers['main'].schedule(job)
コード例 #15
0
    def do(self):
        SimpleAction.do(self)

        # Open the russian dolls to retrieve the selected label.
        label_list = self.__doc_properties.lists['labels']['gui']
        selected_row = label_list.get_selected_row()
        if selected_row is None:
            logger.warning("No label selected")
            return True
        label_box = selected_row.get_children()[0]
        label_name = label_box.get_children()[2].get_text()
        label_color = label_box.get_children()[1].get_rgba().to_string()
        label = Label(label_name, label_color)

        new_label = copy(label)
        editor = LabelEditor(new_label)
        if not editor.edit(self.__main_win.window):
            logger.warning("Label edition cancelled")
            return
        logger.info("Label edited. Applying changes")
        job = self.__doc_properties.job_factories['label_updater'].make(
            self.__main_win.docsearch, label, new_label)
        self.__main_win.schedulers['main'].schedule(job)
コード例 #16
0
 def __init__(self, main_window):
     SimpleAction.__init__(self, "Switch back to doc list")
     self.__main_win = main_window
コード例 #17
0
 def __init__(self, settings_win):
     SimpleAction.__init__(self, "Scan calibration sheet")
     self.__settings_win = settings_win
コード例 #18
0
 def __init__(self, settings_win, config):
     SimpleAction.__init__(self, "Cancel settings")
     self.__settings_win = settings_win
     self.__config = config
コード例 #19
0
 def __init__(self, settings_win):
     SimpleAction.__init__(self, "Toggle OCR state")
     self.__settings_win = settings_win
コード例 #20
0
 def __init__(self, settings_win):
     SimpleAction.__init__(self, "New source selected")
     self.__settings_win = settings_win
コード例 #21
0
ファイル: __init__.py プロジェクト: jflesch/paperwork
 def do(self):
     SimpleAction.do(self)
     self.__settings_win.set_ocr_opts_state()
コード例 #22
0
ファイル: __init__.py プロジェクト: jflesch/paperwork
 def __init__(self, multiscan_dialog):
     SimpleAction.__init__(self, "Add doc to the multi-scan list")
     self.__dialog = multiscan_dialog
コード例 #23
0
 def do(self):
     SimpleAction.do(self)
     self.__main_win.doc_properties_panel.apply_properties()
     self.__main_win.switch_leftpane("doc_list")
コード例 #24
0
ファイル: __init__.py プロジェクト: awesome-archive/paperwork
 def __init__(self, multiscan_dialog):
     SimpleAction.__init__(self, "End doc edit in multi-scan list")
     self.__dialog = multiscan_dialog
コード例 #25
0
 def __init__(self, main_window):
     SimpleAction.__init__(self, "Set document date")
     self.__main_win = main_window
コード例 #26
0
ファイル: __init__.py プロジェクト: awesome-archive/paperwork
 def __init__(self, multiscan_win):
     SimpleAction.__init__(self, "Cancel multi-scan")
     self.__multiscan_win = multiscan_win
コード例 #27
0
ファイル: __init__.py プロジェクト: awesome-archive/paperwork
 def __init__(self, multiscan_win, config, docsearch, main_win):
     SimpleAction.__init__(self, "Start multi-scan")
     self.__multiscan_win = multiscan_win
     self.__config = config
     self.__docsearch = docsearch
     self.__main_win = main_win
コード例 #28
0
 def __init__(self, main_window, doc_properties):
     SimpleAction.__init__(self, "Editing label")
     self.__main_win = main_window
     self.__doc_properties = doc_properties
コード例 #29
0
ファイル: __init__.py プロジェクト: jflesch/paperwork
 def __init__(self, multiscan_dialog):
     SimpleAction.__init__(self, "End doc edit in multi-scan list")
     self.__dialog = multiscan_dialog
コード例 #30
0
ファイル: __init__.py プロジェクト: jflesch/paperwork
 def __init__(self, multiscan_win, config, docsearch, main_win):
     SimpleAction.__init__(self, "Start multi-scan")
     self.__multiscan_win = multiscan_win
     self.__config = config
     self.__docsearch = docsearch
     self.__main_win = main_win
コード例 #31
0
 def __init__(self, main_window, doc=None):
     SimpleAction.__init__(self, "Delete document")
     self.__main_win = main_window
     self.__doc = doc
コード例 #32
0
ファイル: __init__.py プロジェクト: awesome-archive/paperwork
    def do(self):
        SimpleAction.do(self)

        try:
            (dev,
             resolution) = get_scanner(self.__config,
                                       preferred_sources=["ADF", "Feeder"])
        except Exception as exc:
            logger.warning(
                "Exception while configuring scanner: %s: %s."
                " Assuming scanner is not connected", type(exc), exc)
            popup_no_scanner_found(self.__multiscan_win.window)
            raise

        try:
            scan_session = dev.scan(multiple=True)
        except Exception as exc:
            logger.warning("Exception while scanning: {}".format(exc))
            self.__on_scan_error(exc)
            raise

        self.__multiscan_win.on_global_scan_start_cb()

        page_scans = []

        MARGIN = 10
        position = (MARGIN, MARGIN)

        rng = range(0, len(self.__multiscan_win.lists['docs']['model']))
        for line_idx in rng:
            line = self.__multiscan_win.lists['docs']['model'][line_idx]
            doc = None
            if line_idx == 0:
                doc = self.__main_win.doc
            nb_pages = int(line[1])
            total_pages = nb_pages
            doc_nb_pages = 0
            if doc:
                total_pages += doc.nb_pages
                doc_nb_pages = doc.nb_pages
            doc_scan = DocScan(doc)
            drawer = None
            for page_nb in range(doc_nb_pages, doc_nb_pages + nb_pages):
                page_scan = PageScan(self.__main_win, self.__multiscan_win,
                                     self.__config, resolution, scan_session,
                                     line_idx, doc_scan, page_nb, total_pages)
                drawer = PageScanDrawer(position)
                self.__multiscan_win.scan_canvas.add_drawer(drawer)
                page_scan.connect("scanworkflow-inst",
                                  drawer.set_scan_workflow)
                page_scans.append(page_scan)
                position = (position[0] + drawer.size[0] + MARGIN, position[1])
            new_height = position[1] + MARGIN
            if drawer:
                new_height += drawer.size[1]
            position = (MARGIN, new_height)

        first_page_scan = page_scans[0]
        last_page_scan = None
        for page_scan in page_scans:
            if last_page_scan:
                last_page_scan.connect_next_page_scan(page_scan)
            last_page_scan = page_scan

        if last_page_scan:
            last_page_scan.connect(
                "done", lambda _: GLib.idle_add(self.__multiscan_win.
                                                on_global_scan_end_cb))
        if first_page_scan:
            first_page_scan.start_scan_workflow()
コード例 #33
0
ファイル: __init__.py プロジェクト: jflesch/paperwork
    def do(self):
        SimpleAction.do(self)

        try:
            (dev, resolution) = get_scanner(
                self.__config,
                preferred_sources=["ADF", "Feeder"]
            )
        except Exception as exc:
            logger.warning("Exception while configuring scanner: %s: %s."
                           " Assuming scanner is not connected",
                           type(exc), exc)
            logger.exception(exc)
            popup_no_scanner_found(self.__multiscan_win.window)
            raise

        try:
            scan_session = dev.scan(multiple=True)
        except Exception as exc:
            logger.error("Exception while scanning: {}".format(exc))
            logger.exception(exc)
            self.__on_scan_error(exc)
            raise

        self.__multiscan_win.on_global_scan_start_cb()

        page_scans = []

        MARGIN = 10
        position = (MARGIN, MARGIN)

        rng = range(0, len(self.__multiscan_win.lists['docs']['model']))
        for line_idx in rng:
            line = self.__multiscan_win.lists['docs']['model'][line_idx]
            doc = None
            if line_idx == 0:
                doc = self.__main_win.doc
            nb_pages = int(line[1])
            total_pages = nb_pages
            doc_nb_pages = 0
            if doc:
                total_pages += doc.nb_pages
                doc_nb_pages = doc.nb_pages
            doc_scan = DocScan(doc)
            drawer = None
            for page_nb in range(doc_nb_pages, doc_nb_pages + nb_pages):
                page_scan = PageScan(self.__main_win, self.__multiscan_win,
                                     self.__config,
                                     resolution, scan_session,
                                     line_idx, doc_scan,
                                     page_nb, total_pages)
                drawer = PageScanDrawer(position)
                self.__multiscan_win.scan_canvas.add_drawer(drawer)
                page_scan.connect("scanworkflow-inst",
                                  drawer.set_scan_workflow)
                page_scans.append(page_scan)
                position = (position[0] + drawer.size[0] + MARGIN,
                            position[1])
            new_height = position[1] + MARGIN
            if drawer:
                new_height += drawer.size[1]
            position = (MARGIN, new_height)

        first_page_scan = page_scans[0]
        last_page_scan = None
        for page_scan in page_scans:
            if last_page_scan:
                last_page_scan.connect_next_page_scan(page_scan)
            last_page_scan = page_scan

        if last_page_scan:
            last_page_scan.connect(
                "done",
                lambda _, scan_session: GLib.idle_add(
                    self.__multiscan_win.on_global_scan_end_cb,
                    scan_session
                )
            )
        if first_page_scan:
            first_page_scan.start_scan_workflow()
コード例 #34
0
ファイル: __init__.py プロジェクト: awesome-archive/paperwork
 def do(self):
     SimpleAction.do(self)
     self.__multiscan_win.dialog.destroy()
コード例 #35
0
ファイル: __init__.py プロジェクト: jflesch/paperwork
 def __init__(self, multiscan_win):
     SimpleAction.__init__(self, "Cancel multi-scan")
     self.__multiscan_win = multiscan_win
コード例 #36
0
ファイル: __init__.py プロジェクト: awesome-archive/paperwork
 def __init__(self, multiscan_dialog):
     SimpleAction.__init__(self, "Doc selected in multi-scan list")
     self.__dialog = multiscan_dialog
コード例 #37
0
ファイル: __init__.py プロジェクト: jflesch/paperwork
 def do(self):
     SimpleAction.do(self)
     self.__multiscan_win.dialog.destroy()
コード例 #38
0
ファイル: __init__.py プロジェクト: awesome-archive/paperwork
 def __init__(self, multiscan_dialog):
     SimpleAction.__init__(self, "Add doc to the multi-scan list")
     self.__dialog = multiscan_dialog
コード例 #39
0
ファイル: __init__.py プロジェクト: jflesch/paperwork
 def __init__(self, multiscan_dialog):
     SimpleAction.__init__(self, "Doc selected in multi-scan list")
     self.__dialog = multiscan_dialog
コード例 #40
0
 def do(self):
     SimpleAction.do(self)
     self.__settings_win.set_ocr_opts_state()
コード例 #41
0
 def __init__(self, main_window, config, doclist):
     SimpleAction.__init__(self, "Open selected document")
     self.__main_win = main_window
     self.__config = config
     self.__doclist = doclist