view clients/editor/selection.py @ 200:084004e91d62

the function getAttached() in FIFE::Camera was returning a FIFE::Instance* but the function return value was a bool. Changed the function so now its prototype is correct.
author vtchill@33b003aa-7bff-0310-803a-e67f0ece8222
date Fri, 13 Mar 2009 02:27:14 +0000
parents 28532ae6f9f6
children
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('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('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])