Mercurial > fife-parpg
view clients/editor/selection.py @ 83:46de6c7e22e5
increased felt responsiveness by first processing events and then drawing the screen
author | spq@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Fri, 18 Jul 2008 14:44:56 +0000 |
parents | 4a0efb7baf70 |
children | 28532ae6f9f6 |
line wrap: on
line source
import pychan import pychan.widgets as widgets class Selection(): """ Selection displays a list of options for the user to select from. The result is passed to onSelection. list - the list to select from onSelection - the function to call when a selection is made. Accepts one argument: an element of the list. """ def __init__(self, list, onSelection): self.list = list self._callback = onSelection self._widget = pychan.loadXML('content/gui/selection.xml') self._widget.mapEvents({ 'okButton' : self._selected, 'cancelButton' : self._widget.hide }) self._widget.distributeInitialData({ 'optionDrop' : list }) self._widget.show() def _selected(self): selection = self._widget.collectData('optionDrop') if selection < 0: return self._callback(self.list[selection]) self._widget.hide() class ClickSelection(): """ ClickSelection displays a list of options for the user to select from. The result is passed to onSelection. Differs from Selection: the selection is made when a list element is clicked, rather than when the box is closed. list - the list to select from onSelection - the function to call when a selection is made. Accepts one argument: an element of the list. """ def __init__(self, list, onSelection): self.list = list self._callback = onSelection self._widget = pychan.loadXML('content/gui/selection.xml') self._widget.mapEvents({ 'okButton' : self._widget.hide, 'cancelButton' : self._widget.hide, 'optionDrop' : self._selected }) self._widget.distributeInitialData({ 'optionDrop' : list }) self._widget.show() def _selected(self): selection = self._widget.collectData('optionDrop') if selection < 0: return self._callback(self.list[selection])