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
24 import gobject
25 import gtk
26 from zope.interface import implements
27
28 from flumotion.common.pygobject import gsignal
29 from flumotion.twisted import flavors
30
31 __version__ = "$Rev: 7239 $"
32 _ = gettext.gettext
33
34
36 implements(flavors.IStateListener)
37 gsignal('changed')
38
46
48 if key == 'names':
49 i = self.append()
50 self.set_value(i, 0, val)
51 self.emit('changed')
52
54 if key == 'names':
55 for r in self:
56 if self.get_value(r.iter, 0) == val:
57 self.remove(r.iter)
58 self.emit('changed')
59 return
60 gobject.type_register(WorkerListStore)
61
62
64 gsignal('worker-selected', str)
65 _combobox = None
66 _label = None
67
69 gtk.HBox.__init__(self)
70
71 self._combobox = gtk.ComboBox()
72 self._label = gtk.Label(_('Worker:'))
73
74 self._label.show()
75 self.pack_start(self._label, False, False, 0)
76 vb = gtk.VBox()
77 self.pack_start(vb, False, False, 10)
78 vb.show()
79 a = gtk.Alignment(0.5, 0.5)
80 a.show()
81 vb.pack_start(a, True, False, 0)
82 cell = gtk.CellRendererText()
83 self._combobox.pack_start(cell, True)
84 self._combobox.add_attribute(cell, 'text', 0)
85
86 def onChanged(cb):
87 self.emit('worker-selected', self.getWorker())
88
89 self._combobox.connect('changed', onChanged)
90 self._combobox.show()
91
92 try:
93 self._combobox.set_property('focus-on-click', False)
94 self._combobox.set_property('has-frame', False)
95 except TypeError:
96 pass
97 a.add(self._combobox)
98
110
111 self._combobox.get_model().connect('changed', onModelChanged)
112
114
115 for r in self._combobox.get_model():
116 if not worker or r.model.get_value(r.iter, 0) == worker:
117 self._combobox.set_active_iter(r.iter)
118 return
119
120 if worker:
121
122 print 'warning: worker %s not available' % worker
123
125 i = self._combobox.get_active_iter()
126 if i:
127 return self._combobox.get_model().get_value(i, 0)
128
129 return None
130
133
134 gobject.type_register(WorkerList)
135