Implement 'Always show add torrent dialog' and 'Bring to focus' when

adding a torrent from an external source.
This commit is contained in:
Andrew Resch 2008-05-12 06:31:52 +00:00
parent ebebdb7132
commit 3a482b2f19
4 changed files with 63 additions and 31 deletions

View File

@ -46,16 +46,15 @@ from deluge.configmanager import ConfigManager
from deluge.log import LOG as log
import deluge.common
class AddTorrentDialog:
def __init__(self, parent=None):
class AddTorrentDialog(component.Component):
def __init__(self):
component.Component.__init__(self, "AddTorrentDialog")
self.glade = gtk.glade.XML(
pkg_resources.resource_filename(
"deluge.ui.gtkui", "glade/add_torrent_dialog.glade"))
self.dialog = self.glade.get_widget("dialog_add_torrent")
self.dialog.set_transient_for(component.get("MainWindow").window)
self.glade.signal_autoconnect({
"on_button_file_clicked": self._on_button_file_clicked,
"on_button_url_clicked": self._on_button_url_clicked,
@ -128,7 +127,39 @@ class AddTorrentDialog:
"default_private"
]
self.core_config = {}
def start(self):
self.update_core_config()
def show(self, focus=False):
self.update_core_config()
if client.is_localhost():
self.glade.get_widget("button_location").show()
self.glade.get_widget("entry_download_path").hide()
else:
self.glade.get_widget("button_location").hide()
self.glade.get_widget("entry_download_path").show()
self.dialog.set_transient_for(component.get("MainWindow").window)
self.dialog.present()
if focus:
self.dialog.window.focus()
return None
def hide(self):
self.dialog.hide()
self.files = {}
self.infos = {}
self.options = {}
self.previous_selected_torrent = None
self.torrent_liststore.clear()
self.files_treestore.clear()
self.dialog.set_transient_for(component.get("MainWindow").window)
return None
def update_core_config(self):
# Send requests to the core for these config values
for key in self.core_keys:
client.get_config_value(self._on_config_value, key)
@ -136,29 +167,14 @@ class AddTorrentDialog:
# Force a call to the core because we need this data now
client.force_call()
self.set_default_options()
def show(self):
self.dialog.show_all()
if client.is_localhost():
self.glade.get_widget("button_location").show()
self.glade.get_widget("entry_download_path").hide()
else:
self.glade.get_widget("button_location").hide()
self.glade.get_widget("entry_download_path").show()
return None
def hide(self):
self.dialog.destroy()
return None
def _on_config_value(self, value):
for key in self.core_keys:
if not self.core_config.has_key(key):
self.core_config[key] = value
break
def add_to_torrent_list(self, filenames):
def add_from_files(self, filenames):
import deluge.libtorrent as lt
import os.path
@ -210,6 +226,9 @@ class AddTorrentDialog:
self.prepare_file_store(files_list)
if self.core_config == {}:
self.update_core_config()
# Save the previous torrents options
self.save_torrent_options()
# Update the options frame
@ -454,7 +473,7 @@ class AddTorrentDialog:
return
chooser.destroy()
self.add_to_torrent_list(result)
self.add_from_files(result)
def _on_button_url_clicked(self, widget):
log.debug("_on_button_url_clicked")
@ -491,15 +510,18 @@ class AddTorrentDialog:
# add it to the list.
log.debug("url: %s", url)
if url != None:
gobject.idle_add(self.download_from_url, url)
self.add_from_url(url)
entry.set_text("")
dialog.hide()
def download_from_url(self, url):
def add_from_url(self, url):
gobject.idle_add(self._download_from_url, url)
def _download_from_url(self, url):
import urllib
filename, headers = urllib.urlretrieve(url)
self.add_to_torrent_list([filename])
self.add_from_files([filename])
def _on_button_hash_clicked(self, widget):
log.debug("_on_button_hash_clicked")
@ -553,7 +575,7 @@ class AddTorrentDialog:
client.add_torrent_file(torrent_filenames, torrent_options)
client.force_call()
self.dialog.destroy()
self.hide()
def _on_button_apply_clicked(self, widget):
log.debug("_on_button_apply_clicked")

View File

@ -48,11 +48,13 @@ elif dbus.version >= (0,80,0):
import deluge.component as component
from deluge.ui.client import aclient as client
import deluge.common
from deluge.configmanager import ConfigManager
from deluge.log import LOG as log
class DbusInterface(dbus.service.Object, component.Component):
def __init__(self, args, path="/org/deluge_torrent/Deluge"):
component.Component.__init__(self, "DbusInterface")
self.config = ConfigManager("gtkui.conf")
# Check to see if the daemon is already running and if not, start it
bus = dbus.SessionBus()
obj = bus.get_object("org.freedesktop.DBus", "/org/freedesktop/DBus")
@ -106,10 +108,18 @@ class DbusInterface(dbus.service.Object, component.Component):
if deluge.common.is_url(arg):
log.debug("Attempting to add %s from external source..",
arg)
client.add_torrent_url(arg)
if self.config["interactive_add"]:
component.get("AddTorrentDialog").add_from_url(arg)
component.get("AddTorrentDialog").show(self.config["focus_add_dialog"])
else:
client.add_torrent_url(arg)
else:
# Just a file
log.debug("Attempting to add %s from external source..",
os.path.abspath(arg))
client.add_torrent_file([os.path.abspath(arg)])
if self.config["interactive_add"]:
component.get("AddTorrentDialog").add_from_files([os.path.abspath(arg)])
component.get("AddTorrentDialog").show(self.config["focus_add_dialog"])
else:
client.add_torrent_file([os.path.abspath(arg)])

View File

@ -59,6 +59,7 @@ from signals import Signals
from pluginmanager import PluginManager
from dbusinterface import DbusInterface
from queuedtorrents import QueuedTorrents
from addtorrentdialog import AddTorrentDialog
from coreconfig import CoreConfig
import deluge.configmanager
import deluge.common
@ -146,6 +147,7 @@ class GtkUI:
self.preferences = Preferences()
self.systemtray = SystemTray()
self.statusbar = StatusBar()
self.addtorrentdialog = AddTorrentDialog()
# Start the signal receiver
self.signal_receiver = Signals()

View File

@ -201,9 +201,7 @@ class MenuBar(component.Component):
## File Menu ##
def on_menuitem_addtorrent_activate(self, data=None):
log.debug("on_menuitem_addtorrent_activate")
from addtorrentdialog import AddTorrentDialog
#client.add_torrent_file(AddTorrentDialog().run())
AddTorrentDialog().show()
component.get("AddTorrentDialog").show()
def on_menuitem_quitdaemon_activate(self, data=None):
log.debug("on_menuitem_quitdaemon_activate")