Release 8.
[jlew:xo-file-distro.git] / FileShare.activity / FileInfo.py
1 # Copyright (C) 2009, Justin Lewis  (jtl1728@rit.edu)
2 #
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software
15 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
16
17 from gettext import gettext as _
18
19 class FileInfo(object):
20     def __init__(self, id, title, desc, tags, size, have_file = False):
21         self.id = id
22         self.title = title
23         self.desc = desc
24         self.tags = tags
25         self.size = size
26         self.had_file = have_file
27         self.installed = have_file
28
29         if have_file:
30             self.aquired = size
31             self.percent = 100
32             self.status = _("Shared")
33         else:
34             self.aquired = 0
35             self.percent = 0
36             self.status = _("Pending")
37
38     def have_file(self):
39         if self.size == self.aquired:
40             return True
41         else:
42             return False
43
44     def update_aquired(self, aquired_size):
45         self.aquired = aquired_size
46         self.percent = (float(aquired_size)/float(self.size))*100.0
47         if self.aquired == self.size:
48             self.status = _("File Downloaded, Installing...")
49         else:
50             self.status="%s %d%% (%d %s)"%(_("Downloading"), self.percent, aquired_size, _("bytes"))
51
52     def set_installed(self):
53         self.status = _("Download Complete")
54         self.aquired = self.size
55         self.installed = True
56
57     def set_failed(self):
58         self.status = _("Download Failed")
59         self.aquired = 0
60         self.installed = False
61
62     def share_dump(self):
63         return [self.id, self.title, self.desc, self.tags, self.size]
64
65 def share_load(list, has_file = False):
66     return FileInfo(list[0], list[1], list[2], list[3], list[4], has_file)
67
68
69 # Gui Tree View Stuff
70 def file_name(column, cell, model, iter):
71     cell.set_property('text', model.get_value(iter, 1).title)
72     return
73
74 def file_desc(column, cell, model, iter):
75     cell.set_property('text', model.get_value(iter, 1).desc)
76     return
77
78 def file_tags(column, cell, model, iter):
79     cell.set_property('text', model.get_value(iter, 1).tags)
80     return
81
82 def file_size(column, cell, model, iter):
83     cell.set_property('text', model.get_value(iter, 1).size)
84     return
85
86 def load_bar(column, cell, model, iter):
87     obj = model.get_value(iter, 1)
88     cell.set_property('text', obj.status)
89     cell.set_property('value', obj.percent)
90     return