diff --git a/glade/delugegtk.glade b/glade/delugegtk.glade
index 7411423c5..87dc8571b 100644
--- a/glade/delugegtk.glade
+++ b/glade/delugegtk.glade
@@ -13,712 +13,168 @@
4
3
-
+
True
+ False
-
+
True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
-
-
- True
- False
- GTK_POLICY_AUTOMATIC
- GTK_POLICY_AUTOMATIC
-
-
- True
- True
- True
- True
- False
-
-
-
-
+ Add Torrent
+ Add
+ True
+ gtk-add
+
- False
- False
+ False
-
+
True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
-
-
- True
- False
- True
-
-
- True
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- GTK_POLICY_AUTOMATIC
- GTK_POLICY_NEVER
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- GTK_RESIZE_QUEUE
-
-
- True
- 1
- 2
- 10
-
-
- True
- 0
-
-
- True
- 10
- 10
- 15
- 15
-
-
- True
- 5
-
-
- True
- 0.10000000149
-
-
- False
- False
-
-
-
-
- True
- 4
- 4
- 5
-
-
- True
- 0
-
-
- 1
- 2
-
-
-
-
- True
- 0
-
-
- 3
- 4
-
-
-
-
- True
- 0
-
-
- 1
- 2
- 1
- 2
-
-
-
-
- True
- 0
-
-
- 3
- 4
- 1
- 2
-
-
-
-
- True
- 0
-
-
- 1
- 2
- 2
- 3
-
-
-
-
- True
- 0
-
-
- 3
- 4
- 2
- 3
-
-
-
-
- True
- 0
-
-
- 1
- 2
- 3
- 4
-
-
-
-
- True
- 0
-
-
- 3
- 4
- 3
- 4
-
-
-
-
- True
- 5
-
-
- True
- 0
- <b>Downloaded:</b>
- True
-
-
-
-
-
-
- True
- 5
-
-
- True
- 0
- <b>Uploaded:</b>
- True
-
-
-
-
- 1
- 2
-
-
-
-
- True
- 5
-
-
- True
- 0
- <b>Seeders:</b>
- True
-
-
-
-
- 2
- 3
-
-
-
-
- True
- 5
-
-
- True
- 0
- <b>Share Ratio:</b>
- True
-
-
-
-
- 3
- 4
-
-
-
-
- True
- 15
- 5
-
-
- True
- 0
- <b>Speed:</b>
- True
-
-
-
-
- 2
- 3
-
-
-
-
- True
- 15
- 5
-
-
- True
- 0
- <b>Speed:</b>
- True
-
-
-
-
- 2
- 3
- 1
- 2
-
-
-
-
- True
- 15
- 5
-
-
- True
- 0
- <b>Peers:</b>
- True
-
-
-
-
- 2
- 3
- 2
- 3
-
-
-
-
- True
- 15
- 5
-
-
- True
- 0
- <b>ETA:</b>
- True
-
-
-
-
- 2
- 3
- 3
- 4
-
-
-
-
- False
- 1
-
-
-
-
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- <b>Statistics</b>
- True
-
-
- label_item
-
-
-
-
-
- GTK_FILL
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 0
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 10
- 10
- 15
- 15
-
-
- True
- 6
- 2
- 2
-
-
- True
- 0
-
-
- 1
- 2
- 5
- 6
-
-
-
-
-
- True
- 0
-
-
- 1
- 2
- 4
- 5
-
-
-
-
-
- True
- 0
- True
- PANGO_WRAP_WORD_CHAR
-
-
- 1
- 2
- 3
- 4
-
-
-
-
-
- True
- 0
-
-
- 1
- 2
- 2
- 3
-
-
-
-
-
- True
- 0
-
-
- 1
- 2
- 1
- 2
-
-
-
-
-
- True
- 0
- True
- PANGO_WRAP_WORD_CHAR
-
-
- 1
- 2
-
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
-
- True
- 0
- 0
- 1
- <b>Name:</b>
- True
-
-
-
-
- GTK_FILL
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
-
- True
- 0
- 1
- <b>Total Size:</b>
- True
-
-
-
-
- 1
- 2
- GTK_FILL
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
-
- True
- 0
- 1
- <b>Pieces:</b>
- True
-
-
-
-
- 2
- 3
- GTK_FILL
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
-
- True
- 0
- 0
- 1
- <b>Tracker:</b>
- True
-
-
-
-
- 3
- 4
- GTK_FILL
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
-
- True
- 0
- 1
- <b>Tracker Status:</b>
- True
-
-
-
-
- 4
- 5
- GTK_FILL
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- 5
-
-
- True
- 0
- 1
- <b>Next Announce:</b>
- True
-
-
-
-
- 5
- 6
- GTK_FILL
-
-
-
-
-
-
-
-
- True
- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
- <b>Torrent Info</b>
- True
-
-
- label_item
-
-
-
-
- 1
- 2
- GTK_FILL
-
-
-
-
-
-
-
-
- False
-
-
-
-
- True
- Details
-
-
- tab
- False
- False
-
-
-
-
- True
- False
- GTK_POLICY_AUTOMATIC
- GTK_POLICY_AUTOMATIC
-
-
- True
-
-
-
-
- 1
- False
-
-
-
-
- True
- Peers
-
-
- tab
- 1
- False
- False
-
-
-
-
- True
- False
- GTK_POLICY_AUTOMATIC
- GTK_POLICY_AUTOMATIC
-
-
- True
- True
-
-
-
-
- 2
- False
-
-
-
-
- True
- Files
-
-
- tab
- 2
- False
- False
-
-
-
-
+ False
+ Remove Torrent
+ Remove
+ True
+ gtk-remove
+
- False
- False
+ False
+
+
+
+
+ True
+ Clear Finished Torrents
+ Clear
+ True
+ gtk-clear
+
+
+
+ False
+
+
+
+
+ True
+
+
+ False
+ False
+
+
+
+
+ True
+ False
+ Start or Pause torrent
+ Start
+ True
+ gtk-media-play
+
+
+
+ False
+
+
+
+
+ True
+ False
+ Queue Torrent Up
+ Up
+ True
+ gtk-go-up
+
+
+
+ False
+
+
+
+
+ True
+ False
+ Queue Torrent Down
+ Down
+ True
+ gtk-go-down
+
+
+
+ False
+
+
+
+
+ True
+
+
+ False
+ False
+
+
+
+
+ True
+ Change Deluge preferences
+ Preferences
+ True
+ gtk-preferences
+
+
+
+ False
+
+
+
+
+ True
+ Open the plugins dialog
+ Plugins
+ True
+ gtk-disconnect
+
+
+
+ False
- 3
- 2
- 3
+ 1
+ 2
+ GTK_FILL
-
+
True
+ False
+ 1
+ 2
+ 1
+ 2
+ GTK_FILL
+ GTK_FILL
+
+
+
+
+ True
+ False
+
+
+ 2
3
- 3
- 4
-
+ 1
+ 2
+
+ GTK_FILL
@@ -995,168 +451,784 @@
-
+
True
- False
- 2
3
- 1
- 2
-
- GTK_FILL
+ 3
+ 4
+
-
+
True
- False
-
-
- 1
- 2
- 1
- 2
- GTK_FILL
- GTK_FILL
-
-
-
-
- True
- False
-
+
True
- Add Torrent
- Add
- True
- gtk-add
-
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ True
+ False
+ GTK_POLICY_AUTOMATIC
+ GTK_POLICY_AUTOMATIC
+
+
+ True
+ True
+ True
+ True
+ False
+
+
+
+
- False
+ False
+ False
-
+
True
- False
- Remove Torrent
- Remove
- True
- gtk-remove
-
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ True
+ False
+ True
+
+
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ GTK_POLICY_AUTOMATIC
+ GTK_POLICY_NEVER
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ GTK_RESIZE_QUEUE
+
+
+ True
+ 1
+ 2
+ 10
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 0
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 10
+ 10
+ 15
+ 15
+
+
+ True
+ 8
+ 2
+ 2
+
+
+ True
+ 0
+ True
+ PANGO_WRAP_WORD_CHAR
+
+
+ 1
+ 2
+ 4
+ 5
+
+
+
+
+
+ True
+ 0
+ True
+ PANGO_WRAP_WORD_CHAR
+
+
+ 1
+ 2
+ 3
+ 4
+
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+ 1
+ <b>Next Announce:</b>
+ True
+
+
+
+
+ 7
+ 8
+ GTK_FILL
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+ 1
+ <b>Tracker Status:</b>
+ True
+
+
+
+
+ 6
+ 7
+ GTK_FILL
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+ 1
+ <b>Tracker:</b>
+ True
+
+
+
+
+ 5
+ 6
+ GTK_FILL
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+ 1
+ <b>Availability:</b>
+ True
+
+
+
+
+ 4
+ 5
+ GTK_FILL
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+ 0
+ 1
+ <b>Piece Size:</b>
+ True
+
+
+
+
+ 3
+ 4
+ GTK_FILL
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+ 1
+ <b>Pieces:</b>
+ True
+
+
+
+
+ 2
+ 3
+ GTK_FILL
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+ 1
+ <b>Total Size:</b>
+ True
+
+
+
+
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ 0
+ 0
+ 1
+ <b>Name:</b>
+ True
+
+
+
+
+ GTK_FILL
+
+
+
+
+ True
+ 0
+ True
+ PANGO_WRAP_WORD_CHAR
+
+
+ 1
+ 2
+
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 1
+ 2
+
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 2
+ 3
+
+
+
+
+
+ True
+ 0
+ True
+ PANGO_WRAP_WORD_CHAR
+
+
+ 1
+ 2
+ 5
+ 6
+
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 6
+ 7
+
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 7
+ 8
+
+
+
+
+
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ <b>Torrent Info</b>
+ True
+
+
+ label_item
+
+
+
+
+ 1
+ 2
+ GTK_FILL
+
+
+
+
+ True
+ 0
+
+
+ True
+ 10
+ 10
+ 15
+ 15
+
+
+ True
+ 5
+
+
+ True
+ 0.10000000149
+
+
+ False
+ False
+
+
+
+
+ True
+ 4
+ 4
+ 5
+
+
+ True
+ 15
+ 5
+
+
+ True
+ 0
+ <b>ETA:</b>
+ True
+
+
+
+
+ 2
+ 3
+ 3
+ 4
+
+
+
+
+ True
+ 15
+ 5
+
+
+ True
+ 0
+ <b>Peers:</b>
+ True
+
+
+
+
+ 2
+ 3
+ 2
+ 3
+
+
+
+
+ True
+ 15
+ 5
+
+
+ True
+ 0
+ <b>Speed:</b>
+ True
+
+
+
+
+ 2
+ 3
+ 1
+ 2
+
+
+
+
+ True
+ 15
+ 5
+
+
+ True
+ 0
+ <b>Speed:</b>
+ True
+
+
+
+
+ 2
+ 3
+
+
+
+
+ True
+ 5
+
+
+ True
+ 0
+ <b>Share Ratio:</b>
+ True
+
+
+
+
+ 3
+ 4
+
+
+
+
+ True
+ 5
+
+
+ True
+ 0
+ <b>Seeders:</b>
+ True
+
+
+
+
+ 2
+ 3
+
+
+
+
+ True
+ 5
+
+
+ True
+ 0
+ <b>Uploaded:</b>
+ True
+
+
+
+
+ 1
+ 2
+
+
+
+
+ True
+ 5
+
+
+ True
+ 0
+ <b>Downloaded:</b>
+ True
+
+
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+ 3
+ 4
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 3
+ 4
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+ 2
+ 3
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 2
+ 3
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+ 1
+ 2
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+ 1
+ 2
+
+
+
+
+ True
+ 0
+
+
+ 3
+ 4
+
+
+
+
+ True
+ 0
+
+
+ 1
+ 2
+
+
+
+
+ False
+ 1
+
+
+
+
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ <b>Statistics</b>
+ True
+
+
+ label_item
+
+
+
+
+
+ GTK_FILL
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+ True
+ Details
+
+
+ tab
+ False
+ False
+
+
+
+
+ True
+ False
+ GTK_POLICY_AUTOMATIC
+ GTK_POLICY_AUTOMATIC
+
+
+ True
+
+
+
+
+ 1
+ False
+
+
+
+
+ True
+ Peers
+
+
+ tab
+ 1
+ False
+ False
+
+
+
+
+ True
+ False
+ GTK_POLICY_AUTOMATIC
+ GTK_POLICY_AUTOMATIC
+
+
+ True
+ True
+
+
+
+
+ 2
+ False
+
+
+
+
+ True
+ Files
+
+
+ tab
+ 2
+ False
+ False
+
+
+
+
- False
-
-
-
-
- True
- Clear Finished Torrents
- Clear
- True
- gtk-clear
-
-
-
- False
-
-
-
-
- True
-
-
- False
- False
-
-
-
-
- True
- False
- Start or Pause torrent
- Start
- True
- gtk-media-play
-
-
-
- False
-
-
-
-
- True
- False
- Queue Torrent Up
- Up
- True
- gtk-go-up
-
-
-
- False
-
-
-
-
- True
- False
- Queue Torrent Down
- Down
- True
- gtk-go-down
-
-
-
- False
-
-
-
-
- True
-
-
- False
- False
-
-
-
-
- True
- Change Deluge preferences
- Preferences
- True
- gtk-preferences
-
-
-
- False
-
-
-
-
- True
- Open the plugins dialog
- Plugins
- True
- gtk-disconnect
-
-
-
- False
+ False
+ False
- 1
- 2
- GTK_FILL
+ 3
+ 2
+ 3
diff --git a/src/core.py b/src/core.py
index 615358987..b6ccf9c79 100644
--- a/src/core.py
+++ b/src/core.py
@@ -651,9 +651,6 @@ class Manager:
# when needed, and perhaps only once in a long while (they are mostly just
# approximations anyhow
- def calc_availability(self, unique_ID):
- return deluge_stats.calc_availability(self.get_core_torrent_peer_info(unique_ID))
-
def calc_swarm_speed(self, unique_ID):
pieces_per_sec = deluge_stats.calc_swarm_speed(self.get_core_torrent_peer_info(unique_ID))
piece_length = self.get_core_torrent_state(unique_ID)
diff --git a/src/deluge_stats.py b/src/deluge_stats.py
index 5f023a250..5cc3f6f98 100644
--- a/src/deluge_stats.py
+++ b/src/deluge_stats.py
@@ -34,24 +34,6 @@ import time
old_peer_info = None
old_peer_info_timestamp = None
-# Availability - how many complete copies are among our peers
-def calc_availability(peer_info):
- if len(peer_info) == 0:
- return 0
-
- num_pieces = len(peer_info[0].pieces)
-
- freqs = [0]*num_pieces
-
- for peer in peer_info:
- for piece in num_pieces:
- freqs[piece] = freqs[piece] + peer['pieces'][piece]
-
- minimum = min(freqs)
-# frac = freqs.count(minimum + 1) # Does this mean something?
-
- return minimum
-
# Swarm speed - try to guess the speed of the entire swarm
# We return #pieces / second. The calling function should convert pieces to KB, if it wants
# Note that we return the delta from the last call. If the client calls too soon, this may
diff --git a/src/interface.py b/src/interface.py
index 57c8423ea..feef9335b 100644
--- a/src/interface.py
+++ b/src/interface.py
@@ -613,6 +613,8 @@ class DelugeGTK:
self.text_summary_name = self.wtree.get_widget("summary_name")
self.text_summary_total_size = self.wtree.get_widget("summary_total_size")
self.text_summary_pieces = self.wtree.get_widget("summary_pieces")
+ self.text_summary_piece_size = self.wtree.get_widget("summary_piece_size")
+ self.text_summary_availability = self.wtree.get_widget("summary_availability")
self.text_summary_total_downloaded = self.wtree.get_widget("summary_total_downloaded")
self.text_summary_total_uploaded = self.wtree.get_widget("summary_total_uploaded")
self.text_summary_download_speed = self.wtree.get_widget("summary_download_speed")
@@ -997,6 +999,8 @@ class DelugeGTK:
self.wtree.get_widget("summary_name").set_text(state['name'])
self.text_summary_total_size.set_text(common.fsize(state["total_wanted"]))
self.text_summary_pieces.set_text(str(state["num_pieces"]))
+ self.text_summary_piece_size.set_text(common.fsize(state["piece_length"]))
+ self.text_summary_availability.set_text(str(round(state["distributed_copies"], 2)))
self.text_summary_total_downloaded.set_text(common.fsize(state["total_done"]) \
+ " (" + common.fsize(state["total_download"]) + ")")
self.text_summary_total_uploaded.set_text(common.fsize(self.manager.unique_IDs\
@@ -1226,6 +1230,8 @@ class DelugeGTK:
self.wtree.get_widget("summary_name").set_text("")
self.text_summary_total_size.set_text("")
self.text_summary_pieces.set_text("")
+ self.text_summary_piece_size.set_text("")
+ self.text_summary_availability.set_text("")
self.text_summary_total_downloaded.set_text("")
self.text_summary_total_uploaded.set_text("")
self.text_summary_download_speed.set_text("")