def OpenPage(self, path, filename, quiet=False): """Open a File Inside of a New Page @param path: files base path @param filename: name of file to open @keyword quiet: Open/Switch to the file quietly if it is already open. """ path2file = os.path.join(path, filename) # Check if file needs to be opened # TODO: these steps could be combined together with some # refactoring of the _NeedOpen method. Requires extra # testing though to check for dependancies on current # behavior. if quiet and self.HasFileOpen(path2file): self.GotoPage(path2file) return elif not self._NeedOpen(path2file): return # Create new control to place text on if necessary self.GetTopLevelParent().Freeze() new_pg = True if self.GetPageCount(): if self.control.GetModify() or self.control.GetLength() or \ self.control.GetFileName() != u'': control = ed_stc.EditraStc(self, wx.ID_ANY) control.Hide() else: new_pg = False control = self.control else: control = ed_stc.EditraStc(self, wx.ID_ANY) control.Hide() # Open file and get contents result = False if os.path.exists(path2file): try: result = control.LoadFile(path2file) except Exception, msg: self.LOG("[ed_pages][err] Failed to open file %s\n" % path2file) self.LOG("[ed_pages][err] %s" % msg) # File could not be opened/read give up # Don't raise a dialog during a session load error as if the # dialog is shown before the mainwindow is ready it can cause # the app to freeze. if not self._ses_load: ed_mdlg.OpenErrorDlg(self, path2file, msg) control.GetDocument().ClearLastError() control.SetFileName('') # Reset the file name if new_pg: control.Destroy() self.GetTopLevelParent().Thaw() return
def OpenPage(self, path, filename): """Open a File Inside of a New Page @param path: files base path @param filename: name of file to open """ path2file = os.path.join(path, filename) # Check if file needs to be opened if not self._NeedOpen(path2file): return # Create new control to place text on if necessary self.GetTopLevelParent().Freeze() new_pg = True if self.GetPageCount(): if self.control.GetModify() or self.control.GetLength() or \ self.control.GetFileName() != u'': control = ed_stc.EditraStc(self, wx.ID_ANY) control.Hide() else: new_pg = False control = self.control else: control = ed_stc.EditraStc(self, wx.ID_ANY) control.Hide() # Open file and get contents result = False if os.path.exists(path2file): try: result = control.LoadFile(path2file) except Exception, msg: self.LOG("[ed_pages][err] Failed to open file %s\n" % path2file) self.LOG("[ed_pages][err] %s" % msg) # File could not be opened/read give up # Don't raise a dialog during a session load error as if the # dialog is shown before the mainwindow is ready it can cause # the app to freeze. if not self._ses_load: ed_mdlg.OpenErrorDlg(self, path2file, msg) control.GetDocument().ClearLastError() control.SetFileName('') # Reset the file name if new_pg: control.Destroy() self.GetTopLevelParent().Thaw() return