summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorMarcos Pinto <markybob@dipconsultants.com>2008-01-22 00:53:20 +0000
committerMarcos Pinto <markybob@dipconsultants.com>2008-01-22 00:53:20 +0000
commit3946b03b8394f0735dd150a03df060132e952d81 (patch)
tree2006c681edde19d225dbfd476efa3aa490aa4718 /plugins
parent74a1f60e42bd6eb533dd19d1b705c6d960052c4e (diff)
downloaddeluge-3946b03b8394f0735dd150a03df060132e952d81.tar.gz
deluge-3946b03b8394f0735dd150a03df060132e952d81.tar.bz2
deluge-3946b03b8394f0735dd150a03df060132e952d81.zip
remove extra stats as its causing too many errors
Diffstat (limited to 'plugins')
-rw-r--r--plugins/ExtraStats/__init__.py222
-rw-r--r--plugins/ExtraStats/stats_preferences.glade132
2 files changed, 0 insertions, 354 deletions
diff --git a/plugins/ExtraStats/__init__.py b/plugins/ExtraStats/__init__.py
deleted file mode 100644
index e75ca141b..000000000
--- a/plugins/ExtraStats/__init__.py
+++ /dev/null
@@ -1,222 +0,0 @@
-# Copyright (C) 2007 - Micah Bucy <eternalsword@gmail.com>
-#
-# This program is free software; you can 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, or (at your option)
-# any later version.
-#
-# This program 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 this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-### Initialization ###
-
-plugin_name = "Extra Stats"
-plugin_author = "Micah Bucy"
-plugin_version = "0.1"
-plugin_description = _("""
-Adds info to tray tooltip.
-Adds these stats.
-total bytes downloaded
-total bytes uploaded
-overall ratio
-torrents completed
-
-All of these stats come in pairs:
-across sessions stat and within session stat.
-By default, all pairs enabled, but can be disabled in plugin preferences.
-
-session data always shows up within parenthesis
-eg. Total Downloaded: 5 GiB (4 MiB)
-would be 5 GiB across sessions and 4 MiB within session
-""")
-
-def deluge_init(deluge_path):
- global path
- path = deluge_path
-
-def enable(core, interface):
- global path
- return ExtraStats(path, core, interface)
-
-### The Plugin ###
-import gtk
-import os
-import time
-
-import deluge
-from deluge import common
-
-class ExtraStats:
- def __init__(self, path, core, interface):
- print "Found ExtraStats plugin..."
- self.manager = core
- # Create an options file and try to load existing Values
- self.config_file = os.path.join(deluge.common.CONFIG_DIR, "extra_stats.conf")
- self.config = deluge.pref.Preferences(self.config_file, False,
- {'enable_downloaded': True,
- 'enable_uploaded': True,
- 'enable_ratio': True,
- 'enable_finished': True,
- 'enable_running_time': True,
- })
- try:
- self.config.load()
- except IOError:
- # File does not exist
- pass
- self.glade = gtk.glade.XML(os.path.join(path, "stats_preferences.glade"))
- self.dialog = self.glade.get_widget("dialog")
- self.dialog.set_position(gtk.WIN_POS_CENTER)
- self.glade.signal_autoconnect({
- 'on_button_cancel_clicked': self.cancel_clicked,
- 'on_button_ok_clicked': self.ok_clicked
- })
- self.statsdir = os.path.join(common.CONFIG_DIR, 'extra_stats')
- self.tray_message = ""
- self.all_downloaded = None
- self.all_uploaded = None
- self.all_finished = None
- self.all_running_time = None
- self.finished = 0
- self.start_time = long(time.time())
- self.prepare_stats()
- self.manager.connect_event(self.manager.constants['EVENT_FINISHED'], self.handle_event)
-
- def prepare_stats(self):
- if not os.path.isdir(self.statsdir):
- os.mkdir(self.statsdir)
- if not os.path.isdir(self.statsdir):
- os.mkdir(self.statsdir)
- stats_state = os.path.join(self.statsdir, "stats.state")
- try:
- stats_file = open(stats_state, "r")
- except:
- self.all_downloaded = 0
- self.all_uploaded = 0
- self.all_finished = 0
- for unique_id in self.manager.unique_IDs.keys():
- self.all_uploaded += long(self.manager.unique_IDs[unique_id].uploaded_memory)
- state = self.manager.get_torrent_state(unique_id)
- self.all_downloaded += long(state["total_done"])
- if state['is_seed']:
- self.all_finished += 1
- self.all_running_time = 0
- else:
- readlines = stats_file.readlines()
- self.all_downloaded = long(readlines[0])
- self.all_uploaded = long(readlines[1])
- self.all_finished = int(readlines[2])
- self.all_running_time = long(readlines[3])
- stats_file.close()
-
- def configure(self, window):
- self.glade.get_widget("chk_downloaded").set_active(self.config.get("enable_downloaded"))
- self.glade.get_widget("chk_uploaded").set_active(self.config.get("enable_uploaded"))
- self.glade.get_widget("chk_ratio").set_active(self.config.get("enable_ratio"))
- self.glade.get_widget("chk_finished").set_active(self.config.get("enable_finished"))
- self.glade.get_widget("chk_running_time").set_active(self.config.get("enable_running_time"))
- self.dialog.set_transient_for(window)
- self.dialog.show()
-
- def get_tray_message(self):
- return self.tray_message
-
- def unload(self):
- self.save_stats_state(self.get_stats())
- self.manager.disconnect_event(self.manager.constants['EVENT_FINISHED'], self.handle_event)
- self.config.save(self.config_file)
-
- def handle_event(self, event):
- if event['message'] == "torrent has finished downloading":
- self.finished += 1
- self.all_finished += 1
- self.update()
-
- def get_stats(self):
- state = self.manager.get_state()
- ses_downloaded = long(state['total_downloaded'])
- ses_uploaded = long(state['total_uploaded'])
- ses_running_time = long(time.time()) - self.start_time
- all_downloaded = ses_downloaded + self.all_downloaded
- all_uploaded = ses_uploaded + self.all_uploaded
- all_running_time = ses_running_time + self.all_running_time
-
- return (ses_downloaded, ses_uploaded, ses_running_time,
- all_downloaded, all_uploaded, all_running_time)
-
- def save_stats_state(self, stats_array):
- all_downloaded, all_uploaded, all_running_time = stats_array[3:]
-
- stats_state = os.path.join(self.statsdir, "stats.state")
- stats_file = open(stats_state, "w")
- stats_file.writelines([str(all_downloaded)+'\n',
- str(all_uploaded)+'\n', str(self.all_finished)+'\n',
- str(all_running_time)+'\n'])
- stats_file.close()
-
- def update(self):
- stats_array = self.get_stats()
- ses_downloaded, ses_uploaded, ses_running_time, \
- all_downloaded, all_uploaded, all_running_time = stats_array
-
- if ses_running_time%100 == 0:
- # Store state approximately every 100 updates.
- self.save_stats_state(stats_array)
-
- downloaded = ""
- if self.config.get("enable_downloaded"):
- downloaded = "%s: %s (%s)\n" % (
- _("Total Downloaded"), common.fsize(all_downloaded),
- common.fsize(ses_downloaded))
-
- uploaded = ""
- if self.config.get("enable_uploaded"):
- uploaded = "%s: %s (%s)\n" % (
- _("Total Uploaded"), common.fsize(all_uploaded),
- common.fsize(ses_uploaded))
-
- overall_ratio = ""
- if self.config.get("enable_ratio"):
- if ses_downloaded == 0:
- ses_ratio = _("Undefined")
- else:
- ses_ratio = "%.3f" % (float(ses_uploaded)/float(ses_downloaded))
- if all_downloaded == 0:
- all_ratio = _("Undefined")
- else:
- all_ratio = "%.3f" % (float(all_uploaded)/float(all_downloaded))
- overall_ratio = "%s: %s (%s)\n" % (
- _("Overall Ratio"), all_ratio, ses_ratio)
-
- finished = ""
- if self.config.get("enable_finished"):
- finished = "%s: %s (%s)\n" % (
- _("Torrents Completed"), str(self.all_finished),
- str(self.finished))
-
- running_time = ""
- if self.config.get("enable_running_time"):
- running_time = "%s: %s (%s)\n" % (
- _("Running Time"), common.ftime(all_running_time),
- common.ftime(ses_running_time))
-
- # Copy to self.tray_message without last new line char
- self.tray_message = (downloaded + uploaded + overall_ratio + \
- finished + running_time)[:-1]
-
- def ok_clicked(self, src):
- self.dialog.hide()
- self.config.set("enable_downloaded", self.glade.get_widget("chk_downloaded").get_active())
- self.config.set("enable_uploaded", self.glade.get_widget("chk_uploaded").get_active())
- self.config.set("enable_ratio", self.glade.get_widget("chk_ratio").get_active())
- self.config.set("enable_finished", self.glade.get_widget("chk_finished").get_active())
- self.config.set("enable_running_time", self.glade.get_widget("chk_running_time").get_active())
-
- def cancel_clicked(self, src):
- self.dialog.hide()
diff --git a/plugins/ExtraStats/stats_preferences.glade b/plugins/ExtraStats/stats_preferences.glade
deleted file mode 100644
index 91493f2c0..000000000
--- a/plugins/ExtraStats/stats_preferences.glade
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--*- mode: xml -*-->
-<glade-interface>
- <widget class="GtkDialog" id="dialog">
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Extra Stats Preferences</property>
- <property name="default_width">400</property>
- <property name="default_height">150</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
- <property name="destroy_with_parent">True</property>
- <property name="skip_taskbar_hint">True</property>
- <property name="skip_pager_hint">True</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox1">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK</property>
- <property name="spacing">2</property>
- <child>
- <widget class="GtkTable" id="table1">
- <property name="visible">True</property>
- <property name="n_rows">5</property>
- <child>
- <widget class="GtkCheckButton" id="chk_downloaded">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Total Downloaded</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- </child>
- <child>
- <widget class="GtkCheckButton" id="chk_uploaded">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Total Uploaded</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="chk_ratio">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Overall Ratio</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="chk_finished">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Torrents Completed</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="chk_running_time">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Running Time</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area1">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
- <child>
- <widget class="GtkButton" id="button_cancel">
- <property name="visible">True</property>
- <property name="label">gtk-cancel</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
- <signal name="clicked" handler="on_button_cancel_clicked"/>
- </widget>
- </child>
- <child>
- <widget class="GtkButton" id="button_ok">
- <property name="visible">True</property>
- <property name="label">gtk-ok</property>
- <property name="use_stock">True</property>
- <property name="response_id">1</property>
- <signal name="clicked" handler="on_button_ok_clicked"/>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
-</glade-interface>