diff clients/editor/scripts/gui/selection.py @ 255:51cc05d862f2

Merged editor_rewrite branch to trunk. This contains changes that may break compatibility against existing clients. For a list of changes that may affect your client, see: http://wiki.fifengine.de/Changes_to_pychan_and_FIFE_in_editor_rewrite_branch
author cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
date Mon, 08 Jun 2009 16:00:02 +0000
parents
children 8b125ec749d7
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clients/editor/scripts/gui/selection.py	Mon Jun 08 16:00:02 2009 +0000
@@ -0,0 +1,59 @@
+import pychan
+import pychan.widgets as widgets
+
+class SelectionDialog(object):
+	"""
+	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 ClickSelectionDialog(object):
+	"""
+	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])