Creates a FileChooserbutton that can pick new filenames. Fixes #699978
This commit is contained in:
@ -581,25 +581,61 @@ def _interact(proc_name, start_params):
|
|||||||
def get_value(self):
|
def get_value(self):
|
||||||
return self.get_active()
|
return self.get_active()
|
||||||
|
|
||||||
def FileSelector(default=""):
|
def FileSelector(default="", title=None):
|
||||||
# FIXME: should this be os.path.separator? If not, perhaps explain why?
|
# FIXME: should this be os.path.separator? If not, perhaps explain why?
|
||||||
if default and default.endswith("/"):
|
if default and default.endswith("/"):
|
||||||
selector = DirnameSelector
|
|
||||||
if default == "/": default = ""
|
if default == "/": default = ""
|
||||||
|
return DirnameSelector(default)
|
||||||
else:
|
else:
|
||||||
selector = FilenameSelector
|
return FilenameSelector(default, title=title)
|
||||||
return selector(default)
|
|
||||||
|
|
||||||
class FilenameSelector(gtk.FileChooserButton):
|
class FilenameSelector(gtk.HBox):
|
||||||
def __init__(self, default="", save_mode=False):
|
#gimpfu.FileChooserButton
|
||||||
gtk.FileChooserButton.__init__(self,
|
def __init__(self, default, save_mode=True, title=None):
|
||||||
_("Python-Fu File Selection"))
|
super(FilenameSelector, self).__init__()
|
||||||
self.set_action(gtk.FILE_CHOOSER_ACTION_OPEN)
|
if not title:
|
||||||
|
self.title = _("Python-Fu File Selection")
|
||||||
|
else:
|
||||||
|
self.title = title
|
||||||
|
self.save_mode = save_mode
|
||||||
|
box = self
|
||||||
|
self.entry = gtk.Entry()
|
||||||
|
image = gtk.Image()
|
||||||
|
image.set_from_stock(gtk.STOCK_FILE, gtk.ICON_SIZE_BUTTON)
|
||||||
|
self.button = gtk.Button()
|
||||||
|
self.button.set_image(image)
|
||||||
|
box.pack_start(self.entry)
|
||||||
|
box.pack_start(self.button)
|
||||||
|
self.button.connect("clicked", self.pick_file)
|
||||||
if default:
|
if default:
|
||||||
self.set_filename(default)
|
self.entry.set_text(default)
|
||||||
|
|
||||||
|
def show(self):
|
||||||
|
super(FilenameSelector, self).show()
|
||||||
|
self.button.show()
|
||||||
|
self.entry.show()
|
||||||
|
|
||||||
|
def pick_file(self, widget):
|
||||||
|
entry = self.entry
|
||||||
|
dialog = gtk.FileChooserDialog(
|
||||||
|
title=self.title,
|
||||||
|
action=(gtk.FILE_CHOOSER_ACTION_SAVE
|
||||||
|
if self.save_mode else
|
||||||
|
gtk.FILE_CHOOSER_ACTION_OPEN),
|
||||||
|
buttons=(gtk.STOCK_CANCEL,
|
||||||
|
gtk.RESPONSE_CANCEL,
|
||||||
|
gtk.STOCK_OPEN,
|
||||||
|
gtk.RESPONSE_OK)
|
||||||
|
)
|
||||||
|
dialog.show_all()
|
||||||
|
response = dialog.run()
|
||||||
|
if response == gtk.RESPONSE_OK:
|
||||||
|
entry.set_text(dialog.get_filename())
|
||||||
|
dialog.destroy()
|
||||||
|
|
||||||
def get_value(self):
|
def get_value(self):
|
||||||
return self.get_filename()
|
return self.entry.get_text()
|
||||||
|
|
||||||
|
|
||||||
class DirnameSelector(gtk.FileChooserButton):
|
class DirnameSelector(gtk.FileChooserButton):
|
||||||
def __init__(self, default=""):
|
def __init__(self, default=""):
|
||||||
@ -719,17 +755,22 @@ def _interact(proc_name, start_params):
|
|||||||
table.attach(label, 1, 2, i, i+1, xoptions=gtk.FILL)
|
table.attach(label, 1, 2, i, i+1, xoptions=gtk.FILL)
|
||||||
label.show()
|
label.show()
|
||||||
|
|
||||||
|
# Remove accelerator markers from tooltips
|
||||||
|
tooltip_text = desc.replace("_", "")
|
||||||
|
|
||||||
if pf_type in (PF_SPINNER, PF_SLIDER, PF_RADIO, PF_OPTION):
|
if pf_type in (PF_SPINNER, PF_SLIDER, PF_RADIO, PF_OPTION):
|
||||||
wid = _edit_mapping[pf_type](def_val, params[i][4])
|
wid = _edit_mapping[pf_type](def_val, params[i][4])
|
||||||
|
elif pf_type in (PF_FILE, PF_FILENAME):
|
||||||
|
wid = _edit_mapping[pf_type](def_val, title= "%s - %s" %
|
||||||
|
(proc_name, tooltip_text))
|
||||||
else:
|
else:
|
||||||
wid = _edit_mapping[pf_type](def_val)
|
wid = _edit_mapping[pf_type](def_val)
|
||||||
|
|
||||||
|
|
||||||
label.set_mnemonic_widget(wid)
|
label.set_mnemonic_widget(wid)
|
||||||
|
|
||||||
table.attach(wid, 2,3, i,i+1, yoptions=0)
|
table.attach(wid, 2,3, i,i+1, yoptions=0)
|
||||||
|
|
||||||
# Remove accelerator markers from tooltips
|
|
||||||
tooltip_text = desc.replace("_", "")
|
|
||||||
if pf_type != PF_TEXT:
|
if pf_type != PF_TEXT:
|
||||||
wid.set_tooltip_text(tooltip_text)
|
wid.set_tooltip_text(tooltip_text)
|
||||||
else:
|
else:
|
||||||
|
Reference in New Issue
Block a user