# HG changeset patch
# User cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
# Date 1251203219 0
# Node ID e3efe2cde5a9e317731e9571d04801c69a6e0cbe
# Parent  5a9e5f1c897d727e51ae10a497580d3a17e4cd29
Forgot to add CameraDialog... oops!

diff -r 5a9e5f1c897d -r e3efe2cde5a9 clients/editor/scripts/gui/cameradialog.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clients/editor/scripts/gui/cameradialog.py	Tue Aug 25 12:26:59 2009 +0000
@@ -0,0 +1,88 @@
+import fife
+import pychan
+
+class CameraDialog(object):
+	"""
+	B{CameraDialog} provides a gui dialog for camera creation. The callback is called when camera creation is complete. A
+	partial specification of the camera parameters may optionally be given.
+	"""
+	def __init__(self, engine, callback=None, onCancel=None, map=None, layer=None):
+		self.engine = engine
+		self.callback = callback
+		self.onCancel = onCancel
+		self._widget = pychan.loadXML('gui/cameradialog.xml')
+
+		if map:
+			self._widget.distributeData({
+				'mapBox'	: unicode(map.getId()),
+			})
+
+		if layer:
+			self._widget.distributeData({
+				'layerBox'	: unicode(layer.getId()),
+			})
+
+		self._widget.mapEvents({
+			'okButton'     : self._finished,
+			'cancelButton' : self._cancelled
+		})
+
+		self._widget.show()
+		
+	def _cancelled(self):
+		if self.onCancel:
+			self.onCancel()
+		self._widget.hide()
+		
+
+	def _finished(self):
+		id = self._widget.collectData('idBox')
+		if id == '':
+			print 'Please enter a camera id.'
+			return
+
+		try:
+			map = self.engine.getModel().getMap(str(self._widget.collectData('mapBox')))
+		except fife.Exception:
+			print 'Cannot find the specified map id.'
+			return
+
+		try:
+			layer = map.getLayer(str(self._widget.collectData('layerBox')))
+		except fife.Exception:
+			print 'Cannot find the specified layer id.'	
+			return
+
+		try:
+			vals = self._widget.collectData('viewBox').split(',')
+			if len(vals) != 4:
+				raise ValueError	
+
+			viewport = fife.Rect(*[int(c) for c in vals])
+		except ValueError:
+			print 'Please enter 4 comma (,) delimited values for viewport x,y,width,height.'
+			return
+
+		try:
+			refh = int(self._widget.collectData('refhBox'))
+			refw = int(self._widget.collectData('refwBox'))
+		except ValueError:
+			print 'Please enter positive integer values for reference width and height.'
+			return
+
+		try:
+			rot = int(self._widget.collectData('rotBox'))
+			tilt = int(self._widget.collectData('tiltBox'))
+		except ValueError:
+			print 'Please enter positive integer values for rotation and tilt.'
+			return
+
+		cam = self.engine.getView().addCamera(str(id), layer, viewport, fife.ExactModelCoordinate(0,0,0))
+		cam.setCellImageDimensions(refw, refh)
+		cam.setRotation(rot)
+		cam.setTilt(tilt)
+	
+		self._widget.hide()
+
+		if self.callback:
+			self.callback()
\ No newline at end of file