コード例 #1
0
 def exportGraph(self,fname=None,asString=0):
   try:
     if not asString:
       if not fname:
         fname = gui.getFilenameToSave()
         if fname == "":
             self.didSave = False
             return
     nodes = filter(lambda o: isinstance(o,node.Node),gui.manager.objects)
     nodes = map(lambda o: o.getExportData(), nodes)
     data = (nodes, node.connector.getExportData())
     data = cPickle.dumps(data)
     if asString:
         return data
     f = open(fname,"w")
     f.write(data)
     f.close()
     if fname != "scene.ariel":
         print "sketch saved to", fname
     # save filename for later, update title of window to reflect last saved name
     self.lastFilename = fname
     ofSetWindowTitle(self.lastFilename)
     self.didSave = True
   except:
     print "export failed."
     import traceback
     traceback.print_exc()
     gui.doPopupMessage("Export failed.")
コード例 #2
0
 def saveOver(self,fname=None,asString=0):
   #print "saveover:", self.lastFilename
   fname = self.lastFilename
   try:
     if not asString:
       if not fname:
         fname = gui.getFilenameToSave()
         if fname == "":
             return
     nodes = filter(lambda o: isinstance(o,node.Node),gui.manager.objects)
     nodes = map(lambda o: o.getExportData(), nodes)
     data = (nodes, node.connector.getExportData())
     data = cPickle.dumps(data)
     if asString:
         return data
     f = open(fname,"w")
     f.write(data)
     f.close()
     print "sketch saved to", fname
     self.lastFilename = fname
     ofSetWindowTitle(self.lastFilename)
     self.didSave = True
   except:
     print "export failed."
     import traceback
     traceback.print_exc()
     gui.doPopupMessage("Export failed.")
コード例 #3
0
ファイル: builder.py プロジェクト: spitschan/ARIEL_Builder
 def saveOver(self, fname=None, asString=0):
     #print "saveover:", self.lastFilename
     fname = self.lastFilename
     try:
         if not asString:
             if not fname:
                 fname = gui.getFilenameToSave()
                 if fname == "":
                     return
         nodes = filter(lambda o: isinstance(o, node.Node),
                        gui.manager.objects)
         nodes = map(lambda o: o.getExportData(), nodes)
         data = (nodes, node.connector.getExportData())
         data = cPickle.dumps(data)
         if asString:
             return data
         f = open(fname, "w")
         f.write(data)
         f.close()
         print "sketch saved to", fname
         self.lastFilename = fname
         ofSetWindowTitle(self.lastFilename)
         self.didSave = True
     except:
         print "export failed."
         import traceback
         traceback.print_exc()
         gui.doPopupMessage("Export failed.")
コード例 #4
0
ファイル: builder.py プロジェクト: spitschan/ARIEL_Builder
 def exportGraph(self, fname=None, asString=0):
     try:
         if not asString:
             if not fname:
                 fname = gui.getFilenameToSave()
                 if fname == "":
                     self.didSave = False
                     return
         nodes = filter(lambda o: isinstance(o, node.Node),
                        gui.manager.objects)
         nodes = map(lambda o: o.getExportData(), nodes)
         data = (nodes, node.connector.getExportData())
         data = cPickle.dumps(data)
         if asString:
             return data
         f = open(fname, "w")
         f.write(data)
         f.close()
         if fname != "scene.ariel":
             print "sketch saved to", fname
         # save filename for later, update title of window to reflect last saved name
         self.lastFilename = fname
         ofSetWindowTitle(self.lastFilename)
         self.didSave = True
     except:
         print "export failed."
         import traceback
         traceback.print_exc()
         gui.doPopupMessage("Export failed.")
コード例 #5
0
ファイル: builder.py プロジェクト: spitschan/ARIEL_Builder
 def runGraph(self, fname):
     args = ""
     if self.fullscreen.currentChoice == 1:
         args += " fullscreen"
     if os.system(sys.executable + " player.py " + fname + args):
         gui.doPopupMessage(
             "Scene exited abnormally.",
             "Check the Terminal window for additional error information.")
コード例 #6
0
 def doUndo(self):
     try:
         del(gui.undo.undoState[-1])
     except:
         pass
     state = gui.undo.undo()
     if not state:
         gui.doPopupMessage("There is no further undo information.")
         return
     self.loadGraph(state)
コード例 #7
0
ファイル: builder.py プロジェクト: spitschan/ARIEL_Builder
 def doUndo(self):
     try:
         del (gui.undo.undoState[-1])
     except:
         pass
     state = gui.undo.undo()
     if not state:
         gui.doPopupMessage("There is no further undo information.")
         return
     self.loadGraph(state)
コード例 #8
0
 def runGraph(self,fname):
     args = ""
     if self.fullscreen.currentChoice == 1:
         args += " fullscreen"
     if os.system(sys.executable+" player.py "+fname+args):
         gui.doPopupMessage("Scene exited abnormally.","Check the Terminal window for additional error information.")
