mirror of
https://git.deluge-torrent.org/deluge
synced 2025-08-02 22:48:40 +00:00
disable the webui plugin settings and display an error message when deluge-web is missing
This commit is contained in:
parent
5c8eccdd82
commit
b46562d932
2 changed files with 44 additions and 5 deletions
|
@ -43,8 +43,6 @@ from deluge.log import LOG as log
|
||||||
from deluge.plugins.pluginbase import CorePluginBase
|
from deluge.plugins.pluginbase import CorePluginBase
|
||||||
from deluge.core.rpcserver import export
|
from deluge.core.rpcserver import export
|
||||||
|
|
||||||
from deluge.ui.web import server
|
|
||||||
|
|
||||||
DEFAULT_PREFS = {
|
DEFAULT_PREFS = {
|
||||||
"enabled": False,
|
"enabled": False,
|
||||||
"ssl": False,
|
"ssl": False,
|
||||||
|
@ -75,14 +73,29 @@ class Core(CorePluginBase):
|
||||||
|
|
||||||
def on_stop(self, *args):
|
def on_stop(self, *args):
|
||||||
self.start()
|
self.start()
|
||||||
|
|
||||||
|
@export
|
||||||
|
def got_deluge_web(self):
|
||||||
|
try:
|
||||||
|
from deluge.ui.web import server
|
||||||
|
return True
|
||||||
|
except ImportError:
|
||||||
|
return False
|
||||||
|
|
||||||
@export
|
@export
|
||||||
def start(self):
|
def start(self):
|
||||||
if not self.server:
|
if not self.server:
|
||||||
|
try:
|
||||||
|
from deluge.ui.web import server
|
||||||
|
except ImportError:
|
||||||
|
return False
|
||||||
|
|
||||||
self.server = server.DelugeWeb()
|
self.server = server.DelugeWeb()
|
||||||
|
|
||||||
self.server.port = self.config["port"]
|
self.server.port = self.config["port"]
|
||||||
self.server.https = self.config["ssl"]
|
self.server.https = self.config["ssl"]
|
||||||
self.server.start(False)
|
self.server.start(False)
|
||||||
|
return True
|
||||||
|
|
||||||
@export
|
@export
|
||||||
def stop(self):
|
def stop(self):
|
||||||
|
@ -107,11 +120,11 @@ class Core(CorePluginBase):
|
||||||
self.config.save()
|
self.config.save()
|
||||||
|
|
||||||
if action == 'start':
|
if action == 'start':
|
||||||
self.start()
|
return self.start()
|
||||||
elif action == 'stop':
|
elif action == 'stop':
|
||||||
self.stop()
|
return self.stop()
|
||||||
elif action == 'restart':
|
elif action == 'restart':
|
||||||
self.restart()
|
return self.restart()
|
||||||
|
|
||||||
@export
|
@export
|
||||||
def get_config(self):
|
def get_config(self):
|
||||||
|
|
|
@ -54,6 +54,7 @@ class GtkUI(GtkPluginBase):
|
||||||
component.get("PluginManager").register_hook("on_apply_prefs", self.on_apply_prefs)
|
component.get("PluginManager").register_hook("on_apply_prefs", self.on_apply_prefs)
|
||||||
component.get("PluginManager").register_hook("on_show_prefs", self.on_show_prefs)
|
component.get("PluginManager").register_hook("on_show_prefs", self.on_show_prefs)
|
||||||
client.webui.get_config().addCallback(self.cb_get_config)
|
client.webui.get_config().addCallback(self.cb_get_config)
|
||||||
|
client.webui.got_deluge_web().addCallback(self.cb_chk_deluge_web)
|
||||||
|
|
||||||
def disable(self):
|
def disable(self):
|
||||||
component.get("Preferences").remove_page("WebUi")
|
component.get("Preferences").remove_page("WebUi")
|
||||||
|
@ -61,6 +62,8 @@ class GtkUI(GtkPluginBase):
|
||||||
component.get("PluginManager").deregister_hook("on_show_prefs", self.on_show_prefs)
|
component.get("PluginManager").deregister_hook("on_show_prefs", self.on_show_prefs)
|
||||||
|
|
||||||
def on_apply_prefs(self):
|
def on_apply_prefs(self):
|
||||||
|
if not self.have_web:
|
||||||
|
return
|
||||||
log.debug("applying prefs for WebUi")
|
log.debug("applying prefs for WebUi")
|
||||||
config = {
|
config = {
|
||||||
"enabled": self.glade.get_widget("enabled_checkbutton").get_active(),
|
"enabled": self.glade.get_widget("enabled_checkbutton").get_active(),
|
||||||
|
@ -77,3 +80,26 @@ class GtkUI(GtkPluginBase):
|
||||||
self.glade.get_widget("enabled_checkbutton").set_active(config["enabled"])
|
self.glade.get_widget("enabled_checkbutton").set_active(config["enabled"])
|
||||||
self.glade.get_widget("ssl_checkbutton").set_active(config["ssl"])
|
self.glade.get_widget("ssl_checkbutton").set_active(config["ssl"])
|
||||||
self.glade.get_widget("port_spinbutton").set_value(config["port"])
|
self.glade.get_widget("port_spinbutton").set_value(config["port"])
|
||||||
|
|
||||||
|
def cb_chk_deluge_web(self, have_web):
|
||||||
|
self.have_web = have_web
|
||||||
|
if have_web:
|
||||||
|
return
|
||||||
|
self.glade.get_widget("settings_vbox").set_sensitive(False)
|
||||||
|
|
||||||
|
vbox = self.glade.get_widget("prefs_box")
|
||||||
|
|
||||||
|
hbox = gtk.HBox()
|
||||||
|
icon = gtk.image_new_from_stock(gtk.STOCK_DIALOG_ERROR, gtk.ICON_SIZE_SMALL_TOOLBAR)
|
||||||
|
icon.set_padding(5, 5)
|
||||||
|
hbox.pack_start(icon, False, False)
|
||||||
|
|
||||||
|
label = gtk.Label(_("The Deluge web interface is not installed, "
|
||||||
|
"please install the\ninterface and try again"))
|
||||||
|
label.set_alignment(0, 0.5)
|
||||||
|
label.set_padding(5, 5)
|
||||||
|
hbox.pack_start(label)
|
||||||
|
|
||||||
|
vbox.pack_start(hbox, False, False, 10)
|
||||||
|
vbox.reorder_child(hbox, 0)
|
||||||
|
vbox.show_all()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue