rename the graph plugin to the stats plugin
This commit is contained in:
parent
90ccd65ea9
commit
399304b8d4
|
@ -1,6 +0,0 @@
|
|||
#!/bin/bash
|
||||
mkdir temp
|
||||
export PYTHONPATH=./temp
|
||||
python setup.py build develop --install-dir ./temp
|
||||
cp ./temp/Graph.egg-link ~/.config/deluge/plugins
|
||||
rm -fr ./temp
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
mkdir temp
|
||||
export PYTHONPATH=./temp
|
||||
python setup.py develop --install-dir ./temp
|
||||
cp ./temp/Stats.egg-link ~/.config/deluge/plugins
|
||||
rm -fr ./temp
|
|
@ -39,18 +39,18 @@ from setuptools import setup
|
|||
__author__ = "Martijn Voncken <mvoncken@gmail.com>"
|
||||
|
||||
setup(
|
||||
name="Graph",
|
||||
name="Stats",
|
||||
version="0.1",
|
||||
description=__doc__,
|
||||
author=__author__,
|
||||
packages=["graph"],
|
||||
package_data = {"graph": ["template/*","data/*"]},
|
||||
packages=["stats"],
|
||||
package_data = {"stats": ["template/*","data/*"]},
|
||||
entry_points="""
|
||||
[deluge.plugin.core]
|
||||
Graph = graph:CorePlugin
|
||||
Stats = stats:CorePlugin
|
||||
[deluge.plugin.webui]
|
||||
Graph = graph:WebUIPlugin
|
||||
Stats = stats:WebUIPlugin
|
||||
[deluge.plugin.gtkui]
|
||||
Graph = graph:GtkUIPlugin
|
||||
Stats = stats:GtkUIPlugin
|
||||
"""
|
||||
)
|
|
@ -62,8 +62,8 @@ class Core(CorePluginBase):
|
|||
self.core = component.get("Core")
|
||||
self.stats ={}
|
||||
|
||||
self.config = configmanager.ConfigManager("graph.conf", DEFAULT_PREFS)
|
||||
self.saved_stats = configmanager.ConfigManager("graph.totals", DEFAULT_TOTALS)
|
||||
self.config = configmanager.ConfigManager("stats.conf", DEFAULT_PREFS)
|
||||
self.saved_stats = configmanager.ConfigManager("stats.totals", DEFAULT_TOTALS)
|
||||
if self.totals == {}:
|
||||
self.totals.update(self.saved_stats.config)
|
||||
|
|
@ -35,12 +35,9 @@
|
|||
"""
|
||||
port of old plugin by markybob.
|
||||
"""
|
||||
import cairo
|
||||
import math
|
||||
from deluge.log import LOG as log
|
||||
import deluge.common
|
||||
import time
|
||||
from datetime import datetime
|
||||
import cairo
|
||||
from deluge.log import LOG as log
|
||||
from deluge.ui.client import aclient
|
||||
|
||||
black = (0, 0, 0)
|
||||
|
@ -94,8 +91,8 @@ class Graph:
|
|||
}
|
||||
|
||||
def async_request(self):
|
||||
aclient.graph_get_stats(self.set_stats, self.stat_info.keys())
|
||||
aclient.graph_get_config(self.set_config)
|
||||
aclient.stats_get_stats(self.set_stats, self.stat_info.keys())
|
||||
aclient.stats_get_config(self.set_config)
|
||||
|
||||
def set_stats(self, stats):
|
||||
self.stats = stats
|
||||
|
@ -104,6 +101,17 @@ class Graph:
|
|||
self.length = config["length"]
|
||||
self.interval = config["update_interval"]
|
||||
|
||||
def draw_to_context(self, context, width, height):
|
||||
self.ctx = context
|
||||
self.width, self.height = width, height
|
||||
self.draw_rect(white, 0, 0, self.width, self.height)
|
||||
self.draw_x_axis()
|
||||
self.draw_left_axis()
|
||||
|
||||
if self.legend_selected:
|
||||
self.draw_legend()
|
||||
return self.ctx
|
||||
|
||||
def draw(self, width, height):
|
||||
self.width = width
|
||||
self.height = height
|
||||
|
@ -155,14 +163,15 @@ class Graph:
|
|||
max_value = self.left_axis['min']
|
||||
|
||||
height = self.height - self.line_size - 22
|
||||
high = float(max_value)
|
||||
ratio = height / high
|
||||
#max_value = float(round(max_value, len(str(max_value)) * -1))
|
||||
max_value = float(max_value)
|
||||
ratio = height / max_value
|
||||
|
||||
for i in xrange(1, 6):
|
||||
y = int(ratio * ((high / 5) * i)) - 0.5
|
||||
y = int(ratio * ((max_value / 5) * i)) - 0.5
|
||||
if i < 5:
|
||||
self.draw_dotted_line(gray, 60, y, self.width, y)
|
||||
text = self.left_axis['formatter']((high / 5) * (5 - i))
|
||||
text = self.left_axis['formatter']((max_value / 5) * (5 - i))
|
||||
self.draw_text(text, 0, y - 6)
|
||||
self.draw_dotted_line(gray, 60.5, 20, 60.5, self.height - 20)
|
||||
|
|
@ -34,37 +34,77 @@
|
|||
# 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
|
||||
|
||||
from deluge.log import LOG as log
|
||||
from deluge.ui.client import aclient
|
||||
import gtk
|
||||
import gobject
|
||||
from gtk.glade import XML
|
||||
|
||||
import graph
|
||||
from deluge import component
|
||||
from deluge.log import LOG as log
|
||||
from deluge.common import fspeed
|
||||
from deluge.ui.client import aclient
|
||||
from deluge.ui.gtkui.torrentdetails import Tab
|
||||
|
||||
class GraphsTab(Tab):
|
||||
def __init__(self, glade):
|
||||
Tab.__init__(self)
|
||||
self._name = 'Graphs'
|
||||
self.glade = glade
|
||||
self.window = self.glade.get_widget('graph_tab')
|
||||
self.notebook = self.glade.get_widget('graph_notebook')
|
||||
self.label = self.glade.get_widget('graph_label')
|
||||
self.bandwidth_graph = self.glade.get_widget('bandwidth_graph')
|
||||
self.bandwidth_graph.connect('expose_event', self.bandwidth_expose)
|
||||
self.window.unparent()
|
||||
self.label.unparent()
|
||||
|
||||
def bandwidth_expose(self, widget, event):
|
||||
self.graph_widget = self.bandwidth_graph
|
||||
self.graph = graph.Graph()
|
||||
self.graph.add_stat('download_rate', color=graph.green)
|
||||
self.graph.add_stat('upload_rate', color=graph.blue)
|
||||
self.graph.set_left_axis(formatter=fspeed, min=10240)
|
||||
self.update_timer = gobject.timeout_add(2000, self.update_graph)
|
||||
self.update_graph()
|
||||
|
||||
def update_graph(self):
|
||||
width, height = self.graph_widget.allocation.width, self.graph_widget.allocation.height
|
||||
context = self.graph_widget.window.cairo_create()
|
||||
self.graph.async_request()
|
||||
aclient.force_call(True)
|
||||
self.graph.draw_to_context(context, width, height)
|
||||
return True
|
||||
|
||||
class GtkUI(object):
|
||||
def __init__(self, plugin_api, plugin_name):
|
||||
log.debug("Calling Graph UI init")
|
||||
log.debug("Calling Stats UI init")
|
||||
self.plugin = plugin_api
|
||||
|
||||
def enable(self):
|
||||
self.glade = gtk.glade.XML(self.get_resource("config.glade"))
|
||||
|
||||
self.plugin.add_preferences_page("Graph", self.glade.get_widget("prefs_box"))
|
||||
self.glade = XML(self.get_resource("config.glade"))
|
||||
self.plugin.add_preferences_page("Stats", self.glade.get_widget("prefs_box"))
|
||||
self.plugin.register_hook("on_apply_prefs", self.on_apply_prefs)
|
||||
self.plugin.register_hook("on_show_prefs", self.on_show_prefs)
|
||||
self.on_show_prefs()
|
||||
|
||||
self.graphs_tab = GraphsTab(XML(self.get_resource("tabs.glade")))
|
||||
self.torrent_details = component.get('TorrentDetails')
|
||||
self.torrent_details.notebook.append_page(self.graphs_tab.window, self.graphs_tab.label)
|
||||
|
||||
def disable(self):
|
||||
self.plugin.remove_preferences_page("Graph")
|
||||
self.plugin.remove_preferences_page("Stats")
|
||||
self.plugin.deregister_hook("on_apply_prefs", self.on_apply_prefs)
|
||||
self.plugin.deregister_hook("on_show_prefs", self.on_show_prefs)
|
||||
|
||||
def on_apply_prefs(self):
|
||||
log.debug("applying prefs for Graph")
|
||||
log.debug("applying prefs for Stats")
|
||||
config = {
|
||||
"test":self.glade.get_widget("txt_test").get_text()
|
||||
}
|
||||
aclient.graph_set_config(None, config)
|
||||
aclient.stats_set_config(None, config)
|
||||
|
||||
def on_show_prefs(self):
|
||||
aclient.graph_get_config(self.cb_get_config)
|
||||
aclient.stats_get_config(self.cb_get_config)
|
||||
|
||||
def cb_get_config(self, config):
|
||||
"callback for on show_prefs"
|
||||
|
@ -72,4 +112,4 @@ class GtkUI(object):
|
|||
|
||||
def get_resource(self, filename):
|
||||
import pkg_resources, os
|
||||
return pkg_resources.resource_filename("graph", os.path.join("data", filename))
|
||||
return pkg_resources.resource_filename("stats", os.path.join("data", filename))
|
|
@ -49,7 +49,7 @@ forms = api.forms
|
|||
class graph_page:
|
||||
@api.deco.deluge_page
|
||||
def GET(self, args):
|
||||
return api.render.graph.graph()
|
||||
return api.render.stats.graph()
|
||||
|
||||
class network_png:
|
||||
@api.deco.check_session
|
||||
|
@ -103,12 +103,12 @@ class WebUI(WebUIPluginBase):
|
|||
]
|
||||
|
||||
def enable(self):
|
||||
api.config_page_manager.register('plugins', 'graph' ,ConfigForm)
|
||||
api.menu_manager.register_admin_page("graph", _("Graph"), "/graph") #<--top menu
|
||||
api.config_page_manager.register('plugins', 'stats' ,ConfigForm)
|
||||
api.menu_manager.register_admin_page("stats", _("Stats"), "/graph") #<--top menu
|
||||
|
||||
def disable(self):
|
||||
api.config_page_manager.deregister('graph2')
|
||||
api.menu_manager.deregister_admin_page("graph2") #<--top menu
|
||||
api.config_page_manager.deregister('stats')
|
||||
api.menu_manager.deregister_admin_page("stats") #<--top menu
|
||||
|
||||
|
||||
class ConfigForm(forms.Form):
|
Loading…
Reference in New Issue