diff --git a/deluge/core/core.py b/deluge/core/core.py index b01780093..154eee60c 100644 --- a/deluge/core/core.py +++ b/deluge/core/core.py @@ -81,7 +81,9 @@ class Core(dbus.service.Object): log.debug("Starting main loop..") self.loop = gobject.MainLoop() self.loop.run() - + + + # Exported Methods @dbus.service.method(dbus_interface="org.deluge_torrent.Deluge", in_signature="s", out_signature="") def add_torrent_file(self, _filename): @@ -92,6 +94,8 @@ class Core(dbus.service.Object): self.session.add_torrent(torrent.torrent_info, self.config["download_location"], self.config["compact_allocation"]) + # Emit the torrent_added signal + self.torrent_added() @dbus.service.method(dbus_interface="org.deluge_torrent.Deluge", in_signature="s", out_signature="") @@ -110,4 +114,9 @@ class Core(dbus.service.Object): log.info("Shutting down core..") self.loop.quit() - + # Signals + @dbus.service.signal(dbus_interface="org.deluge_torrent.Deluge", + signature="") + def torrent_added(self): + """Emitted when a new torrent is added to the core""" + pass diff --git a/deluge/ui/gtkui/glade/main_window.glade b/deluge/ui/gtkui/glade/main_window.glade index c8981d2f9..267b5c0f1 100644 --- a/deluge/ui/gtkui/glade/main_window.glade +++ b/deluge/ui/gtkui/glade/main_window.glade @@ -251,20 +251,20 @@ True - + True gtk-preferences True True - + - + True Pl_ugins True - + True @@ -294,105 +294,28 @@ True - + True _Toolbar True True - + - + True _Details True True - + - + True Columns True - - - True - - - True - Size - True - True - - - - - - True - Status - True - True - - - - - - True - Seeders - True - True - - - - - - True - Peers - True - True - - - - - - True - Download - True - True - - - - - - True - Upload - True - True - - - - - - True - Time Remaining - True - True - - - - - - True - Share Ratio - True - True - - - - - @@ -407,12 +330,12 @@ - + True gtk-about True True - + diff --git a/deluge/ui/gtkui/glade/torrent_menu.glade b/deluge/ui/gtkui/glade/torrent_menu.glade index 70f9eebf9..21b1a7f12 100644 --- a/deluge/ui/gtkui/glade/torrent_menu.glade +++ b/deluge/ui/gtkui/glade/torrent_menu.glade @@ -5,21 +5,21 @@ True - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK gtk-media-pause True True - + - + True _Update Tracker True - + True @@ -31,12 +31,12 @@ - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK _Edit Trackers True - + True @@ -53,7 +53,7 @@ - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK _Remove Torrent @@ -75,7 +75,7 @@ - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK _Queue @@ -85,12 +85,12 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK _Top True - + True @@ -102,7 +102,7 @@ - + True _Up True @@ -118,7 +118,7 @@ - + True _Down True @@ -134,11 +134,11 @@ - + True _Bottom True - + True diff --git a/deluge/ui/gtkui/gtkui.py b/deluge/ui/gtkui/gtkui.py index dafb01097..d79d38fb7 100644 --- a/deluge/ui/gtkui/gtkui.py +++ b/deluge/ui/gtkui/gtkui.py @@ -36,7 +36,6 @@ import logging import pygtk pygtk.require('2.0') import gtk, gtk.glade -import pkg_resources from mainwindow import MainWindow @@ -48,12 +47,8 @@ class GtkUI: # Get the core proxy object from the args self.core = core - # Get the glade file for the main window - self.main_glade = gtk.glade.XML( - pkg_resources.resource_filename("deluge.ui.gtkui", "glade/main_window.glade")) - # Initialize the main window - self.main_window = MainWindow(self.main_glade) + self.main_window = MainWindow(self.core) # Show the main window self.main_window.show() diff --git a/deluge/ui/gtkui/mainwindow.py b/deluge/ui/gtkui/mainwindow.py index e9bb24ab7..345145710 100644 --- a/deluge/ui/gtkui/mainwindow.py +++ b/deluge/ui/gtkui/mainwindow.py @@ -36,13 +36,20 @@ import logging import pygtk pygtk.require('2.0') import gtk, gtk.glade +import pkg_resources # Get the logger log = logging.getLogger("deluge") class MainWindow: - def __init__(self, glade_xml): - self.main_glade = glade_xml + def __init__(self, core): + self.core = core + + # Get the glade file for the main window + self.main_glade = gtk.glade.XML( + pkg_resources.resource_filename("deluge.ui.gtkui", + "glade/main_window.glade")) + self.window = self.main_glade.get_widget("main_window") # Initialize various components of the gtkui @@ -62,7 +69,14 @@ class MainWindowMenuBar: def __init__(self, mainwindow): log.debug("MainWindowMenuBar init..") self.mainwindow = mainwindow - + self.torrentmenu = gtk.glade.XML( + pkg_resources.resource_filename("deluge.ui.gtkui", + "glade/torrent_menu.glade")) + + # Attach the torrent_menu to the Torrent file menu + self.mainwindow.main_glade.get_widget("menu_torrent").set_submenu( + self.torrentmenu.get_widget("torrent_menu")) + ### Connect Signals ### self.mainwindow.main_glade.signal_autoconnect({ ## File Menu @@ -70,10 +84,39 @@ class MainWindowMenuBar: "on_menuitem_addurl_activate": self.on_menuitem_addurl_activate, "on_menuitem_clear_activate": \ self.on_menuitem_clear_activate, - "on_menuitem_quit_activate": self.on_menuitem_quit_activate + "on_menuitem_quit_activate": self.on_menuitem_quit_activate, + + ## Edit Menu + "on_menuitem_preferences_activate": \ + self.on_menuitem_preferences_activate, + "on_menuitem_plugins_activate": self.on_menuitem_plugins_activate, + + ## View Menu + "on_menuitem_toolbar_toggled": self.on_menuitem_toolbar_toggled, + "on_menuitem_infopane_toggled": self.on_menuitem_infopane_toggled, + + ## Help Menu + "on_menuitem_about_activate": self.on_menuitem_about_activate + }) + + self.torrentmenu.signal_autoconnect({ + ## Torrent Menu + "on_menuitem_pause_activate": self.on_menuitem_pause_activate, + "on_menuitem_updatetracker_activate": \ + self.on_menuitem_updatetracker_activate, + "on_menuitem_edittrackers_activate": \ + self.on_menuitem_edittrackers_activate, + "on_menuitem_remove_activate": self.on_menuitem_remove_activate, + "on_menuitem_queuetop_activate": self.on_menuitem_queuetop_activate, + "on_menuitem_queueup_activate": self.on_menuitem_queueup_activate, + "on_menuitem_queuedown_activate": self.on_menuitem_queuedown_activate, + "on_menuitem_queuebottom_activate": \ + self.on_menuitem_queuebottom_activate }) ### Callbacks ### + + ## File Menu ## def on_menuitem_addtorrent_activate(self, data=None): log.debug("on_menuitem_addtorrent_activate") def on_menuitem_addurl_activate(self, data=None): @@ -83,6 +126,40 @@ class MainWindowMenuBar: def on_menuitem_quit_activate(self, data=None): log.debug("on_menuitem_quit_activate") self.mainwindow.quit() + + ## Edit Menu ## + def on_menuitem_preferences_activate(self, data=None): + log.debug("on_menuitem_preferences_activate") + def on_menuitem_plugins_activate(self, data=None): + log.debug("on_menuitem_plugins_activate") + + ## Torrent Menu ## + def on_menuitem_pause_activate(self, data=None): + log.debug("on_menuitem_pause_activate") + def on_menuitem_updatetracker_activate(self, data=None): + log.debug("on_menuitem_updatetracker_activate") + def on_menuitem_edittrackers_activate(self, data=None): + log.debug("on_menuitem_edittrackers_activate") + def on_menuitem_remove_activate(self, data=None): + log.debug("on_menuitem_remove_activate") + def on_menuitem_queuetop_activate(self, data=None): + log.debug("on_menuitem_queuetop_activate") + def on_menuitem_queueup_activate(self, data=None): + log.debug("on_menuitem_queueup_activate") + def on_menuitem_queuedown_activate(self, data=None): + log.debug("on_menuitem_queuedown_activate") + def on_menuitem_queuebottom_activate(self, data=None): + log.debug("on_menuitem_queuebottom_activate") + + ## View Menu ## + def on_menuitem_toolbar_toggled(self, data=None): + log.debug("on_menuitem_toolbar_toggled") + def on_menuitem_infopane_toggled(self, data=None): + log.debug("on_menuitem_infopane_toggled") + + ## Help Menu ## + def on_menuitem_about_activate(self, data=None): + log.debug("on_menuitem_about_activate") class MainWindowToolBar: def __init__(self, mainwindow):