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)