def writeOpmlCommand(self, event=None): '''Save a Leo outline to an OPMLfile.''' c = self.c if g.app.disableSave: g.es("Save commands disabled", color="purple") return # Make sure we never pass None to the ctor. if not c.mFileName: c.frame.title = "" initialfile = g.ensure_extension(c.mFileName, ".opml") # set local fileName, _not_ c.mFileName fileName = g.app.gui.runSaveFileDialog(initialfile=initialfile, title="Write OPML", filetypes=[("OPML files", "*.opml")], defaultextension=".opml") c.bringToFront() if fileName: fileName = g.ensure_extension(fileName, ".opml") c.opmlCommands.writeFile(fileName)
def writeOpmlCommand(self, event=None): """Save a Leo outline to an OPMLfile.""" c = self.c if g.app.disableSave: g.es("Save commands disabled", color="purple") return # Make sure we never pass None to the ctor. if not c.mFileName: c.frame.title = "" initialfile = g.ensure_extension(c.mFileName, ".opml") # set local fileName, _not_ c.mFileName fileName = g.app.gui.runSaveFileDialog( initialfile=initialfile, title="Write OPML", filetypes=[("OPML files", "*.opml")], defaultextension=".opml" ) c.bringToFront() if fileName: fileName = g.ensure_extension(fileName, ".opml") c.opmlCommands.writeFile(fileName)
def saveAs(self, event=None, fileName=None): """Save a Leo outline to a file with a new filename.""" c = self p = c.p # Do this now: w may go away. w = g.app.gui.get_focus(c) inBody = g.app.gui.widget_name(w).startswith('body') if inBody: p.saveCursorAndScroll() if g.app.disableSave: g.es("save commands disabled", color="purple") return c.init_error_dialogs() # 2013/09/28: add fileName keyword arg for leoBridge scripts. if fileName: c.frame.title = g.computeWindowTitle(fileName) c.mFileName = fileName # Make sure we never pass None to the ctor. if not c.mFileName: c.frame.title = "" if not fileName: fileName = ''.join(c.k.givenArgs) if not fileName: fileName = g.app.gui.runSaveFileDialog( c, initialfile=c.mFileName, title="Save As", filetypes=[ ("Leo files", "*.leo *.db"), ], defaultextension=g.defaultLeoFileExtension(c)) c.bringToFront() if fileName: # Fix bug 998090: save file as doesn't remove entry from open file list. if c.mFileName: g.app.forgetOpenFile(c.mFileName) # Don't change mFileName until the dialog has suceeded. c.mFileName = g.ensure_extension(fileName, g.defaultLeoFileExtension(c)) # Part of the fix for https://bugs.launchpad.net/leo-editor/+bug/1194209 c.frame.title = title = c.computeWindowTitle(c.mFileName) c.frame.setTitle(title) # 2013/08/04: use c.computeWindowTitle. c.openDirectory = c.frame.openDirectory = g.os_path_dirname( c.mFileName) # Bug fix in 4.4b2. # Calls c.clearChanged() if no error. if g.app.qt_use_tabs and hasattr(c.frame, 'top'): c.frame.top.leo_master.setTabName(c, c.mFileName) c.fileCommands.saveAs(c.mFileName) g.app.recentFilesManager.updateRecentFiles(c.mFileName) g.chdir(c.mFileName) # Done in FileCommands.saveAs. # c.redraw_after_icons_changed() c.raise_error_dialogs(kind='write') # *Safely* restore focus, without using the old w directly. if inBody: c.bodyWantsFocus() p.restoreCursorAndScroll() else: c.treeWantsFocus()
def saveAs(self, event=None, fileName=None): '''Save a Leo outline to a file with a new filename.''' c = self; p = c.p # Do this now: w may go away. w = g.app.gui.get_focus(c) inBody = g.app.gui.widget_name(w).startswith('body') if inBody: p.saveCursorAndScroll() if g.app.disableSave: g.es("save commands disabled", color="purple") return c.init_error_dialogs() # 2013/09/28: add fileName keyword arg for leoBridge scripts. if fileName: c.frame.title = g.computeWindowTitle(fileName) c.mFileName = fileName # Make sure we never pass None to the ctor. if not c.mFileName: c.frame.title = "" if not fileName: fileName = ''.join(c.k.givenArgs) if not fileName: fileName = g.app.gui.runSaveFileDialog(c, initialfile=c.mFileName, title="Save As", filetypes=[g.fileFilters('LEOFILES')], defaultextension=g.defaultLeoFileExtension(c)) c.bringToFront() if fileName: # Fix bug 998090: save file as doesn't remove entry from open file list. if c.mFileName: g.app.forgetOpenFile(c.mFileName) # Don't change mFileName until the dialog has suceeded. c.mFileName = g.ensure_extension(fileName, g.defaultLeoFileExtension(c)) # Part of the fix for https://bugs.launchpad.net/leo-editor/+bug/1194209 c.frame.title = title = c.computeWindowTitle(c.mFileName) c.frame.setTitle(title) # 2013/08/04: use c.computeWindowTitle. c.openDirectory = c.frame.openDirectory = g.os_path_dirname(c.mFileName) # Bug fix in 4.4b2. # Calls c.setChanged(False) if no error. if g.app.qt_use_tabs and hasattr(c.frame, 'top'): c.frame.top.leo_master.setTabName(c, c.mFileName) c.fileCommands.saveAs(c.mFileName) g.app.recentFilesManager.updateRecentFiles(c.mFileName) g.chdir(c.mFileName) # Done in FileCommands.saveAs. # c.redraw_after_icons_changed() c.raise_error_dialogs(kind='write') # *Safely* restore focus, without using the old w directly. if inBody: c.bodyWantsFocus() p.restoreCursorAndScroll() else: c.treeWantsFocus()
def saveTo(self, event=None, fileName=None, silent=False): """Save a Leo outline to a file, leaving the file associated with the Leo outline unchanged.""" c = self p = c.p # Do this now: w may go away. w = g.app.gui.get_focus(c) inBody = g.app.gui.widget_name(w).startswith('body') if inBody: p.saveCursorAndScroll() if g.app.disableSave: g.es("save commands disabled", color="purple") return c.init_error_dialogs() # Add fileName keyword arg for leoBridge scripts. if not fileName: # set local fileName, _not_ c.mFileName fileName = ''.join(c.k.givenArgs) if not fileName: fileName = g.app.gui.runSaveFileDialog( c, initialfile=c.mFileName, title="Save To", filetypes=[ ("Leo files", "*.leo *.db"), ], defaultextension=g.defaultLeoFileExtension(c)) c.bringToFront() if fileName: fileName = g.ensure_extension(fileName, g.defaultLeoFileExtension(c)) c.fileCommands.saveTo(fileName, silent=silent) g.app.recentFilesManager.updateRecentFiles(fileName) g.chdir(fileName) c.raise_error_dialogs(kind='write') # *Safely* restore focus, without using the old w directly. if inBody: c.bodyWantsFocus() p.restoreCursorAndScroll() else: c.treeWantsFocus() c.outerUpdate()
def saveTo(self, event=None, fileName=None): '''Save a Leo outline to a file, leaving the file associated with the Leo outline unchanged.''' c = self; p = c.p # Do this now: w may go away. w = g.app.gui.get_focus(c) inBody = g.app.gui.widget_name(w).startswith('body') if inBody: p.saveCursorAndScroll() if g.app.disableSave: g.es("save commands disabled", color="purple") return c.init_error_dialogs() # Add fileName keyword arg for leoBridge scripts. if not fileName: # set local fileName, _not_ c.mFileName fileName = ''.join(c.k.givenArgs) if not fileName: fileName = g.app.gui.runSaveFileDialog(c, initialfile=c.mFileName, title="Save To", filetypes=[g.fileFilters('LEOFILES')], defaultextension=g.defaultLeoFileExtension(c)) c.bringToFront() if fileName: fileName = g.ensure_extension(fileName, g.defaultLeoFileExtension(c)) c.fileCommands.saveTo(fileName) g.app.recentFilesManager.updateRecentFiles(fileName) g.chdir(fileName) c.raise_error_dialogs(kind='write') # *Safely* restore focus, without using the old w directly. if inBody: c.bodyWantsFocus() p.restoreCursorAndScroll() else: c.treeWantsFocus() c.outerUpdate()
def save(self, event=None, fileName=None): '''Save a Leo outline to a file.''' if False and g.app.gui.guiName() == 'curses': g.trace('===== Save disabled in curses gui =====') return c = self p = c.p # Do this now: w may go away. w = g.app.gui.get_focus(c) inBody = g.app.gui.widget_name(w).startswith('body') if inBody: p.saveCursorAndScroll() if g.unitTesting and g.app.unitTestDict.get('init_error_dialogs') is not None: # A kludge for unit testing: # indicated that c.init_error_dialogs and c.raise_error_dialogs # will be called below, *without* actually saving the .leo file. c.init_error_dialogs() c.raise_error_dialogs(kind='write') return if g.app.disableSave: g.es("save commands disabled", color="purple") return c.init_error_dialogs() # 2013/09/28: use the fileName keyword argument if given. # This supports the leoBridge. # Make sure we never pass None to the ctor. if fileName: c.frame.title = g.computeWindowTitle(fileName) c.mFileName = fileName if not c.mFileName: c.frame.title = "" c.mFileName = "" if c.mFileName: # Calls c.setChanged(False) if no error. g.app.syntax_error_files = [] c.fileCommands.save(c.mFileName) c.syntaxErrorDialog() else: root = c.rootPosition() if not root.next() and root.isAtEditNode(): # There is only a single @edit node in the outline. # A hack to allow "quick edit" of non-Leo files. # See https://bugs.launchpad.net/leo-editor/+bug/381527 fileName = None # Write the @edit node if needed. if root.isDirty(): c.atFileCommands.writeOneAtEditNode(root, toString=False, force=True) c.setChanged(False) else: fileName = ''.join(c.k.givenArgs) if not fileName: fileName = g.app.gui.runSaveFileDialog(c, initialfile=c.mFileName, title="Save", filetypes=[g.fileFilters('LEOFILES')], defaultextension=g.defaultLeoFileExtension(c)) c.bringToFront() if fileName: # Don't change mFileName until the dialog has suceeded. c.mFileName = g.ensure_extension(fileName, g.defaultLeoFileExtension(c)) c.frame.title = c.computeWindowTitle(c.mFileName) c.frame.setTitle(c.computeWindowTitle(c.mFileName)) # 2013/08/04: use c.computeWindowTitle. c.openDirectory = c.frame.openDirectory = g.os_path_dirname(c.mFileName) # Bug fix in 4.4b2. if g.app.qt_use_tabs and hasattr(c.frame, 'top'): c.frame.top.leo_master.setTabName(c, c.mFileName) c.fileCommands.save(c.mFileName) g.app.recentFilesManager.updateRecentFiles(c.mFileName) g.chdir(c.mFileName) # Done in FileCommands.save. # c.redraw_after_icons_changed() c.raise_error_dialogs(kind='write') # *Safely* restore focus, without using the old w directly. if inBody: c.bodyWantsFocus() p.restoreCursorAndScroll() else: c.treeWantsFocus()
def save(self, event=None, fileName=None): """ Save a Leo outline to a file, using the existing file name unless the fileName kwarg is given. kwarg: a file name, for use by scripts using Leo's bridge. """ c = self p = c.p # Do this now: w may go away. w = g.app.gui.get_focus(c) inBody = g.app.gui.widget_name(w).startswith('body') if inBody: p.saveCursorAndScroll() if g.app.disableSave: g.es("save commands disabled", color="purple") return c.init_error_dialogs() # 2013/09/28: use the fileName keyword argument if given. # This supports the leoBridge. # Make sure we never pass None to the ctor. if fileName: c.frame.title = g.computeWindowTitle(fileName) c.mFileName = fileName if not c.mFileName: c.frame.title = "" c.mFileName = "" if c.mFileName: # Calls c.clearChanged() if no error. g.app.syntax_error_files = [] c.fileCommands.save(c.mFileName) c.syntaxErrorDialog() else: root = c.rootPosition() if not root.next() and root.isAtEditNode(): # There is only a single @edit node in the outline. # A hack to allow "quick edit" of non-Leo files. # See https://bugs.launchpad.net/leo-editor/+bug/381527 fileName = None # Write the @edit node if needed. if root.isDirty(): c.atFileCommands.writeOneAtEditNode(root) c.clearChanged() # Clears all dirty bits. else: fileName = ''.join(c.k.givenArgs) if not fileName: fileName = g.app.gui.runSaveFileDialog( c, title="Save", filetypes=[ ("Leo files", "*.leo *.db"), ], defaultextension=g.defaultLeoFileExtension(c)) c.bringToFront() if fileName: # Don't change mFileName until the dialog has suceeded. c.mFileName = g.ensure_extension(fileName, g.defaultLeoFileExtension(c)) c.frame.title = c.computeWindowTitle(c.mFileName) c.frame.setTitle(c.computeWindowTitle(c.mFileName)) c.openDirectory = c.frame.openDirectory = g.os_path_dirname( c.mFileName) if hasattr(c.frame, 'top'): c.frame.top.leo_master.setTabName(c, c.mFileName) c.fileCommands.save(c.mFileName) g.app.recentFilesManager.updateRecentFiles(c.mFileName) g.chdir(c.mFileName) # FileCommands.save calls c.redraw_after_icons_changed() c.raise_error_dialogs(kind='write') # *Safely* restore focus, without using the old w directly. if inBody: c.bodyWantsFocus() p.restoreCursorAndScroll() else: c.treeWantsFocus()