variable name changes

This commit is contained in:
Zach Tibbitts 2007-02-21 01:18:37 +00:00
commit 3a01d4d326
2 changed files with 102 additions and 164 deletions

View file

@ -32,69 +32,6 @@ GLADE_DIR = sys.prefix + '/share/deluge/glade'
PIXMAP_DIR = sys.prefix + '/share/deluge/pixmaps' PIXMAP_DIR = sys.prefix + '/share/deluge/pixmaps'
PLUGIN_DIR = sys.prefix + '/share/deluge/plugins' PLUGIN_DIR = sys.prefix + '/share/deluge/plugins'
class DelugePreferences:
def __init__(self):
self.pref = {}
def set(self, key, value):
self.pref[key] = value
def get(self, key, kind=None):
result = self.pref[key]
if kind == None:
return result
elif kind == bool:
# Python interprets bool("False") as True, so we must compensate for this
if isinstance(result, str):
return (result.lower() == "true")
elif isinstance(result, int):
return not (result == 0)
else:
return False
elif kind == int:
try:
return int(result)
except ValueError:
return int(float(result))
except:
return 0
elif kind == float:
return float(result)
elif kind == str:
return str(result)
else:
return result
def keys(self):
return self.pref.keys()
def clear(self):
self.pref.clear()
def load_from_file(self, filename):
f = open(filename, mode='r')
for line in f:
try:
(key, value) = line.split("=", 1)
key = key.strip(" \n")
value = value.strip(" \n")
self.pref[key] = value
except ValueError:
pass
f.close()
def save_to_file(self, filename):
f = open(filename, mode='w')
f.write('#%s preferences file\n\n'%PROGRAM_NAME)
for key in self.pref.keys():
f.write(key)
f.write(' = ')
f.write(str(self.pref[key]))
f.write('\n')
f.flush()
f.close()
def estimate_eta(state): def estimate_eta(state):
try: try:
return ftime(get_eta(state["total_size"], state["total_download"], state["download_rate"])) return ftime(get_eta(state["total_size"], state["total_download"], state["download_rate"]))

View file

