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 OnSaveAs(self, evt=None): selected = False while not selected: dlg = Dialogs.eDevSaveAsDialog(self, -1) if dlg.ShowModal() != wx.ID_OK: return uri = "zip://%s/%s" % dlg.getSelection() dlg.Destroy() if self._d_model.checkURI(uri): # FIXME Override? continue selected = True if not self._d_model.checkURI(uri): self._d_controller.DocumentSave(uri, self.GetText()) self._archive_tree.addURI(uri) else: self._d_controller.DocumentSave(uri, self.GetText()) self.setURI(uri) self._logger.debug("rename to " + uri) self._d_notebook.setPageTitleByURI(uri, getPyFile(uri))