Mercurial > boomslang
annotate pyntnclick/tools/rect_drawer.py @ 661:5dc866e1d71d pyntnclick
Misc pep8 and pyflakes fixes
author | Neil Muller <neil@dip.sun.ac.za> |
---|---|
date | Sun, 12 Feb 2012 15:00:53 +0200 |
parents | b2c2b6f56291 |
children | 6daaeffb37d1 |
rev | line source |
---|---|
165
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
1 # Quickly hacked together helper for working out |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
2 # interactive regions in Suspended Sentence |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
3 |
636
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
4 # XXX: Threw away albow |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
5 #from albow.root import RootWidget |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
6 #from albow.utils import frame_rect |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
7 #from albow.widget import Widget |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
8 #from albow.controls import Button, Image |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
9 #from albow.palette_view import PaletteView |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
10 #from albow.file_dialogs import request_old_filename |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
11 #from albow.resource import get_font |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
12 RootWidget = object |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
13 frame_rect = None |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
14 Widget = object |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
15 Button = object |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
16 Image = object |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
17 PaletteView = object |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
18 request_old_filename = None |
2748d3afcae5
Excise albow. Really.
Stefano Rivera <stefano@rivera.za.net>
parents:
589
diff
changeset
|
19 get_font = None |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
20 |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
21 from pygame.locals import (K_LEFT, K_RIGHT, K_UP, K_DOWN, |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
22 K_a, K_t, K_d, K_i, K_r, K_o, K_b, K_z, |
648
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
23 BLEND_RGBA_MIN, SRCALPHA, QUIT) |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
24 import pygame |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
25 |
576
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
26 import pyntnclick.constants |
550
53cc4049fb30
Rename imports in rect_drawer
Stefano Rivera <stefano@rivera.za.net>
parents:
538
diff
changeset
|
27 from pyntnclick import state |
286
776bcf563ea0
Re-enable thing rects by default in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
279
diff
changeset
|
28 state.DEBUG_RECTS = True |
550
53cc4049fb30
Rename imports in rect_drawer
Stefano Rivera <stefano@rivera.za.net>
parents:
538
diff
changeset
|
29 from pyntnclick.widgets import BoomLabel |
648
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
30 from pyntnclick.widgets.base import Container |
174
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
31 |
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
32 |
576
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
33 class RectDrawerConstants(pyntnclick.constants.GameConstants): |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
34 debug = True |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
35 menu_width = 200 |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
36 menu_button_height = 25 |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
37 zoom = 4 |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
38 zoom_step = 100 |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
39 |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
40 constants = RectDrawerConstants() |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
41 |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
42 |
165
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
43 class AppPalette(PaletteView): |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
44 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
45 sel_width = 5 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
46 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
47 colors = [ |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
48 'red', 'maroon1', 'palevioletred1', 'moccasin', 'orange', |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
49 'honeydew', 'yellow', 'gold', 'goldenrod', 'brown', |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
50 'blue', 'purple', 'darkorchid4', 'thistle', 'skyblue1', |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
51 'green', 'palegreen1', 'darkgreen', 'aquamarine', 'darkolivegreen', |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
52 ] |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
53 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
54 def __init__(self, app_image): |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
55 self.image = app_image |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
56 super(AppPalette, self).__init__((35, 35), 4, 5, margin=2) |
165
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
57 self.selection = 0 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
58 self.image.rect_color = pygame.color.Color(self.colors[self.selection]) |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
59 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
60 def num_items(self): |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
61 return len(self.colors) |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
62 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
63 def draw_item(self, surface, item_no, rect): |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
64 d = -2 * self.sel_width |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
65 r = rect.inflate(d, d) |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
66 surface.fill(pygame.color.Color(self.colors[item_no]), r) |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
67 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
68 def click_item(self, item_no, event): |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
69 self.selection = item_no |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
70 self.image.rect_color = pygame.color.Color(self.colors[item_no]) |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
71 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
72 def item_is_selected(self, item_no): |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
73 return self.selection == item_no |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
74 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
75 |
174
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
76 class AppImage(Widget): |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
77 |
181
f98bc17f5e67
Add attributes for drawing rects
Neil Muller <neil@dip.sun.ac.za>
parents:
179
diff
changeset
|
78 rect_thick = 3 |
f98bc17f5e67
Add attributes for drawing rects
Neil Muller <neil@dip.sun.ac.za>
parents:
179
diff
changeset
|
79 draw_thick = 1 |
f98bc17f5e67
Add attributes for drawing rects
Neil Muller <neil@dip.sun.ac.za>
parents:
179
diff
changeset
|
80 |
174
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
81 def __init__(self, state): |
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
82 self.state = state |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
83 super(AppImage, self).__init__(pygame.rect.Rect(0, 0, |
576
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
84 constants.screen[0], |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
85 constants.screen[1])) |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
86 self.mode = 'draw' |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
87 self.rects = [] |
200 | 88 self.images = [] |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
89 self.start_pos = None |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
90 self.end_pos = None |
165
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
91 self.rect_color = pygame.color.Color('white') |
200 | 92 self.current_image = None |
199 | 93 self.place_image_menu = None |
243
0ea4661d134c
Show close button area in helper
Neil Muller <neil@dip.sun.ac.za>
parents:
238
diff
changeset
|
94 self.close_button = BoomLabel('Close', font=get_font(20, 'Vera.ttf')) |
0ea4661d134c
Show close button area in helper
Neil Muller <neil@dip.sun.ac.za>
parents:
238
diff
changeset
|
95 self.close_button.fg_color = (0, 0, 0) |
0ea4661d134c
Show close button area in helper
Neil Muller <neil@dip.sun.ac.za>
parents:
238
diff
changeset
|
96 self.close_button.bg_color = (0, 0, 0) |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
97 self.draw_rects = True |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
98 self.draw_things = True |
312
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
99 self.draw_thing_rects = True |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
100 self.draw_images = True |
504
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
101 self.trans_images = False |
275
d78ce15bccc8
Crew quarters background and toolbar on the rect tool.
Jeremy Thurgood <firxen@gmail.com>
parents:
268
diff
changeset
|
102 self.draw_toolbar = True |
502
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
103 self.old_mouse_pos = None |
506 | 104 self.zoom_display = False |
510
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
105 self.draw_anim = False |
507
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
106 self.zoom_offset = (600, 600) |
524
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
107 if self.state.current_detail: |
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
108 w, h = self.state.current_detail.get_detail_size() |
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
109 rect = pygame.rect.Rect(0, 0, w, h) |
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
110 self.close_button.rect.midbottom = rect.midbottom |
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
111 self.offset = (0, 0) |
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
112 else: |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
113 self.offset = (-self.state.current_scene.OFFSET[0], |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
114 -self.state.current_scene.OFFSET[1]) |
323
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
115 self.find_existing_intersects() |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
116 |
510
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
117 def _get_scene(self): |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
118 if self.state.current_detail: |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
119 return self.state.current_detail |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
120 else: |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
121 return self.state.current_scene |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
122 |
323
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
123 def find_existing_intersects(self): |
320
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
124 """Parse the things in the scene for overlaps""" |
510
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
125 scene = self._get_scene() |
323
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
126 # Pylint hates this function |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
127 for thing in scene.things.itervalues(): |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
128 for interact_name in thing.interacts: |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
129 thing.set_interact(interact_name) |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
130 if hasattr(thing.rect, 'collidepoint'): |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
131 thing_rects = [thing.rect] |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
132 else: |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
133 thing_rects = thing.rect |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
134 for thing2 in scene.things.itervalues(): |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
135 if thing is thing2: |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
136 continue |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
137 for interact2_name in thing2.interacts: |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
138 thing2.set_interact(interact2_name) |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
139 if hasattr(thing2.rect, 'collidepoint'): |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
140 thing2_rects = [thing2.rect] |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
141 else: |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
142 thing2_rects = thing2.rect |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
143 for my_rect in thing_rects: |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
144 for other_rect in thing2_rects: |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
145 if my_rect.colliderect(other_rect): |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
146 print 'Existing Intersecting rects' |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
147 print (" Thing1 %s Interact %s" |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
148 % (thing.name, interact_name)) |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
149 print (" Thing2 %s Interact %s" |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
150 % (thing2.name, interact2_name)) |
323
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
151 print " Rects", my_rect, other_rect |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
152 print |
320
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
153 |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
154 def find_intersecting_rects(self, d): |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
155 """Find if any rect collections intersect""" |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
156 # I loath N^X brute search algorithm's, but whatever, hey |
510
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
157 scene = self._get_scene() |
320
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
158 for (num, col) in enumerate(d): |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
159 rect_list = d[col] |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
160 for thing in scene.things.itervalues(): |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
161 for interact_name in thing.interacts: |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
162 thing.set_interact(interact_name) |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
163 if hasattr(thing.rect, 'collidepoint'): |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
164 thing_rects = [thing.rect] |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
165 else: |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
166 thing_rects = thing.rect |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
167 for other_rect in thing_rects: |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
168 for my_rect in rect_list: |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
169 if my_rect.colliderect(other_rect): |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
170 print 'Intersecting rects' |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
171 print " Object %s" % num |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
172 print (" Thing %s Interact %s" |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
173 % (thing.name, interact_name)) |
320
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
174 print " Rects", my_rect, other_rect |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
175 if thing.INITIAL: |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
176 thing.set_interact(thing.INITIAL) |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
177 print |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
178 for (num2, col2) in enumerate(d): |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
179 if num2 == num: |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
180 continue |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
181 other_list = d[col2] |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
182 for my_rect in rect_list: |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
183 for other_rect in other_list: |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
184 if my_rect.colliderect(other_rect): |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
185 print 'Intersecting rects', |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
186 print ' Object %s and %s' % (num, num2) |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
187 print " Rects", my_rect, other_rect |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
188 print |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
189 print |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
190 |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
191 def toggle_things(self): |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
192 self.draw_things = not self.draw_things |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
193 |
312
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
194 def toggle_thing_rects(self): |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
195 self.draw_thing_rects = not self.draw_thing_rects |
510
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
196 scene = self._get_scene() |
312
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
197 for thing in scene.things.itervalues(): |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
198 if not self.draw_thing_rects: |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
199 if not hasattr(thing, 'old_colour'): |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
200 thing.old_colour = thing._interact_hilight_color |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
201 thing._interact_hilight_color = None |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
202 else: |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
203 thing._interact_hilight_color = thing.old_colour |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
204 |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
205 def toggle_images(self): |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
206 self.draw_images = not self.draw_images |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
207 |
504
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
208 def toggle_trans_images(self): |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
209 self.trans_images = not self.trans_images |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
210 self.invalidate() |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
211 |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
212 def toggle_rects(self): |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
213 self.draw_rects = not self.draw_rects |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
214 |
275
d78ce15bccc8
Crew quarters background and toolbar on the rect tool.
Jeremy Thurgood <firxen@gmail.com>
parents:
268
diff
changeset
|
215 def toggle_toolbar(self): |
d78ce15bccc8
Crew quarters background and toolbar on the rect tool.
Jeremy Thurgood <firxen@gmail.com>
parents:
268
diff
changeset
|
216 self.draw_toolbar = not self.draw_toolbar |
d78ce15bccc8
Crew quarters background and toolbar on the rect tool.
Jeremy Thurgood <firxen@gmail.com>
parents:
268
diff
changeset
|
217 |
506 | 218 def toggle_zoom(self): |
219 self.zoom_display = not self.zoom_display | |
220 | |
510
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
221 def toggle_anim(self): |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
222 self.draw_anim = not self.draw_anim |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
223 |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
224 def draw_mode(self): |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
225 self.mode = 'draw' |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
226 |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
227 def del_mode(self): |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
228 self.mode = 'del' |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
229 self.start_pos = None |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
230 self.end_pos = None |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
231 |
503
65e17aba12c5
Tweak various aspects of image drawing/mouse code to handle edge cases better
Neil Muller <neil@dip.sun.ac.za>
parents:
502
diff
changeset
|
232 def draw_sub_image(self, image, surface, cropped_rect): |
65e17aba12c5
Tweak various aspects of image drawing/mouse code to handle edge cases better
Neil Muller <neil@dip.sun.ac.za>
parents:
502
diff
changeset
|
233 """Tweaked image drawing to avoid albow's centring the image in the |
65e17aba12c5
Tweak various aspects of image drawing/mouse code to handle edge cases better
Neil Muller <neil@dip.sun.ac.za>
parents:
502
diff
changeset
|
234 subsurface""" |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
235 surf = pygame.surface.Surface((cropped_rect.w, cropped_rect.h), |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
236 SRCALPHA).convert_alpha() |
503
65e17aba12c5
Tweak various aspects of image drawing/mouse code to handle edge cases better
Neil Muller <neil@dip.sun.ac.za>
parents:
502
diff
changeset
|
237 frame = surf.get_rect() |
504
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
238 imsurf = image.get_image().convert_alpha() |
503
65e17aba12c5
Tweak various aspects of image drawing/mouse code to handle edge cases better
Neil Muller <neil@dip.sun.ac.za>
parents:
502
diff
changeset
|
239 r = imsurf.get_rect() |
65e17aba12c5
Tweak various aspects of image drawing/mouse code to handle edge cases better
Neil Muller <neil@dip.sun.ac.za>
parents:
502
diff
changeset
|
240 r.topleft = frame.topleft |
504
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
241 if self.trans_images: |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
242 surf.fill(pygame.color.Color(255, 255, 255, 96)) |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
243 surf.blit(imsurf, r, None, BLEND_RGBA_MIN) |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
244 else: |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
245 surf.blit(imsurf, r, None) |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
246 surface.blit(surf, cropped_rect) |
503
65e17aba12c5
Tweak various aspects of image drawing/mouse code to handle edge cases better
Neil Muller <neil@dip.sun.ac.za>
parents:
502
diff
changeset
|
247 |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
248 def draw(self, surface): |
506 | 249 if self.zoom_display: |
250 base_surface = surface.copy() | |
251 self.do_unzoomed_draw(base_surface) | |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
252 zoomed = pygame.transform.scale(base_surface, |
576
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
253 (constants.zoom * constants.screen[0], |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
254 constants.zoom * constants.screen[1])) |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
255 area = pygame.rect.Rect(self.zoom_offset[0], self.zoom_offset[1], |
576
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
256 self.zoom_offset[0] + constants.screen[0], |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
257 self.zoom_offset[1] + constants.screen[1]) |
507
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
258 surface.blit(zoomed, (0, 0), area) |
506 | 259 else: |
260 self.do_unzoomed_draw(surface) | |
261 | |
262 def do_unzoomed_draw(self, surface): | |
238
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
263 if self.state.current_detail: |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
264 if self.draw_things: |
523
08dbb7f3a34d
Fix calls to draw to match recent changes
Neil Muller <neil@dip.sun.ac.za>
parents:
521
diff
changeset
|
265 self.state.current_detail.draw(surface, None) |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
266 else: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
267 self.state.current_detail.draw_background(surface) |
524
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
268 # We duplicate Albow's draw logic here, so we zoom the close |
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
269 # button correctly |
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
270 r = self.close_button.get_rect() |
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
271 surf_rect = surface.get_rect() |
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
272 sub_rect = surf_rect.clip(r) |
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
273 try: |
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
274 sub = surface.subsurface(sub_rect) |
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
275 self.close_button.draw_all(sub) |
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
276 except ValueError, e: |
a91cb4bffd5d
Make close button helper in rect_drawer zoom correctly
Neil Muller <neil@dip.sun.ac.za>
parents:
523
diff
changeset
|
277 print 'Error, failed to draw close button', e |
238
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
278 else: |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
279 if self.draw_things: |
523
08dbb7f3a34d
Fix calls to draw to match recent changes
Neil Muller <neil@dip.sun.ac.za>
parents:
521
diff
changeset
|
280 self.state.current_scene.draw(surface, None) |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
281 else: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
282 self.state.current_scene.draw_background(surface) |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
283 if self.mode == 'draw' and self.start_pos and self.draw_rects: |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
284 rect = pygame.rect.Rect(self.start_pos[0], self.start_pos[1], |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
285 self.end_pos[0] - self.start_pos[0], |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
286 self.end_pos[1] - self.start_pos[1]) |
321 | 287 rect.normalize() |
320
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
288 frame_rect(surface, self.rect_color, rect, self.draw_thick) |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
289 if self.draw_rects: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
290 for (col, rect) in self.rects: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
291 frame_rect(surface, col, rect, self.rect_thick) |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
292 if self.draw_images: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
293 for image in self.images: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
294 if image.rect.colliderect(surface.get_rect()): |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
295 cropped_rect = image.rect.clip(surface.get_rect()) |
503
65e17aba12c5
Tweak various aspects of image drawing/mouse code to handle edge cases better
Neil Muller <neil@dip.sun.ac.za>
parents:
502
diff
changeset
|
296 self.draw_sub_image(image, surface, cropped_rect) |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
297 else: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
298 print 'image outside surface', image |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
299 if self.current_image and self.mode == 'image': |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
300 if self.current_image.rect.colliderect(surface.get_rect()): |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
301 cropped_rect = self.current_image.rect.clip( |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
302 surface.get_rect()) |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
303 self.draw_sub_image(self.current_image, surface, |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
304 cropped_rect) |
275
d78ce15bccc8
Crew quarters background and toolbar on the rect tool.
Jeremy Thurgood <firxen@gmail.com>
parents:
268
diff
changeset
|
305 if self.draw_toolbar: |
576
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
306 tb_surf = surface.subsurface(0, constants.screen[1] |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
307 - constants.button_size, |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
308 constants.screen[0], |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
309 constants.button_size).convert_alpha() |
276
75f4ee46ac58
Better (and fixed) rect tool with toolbar overlay.
Jeremy Thurgood <firxen@gmail.com>
parents:
275
diff
changeset
|
310 tb_surf.fill(pygame.color.Color(127, 0, 0, 191)) |
576
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
311 surface.blit(tb_surf, (0, constants.screen[1] |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
312 - constants.button_size)) |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
313 |
165
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
314 def _make_dict(self): |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
315 d = {} |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
316 for col, rect in self.rects: |
213
20998c650ce1
Fixed rect_drawer tool and adjusted JIM message background.
Jeremy Thurgood <firxen@gmail.com>
parents:
200
diff
changeset
|
317 col = (col.r, col.g, col.b) |
165
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
318 d.setdefault(col, []) |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
319 d[col].append(rect) |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
320 return d |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
321 |
198
e73d78d6dd83
Stubs for ftuture functionality
Neil Muller <neil@dip.sun.ac.za>
parents:
197
diff
changeset
|
322 def print_objs(self): |
165
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
323 d = self._make_dict() |
320
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
324 self.find_intersecting_rects(d) |
165
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
325 for (num, col) in enumerate(d): |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
326 print 'Rect %d : ' % num |
279
c67a4a4d78f6
Compensate for offset in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
276
diff
changeset
|
327 for rect in d[col]: |
c67a4a4d78f6
Compensate for offset in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
276
diff
changeset
|
328 r = rect.move(self.offset) |
179
39f75faf16cb
Add trailing , for copy-n-paste
Neil Muller <neil@dip.sun.ac.za>
parents:
174
diff
changeset
|
329 print ' (%d, %d, %d, %d),' % (r.x, r.y, r.w, r.h) |
165
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
330 print |
200 | 331 for i, image in enumerate(self.images): |
332 print 'Image %d' % i | |
279
c67a4a4d78f6
Compensate for offset in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
276
diff
changeset
|
333 rect = image.rect |
c67a4a4d78f6
Compensate for offset in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
276
diff
changeset
|
334 r = rect.move(self.offset) |
200 | 335 print ' (%d, %d, %d, %d),' % (r.x, r.y, r.w, r.h) |
336 print | |
320
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
337 print |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
338 |
199 | 339 def image_load(self): |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
340 image_path = ('%s/Resources/images/%s' |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
341 % (script_path, self.state.current_scene.FOLDER)) |
199 | 342 imagename = request_old_filename(directory=image_path) |
343 try: | |
200 | 344 image_data = pygame.image.load(imagename) |
345 self.current_image = Image(image_data) | |
199 | 346 self.place_image_menu.enabled = True |
200 | 347 # ensure we're off screen to start |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
348 self.current_image.rect = image_data.get_rect() \ |
576
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
349 .move(constants.screen[0] + constants.menu_width, |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
350 constants.screen[1]) |
199 | 351 except pygame.error, e: |
352 print 'Unable to load image %s' % e | |
198
e73d78d6dd83
Stubs for ftuture functionality
Neil Muller <neil@dip.sun.ac.za>
parents:
197
diff
changeset
|
353 |
e73d78d6dd83
Stubs for ftuture functionality
Neil Muller <neil@dip.sun.ac.za>
parents:
197
diff
changeset
|
354 def image_mode(self): |
e73d78d6dd83
Stubs for ftuture functionality
Neil Muller <neil@dip.sun.ac.za>
parents:
197
diff
changeset
|
355 self.mode = 'image' |
e73d78d6dd83
Stubs for ftuture functionality
Neil Muller <neil@dip.sun.ac.za>
parents:
197
diff
changeset
|
356 self.start_pos = None |
e73d78d6dd83
Stubs for ftuture functionality
Neil Muller <neil@dip.sun.ac.za>
parents:
197
diff
changeset
|
357 self.end_pos = None |
502
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
358 # So we do the right thing for off screen images |
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
359 self.old_mouse_pos = None |
198
e73d78d6dd83
Stubs for ftuture functionality
Neil Muller <neil@dip.sun.ac.za>
parents:
197
diff
changeset
|
360 |
510
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
361 def cycle_mode(self): |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
362 self.mode = 'cycle' |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
363 |
506 | 364 def _conv_pos(self, mouse_pos): |
365 if self.zoom_display: | |
576
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
366 pos = ((mouse_pos[0] + self.zoom_offset[0]) / constants.zoom, |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
367 (mouse_pos[1] + self.zoom_offset[1]) / constants.zoom) |
506 | 368 else: |
369 pos = mouse_pos | |
370 return pos | |
371 | |
507
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
372 def _check_limits(self, offset): |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
373 if offset[0] < 0: |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
374 offset[0] = 0 |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
375 if offset[1] < 0: |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
376 offset[1] = 0 |
576
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
377 width, height = constants.screen |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
378 if offset[0] > constants.zoom * width - width: |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
379 offset[0] = constants.zoom * width - width |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
380 if offset[1] > constants.zoom * height - height: |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
381 offset[1] = constants.zoom * height - height |
507
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
382 |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
383 def _make_zoom_offset(self, pos): |
576
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
384 zoom_pos = (pos[0] * constants.zoom, pos[1] * constants.zoom) |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
385 offset = [zoom_pos[0] - constants.screen[0] / 2, |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
386 zoom_pos[1] - constants.screen[1] / 2] |
507
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
387 self._check_limits(offset) |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
388 self.zoom_offset = tuple(offset) |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
389 |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
390 def _move_zoom(self, x, y): |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
391 offset = list(self.zoom_offset) |
576
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
392 offset[0] += constants.zoom_step * x |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
393 offset[1] += constants.zoom_step * y |
507
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
394 self._check_limits(offset) |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
395 self.zoom_offset = tuple(offset) |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
396 |
503
65e17aba12c5
Tweak various aspects of image drawing/mouse code to handle edge cases better
Neil Muller <neil@dip.sun.ac.za>
parents:
502
diff
changeset
|
397 def do_mouse_move(self, e): |
506 | 398 pos = self._conv_pos(e.pos) |
507
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
399 if not self.zoom_display: |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
400 # Construct zoom offset from mouse pos |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
401 self._make_zoom_offset(e.pos) |
200 | 402 if self.mode == 'image' and self.current_image: |
502
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
403 if self.old_mouse_pos: |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
404 delta = (pos[0] - self.old_mouse_pos[0], |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
405 pos[1] - self.old_mouse_pos[1]) |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
406 self.current_image.rect.center = ( |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
407 self.current_image.rect.center[0] + delta[0], |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
408 self.current_image.rect.center[1] + delta[1]) |
502
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
409 else: |
506 | 410 self.current_image.rect.center = pos |
200 | 411 self.invalidate() |
506 | 412 self.old_mouse_pos = pos |
200 | 413 |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
414 def key_down(self, e): |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
415 if self.mode == 'image' and self.current_image: |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
416 # Move the image by 1 pixel |
502
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
417 cur_pos = self.current_image.rect.center |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
418 if e.key == K_LEFT: |
502
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
419 self.current_image.rect.center = (cur_pos[0] - 1, cur_pos[1]) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
420 elif e.key == K_RIGHT: |
502
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
421 self.current_image.rect.center = (cur_pos[0] + 1, cur_pos[1]) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
422 elif e.key == K_UP: |
502
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
423 self.current_image.rect.center = (cur_pos[0], cur_pos[1] - 1) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
424 elif e.key == K_DOWN: |
502
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
425 self.current_image.rect.center = (cur_pos[0], cur_pos[1] + 1) |
507
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
426 elif self.zoom_display: |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
427 if e.key == K_LEFT: |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
428 self._move_zoom(-1, 0) |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
429 elif e.key == K_RIGHT: |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
430 self._move_zoom(1, 0) |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
431 elif e.key == K_UP: |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
432 self._move_zoom(0, -1) |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
433 elif e.key == K_DOWN: |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
434 self._move_zoom(0, 1) |
caec319a4ae3
Add support for moving zoomed region
Neil Muller <neil@dip.sun.ac.za>
parents:
506
diff
changeset
|
435 |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
436 if e.key == K_o: |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
437 self.toggle_trans_images() |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
438 elif e.key == K_t: |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
439 self.toggle_things() |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
440 elif e.key == K_r: |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
441 self.toggle_thing_rects() |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
442 elif e.key == K_i: |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
443 self.toggle_images() |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
444 elif e.key == K_d: |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
445 self.toggle_rects() |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
446 elif e.key == K_b: |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
447 self.toggle_toolbar() |
506 | 448 elif e.key == K_z: |
449 self.toggle_zoom() | |
510
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
450 elif e.key == K_a: |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
451 self.toggle_anim() |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
452 |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
453 def mouse_down(self, e): |
506 | 454 pos = self._conv_pos(e.pos) |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
455 if self.mode == 'del': |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
456 cand = None |
200 | 457 # Images are drawn above rectangles, so search those first |
458 for image in self.images: | |
459 if image.rect.collidepoint(pos): | |
460 cand = image | |
461 break | |
462 if cand: | |
463 self.images.remove(cand) | |
464 self.invalidate() | |
465 return | |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
466 for (col, rect) in self.rects: |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
467 if rect.collidepoint(pos): |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
468 cand = (col, rect) |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
469 break |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
470 if cand: |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
471 self.rects.remove(cand) |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
472 self.invalidate() |
510
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
473 elif self.mode == 'cycle': |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
474 scene = self._get_scene() |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
475 cand = None |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
476 for thing in scene.things.itervalues(): |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
477 if thing.contains(pos): |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
478 cand = thing |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
479 break |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
480 if cand: |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
481 # Find current interacts in this thing |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
482 cur_interact = cand.current_interact |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
483 j = cand.interacts.values().index(cur_interact) |
538 | 484 if j + 1 < len(cand.interacts): |
485 next_name = cand.interacts.keys()[j + 1] | |
510
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
486 else: |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
487 next_name = cand.interacts.keys()[0] |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
488 if cand.interacts[next_name] != cur_interact: |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
489 cand.set_interact(next_name) |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
490 elif self.mode == 'draw': |
506 | 491 self.start_pos = pos |
492 self.end_pos = pos | |
200 | 493 elif self.mode == 'image': |
494 if self.current_image: | |
495 self.images.append(self.current_image) | |
496 self.current_image = None | |
502
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
497 self.old_mouse_pos = None |
200 | 498 self.invalidate() |
499 else: | |
500 cand = None | |
501 for image in self.images: | |
502 if image.rect.collidepoint(e.pos): | |
503 cand = image | |
504 break | |
505 if cand: | |
506 self.images.remove(cand) | |
507 self.current_image = cand | |
502
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
508 # We want to move relative to the current mouse pos, so |
506 | 509 self.old_mouse_pos = pos |
200 | 510 self.invalidate() |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
511 |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
512 def mouse_up(self, e): |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
513 if self.mode == 'draw': |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
514 rect = pygame.rect.Rect(self.start_pos[0], self.start_pos[1], |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
515 self.end_pos[0] - self.start_pos[0], |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
516 self.end_pos[1] - self.start_pos[1]) |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
517 rect.normalize() |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
518 self.rects.append((self.rect_color, rect)) |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
519 self.start_pos = self.end_pos = None |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
520 |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
521 def mouse_drag(self, e): |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
522 if self.mode == 'draw': |
506 | 523 self.end_pos = self._conv_pos(e.pos) |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
524 self.invalidate() |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
525 |
510
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
526 def animate(self): |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
527 if self.draw_anim: |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
528 if self.state.animate(): |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
529 self.invalidate() |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
530 |
509 | 531 |
532 class ModeLabel(BoomLabel): | |
533 | |
534 def __init__(self, app_image): | |
535 self.app_image = app_image | |
536 super(ModeLabel, self).__init__('Mode : ', 200, | |
537 font=get_font(15, 'VeraBd.ttf'), | |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
538 fg_color=pygame.color.Color(128, 0, 255)) |
509 | 539 self.rect.move_ip(805, 0) |
540 | |
541 def draw_all(self, surface): | |
542 self.set_text('Mode : %s' % self.app_image.mode) | |
543 super(ModeLabel, self).draw_all(surface) | |
544 | |
545 | |
197 | 546 def make_button(text, action, ypos): |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
547 button = Button(text, action=action, font=get_font(15, 'VeraBd.ttf')) |
197 | 548 button.align = 'l' |
576
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
549 button.rect = pygame.rect.Rect(0, 0, constants.menu_width, |
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
550 constants.menu_button_height) |
197 | 551 button.rect.move_ip(805, ypos) |
552 return button | |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
553 |
509 | 554 |
648
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
555 class RectApp(Container): |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
556 """The actual rect drawer main app""" |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
557 def __init__(self, rect, gd): |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
558 super(RectApp, self).__init__(rect, gd) |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
559 |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
560 |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
561 class RectEngine(object): |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
562 """Engine for the rect drawer.""" |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
563 |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
564 def __init__(self, gd, get_initial_state, scene, detail): |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
565 self.state = None |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
566 self._gd = gd |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
567 rect = pygame.display.get_surface().get_rect() |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
568 self.app = RectApp(rect, self._gd) |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
569 |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
570 def run(self): |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
571 """App loop""" |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
572 clock = pygame.time.Clock() |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
573 while True: |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
574 events = pygame.event.get() |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
575 for ev in events: |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
576 if ev.type == QUIT: |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
577 return |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
578 else: |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
579 self.app.event(ev) |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
580 surface = pygame.display.get_surface() |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
581 self.app.draw(surface) |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
582 pygame.display.flip() |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
583 clock.tick(self._gd.constants.frame_rate) |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
584 |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
585 |
b2c2b6f56291
baby steps to fixing rect_drawer - it has now progressed to being completely useless
Neil Muller <neil@dip.sun.ac.za>
parents:
636
diff
changeset
|
586 class RectAppOld(RootWidget): |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
587 """Handle the app stuff for the rect drawer""" |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
588 |
589
ebc48b397fd5
Turn rect_drawer into a command line option
Neil Muller <neil@dip.sun.ac.za>
parents:
576
diff
changeset
|
589 def __init__(self, display, get_initial_state, scene, detail): |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
590 super(RectApp, self).__init__(display) |
589
ebc48b397fd5
Turn rect_drawer into a command line option
Neil Muller <neil@dip.sun.ac.za>
parents:
576
diff
changeset
|
591 pygame.key.set_repeat(200, 100) |
ebc48b397fd5
Turn rect_drawer into a command line option
Neil Muller <neil@dip.sun.ac.za>
parents:
576
diff
changeset
|
592 state = get_initial_state() |
ebc48b397fd5
Turn rect_drawer into a command line option
Neil Muller <neil@dip.sun.ac.za>
parents:
576
diff
changeset
|
593 state.set_current_scene(scene) |
ebc48b397fd5
Turn rect_drawer into a command line option
Neil Muller <neil@dip.sun.ac.za>
parents:
576
diff
changeset
|
594 state.set_current_detail(detail) |
ebc48b397fd5
Turn rect_drawer into a command line option
Neil Muller <neil@dip.sun.ac.za>
parents:
576
diff
changeset
|
595 state.do_check = None |
ebc48b397fd5
Turn rect_drawer into a command line option
Neil Muller <neil@dip.sun.ac.za>
parents:
576
diff
changeset
|
596 |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
597 self.image = AppImage(state) |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
598 self.add(self.image) |
509 | 599 mode_label = ModeLabel(self.image) |
600 self.add(mode_label) | |
601 y = mode_label.get_rect().h | |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
602 draw = make_button('Draw Rect', self.image.draw_mode, y) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
603 self.add(draw) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
604 y += draw.get_rect().h |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
605 load_image = make_button("Load image", self.image.image_load, y) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
606 self.add(load_image) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
607 y += load_image.get_rect().h |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
608 add_image = make_button("Place/Move images", self.image.image_mode, y) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
609 add_image.enabled = False |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
610 self.add(add_image) |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
611 self.image.place_image_menu = add_image |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
612 y += add_image.get_rect().h |
510
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
613 cycle = make_button("Cycle interacts", self.image.cycle_mode, y) |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
614 self.add(cycle) |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
615 y += cycle.get_rect().h |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
616 delete = make_button('Delete Objects', self.image.del_mode, y) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
617 self.add(delete) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
618 y += delete.get_rect().h |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
619 palette = AppPalette(self.image) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
620 palette.rect.move_ip(810, y) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
621 self.add(palette) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
622 y += palette.get_rect().h |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
623 print_rects = make_button("Print objects", self.image.print_objs, y) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
624 self.add(print_rects) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
625 y += print_rects.get_rect().h |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
626 toggle_things = make_button("Show Things (t)", |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
627 self.image.toggle_things, y) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
628 self.add(toggle_things) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
629 y += toggle_things.get_rect().h |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
630 toggle_thing_rects = make_button("Show Thing Rects (r)", |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
631 self.image.toggle_thing_rects, y) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
632 self.add(toggle_thing_rects) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
633 y += toggle_thing_rects.get_rect().h |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
634 toggle_images = make_button("Show Images (i)", |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
635 self.image.toggle_images, y) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
636 self.add(toggle_images) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
637 y += toggle_images.get_rect().h |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
638 trans_images = make_button("Opaque Images (o)", |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
639 self.image.toggle_trans_images, y) |
504
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
640 self.add(trans_images) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
641 y += trans_images.get_rect().h |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
642 toggle_rects = make_button("Show Drawn Rects (d)", |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
643 self.image.toggle_rects, y) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
644 self.add(toggle_rects) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
645 y += toggle_rects.get_rect().h |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
646 toggle_toolbar = make_button("Show Toolbar (b)", |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
647 self.image.toggle_toolbar, y) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
648 self.add(toggle_toolbar) |
506 | 649 y += toggle_toolbar.get_rect().h |
537
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
650 toggle_anim = make_button("Show Animations (a)", |
5b9f371c2bb8
PEP-8 cleanup of tools
Stefano Rivera <stefano@rivera.za.net>
parents:
524
diff
changeset
|
651 self.image.toggle_anim, y) |
510
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
652 self.add(toggle_anim) |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
653 y += toggle_anim.get_rect().h |
506 | 654 toggle_zoom = make_button("Zoom (z)", self.image.toggle_zoom, y) |
655 self.add(toggle_zoom) | |
656 y += toggle_zoom.get_rect().h | |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
657 quit_but = make_button("Quit", self.quit, 570) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
658 self.add(quit_but) |
576
1b1ab71535bd
Classify constants, which involves a whole bunch of XXX comments
Stefano Rivera <stefano@rivera.za.net>
parents:
550
diff
changeset
|
659 self.set_timer(constants.frame_rate) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
660 |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
661 def key_down(self, event): |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
662 # Dispatch to image widget |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
663 self.image.key_down(event) |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
664 |
503
65e17aba12c5
Tweak various aspects of image drawing/mouse code to handle edge cases better
Neil Muller <neil@dip.sun.ac.za>
parents:
502
diff
changeset
|
665 def mouse_delta(self, event): |
65e17aba12c5
Tweak various aspects of image drawing/mouse code to handle edge cases better
Neil Muller <neil@dip.sun.ac.za>
parents:
502
diff
changeset
|
666 # We propogate mouse move from here to draw region, so images move |
65e17aba12c5
Tweak various aspects of image drawing/mouse code to handle edge cases better
Neil Muller <neil@dip.sun.ac.za>
parents:
502
diff
changeset
|
667 # off-screen |
65e17aba12c5
Tweak various aspects of image drawing/mouse code to handle edge cases better
Neil Muller <neil@dip.sun.ac.za>
parents:
502
diff
changeset
|
668 self.image.do_mouse_move(event) |
65e17aba12c5
Tweak various aspects of image drawing/mouse code to handle edge cases better
Neil Muller <neil@dip.sun.ac.za>
parents:
502
diff
changeset
|
669 |
510
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
670 def begin_frame(self): |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
671 self.image.animate() |
d274cc414178
Add show animate & cycle interact options
Neil Muller <neil@dip.sun.ac.za>
parents:
509
diff
changeset
|
672 |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
673 |
589
ebc48b397fd5
Turn rect_drawer into a command line option
Neil Muller <neil@dip.sun.ac.za>
parents:
576
diff
changeset
|
674 def make_rect_display(): |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
675 pygame.display.init() |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
676 pygame.font.init() |
661
5dc866e1d71d
Misc pep8 and pyflakes fixes
Neil Muller <neil@dip.sun.ac.za>
parents:
648
diff
changeset
|
677 pygame.display.set_mode((constants.screen[0] |
5dc866e1d71d
Misc pep8 and pyflakes fixes
Neil Muller <neil@dip.sun.ac.za>
parents:
648
diff
changeset
|
678 + constants.menu_width, constants.screen[1])) |