def createProject(self, *args):
self.getLang()
dialog = Gtk.FileChooserDialog("Please choose a folder", self, Gtk.FileChooserAction.SELECT_FOLDER, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, "Select", Gtk.ResponseType.OK))
response = dialog.run()
if response == Gtk.ResponseType.OK:
projectPath = dialog.get_filename()
self.projectPath = projectPath
with open(os.path.join(projectPath, '.pyide-project.json'), 'w+') as f:
defaultSettings = {
'path': projectPath,
'name': projectPath.split('/')[len(projectPath.split('/')) - 1],
'language': self.language
}
json.dump(defaultSettings, f, indent=4, sort_keys=True, separators=(',', ':'))
self.createMainFile()
os.execl(sys.executable, *([sys.executable]+sys.argv+[projectPath]))
dialog.destroy()
python类FileChooserDialog()的实例源码
def on_save_as_configuration(self, action, param):
dialog = Gtk.FileChooserDialog("Save Configuration As...", self.window,
Gtk.FileChooserAction.SAVE,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_SAVE, Gtk.ResponseType.OK))
dialog.set_filename(self.configFile)
self.add_filters(dialog)
response = dialog.run()
if response == Gtk.ResponseType.OK:
self.configFile = dialog.get_filename()
self.save_configuration(self.configFile)
dialog.destroy()
# noinspection PyUnusedLocal
def on_open_configuration(self, action, param):
dialog = Gtk.FileChooserDialog("Open Configuration...", self.window,
Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
dialog.set_filename(self.configFile)
self.add_filters(dialog)
response = dialog.run()
if response == Gtk.ResponseType.OK:
self.configFile = dialog.get_filename()
self.read_config()
if self.window:
self.window.close()
self.window = MainWindow(application=self, title="SBrick Controller", config=self.config)
self.window.present()
# self.save_configuration(self.configFile)
dialog.destroy()
def on_file(self, button):
dialog = Gtk.FileChooserDialog("Please choose a file", self,
Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
filter_csv = Gtk.FileFilter()
filter_csv.set_name("CSV Files")
filter_csv.add_pattern("*.csv")
dialog.add_filter(filter_csv)
response = dialog.run()
if response == Gtk.ResponseType.OK:
path = dialog.get_filename()
self.data = pd.read_csv(path)
self.verticalbox.remove(self.scrollable_treelist)
self.add_treeview()
dialog.destroy()
def on_file_clicked(self, widget):
# dialog = Gtk.FileChooserDialog("Please choose a file", self,
# Gtk.FileChooserAction.OPEN,
# (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
# Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
# response = dialog.run()
# if response == Gtk.ResponseType.OK:
# path = dialog.get_filename()
# # self.open_file.set_label("File Selected: %s" % os.path.basename(path))
# self.data = pd.read_csv(path)
# elif response == Gtk.ResponseType.CANCEL:
# print("Cancel clicked")
# dialog.destroy()
dialog = FileDialog(self)
# dialog.show_all()
response = dialog.run()
if response == Gtk.ResponseType.OK:
self.data = dialog.data
dialog.destroy()
def show_dialog(self, importing=False):
"""
Displays FileChooserDialog with ePub file filters and returns Gtk.ResponseType and filename string
:return (response, filename):
"""
dialog = Gtk.FileChooserDialog(_("Please choose a file"), self, Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
# Always start in user dir
dialog.set_current_folder(path.expanduser("~"))
# Add filters so only .epub files show
# TODO: Filter list for all conversion supported ebooks
self.__add_filters(dialog, importing)
response = dialog.run()
filename = dialog.get_filename()
dialog.destroy()
return response, filename
def file_open_cb(self, *v):
dialog = Gtk.FileChooserDialog(_("Open..."), self,
Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
dialog.set_default_response(Gtk.ResponseType.OK)
if dialog.run() == Gtk.ResponseType.OK:
filename = gu.decode_filename(dialog.get_filename())
try:
self.load_file(filename)
except Exception, e:
dialog.destroy()
m = Gtk.MessageDialog(self, Gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR,
Gtk.ButtonsType.CLOSE,
_("Loading file '%(filename)s' failed: %(msg)s") %
{'filename': filename, 'msg': e})
m.run()
m.destroy()
else:
dialog.destroy()
else:
dialog.destroy()
def add_file_task(self, dir_name=None):
'''??????, ?????????????'''
file_dialog = Gtk.FileChooserDialog(_('Choose Files..'),
self.app.window, Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OK, Gtk.ResponseType.OK))
file_dialog.set_modal(True)
file_dialog.set_select_multiple(True)
file_dialog.set_default_response(Gtk.ResponseType.OK)
response = file_dialog.run()
if response != Gtk.ResponseType.OK:
file_dialog.destroy()
return
source_paths = file_dialog.get_filenames()
file_dialog.destroy()
if source_paths:
self.upload_files(source_paths, dir_name)
def add_folder_task(self, dir_name=None):
'''??????, ??????????????'''
folder_dialog = Gtk.FileChooserDialog(_('Choose Folders..'),
self.app.window, Gtk.FileChooserAction.SELECT_FOLDER,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OK, Gtk.ResponseType.OK))
folder_dialog.set_modal(True)
folder_dialog.set_select_multiple(True)
folder_dialog.set_default_response(Gtk.ResponseType.OK)
folder_dialog.set_current_folder(Config.HOME_DIR)
response = folder_dialog.run()
if response != Gtk.ResponseType.OK:
folder_dialog.destroy()
return
source_paths = folder_dialog.get_filenames()
folder_dialog.destroy()
if source_paths:
self.upload_files(source_paths, dir_name)
def on_download_to_activated(self, menu_item):
'''????/??????????.'''
tree_paths = self.iconview.get_selected_items()
if not tree_paths:
return
dialog = Gtk.FileChooserDialog(_('Save to...'), self.app.window,
Gtk.FileChooserAction.SELECT_FOLDER,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OK, Gtk.ResponseType.OK))
response = dialog.run()
if response != Gtk.ResponseType.OK:
dialog.destroy()
return
dirname = dialog.get_filename()
dialog.destroy()
pcs_files = [self.get_pcs_file(p) for p in tree_paths]
self.app.blink_page(self.app.download_page)
self.app.download_page.add_tasks(pcs_files, dirname)
def get_filename(window, title="Open..."):
dialog = Gtk.FileChooserDialog(title,
window,
Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL,
Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN,
Gtk.ResponseType.OK))
dialog.set_default_response(Gtk.ResponseType.OK)
UiUtils._set_keyfile_filter(dialog)
response = dialog.run()
filename = None
if response == Gtk.ResponseType.OK:
filename = dialog.get_filename()
dialog.destroy()
return filename
def _save(self, widget, data):
chooser = Gtk.FileChooserDialog(title=None,action=Gtk.FileChooserAction.SAVE, buttons=(Gtk.STOCK_CANCEL,Gtk.ResponseType.CANCEL,Gtk.STOCK_OPEN,Gtk.ResponseType.OK))
response = chooser.run()
if response == Gtk.ResponseType.OK:
all = ['asm', 'hex', 'str']
filename = chooser.get_filename()
if data != 'all':
output = open(filename + '.' + data, 'wb')
content = self._get_content(data)
output.write(content)
output.close()
else:
for fmt in all:
output = open(filename + '.' + fmt, 'wb')
content = self._get_content(fmt)
output.write(content)
output.close()
chooser.destroy()
def on_open(self, action):
chooser = Gtk.FileChooserDialog(title="Open dot File",
action=Gtk.FileChooserAction.OPEN,
buttons=(Gtk.STOCK_CANCEL,
Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN,
Gtk.ResponseType.OK))
chooser.set_default_response(Gtk.ResponseType.OK)
chooser.set_current_folder(self.last_open_dir)
filter = Gtk.FileFilter()
filter.set_name("Graphviz dot files")
filter.add_pattern("*.dot")
chooser.add_filter(filter)
filter = Gtk.FileFilter()
filter.set_name("All files")
filter.add_pattern("*")
chooser.add_filter(filter)
if chooser.run() == Gtk.ResponseType.OK:
filename = chooser.get_filename()
self.last_open_dir = chooser.get_current_folder()
chooser.destroy()
self.open_file(filename)
else:
chooser.destroy()
def main(self):
dialog = Gtk.FileChooserDialog("Please choose a file", self.win,
Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL))
self.button1 = dialog.add_button('Add to playlist', Gtk.ResponseType.OK)
self.button2 = dialog.add_button('Play now', Gtk.ResponseType.OK)
self.button1.connect("clicked", self._button_clicked)
self.button2.connect("clicked", self._button_clicked)
dialog.set_select_multiple(True)
self.add_filters(dialog)
ret = None
response = dialog.run()
if response == Gtk.ResponseType.OK:
ret = (dialog.get_uris(), self.but)
dialog.destroy()
return ret
def save_as(self, widget):
self.window.set_sensitive(False)
chooser = Gtk.FileChooserDialog(title=None, action=Gtk.FileChooserAction.SAVE, buttons=(
Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_SAVE, Gtk.ResponseType.OK))
chooser.set_do_overwrite_confirmation(True)
title = self.name.split("/")[-1]
chooser.set_title("Save As: " + title)
response = chooser.run()
if response == Gtk.ResponseType.OK:
file = open(chooser.get_filename(), 'w')
self.name = chooser.get_filename()
text = self.text_buffer.get_text(self.text_buffer.get_start_iter(), self.text_buffer.get_end_iter(), False)
file.write(text)
file.close()
self.text_buffer.set_modified(False)
title = self.name.split("/")[-1]
self.window.set_title("Remarkable: " + title)
elif response == Gtk.ResponseType.CANCEL:
pass
chooser.destroy()
self.window.set_sensitive(True)
def save_html(self, data):
html = data
chooser = Gtk.FileChooserDialog("Export HTML", None, Gtk.FileChooserAction.SAVE,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OK, Gtk.ResponseType.OK))
html_filter = Gtk.FileFilter()
html_filter.set_name("HTML Files")
html_filter.add_pattern("*.html")
html_filter.add_pattern("*.htm")
chooser.set_do_overwrite_confirmation(True)
chooser.add_filter(html_filter)
response = chooser.run()
if response == Gtk.ResponseType.OK:
file_name = chooser.get_filename()
if not file_name.endswith(".html"):
file_name += ".html"
file = open(file_name, 'w')
soup = BeautifulSoup(html, "lxml")
file.write(soup.prettify())
file.close()
elif response == Gtk.ResponseType.CANCEL:
pass
chooser.destroy()
self.window.set_sensitive(True)
def on_file_clicked(self, widget):
dialog = Gtk.FileChooserDialog("Please choose a file", self.get_toplevel(),
Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
self.add_filters(dialog)
response = dialog.run()
if response == Gtk.ResponseType.OK:
print("Open clicked")
print("File selected: " + dialog.get_filename())
self.text_file.set_text(dialog.get_filename())
elif response == Gtk.ResponseType.CANCEL:
print("Cancel clicked")
dialog.destroy()
def on_folder_clicked(self, widget):
dialog = Gtk.FileChooserDialog("Please choose a folder", self.get_toplevel(),
Gtk.FileChooserAction.SELECT_FOLDER,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
"Select", Gtk.ResponseType.OK))
dialog.set_default_size(800, 400)
response = dialog.run()
if response == Gtk.ResponseType.OK:
print("Select clicked")
str1 = "Folder selected: " + dialog.get_filename()
print(str1)
self.fold_str = str1
self.text_folder.set_text(dialog.get_filename())
elif response == Gtk.ResponseType.CANCEL:
print("Cancel clicked")
dialog.destroy()
def on_file_clicked(self, widget):
dialog = Gtk.FileChooserDialog("Please choose a file", self,
Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
self.add_filters(dialog)
response = dialog.run()
if response == Gtk.ResponseType.OK:
print("Open clicked")
print("File selected: " + dialog.get_filename())
self.text_file.set_text(dialog.get_filename())
elif response == Gtk.ResponseType.CANCEL:
print("Cancel clicked")
dialog.destroy()
def on_folder_clicked(self, widget):
dialog = Gtk.FileChooserDialog("Please choose a folder", self,
Gtk.FileChooserAction.SELECT_FOLDER,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
"Select", Gtk.ResponseType.OK))
dialog.set_default_size(800, 400)
response = dialog.run()
if response == Gtk.ResponseType.OK:
print("Select clicked")
str1 = "Folder selected: " + dialog.get_filename()
print(str1)
self.fold_str = str1
self.text_folder.set_text(dialog.get_filename())
elif response == Gtk.ResponseType.CANCEL:
print("Cancel clicked")
dialog.destroy()
def force_save(self, content, name):
d = Gtk.FileChooserDialog("{}: {}".format(_("Save as"), name), self,
Gtk.FileChooserAction.SAVE,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_SAVE, Gtk.ResponseType.OK))
d.set_current_name(name)
d.set_default_size(int(width), int(height))
response = d.run()
if response == Gtk.ResponseType.OK:
if os.path.exists(d.get_filename()):
if self.do_decision(name): pass
else:
d.destroy()
return True
with open(d.get_filename(), 'w') as f:
f.write(content)
f.close()
d.destroy()
def import_bookmarks(self):
d = Gtk.FileChooserDialog(_("Import a HTML bookmark file"), self,
Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.ACCEPT))
d.set_default_size(int(width), int(height))
filter_html = Gtk.FileFilter()
filter_html.set_name("HTML files")
filter_html.add_mime_type("text/html")
d.add_filter(filter_html)
response = d.run()
if response == Gtk.ResponseType.ACCEPT:
filename = d.get_filename()
d.destroy()
return filename
d.destroy()
def gtk_open_file(parent, filter_=None):
"""Gtk open file dialog"""
dialog = Gtk.FileChooserDialog(
"Select image file", parent, Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.OK)
)
if filter_ is not None:
dialog.add_filter(filter_)
response = dialog.run()
if response != Gtk.ResponseType.OK:
is_ok, file_ = False, None
else:
is_ok = True
file_ = dialog.get_filename()
dialog.destroy()
return is_ok, file_
def on_folder_clicked(self):
Gtk.Window.__init__(self, title=_("Change working directory"))
dialog = Gtk.FileChooserDialog(_("Choose directory"), self,
Gtk.FileChooserAction.SELECT_FOLDER,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
_("Apply"), Gtk.ResponseType.OK))
dialog.set_default_size(800, 400)
response = dialog.run()
if response == Gtk.ResponseType.OK:
print(_("Select clicked"))
print(_("Folder selected: ") + dialog.get_filename())
self.selectedfolder = dialog.get_filename()
elif response == Gtk.ResponseType.CANCEL:
print(_("Cancel clicked"))
self.selectedfolder = cli.stdir
dialog.destroy()
def _on_file_clicked(self, widget, labelToUpdate, tab_name = "undefined"):
"""@brief Get file path from dialog."""
dialog = Gtk.FileChooserDialog("Please choose a file", None,
Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL,
Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
self._add_file_filters(dialog)
response = dialog.run()
if response == Gtk.ResponseType.OK:
labelToUpdate.set_text(dialog.get_filename())
elif response == Gtk.ResponseType.CANCEL:
labelToUpdate.set_text("")
if tab_name == "Machine translation":
self.mt_out_text = os.path.dirname(dialog.get_filename())
dialog.destroy()
def _on_dir_clicked(self, widget, labelToUpdate, command = ""):
"""@brief Get folder path from dialog."""
dialog = Gtk.FileChooserDialog("Please choose a directory", None,
Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL,
Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
self._add_dir_filters(dialog)
dialog.set_action(Gtk.FileChooserAction.SELECT_FOLDER)
response = dialog.run()
if response == Gtk.ResponseType.OK:
labelToUpdate.set_text(dialog.get_filename())
elif response == Gtk.ResponseType.CANCEL:
labelToUpdate.set_text("")
if "change output directory" in command:
self.output_directory = dialog.get_filename()
self.post_editing_output.set_text(self.output_directory)
self.evaluation_output.set_text(self.output_directory)
dialog.destroy()
if command == "change output directory and maybe create post edition table":
self._check_if_both_files_are_choosen_post_edition(None, "")
def select_image(self, button):
"""
Show a file chooser dialog and let the user to select an image.
"""
dialog = Gtk.FileChooserDialog(_('Please select an image'), self.window, Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
png_filter = Gtk.FileFilter()
png_filter.set_name("PNG files")
png_filter.add_mime_type("image/png")
png_filter.add_pattern("*.png")
dialog.add_filter(png_filter)
response = dialog.run()
if response == Gtk.ResponseType.OK:
self.break_config['image'] = dialog.get_filename()
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(self.break_config['image'], 16, 16, True)
self.img_break.set_from_pixbuf(pixbuf)
elif response == Gtk.ResponseType.CANCEL:
self.break_config.pop('image', None)
self.img_break.set_from_stock('gtk-missing-image', Gtk.IconSize.BUTTON)
dialog.destroy()
def on_open_file_activate(self, image_menu_item):
"""Opening of a file"""
dialog = Gtk.FileChooserDialog(action=Gtk.FileChooserAction.OPEN)
dialog.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.OK)
dialog.set_transient_for(self.main_widget)
file_filter = Gtk.FileFilter()
file_filter.add_pattern("*.theatre")
dialog.add_filter(file_filter)
dialog.modal = True
answer = dialog.run()
try:
if answer == Gtk.ResponseType.OK:
self._open_file_callback(dialog.get_filename())
finally:
dialog.destroy()
def on_download_clicked(self,button,video_data):
""" Show the file dialog """
file_chooser_dialog = Gtk.FileChooserDialog("Elegir donde guardar el video", self.window, Gtk.FileChooserAction.SAVE,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_SAVE, Gtk.ResponseType.OK))
file_chooser_dialog.set_current_name(video_data["title"])
if file_chooser_dialog.run() == Gtk.ResponseType.OK:
filename = file_chooser_dialog.get_filename()
row = button.get_parent().get_parent()
# for widget in button.get_parent().get_children():
# if widget.__class__.__name__ == 'Button':
# widget.destroy()
video_iter = self.add_video_to_queue(video_data)
self.video_list.show_all()
file_chooser_dialog.destroy()
if video_data["action"] == "convert": #add postprocessing if convert was pressed
self.backend.convert(True)
self.download_video_thread(video_data["video_id"], filename,video_iter)
else:
file_chooser_dialog.destroy()
def run(self, path_suggest=None, name_suggest=None):
"""Activate dialog"""
dialog = Gtk.FileChooserDialog(
self.title, self.parent, self.action,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, self.action_button, Gtk.ResponseType.OK)
)
# set initial location and file name
if path_suggest is not None:
dialog.set_current_folder(path_suggest)
else:
dialog.set_current_folder(self.homedir)
if name_suggest is not None:
dialog.set_current_name(name_suggest)
# listen response
is_ok, path, filename = False, None, None
response = dialog.run()
if response == Gtk.ResponseType.OK:
# get data
is_ok = True
path = dialog.get_current_folder()
if self.action != Gtk.FileChooserAction.SELECT_FOLDER:
filename = dialog.get_filename()
# clean up
dialog.destroy()
return is_ok, path, filename