[Pycodeocr-main] SF.net SVN: pycodeocr:[39] branches/laserb
Status: Beta
Brought to you by:
drtrigon
|
From: <la...@us...> - 2011-03-01 16:55:33
|
Revision: 39
http://pycodeocr.svn.sourceforge.net/pycodeocr/?rev=39&view=rev
Author: laserb
Date: 2011-03-01 16:55:25 +0000 (Tue, 01 Mar 2011)
Log Message:
-----------
make it runable
Modified Paths:
--------------
branches/laserb/PyCodeOCR.glade
branches/laserb/PyCodeOCR.py
Added Paths:
-----------
branches/laserb/Modules/
Modified: branches/laserb/PyCodeOCR.glade
===================================================================
--- branches/laserb/PyCodeOCR.glade 2011-02-11 11:33:53 UTC (rev 38)
+++ branches/laserb/PyCodeOCR.glade 2011-03-01 16:55:25 UTC (rev 39)
@@ -2,13 +2,13 @@
<glade-interface>
<!-- interface-requires gtk+ 2.16 -->
<!-- interface-naming-policy toplevel-contextual -->
- <widget class="GtkWindow" id="window1">
+ <widget class="GtkWindow" id="main_window">
<property name="width_request">786</property>
<property name="height_request">242</property>
<signal name="motion_notify_event" handler="on_pointer_motion"/>
- <signal name="destroy" handler="on_window1_destroy"/>
+ <signal name="destroy" handler="on_main_window_destroy"/>
<child>
- <widget class="GtkNotebook" id="notebook1">
+ <widget class="GtkNotebook" id="notebook">
<property name="width_request">786</property>
<property name="height_request">242</property>
<property name="visible">True</property>
@@ -27,7 +27,7 @@
<property name="height_request">32</property>
<property name="visible">True</property>
<child>
- <widget class="GtkComboBox" id="combobox2">
+ <widget class="GtkComboBox" id="mode_combobox">
<property name="width_request">200</property>
<property name="height_request">29</property>
<property name="visible">True</property>
@@ -36,7 +36,7 @@
DataMatrix optical recogn. (beta)
PDF417 bc. optical recogn. (beta)
</property>
- <signal name="changed" handler="on_combobox2_changed"/>
+ <signal name="changed" handler="on_mode_changed"/>
</widget>
<packing>
<property name="expand">False</property>
@@ -52,7 +52,7 @@
<property name="visible">True</property>
<property name="spacing">11</property>
<child>
- <widget class="GtkRadioButton" id="radiobutton1">
+ <widget class="GtkRadioButton" id="file_input_button">
<property name="width_request">21</property>
<property name="height_request">21</property>
<property name="visible">True</property>
@@ -60,8 +60,8 @@
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- <property name="group">radiobutton2</property>
- <signal name="toggled" handler="on_combobox2_changed"/>
+ <property name="group">sane_input_button</property>
+ <signal name="toggled" handler="on_file_input_button_toggled"/>
</widget>
<packing>
<property name="expand">False</property>
@@ -71,12 +71,12 @@
</packing>
</child>
<child>
- <widget class="GtkFileChooserButton" id="filechooserbutton1">
+ <widget class="GtkFileChooserButton" id="filechooserbutton">
<property name="width_request">168</property>
<property name="height_request">29</property>
<property name="visible">True</property>
<property name="do_overwrite_confirmation">True</property>
- <signal name="file_set" handler="on_filechooserbutton1_file_set"/>
+ <signal name="file_set" handler="on_filechooserbutton_file_set"/>
</widget>
<packing>
<property name="expand">False</property>
@@ -103,7 +103,7 @@
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label9">
+ <widget class="GtkLabel" id="scanned_code_label">
<property name="width_request">102</property>
<property name="height_request">17</property>
<property name="visible">True</property>
@@ -117,11 +117,11 @@
</packing>
</child>
<child>
- <widget class="GtkEventBox" id="eventbox2">
+ <widget class="GtkEventBox" id="main_image_eventbox">
<property name="visible">True</property>
- <signal name="button_press_event" handler="on_eventbox2_button_press_event"/>
+ <signal name="button_press_event" handler="on_main_image_eventbox_button_press_event"/>
<child>
- <widget class="GtkImage" id="image1">
+ <widget class="GtkImage" id="main_image">
<property name="visible">True</property>
</widget>
</child>
@@ -132,7 +132,7 @@
</packing>
</child>
<child>
- <widget class="GtkEntry" id="entry1">
+ <widget class="GtkEntry" id="output">
<property name="width_request">504</property>
<property name="height_request">27</property>
<property name="visible">True</property>
@@ -148,7 +148,7 @@
</packing>
</child>
<child>
- <widget class="GtkProgressBar" id="progressbar1">
+ <widget class="GtkProgressBar" id="progressbar">
<property name="width_request">504</property>
<property name="height_request">20</property>
<property name="visible">True</property>
@@ -174,7 +174,7 @@
<property name="height_request">30</property>
<property name="visible">True</property>
<child>
- <widget class="GtkRadioButton" id="radiobutton2">
+ <widget class="GtkRadioButton" id="sane_input_button">
<property name="label" translatable="yes">Standard SANE Interface</property>
<property name="width_request">224</property>
<property name="height_request">21</property>
@@ -184,7 +184,7 @@
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_combobox2_changed"/>
+ <signal name="toggled" handler="on_sane_input_button_toggled"/>
</widget>
<packing>
<property name="expand">False</property>
@@ -194,13 +194,13 @@
</packing>
</child>
<child>
- <widget class="GtkButton" id="button1">
+ <widget class="GtkButton" id="retry_button">
<property name="label" translatable="yes">Retry</property>
<property name="width_request">60</property>
<property name="height_request">29</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <signal name="clicked" handler="on_button1_clicked"/>
+ <signal name="clicked" handler="on_retry_button_clicked"/>
</widget>
<packing>
<property name="expand">False</property>
@@ -218,7 +218,7 @@
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame1">
+ <widget class="GtkFrame" id="placement_frame">
<property name="visible">True</property>
<property name="label_xalign">0</property>
<child>
@@ -229,7 +229,7 @@
<widget class="GtkFixed" id="fixed2">
<property name="visible">True</property>
<child>
- <widget class="GtkLabel" id="label2">
+ <widget class="GtkLabel" id="position_label">
<property name="width_request">72</property>
<property name="height_request">17</property>
<property name="visible">True</property>
@@ -240,7 +240,7 @@
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinbutton1">
+ <widget class="GtkSpinButton" id="position_x">
<property name="width_request">56</property>
<property name="height_request">27</property>
<property name="visible">True</property>
@@ -248,14 +248,14 @@
<property name="adjustment">1 0 200 1 10 0</property>
<property name="climb_rate">1</property>
<property name="numeric">True</property>
- <signal name="value_changed" handler="on_spinbutton_value_changed"/>
+ <signal name="value_changed" handler="on_placement_value_changed"/>
</widget>
<packing>
<property name="x">80</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinbutton2">
+ <widget class="GtkSpinButton" id="position_y">
<property name="width_request">56</property>
<property name="height_request">27</property>
<property name="visible">True</property>
@@ -263,14 +263,14 @@
<property name="adjustment">1 0 200 1 10 0</property>
<property name="climb_rate">1</property>
<property name="numeric">True</property>
- <signal name="value_changed" handler="on_spinbutton_value_changed"/>
+ <signal name="value_changed" handler="on_placement_value_changed"/>
</widget>
<packing>
<property name="x">144</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinbutton3">
+ <widget class="GtkSpinButton" id="size_x">
<property name="width_request">56</property>
<property name="height_request">27</property>
<property name="visible">True</property>
@@ -278,7 +278,7 @@
<property name="adjustment">1 0 200 1 10 0</property>
<property name="climb_rate">1</property>
<property name="numeric">True</property>
- <signal name="value_changed" handler="on_spinbutton_value_changed"/>
+ <signal name="value_changed" handler="on_placement_value_changed"/>
</widget>
<packing>
<property name="x">80</property>
@@ -286,7 +286,7 @@
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinbutton4">
+ <widget class="GtkSpinButton" id="size_y">
<property name="width_request">56</property>
<property name="height_request">27</property>
<property name="visible">True</property>
@@ -294,7 +294,7 @@
<property name="adjustment">1 0 200 1 10 0</property>
<property name="climb_rate">1</property>
<property name="numeric">True</property>
- <signal name="value_changed" handler="on_spinbutton_value_changed"/>
+ <signal name="value_changed" handler="on_placement_value_changed"/>
</widget>
<packing>
<property name="x">144</property>
@@ -302,7 +302,7 @@
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label3">
+ <widget class="GtkLabel" id="size_label">
<property name="width_request">72</property>
<property name="height_request">17</property>
<property name="visible">True</property>
@@ -317,7 +317,7 @@
</widget>
</child>
<child>
- <widget class="GtkLabel" id="label1">
+ <widget class="GtkLabel" id="placement_label">
<property name="visible">True</property>
<property name="label" translatable="yes">Placement</property>
<property name="use_markup">True</property>
@@ -340,7 +340,7 @@
<property name="height_request">30</property>
<property name="visible">True</property>
<child>
- <widget class="GtkLabel" id="label5">
+ <widget class="GtkLabel" id="orientation_label">
<property name="width_request">92</property>
<property name="height_request">21</property>
<property name="visible">True</property>
@@ -354,7 +354,7 @@
</packing>
</child>
<child>
- <widget class="GtkComboBox" id="combobox1">
+ <widget class="GtkComboBox" id="orientation">
<property name="width_request">90</property>
<property name="height_request">29</property>
<property name="visible">True</property>
@@ -362,7 +362,7 @@
90 deg
180 deg
270 deg</property>
- <signal name="changed" handler="on_combobox1_changed"/>
+ <signal name="changed" handler="on_orientation_changed"/>
</widget>
<packing>
<property name="expand">False</property>
@@ -392,7 +392,7 @@
<property name="height_request">31</property>
<property name="visible">True</property>
<child>
- <widget class="GtkToggleButton" id="togglebutton1">
+ <widget class="GtkToggleButton" id="scan_button">
<property name="label" translatable="yes">scan</property>
<property name="width_request">90</property>
<property name="height_request">29</property>
@@ -400,7 +400,7 @@
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
- <signal name="toggled" handler="on_togglebutton1_toggled"/>
+ <signal name="toggled" handler="on_scan_button_clicked"/>
</widget>
<packing>
<property name="fill">False</property>
@@ -408,7 +408,7 @@
</packing>
</child>
<child>
- <widget class="GtkButton" id="button2">
+ <widget class="GtkButton" id="exit_button">
<property name="label" translatable="yes">exit</property>
<property name="width_request">90</property>
<property name="height_request">19</property>
@@ -416,7 +416,7 @@
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
- <signal name="clicked" handler="on_button2_clicked"/>
+ <signal name="clicked" handler="on_exit_button_clicked"/>
</widget>
<packing>
<property name="fill">False</property>
@@ -441,7 +441,7 @@
</widget>
</child>
<child>
- <widget class="GtkLabel" id="label4">
+ <widget class="GtkLabel" id="scan_label">
<property name="visible">True</property>
<property name="label" translatable="yes">SCAN</property>
</widget>
@@ -458,14 +458,14 @@
<property name="visible">True</property>
<property name="resize_mode">immediate</property>
<child>
- <widget class="GtkScrolledWindow" id="scrolledwindow3">
+ <widget class="GtkScrolledWindow" id="device_info_scrolled">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<property name="window_placement_set">True</property>
<child>
- <widget class="GtkTextView" id="textview3">
+ <widget class="GtkTextView" id="device_info_text">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">False</property>
@@ -483,7 +483,7 @@
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label6">
+ <widget class="GtkLabel" id="device_info_label">
<property name="visible">True</property>
<property name="label" translatable="yes">Device Info</property>
</widget>
@@ -504,7 +504,7 @@
<property name="height_request">80</property>
<property name="visible">True</property>
<child>
- <widget class="GtkScrolledWindow" id="scrolledwindow2">
+ <widget class="GtkScrolledWindow" id="device_list_scrolled">
<property name="width_request">740</property>
<property name="height_request">140</property>
<property name="visible">True</property>
@@ -512,7 +512,7 @@
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
- <widget class="GtkTreeView" id="treeview1">
+ <widget class="GtkTreeView" id="device_treeview">
<property name="width_request">740</property>
<property name="height_request">140</property>
<property name="visible">True</property>
@@ -526,14 +526,14 @@
</packing>
</child>
<child>
- <widget class="GtkButton" id="button3">
+ <widget class="GtkButton" id="device_chooser_button">
<property name="label" translatable="yes">OK</property>
<property name="width_request">90</property>
<property name="height_request">29</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <signal name="clicked" handler="on_button3_clicked"/>
+ <signal name="clicked" handler="on_device_chooser_button_clicked"/>
</widget>
<packing>
<property name="expand">False</property>
@@ -559,7 +559,7 @@
</packing>
</child>
<child>
- <widget class="GtkButton" id="button5">
+ <widget class="GtkButton" id="blacklist_add_button">
<property name="label" translatable="yes">--></property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -573,7 +573,7 @@
</packing>
</child>
<child>
- <widget class="GtkButton" id="button4">
+ <widget class="GtkButton" id="blacklist_remove_button">
<property name="label" translatable="yes"><--</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -608,7 +608,7 @@
<property name="height_request">80</property>
<property name="visible">True</property>
<child>
- <widget class="GtkScrolledWindow" id="scrolledwindow4">
+ <widget class="GtkScrolledWindow" id="blacklist_scrolled">
<property name="width_request">740</property>
<property name="height_request">140</property>
<property name="visible">True</property>
@@ -616,7 +616,7 @@
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
- <widget class="GtkTreeView" id="treeview2">
+ <widget class="GtkTreeView" id="blacklist_treeview">
<property name="width_request">740</property>
<property name="height_request">140</property>
<property name="visible">True</property>
@@ -640,7 +640,7 @@
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label7">
+ <widget class="GtkLabel" id="blacklist_label">
<property name="visible">True</property>
<property name="label" translatable="yes">Blacklist</property>
</widget>
@@ -655,14 +655,14 @@
<property name="visible">True</property>
<property name="resize_mode">immediate</property>
<child>
- <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <widget class="GtkScrolledWindow" id="log_scrolled">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<property name="window_placement_set">True</property>
<child>
- <widget class="GtkTextView" id="textview1">
+ <widget class="GtkTextView" id="log_text">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">False</property>
@@ -680,7 +680,7 @@
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label10">
+ <widget class="GtkLabel" id="log_label">
<property name="visible">True</property>
<property name="label" translatable="yes">Log</property>
</widget>
@@ -693,7 +693,7 @@
</widget>
</child>
</widget>
- <widget class="GtkWindow" id="window3">
+ <widget class="GtkWindow" id="img_popup">
<property name="type">popup</property>
<property name="window_position">mouse</property>
<property name="destroy_with_parent">True</property>
@@ -702,13 +702,13 @@
<widget class="GtkVBox" id="vbox1">
<property name="visible">True</property>
<child>
- <widget class="GtkEventBox" id="eventbox1">
+ <widget class="GtkEventBox" id="popup_image_eventbox">
<property name="visible">True</property>
<property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON3_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_FOCUS_CHANGE_MASK | GDK_STRUCTURE_MASK | GDK_PROPERTY_CHANGE_MASK | GDK_VISIBILITY_NOTIFY_MASK | GDK_PROXIMITY_IN_MASK | GDK_PROXIMITY_OUT_MASK | GDK_SUBSTRUCTURE_MASK | GDK_SCROLL_MASK</property>
<property name="extension_events">all</property>
<property name="visible_window">False</property>
<child>
- <widget class="GtkImage" id="image2">
+ <widget class="GtkImage" id="popup_image">
<property name="visible">True</property>
</widget>
</child>
Modified: branches/laserb/PyCodeOCR.py
===================================================================
--- branches/laserb/PyCodeOCR.py 2011-02-11 11:33:53 UTC (rev 38)
+++ branches/laserb/PyCodeOCR.py 2011-03-01 16:55:25 UTC (rev 39)
@@ -7,7 +7,7 @@
# for many unix (and also windows) platforms.
# python standard modules
-import os, re, sys, subprocess, time, gobject, string, struct
+import os, re, sys, time, gobject, string, struct
# GTK, PyGTK, GLADE (GNOME) modules
@@ -16,7 +16,13 @@
import gtk, gtk.glade
import gobject
-from checksum import modulo10
+# import Modules
+from Modules.checksum import modulo10
+#from Modules.blacklist_manager import blacklist_manager
+#from Modules.RunSane import RunSANE
+from Modules.RunExternal import RunExternal
+#from Modules.RunMagickWand import RunMagickWand
+#from Modules.RunLibdmtx import RunLibdmtx
# PIL image library and it's SANE bindings
import Image, ImageDraw
@@ -112,175 +118,214 @@
## Initialize
def __init__(self):
# retrieve widgets
- # window1 - main window
+ # main_window - main window
## gladefile raw_path.glade
self.gladefile = raw_path + ".glade"
## get xml from gladefile
self.xml = gtk.glade.XML(self.gladefile)
## main window
- self.window1 = self.xml.get_widget('window1')
+ self.main_window = self.xml.get_widget('main_window')
## notebok
- self.notebook = self.xml.get_widget('notebook1')
+ self.notebook = self.xml.get_widget('notebook')
## image window
- self.window3 = self.xml.get_widget('window3')
+ self.img_popup = self.xml.get_widget('img_popup')
## scan button
- self.togglebutton1 = self.xml.get_widget('togglebutton1')
+ self.scan_button = self.xml.get_widget('scan_button')
## restart button
- self.button1 = self.xml.get_widget('button1')
+ self.retry_button = self.xml.get_widget('retry_button')
## exit button
- self.button2 = self.xml.get_widget('button2')
+ self.exit_button = self.xml.get_widget('exit_button')
## placement frame
- self.frame1 = self.xml.get_widget('frame1')
+ self.placement_frame = self.xml.get_widget('placement_frame')
## image
- self.image1 = self.xml.get_widget('image1')
+ self.main_image = self.xml.get_widget('main_image')
## image
- self.image2 = self.xml.get_widget('image2')
+ self.popup_image = self.xml.get_widget('popup_image')
## output line
- self.entry1 = self.xml.get_widget('entry1')
- self.textview1 = self.xml.get_widget('textview1')
- self.textbuffer = self.textview1.get_buffer()
- self.entry3 = self.xml.get_widget('textview3')
+ self.output = self.xml.get_widget('output')
+ self.log_text = self.xml.get_widget('log_text')
+ self.textbuffer = self.log_text.get_buffer()
+ self.entry3 = self.xml.get_widget('device_info_text')
## progressbar
- self.progressbar1 = self.xml.get_widget('progressbar1')
+ self.progressbar = self.xml.get_widget('progressbar')
## Orientation label
- self.label5 = self.xml.get_widget('label5')
+ self.placement_label = self.xml.get_widget('placement_label')
## Orientation combobox
- self.combobox1 = self.xml.get_widget('combobox1')
+ self.orientation = self.xml.get_widget('orientation')
## mode combobox
- self.combobox2 = self.xml.get_widget('combobox2')
+ self.mode_combobox = self.xml.get_widget('mode_combobox')
## x-position
- self.spinbutton1 = self.xml.get_widget('spinbutton1')
+ self.position_x = self.xml.get_widget('position_x')
## y-position
- self.spinbutton2 = self.xml.get_widget('spinbutton2')
+ self.position_y = self.xml.get_widget('position_y')
## x-size
- self.spinbutton3 = self.xml.get_widget('spinbutton3')
+ self.size_x = self.xml.get_widget('size_x')
## y-size
- self.spinbutton4 = self.xml.get_widget('spinbutton4')
+ self.size_y = self.xml.get_widget('size_y')
## file input
- self.radiobutton1 = self.xml.get_widget('radiobutton1')
+ self.file_input_button = self.xml.get_widget('file_input_button')
## sane input
- self.radiobutton2 = self.xml.get_widget('radiobutton2')
+ self.sane_input_button = self.xml.get_widget('sane_input_button')
## choose file
- self.filechooserbutton1 = self.xml.get_widget('filechooserbutton1')
+ self.filechooserbutton = self.xml.get_widget('filechooserbutton')
## device list
- self.treeview1 = self.xml.get_widget('treeview1')
+ self.device_treeview = self.xml.get_widget('device_treeview')
## blacklisted device list
- self.treeview2 = self.xml.get_widget('treeview2')
+ self.blacklist_treeview = self.xml.get_widget('blacklist_treeview')
## OK button
- self.button3 = self.xml.get_widget('button3')
+ self.device_chooser_button = self.xml.get_widget('device_chooser_button')
## event box for image
- self.eventbox2 = self.xml.get_widget('eventbox2')
+ self.main_image_eventbox = self.xml.get_widget('main_image_eventbox')
## event box for image window
- self.eventbox1 = self.xml.get_widget('eventbox1')
-
- # redirect print
- self.logging = logging(self.textbuffer)
- #sys.stdout = self.logging
- #sys.stderr = self.logging
-
- print "---------",strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()),"----------"
+ self.popup_image_eventbox = self.xml.get_widget('popup_image_eventbox')
# initiate orientation and position
- self.combobox1.set_active(0)
- self.spinbutton1.set_value(self.scan_koords[0])
- self.spinbutton2.set_value(self.scan_koords[1])
- self.spinbutton3.set_value(self.scan_koords[2])
- self.spinbutton4.set_value(self.scan_koords[3])
- self.combobox2.set_active(0)
+ self.orientation.set_active(0)
+ self.position_x.set_value(self.scan_koords[0])
+ self.position_y.set_value(self.scan_koords[1])
+ self.size_x.set_value(self.scan_koords[2])
+ self.size_y.set_value(self.scan_koords[3])
+ self.mode_combobox.set_active(0)
if "gocr" not in pakages:
- self.combobox2.remove_text(1)
- self.combobox2.insert_text(1, "< not installed >")
+ self.mode_combobox.remove_text(1)
+ self.mode_combobox.insert_text(1, "< not installed >")
if "libdmtx" not in pakages:
- self.combobox2.remove_text(2)
- self.combobox2.insert_text(2, "< not installed >")
+ self.mode_combobox.remove_text(2)
+ self.mode_combobox.insert_text(2, "< not installed >")
if "pdf417decode" not in pakages:
- self.combobox2.remove_text(3)
- self.combobox2.insert_text(3, "< not installed >")
- #self.on_radiobutton1_toggled()
+ self.mode_combobox.remove_text(3)
+ self.mode_combobox.insert_text(3, "< not installed >")
# connect signal handlers
self.xml.signal_autoconnect( self )
# connect eventbox to close image window
-# self.eventbox1.connect('button_press_event', self.on_eventbox2_button_press_event)
-# self.window1.connect('motion_notify_event', self.on_pointer_motion)
-# self.window3.connect('leave-notify-event', self.on_leave_window)
(self.new_width, self.new_height ) = (0,0)
# set tooltips
- self.button1.set_tooltip_text("Restart PyCodeOCR to search for a SANE device.")
- self.button1.set_visible(True)
- self.image1.set_tooltip_text("Click for bigger image")
- self.image2.set_tooltip_text("Leave window to close")
+ self.retry_button.set_tooltip_text("Restart PyCodeOCR to search for a SANE device.")
+ self.retry_button.set_visible(True)
+ self.main_image.set_tooltip_text("Click for bigger image")
+ self.popup_image.set_tooltip_text("Leave window to close")
- # take some time to init sane
- #self.init_sane()
+ # redirect print
+ self.logging = logging(self.textbuffer)
+ #sys.stdout = self.logging
+ #sys.stderr = self.logging
+
+
+ # initialize treeviews in Blacklist Manager
+ BlacklistMgr.post_init(self.device_treeview, self.blacklist_treeview, local_path)
+
+ print "---------",strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()),"----------"
+
+
# init sane when idle, hopefully this is right after GUI is loaded
gobject.idle_add(self.init_sane)
# display window
- self.window1.show()
+ self.main_window.show()
return
+ ## Run gtk mainloop and with it THIS APP.
+ def run(self):
+ gtk.main()
+
+
+
## initialize sane
+ #
def init_sane(self, source=None):
# lock window
- self.window1.set_sensitive(False)
+ self.main_window.set_sensitive(False)
# init sane
- self.run_sane = RunSANE(self)
+ self.run_sane = RunSANE()
- # try to set sensitivity, fails if no scanner is initialized yet
- try:
- self.init_sensitivity()
- except:
+ # select device if more than one is found
+ if self.run_sane.found_scanner == None:
# set default row to first
- self.treeview1.set_cursor(0)
+ self.device_treeview.set_cursor(0)
# show tab with device list
# choose device and press ok to initialize scanner
-# self.window2.show()
self.notebook.set_current_page(2)
+ # unlock window
+ self.main_window.set_sensitive(True)
+ else:
+ # unlock window
+ self.main_window.set_sensitive(True)
+ # set sensitivity
+ self.init_sensitivity()
+ # return false, otherwise gobject runs it again
return False
+
+ def on_device_chooser_button_clicked(self, source=None):
+ self.device_chooser_button.set_visible(False)
+ # get selection from treeview
+ devnr = self.device_treeview.get_cursor()[0][0]
+ # init scanner
+ self.run_sane.init_scanner(devnr)
+ # set sensitivity
+ self.init_sensitivity()
+ ## set sensitivity of buttons the first time
+ def init_sensitivity(self):
+ # set sensitivity
+ if self.run_sane.found_scanner:
+ self.sane_input_button.set_active(True)
+ self.sane_input_button.set_sensitive(True)
+ else:
+ self.file_input_button.set_active(True)
+ self.sane_input_button.set_sensitive(False)
+
+ # Try to set orientation and placement sensitive
+ self.toggle_orientation_sensitive(True)
+ self.toggle_placement_sensitive(True)
+
+ ## toggle orientation sensitivity
+ def toggle_orientation_sensitive(self, value):
+ self.placement_label.set_sensitive(value)
+ self.orientation.set_sensitive(value)
- ## Run gtk mainloop and with it THIS APP.
- def run(self):
- gtk.main()
+ ## toggle placement sensitivity
+ def toggle_placement_sensitive(self, value):
+ if self.sane_input_button.get_active():
+ self.placement_frame.set_sensitive(value)
+ else:
+ self.placement_frame.set_sensitive(False)
+
+
+
## signals / glade callbacks
#
- def on_leave_window(self, source=None, event=None):
- if self.window3.get_visible():
- self.on_eventbox2_button_press_event()
- self.notebook.set_current_page(3)
-
def on_pointer_motion(self, source=None, event=None):
pass
-# (x,y,state) = self.window1.window.get_pointer()
-# (wxim, wyim ) = self.image1.get_size_request()
+# (x,y,state) = self.main_window.window.get_pointer()
+# (wxim, wyim ) = self.main_image.get_size_request()
# if x > 16+(wxim-self.new_width)/2 and x < 16+(wxim+self.new_width)/2 and y > 75+(wyim-self.new_height)/2 and y < 75+(wyim+self.new_height)/2:
-# if not self.window3.get_visible():
-# self.on_eventbox2_button_press_event()
+# if not self.img_popup.get_visible():
+# self.on_main_image_eventbox_button_press_event()
- def on_eventbox2_button_press_event(self, source=None, event=None):
- if self.window3.get_visible():
+ def on_main_image_eventbox_button_press_event(self, source=None, event=None):
+ if self.img_popup.get_visible():
# clean-up
os.remove( self.image_file_big )
# hide window
- self.window3.hide()
+ self.img_popup.hide()
else:
# load original image
im1 = Image.open(self.imageFile)
# adjust width and height to your needs and keep ratio
(im_width, im_height) = im1.size #get image size
# get size of shown image
- width = self.image1.allocation.width
- height = self.image1.allocation.height
+ width = self.main_image.allocation.width
+ height = self.main_image.allocation.height
# make it bigger in window
# size should be at least 600
@@ -302,80 +347,39 @@
self.image_file_big = self.temp+"06.jpg"
im.save( self.image_file_big )
# set image
- self.image2.set_from_file( self.image_file_big )
+ self.popup_image.set_from_file( self.image_file_big )
# show window
- self.window3.show()
-
- def on_button3_clicked(self, source=None):
- self.button3.set_visible(False)
- # get selection from treeview
- devnr = self.treeview1.get_cursor()[0][0]
- # hide window
-# self.window2.hide()
- # init scanner
- self.run_sane.init_scanner(devnr)
- # set sensitivity
- self.init_sensitivity()
+ self.img_popup.show()
+
## add device to blacklist
def blacklist_add(self, widget=None):
- treeselection = self.treeview1.get_selection()
- model, iter =treeselection.get_selected()
- data = model.get_value(iter, 0)
- self.run_sane.blacklist_store.append([data])
- self.run_sane.list_store.remove(iter)
- self.run_sane.write_blacklist()
-
+ BlacklistMgr.blacklist_add()
+
## remove device from blacklist
def blacklist_remove(self, widget=None):
- treeselection = self.treeview2.get_selection()
- model, iter =treeselection.get_selected()
- data = model.get_value(iter, 0)
- self.run_sane.list_store.append([data])
- self.run_sane.blacklist_store.remove(iter)
- self.run_sane.write_blacklist()
+ BlacklistMgr.blacklist_remove()
- ## set sensitivity of buttons the first time
- def init_sensitivity(self):
- # set sensitivity
- if len(self.run_sane.devices) == 0:
- if self.run_sane.found_scanner:
- self.radiobutton2.set_active(True)
- self.radiobutton2.set_sensitive(True)
- else:
- self.radiobutton1.set_active(True)
- self.radiobutton2.set_sensitive(False)
- #self.on_radiobutton1_toggled()
- self.progress(0.,"No SANE device found. Use file input instead.")
- self.button1.set_visible(True)
-
- # unlock window
- self.window1.set_sensitive(True)
-
- # Try to set orientation and placement sensitive. Will fail if no device is found
- self.toggle_orientation_sensitive(True)
- self.toggle_placement_sensitive(True)
-
## one of the placement coordinates changed
- def on_spinbutton_value_changed(self, source=None, event=None):
- self.scan_koords = (self.spinbutton1.get_value(),self.spinbutton2.get_value(),
- self.spinbutton3.get_value(),self.spinbutton4.get_value())
+ def on_placement_value_changed(self, source=None, event=None):
+ self.scan_koords = (self.position_x.get_value(),self.position_y.get_value(),
+ self.size_x.get_value(),self.size_y.get_value())
## Orientation changed
- def on_combobox1_changed(self, source=None, event=None):
- orient = self.combobox1.get_model()[self.combobox1.get_active()][0]
+ def on_orientation_changed(self, source=None, event=None):
+ orient = self.orientation.get_model()[self.orientation.get_active()][0]
- self.spinbutton1.set_value(std_scan_koords[orient][0][0])
- self.spinbutton2.set_value(std_scan_koords[orient][0][1])
- self.spinbutton3.set_value(std_scan_koords[orient][0][2])
- self.spinbutton4.set_value(std_scan_koords[orient][0][3])
+ self.position_x.set_value(std_scan_koords[orient][0][0])
+ self.position_y.set_value(std_scan_koords[orient][0][1])
+ self.size_x.set_value(std_scan_koords[orient][0][2])
+ self.size_y.set_value(std_scan_koords[orient][0][3])
self.mode = std_scan_koords[orient][1]
## mode changed
- def on_combobox2_changed(self, source=None):
- op_mode = self.combobox2.get_active()
+ def on_mode_changed(self, source=None):
+ op_mode = self.mode_combobox.get_active()
if (op_mode == self.MDE['invoices']):
self.toggle_placement_sensitive(True)
self.toggle_orientation_sensitive(True)
@@ -390,12 +394,12 @@
self.toggle_orientation_sensitive(True)
## ToggleButton: 'scan'/'stop'.
- def on_togglebutton1_toggled(self, source=None, event=None, *a):
- if self.togglebutton1.get_active(): # scan !
- self.togglebutton1.set_label("stop")
+ def on_scan_button_clicked(self, source=None, event=None, *a):
+ if self.scan_button.get_active(): # scan !
+ self.scan_button.set_label("stop")
self.__stop = False
- self.entry1.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse("#FFFFFF")) # widget color
+ self.output.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse("#FFFFFF")) # widget color
self.refresh()
for i in range(self.max_retry):
@@ -403,23 +407,23 @@
if check or (check == None) or self.__stop: break
if self.__stop: return
- self.entry1.modify_base(gtk.STATE_NORMAL, self.res_color[check]) # widget color
+ self.output.modify_base(gtk.STATE_NORMAL, self.res_color[check]) # widget color
self.refresh()
self.__stop = True # other way around; to be able to decide if it was stopped or ended correctly
- self.togglebutton1.set_active(False) # (since this triggers THIS function again)
+ self.scan_button.set_active(False) # (since this triggers THIS function again)
else: # stop/abort !
- self.togglebutton1.set_label("scan")
+ self.scan_button.set_label("scan")
if self.__stop: return
self.__stop = True
- self.entry1.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse("#FFFFFF")) # widget color
- self.progressbar1.set_text("Stopped by user!")
+ self.output.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse("#FFFFFF")) # widget color
+ self.progressbar.set_text("Stopped by user!")
self.refresh()
return
## exit and restart
- def on_button1_clicked(self, source=None, event=None):
+ def on_retry_button_clicked(self, source=None, event=None):
try:
self.run_sane.scanner.close()
except:
@@ -427,14 +431,14 @@
sane.exit()
self.init_sane()
# os.execv(sys.argv[0],sys.argv)
-# self.on_window1_destroy()
+# self.on_main_window_destroy()
## exit
- def on_button2_clicked(self, source=None, event=None):
- self.on_window1_destroy()
+ def on_exit_button_clicked(self, source=None, event=None):
+ self.on_main_window_destroy()
## press x-button on window
- def on_window1_destroy(self, source=None, event=None):
+ def on_main_window_destroy(self, source=None, event=None):
try:
os.remove( self.temp+"04.jpg" ) # clean-up
os.remove( self.image_file_small )
@@ -443,35 +447,16 @@
# exit
gtk.main_quit()
-# ## press x-button on device select window
-# def on_window2_destroy(self, source=None):
-# # when windows is closed by pressing the x-button
-# # choose first device
-# devnr = 0
-# # init scanner
-# self.run_sane.init_scanner(self.progress, self.window2, self.treeview1, devnr)
-# # set sensitivity
-# self.init_sensitivity()
## file selected
- def on_filechooserbutton1_file_set(self, source=None):
- self.radiobutton1.set_active(True)
- self.inp_file = self.filechooserbutton1.get_filename()
+ def on_filechooserbutton_file_set(self, source=None):
+ self.file_input_button.set_active(True)
+ self.inp_file = self.filechooserbutton.get_filename()
if not os.path.exists(self.inp_file):
self.progress(0., "File not found!")
return None
- ## toggle orientation sensitivity
- def toggle_orientation_sensitive(self, value):
- self.label5.set_sensitive(value)
- self.combobox1.set_sensitive(value)
- ## toggle placement sensitivity
- def toggle_placement_sensitive(self, value):
- if self.radiobutton2.get_active():
- self.frame1.set_sensitive(value)
- else:
- self.frame1.set_sensitive(False)
# helpers
#
@@ -481,11 +466,11 @@
# (0/7)
self.progress(0., "")
max_steps = 7
- op_mode = self.combobox2.get_active()
- source_mode = self.radiobutton2.get_active()
+ op_mode = self.mode_combobox.get_active()
+ source_mode = self.sane_input_button.get_active()
if (op_mode == self.MDE['invoices']): # 0: invoices (tesser)
- self.on_spinbutton_value_changed() # scan selected range
- self.on_combobox1_changed() # orientation mode
+ self.on_placement_value_changed() # scan selected range
+ self.on_orientation_changed() # orientation mode
opt = { 'tmp_file': "02.tif",
'recog_class': RunExternal,
'recog_cmd': self.cmd_tesser % (self.temp+"02", self.temp+"03"),
@@ -493,7 +478,7 @@
'valid_code_len': self.valid_code_len,
'resolution': 600, }
elif (op_mode == self.MDE['barcode']): # 1: barcode (gocr)
- self.on_combobox1_changed() # orientation mode
+ self.on_orientation_changed() # orientation mode
self.scan_koords = std_scan_koords["A4"][0]
#self.mode = std_scan_koords["A4"][1]
opt = { 'tmp_file': "02.pnm",
@@ -503,7 +488,7 @@
'valid_code_len': [ 13, 10, 9 ],
'resolution': 300, }
elif (op_mode == self.MDE['DataMatrix']): # 2: DataMatrix (libdmtx)
- #self.on_combobox1_changed() # orientation mode
+ #self.on_orientation_changed() # orientation mode
self.scan_koords = std_scan_koords["A4"][0]
self.mode = std_scan_koords["A4"][1]
#pydmtx recognition
@@ -523,8 +508,8 @@
# 'recog_cmd': (self.temp+"02.png", [ None ], RunLibdmtx), } #
'resolution': 150, }
elif (op_mode == self.MDE['PDF417']): # 3: PDF417 barcode (pdf417decode/wine)
- self.on_spinbutton_value_changed() # scan selected range
- self.on_combobox1_changed() # orientation mode
+ self.on_placement_value_changed() # scan selected range
+ self.on_orientation_changed() # orientation mode
opt = { 'tmp_file': "02.png",
'recog_class': RunExternal,
'recog_cmd': self.cmd_pdf417dec % (self.temp+"02",),
@@ -550,7 +535,7 @@
#del self.run_sane
else: # direct file input
self.progress(1./max_steps, "Reading image...")
- #self.inp_file = self.filechooserbutton1.get_filename()
+ #self.inp_file = self.filechooserbutton.get_filename()
#if not os.path.exists(self.inp_file):
# self.progress(0., "File not found!")
# return None
@@ -655,26 +640,18 @@
# initialize modulo10 checksum
m10 = modulo10()
# check amount, account number and reference number
- checksum_b = (int(amount[-1]) == m10.run(amount[:-1]) )
- checksum_k = (int(account[-1]) == m10.run(account[:-1]) )
- checksum_r = (int(reference[-1]) == m10.run(reference[:-1]) )
- print "Amount: "+str(int(amount[2:-1])/100.) +" "+ str(checksum_b)
- print "Account number: "+account +" "+ str(checksum_k)
- print "Reference number: "+reference +" "+ str(checksum_r)
+ try:
+ checksum_b = (int(amount[-1]) == m10.run(amount[:-1]) )
+ checksum_k = (int(account[-1]) == m10.run(account[:-1]) )
+ checksum_r = (int(reference[-1]) == m10.run(reference[:-1]) )
+ print "Amount: "+str(int(amount[2:-1])/100.) +" "+ str(checksum_b)
+ print "Account number: "+account +" "+ str(checksum_k)
+ print "Reference number: "+reference +" "+ str(checksum_r)
- checksum = checksum_b and checksum_k and checksum_r
-
-# if len(data) == 42:
-# # extract details
-# (tmp, betrag, tmp, referenz, tmp, konto, tmp) = struct.unpack("2s11ss16s2s9ss",data)
-# print "Betrag: "+str(int(betrag[:-1])/100.)
-# print "Konto: "+konto[:2]+"-"+konto[3:-2]+"-"+konto[-2:]
-# print "Referenznr: "+referenz
-# if check:
-# # modulo10 checksum for betrag
-# checknr = modulo10().run(betrag[:-1])
-# print "Checknr: ",checknr
-# checknr = ( checknr == int(betrag[-1]) )
+ checksum = checksum_b and checksum_k and checksum_r
+ except:
+ checksum = False
+ check = False
elif (op_mode == self.MDE['barcode']): # 1: barcode
check = not (data['type'] == "unknown")
if check:
@@ -711,7 +688,7 @@
if check:
os.remove(self.temp+opt['tmp_file']) # clean-up
- self.entry1.set_text(data)
+ self.output.set_text(data)
# get the clipboard
clipboard = gtk.clipboard_get()
@@ -747,7 +724,7 @@
## Refresh window during running processes.
def refresh(self):
- self.window1.queue_draw()
+ self.main_window.queue_draw()
time.sleep(0.1) # give also some time to the user... :)
while gtk.events_pending():
gtk.main_iteration()
@@ -780,8 +757,8 @@
# adjust width and height to your needs and keep ratio
(im_width, im_height) = im1.size #get image size
#get needed size
- width = self.image1.allocation.width
- height = self.image1.allocation.height
+ width = self.main_image.allocation.width
+ height = self.main_image.allocation.height
ratio = min(float(width)/im_width,float(height)/im_height) #calculate resizing ratio
self.new_width = int(im_width*ratio)
self.new_height = int(im_height*ratio)
@@ -797,12 +774,12 @@
# set image preview
self.image_file_small = self.temp+"05.jpg"
im.save( self.image_file_small )
- self.image1.set_from_file( self.image_file_small )
+ self.main_image.set_from_file( self.image_file_small )
## Set progress and refresh view.
def progress(self, fract, text):
- self.progressbar1.set_fraction(fract)
- self.progressbar1.set_text(text)
+ self.progressbar.set_fraction(fract)
+ self.progressbar.set_text(text)
self.refresh()
## Character correction after recogition (on basis that there should be numbers and few special chars).
@@ -859,128 +836,7 @@
if not (data == olddata): print 'subst: "%s" => "%s"' % (item[0], item[1])
return data
-
-# def guiprint(self, text ):
-# print text
-# infile = open("log.txt","r")
-# string = infile.read()
-# infile.close()
-# self.textbuffer.set_text(string)
-# enditer = self.textbuffer.get_end_iter()
-# self.textbuffer.insert(enditer,"\n%s" % text )
-## Run external shell command/application.
-class RunExternal:
-
- error_msg = [ "/bin/sh: " ]
-
- ## initialize
- def __init__(self, cmd, error_msg):
- self.cmd = cmd
- self.error_msg += error_msg
-
- ## call
- def __call__(self):
- (self.error, self.stdout, self.stderr) = self._run()
- return self.error
-
- ## Execute external shell command.
- def _run(self, piped=True):
- if piped:
- run = subprocess.Popen( self.cmd,
- stdin =subprocess.PIPE,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- shell=True )
- (stdoutdata, stderrdata) = run.communicate()
- return ((max(map(stderrdata.find, self.error_msg)) != -1), stdoutdata, stderrdata)
- else:
- os.system( self.cmd )
- return (False, "", "")
-
-#class RunLibdmtx:
-# """ Use libdmtx python wrapper/bindings (pydmtx). """
-
-# def __init__(self, cmd, error_msg):
-# #self.cmd = cmd
-# #self.error_msg += error_msg
-# self.filename = cmd
-
-# def __call__(self):
-# (self.error, self.stdout, self.stderr) = self._run()
-# return self.error
-
-# # thanks to: http://www.pastequestion.com/blog/python/how-to-use-python-imaging-library.html
-# def _run(self):
-# """ Read a Data Matrix barcode. """
-# dm_read = DataMatrix()
-# #print self.filename
-# img = Image.open(self.filename)
-# try:
-# self.decode = dm_read.decode(img.size[0], img.size[1], buffer(img.tostring()))
-# self.count = dm_read.count()
-# self.message = [ dm_read.message(i+1) for i in range(self.count) ]
-# self.stats = [ dm_read.stats(i+1) for i in range(self.count) ]
-# except:
-# return (True, "error", sys.exc_info()[1])
-
-# print "Detected %i DataMatrix barcodes" % self.count
-# for i in range(self.count):
-# print "Code # %i:" % (i+1)
-# print self.message[i]
-# stats = self.stats[i]
-# print stats
-
-# # mark the recognized region and save back to file
-# points = list(stats[1])
-# points.append(points[0])
-# draw = ImageDraw.Draw(img)
-# old = points[0]
-# for i, xy in enumerate(points[1:]):
-# #draw.line(old+xy, fill=(0, 255, 0), width=2)
-# #draw.line(old+xy, fill=(0, 255, 0))
-# draw.line(old+xy, fill="rgb(0, 255, 0)")
-# old = xy
-# img.save(self.filename)
-
-# #return (False, self.message, "")
-# #print self.stats, (self.count == 0)
-# return ((self.count == 0), self.message, "")
-
-#class RunMagickWand:
-# """ Use Python bindings to ImageMagick's MagickWand API. """
-# # "convert %s.tif -crop 1600x250+800+960 -depth 8 %s.tif"
-# # "convert %s.tif -crop 1700x250+750+960 -depth 8 %s.tif"
-# # "convert %s.tif -crop 3400x500+1500+1900 -depth 8 %s.tif"
-# # "convert %s.tif -depth 8 %s.tif"
-# # "convert %s.tif -depth 8 -rotate %d %s.tif"
-# # "convert %s.tif -depth 8 -rotate %d %s"
-# #cmd_convert = "convert %s -depth 8 -rotate %d %s"
-#
-# def __init__(self, inp_filename, rotate, out_filename):
-# self.inp_filename = inp_filename
-# self.out_filename = out_filename
-# self.angle = rotate
-# self.depth = 8
-#
-# def __call__(self):
-# (self.error, self.stdout, self.stderr) = self._run()
-# return self.error
-#
-# # thanks to: http://www.assembla.com/wiki/show/pythonmagickwand
-# def _run(self):
-# """ This rotates, changes depth, format and writes a new file. """
-# try:
-# i = Image(self.inp_filename)
-# i.rotate(self.angle)
-# i.depth(self.depth)
-# i.format = self.out_filename[-3:].upper()
-# i.save(self.out_filename)
-# except:
-# return (True, "error", sys.exc_info()[1])
-#
-# return (False, "ok", "")
-
## sSANE/PIL interface python wrapper/bindings.
class RunSANE:
# "scanimage --format=tif --resolution 300 --mode Gray > %s.tif"
@@ -990,78 +846,50 @@
resolution = 600
## Init of sane interface -> device.
- def __init__(self, main):
- self.main = main
+ def __init__(self):
print "init sane python interface ..."
# Get the path set up properly
#sys.path.append('.')
- self.list_store = self.main.treeview1.get_model()
- if self.list_store == None:
- # create treeview things
- self.list_store = gtk.ListStore(gobject.TYPE_STRING)
- self.main.treeview1.set_model(self.list_store)
- col = gtk.TreeViewColumn("Select Device to use:", gtk.CellRendererText(),text=0)
- self.main.treeview1.append_column(col)
- else:
- self.list_store.clear()
# get blacklist
- self.read_blacklist()
+ self.blacklist = BlacklistMgr.read_blacklist()
# init SANE
self.n = 4.
- self.main.progress(0.,"init sane python interface ...")
+ main.progress(0.,"init sane python interface ...")
try:
self.version = sane.init()
- self.main.progress(1./self.n,"init sane python interface ... search devices")
+ main.progress(1./self.n,"init sane python interface ... search devices")
# get sane devices
- self.devices1 = sane.get_devices()
- # init filtered list
- self.devices = []
-
- print "\n"
- # add found devices to treeview
- for i in range(len(self.devices1)):
- # filter devices: remove blacklisted devices
- if not self.devices1[i][1]+" "+self.devices1[i][2] in self.blacklist:
- self.devices.append(self.devices1[i])
- print str(i)+": "+self.devices1[i][1]+" "+self.devices1[i][2]
- self.list_store.append([self.devices1[i][1]+" "+self.devices1[i][2]])
-# else:
-# print str(i)+": "+self.devices1[i][1]+" "+self.devices1[i][2]+" BLOCKED"
- # self.devices is now filtered
-
+ self.devices = sane.get_devices()
+
+ # filter blacklisted devices
+ self.devices = BlacklistMgr.filter_devices(self.devices)
# check how many devices we found
if len(self.devices) == 0:
- self.main.progress(0./self.n,"No device found.")
+ main.progress(0./self.n,"No device found.")
+ main.device_chooser_button.set_visible(False)
self.found_scanner = False
- elif len(self.list_store) > 1:
- # more than one device, choose one.
- self.main.progress(2./self.n,"More than one device found.")
- if sys.argv[1:]:
- # choose one by command line
- devnr = raw_input("Choose device: ")
- self.main.progress(2./self.n,"More than one device found. Choose device number %i" % devnr)
- # continue to init scanner
- self.init_scanner(devnr)
- else:
- # simply continue and select device in GUI ( see init_sane )
- self.main.progress(2./self.n,"More than one device found.")
- self.main.notebook.set_current_page(2)
- self.main.button3.set_visible(True)
- self.found_scanner = False
+ elif len(self.devices) > 1:
+ # simply continue and select device in GUI ( see init_sane )
+ main.progress(2./self.n,"More than one device found.")
+ main.device_chooser_button.set_visible(True)
+ self.found_scanner = None
else:
- # only one device found
- self.main.progress(2./self.n,"Device: %s" % self.devices[0][1]+" "+self.devices[0][2])
+ # only one device found, continue
+ main.progress(2./self.n,"Device: %s" % self.devices[0][1]+" "+self.devices[0][2])
+ main.device_chooser_button.set_visible(False)
# continue to init scanner
self.init_scanner(0)
except:
# No device found at all
self.found_scanner = False
+ main.device_chooser_button.set_visible(False)
print "No sane device found. Retry again."
+ main.progress(0./self.n,"No sane device found. Retry again.")
## iInit of sane interface -> scanner
def init_scanner(self, devnr):
@@ -1070,7 +898,7 @@
# finish init device
self.dev = self.devices[devnr][0] # choose device
print "%s" % self.dev
- self.main.progress(3./self.n,"Device initialized. Open scanner...")
+ main.progress(3./self.n,"Device initialized. Open scanner...")
# open scanner device
self.scanner = sane.open(self.dev)
@@ -1078,17 +906,18 @@
self.opts = self.scanner.get_options()
self.found_scanner = True
- self.main.progress(4./self.n,"Ready: %s" % self.devices[devnr][1]+" "+self.devices[devnr][2])
+ main.progress(4./self.n,"Ready: %s" % self.devices[devnr][1]+" "+s...
[truncated message content] |