def __init__(self, editor): self._ref_all_transp = False conf = Utils.createAndReadConfig('Explorer') self.importExplorers(conf) # Create clipboards for all registered nodes self.clipboards = {'global': ExplorerNodes.GlobalClipper()} for Clss, info in ExplorerNodes.explorerNodeReg.items(): Clip = info['clipboard'] if type(Clip) is ClassType: self.clipboards[Clss.protocol] = Clip( self.clipboards['global']) # Root node and transports self.boaRoot = ExplorerNodes.RootNode('Boa Constructor') self.openEditorFiles = \ ExplorerNodes.nodeRegByProt['boa.open-models'](editor, self.boaRoot) self.transports = ExplorerNodes.ContainerNode('Transport', EditorHelper.imgFolder) self.transports.entriesByProt = {} self.transports.bold = True if ExplorerNodes.all_transports is None: ExplorerNodes.all_transports = self.transports self._ref_all_transp = True self.recentFiles = ExplorerNodes.MRUCatNode(self.clipboards, conf, None, self.transports, self) self.bookmarks = ExplorerNodes.BookmarksCatNode( self.clipboards, conf, None, self.transports, self) self.pluginNodes = [ ExplorerNodes.nodeRegByProt[prot](self.clipboards['file'], None, self.bookmarks) for prot in ExplorerNodes.explorerRootNodesReg ] self.preferences = \ ExplorerNodes.nodeRegByProt['boa.prefs.group'](self.boaRoot) assert self.clipboards.has_key('file'), _( 'File system transport must be loaded') # root level of the tree self.boaRoot.entries = [ self.openEditorFiles, self.recentFiles, self.bookmarks, self.transports ] + self.pluginNodes + [self.preferences] # Populate transports with registered node categories # Protocol also has to be defined in the explorer section of the config transport_order = eval(conf.get('explorer', 'transportstree'), {}) for name in transport_order: for Clss in ExplorerNodes.explorerNodeReg.keys(): if Clss.protocol == name: Cat = ExplorerNodes.explorerNodeReg[Clss]['category'] if not Cat: break Clip = ExplorerNodes.explorerNodeReg[Clss]['clipboard'] if type(Clip) == type(''): clip = self.clipboards[Clip] elif self.clipboards.has_key(Clss.protocol): clip = self.clipboards[Clss.protocol] else: clip = None confSect, confItem = ExplorerNodes.explorerNodeReg[Clss][ 'confdef'] if conf.has_option(confSect, confItem): try: cat = Cat(clip, conf, None, self.bookmarks) self.transports.entries.append(cat) self.transports.entriesByProt[ Cat.itemProtocol] = cat except Exception, error: wx.LogWarning(_('Transport category %s not added: %s')\ %(Cat.defName, str(error))) break