This commit is contained in:
Zach Tibbitts 2007-03-26 01:03:00 +00:00
parent d903b033cc
commit c59a92d0d6
4 changed files with 968 additions and 932 deletions

File diff suppressed because it is too large Load Diff

View File

@ -21,7 +21,7 @@
# Boston, MA 02110-1301, USA. # Boston, MA 02110-1301, USA.
import sys, os, os.path, urllib import sys, os, os.path, urllib
import deluge, dcommon, dgtk, ipc_manager import deluge, dcommon, dgtk, ipc_manager, dialogs
import delugeplugins, pref import delugeplugins, pref
import pygtk import pygtk
pygtk.require('2.0') pygtk.require('2.0')
@ -99,8 +99,8 @@ class DelugeGTK:
else: else:
self.has_tray = True self.has_tray = True
self.build_about_dialog() self.preferences_dialog = dialogs.PreferencesDlg(self, self.config)
self.build_pref_dialog() self.plugin_dialog = dialogs.PluginDlg(self, self.plugins)
self.build_torrent_table() self.build_torrent_table()
self.build_summary_tab() self.build_summary_tab()
self.build_file_tab() self.build_file_tab()
@ -222,78 +222,6 @@ class DelugeGTK:
else: else:
self.window.show() self.window.show()
def build_about_dialog(self):
gtk.about_dialog_set_url_hook(dcommon.open_url_in_browser)
self.abt = gtk.glade.XML(dcommon.get_glade_file("aboutdialog.glade")).get_widget("aboutdialog")
self.abt.set_name(dcommon.PROGRAM_NAME)
self.abt.set_version(dcommon.PROGRAM_VERSION)
self.abt.set_authors(["Zach Tibbits", "A. Zakai"])
self.abt.set_artists(["Andrew Wedderburn"])
self.abt.set_website("http://deluge-torrent.org")
self.abt.set_icon_from_file(dcommon.get_pixmap("deluge32.png"))
self.abt.set_logo(gtk.gdk.pixbuf_new_from_file(
dcommon.get_pixmap("deluge-about.png")))
def build_pref_dialog(self):
self.prf_glade = gtk.glade.XML(dcommon.get_glade_file("preferences_dialog.glade"), domain='deluge')
self.plg_glade = gtk.glade.XML(dcommon.get_glade_file("plugin_dialog.glade"), domain='deluge')
self.prf = self.prf_glade.get_widget("pref_dialog")
self.prf.set_icon_from_file(dcommon.get_pixmap("deluge32.png"))
self.prf_glade.signal_autoconnect({"tray_toggle": self.tray_toggle,})
self.plugin_dlg = self.plg_glade.get_widget("plugin_dialog")
self.plugin_dlg.set_icon_from_file(dcommon.get_pixmap("deluge32.png"))
self.plugin_view = self.plg_glade.get_widget("plugin_view")
self.plugin_store = gtk.ListStore(str, bool)
self.plugin_view.set_model(self.plugin_store)
try:
self.plugin_view.get_selection().set_select_function(self.plugin_clicked, full=True)
except TypeError:
self.plugin_view.get_selection().set_select_function(self.old_pi_click)
name_col = dgtk.add_text_column(self.plugin_view, _("Plugin"), 0)
name_col.set_expand(True)
dgtk.add_toggle_column(self.plugin_view, _("Enabled"), 1, toggled_signal=self.plugin_toggled)
self.plg_glade.signal_autoconnect({'plugin_pref': self.plugin_pref})
def old_pi_click(self, path):
return self.plugin_clicked(self.plugin_view.get_selection(), self.plugin_store,
path, False)
def plugin_clicked(self, selection, model, path, is_selected):
if is_selected:
return True
name = model.get_value(model.get_iter(path), 0)
plugin = self.plugins.get_plugin(name)
author = plugin['author']
version = plugin['version']
config = plugin['config']
description = plugin['description']
if name in self.plugins.get_enabled_plugins():
self.plg_glade.get_widget("plugin_conf").set_sensitive(config)
else:
self.plg_glade.get_widget("plugin_conf").set_sensitive(False)
self.plg_glade.get_widget("plugin_text").get_buffer(
).set_text("%s\nBy: %s\nVersion: %s\n\n%s"%
(name, author, version, description))
return True
def plugin_toggled(self, renderer, path):
plugin_iter = self.plugin_store.get_iter_from_string(path)
plugin_name = self.plugin_store.get_value(plugin_iter, 0)
plugin_value = not self.plugin_store.get_value(plugin_iter, 1)
self.plugin_store.set_value(plugin_iter, 1, plugin_value)
if plugin_value:
self.plugins.enable_plugin(plugin_name)
self.plg_glade.get_widget("plugin_conf").set_sensitive(
self.plugins.get_plugin(plugin_name)['config'])
else:
self.plugins.disable_plugin(plugin_name)
self.plg_glade.get_widget("plugin_conf").set_sensitive(False)
def plugin_pref(self, widget=None):
(model, plugin_iter) = self.plugin_view.get_selection().get_selected()
plugin_name = self.plugin_store.get_value(plugin_iter, 0)
self.plugins.configure_plugin(plugin_name)
def build_torrent_table(self): def build_torrent_table(self):
## Create the torrent listview ## Create the torrent listview
self.torrent_view = self.wtree.get_widget("torrent_view") self.torrent_view = self.wtree.get_widget("torrent_view")
@ -481,7 +409,7 @@ class DelugeGTK:
dgtk.add_text_column(self.file_view, _("Filename"), 1).set_expand(True) dgtk.add_text_column(self.file_view, _("Filename"), 1).set_expand(True)
dgtk.add_text_column(self.file_view, _("Size"), 2) dgtk.add_text_column(self.file_view, _("Size"), 2)
dgtk.add_text_column(self.file_view, _("Offset"), 3) dgtk.add_text_column(self.file_view, _("Offset"), 3)
# dgtk.add_text_column(self.file_view, _("Progress"), 4) dgtk.add_text_column(self.file_view, _("Progress"), 4)
def file_toggled(self, renderer, path): def file_toggled(self, renderer, path):
@ -497,78 +425,15 @@ class DelugeGTK:
self.manager.set_file_filter(self.get_selected_torrent(), file_filter) self.manager.set_file_filter(self.get_selected_torrent(), file_filter)
def show_about_dialog(self, arg=None): def show_about_dialog(self, arg=None):
self.abt.show_all() dialogs.show_about_dialog()
self.abt.run()
self.abt.hide_all()
def show_pref_dialog(self, arg=None): def show_pref_dialog(self, arg=None):
#Try to get current settings from pref, if an error occurs, the default settings will be used: self.preferences_dialog.show()
try:
# Page 1
self.prf_glade.get_widget("chk_use_tray").set_active(self.config.get("enable_system_tray", bool, default=True))
self.prf_glade.get_widget("chk_min_on_close").set_active(self.config.get("close_to_tray", bool, default=False))
if(self.config.get("use_default_dir", bool, False)):
self.prf_glade.get_widget("radio_save_all_to").set_active(True)
else:
self.prf_glade.get_widget("radio_ask_save").set_active(True)
self.prf_glade.get_widget("download_path_button").set_filename(self.config.get("default_download_path",
str, default=os.path.expandvars('$HOME')))
self.prf_glade.get_widget("chk_autoseed").set_active(self.config.get("auto_end_seeding", bool, default=False))
self.prf_glade.get_widget("ratio_spinner").set_value(self.config.get("end_seed_ratio", float, default=0.0))
self.prf_glade.get_widget("chk_compact").set_active(self.config.get("use_compact_storage", bool, default=False))
# Page 2
self.prf_glade.get_widget("active_port_label").set_text(str(self.manager.get_state()['port']))
self.prf_glade.get_widget("spin_port_min").set_value(self.config.get("tcp_port_range_lower", int, default=6881))
self.prf_glade.get_widget("spin_port_max").set_value(self.config.get("tcp_port_range_upper", int, default=6889))
self.prf_glade.get_widget("spin_max_upload").set_value(self.config.get("max_upload_rate", int, default=-1))
self.prf_glade.get_widget("spin_num_upload").set_value(self.config.get("max_number_uploads", int, default=-1))
self.prf_glade.get_widget("spin_max_download").set_value(self.config.get("max_download_rate", int, default=-1))
self.prf_glade.get_widget("spin_num_download").set_value(self.config.get("max_number_downloads", int, default=-1))
except KeyError:
pass
self.prf.show()
result = self.prf.run()
self.prf.hide()
print result
if result == 1:
self.config.set("enable_system_tray", self.prf_glade.get_widget("chk_use_tray").get_active())
self.config.set("close_to_tray", self.prf_glade.get_widget("chk_min_on_close").get_active())
self.config.set("use_default_dir", self.prf_glade.get_widget("radio_save_all_to").get_active())
self.config.set("default_download_path", self.prf_glade.get_widget("download_path_button").get_filename())
self.config.set("auto_end_seeding", self.prf_glade.get_widget("chk_autoseed").get_active())
self.config.set("end_seed_ratio", self.prf_glade.get_widget("ratio_spinner").get_value())
self.config.set("use_compact_storage", self.prf_glade.get_widget("chk_compact").get_active())
self.config.set("tcp_port_range_lower", self.prf_glade.get_widget("spin_port_min").get_value())
self.config.set("tcp_port_range_upper", self.prf_glade.get_widget("spin_port_max").get_value())
self.config.set("max_upload_rate", self.prf_glade.get_widget("spin_max_upload").get_value())
self.config.set("max_number_uploads", self.prf_glade.get_widget("spin_num_upload").get_value())
self.config.set("max_download_rate", self.prf_glade.get_widget("spin_max_download").get_value())
self.config.set("max_number_downloads", self.prf_glade.get_widget("spin_num_download").get_value())
self.config.save_to_file(self.conf_file)
self.apply_prefs() self.apply_prefs()
self.config.save_to_file()
def show_plugin_dialog(self, arg=None): def show_plugin_dialog(self, arg=None):
self.plugin_store.clear() self.plugin_dialog.show()
for plugin in self.plugins.get_available_plugins():
if plugin in self.plugins.get_enabled_plugins():
self.plugin_store.append( (plugin, True) )
else:
self.plugin_store.append( (plugin, False) )
self.plg_glade.get_widget("plugin_text").get_buffer().set_text("")
self.plg_glade.get_widget("plugin_conf").set_sensitive(False)
self.plugin_dlg.show()
self.plugin_dlg.run()
self.plugin_dlg.hide()
def tray_toggle(self, obj):
if obj.get_active():
self.prf_glade.get_widget("chk_min_on_close").set_sensitive(True)
else:
self.prf_glade.get_widget("chk_min_on_close").set_sensitive(False)
def apply_prefs(self): def apply_prefs(self):
ulrate = self.config.get("max_upload_rate", int, default=-1) ulrate = self.config.get("max_upload_rate", int, default=-1)
@ -668,9 +533,9 @@ class DelugeGTK:
return False return False
if self.something_screwed_up: if self.something_screwed_up:
dgtk.show_popup_warning(self.window, dialogs.show_popup_warning(self.window,
_("For some reason, the previous state could not be loaded, so a blank state has been loaded for you.")) _("For some reason, the previous state could not be loaded, so a blank state has been loaded for you."))
restore_torrents = dgtk.show_popup_question(self.window, restore_torrents = dialogs.show_popup_question(self.window,
_("Would you like to attempt to reload the previous session's downloads?")) _("Would you like to attempt to reload the previous session's downloads?"))
if restore_torrents: if restore_torrents:
torrent_subdir = os.path.join(self.manager.base_dir, deluge.TORRENTS_SUBDIR) torrent_subdir = os.path.join(self.manager.base_dir, deluge.TORRENTS_SUBDIR)
@ -871,7 +736,7 @@ class DelugeGTK:
if self.config.get('use_default_dir', bool, default=False): if self.config.get('use_default_dir', bool, default=False):
path = self.config.get('default_download_path', default=os.path.expandvars('$HOME')) path = self.config.get('default_download_path', default=os.path.expandvars('$HOME'))
else: else:
path = dgtk.show_directory_chooser_dialog(self.window) path = dialogs.show_directory_chooser_dialog(self.window)
if path is None: if path is None:
return return
@ -888,7 +753,7 @@ class DelugeGTK:
def add_torrent_clicked(self, obj=None): def add_torrent_clicked(self, obj=None):
torrent = dgtk.show_file_open_dialog() torrent = dialogs.show_file_open_dialog()
if torrent is not None: if torrent is not None:
self.interactive_add_torrent(torrent) self.interactive_add_torrent(torrent)

