12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- from sccd.statechart.parser.xml import parse_f, statechart_parser_rules
- from sccd.cd.cd import *
- from sccd.controller.eventloop import *
- import queue
- MODEL_DELTA = duration(100, Microsecond)
- def main():
- # Load statechart
- g = Globals()
- sc_rules = statechart_parser_rules(g, "statechart_digitalwatch.xml")
- statechart = parse_f("statechart_digitalwatch.xml", rules=sc_rules)
- cd = SingleInstanceCD(g, statechart)
- g.set_delta(MODEL_DELTA)
- eventloop = None
- def on_gui_event(event: str):
- eventloop.add_input(InputEvent(name=event, port="in", params=[], time_offset=duration(0)))
- eventloop.interrupt()
- import tkinter
- from tkinter.constants import NO
- from DigitalWatchGUI import DigitalWatchGUI
- tk = tkinter.Tk()
- tk.withdraw()
- topLevel = tkinter.Toplevel(tk)
- topLevel.resizable(width=NO, height=NO)
- topLevel.title("DWatch")
- gui = DigitalWatchGUI(topLevel)
- gui.controller.send_event = on_gui_event
- def on_big_step(output):
- for e in output:
- # print("out:", e.name)
- # the output event names happen to be functions on our GUI controller:
- method = getattr(gui.controller, e.name)
- method()
- eventloop = EventLoop(cd, TkInterImplementation(tk), on_big_step)
- eventloop.start()
- tk.mainloop()
- if __name__ == '__main__':
- main()
|