def update(self, data=None):
        """Called whenever the curve list is updated. Make sure the curve editor list match the application curve list."""

        count = self._appCurveList.getCount()
        for i in range(count):
            inCurve = self._appCurveList.get(i)
            inTrajectory1d = inCurve.getTrajectory1d()
            try:
                outTrajectory1d = self.getTrajectory(i)
                areSameObject = PyUtils.sameObject(inTrajectory1d,
                                                   outTrajectory1d)
            except IndexError:
                outTrajectory1d = None
                areSameObject = False
            if not areSameObject:
                # Need to delete or insert
                # First, check how many curves we should delete
                delete = 1
                try:
                    while not PyUtils.sameObject(
                            inTrajectory1d, self.getTrajectory(i + delete)):
                        delete += 1
                except IndexError:
                    delete = 0

                if delete > 0:
                    # Delete the specified controllers
                    self._removeCurveEditors(i, i + delete)
                else:
                    # Insert the specified controller
                    self._insertCurveEditor(i, inCurve)

        # Delete any remaining controllers
        self._removeCurveEditors(count)
        self.getParent().layout()
 def update(self, data = None):
     """Called whenever the curve list is updated. Make sure the curve editor list match the application curve list."""
     
     count = self._appCurveList.getCount()
     for i in range(count):
         inCurve = self._appCurveList.get(i)
         inTrajectory1d = inCurve.getTrajectory1d()
         try: 
             outTrajectory1d = self.getTrajectory(i)
             areSameObject = PyUtils.sameObject(inTrajectory1d, outTrajectory1d)
         except IndexError: 
             outTrajectory1d = None
             areSameObject = False        
         if not areSameObject:
             # Need to delete or insert
             # First, check how many curves we should delete
             delete = 1 
             try: 
                 while not PyUtils.sameObject( inTrajectory1d, self.getTrajectory(i+delete) ) :
                     delete += 1
             except IndexError:
                 delete = 0
         
             if delete > 0 :
                 # Delete the specified controllers
                 self._removeCurveEditors(i,i+delete)
             else :
                 # Insert the specified controller                                                        
                 self._insertCurveEditor(i, inCurve)
     
     # Delete any remaining controllers
     self._removeCurveEditors(count)    
     self.getParent().layout()
Ejemplo n.º 3
0
    def update(self, data=None):
        """Called whenever the tree is updated."""
        try:
            tree = self._infoTree
            rootItem = tree.GetRootItem()
            nodeData = tree.GetItemPyData(rootItem)
            snapshot = nodeData.getObject().getCurrentSnapshot()
        except AttributeError:
            return

        if self._activeTreeItemId != None:
            currentSnapshot = tree.GetItemPyData(self._activeTreeItemId)
            if PyUtils.sameObject(currentSnapshot, snapshot): return
            tree.SetItemBold(self._activeTreeItemId, False)

        # Look for the new item
        activeList = [tree.GetFirstChild(rootItem)[0]]
        while len(activeList) > 0:
            treeItemId = activeList.pop()
            if not treeItemId.IsOk(): continue
            object = tree.GetItemPyData(treeItemId).getObject()
            if PyUtils.sameObject(snapshot, object):
                self._activeTreeItemId = treeItemId
                tree.SetItemBold(treeItemId, True)
                return
            activeList.append(tree.GetFirstChild(treeItemId)[0])
            activeList.append(tree.GetNextSibling(treeItemId))
 def update(self, data = None):
     """Called whenever the tree is updated."""
     try: 
         tree = self._infoTree
         rootItem = tree.GetRootItem()
         nodeData = tree.GetItemPyData( rootItem )
         snapshot = nodeData.getObject().getCurrentSnapshot()
     except AttributeError: return
     
     if self._activeTreeItemId != None :
         currentSnapshot = tree.GetItemPyData( self._activeTreeItemId )
         if PyUtils.sameObject(currentSnapshot, snapshot) : return
         tree.SetItemBold( self._activeTreeItemId, False )
     
     # Look for the new item
     activeList = [tree.GetFirstChild(rootItem)[0]]
     while len(activeList) > 0 :
         treeItemId = activeList.pop()
         if not treeItemId.IsOk(): continue
         object = tree.GetItemPyData( treeItemId ).getObject()
         if PyUtils.sameObject(snapshot, object) :
             self._activeTreeItemId = treeItemId
             tree.SetItemBold( treeItemId, True )
             return
         activeList.append( tree.GetFirstChild(treeItemId)[0] )
         activeList.append( tree.GetNextSibling(treeItemId) )