@ -21,7 +21,8 @@
# Boston, MA 02110-1301, USA. # Boston, MA 02110-1301, USA.
import sys, os, os.path, gettext, urllib import sys, os, os.path, gettext, urllib
import deluge, dcommon, dgtk, delugeplugins import deluge, dcommon, dgtk
import delugeplugins, pref
import pygtk import pygtk
pygtk.require('2.0') pygtk.require('2.0')
import gtk, gtk.glade, gobject import gtk, gtk.glade, gobject
@ -67,9 +68,9 @@ class DelugeGTK(dbus.service.Object):
if os.path.isdir(dcommon.CONFIG_DIR + '/plugins'): if os.path.isdir(dcommon.CONFIG_DIR + '/plugins'):
self.plugins.add_plugin_dir(dcommon.CONFIG_DIR + '/plugins') self.plugins.add_plugin_dir(dcommon.CONFIG_DIR + '/plugins')
self.plugins.scan_for_plugins() self.plugins.scan_for_plugins()
self.pref = dcommon.DelugePreferences() self.config = pref.Preferences()
self.load_default_settings() self.load_default_settings()
self.pref.load_from_file(self.conf_file) self.config.load_from_file(self.conf_file)
#Set up the interface: #Set up the interface:
self.wtree = gtk.glade.XML(dcommon.get_glade_file("delugegtk.glade")) self.wtree = gtk.glade.XML(dcommon.get_glade_file("delugegtk.glade"))
self.window = self.wtree.get_widget("main_window") self.window = self.wtree.get_widget("main_window")
@ -101,7 +102,7 @@ class DelugeGTK(dbus.service.Object):
except KeyError: except KeyError:
pass pass
enable_plugins = self.pref.get('enabled_plugins').split(':') enable_plugins = self.config.get('enabled_plugins').split(':')
print enable_plugins print enable_plugins
for plugin in enable_plugins: for plugin in enable_plugins:
try: try:
@ -242,28 +243,28 @@ class DelugeGTK(dbus.service.Object):
def build_torrent_table(self): def build_torrent_table(self):
## Create the torrent listview ## Create the torrent listview
self.view = self.wtree.get_widget("torrent_view") self.torrent_view = self.wtree.get_widget("torrent_view")
# UID, Q#, Name, Size, Progress, Message, Seeders, Peers, DL, UL, ETA, Share # UID, Q#, Name, Size, Progress, Message, Seeders, Peers, DL, UL, ETA, Share
self.store = gtk.ListStore(int, int, str, str, float, str, str, str, str, str, str, str) self.torrent_model = gtk.ListStore(int, int, str, str, float, str, str, str, str, str, str, str)
self.view.set_model(self.store) self.torrent_view.set_model(self.torrent_model)
self.view.set_rules_hint(True) self.torrent_view.set_rules_hint(True)
self.view.set_reorderable(True) self.torrent_view.set_reorderable(True)
## Initializes the columns for the torrent_view ## Initializes the columns for the torrent_view
self.queue_column = dgtk.add_text_column(self.view, "#", 1) self.queue_column = dgtk.add_text_column(self.torrent_view, "#", 1)
self.name_column = dgtk.add_text_column(self.view, _("Name"), 2) self.name_column = dgtk.add_text_column(self.torrent_view, _("Name"), 2)
self.size_column = dgtk.add_text_column(self.view, _("Size"), 3) self.size_column = dgtk.add_text_column(self.torrent_view, _("Size"), 3)
self.status_column = dgtk.add_progress_column(self.view, _("Status"), 4, 5) self.status_column = dgtk.add_progress_column(self.torrent_view, _("Status"), 4, 5)
self.seed_column = dgtk.add_text_column(self.view, _("Seeders"), 6) self.seed_column = dgtk.add_text_column(self.torrent_view, _("Seeders"), 6)
self.peer_column = dgtk.add_text_column(self.view, _("Peers"), 7) self.peer_column = dgtk.add_text_column(self.torrent_view, _("Peers"), 7)
self.dl_column = dgtk.add_text_column(self.view, _("Download"), 8) self.dl_column = dgtk.add_text_column(self.torrent_view, _("Download"), 8)
self.ul_column = dgtk.add_text_column(self.view, _("Upload"), 9) self.ul_column = dgtk.add_text_column(self.torrent_view, _("Upload"), 9)
self.eta_column = dgtk.add_text_column(self.view, _("Time Remaining"), 10) self.eta_column = dgtk.add_text_column(self.torrent_view, _("Time Remaining"), 10)
self.share_column = dgtk.add_text_column(self.view, _("Ratio"), 11) self.share_column = dgtk.add_text_column(self.torrent_view, _("Ratio"), 11)
self.status_column.set_expand(True) self.status_column.set_expand(True)
self.view.get_selection().set_select_function(self.torrent_clicked, full=True) self.torrent_view.get_selection().set_select_function(self.torrent_clicked, full=True)
def torrent_clicked(self, selection, model, path, is_selected): def torrent_clicked(self, selection, model, path, is_selected):
if is_selected: if is_selected:
@ -347,25 +348,25 @@ class DelugeGTK(dbus.service.Object):
def load_default_settings(self): def load_default_settings(self):
self.pref.set("enable_system_tray", True) self.config.set("enable_system_tray", True)
self.pref.set("close_to_tray", False) self.config.set("close_to_tray", False)
self.pref.set("use_default_dir", False) self.config.set("use_default_dir", False)
self.pref.set("default_download_path", os.path.expandvars('$HOME')) self.config.set("default_download_path", os.path.expandvars('$HOME'))
self.pref.set("auto_end_seeding", False) self.config.set("auto_end_seeding", False)
self.pref.set("end_seed_ratio", 1.0) self.config.set("end_seed_ratio", 1.0)
self.pref.set("use_compact_storage", False) self.config.set("use_compact_storage", False)
self.pref.set("tcp_port_range_lower", 6881) self.config.set("tcp_port_range_lower", 6881)
self.pref.set("tcp_port_range_upper", 6889) self.config.set("tcp_port_range_upper", 6889)
self.pref.set("max_upload_rate", -1) self.config.set("max_upload_rate", -1)
self.pref.set("max_number_uploads", -1) self.config.set("max_number_uploads", -1)
self.pref.set("max_download_rate", -1) self.config.set("max_download_rate", -1)
self.pref.set("max_number_downloads", -1) self.config.set("max_number_downloads", -1)
default_plugins = [] default_plugins = []
for name in self.plugins.get_available_plugins(): for name in self.plugins.get_available_plugins():
if self.plugins.get_plugin(name)['default']: if self.plugins.get_plugin(name)['default']:
default_plugins.append(name) default_plugins.append(name)
self.pref.set("enabled_plugins", ';'.join(default_plugins)) self.config.set("enabled_plugins", ';'.join(default_plugins))
@ -379,24 +380,24 @@ class DelugeGTK(dbus.service.Object):
#Try to get current settings from pref, if an error occurs, the default settings will be used: #Try to get current settings from pref, if an error occurs, the default settings will be used:
try: try:
# Page 1 # Page 1
self.prf_glade.get_widget("chk_use_tray").set_active(self.pref.get("enable_system_tray", bool)) self.prf_glade.get_widget("chk_use_tray").set_active(self.config.get("enable_system_tray", bool))
self.prf_glade.get_widget("chk_min_on_close").set_active(self.pref.get("close_to_tray", bool)) self.prf_glade.get_widget("chk_min_on_close").set_active(self.config.get("close_to_tray", bool))
if(self.pref.get("use_default_dir", bool)): if(self.config.get("use_default_dir", bool)):
self.prf_glade.get_widget("radio_save_all_to").set_active(True) self.prf_glade.get_widget("radio_save_all_to").set_active(True)
else: else:
self.prf_glade.get_widget("radio_ask_save").set_active(True) self.prf_glade.get_widget("radio_ask_save").set_active(True)
self.prf_glade.get_widget("download_path_button").set_filename(self.pref.get("default_download_path", str)) self.prf_glade.get_widget("download_path_button").set_filename(self.config.get("default_download_path", str))
self.prf_glade.get_widget("chk_autoseed").set_active(self.pref.get("auto_end_seeding", bool)) self.prf_glade.get_widget("chk_autoseed").set_active(self.config.get("auto_end_seeding", bool))
self.prf_glade.get_widget("ratio_spinner").set_value(self.pref.get("end_seed_ratio", float)) self.prf_glade.get_widget("ratio_spinner").set_value(self.config.get("end_seed_ratio", float))
self.prf_glade.get_widget("chk_compact").set_active(self.pref.get("use_compact_storage", bool)) self.prf_glade.get_widget("chk_compact").set_active(self.config.get("use_compact_storage", bool))
# Page 2 # Page 2
self.prf_glade.get_widget("spin_port_min").set_value(self.pref.get("tcp_port_range_lower", int)) self.prf_glade.get_widget("spin_port_min").set_value(self.config.get("tcp_port_range_lower", int))
self.prf_glade.get_widget("spin_port_max").set_value(self.pref.get("tcp_port_range_upper", int)) self.prf_glade.get_widget("spin_port_max").set_value(self.config.get("tcp_port_range_upper", int))
self.prf_glade.get_widget("spin_max_upload").set_value(self.pref.get("max_upload_rate", int)) self.prf_glade.get_widget("spin_max_upload").set_value(self.config.get("max_upload_rate", int))
self.prf_glade.get_widget("spin_num_upload").set_value(self.pref.get("max_number_uploads", int)) self.prf_glade.get_widget("spin_num_upload").set_value(self.config.get("max_number_uploads", int))
self.prf_glade.get_widget("spin_max_download").set_value(self.pref.get("max_download_rate", int)) self.prf_glade.get_widget("spin_max_download").set_value(self.config.get("max_download_rate", int))
self.prf_glade.get_widget("spin_num_download").set_value(self.pref.get("max_number_downloads", int)) self.prf_glade.get_widget("spin_num_download").set_value(self.config.get("max_number_downloads", int))
except KeyError: except KeyError:
pass pass
self.prf.show() self.prf.show()
@ -404,22 +405,22 @@ class DelugeGTK(dbus.service.Object):
self.prf.hide() self.prf.hide()
print result print result
if result == 1: if result == 1:
self.pref.set("enable_system_tray", self.prf_glade.get_widget("chk_use_tray").get_active()) self.config.set("enable_system_tray", self.prf_glade.get_widget("chk_use_tray").get_active())
self.pref.set("close_to_tray", self.prf_glade.get_widget("chk_min_on_close").get_active()) self.config.set("close_to_tray", self.prf_glade.get_widget("chk_min_on_close").get_active())
self.pref.set("use_default_dir", self.prf_glade.get_widget("radio_save_all_to").get_active()) self.config.set("use_default_dir", self.prf_glade.get_widget("radio_save_all_to").get_active())
self.pref.set("default_download_path", self.prf_glade.get_widget("download_path_button").get_filename()) self.config.set("default_download_path", self.prf_glade.get_widget("download_path_button").get_filename())
self.pref.set("auto_end_seeding", self.prf_glade.get_widget("chk_autoseed").get_active()) self.config.set("auto_end_seeding", self.prf_glade.get_widget("chk_autoseed").get_active())
self.pref.set("end_seed_ratio", self.prf_glade.get_widget("ratio_spinner").get_value()) self.config.set("end_seed_ratio", self.prf_glade.get_widget("ratio_spinner").get_value())
self.pref.set("use_compact_storage", self.prf_glade.get_widget("chk_compact").get_active()) self.config.set("use_compact_storage", self.prf_glade.get_widget("chk_compact").get_active())
self.pref.set("tcp_port_range_lower", self.prf_glade.get_widget("spin_port_min").get_value()) self.config.set("tcp_port_range_lower", self.prf_glade.get_widget("spin_port_min").get_value())
self.pref.set("tcp_port_range_upper", self.prf_glade.get_widget("spin_port_max").get_value()) self.config.set("tcp_port_range_upper", self.prf_glade.get_widget("spin_port_max").get_value())
self.pref.set("max_upload_rate", self.prf_glade.get_widget("spin_max_upload").get_value()) self.config.set("max_upload_rate", self.prf_glade.get_widget("spin_max_upload").get_value())
self.pref.set("max_number_uploads", self.prf_glade.get_widget("spin_num_upload").get_value()) self.config.set("max_number_uploads", self.prf_glade.get_widget("spin_num_upload").get_value())
self.pref.set("max_download_rate", self.prf_glade.get_widget("spin_max_download").get_value()) self.config.set("max_download_rate", self.prf_glade.get_widget("spin_max_download").get_value())
self.pref.set("max_number_downloads", self.prf_glade.get_widget("spin_num_download").get_value()) self.config.set("max_number_downloads", self.prf_glade.get_widget("spin_num_download").get_value())
self.pref.save_to_file(self.conf_file) self.config.save_to_file(self.conf_file)
self.apply_prefs() self.apply_prefs()
def show_plugin_dialog(self, arg=None): def show_plugin_dialog(self, arg=None):
@ -444,11 +445,11 @@ class DelugeGTK(dbus.service.Object):
def apply_prefs(self): def apply_prefs(self):
self.tray.set_visible(self.pref.get("enable_system_tray", bool)) self.tray.set_visible(self.config.get("enable_system_tray", bool))
self.manager.set_pref("listen_on", [self.pref.get("tcp_port_range_lower", int), self.pref.get("tcp_port_range_upper", int)]) self.manager.set_pref("listen_on", [self.config.get("tcp_port_range_lower", int), self.config.get("tcp_port_range_upper", int)])
self.manager.set_pref("max_uploads", self.pref.get("max_number_uploads", int)) self.manager.set_pref("max_uploads", self.config.get("max_number_uploads", int))
self.manager.set_pref("max_download_rate", self.pref.get("max_download_rate", int)) self.manager.set_pref("max_download_rate", self.config.get("max_download_rate", int))
self.manager.set_pref("max_connections", self.pref.get("max_number_downloads", int)) self.manager.set_pref("max_connections", self.config.get("max_number_downloads", int))
# UID, Q#, Name, Size, Progress, Message, Seeders, Peers, DL, UL, ETA, Share # UID, Q#, Name, Size, Progress, Message, Seeders, Peers, DL, UL, ETA, Share
@ -485,7 +486,7 @@ class DelugeGTK(dbus.service.Object):
print "duplicate torrent found, ignoring", torrent_file print "duplicate torrent found, ignoring", torrent_file
## add torrents in manager to interface ## add torrents in manager to interface
for uid in self.manager.get_unique_IDs(): for uid in self.manager.get_unique_IDs():
self.store.append(self.get_list_from_unique_id(uid)) self.torrent_model.append(self.get_list_from_unique_id(uid))
gobject.timeout_add(1000, self.update) gobject.timeout_add(1000, self.update)
try: try:
self.is_running = True self.is_running = True
@ -505,25 +506,25 @@ class DelugeGTK(dbus.service.Object):
self.plugins.update_active_plugins() self.plugins.update_active_plugins()
# If no torrent is selected, select the first torrent: # If no torrent is selected, select the first torrent:
(temp, selection) = self.view.get_selection().get_selected() (temp, selection) = self.torrent_view.get_selection().get_selected()
if selection is None: if selection is None:
self.view.get_selection().select_path("0") self.torrent_view.get_selection().select_path("0")
#Torrent List #Torrent List
itr = self.store.get_iter_first() itr = self.torrent_model.get_iter_first()
if itr is None: if itr is None:
return True return True
while itr is not None: while itr is not None:
uid = self.store.get_value(itr, 0) uid = self.torrent_model.get_value(itr, 0)
try: try:
state = self.manager.get_torrent_state(uid) state = self.manager.get_torrent_state(uid)
tlist = self.get_list_from_unique_id(uid) tlist = self.get_list_from_unique_id(uid)
for i in range(12): for i in range(12):
self.store.set_value(itr, i, tlist[i]) self.torrent_model.set_value(itr, i, tlist[i])
itr = self.store.iter_next(itr) itr = self.torrent_model.iter_next(itr)
except deluge.InvalidUniqueIDError: except deluge.InvalidUniqueIDError:
self.store.remove(itr) self.torrent_model.remove(itr)
if not self.store.iter_is_valid(itr): if not self.torrent_model.iter_is_valid(itr):
itr = None itr = None
self.saved_peer_info = None self.saved_peer_info = None
@ -623,7 +624,7 @@ class DelugeGTK(dbus.service.Object):
def get_selected_torrent(self): def get_selected_torrent(self):
try: try:
return self.store.get_value(self.view.get_selection().get_selected()[1], 0) return self.torrent_model.get_value(self.torrent_view.get_selection().get_selected()[1], 0)
except TypeError: except TypeError:
return None return None
@ -643,15 +644,15 @@ class DelugeGTK(dbus.service.Object):
def interactive_add_torrent(self, torrent, append=True): def interactive_add_torrent(self, torrent, append=True):
if self.pref.get('use_default_dir', bool): if self.config.get('use_default_dir', bool):
path = self.pref.get('default_download_path') path = self.config.get('default_download_path')
else: else:
path = dgtk.show_directory_chooser_dialog(self.window) path = dgtk.show_directory_chooser_dialog(self.window)
if path is None: if path is None:
return return
unique_id = self.manager.add_torrent(torrent, path, self.pref.get('use_compact_storage', bool)) unique_id = self.manager.add_torrent(torrent, path, self.config.get('use_compact_storage', bool))
if append: if append:
self.store.append(self.get_list_from_unique_id(unique_id)) self.torrent_model.append(self.get_list_from_unique_id(unique_id))
@ -756,29 +757,29 @@ class DelugeGTK(dbus.service.Object):
self.share_column.set_visible(obj.get_active()) self.share_column.set_visible(obj.get_active())
def load_window_settings(self): def load_window_settings(self):
self.wtree.get_widget("chk_infopane").set_active(self.pref.get("show_infopane", bool)) self.wtree.get_widget("chk_infopane").set_active(self.config.get("show_infopane", bool))
self.wtree.get_widget("chk_size").set_active(self.pref.get("show_size", bool)) self.wtree.get_widget("chk_size").set_active(self.config.get("show_size", bool))
self.wtree.get_widget("chk_status").set_active(self.pref.get("show_status", bool)) self.wtree.get_widget("chk_status").set_active(self.config.get("show_status", bool))
self.wtree.get_widget("chk_seed").set_active(self.pref.get("show_seeders", bool)) self.wtree.get_widget("chk_seed").set_active(self.config.get("show_seeders", bool))
self.wtree.get_widget("chk_peer").set_active(self.pref.get("show_peers", bool)) self.wtree.get_widget("chk_peer").set_active(self.config.get("show_peers", bool))
self.wtree.get_widget("chk_download").set_active(self.pref.get("show_dl", bool)) self.wtree.get_widget("chk_download").set_active(self.config.get("show_dl", bool))
self.wtree.get_widget("chk_upload").set_active(self.pref.get("show_ul", bool)) self.wtree.get_widget("chk_upload").set_active(self.config.get("show_ul", bool))
self.wtree.get_widget("chk_eta").set_active(self.pref.get("show_eta", bool)) self.wtree.get_widget("chk_eta").set_active(self.config.get("show_eta", bool))
self.wtree.get_widget("chk_ratio").set_active(self.pref.get("show_share", bool)) self.wtree.get_widget("chk_ratio").set_active(self.config.get("show_share", bool))
def save_window_settings(self): def save_window_settings(self):
self.pref.set("show_infopane", self.wtree.get_widget("chk_infopane").get_active()) self.config.set("show_infopane", self.wtree.get_widget("chk_infopane").get_active())
self.pref.set("show_size", self.size_column.get_visible()) self.config.set("show_size", self.size_column.get_visible())
self.pref.set("show_status", self.status_column.get_visible()) self.config.set("show_status", self.status_column.get_visible())
self.pref.set("show_seeders", self.seed_column.get_visible()) self.config.set("show_seeders", self.seed_column.get_visible())
self.pref.set("show_peers", self.peer_column.get_visible()) self.config.set("show_peers", self.peer_column.get_visible())
self.pref.set("show_dl", self.dl_column.get_visible()) self.config.set("show_dl", self.dl_column.get_visible())
self.pref.set("show_ul", self.ul_column.get_visible()) self.config.set("show_ul", self.ul_column.get_visible())
self.pref.set("show_eta", self.eta_column.get_visible()) self.config.set("show_eta", self.eta_column.get_visible())
self.pref.set("show_share", self.share_column.get_visible()) self.config.set("show_share", self.share_column.get_visible())
def close(self, widget, event): def close(self, widget, event):
if self.pref.get("close_to_tray", bool) and self.pref.get("enable_system_tray", bool): if self.config.get("close_to_tray", bool) and self.config.get("enable_system_tray", bool):
self.window.hide() self.window.hide()
return True return True
else: else:
@ -789,9 +790,9 @@ class DelugeGTK(dbus.service.Object):
def shutdown(self): def shutdown(self):
enabled_plugins = ':'.join(self.plugins.get_enabled_plugins()) enabled_plugins = ':'.join(self.plugins.get_enabled_plugins())
self.pref.set('enabled_plugins', enabled_plugins) self.config.set('enabled_plugins', enabled_plugins)
self.save_window_settings() self.save_window_settings()
self.pref.save_to_file(self.conf_file) self.config.save_to_file(self.conf_file)
self.plugins.shutdown_all_plugins() self.plugins.shutdown_all_plugins()
self.manager.quit() self.manager.quit()
gtk.main_quit() gtk.main_quit()