1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 import gettext
19
20 import gobject
21 import gtk
22 import pango
23 from zope.interface import implements
24
25 from flumotion.common.pygobject import gsignal
26 from flumotion.twisted import flavors
27
28 __version__ = "$Rev$"
29 _ = gettext.gettext
30
31
33 implements(flavors.IStateListener)
34 gsignal('changed')
35
43
45 if key == 'names':
46 i = self.append()
47 self.set_value(i, 0, val)
48 self.emit('changed')
49
51 if key == 'names':
52 for r in self:
53 if self.get_value(r.iter, 0) == val:
54 self.remove(r.iter)
55 self.emit('changed')
56 return
57 gobject.type_register(WorkerListStore)
58
59
61 gsignal('worker-selected', str)
62 _combobox = None
63 _label = None
64
66 gtk.HBox.__init__(self)
67
68 self._combobox = gtk.ComboBox()
69 self._label = gtk.Label(_('Worker:'))
70
71 self._label.show()
72 self.pack_start(self._label, False, False, 0)
73 vb = gtk.VBox()
74 self.pack_start(vb, False, False, 10)
75 vb.show()
76 a = gtk.Alignment(0.5, 0.5)
77 a.show()
78 vb.pack_start(a, True, False, 0)
79 cell = gtk.CellRendererText()
80 cell.set_property('ellipsize', pango.ELLIPSIZE_MIDDLE)
81 cell.set_property('width', 100)
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