View File

@ -37,75 +37,6 @@ class StupidTray:
def set_tooltip(self, value): def set_tooltip(self, value):
pass pass
# Show a popup message dialog
def show_popup_warning(window, message):
warner = gtk.MessageDialog(parent = window,
flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
buttons= gtk.BUTTONS_OK,
message_format=message,
type = gtk.MESSAGE_WARNING)
warner.run()
warner.destroy()
def show_popup_question(window, message):
asker = gtk.MessageDialog(parent = window,
flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
buttons = gtk.BUTTONS_YES_NO,
message_format=message,
type=gtk.MESSAGE_QUESTION)
result = asker.run()
asker.destroy()
if result == gtk.RESPONSE_YES:
return True
elif result == gtk.RESPONSE_NO:
return False
elif result == gtk.RESPONSE_DELETE_EVENT:
return False
else:
return False
## Browse for .torrent files
def show_file_open_dialog(parent=None, title=None):
if title is None:
title = _("Choose a .torrent file")
chooser = gtk.FileChooserDialog(title, parent, gtk.FILE_CHOOSER_ACTION_OPEN,
buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))
f0 = gtk.FileFilter()
f0.set_name(_("Torrent files"))
f0.add_pattern("*." + "torrent")
chooser.add_filter(f0)
f1 = gtk.FileFilter()
f1.set_name(_("All files"))
f1.add_pattern("*")
chooser.add_filter(f1)
chooser.set_icon_from_file(dcommon.get_pixmap("deluge32.png"))
chooser.set_property("skip-taskbar-hint", True)
response = chooser.run()
if response == gtk.RESPONSE_OK:
result = chooser.get_filename()
else:
result = None
chooser.destroy()
return result
def show_directory_chooser_dialog(parent=None, title=None):
if title is None:
title = _("Choose a download directory")
chooser = gtk.FileChooserDialog(title, parent, gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK))
chooser.set_icon_from_file(dcommon.get_pixmap("deluge32.png"))
chooser.set_property("skip-taskbar-hint", True)
if chooser.run() == gtk.RESPONSE_OK:
result = chooser.get_filename()
else:
result = None
chooser.destroy()
return result
## Functions to create columns ## Functions to create columns
def add_func_column(view, header, func, data, sortid=None): def add_func_column(view, header, func, data, sortid=None):

