Apply patch from #1581 to add an option to enable the app indicator
interface
This commit is contained in:
parent
e81a279dc2
commit
67add964de
|
@ -2068,6 +2068,26 @@ Disabled</property>
|
||||||
<property name="position">2</property>
|
<property name="position">2</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<widget class="GtkAlignment" id="alignment32">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="left_padding">10</property>
|
||||||
|
<child>
|
||||||
|
<widget class="GtkCheckButton" id="chk_enable_appindicator">
|
||||||
|
<property name="label" translatable="yes">Enable Application Indicator</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="use_underline">True</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
</widget>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="position">3</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<widget class="GtkAlignment" id="alignment17">
|
<widget class="GtkAlignment" id="alignment17">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
@ -2088,7 +2108,7 @@ Disabled</property>
|
||||||
</widget>
|
</widget>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
<property name="position">3</property>
|
<property name="position">4</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
|
@ -2131,7 +2151,7 @@ Disabled</property>
|
||||||
</child>
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="position">4</property>
|
<property name="position">5</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
|
@ -116,6 +116,7 @@ DEFAULT_PREFS = {
|
||||||
"enable_system_tray": True,
|
"enable_system_tray": True,
|
||||||
"close_to_tray": True,
|
"close_to_tray": True,
|
||||||
"start_in_tray": False,
|
"start_in_tray": False,
|
||||||
|
"enable_appindicator": False,
|
||||||
"lock_tray": False,
|
"lock_tray": False,
|
||||||
"tray_password": "",
|
"tray_password": "",
|
||||||
"check_new_releases": True,
|
"check_new_releases": True,
|
||||||
|
|
|
@ -471,6 +471,8 @@ class Preferences(component.Component):
|
||||||
self.gtkui_config["close_to_tray"])
|
self.gtkui_config["close_to_tray"])
|
||||||
self.glade.get_widget("chk_start_in_tray").set_active(
|
self.glade.get_widget("chk_start_in_tray").set_active(
|
||||||
self.gtkui_config["start_in_tray"])
|
self.gtkui_config["start_in_tray"])
|
||||||
|
self.glade.get_widget("chk_enable_appindicator").set_active(
|
||||||
|
self.gtkui_config["enable_appindicator"])
|
||||||
self.glade.get_widget("chk_lock_tray").set_active(
|
self.glade.get_widget("chk_lock_tray").set_active(
|
||||||
self.gtkui_config["lock_tray"])
|
self.gtkui_config["lock_tray"])
|
||||||
self.glade.get_widget("chk_classic_mode").set_active(
|
self.glade.get_widget("chk_classic_mode").set_active(
|
||||||
|
@ -637,6 +639,8 @@ class Preferences(component.Component):
|
||||||
self.glade.get_widget("chk_min_on_close").get_active()
|
self.glade.get_widget("chk_min_on_close").get_active()
|
||||||
new_gtkui_config["start_in_tray"] = \
|
new_gtkui_config["start_in_tray"] = \
|
||||||
self.glade.get_widget("chk_start_in_tray").get_active()
|
self.glade.get_widget("chk_start_in_tray").get_active()
|
||||||
|
new_gtkui_config["enable_appindicator"] = \
|
||||||
|
self.glade.get_widget("chk_enable_appindicator").get_active()
|
||||||
new_gtkui_config["lock_tray"] = \
|
new_gtkui_config["lock_tray"] = \
|
||||||
self.glade.get_widget("chk_lock_tray").get_active()
|
self.glade.get_widget("chk_lock_tray").get_active()
|
||||||
passhex = sha_hash(\
|
passhex = sha_hash(\
|
||||||
|
@ -782,6 +786,7 @@ class Preferences(component.Component):
|
||||||
"spin_outgoing_port_max": False},
|
"spin_outgoing_port_max": False},
|
||||||
"chk_use_tray": {"chk_min_on_close": True,
|
"chk_use_tray": {"chk_min_on_close": True,
|
||||||
"chk_start_in_tray": True,
|
"chk_start_in_tray": True,
|
||||||
|
"chk_enable_appindicator": True,
|
||||||
"chk_lock_tray": True},
|
"chk_lock_tray": True},
|
||||||
"chk_lock_tray": {"txt_tray_password": True,
|
"chk_lock_tray": {"txt_tray_password": True,
|
||||||
"password_label": True},
|
"password_label": True},
|
||||||
|
|
|
@ -70,6 +70,10 @@ class SystemTray(component.Component):
|
||||||
]
|
]
|
||||||
self.config.register_set_function("enable_system_tray",
|
self.config.register_set_function("enable_system_tray",
|
||||||
self.on_enable_system_tray_set)
|
self.on_enable_system_tray_set)
|
||||||
|
# bit of a hack to prevent function from doing something on startup
|
||||||
|
self.__enabled_set_once = False
|
||||||
|
self.config.register_set_function("enable_appindicator",
|
||||||
|
self.on_enable_appindicator_set)
|
||||||
|
|
||||||
self.max_download_speed = -1.0
|
self.max_download_speed = -1.0
|
||||||
self.download_rate = 0.0
|
self.download_rate = 0.0
|
||||||
|
@ -103,7 +107,7 @@ class SystemTray(component.Component):
|
||||||
|
|
||||||
self.tray_menu = self.tray_glade.get_widget("tray_menu")
|
self.tray_menu = self.tray_glade.get_widget("tray_menu")
|
||||||
|
|
||||||
if appindicator:
|
if appindicator and self.config["enable_appindicator"]:
|
||||||
log.debug("Enabling the Application Indicator..")
|
log.debug("Enabling the Application Indicator..")
|
||||||
self.indicator = appindicator.Indicator (
|
self.indicator = appindicator.Indicator (
|
||||||
"deluge", "deluge", appindicator.CATEGORY_APPLICATION_STATUS)
|
"deluge", "deluge", appindicator.CATEGORY_APPLICATION_STATUS)
|
||||||
|
@ -162,7 +166,7 @@ class SystemTray(component.Component):
|
||||||
|
|
||||||
# These do not work with appindicator currently and can crash Deluge.
|
# These do not work with appindicator currently and can crash Deluge.
|
||||||
# Related to Launchpad bug #608219
|
# Related to Launchpad bug #608219
|
||||||
if appindicator:
|
if appindicator and self.config["enable_appindicator"]:
|
||||||
self.hide_widget_list.remove("menuitem_download_limit")
|
self.hide_widget_list.remove("menuitem_download_limit")
|
||||||
self.hide_widget_list.remove("menuitem_upload_limit")
|
self.hide_widget_list.remove("menuitem_upload_limit")
|
||||||
self.hide_widget_list.remove("separatormenuitem3")
|
self.hide_widget_list.remove("separatormenuitem3")
|
||||||
|
@ -200,7 +204,7 @@ class SystemTray(component.Component):
|
||||||
|
|
||||||
def shutdown(self):
|
def shutdown(self):
|
||||||
if self.config["enable_system_tray"]:
|
if self.config["enable_system_tray"]:
|
||||||
if appindicator:
|
if appindicator and self.config["enable_appindicator"]:
|
||||||
self.indicator.set_status(appindicator.STATUS_PASSIVE)
|
self.indicator.set_status(appindicator.STATUS_PASSIVE)
|
||||||
else:
|
else:
|
||||||
self.tray.set_visible(False)
|
self.tray.set_visible(False)
|
||||||
|
@ -236,7 +240,7 @@ class SystemTray(component.Component):
|
||||||
return
|
return
|
||||||
|
|
||||||
# Tool tip text not available for appindicator
|
# Tool tip text not available for appindicator
|
||||||
if appindicator:
|
if appindicator and self.config["enable_appindicator"]:
|
||||||
return
|
return
|
||||||
|
|
||||||
# Set the tool tip text
|
# Set the tool tip text
|
||||||
|
@ -285,13 +289,17 @@ class SystemTray(component.Component):
|
||||||
submenu_bwupset.show_all()
|
submenu_bwupset.show_all()
|
||||||
|
|
||||||
# Re-set the menu to partly work around Launchpad bug #608219
|
# Re-set the menu to partly work around Launchpad bug #608219
|
||||||
if appindicator:
|
if appindicator and self.config["enable_appindicator"]:
|
||||||
self.indicator.set_menu(self.tray_menu)
|
self.indicator.set_menu(self.tray_menu)
|
||||||
|
|
||||||
def disable(self):
|
def disable(self,invert_app_ind_conf=False):
|
||||||
"""Disables the system tray icon or appindicator."""
|
"""Disables the system tray icon or appindicator."""
|
||||||
try:
|
try:
|
||||||
if appindicator:
|
if invert_app_ind_conf:
|
||||||
|
app_ind_conf = not self.config["enable_appindicator"]
|
||||||
|
else:
|
||||||
|
app_ind_conf = self.config["enable_appindicator"]
|
||||||
|
if appindicator and app_ind_conf:
|
||||||
if hasattr(self, "_sig_win_hide"):
|
if hasattr(self, "_sig_win_hide"):
|
||||||
self.window.window.disconnect(self._sig_win_hide)
|
self.window.window.disconnect(self._sig_win_hide)
|
||||||
self.window.window.disconnect(self._sig_win_show)
|
self.window.window.disconnect(self._sig_win_show)
|
||||||
|
@ -323,6 +331,13 @@ class SystemTray(component.Component):
|
||||||
else:
|
else:
|
||||||
self.disable()
|
self.disable()
|
||||||
|
|
||||||
|
def on_enable_appindicator_set(self, key, value):
|
||||||
|
"""Called whenever the 'enable_appindicator' config key is modified"""
|
||||||
|
if self.__enabled_set_once:
|
||||||
|
self.disable(True)
|
||||||
|
self.enable()
|
||||||
|
self.__enabled_set_once = True
|
||||||
|
|
||||||
def on_tray_clicked(self, icon):
|
def on_tray_clicked(self, icon):
|
||||||
"""Called when the tray icon is left clicked."""
|
"""Called when the tray icon is left clicked."""
|
||||||
self.blink(False)
|
self.blink(False)
|
||||||
|
|
Loading…
Reference in New Issue