Changeset 102

Show
Ignore:
Timestamp:
04/11/08 16:20:49 (6 months ago)
Author:
nlawren2
Message:

More tkinter

Files:

Legend:

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

    r101 r102  
    1212 
    1313class TkinterUI(user_interface.UserInterface): 
     14        def update(self, caller, tray): 
     15                for i in self.views: 
     16                        if i != caller and hasattr(i, update): 
     17                                i.update(tray) 
     18 
     19 
    1420        def make_switch_view(self, view): 
    1521                return lambda: self.switch_view(view) 
     
    1824        def make_view(self, view_name, view): 
    1925                setattr(self,view_name, view) 
    20                 self.views.add_command(label=view_name, command=self.make_switch_view(view)) 
     26                self.menu.add_command(label=view_name, command=self.make_switch_view(view)) 
     27                self.views.append(view) 
    2128                self.view_names.append(view_name) 
    2229                self.current_view = view 
     
    3542                self.view_names = [] 
    3643 
    37                 self.views = Tkinter.Menu(self.window, font=("helvetica",24)) 
     44                self.views = [] 
     45 
     46                self.menu = Tkinter.Menu(self.window, font=("helvetica",24)) 
    3847 
    3948                self.current_view = None 
    40                 self.make_view('Keypad', Keypad(sucrose,auth, exit=self.destroy)) 
    41                 self.make_view('Nutrition', Nutrition(sucrose,auth, exit=self.destroy)) 
    42                 self.make_view('Statistics', Statistics(sucrose,auth, exit=self.destroy)) 
    43  
    44  
    45                 self.window.config(menu=self.views
     49                self.make_view('Keypad', Keypad(sucrose, auth, self, exit=self.destroy)) 
     50                self.make_view('Nutrition', Nutrition(sucrose, auth, self, exit=self.destroy)) 
     51                self.make_view('Statistics', Statistics(sucrose, auth, self, exit=self.destroy)) 
     52 
     53 
     54                self.window.config(menu=self.menu
    4655 
    4756                self.current_view.pack() 
     
    4958                # Kill yourself after 15 seconds 
    5059                self.window.after(15000,self.destroy) 
    51                 self.views.add_command(label="Quit", command=self.destroy) 
     60                self.menu.add_command(label="Quit", command=self.destroy) 
    5261                 
    5362                self.window.mainloop() 
     
    7079 
    7180class Statistics(Tkinter.Frame): 
    72         def __init__(self, sucrose, auth, exit=None, location=None, master=None, cnf={}, **kw): 
     81        def __init__(self, sucrose, auth, parent, exit=None, location=None, master=None, cnf={}, **kw): 
    7382                Tkinter.Frame.__init__(self,master=None,cnf={},**kw) 
    7483 
    7584                self.auth = auth  
     85                self.parent = parent  
    7686                self.sucrose = sucrose 
    7787                self.distruct = exit 
     
    8696 
    8797class Nutrition(Tkinter.Frame): 
     98        def update(self, tray): 
     99                self.item = self.sucrose.item_from_tray(tray) 
     100                self.row = 0 
     101                self.make_item("Caffeine", self.item.caffeine) 
     102                self.make_item("Calories", self.item.calories) 
     103                self.make_item("Sugar", self.item.sugar) 
     104                self.make_item("Carbohydrates", self.item.carbohydrates) 
     105                self.make_item("Fiber", self.item.fiber) 
     106                self.make_item("Sodium", self.item.sodium) 
     107                self.make_item("Fat", self.item.fat) 
     108                self.make_item("Saturated Fat", self.item.saturated_fat) 
     109                self.make_item("Protein", self.item.protein) 
     110                self.make_item("Cholesterol", self.item.cholesterol) 
     111 
     112 
    88113        def make_item(self, name, value): 
    89114                self.row = self.row + 1 
     
    93118                        .grid(row=2*self.row, column=1, sticky=Tkinter.N+Tkinter.S+Tkinter.E+Tkinter.W) 
    94119 
    95         def __init__(self, sucrose, auth, exit=None, location=None, master=None, cnf={}, **kw): 
     120 
     121        def __init__(self, sucrose, auth, parent, exit=None, location=None, master=None, cnf={}, **kw): 
    96122                Tkinter.Frame.__init__(self,master=None,cnf={},**kw) 
    97123         
    98124                self.auth = auth  
     125                self.parent = parent  
    99126                self.sucrose = sucrose 
    100127                self.distruct = exit 
    101128                self.location = location 
     129                self.item = None 
     130                 
    102131                self.row = 0 
    103                 self.item = None 
    104                  
    105132                self.make_item("Caffeine", 0) 
    106133                self.make_item("Calories", 0) 
     
    114141                self.make_item("Cholesterol", 0) 
    115142 
    116         def make_table(self): 
    117                 # { BEGIN details GUI 
    118                 self.make_item("Caffeine", self.item.caffeine) 
    119                 self.make_item("Calories", self.item.calories) 
    120                 self.make_item("Sugar", self.item.sugar) 
    121                 self.make_item("Carbohydrates", self.item.carbohydrates) 
    122                 self.make_item("Fiber", self.item.fiber) 
    123                 self.make_item("Sodium", self.item.sodium) 
    124                 self.make_item("Fat", self.item.fat) 
    125                 self.make_item("Saturated Fat", self.item.saturated_fat) 
    126                 self.make_item("Protein", self.item.protein) 
    127                 self.make_item("Cholesterol", self.item.cholesterol) 
    128                 # } END details GUI 
    129143 
    130144 
    131145 
    132146class Keypad(Tkinter.Frame): 
     147        def update(self, tray): 
     148                self.item_location=tray.machine_tray_id 
     149                self.tray = tray 
     150                self.item = self.sucrose.item_from_tray(self.tray) 
     151 
     152                self.location.config(text=self.item_location) 
     153                self.name.config(text=self.item.name) 
     154                 
     155                self.auth.authenticate_purchase(self.item_location) 
     156 
     157                self.vend.config(state=Tkinter.NORMAL) 
     158 
     159 
    133160        def make_button_callback(self,number): 
    134161                return lambda: self.button_callback(number) 
     
    147174 
    148175                        self.vend.config(state=Tkinter.NORMAL) 
     176 
     177                        parent.update(self, tray) 
    149178                # If it's not a valid purchase, don't allow the user to press the vend button 
    150179                except: 
     
    170199 
    171200 
    172         def __init__(self, sucrose, auth, exit=None, location=None, master=None, cnf={}, **kw): 
     201        def __init__(self, sucrose, auth, parent, exit=None, location=None, master=None, cnf={}, **kw): 
    173202                Tkinter.Frame.__init__(self,master=None,cnf={},**kw) 
    174203 
    175204                self.auth = auth  
     205                self.parent = parent  
    176206                self.sucrose = sucrose 
    177207                self.distruct = exit