From e1cd80acf806a19e8ac14a8647d182be04cd55e6 Mon Sep 17 00:00:00 2001 From: hploetz Date: Fri, 8 Jun 2007 02:57:39 +0000 Subject: [PATCH] GUI working git-svn-id: svn+ssh://localhost/home/henryk/svn/cyberflex-shell/trunk@226 f711b948-2313-0410-aaa9-d29f33439f0b --- gui/__init__.py | 55 ++++++++ gui/passport/passport.glade | 262 ++++++++++++++++++------------------ 2 files changed, 186 insertions(+), 131 deletions(-) diff --git a/gui/__init__.py b/gui/__init__.py index 72601b2..c5fa2f7 100644 --- a/gui/__init__.py +++ b/gui/__init__.py @@ -6,6 +6,7 @@ class PassportGUI: def __init__(self): "Create and show main window." self.passport = None + self.format_strings = {} self.main_window_xml = gtk.glade.XML(self.GLADE_FILE, "main") self.main_window = self.main_window_xml.get_widget("main") @@ -13,5 +14,59 @@ class PassportGUI: gtk.gdk.threads_init() gtk.main() + def lookup_country(passport, contents): + return passport.COUNTRY_CODES.get( contents[0], ("Unknown Code", ) ) + + def split_name(passport, contents): + return (contents[0][0], " ".join(contents[0][1:])) + + def parse_date(passport, contents): + year, month, day = int(contents[0][0:2]), int(contents[0][2:4]), int(contents[0][4:6]) + if year < 30: # Yeah, two-digit years for the win! + year = 2000 + year + else: + year = 1900 + year + + return ("%04i-%02i-%02i" % (year, month, day), ) + + def format_mrz(passport, contents): + mrz = contents[0] + if contents[1] is not None: + mrz = contents[1] + + return [e.replace("<","<") for e in mrz] + + s = lambda a,b: (str(b[0]),) + PROPERTY_TRANSFORMATIONS = [ + # This code implies an m:n relation from passport object properties to + # displayed fields. This is a sequence of ( (passport_field, ...) transform_callable, (destination_field, ...)) + # transform_callable will be called with a reference to the passport and a list of the values of (passport_field, ...) + # and must return len( (destination_field, ...) ) values wich will then be displayed in the corresponding + # destination fields. + + ( ("type",), s, ("type",)), + ( ("issuer",), s, ("issuer",)), + ( ("issuer",), lookup_country, ("issuer_clear1", "issuer_clear2")), + ( ("name",), split_name, ("surname", "firstname")), + ( ("document_no",), s, ("document_no",)), + ( ("nationality",), s, ("nationality",)), + ( ("nationality",), lookup_country, ("nationality_clear1", "nationality_clear2")), + ( ("date_of_birth",), parse_date, ("dob",)), + ( ("sex",), s, ("sex",)), + ( ("expiration_date",), parse_date, ("doe",)), + ( ("optional",), s, ("optional",)), + ( ("given_mrz", "dg1_mrz"), format_mrz, ("mrz1", "mrz2") ), + ] + del s + def set_passport(self, passport): self.passport = passport + + for sources, transform, destinations in self.PROPERTY_TRANSFORMATIONS: + values = [getattr(passport, src) for src in sources] + transformed = transform(passport, values) + 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.format_strings[dst] % transformed[index] ) diff --git a/gui/passport/passport.glade b/gui/passport/passport.glade index 13cd494..133924e 100644 --- a/gui/passport/passport.glade +++ b/gui/passport/passport.glade @@ -29,64 +29,6 @@ 0 0 - - - True - -Surname - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 6 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 2 - 3 - fill - - - - - - - True - -Name - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 6 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 4 - 5 - fill - - - - True @@ -203,69 +145,11 @@ Optional Data - - - True - True - <span size="large"><b>ERIKSSON</b></span> - False - True - GTK_JUSTIFY_LEFT - False - True - 0 - 0.5 - 6 - 0 - PANGO_ELLIPSIZE_NONE - 39 - True - 0 - - - 3 - 4 - 3 - 4 - fill - - - - - - - True - True - <span size="large"><b>ANNA MARIA</b></span> - False - True - GTK_JUSTIFY_LEFT - False - True - 0 - 0.5 - 6 - 0 - PANGO_ELLIPSIZE_NONE - 39 - True - 0 - - - 3 - 4 - 5 - 6 - fill - - - - True True - <span size="large"><b>1969-08-06</b></span> + <span size="large"><b>%s</b></span> False True GTK_JUSTIFY_LEFT @@ -294,7 +178,7 @@ Optional Data True True - <span size="large"><b>F</b></span> + <span size="large"><b>%s</b></span> False True GTK_JUSTIFY_LEFT @@ -323,7 +207,7 @@ Optional Data True True - <span size="large"><b>1994-06-23</b></span> + <span size="large"><b>%s</b></span> False True GTK_JUSTIFY_LEFT @@ -352,7 +236,7 @@ Optional Data True True - <span size="large"><b></b></span> + <span size="large"><b>%s</b></span> False True GTK_JUSTIFY_LEFT @@ -381,7 +265,7 @@ Optional Data True True - <span size="large"><b>P</b></span> + <span size="large"><b>%s</b></span> False True GTK_JUSTIFY_LEFT @@ -435,10 +319,10 @@ Optional Data - + True True - <span size="large"><b>L898902C</b></span> + <span size="large"><b>%s</b></span> False True GTK_JUSTIFY_LEFT @@ -467,7 +351,7 @@ Optional Data True True - <tt><span size="x-large"><b>P&lt;UTOERIKSSON&lt;&lt;ANNA&lt;MARIA&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;</b></span></tt> + <tt><span size="x-large"><b>%s</b></span></tt> False True GTK_JUSTIFY_LEFT @@ -495,7 +379,7 @@ Optional Data True True - <tt><span size="x-large"><b>L898902C&lt;3UTO6908061F9406236ZE184226B&lt;&lt;&lt;&lt;&lt;14</b></span></tt> + <tt><span size="x-large"><b>%s</b></span></tt> False True GTK_JUSTIFY_LEFT @@ -720,7 +604,7 @@ Issuing State or Organisation True True - <span size="large"><b>Utopia</b></span> + <span size="large"><b>%s</b></span> False True GTK_JUSTIFY_LEFT @@ -749,7 +633,7 @@ Issuing State or Organisation True True - <span size="large"><b>UTO</b></span> + <span size="large"><b>%s</b></span> False True GTK_JUSTIFY_LEFT @@ -778,7 +662,7 @@ Issuing State or Organisation True True - <span size="large"><b>Utopia</b></span> + <span size="large"><b>%s</b></span> False True GTK_JUSTIFY_LEFT @@ -807,7 +691,7 @@ Issuing State or Organisation True True - <span size="large"><b>UTO</b></span> + <span size="large"><b>%s</b></span> False True GTK_JUSTIFY_LEFT @@ -836,7 +720,7 @@ Issuing State or Organisation True True - <span size="large"><b></b></span> + <span size="large"><b>%s</b></span> False True GTK_JUSTIFY_LEFT @@ -894,7 +778,7 @@ Nationality True True - <span size="large"><b></b></span> + <span size="large"><b>%s</b></span> False True GTK_JUSTIFY_LEFT @@ -918,6 +802,122 @@ Nationality + + + + True + +First Name(s) + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 6 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 3 + 4 + 2 + 3 + fill + + + + + + + True + True + <span size="large"><b>%s</b></span> + False + True + GTK_JUSTIFY_LEFT + False + True + 0 + 0.5 + 6 + 0 + PANGO_ELLIPSIZE_NONE + 39 + True + 0 + + + 3 + 4 + 3 + 4 + fill + + + + + + + True + +Last Name + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 6 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 3 + 4 + 4 + 5 + fill + + + + + + + True + True + <span size="large"><b>%s</b></span> + False + True + GTK_JUSTIFY_LEFT + False + True + 0 + 0.5 + 6 + 0 + PANGO_ELLIPSIZE_NONE + 39 + True + 0 + + + 3 + 4 + 5 + 6 + fill + + +