def gui_save_file(self, start_dir=None, default_name=None, types=[]):
"""Prompt the user to pick a filename to save"""
import gtk
if not start_dir:
start_dir = self._last_dir
dlg = gtk.FileChooserDialog("Save file as",
None,
gtk.FILE_CHOOSER_ACTION_SAVE,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_SAVE, gtk.RESPONSE_OK))
if start_dir and os.path.isdir(start_dir):
dlg.set_current_folder(start_dir)
if default_name:
dlg.set_current_name(default_name)
extensions = {}
for desc, ext in types:
ff = gtk.FileFilter()
ff.set_name(desc)
ff.add_pattern("*.%s" % ext)
extensions[desc] = ext
dlg.add_filter(ff)
res = dlg.run()
fname = dlg.get_filename()
ext = extensions[dlg.get_filter().get_name()]
if fname and not fname.endswith(".%s" % ext):
fname = "%s.%s" % (fname, ext)
dlg.destroy()
if res == gtk.RESPONSE_OK:
self._last_dir = os.path.dirname(fname)
return fname
else:
return None
评论列表
文章目录