mirror of
https://github.com/codex-storage/deluge.git
synced 2025-01-13 04:54:23 +00:00
Fix #2086 : Enable submenus for appindicator
This commit is contained in:
parent
09e43f3e41
commit
88223fc058
@ -61,6 +61,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
<property name="image">menu-item-image1</property>
|
||||
<property name="use_stock">False</property>
|
||||
<property name="always_show_image">True</property>
|
||||
<signal name="activate" handler="on_menuitem_add_torrent_activate" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
@ -109,6 +110,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
<property name="image">download-limit-image</property>
|
||||
<property name="use_stock">False</property>
|
||||
<property name="always_show_image">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
@ -120,6 +122,7 @@
|
||||
<property name="use_underline">True</property>
|
||||
<property name="image">upload-limit-image</property>
|
||||
<property name="use_stock">False</property>
|
||||
<property name="always_show_image">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
|
@ -138,10 +138,9 @@ class SystemTray(component.Component):
|
||||
self.tray.connect("activate", self.on_tray_clicked)
|
||||
self.tray.connect("popup-menu", self.on_tray_popup)
|
||||
|
||||
# For some reason these icons do not display in appindicator
|
||||
self.builder.get_object("download-limit-image").set_from_file(
|
||||
self.builder.get_object("download-limit-image").set_from_file(
|
||||
deluge.common.get_pixmap("downloading16.png"))
|
||||
self.builder.get_object("upload-limit-image").set_from_file(
|
||||
self.builder.get_object("upload-limit-image").set_from_file(
|
||||
deluge.common.get_pixmap("seeding16.png"))
|
||||
|
||||
client.register_event_handler("ConfigValueChangedEvent", self.config_value_changed)
|
||||
@ -162,16 +161,6 @@ class SystemTray(component.Component):
|
||||
self.builder.get_object("menuitem_quitdaemon").hide()
|
||||
self.builder.get_object("separatormenuitem4").hide()
|
||||
|
||||
# These do not work with appindicator currently and can crash Deluge.
|
||||
# Related to Launchpad bug #608219
|
||||
if appindicator and self.config["enable_appindicator"]:
|
||||
self.hide_widget_list.remove("menuitem_download_limit")
|
||||
self.hide_widget_list.remove("menuitem_upload_limit")
|
||||
self.hide_widget_list.remove("separatormenuitem3")
|
||||
self.builder.get_object("menuitem_download_limit").hide()
|
||||
self.builder.get_object("menuitem_upload_limit").hide()
|
||||
self.builder.get_object("separatormenuitem3").hide()
|
||||
|
||||
# Show widgets in the hide list because we've connected to a host
|
||||
for widget in self.hide_widget_list:
|
||||
self.builder.get_object(widget).show()
|
||||
@ -266,16 +255,15 @@ class SystemTray(component.Component):
|
||||
def build_tray_bwsetsubmenu(self):
|
||||
# Create the Download speed list sub-menu
|
||||
submenu_bwdownset = common.build_menu_radio_list(
|
||||
self.config["tray_download_speed_list"], self.tray_setbwdown,
|
||||
self.config["tray_download_speed_list"], self.on_tray_setbwdown,
|
||||
self.max_download_speed,
|
||||
_("KiB/s"), show_notset=True, show_other=True)
|
||||
|
||||
# Create the Upload speed list sub-menu
|
||||
submenu_bwupset = common.build_menu_radio_list(
|
||||
self.config["tray_upload_speed_list"], self.tray_setbwup,
|
||||
self.config["tray_upload_speed_list"], self.on_tray_setbwup,
|
||||
self.max_upload_speed,
|
||||
_("KiB/s"), show_notset=True, show_other=True)
|
||||
|
||||
# Add the sub-menus to the tray menu
|
||||
self.builder.get_object("menuitem_download_limit").set_submenu(
|
||||
submenu_bwdownset)
|
||||
@ -286,10 +274,6 @@ class SystemTray(component.Component):
|
||||
submenu_bwdownset.show_all()
|
||||
submenu_bwupset.show_all()
|
||||
|
||||
# Re-set the menu to partly work around Launchpad bug #608219
|
||||
if appindicator and self.config["enable_appindicator"]:
|
||||
self.indicator.set_menu(self.tray_menu)
|
||||
|
||||
def disable(self,invert_app_ind_conf=False):
|
||||
"""Disables the system tray icon or appindicator."""
|
||||
try:
|
||||
@ -399,10 +383,22 @@ class SystemTray(component.Component):
|
||||
|
||||
self.window.quit(shutdown=True)
|
||||
|
||||
def tray_setbwdown(self, widget, data=None):
|
||||
def on_tray_setbwdown(self, widget, data=None):
|
||||
if isinstance(widget, gtk.RadioMenuItem):
|
||||
#ignore previous radiomenuitem value
|
||||
if not widget.get_active():
|
||||
return
|
||||
self.setbwlimit(widget, _("Set Maximum Download Speed"), "max_download_speed",
|
||||
"tray_download_speed_list", self.max_download_speed, "downloading.svg")
|
||||
|
||||
def on_tray_setbwup(self, widget, data=None):
|
||||
if isinstance(widget, gtk.RadioMenuItem):
|
||||
#ignore previous radiomenuitem value
|
||||
if not widget.get_active():
|
||||
return
|
||||
self.setbwlimit(widget, _("Set Maximum Upload Speed"), "max_upload_speed",
|
||||
"tray_upload_speed_list", self.max_upload_speed, "seeding.svg")
|
||||
|
||||
def _on_window_hide(self, widget, data=None):
|
||||
"""_on_window_hide - update the menuitem's status"""
|
||||
log.debug("_on_window_hide")
|
||||
@ -413,26 +409,21 @@ class SystemTray(component.Component):
|
||||
log.debug("_on_window_show")
|
||||
self.builder.get_object("menuitem_show_deluge").set_active(True)
|
||||
|
||||
def tray_setbwup(self, widget, data=None):
|
||||
self.setbwlimit(widget, _("Set Maximum Upload Speed"), "max_upload_speed",
|
||||
"tray_upload_speed_list", self.max_upload_speed, "seeding.svg")
|
||||
|
||||
def setbwlimit(self, widget, string, core_key, ui_key, default, image):
|
||||
"""Sets the bandwidth limit based on the user selection."""
|
||||
value = widget.get_children()[0].get_text().rstrip(" " + _("KiB/s"))
|
||||
if value == _("Unlimited"):
|
||||
value = widget.get_children()[0].get_text().split(" ")[0]
|
||||
log.debug('setbwlimit: %s', value)
|
||||
if widget.get_name() == "unlimited":
|
||||
value = -1
|
||||
|
||||
if value == _("Other..."):
|
||||
if widget.get_name() == "other":
|
||||
value = common.show_other_dialog(string, _("KiB/s"), None, image, default)
|
||||
if value == None:
|
||||
return
|
||||
|
||||
elif value == 0:
|
||||
value = -1
|
||||
# Set the config in the core
|
||||
client.core.set_config({core_key: value})
|
||||
|
||||
self.build_tray_bwsetsubmenu()
|
||||
|
||||
def unlock_tray(self, is_showing_dlg=[False]):
|
||||
try:
|
||||
from hashlib import sha1 as sha_hash
|
||||
|
Loading…
x
Reference in New Issue
Block a user