Mercurial > boomslang
comparison tools/rect_drawer.py @ 174:a2d041e0ab83
Make tool use scenes, not images
author | Neil Muller <neil@dip.sun.ac.za> |
---|---|
date | Wed, 25 Aug 2010 13:18:51 +0200 |
parents | 9b3bba5e65f3 |
children | 39f75faf16cb |
comparison
equal
deleted
inserted
replaced
173:e77e331c874b | 174:a2d041e0ab83 |
---|---|
1 # Quickly hacked together helper for working out | 1 # Quickly hacked together helper for working out |
2 # interactive regions in Suspended Sentence | 2 # interactive regions in Suspended Sentence |
3 | 3 |
4 import sys | 4 import sys |
5 import os.path | |
6 | |
7 script_path = os.path.realpath(os.path.dirname(os.path.dirname(__file__))) | |
8 sys.path.append(script_path) | |
5 | 9 |
6 from albow.root import RootWidget | 10 from albow.root import RootWidget |
7 from albow.utils import frame_rect | 11 from albow.utils import frame_rect |
8 from albow.controls import Image, Button | 12 from albow.widget import Widget |
13 from albow.controls import Button | |
9 from albow.palette_view import PaletteView | 14 from albow.palette_view import PaletteView |
10 from pygame.locals import SWSURFACE | 15 from pygame.locals import SWSURFACE |
11 import pygame | 16 import pygame |
12 from pygame.colordict import THECOLORS | 17 from pygame.colordict import THECOLORS |
18 | |
19 from gamelib.state import initial_state | |
20 from gamelib import constants | |
21 | |
22 constants.DEBUG = True | |
23 | |
13 | 24 |
14 | 25 |
15 class AppPalette(PaletteView): | 26 class AppPalette(PaletteView): |
16 | 27 |
17 sel_width = 5 | 28 sel_width = 5 |
44 def item_is_selected(self, item_no): | 55 def item_is_selected(self, item_no): |
45 return self.selection == item_no | 56 return self.selection == item_no |
46 | 57 |
47 | 58 |
48 | 59 |
49 class AppImage(Image): | 60 class AppImage(Widget): |
50 | 61 |
51 def __init__(self, filename): | 62 def __init__(self, state): |
52 draw_image = pygame.image.load(filename) | 63 self.state = state |
53 super(AppImage, self).__init__(draw_image) | 64 super(AppImage, self).__init__(pygame.rect.Rect(0, 0, 800, 600)) |
54 self.mode = 'draw' | 65 self.mode = 'draw' |
55 self.rects = [] | 66 self.rects = [] |
56 self.start_pos = None | 67 self.start_pos = None |
57 self.end_pos = None | 68 self.end_pos = None |
58 self.draw_color = pygame.color.Color('white') | 69 self.draw_color = pygame.color.Color('white') |
65 self.mode = 'del' | 76 self.mode = 'del' |
66 self.start_pos = None | 77 self.start_pos = None |
67 self.end_pos = None | 78 self.end_pos = None |
68 | 79 |
69 def draw(self, surface): | 80 def draw(self, surface): |
70 super(AppImage, self).draw(surface) | 81 self.state.draw(surface) |
71 if self.mode == 'draw' and self.start_pos: | 82 if self.mode == 'draw' and self.start_pos: |
72 rect = pygame.rect.Rect(self.start_pos[0], self.start_pos[1], | 83 rect = pygame.rect.Rect(self.start_pos[0], self.start_pos[1], |
73 self.end_pos[0] - self.start_pos[0], | 84 self.end_pos[0] - self.start_pos[0], |
74 self.end_pos[1] - self.start_pos[1]) | 85 self.end_pos[1] - self.start_pos[1]) |
75 frame_rect(surface, self.draw_color, rect, 2) | 86 frame_rect(surface, self.draw_color, rect, 2) |
122 | 133 |
123 | 134 |
124 if __name__ == "__main__": | 135 if __name__ == "__main__": |
125 # FIXME: should load an actual scene with current things, not just a | 136 # FIXME: should load an actual scene with current things, not just a |
126 # background image | 137 # background image |
138 if len(sys.argv) < 2: | |
139 print 'Please provide a scene name' | |
140 sys.exit(0) | |
127 pygame.display.init() | 141 pygame.display.init() |
128 pygame.font.init() | 142 pygame.font.init() |
129 display = pygame.display.set_mode((1000, 600)) | 143 display = pygame.display.set_mode((1000, 600)) |
130 imagefile = sys.argv[1] | 144 state = initial_state(None) |
145 try: | |
146 state.set_current_scene(sys.argv[1]) | |
147 state.do_check = None | |
148 except KeyError: | |
149 print 'Invalid scene name' | |
150 sys.exit(1) | |
131 app = RootWidget(display) | 151 app = RootWidget(display) |
132 image = AppImage(imagefile) | 152 image = AppImage(state) |
133 app.add(image) | 153 app.add(image) |
134 draw = Button('Draw Rect', action=image.draw_mode) | 154 draw = Button('Draw Rect', action=image.draw_mode) |
135 app.add(draw) | 155 app.add(draw) |
136 draw.rect.move_ip(810, 0) | 156 draw.rect.move_ip(810, 0) |
137 delete = Button('Del Rect', action=image.del_mode) | 157 delete = Button('Del Rect', action=image.del_mode) |