From a5803c3a3e49d5d10e017a70c9e94d0545d59a09 Mon Sep 17 00:00:00 2001 From: pavet Date: Thu, 9 Sep 2004 15:33:37 +0000 Subject: Initial revision --- docs/examples/vl_isa.py | 140 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100755 docs/examples/vl_isa.py (limited to 'docs/examples/vl_isa.py') diff --git a/docs/examples/vl_isa.py b/docs/examples/vl_isa.py new file mode 100755 index 0000000..89c70fa --- /dev/null +++ b/docs/examples/vl_isa.py @@ -0,0 +1,140 @@ +#!/usr/bin/env python +""" very light isa hmi mockup +prog de test infrastructure ivy + mini ihm type isa """ + +import traceback, time, os, sys, string, getopt +from Tkinter import * +from ivycpy import * + +APPNAME = "vl_isa" + +def lprint(fmt,*arg): + print APPNAME + ": " + fmt % arg + +def usage(scmd): + lpathitem = string.split(scmd,'/') + fmt = '''Usage: %s [-h] [-b IVYBUS | --ivybus=IVYBUS] [-n APPNAME | --name=APPNAME] +where +\t-h provides the usage message; +\t-n APPNAME | --name=APPNAME +\t-b IVYBUS | --ivybus=IVYBUS allow to provide the IVYBUS string in the form +\t adresse:port eg. 127.255.255.255:2010 +''' + print fmt % lpathitem[-1] + +def oncxproc(connected): + if connected == IvyApplicationDisconnected : + lprint("an IvyApplication was Disconnected") + else: + lprint("an IvyApplication was Connected") + +def ondieproc(id): + lprint("we ask me to die with id [%d]", id ) + +class TopLevel(Tk) : + __single = 0 + def __init__(self,appname = "TopLevel"): + if TopLevel.__single != 0 : + lprint("TopLevel is singleton") + sys.exit(1) + __single = 1 + # the object is tk_root + Tk.__init__(self) + self.appname = appname + self.title(self.appname) + # Frame contenant heure et bouton quit + self.tkFheadpanel = Frame(self) + # Label hour + self.tkLhour = Label(self.tkFheadpanel,text="hh:mm:ss") + self.tkLhour.pack(padx=4 , pady=4 , side = LEFT) + # dummy button +## self.tkBdummy = Button(self.tkFheadpanel, +## text="dummy", bg='pink') +## self.tkBdummy.pack(padx=4 , pady=4, side = RIGHT) + + # button quit + self.tkBquit = Button(self.tkFheadpanel, + text="QUIT", bg='pink', command=self.quit) + self.tkBquit.pack(padx=4 , pady=4, side = RIGHT) + self.tkFheadpanel.pack(side=TOP) + + # Frame contenant un Label, un Text et un Scroller + self.tkFreceive_msg = Frame(self) + # label + self.tkLreceive_msg = Label(self.tkFreceive_msg, text="flyingonthebus") + self.tkLreceive_msg.pack(padx=4 , pady=4, + side=TOP, fill = BOTH, expand = YES) + # Text + self.tkTreceive_msg = Text(self.tkFreceive_msg, height=26, width=50) + # Scrollbar + self.tkSBreceive_scroller = Scrollbar( + self.tkFreceive_msg, + command = self.tkTreceive_msg.yview) + self.tkTreceive_msg.configure( + yscrollcommand = self.tkSBreceive_scroller.set) + + self.tkTreceive_msg.pack(padx=4 , pady=4, + side=LEFT, fill = BOTH, expand = YES) + self.tkSBreceive_scroller.pack(side=RIGHT, fill = Y) + self.tkFreceive_msg.pack(side=BOTTOM, fill = BOTH, expand = YES) + + def add_one_msg(self, smsg) : + self.tkTreceive_msg.insert(END, "%s\n" % smsg ) + + def onmsgproc(self,*arg) : + self.add_one_msg(string.join(arg,"")) + + def quit(self): + # cleanup action before detroying tk_root + lprint("doing IvyStop") + IvyStop() + lprint("doing destroy" ) + self.destroy() + lprint("after destroy") + lprint("done.") + +## def ontick(self): +## lprint("on tick method") +## IvySendMsg("testtk_tick") +## self.after(1000,self.ontick) + +# main prog +if __name__ == '__main__': + # setting some main variable + sivybus = "" + + # getting option + try: + optlist, left_args = getopt.getopt(sys.argv[1:],'hb:n:', ['ivybus=','name']) + except getopt.GetoptError: + # print help information and exit: + usage(sys.argv[0]) + sys.exit(2) + for o, a in optlist: + if o in ("-h", "--help"): + usage(sys.argv[0]) + sys.exit() + elif o in ("-b", "--ivybus"): + sivybus = a + elif o in ("-n","--name"): + APPNAME = a + if sivybus != "" : + sechoivybus = sivybus + elif os.environ.has_key("IVYBUS"): + sechoivybus = os.environ["IVYBUS"] + else: + sechoivybus = "ivydefault" + lprint("Ivy will broadcast on %s " , sechoivybus) + + # initializing ivy : isreadymsg + sisreadymsg = "[%s is ready]" % APPNAME + IvyInit(APPNAME, sisreadymsg, 1 , oncxproc, ondieproc ) + IvyStart(sivybus) + + # initializing top hmi part + mytoplevel = TopLevel("%s top window" % APPNAME) + + # doing suited binding + IvyBindMsg(mytoplevel.onmsgproc , "(.*)") + + mytoplevel.mainloop() -- cgit v1.1