240
src/dialogs.py Normal file
View File

@ -0,0 +1,240 @@
# dialogs.py
#
# Copyright (C) Zach Tibbitts 2006 <zach@collegegeek.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, write to:
# The Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor
# Boston, MA 02110-1301, USA.
import dcommon, dgtk
import gtk, gtk.glade
import os, os.path
class PreferencesDlg:
def __init__(self, parent, preferences):
self.glade = gtk.glade.XML(dcommon.get_glade_file("preferences_dialog.glade"), domain='deluge')
self.dialog = self.glade.get_widget("pref_dialog")
self.dialog.set_icon_from_file(dcommon.get_pixmap("deluge32.png"))
self.glade.signal_autoconnect({
'tray_toggle': self.tray_toggle,
})
self.parent = parent
self.preferences = preferences
def show(self):
# Load settings into dialog
self.glade.get_widget("chk_use_tray").set_active(self.preferences.get("enable_system_tray", bool, default=True))
self.glade.get_widget("chk_min_on_close").set_active(self.preferences.get("close_to_tray", bool, default=False))
if(self.preferences.get("use_default_dir", bool, False)):
self.glade.get_widget("radio_save_all_to").set_active(True)
else:
self.glade.get_widget("radio_ask_save").set_active(True)
self.glade.get_widget("download_path_button").set_filename(self.preferences.get("default_download_path", str, default=os.path.expandvars('$HOME')))
self.glade.get_widget("chk_autoseed").set_active(self.preferences.get("auto_end_seeding", bool, default=False))
self.glade.get_widget("ratio_spinner").set_value(self.preferences.get("end_seed_ratio", float, default=0.0))
self.glade.get_widget("chk_compact").set_active(self.preferences.get("use_compact_storage", bool, default=False))
self.glade.get_widget("active_port_label").set_text(str(self.parent.manager.get_state()['port']))
self.glade.get_widget("spin_port_min").set_value(self.preferences.get("tcp_port_range_lower", int, default=6881))
self.glade.get_widget("spin_port_max").set_value(self.preferences.get("tcp_port_range_upper", int, default=6889))
self.glade.get_widget("spin_max_upload").set_value(self.preferences.get("max_upload_rate", int, default=-1))
self.glade.get_widget("spin_num_upload").set_value(self.preferences.get("max_number_uploads", int, default=-1))
self.glade.get_widget("spin_max_download").set_value(self.preferences.get("max_download_rate", int, default=-1))
self.glade.get_widget("spin_num_download").set_value(self.preferences.get("max_number_downloads", int, default=-1))
# Now, show the dialog
self.dialog.show()
r = self.dialog.run()
self.dialog.hide()
# Now, get the settings from the dialog
if r == 1:
self.preferences.set("enable_system_tray", self.glade.get_widget("chk_use_tray").get_active())
self.preferences.set("close_to_tray", self.glade.get_widget("chk_min_on_close").get_active())
self.preferences.set("use_default_dir", self.glade.get_widget("radio_save_all_to").get_active())
self.preferences.set("default_download_path", self.glade.get_widget("download_path_button").get_filename())
self.preferences.set("auto_end_seeding", self.glade.get_widget("chk_autoseed").get_active())
self.preferences.set("end_seed_ratio", self.glade.get_widget("ratio_spinner").get_value())
self.preferences.set("use_compact_storage", self.glade.get_widget("chk_compact").get_active())
self.preferences.set("tcp_port_range_lower", self.glade.get_widget("spin_port_min").get_value())
self.preferences.set("tcp_port_range_upper", self.glade.get_widget("spin_port_max").get_value())
self.preferences.set("max_upload_rate", self.glade.get_widget("spin_max_upload").get_value())
self.preferences.set("max_number_uploads", self.glade.get_widget("spin_num_upload").get_value())
self.preferences.set("max_download_rate", self.glade.get_widget("spin_max_download").get_value())
self.preferences.set("max_number_downloads", self.glade.get_widget("spin_num_download").get_value())
def tray_toggle(self, obj):
if obj.get_active():
self.glade.get_widget("chk_min_on_close").set_sensitive(True)
else:
self.glade.get_widget("chk_min_on_close").set_sensitive(False)
class PluginDlg:
def __init__(self, parent, plugins):
self.glade = gtk.glade.XML(dcommon.get_glade_file("plugin_dialog.glade"), domain='deluge')
self.dialog = self.glade.get_widget("plugin_dialog")
self.dialog.set_icon_from_file(dcommon.get_pixmap("deluge32.png"))
self.view = self.glade.get_widget("plugin_view")
self.store = gtk.ListStore(str, bool)
self.view.set_model(self.store)
try:
self.view.get_selection().set_select_function(self.plugin_clicked, full=True)
except TypeError:
self.view.get_selection().set_select_function(self.old_clicked)
name_col = dgtk.add_text_column(self.view, _("Plugin"), 0)
name_col.set_expand(True)
dgtk.add_toggle_column(self.view, _("Enabled"), 1, toggled_signal=self.plugin_toggled)
self.parent = parent
self.plugins = plugins
def show(self):
self.store.clear()
for plugin in self.plugins.get_available_plugins():
print plugin
if plugin in self.plugins.get_enabled_plugins():
self.store.append( (plugin, True) )
else:
self.store.append( (plugin, False) )
self.glade.get_widget("plugin_text").get_buffer().set_text("")
self.glade.get_widget("plugin_conf").set_sensitive(False)
self.dialog.show()
self.dialog.run()
self.dialog.hide()
def old_clicked(self, path):
return self.plugin_clicked(self.view.get_selection(), self.store, path, False)
def plugin_clicked(self, selection, model, path, is_selected):
if is_selected:
return True
name = model.get_value(model.get_iter(path), 0)
plugin = self.plugins.get_plugin(name)
author = plugin['author']
version = plugin['version']
config = plugin['config']
description = plugin['description']
if name in self.plugins.get_enabled_plugins():
self.glade.get_widget("plugin_conf").set_sensitive(config)
else:
self.glade.get_widget("plugin_conf").set_sensitive(False)
self.glade.get_widget("plugin_text").get_buffer(
).set_text("%s\nBy: %s\nVersion: %s\n\n%s"%
(name, author, version, description))
return True
def plugin_toggled(self, renderer, path):
plugin_iter = self.store.get_iter_from_string(path)
plugin_name = self.store.get_value(plugin_iter, 0)
plugin_value = not self.store.get_value(plugin_iter, 1)
self.store.set_value(plugin_iter, 1, plugin_value)
if plugin_value:
self.plugins.enable_plugin(plugin_name)
self.glade.get_widget("plugin_conf").set_sensitive(
self.plugins.get_plugin(plugin_name)['config'])
else:
self.plugins.disable_plugin(plugin_name)
self.glade.get_widget("plugin_conf").set_sensitive(False)
def plugin_pref(self, widget=None):
(model, plugin_iter) = self.view.get_selection().get_selected()
plugin_name = self.store.get_value(plugin_iter, 0)
self.plugins.configure_plugin(plugin_name)
def show_about_dialog(parent=None):
gtk.about_dialog_set_url_hook(dcommon.open_url_in_browser)
abt = gtk.glade.XML(dcommon.get_glade_file("aboutdialog.glade")).get_widget("aboutdialog")
abt.set_name(dcommon.PROGRAM_NAME)
abt.set_version(dcommon.PROGRAM_VERSION)
abt.set_authors(["Zach Tibbits", "A. Zakai"])
abt.set_artists(["Andrew Wedderburn"])
abt.set_website("http://deluge-torrent.org")
abt.set_icon_from_file(dcommon.get_pixmap("deluge32.png"))
abt.set_logo(gtk.gdk.pixbuf_new_from_file(
dcommon.get_pixmap("deluge-about.png")))
abt.show_all()
abt.run()
abt.hide_all()
def show_popup_warning(window, message):
warner = gtk.MessageDialog(parent = window,
flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
buttons= gtk.BUTTONS_OK,
message_format=message,
type = gtk.MESSAGE_WARNING)
warner.run()
warner.destroy()
def show_popup_question(window, message):
asker = gtk.MessageDialog(parent = window,
flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
buttons = gtk.BUTTONS_YES_NO,
message_format=message,
type=gtk.MESSAGE_QUESTION)
result = asker.run()
asker.destroy()
if result == gtk.RESPONSE_YES:
return True
elif result == gtk.RESPONSE_NO:
return False
elif result == gtk.RESPONSE_DELETE_EVENT:
return False
else:
return False
## Browse for .torrent files
def show_file_open_dialog(parent=None, title=None):
if title is None:
title = _("Choose a .torrent file")
chooser = gtk.FileChooserDialog(title, parent, gtk.FILE_CHOOSER_ACTION_OPEN,
buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))
f0 = gtk.FileFilter()
f0.set_name(_("Torrent files"))
f0.add_pattern("*." + "torrent")
chooser.add_filter(f0)
f1 = gtk.FileFilter()
f1.set_name(_("All files"))
f1.add_pattern("*")
chooser.add_filter(f1)
chooser.set_icon_from_file(dcommon.get_pixmap("deluge32.png"))
chooser.set_property("skip-taskbar-hint", True)
response = chooser.run()
if response == gtk.RESPONSE_OK:
result = chooser.get_filename()
else:
result = None
chooser.destroy()
return result
def show_directory_chooser_dialog(parent=None, title=None):
if title is None:
title = _("Choose a download directory")
chooser = gtk.FileChooserDialog(title, parent, gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK))
chooser.set_icon_from_file(dcommon.get_pixmap("deluge32.png"))
chooser.set_property("skip-taskbar-hint", True)
if chooser.run() == gtk.RESPONSE_OK:
result = chooser.get_filename()
else:
result = None
chooser.destroy()
return result