コード例 #9
0
    def loadGraph(self, state=None):

      node.connector.isLoadingFromFile = 1
        
      try:
        if not state:
          fname = gui.getFilenameToOpen()
          self.lastFilename = fname
          if fname == "":
            return
          fm = open(fname)
          data = cPickle.load(fm)
          fm.close()
          
        else:
          data = cPickle.loads(state)
#        print "loading data"
#        print data
        nodeData, connectorData = data
        index = {}

        node.connector.clearAll()
        # filter out (delete) all existing nodes
        gui.manager.objects = filter(lambda f: not isinstance(f, node.Node),  gui.manager.objects)

        for n in nodeData:
            #print n
            name, inputs, outputs, params, layout = n
            basename = string.splitfields(string.split(name)[1],".")[1]
            classname = "node."+basename
            try:
                newNode = eval(classname + "()")
            except:
                #print "failed to load class",classname
                classname = basename
                #print "trying user scripts"
                for c in nodepallet.labelsToNodes.values():
                    # print "checking",c.__name__
                    if c.__name__ == classname:
                        #print "we have a match!"
                        newNode = c()
                        #print "class loaded"
            newNode.x, newNode.y, newNode.w, newNode.h = layout
            #print newNode
            newNode.setParameterDict(params)

            # if isinstance(newNode, node.Container):
            #     newNode.parseFile()

            #print inputs,outputs
            for i in inputs+outputs:
                index[i[1]] = (newNode,i[0])
        for conn in connectorData:
            f,t = conn
            fromNode, fromConn = index[f]
            toNode, toConn = index[t]
            fromConn = fromNode.getOutputByName(fromConn)
            #print "looking for",toConn,"in",toNode
            toConn = toNode.getInputByName(toConn)
            #print "connections",fromConn,toConn
            fromConn.connect(toConn)

        # is there a better spot for this?
        # change splitter's output type to match the current input type (if there is one)
        for n in gui.manager.objects:
            if isinstance(n, node.Splitter):
                if n.inputs[0]:
                    n.switchOutputClass(n.inputs[0].getParent())

      except:
        print "load failed."
        import traceback
        traceback.print_exc()
        gui.doPopupMessage("Load failed.","Please make sure you are trying to load a valid ARIEL scene.")

      node.connector.isLoadingFromFile = 0
      ofSetWindowTitle(self.lastFilename)
コード例 #10
0
ファイル: builder.py プロジェクト: spitschan/ARIEL_Builder
    def loadGraph(self, state=None):

        node.connector.isLoadingFromFile = 1

        try:
            if not state:
                fname = gui.getFilenameToOpen()
                self.lastFilename = fname
                if fname == "":
                    return
                fm = open(fname)
                data = cPickle.load(fm)
                fm.close()

            else:
                data = cPickle.loads(state)
#        print "loading data"
#        print data
            nodeData, connectorData = data
            index = {}

            node.connector.clearAll()
            # filter out (delete) all existing nodes
            gui.manager.objects = filter(
                lambda f: not isinstance(f, node.Node), gui.manager.objects)

            for n in nodeData:
                #print n
                name, inputs, outputs, params, layout = n
                basename = string.splitfields(string.split(name)[1], ".")[1]
                classname = "node." + basename
                try:
                    newNode = eval(classname + "()")
                except:
                    #print "failed to load class",classname
                    classname = basename
                    #print "trying user scripts"
                    for c in nodepallet.labelsToNodes.values():
                        # print "checking",c.__name__
                        if c.__name__ == classname:
                            #print "we have a match!"
                            newNode = c()
                            #print "class loaded"
                newNode.x, newNode.y, newNode.w, newNode.h = layout
                #print newNode
                newNode.setParameterDict(params)

                # if isinstance(newNode, node.Container):
                #     newNode.parseFile()

                #print inputs,outputs
                for i in inputs + outputs:
                    index[i[1]] = (newNode, i[0])
            for conn in connectorData:
                f, t = conn
                fromNode, fromConn = index[f]
                toNode, toConn = index[t]
                fromConn = fromNode.getOutputByName(fromConn)
                #print "looking for",toConn,"in",toNode
                toConn = toNode.getInputByName(toConn)
                #print "connections",fromConn,toConn
                fromConn.connect(toConn)

            # is there a better spot for this?
            # change splitter's output type to match the current input type (if there is one)
            for n in gui.manager.objects:
                if isinstance(n, node.Splitter):
                    if n.inputs[0]:
                        n.switchOutputClass(n.inputs[0].getParent())

        except:
            print "load failed."
            import traceback
            traceback.print_exc()
            gui.doPopupMessage(
                "Load failed.",
                "Please make sure you are trying to load a valid ARIEL scene.")

        node.connector.isLoadingFromFile = 0
        ofSetWindowTitle(self.lastFilename)