mirror of
https://github.com/codex-storage/deluge.git
synced 2025-01-26 19:32:21 +00:00
more improvements to the connection manager, ui actually starts running after a connect now.
This commit is contained in:
parent
b6dee74dd5
commit
1ff29a134c
@ -1,11 +1,28 @@
|
||||
Deluge.Connections = {
|
||||
onClose: function(e) {
|
||||
$clear(Deluge.Connections.running);
|
||||
Deluge.Connections.Window.hide();
|
||||
},
|
||||
|
||||
onConnect: function(e) {
|
||||
$clear(Deluge.Connections.running);
|
||||
Deluge.Connections.Window.hide();
|
||||
var selected = Deluge.Connections.Grid.getSelectionModel().getSelected();
|
||||
var id = selected.id;
|
||||
Deluge.Client.web.connect(id, {
|
||||
onSuccess: function(methods) {
|
||||
Deluge.Client = new JSON.RPC('/json', {
|
||||
methods: methods
|
||||
});
|
||||
Deluge.Ui.run();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
onSelect: function(selModel, rowIndex, record) {
|
||||
Deluge.Connections.selectedRow = rowIndex;
|
||||
},
|
||||
|
||||
onShow: function(window) {
|
||||
Deluge.Connections.running = Deluge.Connections.runCheck.periodical(2000);
|
||||
Deluge.Connections.runCheck();
|
||||
@ -19,6 +36,8 @@ Deluge.Connections = {
|
||||
|
||||
onGetHosts: function(hosts) {
|
||||
Deluge.Connections.Store.loadData(hosts);
|
||||
var selection = Deluge.Connections.Grid.getSelectionModel();
|
||||
selection.selectRow(Deluge.Connections.selectedRow);
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,7 +47,8 @@ Deluge.Connections.Store = new Ext.data.SimpleStore({
|
||||
{name: 'host', mapping: 1},
|
||||
{name: 'port', mapping: 2},
|
||||
{name: 'version', mapping: 6}
|
||||
]
|
||||
],
|
||||
id: 0
|
||||
});
|
||||
|
||||
var renderHost = function(value, p, r) {
|
||||
@ -44,6 +64,10 @@ Deluge.Connections.Grid = new Ext.grid.GridPanel({
|
||||
{header: "Version", width: 75, sortable: true, renderer: Deluge.Formatters.plain, dataIndex: 'version'}
|
||||
],
|
||||
stripeRows: true,
|
||||
selModel: new Ext.grid.RowSelectionModel({
|
||||
singleSelect: true,
|
||||
listeners: {'rowselect': Deluge.Connections.onSelect}
|
||||
}),
|
||||
autoExpandColumn: 'host',
|
||||
deferredRender:false,
|
||||
autoScroll:true,
|
||||
@ -69,6 +93,7 @@ Deluge.Connections.Window = new Ext.Window({
|
||||
handler: Deluge.Connections.onConnect
|
||||
}],
|
||||
listeners: {
|
||||
'hide': Deluge.Connections.onClose,
|
||||
'show': Deluge.Connections.onShow
|
||||
}
|
||||
});
|
@ -67,7 +67,7 @@ Deluge.Ui = {
|
||||
]);
|
||||
});
|
||||
Deluge.Torrents.store.loadData(torrents);
|
||||
this.updateStatusBar(data['stats']);
|
||||
//this.updateStatusBar(data['stats']);
|
||||
this.errorCount = 0;
|
||||
},
|
||||
|
||||
|
@ -146,7 +146,8 @@ class JSON(resource.Resource):
|
||||
"web.get_torrent_info": self.get_torrent_info,
|
||||
"web.add_torrents": self.add_torrents,
|
||||
"web.login": self.login,
|
||||
"web.get_hosts": self.get_hosts
|
||||
"web.get_hosts": self.get_hosts,
|
||||
"web.connect": self.connect
|
||||
}
|
||||
for entry in open(common.get_default_config_dir("auth")):
|
||||
parts = entry.split(":")
|
||||
@ -160,19 +161,23 @@ class JSON(resource.Resource):
|
||||
self.local_username = username
|
||||
self.local_password = password
|
||||
|
||||
def connect(self, host="localhost", port=58846, username=None, password=None):
|
||||
def _connect(self, host="localhost", port=58846, username=None, password=None):
|
||||
"""
|
||||
Connects the client to a daemon
|
||||
"""
|
||||
username = username or self.local_username
|
||||
password = password or self.local_password
|
||||
d = client.connect(host=host, username=username, password=password)
|
||||
d = Deferred()
|
||||
_d = client.connect(host=host, username=username, password=password)
|
||||
|
||||
def on_get_methods(methods):
|
||||
"""
|
||||
Handles receiving the method names
|
||||
"""
|
||||
self._remote_methods = methods
|
||||
methods = list(self._remote_methods)
|
||||
methods.extend(self._local_methods)
|
||||
d.callback(methods)
|
||||
|
||||
def on_client_connected(connection_id):
|
||||
"""
|
||||
@ -181,7 +186,8 @@ class JSON(resource.Resource):
|
||||
"""
|
||||
d = client.daemon.get_method_list()
|
||||
d.addCallback(on_get_methods)
|
||||
d.addCallback(on_client_connected)
|
||||
_d.addCallback(on_client_connected)
|
||||
return d
|
||||
|
||||
def _exec_local(self, method, params):
|
||||
"""
|
||||
@ -294,6 +300,16 @@ class JSON(resource.Resource):
|
||||
except Exception, e:
|
||||
return self._on_json_request_failed(e, request)
|
||||
|
||||
def connect(self, host_id):
|
||||
d = Deferred()
|
||||
def on_connected(methods):
|
||||
d.callback(methods)
|
||||
for host in hostlist["hosts"]:
|
||||
if host_id != host[0]:
|
||||
continue
|
||||
self._connect(*host[1:]).addCallback(on_connected)
|
||||
return d
|
||||
|
||||
def update_ui(self, keys, filter_dict, cache_id=None):
|
||||
|
||||
ui_info = {
|
||||
@ -406,7 +422,7 @@ class JSON(resource.Resource):
|
||||
d.addErrback(on_info_fail, c)
|
||||
|
||||
def on_connect_failed(reason, host_id):
|
||||
print reason
|
||||
log.exception(reason)
|
||||
hosts[host_id][5] = _("Offline")
|
||||
run_check()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user