[ocrfeeder] studioBuilder: adding import from scanner capability parallellized using asyncworker



commit fd6a30bdf23121f09113b3c608f1c4212c6d41d8
Author: David Teyssiere Rubio <dteyssiere emergya es>
Date:   Thu Jul 29 21:14:59 2010 +0200

    studioBuilder: adding import from scanner capability parallellized using asyncworker

 studio/studioBuilder.py |   53 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)
---
diff --git a/studio/studioBuilder.py b/studio/studioBuilder.py
index 7082f50..dd34eaa 100644
--- a/studio/studioBuilder.py
+++ b/studio/studioBuilder.py
@@ -93,6 +93,7 @@ class Studio:
                                  'ocr_engines': self.ocrEngines, 'zoom_in': self.zoomIn, 'zoom_out': self.zoomOut,
                                  'zoom_fit': self.zoomFit, 'reset_zoom': self.resetZoom,
                                  'recognize_areas': self.source_images_controler.recognizeSelectedAreas,
+                                 'import_from_scanner': self.importFromScanner,
                                  'select_next_area': self.source_images_controler.selectNextArea,
                                  'select_previous_area': self.source_images_controler.selectPreviousArea,
                                  'select_all_areas': self.source_images_controler.selectAllAreas,
@@ -170,6 +171,58 @@ class Studio:
                 self.__addImagesToReviewer([file_name])
         file_open_dialog.destroy()
 
+    def importFromScanner(self, widget):
+        dialog = widgetPresenter.QueuedEventsProgressDialog(\
+                                                        self.main_window.window)
+        item_obtain = AsyncItem(lib.obtainScanners,(),
+                                self.__obtainScannersFinishedCb,(dialog,))
+        info_obtain = (_('Obtaining Scanners'), _('Please wait...'))
+        dialog.setItemsList([(info_obtain, item_obtain)])
+        dialog.run()
+
+    def __obtainScannersFinishedCb(self, dialog, devices, error):
+        dialog.destroy()
+        device = []
+        if devices:
+            scanner_chooser_dialog = widgetPresenter.ScannerChooserDialog(\
+                                                    self.main_window.window,
+                                                    (device),
+                                                    devices)
+            gtk.gdk.threads_enter()
+            scanner_chooser_dialog.run()
+            gtk.gdk.threads_leave()
+            if device:
+                dialog_scan = widgetPresenter.QueuedEventsProgressDialog(\
+                    self.main_window.window)
+                item_scan = AsyncItem(lib.scan,((device.pop(),)),
+                                      self.__scanFinishedCb,(dialog_scan,))
+                info_scan = (_('Scanning'), _('Please wait...'))
+                dialog_scan.setItemsList([(info_scan, item_scan)])
+                dialog_scan.run()
+        else:
+            error = widgetPresenter.SimpleDialog(\
+                                             _("No scanner devices were found"),
+                                             _("Error"),
+                                             _("Check your sane config"))
+            gtk.gdk.threads_enter()
+            error.run()
+            gtk.gdk.threads_leave()
+
+    def __scanFinishedCb(self, dialog, image_path, error):
+        dialog.destroy()
+        if image_path:
+            gtk.gdk.threads_enter()
+            self.__addImagesToReviewer([image_path])
+            gtk.gdk.threads_leave()
+        else:
+            error = widgetPresenter.SimpleDialog(\
+                                             _("Error during scanning"),
+                                             _("Error"),
+                                             _("Check your sane config"))
+            gtk.gdk.threads_enter()
+            error.run()
+            gtk.gdk.threads_leave()
+
     def importPdf(self, widget):
         file_open_dialog = widgetPresenter.FileDialog('open', file_filters = [(_('PDF'), ['application/pdf'], [])])
         response = file_open_dialog.run()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]