annotate clients/editor/scripts/gui/cameradialog.py @ 351:295b7ba75020

* Replaced old with new FIFE SVN URL
author mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
date Tue, 08 Sep 2009 16:22:59 +0000
parents e3efe2cde5a9
children 8b125ec749d7
rev   line source
345
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
1 import fife
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
2 import pychan
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
3
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
4 class CameraDialog(object):
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
5 """
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
6 B{CameraDialog} provides a gui dialog for camera creation. The callback is called when camera creation is complete. A
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
7 partial specification of the camera parameters may optionally be given.
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
8 """
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
9 def __init__(self, engine, callback=None, onCancel=None, map=None, layer=None):
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
10 self.engine = engine
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
11 self.callback = callback
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
12 self.onCancel = onCancel
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
13 self._widget = pychan.loadXML('gui/cameradialog.xml')
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
14
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
15 if map:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
16 self._widget.distributeData({
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
17 'mapBox' : unicode(map.getId()),
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
18 })
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
19
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
20 if layer:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
21 self._widget.distributeData({
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
22 'layerBox' : unicode(layer.getId()),
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
23 })
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
24
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
25 self._widget.mapEvents({
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
26 'okButton' : self._finished,
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
27 'cancelButton' : self._cancelled
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
28 })
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
29
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
30 self._widget.show()
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
31
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
32 def _cancelled(self):
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
33 if self.onCancel:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
34 self.onCancel()
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
35 self._widget.hide()
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
36
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
37
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
38 def _finished(self):
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
39 id = self._widget.collectData('idBox')
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
40 if id == '':
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
41 print 'Please enter a camera id.'
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
42 return
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
43
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
44 try:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
45 map = self.engine.getModel().getMap(str(self._widget.collectData('mapBox')))
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
46 except fife.Exception:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
47 print 'Cannot find the specified map id.'
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
48 return
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
49
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
50 try:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
51 layer = map.getLayer(str(self._widget.collectData('layerBox')))
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
52 except fife.Exception:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
53 print 'Cannot find the specified layer id.'
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
54 return
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
55
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
56 try:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
57 vals = self._widget.collectData('viewBox').split(',')
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
58 if len(vals) != 4:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
59 raise ValueError
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
60
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
61 viewport = fife.Rect(*[int(c) for c in vals])
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
62 except ValueError:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
63 print 'Please enter 4 comma (,) delimited values for viewport x,y,width,height.'
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
64 return
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
65
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
66 try:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
67 refh = int(self._widget.collectData('refhBox'))
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
68 refw = int(self._widget.collectData('refwBox'))
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
69 except ValueError:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
70 print 'Please enter positive integer values for reference width and height.'
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
71 return
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
72
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
73 try:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
74 rot = int(self._widget.collectData('rotBox'))
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
75 tilt = int(self._widget.collectData('tiltBox'))
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
76 except ValueError:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
77 print 'Please enter positive integer values for rotation and tilt.'
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
78 return
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
79
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
80 cam = self.engine.getView().addCamera(str(id), layer, viewport, fife.ExactModelCoordinate(0,0,0))
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
81 cam.setCellImageDimensions(refw, refh)
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
82 cam.setRotation(rot)
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
83 cam.setTilt(tilt)
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
84
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
85 self._widget.hide()
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
86
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
87 if self.callback:
e3efe2cde5a9 Forgot to add CameraDialog... oops!
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
88 self.callback()