def setUp(): global ed from Vision.VPE import VisualProgramingEnvironment ed = VisualProgramingEnvironment( name='Vision', withShell=0, ) ed.master.update_idletasks() ed.configure(withThreads=0)
def setUp(): global ed ed = VisualProgramingEnvironment("test individual molkit nodes", withShell=0, visibleWidth=400, visibleHeight=300) ed.root.update() ed.configure(withThreads=0) ed.addLibraryInstance( molkitlib, 'MolKit.VisionInterface.MolKitNodes', 'molkitlib') ed.root.update()
def setUp(): global ed ed = VisualProgramingEnvironment("test individual molkit nodes", withShell=0, visibleWidth=400, visibleHeight=300) ed.root.update() ed.configure(withThreads=0) ed.addLibraryInstance(molkitlib, 'MolKit.VisionInterface.MolKitNodes', 'molkitlib') ed.root.update()
def setUp(): global ed from Vision.VPE import VisualProgramingEnvironment ed = VisualProgramingEnvironment(name='Vision', withShell=0,) ed.master.update_idletasks() ed.configure(withThreads=0)
class VisionCommand(MVCommand): def __init__(self, func=None): MVCommand.__init__(self, func) self.root = None self.lib = None # will point to pmvlib self.ed = None # VisualProgrammingEnvironment object def onExitFromViewer(self): if self.ed is None: return if len(self.ed.networks): self.vf.log("##") self.vf.log("## SAVING Vision Networks") self.vf.log("##") self.vf.log("self.browseCommands('visionCommands', commands=('vision',))") # no need to call the vision command because it has ben called # and loged int he Pmv session already #self.vf.log("self.vision()") self.vf.log("from NetworkEditor.net import Network") self.vf.log("self.vision.ed.deleteNetwork(self.vision.ed.networks['Network 0'])") self.vf.log("pmv = self") self.vf.log("self = pmv.vision.ed") from NetworkEditor.macros import MacroNetwork for netname, net in self.ed.networks.items(): if isinstance(net, MacroNetwork): continue # do not create any code if no nodes are present in this net if len(net.nodes) == 0: continue self.vf.log("##") self.vf.log("## Networks %s"%netname) self.vf.log("##") if net._modified: self.vf.log("masterNet = Network('%s')"%netname) self.vf.log("self.addNetwork(masterNet)") self.vf.log("masterNet.buildIcons()") self.vf.log("self.setNetwork(masterNet)") netsrc = net.getNetworkCreationSourceCode() for line in netsrc: self.vf.log(line) else: if net.filename: self.vf.log("self.loadNetwork('%s')"%net.filename) else: print 'WARNING: visionCommand: onExit: network %s has no filename'%netname self.vf.log("##") self.vf.log("## Networks %s End"%netname) self.vf.log("##\n\n") self.root.withdraw() self.vf.log("self = pmv") self.exit_cb() def exit_cb(self): """the original exit_cb() in simpleNE.py destroys the root, which we cannot do here. Hence, we need to re-implement the exit_cb() here """ ################# # PART I: this is the exit_cb() from Vision/VPE.py: ################# # we add attributes to node libraries. Upon exit, we clear these # attributes: for lib in self.ed.libraries.values(): self.ed.deleteLibrary(lib.name) ################# # PART II: this is the exit_cb() from NetworkEditor/simpleNE.py: ################# from NetworkEditor.macros import MacroNetwork for net in self.ed.networks.values(): if not isinstance(net, MacroNetwork): self.ed.deleteNetwork(net) self.root = None def onAddCmdToViewer(self): pass def interactiveExit_cb(self, event=None): from tkMessageBox import askyesno msg = askyesno("Quit","Are you sure you want to quit PMV?",parent = self.root) if msg == True: self.exit_cb() self.vf.GUI.quit_cb() def onAddNewCmd(self, cmd): # # we fire all Pmv nodes to publish the newly loaded command # if self.ed: # for net in self.ed.networks.values(): # for node in net.nodes: # if isinstance(node, PmvNode): # node.schedule_cb() # also, load command to export Pmv Sets to Vision self.vf.browseCommands( 'visionCommands', commands=['exportSets'], package='Pmv', topCommand=0) def doit(self): if self.root is None: self.root = Tkinter.Toplevel() self.root.withdraw() # the vision font must be decided in vision or _visionrc, not here anymore # if 'changeFont' in self.vf.commands.keys(): # currentFont = self.vf.changeFont.getCurrentFont() # self.ed = VisualProgramingEnvironment( # master=self.root, font=currentFont, withShell=0) # else: self.ed = VisualProgramingEnvironment(master=self.root, withShell=0) self.root.protocol("WM_DELETE_WINDOW", self.hide) self.ed.sourceFile(resourceFile='_visionrc') filemenu = self.ed.menuButtons['File'].menu filemenu.entryconfig(filemenu.index('Quit'),command = self.hide) # let Vision know which PMV instance runs it self.ed.vf = self.vf # add handle to Pmv library instance from Pmv.VisionInterface.PmvNodes import pmvlib self.lib = pmvlib # initialize the API between PMV and Vision self.vf.visionAPI.setEditor(self.ed) self.vf.visionAPI.setLibrary(self.lib) # add Pmv library to Vision self.ed.addLibraryInstance(pmvlib, 'Pmv.VisionInterface.PmvNodes', 'pmvlib') # add Standard library to Vision from Vision.StandardNodes import stdlib self.ed.addLibraryInstance(stdlib, 'Vision.StandardNodes', 'stdlib') # add MolKit library to Vision if needed if len(self.vf.Mols): from MolKit.VisionInterface.MolKitNodes import molkitlib self.ed.addLibraryInstance( molkitlib, 'MolKit.VisionInterface.MolKitNodes', 'molkitlib') # add molecule nodes to Pmv library if molecules were loaded in # Pmv before Vision was started for obj, name, kw in self.vf.visionAPI.objects: self.vf.visionAPI.addNodeToLibrary(obj, name, kw) # is ARTK running? if so, we need to add the library and nodes if hasattr(self.vf, 'art') and self.vf.art.visionAPI is not None: visionAPI = self.vf.art.visionAPI visionAPI.setEditor(self.ed) from ARViewer.VisionInterface.ARNodes import artlib visionAPI.setLibrary(artlib) visionAPI.ed.addLibraryInstance( artlib, 'ARTK.VisionInterface.ARNodes', 'artlib') # add nodes to ARTK library for obj, name, kw in visionAPI.objects: visionAPI.addNodeToLibrary(obj, name, kw) # and add link to ARViewer self.ed.art = self.vf.art elif self.vf.GUI.toolbarCheckbuttons['Vision']['Variable'].get() == 0 and self.root: self.root.withdraw() elif self.vf.GUI.toolbarCheckbuttons['Vision']['Variable'].get() == 1 and self.root: self.root.deiconify() ################################################################## # FIXME: # Workaround: currently, Vision would crash on some Windows2000 and SGI # when running multi-threaded. We turn MT off by default ################################################################## #if sys.platform == 'win32' or sys.platform == 'irix646': self.ed.configure(withThreads=0) def show(self, event=None): if self.root is None: self.doitWrapper() self.root.deiconify() self.vf.GUI.toolbarCheckbuttons['Vision']['Variable'].set(1) def hide(self, event=None): if self.root: self.root.withdraw() self.vf.GUI.toolbarCheckbuttons['Vision']['Variable'].set(0) def guiCallback(self): self.doitWrapper() def __call__(self, **kw): """None <- vision(**kw) starts the visual programming environment""" apply( self.doitWrapper, (), kw )
def doit(self): if self.root is None: self.root = Tkinter.Toplevel() self.root.withdraw() # the vision font must be decided in vision or _visionrc, not here anymore # if 'changeFont' in self.vf.commands.keys(): # currentFont = self.vf.changeFont.getCurrentFont() # self.ed = VisualProgramingEnvironment( # master=self.root, font=currentFont, withShell=0) # else: self.ed = VisualProgramingEnvironment(master=self.root, withShell=0) self.root.protocol("WM_DELETE_WINDOW", self.hide) self.ed.sourceFile(resourceFile='_visionrc') filemenu = self.ed.menuButtons['File'].menu filemenu.entryconfig(filemenu.index('Quit'),command = self.hide) # let Vision know which PMV instance runs it self.ed.vf = self.vf # add handle to Pmv library instance from Pmv.VisionInterface.PmvNodes import pmvlib self.lib = pmvlib # initialize the API between PMV and Vision self.vf.visionAPI.setEditor(self.ed) self.vf.visionAPI.setLibrary(self.lib) # add Pmv library to Vision self.ed.addLibraryInstance(pmvlib, 'Pmv.VisionInterface.PmvNodes', 'pmvlib') # add Standard library to Vision from Vision.StandardNodes import stdlib self.ed.addLibraryInstance(stdlib, 'Vision.StandardNodes', 'stdlib') # add MolKit library to Vision if needed if len(self.vf.Mols): from MolKit.VisionInterface.MolKitNodes import molkitlib self.ed.addLibraryInstance( molkitlib, 'MolKit.VisionInterface.MolKitNodes', 'molkitlib') # add molecule nodes to Pmv library if molecules were loaded in # Pmv before Vision was started for obj, name, kw in self.vf.visionAPI.objects: self.vf.visionAPI.addNodeToLibrary(obj, name, kw) # is ARTK running? if so, we need to add the library and nodes if hasattr(self.vf, 'art') and self.vf.art.visionAPI is not None: visionAPI = self.vf.art.visionAPI visionAPI.setEditor(self.ed) from ARViewer.VisionInterface.ARNodes import artlib visionAPI.setLibrary(artlib) visionAPI.ed.addLibraryInstance( artlib, 'ARTK.VisionInterface.ARNodes', 'artlib') # add nodes to ARTK library for obj, name, kw in visionAPI.objects: visionAPI.addNodeToLibrary(obj, name, kw) # and add link to ARViewer self.ed.art = self.vf.art elif self.vf.GUI.toolbarCheckbuttons['Vision']['Variable'].get() == 0 and self.root: self.root.withdraw() elif self.vf.GUI.toolbarCheckbuttons['Vision']['Variable'].get() == 1 and self.root: self.root.deiconify() ################################################################## # FIXME: # Workaround: currently, Vision would crash on some Windows2000 and SGI # when running multi-threaded. We turn MT off by default ################################################################## #if sys.platform == 'win32' or sys.platform == 'irix646': self.ed.configure(withThreads=0)
class VisionCommand(MVCommand): def __init__(self, func=None): MVCommand.__init__(self, func) self.root = None self.lib = None # will point to pmvlib self.ed = None # VisualProgrammingEnvironment object def onExitFromViewer(self): if self.ed is None: return if len(self.ed.networks): self.vf.log("##") self.vf.log("## Saving Vision networks") self.vf.log("##") self.vf.log( "self.browseCommands('visionCommands', commands=('vision',))") # no need to call the vision command because it has ben called # and loged int he Pmv session already #self.vf.log("self.vision()") self.vf.log("from NetworkEditor.net import Network") self.vf.log( "self.vision.ed.deleteNetwork(self.vision.ed.networks['Network 0'])" ) self.vf.log("pmv = self") self.vf.log("self = pmv.vision.ed") from NetworkEditor.macros import MacroNetwork for netname, net in self.ed.networks.items(): if isinstance(net, MacroNetwork): continue # do not create any code if no nodes are present in this net if len(net.nodes) == 0: continue self.vf.log("##") self.vf.log("## Networks %s" % netname) self.vf.log("##") if net._modified: self.vf.log("masterNet = Network('%s')" % netname) self.vf.log("self.addNetwork(masterNet)") self.vf.log("masterNet.buildIcons()") self.vf.log("self.setNetwork(masterNet)") netsrc = net.getNetworkCreationSourceCode() for line in netsrc: self.vf.log(line) else: if net.filename: self.vf.log("self.loadNetwork('%s')" % net.filename) else: print 'WARNING: visionCommand: onExit: network %s has no filename' % netname self.vf.log("##") self.vf.log("## Networks %s End" % netname) self.vf.log("##\n\n") self.root.withdraw() self.vf.log("self = pmv") self.vf.log("##") self.vf.log("## Vision networks are saved") self.vf.log("##") self.exit_cb() def exit_cb(self): """the original exit_cb() in simpleNE.py destroys the root, which we cannot do here. Hence, we need to re-implement the exit_cb() here """ ################# # PART I: this is the exit_cb() from Vision/VPE.py: ################# # we add attributes to node libraries. Upon exit, we clear these # attributes: for lib in self.ed.libraries.values(): self.ed.deleteLibrary(lib.name) ################# # PART II: this is the exit_cb() from NetworkEditor/simpleNE.py: ################# from NetworkEditor.macros import MacroNetwork for net in self.ed.networks.values(): if not isinstance(net, MacroNetwork): self.ed.deleteNetwork(net) self.root = None def onAddCmdToViewer(self): pass def interactiveExit_cb(self, event=None): from tkMessageBox import askyesno msg = askyesno("Quit", "Are you sure you want to quit PMV?", parent=self.root) if msg == True: self.exit_cb() self.vf.GUI.quit_cb() def doit(self): if self.root is None: self.root = Tkinter.Toplevel() self.root.withdraw() # the vision font must be decided in vision or _visionrc, not here anymore # if 'changeFont' in self.vf.commands.keys(): # currentFont = self.vf.changeFont.getCurrentFont() # self.ed = VisualProgramingEnvironment( # master=self.root, font=currentFont, withShell=0) # else: self.ed = VisualProgramingEnvironment(master=self.root, withShell=0) self.root.protocol("WM_DELETE_WINDOW", self.hide) if getResourceFolder() is None: self.ed.loadLibModule('Vision.StandardNodes') else: self.ed.sourceFile(resourceFile='_visionrc') self.ed.updateFastLibs() filemenu = self.ed.menuButtons['File'].menu filemenu.entryconfig(filemenu.index('Quit'), command=self.hide) # let Vision know which PMV instance runs it self.ed.vf = self.vf # add handle to Pmv library instance from Pmv.VisionInterface.PmvNodes import pmvlib self.lib = pmvlib # initialize the API between PMV and Vision self.vf.visionAPI.setEditor(self.ed) self.vf.visionAPI.setLibrary(self.lib) # add Pmv library to Vision self.ed.addLibraryInstance(pmvlib, 'Pmv.VisionInterface.PmvNodes', 'pmvlib') # add Standard library to Vision from Vision.StandardNodes import stdlib self.ed.addLibraryInstance(stdlib, 'Vision.StandardNodes', 'stdlib') # add MolKit library to Vision if needed if len(self.vf.Mols): from MolKit.VisionInterface.MolKitNodes import molkitlib self.ed.addLibraryInstance( molkitlib, 'MolKit.VisionInterface.MolKitNodes', 'molkitlib') # add molecule nodes to Pmv library if molecules were loaded in # Pmv before Vision was started for obj, name, kw in self.vf.visionAPI.objects: self.vf.visionAPI.addNodeToLibrary(obj, name, kw) # is ARTK running? if so, we need to add the library and nodes if hasattr(self.vf, 'art') and self.vf.art.visionAPI is not None: visionAPI = self.vf.art.visionAPI visionAPI.setEditor(self.ed) from ARViewer.VisionInterface.ARNodes import artlib visionAPI.setLibrary(artlib) visionAPI.ed.addLibraryInstance( artlib, 'ARTK.VisionInterface.ARNodes', 'artlib') # add nodes to ARTK library for obj, name, kw in visionAPI.objects: visionAPI.addNodeToLibrary(obj, name, kw) # and add link to ARViewer self.ed.art = self.vf.art elif self.vf.GUI.toolbarCheckbuttons['Vision']['Variable'].get( ) == 0 and self.root: self.root.withdraw() elif self.vf.GUI.toolbarCheckbuttons['Vision']['Variable'].get( ) == 1 and self.root: self.root.deiconify() ################################################################## # FIXME: # Workaround: currently, Vision would crash on some Windows2000 and SGI # when running multi-threaded. We turn MT off by default ################################################################## #if sys.platform == 'win32' or sys.platform == 'irix646': self.ed.configure(withThreads=0) def show(self, event=None): if self.root is None: self.doitWrapper() self.root.deiconify() self.vf.GUI.toolbarCheckbuttons['Vision']['Variable'].set(1) def hide(self, event=None): if self.root: self.root.withdraw() self.vf.GUI.toolbarCheckbuttons['Vision']['Variable'].set(0) def guiCallback(self): self.doitWrapper() def __call__(self, **kw): """None <- vision(**kw) starts the visual programming environment""" apply(self.doitWrapper, (), kw)
def doit(self): if self.root is None: self.root = Tkinter.Toplevel() self.root.withdraw() # the vision font must be decided in vision or _visionrc, not here anymore # if 'changeFont' in self.vf.commands.keys(): # currentFont = self.vf.changeFont.getCurrentFont() # self.ed = VisualProgramingEnvironment( # master=self.root, font=currentFont, withShell=0) # else: self.ed = VisualProgramingEnvironment(master=self.root, withShell=0) self.root.protocol("WM_DELETE_WINDOW", self.hide) if getResourceFolder() is None: self.ed.loadLibModule('Vision.StandardNodes') else: self.ed.sourceFile(resourceFile='_visionrc') self.ed.updateFastLibs() filemenu = self.ed.menuButtons['File'].menu filemenu.entryconfig(filemenu.index('Quit'), command=self.hide) # let Vision know which PMV instance runs it self.ed.vf = self.vf # add handle to Pmv library instance from Pmv.VisionInterface.PmvNodes import pmvlib self.lib = pmvlib # initialize the API between PMV and Vision self.vf.visionAPI.setEditor(self.ed) self.vf.visionAPI.setLibrary(self.lib) # add Pmv library to Vision self.ed.addLibraryInstance(pmvlib, 'Pmv.VisionInterface.PmvNodes', 'pmvlib') # add Standard library to Vision from Vision.StandardNodes import stdlib self.ed.addLibraryInstance(stdlib, 'Vision.StandardNodes', 'stdlib') # add MolKit library to Vision if needed if len(self.vf.Mols): from MolKit.VisionInterface.MolKitNodes import molkitlib self.ed.addLibraryInstance( molkitlib, 'MolKit.VisionInterface.MolKitNodes', 'molkitlib') # add molecule nodes to Pmv library if molecules were loaded in # Pmv before Vision was started for obj, name, kw in self.vf.visionAPI.objects: self.vf.visionAPI.addNodeToLibrary(obj, name, kw) # is ARTK running? if so, we need to add the library and nodes if hasattr(self.vf, 'art') and self.vf.art.visionAPI is not None: visionAPI = self.vf.art.visionAPI visionAPI.setEditor(self.ed) from ARViewer.VisionInterface.ARNodes import artlib visionAPI.setLibrary(artlib) visionAPI.ed.addLibraryInstance( artlib, 'ARTK.VisionInterface.ARNodes', 'artlib') # add nodes to ARTK library for obj, name, kw in visionAPI.objects: visionAPI.addNodeToLibrary(obj, name, kw) # and add link to ARViewer self.ed.art = self.vf.art elif self.vf.GUI.toolbarCheckbuttons['Vision']['Variable'].get( ) == 0 and self.root: self.root.withdraw() elif self.vf.GUI.toolbarCheckbuttons['Vision']['Variable'].get( ) == 1 and self.root: self.root.deiconify() ################################################################## # FIXME: # Workaround: currently, Vision would crash on some Windows2000 and SGI # when running multi-threaded. We turn MT off by default ################################################################## #if sys.platform == 'win32' or sys.platform == 'irix646': self.ed.configure(withThreads=0)