Initial import of StatusBar
This commit is contained in:
parent
d80debfbea
commit
3270f23747
|
@ -325,7 +325,27 @@ class Core(dbus.service.Object):
|
|||
def get_listen_port(self):
|
||||
"""Returns the active listen port"""
|
||||
return self.session.listen_port()
|
||||
|
||||
|
||||
@dbus.service.method(dbus_interface="org.deluge_torrent.Deluge",
|
||||
out_signature="i")
|
||||
def get_num_connections(self):
|
||||
"""Returns the current number of connections"""
|
||||
return self.session.num_connections()
|
||||
|
||||
@dbus.service.method(dbus_interface="org.deluge_torrent.Deluge",
|
||||
out_signature="d")
|
||||
def get_download_rate(self):
|
||||
"""Returns the payload download rate"""
|
||||
# print self.session.status().payload_download_rate
|
||||
return self.session.status().payload_download_rate
|
||||
# return 0.0
|
||||
|
||||
@dbus.service.method(dbus_interface="org.deluge_torrent.Deluge",
|
||||
out_signature="d")
|
||||
def get_upload_rate(self):
|
||||
"""Returns the payload upload rate"""
|
||||
return self.session.status().payload_upload_rate
|
||||
|
||||
# Signals
|
||||
@dbus.service.signal(dbus_interface="org.deluge_torrent.Deluge",
|
||||
signature="s")
|
||||
|
|
|
@ -44,6 +44,7 @@ from torrentview import TorrentView
|
|||
from torrentdetails import TorrentDetails
|
||||
from preferences import Preferences
|
||||
from systemtray import SystemTray
|
||||
from statusbar import StatusBar
|
||||
import deluge.common
|
||||
|
||||
from deluge.log import LOG as log
|
||||
|
@ -78,6 +79,7 @@ class MainWindow:
|
|||
self.torrentdetails = TorrentDetails(self)
|
||||
self.preferences = Preferences(self)
|
||||
self.systemtray = SystemTray(self)
|
||||
self.statusbar = StatusBar(self)
|
||||
|
||||
gobject.timeout_add(1000, self.update)
|
||||
|
||||
|
@ -87,6 +89,7 @@ class MainWindow:
|
|||
return True
|
||||
self.torrentview.update()
|
||||
self.torrentdetails.update()
|
||||
self.statusbar.update()
|
||||
return True
|
||||
|
||||
def show(self):
|
||||
|
|
|
@ -0,0 +1,107 @@
|
|||
#
|
||||
# statusbar.py
|
||||
#
|
||||
# Copyright (C) 2007 Andrew Resch ('andar') <andrewresch@gmail.com>
|
||||
#
|
||||
# Deluge is free software.
|
||||
#
|
||||
# You may redistribute it and/or modify it under the terms of the
|
||||
# GNU General Public License, as published by the Free Software
|
||||
# Foundation; either version 2 of the License, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# deluge is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with deluge. If not, write to:
|
||||
# The Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# In addition, as a special exception, the copyright holders give
|
||||
# permission to link the code of portions of this program with the OpenSSL
|
||||
# library.
|
||||
# You must obey the GNU General Public License in all respects for all of
|
||||
# the code used other than OpenSSL. If you modify file(s) with this
|
||||
# exception, you may extend this exception to your version of the file(s),
|
||||
# but you are not obligated to do so. If you do not wish to do so, delete
|
||||
# this exception statement from your version. If you delete this exception
|
||||
# statement from all source files in the program, then also delete it here.
|
||||
|
||||
import gtk
|
||||
|
||||
import deluge.common
|
||||
import deluge.ui.functions as functions
|
||||
|
||||
class StatusBar:
|
||||
def __init__(self, window):
|
||||
self.window = window
|
||||
self.statusbar = self.window.main_glade.get_widget("statusbar")
|
||||
self.core = functions.get_core()
|
||||
|
||||
# Add a HBox to the statusbar after removing the initial label widget
|
||||
self.hbox = gtk.HBox()
|
||||
self.hbox.set_spacing(5)
|
||||
frame = self.statusbar.get_children()[0]
|
||||
frame.remove(frame.get_children()[0])
|
||||
frame.add(self.hbox)
|
||||
|
||||
# Add in images and labels
|
||||
image = gtk.Image()
|
||||
image.set_from_stock(gtk.STOCK_NETWORK, gtk.ICON_SIZE_MENU)
|
||||
self.hbox.pack_start(image, expand=False, fill=False)
|
||||
self.label_connections = gtk.Label()
|
||||
self.hbox.pack_start(self.label_connections, expand=False, fill=False)
|
||||
image = gtk.Image()
|
||||
image.set_from_file(deluge.common.get_pixmap("downloading16.png"))
|
||||
self.hbox.pack_start(image, expand=False, fill=False)
|
||||
self.label_download_speed = gtk.Label()
|
||||
self.hbox.pack_start(self.label_download_speed,
|
||||
expand=False, fill=False)
|
||||
image = gtk.Image()
|
||||
image.set_from_file(deluge.common.get_pixmap("seeding16.png"))
|
||||
self.hbox.pack_start(image, expand=False, fill=False)
|
||||
self.label_upload_speed = gtk.Label()
|
||||
self.hbox.pack_start(self.label_upload_speed,
|
||||
expand=False, fill=False)
|
||||
|
||||
# Update once before showing
|
||||
self.update()
|
||||
self.statusbar.show_all()
|
||||
|
||||
def update(self):
|
||||
# Set the max connections label
|
||||
max_connections = functions.get_config_value("max_connections_global",
|
||||
core=self.core)
|
||||
if max_connections < 0:
|
||||
max_connections = _("Unlimited")
|
||||
|
||||
self.label_connections.set_text("%s (%s)" % (
|
||||
self.core.get_num_connections(), max_connections))
|
||||
|
||||
# Set the download speed label
|
||||
max_download_speed = functions.get_config_value("max_download_speed",
|
||||
core=self.core)
|
||||
if max_download_speed < 0:
|
||||
max_download_speed = _("Unlimited")
|
||||
else:
|
||||
max_download_speed = "%s %s" % (max_download_speed, _("KiB/s"))
|
||||
|
||||
self.label_download_speed.set_text("%s/s (%s)" % (
|
||||
deluge.common.fsize(self.core.get_download_rate()),
|
||||
max_download_speed))
|
||||
|
||||
# Set the upload speed label
|
||||
max_upload_speed = functions.get_config_value("max_upload_speed",
|
||||
core=self.core)
|
||||
if max_upload_speed < 0:
|
||||
max_upload_speed = _("Unlimited")
|
||||
else:
|
||||
max_upload_speed = "%s %s" % (max_upload_speed, _("KiB/s"))
|
||||
|
||||
self.label_upload_speed.set_text("%s/s (%s)" % (
|
||||
deluge.common.fsize(self.core.get_upload_rate()),
|
||||
max_upload_speed))
|
|
@ -153,7 +153,8 @@ char const* session_set_max_half_open_connections_doc =
|
|||
"-1 as the limit, means to have no limit. When limiting the number of\n"
|
||||
"simultaneous connection attempts, peers will be put in a queue waiting\n"
|
||||
"for their turn to get connected.";
|
||||
|
||||
char const* session_num_connections_doc =
|
||||
"";
|
||||
char const* session_set_settings_doc =
|
||||
"";
|
||||
char const* session_set_pe_settings_doc =
|
||||
|
|
|
@ -44,6 +44,7 @@ extern char const* session_upload_rate_limit_doc;
|
|||
extern char const* session_set_max_uploads_doc;
|
||||
extern char const* session_set_max_connections_doc;
|
||||
extern char const* session_set_max_half_open_connections_doc;
|
||||
extern char const* session_num_connections_doc;
|
||||
extern char const* session_set_settings_doc;
|
||||
extern char const* session_set_pe_settings_doc;
|
||||
extern char const* session_get_pe_settings_doc;
|
||||
|
@ -209,6 +210,10 @@ void bind_session()
|
|||
"set_max_half_open_connections", allow_threads(&session::set_max_half_open_connections)
|
||||
, session_set_max_half_open_connections_doc
|
||||
)
|
||||
.def(
|
||||
"num_connections", allow_threads(&session::num_connections)
|
||||
, session_num_connections_doc
|
||||
)
|
||||
.def("set_settings", allow_threads(&session::set_settings), session_set_settings_doc)
|
||||
.def("set_pe_settings", allow_threads(&session::set_pe_settings), session_set_pe_settings_doc)
|
||||
.def("get_pe_settings", allow_threads(&session::get_pe_settings), return_value_policy<copy_const_reference>())
|
||||
|
|
Loading…
Reference in New Issue