Lightningbeam/PyGUI-2.5.3/build/lib/GUI/GListButtons.py

67 lines
1.7 KiB
Python

#--------------------------------------------------------------
#
# PyGUI - Pop-up list control - Generic
#
#--------------------------------------------------------------
from GUI.Properties import overridable_property
from GUI.Actions import Action
from GUI import Control, application
class ListButton(Control, Action):
"""A button that displays a value and provides a pop-up or
pull-down list of choices."""
titles = overridable_property('titles',
"List of item title strings")
values = overridable_property('values',
"List of values corresponding to tiles, or None to use item index as value")
def _extract_initial_items(self, kwds):
titles = kwds.pop('titles', None) or []
values = kwds.pop('values', None)
return titles, values
def get_titles(self):
return self._titles
def set_titles(self, x):
self._titles = x
self._update_items()
def get_values(self):
return self._values
def set_values(self, x):
self._values = x
def get_value(self):
i = self._get_selected_index()
if i >= 0:
values = self.values
if values:
return values[i]
else:
return i
def set_value(self, value):
values = self.values
if values:
try:
i = values.index(value)
except ValueError:
i = -1
else:
if value is None:
i = -1
else:
i = value
self._set_selected_index(i)
def do_action(self):
try:
Action.do_action(self)
except:
application().report_error()