def initUI( self ): """ in: nothing returns nothing """ # superclass initUI ListWindow.initUI( self ) # create systree, processlist, propertylist self.theSystemTree = SystemTree( self, self['SystemTreeFrame'] ) self.theEntityType = self.__getEntityType() self.theEntityList = EntityList( self, self['EntityListFrame'], self.theEntityType ) self.theEntityEditorList = EntityEditor( self, self['EntityEditorFrame'], self.theEntityType ) # add signal handlers self.addHandlers( { 'on_variable1_activate': self.__entitychooser_changed, 'on_process1_activate': self.__entitychooser_changed } ) self.theEntityList.changeDisplayedType( self.theEntityType ) self.selectEntity( [ME_ROOTID] ) self.update()
class EntityListTab(ListWindow): def __init__( self, aModelEditor, aRoot = 'top_frame' ): """ in: ModelEditor theModelEditor returns nothing """ ListWindow.__init__( self, aModelEditor, aRoot ) self.initUI() def initUI( self ): """ in: nothing returns nothing """ # superclass initUI ListWindow.initUI( self ) # create systree, processlist, propertylist self.theSystemTree = SystemTree( self, self['SystemTreeFrame'] ) self.theEntityType = self.__getEntityType() self.theEntityList = EntityList( self, self['EntityListFrame'], self.theEntityType ) self.theEntityEditorList = EntityEditor( self, self['EntityEditorFrame'], self.theEntityType ) # add signal handlers self.addHandlers( { 'on_variable1_activate': self.__entitychooser_changed, 'on_process1_activate': self.__entitychooser_changed } ) self.theEntityList.changeDisplayedType( self.theEntityType ) self.selectEntity( [ME_ROOTID] ) self.update() def setLastActiveComponent( self, aComponent ): self.theLastActiveComponent = aComponent self.updatePropertyList() def update( self, aType = None, aFullID = None ): #if self.theModelEditor.getMode() == ME_RUN_MODE: # self.theEntityEditorList.thePropertyList.update() # return if aType == DM_SYSTEM_TYPE: self.updateSystemTree( aFullID ) elif aType == DM_STEPPER_TYPE: self.updatePropertyList() elif aType == self.theEntityType: self.updateEntityList( aFullID ) elif aType == DM_VARIABLE_TYPE and self.theEntityType == DM_PROCESS_TYPE: self.updatePropertyList() elif aType == DM_PROPERTY_TYPE: self.updatePropertyList( aFullID ) else: self.updateSystemTree() def selectEntity( self, anEntityList ): aType = ecell.util.getTypeFromFullIDString ( anEntityList[0] ) if aType == DM_SYSTEM_TYPE: self.theLastActiveComponent = self.theSystemTree elif aType in [ DM_PROCESS_TYPE, DM_VARIABLE_TYPE ]: displayedType = self.__getEntityType() #self.theEntityList.aValue = self.theEntityEditorList.getValue() if aType != displayedType: self.theEntityList.changeDisplayedType( aType ) self.theLastActiveComponent = self.theEntityList else: raise Exception("Wrong type to select %s"% aType ) self.theLastActiveComponent.changeSelection( anEntityList ) self.theLastActiveComponent.selectByUser() def updateSystemTree ( self, aSystemFullID = None ): """ in: string aSystemFullID where changes happened """ if not self.exists(): return if aSystemFullID != None: self.theSystemTree.update ( aSystemFullID ) self.updateEntityList( aSystemFullID ) def updateEntityList ( self, aFullID = None ): """ in: string aFullID where changes happened """ if not self.exists(): return displayedFullID = self.theEntityList.getDisplayedSysID() systemTreeFullIDs = self.theSystemTree.getSelectedIDs() if len(systemTreeFullIDs) != 1: systemTreeFullID = None else: systemTreeFullID = systemTreeFullIDs[0] # check if new system is selected if displayedFullID != systemTreeFullID: self.theEntityList.setDisplayedSysID( systemTreeFullID ) elif displayedFullID == aFullID or aFullID == None: self.theEntityList.update( ) # check whether there were any changes in displayed data self.updatePropertyList( aFullID ) def updatePropertyList ( self, aFullID = None ): """ in: anID where changes happened """ if not self.exists(): return # get selected process or systemid selectedID = None selectedIDs = self.theLastActiveComponent.getSelectedIDs() if len(selectedIDs) == 1: selectedID = selectedIDs[0] else: selectedID = None # get displayed entity from propertylist propertyListEntity = self.theEntityEditorList.getDisplayedEntity() # check if selection was changed if propertyListEntity != selectedID : self.theEntityEditorList.setDisplayedEntity ( selectedID ) elif aFullID == selectedID or aFullID == None or aFullID[-4:] == "SIZE": self.theEntityEditorList.update() def changeEntityType( self ): self.theEntityType = self.__getEntityType() self.theEntityList.changeDisplayedType( self.theEntityType ) self.updateEntityList() # -- SIGNAL HANDLERS def deleted( self, *arg ): ListWindow.deleted( self, *arg ) self.theSystemTree.close() self.theEntityList.close() self.theEntityEditorList.close() self.theModelEditor.theEntityListWindowList.remove( self ) self.theModelEditor.updateWindows() return True def __entitychooser_changed( self, *args ): self.changeEntityType() def __getEntityType( self ): """ returns string type of entity chooser """ anIndex = self['EntityChooser'].get_history() return ( ecsconst.ENTITYTYPE_STRING_LIST[ ecsconst.VARIABLE ], ecsconst.ENTITYTYPE_STRING_LIST[ ecsconst.PROCESS ] )[ anIndex ]