diff options
author | pavet | 2004-09-09 15:33:37 +0000 |
---|---|---|
committer | pavet | 2004-09-09 15:33:37 +0000 |
commit | a5803c3a3e49d5d10e017a70c9e94d0545d59a09 (patch) | |
tree | 62fb7a35ca46bbefa2eb1a9e4266315ed1ba76de /docs/examples/testtk.py | |
parent | 23abb4b87c7e40ed259dd02f653516f60e55ade4 (diff) | |
download | ivycpy-vinit-a5803c3a3e49d5d10e017a70c9e94d0545d59a09.zip ivycpy-vinit-a5803c3a3e49d5d10e017a70c9e94d0545d59a09.tar.gz ivycpy-vinit-a5803c3a3e49d5d10e017a70c9e94d0545d59a09.tar.bz2 ivycpy-vinit-a5803c3a3e49d5d10e017a70c9e94d0545d59a09.tar.xz |
Initial revision
Diffstat (limited to 'docs/examples/testtk.py')
-rwxr-xr-x | docs/examples/testtk.py | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/docs/examples/testtk.py b/docs/examples/testtk.py new file mode 100755 index 0000000..13bb1f9 --- /dev/null +++ b/docs/examples/testtk.py @@ -0,0 +1,192 @@ +#!/usr/bin/env python +""" programme de test de ivycpy en mode boucle tk """ + +import traceback, time, os, sys, string, getopt +from Tkinter import * +from ivycpy import * + +IVYAPPNAME = "pytesttk" + +def lprint(fmt,*arg): + print IVYAPPNAME + ": " + fmt % arg + +def usage(scmd): + lpathitem = string.split(scmd,'/') + fmt = '''Usage: %s [-h] [-b IVYBUS | --ivybus=IVYBUS] +where +\t-h provides the usage message; +\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] + +global hellobindingid +hellobindingid = -1 + +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 Text et un Scroller + self.tkFreceive_msg = Frame(self) + # 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 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) + +def oncxproc(connected): + if connected == IvyApplicationDisconnected : + lprint("an IvyApplication was Disconnected") + else: + lprint("an IvyApplication was Connected") + +def ondieproc(id): + lprint("On die proc id=%d", id ) + +def onhelloproc(*larg): + sargs = string.join(larg,":") + sresult = "On <hello %s>, i reply <goodday %s>" % (larg[0], larg[0]) + mytoplevel.add_one_msg(sresult) + # lprint("[%s]" % sresult + IvySendMsg("goodday %s" % (larg[0])) + +def onmsgproc(*larg): + sresult = "On msg proc : arg number = %d , arglist = %s" % \ + (len(larg), string.join(larg,":")) + mytoplevel.add_one_msg(sresult) + + # abonnement selectif + +def oncmd(*larg): + global hellobindingid + lprint("hb =%d", hellobindingid) + lprint("cmd [%s] larg0=%s", string.join(larg,":"), larg[0]) + if larg[0] == 'bindhello' : + if hellobindingid == -1 : + hellobindingid = IvyBindMsg(onhelloproc,"^hello (.*)") + lprint("binding hello id = %d ", hellobindingid) + elif larg[0] == 'unbindhello' : + if hellobindingid != -1 : + lprint("unbinding hello id = %d ", hellobindingid) + IvyUnBindMsg(hellobindingid) + hellobindingid = -1 + elif larg[0] == 'getlist' : + sapplist = IvyGetApplicationList() + lprint("app list return %s" , sapplist) + for sapp in string.split(sapplist): + lprint("app name [%s] host [%s] ", + sapp, IvyGetApplicationHost(IvyGetApplication(sapp))) + lprint(IvyGetApplication(sapp)) + elif larg[0] == 'senddie' : + sapplist = IvyGetApplicationList() + lprint("app list return %s", sapplist) + for sapp in string.split(sapplist): + lprint("sending die to %s ", sapp) + IvySendDieMsg(IvyGetApplication(sapp)) + elif larg[0] == 'senderror' : + sapplist = IvyGetApplicationList() + lprint("app list return %s" , sapplist) + for sapp in string.split(sapplist): + lprint("sending error to %s " , sapp) + IvySendError(IvyGetApplication(sapp),0, + "error msg to %s from %s" % (sapp,IVYAPPNAME)) + # print "[%s]" % sresult + # IvySendMsg("a recu et renvoi [%s]" % sargs) + +def ontick(): + lprint("ontick") + IvySendMsg("testtk_tick") + +if __name__ == '__main__': + # initializing ivybus and isreadymsg + sivybus = "" + sisreadymsg = "[%s is ready]" % IVYAPPNAME + # getting option + try: + optlist, left_args = getopt.getopt(sys.argv[1:],'hb:', ['ivybus=']) + 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 + if sivybus != "" : + sechoivybus = sivybus + elif os.environ.has_key("IVYBUS"): + sechoivybus = os.environ["IVYBUS"] + else: + sechoivybus = "ivydefault" + lprint("Ivy will broadcast on %s " , sechoivybus) + + mytoplevel = TopLevel("%s top window" % IVYAPPNAME) + # myinterface = SocketInt(mytoplevel, delay = 2.0, iter = 5) + sisreadymsg = "%s is ready" % IVYAPPNAME + lprint("IvyApplicationConnected is %s " , IvyApplicationConnected) + lprint("IvyApplicationDisconnected is %s " , IvyApplicationDisconnected) + IvyInit(IVYAPPNAME, sisreadymsg, 1 , oncxproc, ondieproc ) + IvyStart(sivybus) + bindingid = IvyBindMsg(onmsgproc, "([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (.*)") # "(.*)") + # lprint("IvyBindMsg retourne %d" , bindingid ) + bindingid = IvyBindMsg(oncmd, "^\.(.*)") # "(.*)") + # lprint("IvyBindMsg retourne %d", bindingid) + + # timerid = IvyTimerRepeatAfter(10,1000,ontick) + # print("IvyTimerRepeatAfter retourne %d" % timerid + mytoplevel.after(1000,mytoplevel.ontick) + + lprint("tk mainloop") + mytoplevel.mainloop() + |