Lightningbeam/PyGUI-2.5.3/GUI/Gtk/ListButton.py

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)