Mercurial > fife-parpg
annotate clients/editor/scripts/gui/cameradialog.py @ 345:e3efe2cde5a9
Forgot to add CameraDialog... oops!
author | cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Tue, 25 Aug 2009 12:26:59 +0000 |
parents | |
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() |