1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import gettext
23 import gtk
24 import locale
25 import os
26
27 from twisted.python import util
28 from twisted.internet import defer
29
30 from flumotion.common import log
31 from flumotion.common.errors import SleepingComponentError
32 from flumotion.common.i18n import getLL, gettexter
33 from flumotion.common.planet import moods
34 from flumotion.common.format import formatStorage
35
36 _ = gettext.gettext
37 __version__ = "$Rev$"
38 T_ = gettexter()
39
40
41 dir(locale)
42
43
45
47 self.total_mem = 0.0
48 gtk.Expander.__init__(self, '<b>%s</b>'%label)
49 self.set_use_markup(True)
50 table = gtk.Table(2, 2)
51 cpu_label = gtk.Label('cpu')
52 cpu_label.set_alignment(0, 1)
53 mem_label = gtk.Label('mem')
54 mem_label.set_alignment(0, 1)
55 table.attach(cpu_label, 0, 1, 0, 1, gtk.FILL, 0, 2, 2)
56 table.attach(mem_label, 0, 1, 1, 2, gtk.FILL, 0, 2, 2)
57 self.cpu = gtk.ProgressBar()
58 self.cpu.set_text(_('Unknown'))
59 table.attach(self.cpu, 1, 2, 0, 1, gtk.EXPAND|gtk.FILL,
60 gtk.EXPAND|gtk.FILL, 2, 2)
61 self.mem = gtk.ProgressBar()
62 self.mem.set_text(_('Unknown'))
63 table.attach(self.mem, 1, 2, 1, 2, gtk.EXPAND|gtk.FILL,
64 gtk.EXPAND|gtk.FILL, 2, 2)
65 self.add(table)
66 self.set_expanded(True)
67
73
84
86 self.total_mem = float(total_mem)
87
88
90 """
91 I am a view of multiple components' properties.
92 """
93
94 logCategory = "admingtk"
95 gettextDomain = None
96
98 """
99 @type multistate: {f.a.g.c.MultipleAdminComponentStates}
100 @param multistate: state of component this is a UI for
101 @type admin: L{flumotion.admin.admin.AdminModel}
102 @param admin: the admin model that interfaces with the manager for us
103 """
104 self.widget = gtk.ScrolledWindow()
105 self.widget.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
106 self.widget.set_border_width(0)
107 self.widget.set_shadow_type(gtk.SHADOW_NONE)
108 vbox = gtk.VBox(spacing=6)
109 vbox.set_border_width(12)
110 self._debugEnabled = False
111 self.multistate = multistate
112 self.name = 'multiple_components'
113 self.admin = admin
114 self.debug('creating admin gtk for state %r' % multistate)
115 self.uiStates = []
116 self._stateValues = dict()
117
118 for state in multistate.getComponentStates():
119 co = ComponentOverview(state.get('name'))
120 vbox.pack_start(co, False, True)
121 vbox.pack_start(gtk.HSeparator(), False, True)
122 mood = state.get('mood')
123 if state.get('mood') in [moods.lost.value,
124 moods.sleeping.value,
125 moods.sad.value]:
126 co.set_expanded(False)
127 continue
128 d = admin.componentCallRemote(state, 'getUIState')
129 d.addCallback(self.setUIState, co)
130 d.addErrback(lambda failure: failure.trap(SleepingComponentError))
131
132 self.widget.add_with_viewport(vbox)
133 vbox.show_all()
134
138
149
150 - def callRemote(self, methodName, *args, **kwargs):
153
156
157 - def stateSet(self, object, key, value):
158 if key == 'cpu-percent':
159 self._stateValues[object].update_cpu(value)
160 elif key == 'virtual-size':
161 self._stateValues[object].update_mem(value)
162