51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
#--------------------------------------------------------------
|
|
#
|
|
# PyGUI - Pop-up list control - Gtk
|
|
#
|
|
#--------------------------------------------------------------
|
|
|
|
import gtk
|
|
from GUI import export
|
|
from GUI.GListButtons import ListButton as GListButton
|
|
|
|
class ListButton(GListButton):
|
|
|
|
_gtk_suppress_action = False
|
|
|
|
def __init__(self, **kwds):
|
|
titles, values = self._extract_initial_items(kwds)
|
|
self._titles = titles
|
|
self._values = values
|
|
gtk_widget = gtk.combo_box_new_text()
|
|
gtk_widget.connect('changed', self._gtk_changed_signalled)
|
|
gtk_widget.set_property('focus_on_click', False)
|
|
gtk_widget.show()
|
|
self._gtk_update_items(gtk_widget)
|
|
GListButton.__init__(self, _gtk_outer = gtk_widget, **kwds)
|
|
|
|
def _update_items(self):
|
|
self._gtk_update_items(self._gtk_outer_widget)
|
|
|
|
def _gtk_update_items(self, gtk_widget):
|
|
self._gtk_suppress_action = True
|
|
n = gtk_widget.get_model().iter_n_children(None)
|
|
for i in xrange(n - 1, -1, -1):
|
|
gtk_widget.remove_text(i)
|
|
for title in self._titles:
|
|
gtk_widget.append_text(title)
|
|
self._gtk_suppress_action = False
|
|
|
|
def _get_selected_index(self):
|
|
return self._gtk_outer_widget.get_active()
|
|
|
|
def _set_selected_index(self, i):
|
|
self._gtk_suppress_action = True
|
|
self._gtk_outer_widget.set_active(i)
|
|
self._gtk_suppress_action = False
|
|
|
|
def _gtk_changed_signalled(self, _):
|
|
if not self._gtk_suppress_action:
|
|
self.do_action()
|
|
|
|
export(ListButton)
|