def OnViewTb(self, evt): """Toggles visibility of toolbar @note: On OSX there is a frame button for hidding the toolbar that is handled internally by the osx toolbar and not this handler. @param evt: Event fired that called this handler @type evt: wxMenuEvent """ if evt.GetId() == ID_VIEW_TOOL: size = self.GetSize() toolbar = self.GetToolBar() if _PGET('TOOLBAR', 'bool', False) or toolbar.IsShown(): _PSET('TOOLBAR', False) toolbar.Hide() if wx.Platform != '__WXMAC__': self.SetSize((size[0], size[1] - toolbar.GetSize()[1])) else: _PSET('TOOLBAR', True) toolbar.Show() if wx.Platform != '__WXMAC__': self.SetSize((size[0], size[1] + toolbar.GetSize()[1])) self.UpdateToolBar() self.SendSizeEvent() self.Refresh() self.Update() else: evt.Skip()
def DoOpen(self, evt, fname=u''): """ Do the work of opening a file and placing it in a new notebook page. @keyword fname: can be optionally specified to open a file without opening a FileDialog @type fname: string """ result = wx.ID_CANCEL try: e_id = evt.GetId() except AttributeError: e_id = evt if e_id == ID_OPEN: dlg = wx.FileDialog(self, _("Choose a File"), '', "", ''.join(syntax.GenFileFilters()), wx.OPEN | wx.MULTIPLE) dlg.SetFilterIndex(_PGET('FFILTER', 'int', 0)) result = dlg.ShowModal() _PSET('FFILTER', dlg.GetFilterIndex()) paths = dlg.GetPaths() dlg.Destroy() if result != wx.ID_OK: self.LOG('[mainw][info] Canceled Opening File') else: for path in paths: if _PGET('OPEN_NW', default=False): wx.GetApp().OpenNewWindow(path) else: dirname = util.GetPathName(path) filename = util.GetFileName(path) self.nb.OpenPage(dirname, filename) self.nb.GoCurrentPage() else: self.LOG("[mainw][info] CMD Open File: %s" % fname) filename = util.GetFileName(fname) dirname = util.GetPathName(fname) self.nb.OpenPage(dirname, filename)
def OnClose(self, evt=None): """Close this frame and unregister it from the applications mainloop. @note: Closing the frame will write out all session data to the users configuration directory. @keyword evt: Event fired that called this handler @type evt: wxMenuEvent @return: None on destroy, or True on cancel """ # Cleanup Controls _PSET('LAST_SESSION', self.nb.GetFileNames()) self._exiting = True controls = self.nb.GetPageCount() self.LOG("[main_evt][exit] Number of controls: %d" % controls) while controls: if controls <= 0: self.Close(True) # Force exit since there is a problem self.LOG("[main_evt][exit] Requesting Page Close") result = self.nb.ClosePage() if result == wx.ID_CANCEL: break controls -= 1 if result == wx.ID_CANCEL: self._exiting = False return True ### If we get to here there is no turning back so cleanup ### additional items and save user settings # Write out saved document information self.nb.DocMgr.WriteBook() syntax.SyntaxMgr().SaveState() # Save Shelf contents _PSET('SHELF_ITEMS', self._shelf.GetItemStack()) # Save Window Size/Position for next launch # XXX On wxMac the window size doesnt seem to take the toolbar # into account so destroy it so that the window size is accurate. if wx.Platform == '__WXMAC__' and self.GetToolBar(): self.GetToolBar().Destroy() _PSET('WSIZE', self.GetSizeTuple()) _PSET('WPOS', self.GetPositionTuple()) self.LOG("[main_evt] [exit] Closing editor at pos=%s size=%s" % \ (_PGET('WPOS', 'str'), _PGET('WSIZE', 'str'))) # Update profile profiler.AddFileHistoryToProfile(self.filehistory) profiler.Profile().Write(_PGET('MYPROFILE')) # Cleanup file history try: del self.filehistory except AttributeError: self.LOG("[main][exit][err] Trapped AttributeError OnExit") # Post exit notice to all aui panes panes = self._mgr.GetAllPanes() exit_evt = ed_event.MainWindowExitEvent(ed_event.edEVT_MAINWINDOW_EXIT, wx.ID_ANY) for pane in panes: wx.PostEvent(pane.window, exit_evt) # Finally close the window self.LOG("[main_info] Closing Main Frame") wx.GetApp().UnRegisterWindow(repr(self)) self.Destroy()