Mercurial > pyntnclick
annotate tools/rect_drawer.py @ 505:4c8aa01b606c
Tweak menu layout. Add keys for toggle options
author | Neil Muller <neil@dip.sun.ac.za> |
---|---|
date | Thu, 02 Sep 2010 12:25:48 +0200 |
parents | f3dbe35b6e4b |
children | d54667b2c44d |
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 |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
4 import sys |
174
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
5 import os.path |
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
6 |
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
7 script_path = os.path.realpath(os.path.dirname(os.path.dirname(__file__))) |
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
8 sys.path.append(script_path) |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
9 |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
10 from albow.root import RootWidget |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
11 from albow.utils import frame_rect |
174
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
12 from albow.widget import Widget |
200 | 13 from albow.controls import Button, Image |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
14 from albow.palette_view import PaletteView |
199 | 15 from albow.file_dialogs import request_old_filename |
243
0ea4661d134c
Show close button area in helper
Neil Muller <neil@dip.sun.ac.za>
parents:
238
diff
changeset
|
16 from albow.resource import get_font |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
17 from pygame.locals import SWSURFACE, K_LEFT, K_RIGHT, K_UP, K_DOWN, \ |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
18 K_t, K_d, K_i, K_r, K_o, K_b, \ |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
19 BLEND_RGBA_MIN, SRCALPHA |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
20 import pygame |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
21 from pygame.colordict import THECOLORS |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
22 |
250 | 23 from gamelib import constants |
24 constants.DEBUG = True | |
25 | |
286
776bcf563ea0
Re-enable thing rects by default in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
279
diff
changeset
|
26 from gamelib import state |
776bcf563ea0
Re-enable thing rects by default in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
279
diff
changeset
|
27 state.DEBUG_RECTS = True |
243
0ea4661d134c
Show close button area in helper
Neil Muller <neil@dip.sun.ac.za>
parents:
238
diff
changeset
|
28 from gamelib.widgets import BoomLabel |
174
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
29 |
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
30 |
165
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
31 class AppPalette(PaletteView): |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
32 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
33 sel_width = 5 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
34 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
35 colors = [ |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
36 '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
|
37 '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
|
38 '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
|
39 '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
|
40 ] |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
41 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
42 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
|
43 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
|
44 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
|
45 self.selection = 0 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
46 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
|
47 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
48 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
|
49 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
|
50 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
51 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
|
52 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
|
53 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
|
54 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
|
55 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
56 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
|
57 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
|
58 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
|
59 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
60 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
|
61 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
|
62 |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
63 |
174
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
64 class AppImage(Widget): |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
65 |
181
f98bc17f5e67
Add attributes for drawing rects
Neil Muller <neil@dip.sun.ac.za>
parents:
179
diff
changeset
|
66 rect_thick = 3 |
f98bc17f5e67
Add attributes for drawing rects
Neil Muller <neil@dip.sun.ac.za>
parents:
179
diff
changeset
|
67 draw_thick = 1 |
f98bc17f5e67
Add attributes for drawing rects
Neil Muller <neil@dip.sun.ac.za>
parents:
179
diff
changeset
|
68 |
174
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
69 def __init__(self, state): |
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
70 self.state = state |
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
71 super(AppImage, self).__init__(pygame.rect.Rect(0, 0, 800, 600)) |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
72 self.mode = 'draw' |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
73 self.rects = [] |
200 | 74 self.images = [] |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
75 self.start_pos = None |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
76 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
|
77 self.rect_color = pygame.color.Color('white') |
200 | 78 self.current_image = None |
199 | 79 self.place_image_menu = None |
243
0ea4661d134c
Show close button area in helper
Neil Muller <neil@dip.sun.ac.za>
parents:
238
diff
changeset
|
80 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
|
81 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
|
82 self.close_button.bg_color = (0, 0, 0) |
0ea4661d134c
Show close button area in helper
Neil Muller <neil@dip.sun.ac.za>
parents:
238
diff
changeset
|
83 if self.state.current_detail: |
0ea4661d134c
Show close button area in helper
Neil Muller <neil@dip.sun.ac.za>
parents:
238
diff
changeset
|
84 w, h = self.state.current_detail.get_detail_size() |
0ea4661d134c
Show close button area in helper
Neil Muller <neil@dip.sun.ac.za>
parents:
238
diff
changeset
|
85 rect = pygame.rect.Rect(0, 0, w, h) |
0ea4661d134c
Show close button area in helper
Neil Muller <neil@dip.sun.ac.za>
parents:
238
diff
changeset
|
86 self.close_button.rect.midbottom = rect.midbottom |
0ea4661d134c
Show close button area in helper
Neil Muller <neil@dip.sun.ac.za>
parents:
238
diff
changeset
|
87 self.add(self.close_button) |
279
c67a4a4d78f6
Compensate for offset in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
276
diff
changeset
|
88 self.offset = (0, 0) |
c67a4a4d78f6
Compensate for offset in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
276
diff
changeset
|
89 else: |
c67a4a4d78f6
Compensate for offset in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
276
diff
changeset
|
90 self.offset = (-self.state.current_scene.OFFSET[0], - self.state.current_scene.OFFSET[1]) |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
91 self.draw_rects = True |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
92 self.draw_things = True |
312
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
93 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
|
94 self.draw_images = True |
504
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
95 self.trans_images = False |
275
d78ce15bccc8
Crew quarters background and toolbar on the rect tool.
Jeremy Thurgood <firxen@gmail.com>
parents:
268
diff
changeset
|
96 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
|
97 self.old_mouse_pos = None |
323
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
98 self.find_existing_intersects() |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
99 |
323
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
100 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
|
101 """Parse the things in the scene for overlaps""" |
323
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
102 if self.state.current_detail: |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
103 scene = self.state.current_detail |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
104 else: |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
105 scene = self.state.current_scene |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
106 # Pylint hates this function |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
107 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
|
108 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
|
109 thing.set_interact(interact_name) |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
110 if hasattr(thing.rect, 'collidepoint'): |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
111 thing_rects = [thing.rect] |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
112 else: |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
113 thing_rects = thing.rect |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
114 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
|
115 if thing is thing2: |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
116 continue |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
117 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
|
118 thing2.set_interact(interact2_name) |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
119 if hasattr(thing2.rect, 'collidepoint'): |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
120 thing2_rects = [thing2.rect] |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
121 else: |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
122 thing2_rects = thing2.rect |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
123 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
|
124 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
|
125 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
|
126 print 'Existing Intersecting rects' |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
127 print " Thing1 %s Interact %s" % (thing.name, interact_name) |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
128 print " Thing2 %s Interact %s" % (thing2.name, interact2_name) |
0630a37cb371
Print existing intersection in scene on startup
Neil Muller <neil@dip.sun.ac.za>
parents:
321
diff
changeset
|
129 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
|
130 print |
320
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
131 |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
132 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
|
133 """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
|
134 # I loath N^X brute search algorithm's, but whatever, hey |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
135 if self.state.current_detail: |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
136 scene = self.state.current_detail |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
137 else: |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
138 scene = self.state.current_scene |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
139 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
|
140 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
|
141 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
|
142 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
|
143 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
|
144 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
|
145 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
|
146 else: |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
147 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
|
148 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
|
149 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
|
150 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
|
151 print 'Intersecting rects' |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
152 print " Object %s" % num |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
153 print " Thing %s Interact %s" % (thing.name, interact_name) |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
154 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
|
155 if thing.INITIAL: |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
156 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
|
157 print |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
158 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
|
159 if num2 == num: |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
160 continue |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
161 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
|
162 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
|
163 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
|
164 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
|
165 print 'Intersecting rects', |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
166 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
|
167 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
|
168 print |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
169 print |
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
170 |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
171 def toggle_things(self): |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
172 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
|
173 |
312
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
174 def toggle_thing_rects(self): |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
175 self.draw_thing_rects = not self.draw_thing_rects |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
176 if self.state.current_detail: |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
177 scene = self.state.current_detail |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
178 else: |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
179 scene = self.state.current_scene |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
180 for thing in scene.things.itervalues(): |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
181 if not self.draw_thing_rects: |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
182 if not hasattr(thing, 'old_colour'): |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
183 thing.old_colour = thing._interact_hilight_color |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
184 thing._interact_hilight_color = None |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
185 else: |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
186 thing._interact_hilight_color = thing.old_colour |
a0d66c0f5a89
Add toggle thing rects option
Neil Muller <neil@dip.sun.ac.za>
parents:
286
diff
changeset
|
187 |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
188 def toggle_images(self): |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
189 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
|
190 |
504
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
191 def toggle_trans_images(self): |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
192 self.trans_images = not self.trans_images |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
193 self.invalidate() |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
194 |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
195 def toggle_rects(self): |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
196 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
|
197 |
275
d78ce15bccc8
Crew quarters background and toolbar on the rect tool.
Jeremy Thurgood <firxen@gmail.com>
parents:
268
diff
changeset
|
198 def toggle_toolbar(self): |
d78ce15bccc8
Crew quarters background and toolbar on the rect tool.
Jeremy Thurgood <firxen@gmail.com>
parents:
268
diff
changeset
|
199 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
|
200 |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
201 def draw_mode(self): |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
202 self.mode = 'draw' |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
203 |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
204 def del_mode(self): |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
205 self.mode = 'del' |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
206 self.start_pos = None |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
207 self.end_pos = None |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
208 |
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
|
209 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
|
210 """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
|
211 subsurface""" |
504
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
212 surf = pygame.surface.Surface((cropped_rect.w, cropped_rect.h), 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
|
213 frame = surf.get_rect() |
504
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
214 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
|
215 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
|
216 r.topleft = frame.topleft |
504
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
217 if self.trans_images: |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
218 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
|
219 surf.blit(imsurf, r, None, BLEND_RGBA_MIN) |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
220 else: |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
221 surf.blit(imsurf, r, None) |
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
222 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
|
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(self, surface): |
238
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
225 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
|
226 if self.draw_things: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
227 self.state.draw_detail(surface, None) |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
228 else: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
229 self.state.current_detail.draw_background(surface) |
238
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
230 else: |
268
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
231 if self.draw_things: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
232 self.state.draw(surface, None) |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
233 else: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
234 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
|
235 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
|
236 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
|
237 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
|
238 self.end_pos[1] - self.start_pos[1]) |
321 | 239 rect.normalize() |
320
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
240 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
|
241 if self.draw_rects: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
242 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
|
243 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
|
244 if self.draw_images: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
245 for image in self.images: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
246 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
|
247 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
|
248 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
|
249 else: |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
250 print 'image outside surface', image |
e4ea9def56b2
Add some toggle options to helper script
Neil Muller <neil@dip.sun.ac.za>
parents:
250
diff
changeset
|
251 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
|
252 if self.current_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
|
253 cropped_rect = self.current_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
|
254 self.draw_sub_image(self.current_image, surface, cropped_rect) |
275
d78ce15bccc8
Crew quarters background and toolbar on the rect tool.
Jeremy Thurgood <firxen@gmail.com>
parents:
268
diff
changeset
|
255 if self.draw_toolbar: |
d78ce15bccc8
Crew quarters background and toolbar on the rect tool.
Jeremy Thurgood <firxen@gmail.com>
parents:
268
diff
changeset
|
256 toolbar_rect = pygame.rect.Rect(0, 550, 800, 50) |
d78ce15bccc8
Crew quarters background and toolbar on the rect tool.
Jeremy Thurgood <firxen@gmail.com>
parents:
268
diff
changeset
|
257 tb_surf = surface.subsurface(0, 550, 800, 50).convert_alpha() |
276
75f4ee46ac58
Better (and fixed) rect tool with toolbar overlay.
Jeremy Thurgood <firxen@gmail.com>
parents:
275
diff
changeset
|
258 tb_surf.fill(pygame.color.Color(127, 0, 0, 191)) |
75f4ee46ac58
Better (and fixed) rect tool with toolbar overlay.
Jeremy Thurgood <firxen@gmail.com>
parents:
275
diff
changeset
|
259 surface.blit(tb_surf, (0, 550)) |
75f4ee46ac58
Better (and fixed) rect tool with toolbar overlay.
Jeremy Thurgood <firxen@gmail.com>
parents:
275
diff
changeset
|
260 # frame_rect(surface, (127, 0, 0), toolbar_rect, 2) |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
261 |
165
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
262 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
|
263 d = {} |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
264 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
|
265 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
|
266 d.setdefault(col, []) |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
267 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
|
268 return d |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
269 |
198
e73d78d6dd83
Stubs for ftuture functionality
Neil Muller <neil@dip.sun.ac.za>
parents:
197
diff
changeset
|
270 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
|
271 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
|
272 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
|
273 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
|
274 print 'Rect %d : ' % num |
279
c67a4a4d78f6
Compensate for offset in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
276
diff
changeset
|
275 for rect in d[col]: |
c67a4a4d78f6
Compensate for offset in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
276
diff
changeset
|
276 r = rect.move(self.offset) |
179
39f75faf16cb
Add trailing , for copy-n-paste
Neil Muller <neil@dip.sun.ac.za>
parents:
174
diff
changeset
|
277 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
|
278 print |
200 | 279 for i, image in enumerate(self.images): |
280 print 'Image %d' % i | |
279
c67a4a4d78f6
Compensate for offset in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
276
diff
changeset
|
281 rect = image.rect |
c67a4a4d78f6
Compensate for offset in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
276
diff
changeset
|
282 r = rect.move(self.offset) |
200 | 283 print ' (%d, %d, %d, %d),' % (r.x, r.y, r.w, r.h) |
284 print | |
320
c295b06b27f8
Warn about intersecting existing things and other drawn rects
Neil Muller <neil@dip.sun.ac.za>
parents:
312
diff
changeset
|
285 print |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
286 |
199 | 287 def image_load(self): |
288 image_path= '%s/Resources/images/%s' % (script_path, self.state.current_scene.FOLDER) | |
289 imagename = request_old_filename(directory=image_path) | |
290 try: | |
200 | 291 image_data = pygame.image.load(imagename) |
292 self.current_image = Image(image_data) | |
199 | 293 self.place_image_menu.enabled = True |
200 | 294 # ensure we're off screen to start |
295 self.current_image.rect = image_data.get_rect().move(1000, 600) | |
199 | 296 except pygame.error, e: |
297 print 'Unable to load image %s' % e | |
198
e73d78d6dd83
Stubs for ftuture functionality
Neil Muller <neil@dip.sun.ac.za>
parents:
197
diff
changeset
|
298 |
e73d78d6dd83
Stubs for ftuture functionality
Neil Muller <neil@dip.sun.ac.za>
parents:
197
diff
changeset
|
299 def image_mode(self): |
e73d78d6dd83
Stubs for ftuture functionality
Neil Muller <neil@dip.sun.ac.za>
parents:
197
diff
changeset
|
300 self.mode = 'image' |
e73d78d6dd83
Stubs for ftuture functionality
Neil Muller <neil@dip.sun.ac.za>
parents:
197
diff
changeset
|
301 self.start_pos = None |
e73d78d6dd83
Stubs for ftuture functionality
Neil Muller <neil@dip.sun.ac.za>
parents:
197
diff
changeset
|
302 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
|
303 # 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
|
304 self.old_mouse_pos = None |
198
e73d78d6dd83
Stubs for ftuture functionality
Neil Muller <neil@dip.sun.ac.za>
parents:
197
diff
changeset
|
305 |
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
|
306 def do_mouse_move(self, e): |
200 | 307 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
|
308 if self.old_mouse_pos: |
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
309 delta = (e.pos[0] - self.old_mouse_pos[0], e.pos[1] - self.old_mouse_pos[1]) |
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
310 self.current_image.rect.center = (self.current_image.rect.center[0] + delta[0], self.current_image.rect.center[1] + delta[1]) |
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
311 else: |
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
312 self.current_image.rect.center = e.pos |
200 | 313 self.invalidate() |
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
|
314 self.old_mouse_pos = e.pos |
200 | 315 |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
316 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
|
317 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
|
318 # 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
|
319 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
|
320 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
|
321 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
|
322 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
|
323 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
|
324 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
|
325 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
|
326 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
|
327 self.current_image.rect.center = (cur_pos[0], cur_pos[1] + 1) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
328 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
|
329 self.toggle_trans_images() |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
330 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
|
331 self.toggle_things() |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
332 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
|
333 self.toggle_thing_rects() |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
334 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
|
335 self.toggle_images() |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
336 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
|
337 self.toggle_rects() |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
338 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
|
339 self.toggle_toolbar() |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
340 |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
341 def mouse_down(self, e): |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
342 if self.mode == 'del': |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
343 pos = e.pos |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
344 cand = None |
200 | 345 # Images are drawn above rectangles, so search those first |
346 for image in self.images: | |
347 if image.rect.collidepoint(pos): | |
348 cand = image | |
349 break | |
350 if cand: | |
351 self.images.remove(cand) | |
352 self.invalidate() | |
353 return | |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
354 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
|
355 if rect.collidepoint(pos): |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
356 cand = (col, rect) |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
357 break |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
358 if cand: |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
359 self.rects.remove(cand) |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
360 self.invalidate() |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
361 elif self.mode == 'draw': |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
362 self.start_pos = e.pos |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
363 self.end_pos = e.pos |
200 | 364 elif self.mode == 'image': |
365 if self.current_image: | |
366 self.images.append(self.current_image) | |
367 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
|
368 self.old_mouse_pos = None |
200 | 369 self.invalidate() |
370 else: | |
371 cand = None | |
372 for image in self.images: | |
373 if image.rect.collidepoint(e.pos): | |
374 cand = image | |
375 break | |
376 if cand: | |
377 self.images.remove(cand) | |
378 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
|
379 # We want to move relative to the current mouse pos, so |
f53aaba58273
Use relative motion for images to remove jumping when combining key & mouse
Neil Muller <neil@dip.sun.ac.za>
parents:
482
diff
changeset
|
380 self.old_mouse_pos = e.pos |
200 | 381 self.invalidate() |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
382 |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
383 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
|
384 if self.mode == 'draw': |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
385 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
|
386 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
|
387 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
|
388 rect.normalize() |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
389 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
|
390 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
|
391 |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
392 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
|
393 if self.mode == 'draw': |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
394 self.end_pos = e.pos |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
395 self.invalidate() |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
396 |
197 | 397 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
|
398 button = Button(text, action=action, font=get_font(15, 'VeraBd.ttf')) |
197 | 399 button.align = 'l' |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
400 button.rect = pygame.rect.Rect(0, 0, 200, 30) |
197 | 401 button.rect.move_ip(805, ypos) |
402 return button | |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
403 |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
404 class RectApp(RootWidget): |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
405 """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
|
406 |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
407 def __init__(self, display): |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
408 super(RectApp, self).__init__(display) |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
409 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
|
410 self.add(self.image) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
411 y = 0 |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
412 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
|
413 self.add(draw) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
414 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
|
415 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
|
416 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
|
417 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
|
418 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
|
419 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
|
420 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
|
421 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
|
422 y += add_image.get_rect().h |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
423 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
|
424 self.add(delete) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
425 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
|
426 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
|
427 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
|
428 self.add(palette) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
429 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
|
430 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
|
431 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
|
432 y += print_rects.get_rect().h |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
433 toggle_things = make_button("Show Things (t)", 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
|
434 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
|
435 y += toggle_things.get_rect().h |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
436 toggle_thing_rects = make_button("Show Thing Rects (r)", 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
|
437 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
|
438 y += toggle_thing_rects.get_rect().h |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
439 toggle_images = make_button("Show Images (i)", 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
|
440 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
|
441 y += toggle_images.get_rect().h |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
442 trans_images = make_button("Opaque Images (o)", self.image.toggle_trans_images, y) |
504
f3dbe35b6e4b
Add 'translucent image mode'
Neil Muller <neil@dip.sun.ac.za>
parents:
503
diff
changeset
|
443 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
|
444 y += trans_images.get_rect().h |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
445 toggle_rects = make_button("Show Drawn Rects (d)", 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
|
446 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
|
447 y += toggle_rects.get_rect().h |
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
448 toggle_toolbar = make_button("Show Toolbar (b)", 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
|
449 self.add(toggle_toolbar) |
505
4c8aa01b606c
Tweak menu layout. Add keys for toggle options
Neil Muller <neil@dip.sun.ac.za>
parents:
504
diff
changeset
|
450 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
|
451 self.add(quit_but) |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
452 |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
453 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
|
454 # 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
|
455 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
|
456 |
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
|
457 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
|
458 # 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
|
459 # 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
|
460 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
|
461 |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
462 |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
463 if __name__ == "__main__": |
165
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
464 # FIXME: should load an actual scene with current things, not just a |
9b3bba5e65f3
add some features to rect helper. now vaguely useful
Neil Muller <neil@dip.sun.ac.za>
parents:
162
diff
changeset
|
465 # background image |
174
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
466 if len(sys.argv) < 2: |
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
467 print 'Please provide a scene name' |
a2d041e0ab83
Make tool use scenes, not images
Neil Muller <neil@dip.sun.ac.za>
parents:
165
diff
changeset
|
468 sys.exit(0) |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
469 pygame.display.init() |
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
470 pygame.font.init() |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
471 # enable key repeating |
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
472 pygame.key.set_repeat(200, 100) |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
473 display = pygame.display.set_mode((1000, 600)) |
286
776bcf563ea0
Re-enable thing rects by default in rect_drawer
Neil Muller <neil@dip.sun.ac.za>
parents:
279
diff
changeset
|
474 state = state.initial_state() |
238
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
475 if len(sys.argv) < 3: |
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
476 try: |
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
477 state.set_current_scene(sys.argv[1]) |
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
478 state.do_check = None |
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
479 except KeyError: |
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
480 print 'Invalid scene name' |
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
481 sys.exit(1) |
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
482 else: |
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
483 try: |
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
484 state.set_current_scene(sys.argv[1]) |
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
485 state.set_current_detail(sys.argv[2]) |
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
486 state.do_check = None |
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
487 except KeyError: |
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
488 print 'Invalid scene name' |
2510e0b0e901
Add detail view support to helper
Neil Muller <neil@dip.sun.ac.za>
parents:
213
diff
changeset
|
489 sys.exit(1) |
482
2bef605a0ef2
Refactor to add support for key movement of images
Neil Muller <neil@dip.sun.ac.za>
parents:
323
diff
changeset
|
490 app = RectApp(display) |
162
225e3a4b1e85
Start of a tool to help construct interact rectangles
Neil Muller <neil@dip.sun.ac.za>
parents:
diff
changeset
|
491 app.run() |