Cool, thanks. That was very informative.
On Nov 3, 6:55 am, "Edward K. Ream" <[EMAIL PROTECTED]> wrote:
> On Sun, Nov 2, 2008 at 7:03 PM, Jesse Aldridge <[EMAIL PROTECTED]> wrote:
> > Is it possible to do a "save as" with a parameter for the filename
> > from a script button?
>
> The answer to all "is it possible" questions is "yes" :-)
>
> There are at least three ways. All the following have been tested.
>
> I'll present my thinking in detail:
>
> 1. Cut and paste the relevant code from c.saveAs to your script.
>
> w = g.app.gui.get_focus(c)
> c.mFileName = g.ensure_extension(fileName, ".leo")
> c.frame.title = c.mFileName
> c.frame.setTitle(g.computeWindowTitle(c.mFileName))
> c.frame.openDirectory = g.os_path_dirname(c.mFileName) # Bug fix in 4.4b2.
> # Calls c.setChanged(False) if no error.
> c.fileCommands.saveAs(c.mFileName)
> c.updateRecentFiles(c.mFileName)
> g.chdir(c.mFileName)
> c.redraw()
> # c.redraw_after_icons_changed(all=True)
> c.widgetWantsFocusNow(w)
>
> 2. I dimly recall a discussion about adding arguments to minibuffer
> commands. Hmm, now I see a clue. It is c.k.givenArgs in the
> saveAsCode.
>
> fileName = ''.join(c.k.givenArgs) or g.app.gui.runSaveFileDialog(
> initialfile = c.mFileName,
> title="Save As",
> filetypes=[("Leo files", "*.leo")],
> defaultextension=".leo")
>
> And here is the comment in the leoKeys class:
>
> self.givenArgs = []
> # New in Leo 4.4.8: arguments specified after
> # the command name in k.simulateCommand.
>
> A little experimentation shows that this works:
>
> fileName = r'c:\prog\test\test2.leo'
> c.k.simulateCommand('save-file-as %s' % fileName)
>
> 3. Another way would be to temporarily override
> g.app.gui.runSaveFileDialog. The safe way to do this is:
>
> fileName = r'c:\prog\test\test3.leo'
>
> def myRun(*args,**keys):
> return fileName
>
> old = g.app.gui.runSaveFileDialog
> try:
> g.app.gui.runSaveFileDialog = myRun
> c.saveAs()
> finally:
> g.app.gui.runSaveFileDialog = old
>
> Edward
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"leo-editor" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/leo-editor?hl=en
-~----------~----~----~----~------~----~------~--~---