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 self.num_cpus = 1
49 gtk.Expander.__init__(self, '<b>%s</b>'%label)
50 self.set_use_markup(True)
51 table = gtk.Table(2, 2)
52 cpu_label = gtk.Label('cpu')
53 cpu_label.set_alignment(0, 1)
54 mem_label = gtk.Label('mem')
55 mem_label.set_alignment(0, 1)
56 table.attach(cpu_label, 0, 1, 0, 1, gtk.FILL, 0, 2, 2)
57 table.attach(mem_label, 0, 1, 1, 2, gtk.FILL, 0, 2, 2)
58 self.cpu = gtk.ProgressBar()
59 self.cpu.set_text(_('Unknown'))
60 table.attach(self.cpu, 1, 2, 0, 1, gtk.EXPAND|gtk.FILL,
61 gtk.EXPAND|gtk.FILL, 2, 2)
62 self.mem = gtk.ProgressBar()
63 self.mem.set_text(_('Unknown'))
64 table.attach(self.mem, 1, 2, 1, 2, gtk.EXPAND|gtk.FILL,
65 gtk.EXPAND|gtk.FILL, 2, 2)
66 self.add(table)
67 self.set_expanded(True)
68
74
85
87 self.total_mem = float(total_mem)
88
91
92
94 """
95 I am a view of multiple components' properties.
96 """
97
98 logCategory = "admingtk"
99 gettextDomain = None
100
102 """
103 @type multistate: {f.a.g.c.MultipleAdminComponentStates}
104 @param multistate: state of component this is a UI for
105 @type admin: L{flumotion.admin.admin.AdminModel}
106 @param admin: the admin model that interfaces with the manager for us
107 """
108 self.widget = gtk.ScrolledWindow()
109 self.widget.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
110 self.widget.set_border_width(0)
111 self.widget.set_shadow_type(gtk.SHADOW_NONE)
112 vbox = gtk.VBox(spacing=6)
113 vbox.set_border_width(12)
114 self._debugEnabled = False
115 self.multistate = multistate
116 self.name = 'multiple_components'
117 self.admin = admin
118 self.debug('creating admin gtk for state %r' % multistate)
119 self.uiStates = []
120 self._stateValues = dict()
121
122 for state in multistate.getComponentStates():
123 co = ComponentOverview(state.get('name'))
124 vbox.pack_start(co, False, True)
125 vbox.pack_start(gtk.HSeparator(), False, True)
126 mood = state.get('mood')
127 if state.get('mood') in [moods.lost.value,
128 moods.sleeping.value,
129 moods.sad.value]:
130 co.set_expanded(False)
131 continue
132 d = admin.componentCallRemote(state, 'getUIState')
133 d.addCallback(self.setUIState, co)
134 d.addErrback(lambda failure: failure.trap(SleepingComponentError))
135
136 self.widget.add_with_viewport(vbox)
137 vbox.show_all()
138
142
154
155 - def callRemote(self, methodName, *args, **kwargs):
158
161
162 - def stateSet(self, object, key, value):
163 if key == 'cpu-percent':
164 self._stateValues[object].update_cpu(value)
165 elif key == 'virtual-size':
166 self._stateValues[object].update_mem(value)
167