Ejemplo n.º 5
0
    def update(self, object):
        """Adjusts the node's _subTreeItemIds list so that it matches an input object list.
        TreeItemId s will be deleted or inserted into _subTreeItemIds based on its current content and
        that of the input object list."""

        count = self._member.getCount(object)
        for i in range(count):
            inObject = self._member.getObject(object, i)
            try:
                outObject = self.getObject(i)
                areSameObject = PyUtils.sameObject(inObject, outObject)
            except IndexError:
                outObject = None
                areSameObject = False
            if not areSameObject:
                # Need to delete or insert
                # First, check how many objects we should delete
                delete = 1
                try:
                    while not PyUtils.sameObject(inObject,
                                                 self.getObject(i + delete)):
                        delete += 1
                except IndexError:
                    delete = 0

                if delete > 0:
                    # Delete the specified objects
                    self.removeChildren(i, i + delete)
                else:
                    # Insert the specified object
                    self.insertChild(i, inObject)

        # Delete any remaining objects
        self.removeChildren(count)
    def update(self, object):
        """Adjusts the node's _subTreeItemIds list so that it matches an input object list.
        TreeItemId s will be deleted or inserted into _subTreeItemIds based on its current content and
        that of the input object list."""

        count = self._member.getCount(object)
        for i in range(count):
            inObject = self._member.getObject(object,i)
            try: 
                outObject = self.getObject(i)
                areSameObject = PyUtils.sameObject(inObject, outObject)
            except IndexError: 
                outObject = None
                areSameObject = False        
            if not areSameObject:
                # Need to delete or insert
                # First, check how many objects we should delete
                delete = 1 
                try: 
                    while not PyUtils.sameObject( inObject, self.getObject(i+delete) ) :
                        delete += 1
                except IndexError:
                    delete = 0
            
                if delete > 0 :
                    # Delete the specified objects
                    self.removeChildren(i,i+delete)
                else :
                    # Insert the specified object                                                        
                    self.insertChild(i, inObject)
        
        # Delete any remaining objects
        self.removeChildren(count)
Ejemplo n.º 7
0
    def saveCharacterState(self, event = None):
        """Saves the selected character state"""
        
        controller = self._getSelectedController()
        if controller is None : return
        app = wx.GetApp()
        character = controller.getCharacter()
        
        saveNumber = self._saveNumber 
        if PyUtils.sameObject( self._lastSave[0], controller ) :
            if self._lastSave[1] is not None :
                saveNumber = self._lastSave[1]

        controllerName = controller.getName()
        dialogTitle = "Save Character State for %s" % controllerName
        fileName = "%sState_%d.rs" % (controllerName, saveNumber)
        
        dialog = wx.FileDialog(self, dialogTitle, self._dirName, fileName, "*.rs", wx.SAVE | wx.OVERWRITE_PROMPT )
        dialog.CenterOnScreen()
        if dialog.ShowModal() == wx.ID_OK:
            if saveNumber != self._saveNumber:
                self._lastSave = (None, None, None)
            else:
                self._lastSave = (controller, None, self._saveNumber)
                self._saveNumber += 1
            fileName=dialog.GetFilename()
            self._dirName=dialog.GetDirectory()
            pathName = os.path.join(self._dirName,fileName)
            stateArray = Core.ReducedCharacterStateArray()
            if controller.getStance() == Core.RIGHT_STANCE:
                character.getReverseStanceState(stateArray)
            else:  
                character.getState(stateArray)
            character.saveReducedStateToFile( str(pathName), stateArray )
        dialog.Destroy()
Ejemplo n.º 8
0
    def saveController(self, event = None):
        """Save the currently selected controller"""
        controller = self._getSelectedController()
        if controller is None : return
        
        saveNumber = self._saveNumber
        if PyUtils.sameObject( self._lastSave[0], controller ) :
            if self._lastSave[2] is not None :
                saveNumber = self._lastSave[2]

        controllerName = controller.getName()
        dialogTitle = "Save %s Controller" % controllerName
        fileName = "%s_%d.py" % (controllerName, saveNumber)
        
        dialog = wx.FileDialog(self, dialogTitle, self._dirName, fileName, "*.py", wx.SAVE | wx.OVERWRITE_PROMPT )
        dialog.CenterOnScreen()
        if dialog.ShowModal() == wx.ID_OK:
            if saveNumber != self._saveNumber:
                self._lastSave = (None, None, None)
            else:
                self._lastSave = (controller, self._saveNumber, None)
                self._saveNumber += 1
            fileName=dialog.GetFilename()
            self._dirName=dialog.GetDirectory()
            pathName = os.path.join(self._dirName,fileName)
            file = open(pathName,'w')
            file.write( "from App.Proxys import *\n\ndata = %s" % PyUtils.fancify( PyUtils.serialize(controller)) )
            file.close()
        dialog.Destroy()
 def update(self, object):
     """Updates the node so that it contains the specified object."""
     subObject = self._member.getObject(object)
     try:
         currentObject = self.getObject() 
         if PyUtils.sameObject(currentObject, subObject) : return
     except AttributeError: pass
     nodeData = NodeData( self._member.name, subObject, self._tree, self._treeItemId, self._container )
Ejemplo n.º 10
0
 def update(self, object):
     """Updates the node so that it contains the specified object."""
     subObject = self._member.getObject(object)
     try:
         currentObject = self.getObject()
         if PyUtils.sameObject(currentObject, subObject): return
     except AttributeError:
         pass
     nodeData = NodeData(self._member.name, subObject, self._tree,
                         self._treeItemId, self._container)