def addURI(self, uri): if self.getItemByURI(uri, self._d_root): return if isPyFileURI(uri): (ar, py) = splitPyFile(uri) item = self.getItemByURI("zip://"+ar, self._d_root) fitem = self.AppendItem(item, py) self.SetPyData(fitem, ("File", uri)) self.SetItemImage(fitem, self._bmp_module, wx.TreeItemIcon_Normal) self.SetItemImage(fitem, self._bmp_module, wx.TreeItemIcon_Expanded) elif isArchiveURI(uri): path = getArchive(uri) item = self.AppendItem(self._d_root, path) self.SetPyData(item, ("Archive",uri)) self.SetItemImage(item, self._bmp_class, wx.TreeItemIcon_Normal) self.SetItemImage(item, self._bmp_class_open, wx.TreeItemIcon_Expanded) else: raise Exception("Unkonw URI %s"%uri)
def deleteURI(self, uri): if isArchiveURI(uri): if not uri in self._archive_list.keys(): raise Exception("Unknown archive %s"%uri) aname = getArchive(uri) path = os.path.join(self._base_path, aname) os.unlink(path) del self._archive_list[uri] elif isPyFileURI(uri): (aname, fname) = splitPyFile(uri) if not "zip://"+aname in self._archive_list.keys(): raise Exception("Unknown archive zip://%s"%aname) archive = self._archive_list["zip://"+aname] if not fname in archive.getFileList("*.py"): raise Exception("Unknown file %s in zip://%s"%(fname, aname)) archive.deleteFile(fname) else: raise Exception("Invalid URI %s?"%uri)
def __init__(self, parent, ID): wx.TreeCtrl.__init__(self, parent, ID, size=wx.Size(-1,-1), style=wx.TR_HAS_BUTTONS|wx.TR_HIDE_ROOT|wx.TR_NO_LINES|wx.TR_FULL_ROW_HIGHLIGHT) self._d_imgs = wx.ImageList(16,16) self._bmp_class = self._d_imgs.Add( getArchiveBitmap() ) self._bmp_class_open = self._d_imgs.Add( getArchiveBitmap() ) self._bmp_module = self._d_imgs.Add( getPythonBitmap() ) self.SetImageList(self._d_imgs) self._d_model = Model() self._d_controller = Controller() self._d_mainframe = self._d_controller.getMainFrame() self._d_root = self.AddRoot("root") self.SetPyData(self._d_root, (None,None)) self._logger = self._d_controller.getLogger() #Add all archives: archives = self._d_model.openURI("zip://") for archive_uri in archives: uri_list = self._d_model.openURI(archive_uri) archive_name = getArchive(archive_uri) arch_item = self.AppendItem(self._d_root, archive_name) self.SetPyData(arch_item, ("Archive", archive_uri) ) self.SetItemImage(arch_item, self._bmp_class, wx.TreeItemIcon_Normal) self.SetItemImage(arch_item, self._bmp_class_open, wx.TreeItemIcon_Expanded) for file_uri in uri_list: file_name = getPyFile(file_uri) file_item = self.AppendItem(arch_item, file_name) self.SetPyData(file_item, ("File", file_uri)) self.SetItemImage(file_item, self._bmp_module, wx.TreeItemIcon_Normal) self.SetItemImage(file_item, self._bmp_module, wx.TreeItemIcon_Expanded) # FIXME self._d_mainframe.bindNewArch(self.NewArchive) # Events: self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelection) self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnActivate) self.Bind(wx.EVT_SET_FOCUS, self.OnFocus)
def saveURI(self, uri, data=""): # save "zip://archive-name.zip" will creat a new archive if isArchiveURI(uri): if uri in self._archive_list.keys(): return archive = getArchive(uri) path = os.path.join(self._base_path, archive) ZipFile(path,"w") self._archive_list[uri] = eDevModelArchive(path) # save "zip://archive-name.zip/path/to/python-file.py creates a new # python file with given content or overrides existing ones elif isPyFileURI(uri): self._logger.debug("save pyfile %s"%uri) (aname, fname) = splitPyFile(uri) try: archive = self._archive_list["zip://"+aname] except: raise Exception("Archive zip://&s not found"%aname) if not fname in archive.getFileList("*.py"): archive.createFile(fname, data) else: archive.writeFile(fname, data) else: raise Exception("Unable to write %s: Invalid URI?"%uri)