diff --git a/README.md b/README.md index f1b5ab0fc322944b9a346819badba6958c6a4e7c..fd723ba71800695da69ae5ef1ae154370c11205a 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,6 @@ virtualsnack ============ Curses based emulator of the UCC Snack Machine ROM + +Requirements: + npyscreen 4.6.1 or later diff --git a/virtualsnack.py b/virtualsnack.py index f2159600b6e57c89813c5f6aa0d3e33cbedda431..bfd628de925ca0a6851b4fe5ade4f1b32968a412 100755 --- a/virtualsnack.py +++ b/virtualsnack.py @@ -36,7 +36,6 @@ class VirtualSnack(npyscreen.Form): self.textdisplay.value = self.parentApp.textdisplay self.display() - def create(self, *args, **keywords): super(VirtualSnack, self).create(*args, **keywords) @@ -53,7 +52,7 @@ class VirtualSnack(npyscreen.Form): self.reset= self.add(npyscreen.MiniButton,name="RESET", relx = kpx + 7, rely = kpy) - self.dip = self.add(npyscreen.MultiSelect, name = "Door", max_width=15, relx = 4, rely = 10, max_height=4, value = [], values = ["DOOR"], scroll_exit=True) + self.dip = self.add(npyscreen.MultiSelect, name = "Door", max_width=15, relx = 4, rely = 10, max_height=4, value = [], values = ["DOOR"], scroll_exit=True, value_changed_callback=self.parentApp.when_door_toggled) self.dip = self.add(npyscreen.MultiSelect, name = "DIP Switch", max_width = 45, rely =3, relx = 30, max_height=10, value = [], values = ["DIP1", "DIP2", "DIP3","DIP4","DIP5","DIP6","DIP7","DIP8"], scroll_exit=True) @@ -165,6 +164,18 @@ class VirtualSnackApp(npyscreen.NPSAppManaged): self.sent = data + + # Callbacks + def when_door_toggled(self, *args, **keywords): +# See +# https://code.google.com/p/npyscreen/source/detail?r=9768a97fd80ed1e7b3e670f312564c19b1adfef8# +# for callback info + if keywords['widget'].get_selected_objects(): + self.do_send('401 door closed\n') + else: + self.do_send('400 door open\n') + + # Snack Emulator code below def do_prompt(self): @@ -358,14 +369,6 @@ if __name__ == "__main__": # key = '0'+key # self.do_send('2'+key+' keypress\n') -# FIXME -# def door_changed(self, widget): -# self.switches.set_door_open(not widget.get_active()) -# if widget.get_active(): -# self.do_send('401 door closed\n') -# else: -# self.do_send('400 door open\n') - # FIXME # def handleNewConnection(self,source,condition): # #source is a socket in GTK v 1 and a fd in version 2