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