diff -up ./examples/hocr-gtk/sane-pygtk.orig ./examples/hocr-gtk/sane-pygtk --- ./examples/hocr-gtk/sane-pygtk.orig 2010-06-07 01:21:33.000000000 +0300 +++ ./examples/hocr-gtk/sane-pygtk 2010-06-07 01:23:06.000000000 +0300 @@ -39,14 +39,14 @@ comments = "SANE (Scanner Access Now Eas # set gettext support locale_dir = '/usr/share/locale' -try: - import locale - import gettext - locale.setlocale(locale.LC_ALL, "") - gtk.glade.bindtextdomain(app_name, locale_dir) - gettext.install(app_name, locale_dir, unicode=1) +try: + import locale + import gettext + locale.setlocale(locale.LC_ALL, "") + gtk.glade.bindtextdomain(app_name, locale_dir) + gettext.install(app_name, locale_dir, unicode=1) except (IOError,locale.Error), e: - print "WARNING: Can't load locale" + print "WARNING: Can't load locale" _ = lambda x : x # set global functions @@ -152,7 +152,6 @@ class MainWindow: # get scanners in system self.sane_devices = sane.get_devices() - self.sane_devices_counter = len(self.sane_devices) # set the scanners combobox for device in self.sane_devices: @@ -205,13 +204,22 @@ class MainWindow: dialog.destroy() - def button_preview_clicked_cb(self, obj): - "button_preview_clicked_cb activated" - + def open_scanner(self): + if len(self.sane_devices) <= 0: + show_error_message(_("No scanners reported by sane")) + raise RuntimeError("No scanners reported by sane\nRecheck your sane configuration") # open scanner scanner_number = self.config.getint('settings', 'scanner') - 1 + if scanner_number < 0 or scanner_number >= len(self.sane_devices): + show_error_message(_("Bad scanner number %d configured.\nPlease select a valid scanner from the list") % scanner_number) + raise RuntimeError("Invalid scanner %d" % scanner_number) scanner = sane.open(self.sane_devices[scanner_number][0]) - + return scanner + + def button_preview_clicked_cb(self, obj): + "button_preview_clicked_cb activated" + # open scanner + scanner = self.open_scanner() # options options = get_scanner_option (scanner, 'mode') if options: @@ -278,9 +286,7 @@ class MainWindow: def button_scan_clicked_cb(self, obj): "button_scan_clicked_cb activated" # open scanner - scanner_number = self.config.getint('settings', 'scanner') - 1 - scanner = sane.open(self.sane_devices[scanner_number][0]) - + scanner = self.open_scanner() # options options = get_scanner_option (scanner, 'mode') if options: @@ -529,7 +535,7 @@ class MainWindow: # reset settings options if scanner_number < len(self.sane_devices): try: - scanner = sane.open(self.sane_devices[scanner_number][0]) + scanner = self.open_scanner() # if scanner exist fill in all the settings