diff clients/editor/selection.py @ 0:4a0efb7baf70

* Datasets becomes the new trunk and retires after that :-)
author mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
date Sun, 29 Jun 2008 18:44:17 +0000
parents
children 28532ae6f9f6
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clients/editor/selection.py	Sun Jun 29 18:44:17 2008 +0000
@@ -0,0 +1,59 @@
+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])