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: 6577 $"
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
63 gsignal('worker-selected', str)
64 _combobox = None
65 _label = None
66
68 gtk.HBox.__init__(self)
69
70 self._combobox = gtk.ComboBox()
71 self._label = gtk.Label(_('Worker:'))
72
73 self._label.show()
74 self.pack_start(self._label, False, False, 0)
75 vb = gtk.VBox()
76 self.pack_start(vb, False, False, 10)
77 vb.show()
78 a = gtk.Alignment(0.5, 0.5)
79 a.show()
80 vb.pack_start (a, True, False, 0)
81 cell = gtk.CellRendererText()
82 self._combobox.pack_start(cell, True)
83 self._combobox.add_attribute(cell, 'text', 0)
84
85 def onChanged(cb):
86 self.emit('worker-selected', self.getWorker())
87
88 self._combobox.connect('changed', onChanged)
89 self._combobox.show()
90
91 try:
92 self._combobox.set_property('focus-on-click', False)
93 self._combobox.set_property('has-frame', False)
94 except TypeError:
95 pass
96 a.add(self._combobox)
97
109
110 self._combobox.get_model().connect('changed', onModelChanged)
111
113
114 for r in self._combobox.get_model():
115 if not worker or r.model.get_value(r.iter, 0) == worker:
116 self._combobox.set_active_iter(r.iter)
117 return
118
119 if worker:
120
121 print 'warning: worker %s not available' % worker
122
124 i = self._combobox.get_active_iter()
125 if i:
126 return self._combobox.get_model().get_value(i, 0)
127
128 return None
129
132
133 gobject.type_register(WorkerList)
134