peer_view and file_view

This commit is contained in:
Zach Tibbitts 2006-12-24 04:08:34 +00:00
parent f9ee7f4255
commit 625435646a
2 changed files with 57 additions and 25 deletions

View File

@ -73,16 +73,7 @@ class DelugeGTK:
self.view.set_rules_hint(True) self.view.set_rules_hint(True)
## Still a lot of work to be done here, ## Initializes the columns for the torrent_view
## this column is here as an example of how
## to create and add columns. Perhaps I
## should create some sort of ColumnsManager
## object in dgtk to keep the code cleaner
## and also confine column code to one place.
## I'm worrying about columns way too much
## because that was one of the main places
## Deluge's code (up to 0.4) got way out of
## hand.
self.queue_column = dgtk.add_text_column(self.view, "#", 1) self.queue_column = dgtk.add_text_column(self.view, "#", 1)
self.name_column = dgtk.add_text_column(self.view, "Name", 2) self.name_column = dgtk.add_text_column(self.view, "Name", 2)
@ -95,6 +86,32 @@ class DelugeGTK:
self.eta_column = dgtk.add_text_column(self.view, "ETA", 10) self.eta_column = dgtk.add_text_column(self.view, "ETA", 10)
self.share_column = dgtk.add_text_column(self.view, "Share Ratio", 11) self.share_column = dgtk.add_text_column(self.view, "Share Ratio", 11)
self.status_column.set_expand(True)
self.file_view = self.wtree.get_widget("file_view")
self.file_store = gtk.ListStore(str, bool)
self.file_view.set_model(self.file_store)
self.filename_column = dgtk.add_text_column(self.file_view, "Filename", 0)
self.filetoggle_column = dgtk.add_toggle_column(self.file_view, "DL?", 0)
self.filename_column.set_expand(True)
self.peer_view = self.wtree.get_widget("peer_view")
self.peer_store = gtk.ListStore(str, str, str, str, str)
self.peer_view.set_model(self.peer_store)
self.peer_ip_column = dgtk.add_text_column(self.peer_view, "IP Address", 0)
self.peer_client_column = dgtk.add_text_column(self.peer_view, "Client", 1)
## Note: change this column to use a progress column before 0.5 is released
self.peer_complete_column = dgtk.add_text_column(self.peer_view, "Percent Complete", 2)
self.peer_download_column = dgtk.add_text_column(self.peer_view, "Download Rate", 3)
self.peer_upload_column = dgtk.add_text_column(self.peer_view, "Upload Rate", 4)
## Interface created ## Interface created
def start(self): def start(self):
@ -116,15 +133,24 @@ class DelugeGTK:
## For testing purposes, create a copy of the interface ## For testing purposes, create a copy of the interface
if __name__ == "__main__": if __name__ == "__main__":
d = DelugeGTK() deluge = DelugeGTK()
## Add an example line
## Test the interface by adding a few fake torrents ## Test the interface by adding a few fake torrents
d.store.append([0,1,"Deluge Torrent","700MB",50,"Downloading","10 (50)", "15 (30)", "50 KB/s", "10 KB/s", "2 h", "100%"]) deluge.store.append([0,1,"Deluge Torrent","700MB",50,"Downloading","10 (50)", "15 (30)", "50 KB/s", "10 KB/s", "2 h", "100%"])
d.store.append([1,2,"Sample Torrent","350MB",75,"Queued","10 (20)","20 (20)","0 KB/s", "0 KB/s", "und", "0%"]) deluge.store.append([1,2,"Sample Torrent","350MB",75,"Queued","10 (20)","20 (20)","0 KB/s", "0 KB/s", "und", "0%"])
d.store.append([2,3,"Deluge Torrent","700MB",55,"Downloading","10 (50)", "15 (30)", "50 KB/s", "10 KB/s", "2 h", "300%"]) deluge.store.append([2,3,"Deluge Torrent","700MB",55,"Downloading","10 (50)", "15 (30)", "50 KB/s", "10 KB/s", "2 h", "300%"])
d.store.append([3,4,"Sample Torrent","350MB",65,"Queued","10 (20)","20 (20)","0 KB/s", "0 KB/s", "und", "10%"]) deluge.store.append([3,4,"Sample Torrent","350MB",65,"Queued","10 (20)","20 (20)","0 KB/s", "0 KB/s", "und", "10%"])
d.store.append([4,5,"Deluge Torrent","700MB",50,"Downloading","10 (50)", "15 (30)", "50 KB/s", "10 KB/s", "2 h", "120%"]) deluge.store.append([4,5,"Deluge Torrent","700MB",50,"Downloading","10 (50)", "15 (30)", "50 KB/s", "10 KB/s", "2 h", "120%"])
d.store.append([5,6,"Sample Torrent","350MB",95,"Queued","10 (20)","20 (20)","0 KB/s", "0 KB/s", "und", "110%"]) deluge.store.append([5,6,"Sample Torrent","350MB",95,"Queued","10 (20)","20 (20)","0 KB/s", "0 KB/s", "und", "110%"])
deluge.file_store.append(["Sample_Filename.ext", True])
deluge.file_store.append(["Second_Filename.ext", True])
deluge.peer_store.append(["192.168.0.1", "Deluge 0.3.1", "100%", "30 KB/s", "0 KB/s"])
deluge.peer_store.append(["192.168.0.2", "Deluge 0.4.0", "76%", "13 KB/s", "0 KB/s"])
deluge.peer_store.append(["192.168.0.3", "Deluge 0.3.0", "74%", "12 KB/s", "3 KB/s"])
deluge.peer_store.append(["192.168.0.4", "Deluge 0.3.99.2", "50%", "9 KB/s", "0 KB/s"])
deluge.peer_store.append(["192.168.0.5", "Deluge 0.4.0", "90%", "0 KB/s", "20 KB/s"])
## Done with sample lines
gtk.main() gtk.main()

20
dgtk.py
View File

@ -127,12 +127,7 @@ class PreferencesDialog:
self.prf.run() self.prf.run()
self.prf.hide_all() self.prf.hide_all()
## Columns still need work, but should be easy now that I've worked out ## Functions to create columns
## liststores and treeviews.
## Most likely will get rid of Objects for columns, and instead revert to
## a more organized form of the old add_column method, which will properly
## create and add the column and in addition, return that column to the
## calling function.
def add_text_column(view, header, cid): def add_text_column(view, header, cid):
render = gtk.CellRendererText() render = gtk.CellRendererText()
@ -146,6 +141,17 @@ def add_progress_column(view, header, pid, mid):
render = gtk.CellRendererProgress() render = gtk.CellRendererProgress()
column = gtk.TreeViewColumn(header, render, value=pid, text=mid) column = gtk.TreeViewColumn(header, render, value=pid, text=mid)
column.set_resizable(True) column.set_resizable(True)
column.set_expand(True) column.set_expand(False)
view.append_column(column) view.append_column(column)
return column return column
def add_toggle_column(view, header, cid, toggled_signal=None):
render = gtk.CellRendererToggle()
render.set_property('activatable', True)
column = gtk.TreeViewColumn(header, render, active=cid)
column.set_resizable(True)
column.set_expand(False)
view.append_column(column)
if toggled_signal is not None:
render.connect("toggled", toggled_signal, cid)
return column