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