Changeset 143

Show
Ignore:
Timestamp:
04/19/08 19:49:33 (3 months ago)
Author:
njriley
Message:

nutrition units; report empty trays; fix recent purchases alignment

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sucrose/trunk/python/keypad_tk.py

    r142 r143  
    130130                # { BEGIN statistics GUI 
    131131                for row, (name, func) in enumerate(self.ROWS): 
    132                         Tkinter.Label(self, text=name + '      ', anchor=Tkinter.W, 
     132                        Tkinter.Label(self, text=name + '          ', anchor=Tkinter.W, 
    133133                                                  font=("helvetica", 24, 'bold'), bg='white').grid( 
    134134                                row=row, column=0, columnspan=2, sticky=Tkinter.EW) 
     
    146146                Tkinter.Label(self, text='', font=('helvetica', 24, 'bold')).grid( 
    147147                        row=row+1, column=0, columnspan=2, sticky=Tkinter.NSEW) 
    148                 Tkinter.Label(self, text='Recent Purchases', font=('helvetica', 13, 'bold')\ 
    149                                           ).grid(row=row+2, column=0, columnspan=2, sticky=Tkinter.NSEW) 
     148                Tkinter.Label(self, text='Recent Purchases', justify=Tkinter.LEFT, 
     149                                          font=('helvetica', 13, 'bold') 
     150                                          ).grid(row=row+2, column=0, columnspan=3, sticky=Tkinter.W) 
    150151 
    151152                offset = row + 3 
     
    164165 
    165166class Nutrition(Tkinter.Frame): 
    166         ROWS = (('Caffeine', 'caffeine'), 
    167                         ('Calories', 'calories'), 
    168                         ('Sugar', 'sugar'), 
    169                         ('Carbohydrates', 'carbohydrates'), 
    170                         ('Fiber', 'fiber'), 
    171                         ('Sodium', 'sodium'), 
    172                         ('Fat', 'fat'), 
    173                         ('Saturated Fat', 'saturated_fat'), 
    174                         ('Protein', 'protein'), 
    175                         ('Cholesterol', 'cholesterol')) 
     167        ROWS = (('Caffeine', 'caffeine', 'mg'), 
     168                        ('Calories', 'calories', ''), 
     169                        ('Sugar', 'sugar', 'g'), 
     170                        ('Carbohydrates', 'carbohydrates', 'g'), 
     171                        ('Fiber', 'fiber', 'g'), 
     172                        ('Sodium', 'sodium', 'mg'), 
     173                        ('Fat', 'fat', 'g'), 
     174                        ('Saturated Fat', 'saturated_fat', 'g'), 
     175                        ('Protein', 'protein', 'g'), 
     176                        ('Cholesterol', 'cholesterol', 'mg')) 
    176177 
    177178        def update(self, tray): 
    178179                if tray: 
    179180                        item = self.sucrose.item_from_tray(tray) 
    180                 for name, attr in self.ROWS: 
    181                         label = getattr(self, attr) 
    182                         label.config(text=tray and getattr(item, attr, '') or '') 
     181                for name, attr, unit in self.ROWS: 
     182                        (val_label, unit_label) = getattr(self, attr) 
     183                        val = tray and getattr(item, attr, '') or '' 
     184                        val_label.config(text=val) 
     185                        unit_label.config(text=val and unit or '') 
    183186 
    184187        def __init__(self, sucrose, auth, update_f, exit=None, location=None, master=None, cnf={}, **kw): 
     
    197200                                          font=('helvetica', 24), bg='white', fg='white').grid( 
    198201                        row=0, column=1, sticky=Tkinter.EW) 
    199  
    200                 for row, (name, attr) in enumerate(self.ROWS): 
    201                         Tkinter.Label(self, text=name + '        ', anchor=Tkinter.W, 
     202                Tkinter.Label(self, text='mg', anchor=Tkinter.W, 
     203                                          font=('helvetica', 24), bg='white', fg='white').grid( 
     204                        row=0, column=2, sticky=Tkinter.EW) 
     205 
     206                for row, (name, attr, unit) in enumerate(self.ROWS): 
     207                        Tkinter.Label(self, text=name + '     ', anchor=Tkinter.W, 
    202208                                                  font=("helvetica", 24), bg='white').grid( 
    203209                                row=row + 1, column=0, sticky=Tkinter.EW) 
     
    206212                                                  font=("helvetica", 24), bg='white') 
    207213                        val_label.grid(row=row + 1, column=1, sticky=Tkinter.EW) 
    208  
    209                         setattr(self, attr, val_label) 
     214                        unit_label = \ 
     215                        Tkinter.Label(self, text='', anchor=Tkinter.W, 
     216                                                  font=("helvetica", 24), bg='white') 
     217                        unit_label.grid(row=row + 1, column=2, sticky=Tkinter.EW) 
     218 
     219                        setattr(self, attr, (val_label, unit_label)) 
    210220 
    211221class Keypad(Tkinter.Frame): 
     
    225235                self.price.config(text='$%.2f' % self.tray.cur_price) 
    226236 
    227                 self.auth.authenticate_purchase(self.item_location) 
    228  
     237                try: 
     238                        self.auth.authenticate_purchase(self.item_location) 
     239                except ValueError, e: 
     240                        self.report_exception(e) 
     241                        self.vend.config(state=Tkinter.DISABLED) 
     242                        return 
    229243                self.vend.config(state=Tkinter.NORMAL) 
    230244 
     
    234248        def make_button_callback(self,number): 
    235249                return lambda: self.button_callback(number) 
     250 
     251        def report_exception(self, e): 
     252                self.location.config(text=self.item_location) 
     253                self.name.config(text=str(e), fg='red') 
     254                self.price.config(text='') 
    236255 
    237256        def button_callback(self,number): 
     
    243262 
    244263                except ValueError, e: 
    245                         self.location.config(text=self.item_location) 
    246                         self.name.config(text=str(e), fg='red') 
    247                         self.price.config(text='') 
     264                        self.report_exception(e) 
    248265                        tray = None 
    249266                except Exception, e: 
    250267                        import traceback; traceback.print_exc() 
    251                         self.location.config(text=self.item_location) 
    252                         self.name.config(text=str(e), fg='red') 
    253                         self.price.config(text='') 
     268                        self.report_exception(e) 
    254269                        tray = None 
    255270