Enhance GUI, can now enter MRZ information and read new passport from GUI
git-svn-id: svn+ssh://localhost/home/henryk/svn/cyberflex-shell/trunk@251 f711b948-2313-0410-aaa9-d29f33439f0b
This commit is contained in:
parent
55a0b4d4a2
commit
33b9f44354
|
@ -1,5 +1,5 @@
|
|||
import gtk,gtk.glade,gobject
|
||||
import os, time, TLV_utils
|
||||
import sys, os, time, TLV_utils, cards
|
||||
|
||||
class Converter:
|
||||
SUPPORTS = ["jp2"]
|
||||
|
@ -26,16 +26,28 @@ class PassportGUI:
|
|||
self.now_showing = 0
|
||||
self.main_window_xml = gtk.glade.XML(self.GLADE_FILE, "main")
|
||||
self.main_window = self.main_window_xml.get_widget("main")
|
||||
self.card_factory = None
|
||||
|
||||
signals = {
|
||||
"on_exit_clicked": self.exit_clicked,
|
||||
"on_clear_clicked": self.clear_clicked,
|
||||
"on_open_clicked": self.open_clicked,
|
||||
"on_main_delete_event": self.exit_clicked,
|
||||
"on_main_destroy": gtk.main_quit,
|
||||
"on_next_image_clicked": self.next_image,
|
||||
"on_prev_image_clicked": self.prev_image,
|
||||
"on_mrz_entry1_activate": self.mrz1_activate,
|
||||
"on_mrz_entry2_activate": self.mrz2_activate,
|
||||
}
|
||||
self.main_window_xml.signal_autoconnect(signals)
|
||||
|
||||
def mrz1_activate(self, widget, event=None, data=None):
|
||||
self.main_window_xml.get_widget("mrz_entry2").grab_focus()
|
||||
|
||||
def mrz2_activate(self, widget, event=None, data=None):
|
||||
self.main_window_xml.get_widget("open").clicked()
|
||||
self.main_window_xml.get_widget("mrz_entry1").grab_focus()
|
||||
|
||||
def exit_clicked(self, widget, event=None, data=None):
|
||||
gtk.main_quit()
|
||||
return True
|
||||
|
@ -116,6 +128,50 @@ class PassportGUI:
|
|||
|
||||
self._set_images(data)
|
||||
|
||||
def clear_display(self):
|
||||
for sources, transform, destinations in self.PROPERTY_TRANSFORMATIONS:
|
||||
for index, dst in enumerate(destinations):
|
||||
widget = self.main_window_xml.get_widget(dst)
|
||||
if not self.format_strings.has_key(dst):
|
||||
self.format_strings[dst] = widget.get_label()
|
||||
widget.set_label( "" )
|
||||
self._set_images([])
|
||||
self.main_window_xml.get_widget("mrz_entry1").set_text("")
|
||||
self.main_window_xml.get_widget("mrz_entry2").set_text("")
|
||||
self.update_image_shown()
|
||||
|
||||
def clear_clicked(self, widget, event=None, data=None):
|
||||
self.clear_display()
|
||||
|
||||
def open_clicked(self, widget, event=None, data=None):
|
||||
mrz1 = self.main_window_xml.get_widget("mrz_entry1").get_text()
|
||||
mrz2 = self.main_window_xml.get_widget("mrz_entry2").get_text()
|
||||
mrz = [e.strip().upper().replace(";","<") for e in mrz1, mrz2]
|
||||
|
||||
self.clear_display()
|
||||
|
||||
self.main_window_xml.get_widget("mrz_entry1").set_text(mrz[0])
|
||||
self.main_window_xml.get_widget("mrz_entry2").set_text(mrz[1])
|
||||
|
||||
if self.card_factory:
|
||||
try:
|
||||
card_object = self.card_factory.connect()
|
||||
card = cards.new_card_object(card_object)
|
||||
cards.generic_card.DEBUG = False
|
||||
|
||||
print >>sys.stderr, "Using %s" % card.DRIVER_NAME
|
||||
|
||||
p = cards.passport_application.Passport.from_card(card, mrz)
|
||||
|
||||
self.set_passport(p)
|
||||
except KeyboardInterrupt,SystemExit: raise
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
def set_card_factory(self, c):
|
||||
self.card_factory = c
|
||||
|
||||
def _set_images(self, data):
|
||||
self.images = []
|
||||
for type, image_data, description in data:
|
||||
|
@ -153,8 +209,13 @@ class PassportGUI:
|
|||
"description": description,
|
||||
} )
|
||||
|
||||
if not self.format_strings.has_key("image"):
|
||||
self.format_strings["image"] = self.main_window_xml.get_widget("image").get_stock()
|
||||
|
||||
if pixbuf is not None:
|
||||
self.main_window_xml.get_widget("image").set_from_pixbuf(pixbuf)
|
||||
else:
|
||||
self.main_window_xml.get_widget("image").set_from_stock(*self.format_strings["image"])
|
||||
|
||||
self.main_window_xml.get_widget("prev_image").set_property("sensitive", self.now_showing > 0)
|
||||
self.main_window_xml.get_widget("next_image").set_property("sensitive", self.now_showing < len(self.images)-1)
|
||||
|
|
File diff suppressed because it is too large
Load Diff
23
readpass.py
23
readpass.py
|
@ -3,12 +3,13 @@
|
|||
|
||||
import utils, cards, TLV_utils, sys, binascii, time, traceback
|
||||
|
||||
OPTIONS = "GW:R:"
|
||||
LONG_OPTIONS = ["no-gui", "write-files-basename", "read-files-basename"]
|
||||
OPTIONS = "iGW:R:"
|
||||
LONG_OPTIONS = ["interactive","no-gui", "write-files-basename", "read-files-basename"]
|
||||
|
||||
use_gui = True
|
||||
write_files = None
|
||||
read_files = None
|
||||
start_interactive = False
|
||||
|
||||
if __name__ == "__main__":
|
||||
c = utils.CommandLineArgumentHelper()
|
||||
|
@ -18,12 +19,16 @@ if __name__ == "__main__":
|
|||
for option, value in options:
|
||||
if option in ("-G","--no-gui"):
|
||||
use_gui = False
|
||||
start_interactive = False
|
||||
elif option in ("-W","--write-files-basename"):
|
||||
write_files = value
|
||||
elif option in ("-R","--read-files-basename"):
|
||||
read_files = value
|
||||
elif option in ("-i", "--interactive"):
|
||||
start_interactive = True
|
||||
use_gui = True
|
||||
|
||||
if read_files is None:
|
||||
if read_files is None and not start_interactive:
|
||||
card_object = c.connect()
|
||||
card = cards.new_card_object(card_object)
|
||||
cards.generic_card.DEBUG = False
|
||||
|
@ -36,15 +41,21 @@ if __name__ == "__main__":
|
|||
p = cards.passport_application.Passport.from_card(card, ["",arguments[0]])
|
||||
else:
|
||||
p = cards.passport_application.Passport.from_card(card)
|
||||
else:
|
||||
elif read_files is not None:
|
||||
p = cards.passport_application.Passport.from_files(basename=read_files)
|
||||
elif start_interactive:
|
||||
p = None
|
||||
|
||||
if write_files is not None:
|
||||
if write_files is not None and not start_interactive:
|
||||
p.to_files(basename=write_files)
|
||||
|
||||
if use_gui:
|
||||
import gui
|
||||
|
||||
g = gui.PassportGUI()
|
||||
g.set_passport(p)
|
||||
if p is not None:
|
||||
g.set_passport(p)
|
||||
else:
|
||||
g.clear_display()
|
||||
g.set_card_factory(c)
|
||||
g.run()
|
||||
|
|
Loading…
Reference in New Issue