Mercurial > boomslang
comparison pyntnclick/tools/rect_drawer.py @ 708:9b6d68ba627e pyntnclick
Partially hook up file chooser code
author | Neil Muller <neil@dip.sun.ac.za> |
---|---|
date | Sat, 04 Aug 2012 22:30:44 +0200 |
parents | cbf6d4573785 |
children | f33dd2093f77 |
comparison
equal
deleted
inserted
replaced
707:6b8fa2248ee1 | 708:9b6d68ba627e |
---|---|
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 Image = object | 4 Image = object |
5 request_old_filename = None | |
6 | 5 |
7 from pygame.locals import (K_LEFT, K_RIGHT, K_UP, K_DOWN, | 6 from pygame.locals import (K_LEFT, K_RIGHT, K_UP, K_DOWN, |
8 K_a, K_t, K_d, K_i, K_r, K_o, K_b, K_z, | 7 K_a, K_t, K_d, K_i, K_r, K_o, K_b, K_z, |
9 BLEND_RGBA_MIN, SRCALPHA, QUIT, | 8 BLEND_RGBA_MIN, SRCALPHA, QUIT, |
10 MOUSEBUTTONDOWN, MOUSEMOTION, | 9 MOUSEBUTTONDOWN, MOUSEMOTION, |
12 import pygame | 11 import pygame |
13 | 12 |
14 import pyntnclick.constants | 13 import pyntnclick.constants |
15 from pyntnclick.widgets.text import LabelWidget, TextButton | 14 from pyntnclick.widgets.text import LabelWidget, TextButton |
16 from pyntnclick.widgets.base import Container, Button | 15 from pyntnclick.widgets.base import Container, Button |
16 from pyntnclick.widgets.filechooser import FileChooser | |
17 from pyntnclick.tools.utils import draw_rect_image | 17 from pyntnclick.tools.utils import draw_rect_image |
18 | 18 |
19 | 19 |
20 class RectDrawerError(Exception): | 20 class RectDrawerError(Exception): |
21 """Raised when initilaization failed""" | 21 """Raised when initilaization failed""" |
107 class AppImage(Container): | 107 class AppImage(Container): |
108 | 108 |
109 rect_thick = 3 | 109 rect_thick = 3 |
110 draw_thick = 1 | 110 draw_thick = 1 |
111 | 111 |
112 def __init__(self, gd, state, scene, detail): | 112 def __init__(self, parent, gd, state, scene, detail): |
113 self.state = state | 113 self.state = state |
114 super(AppImage, self).__init__(pygame.rect.Rect(0, 0, | 114 super(AppImage, self).__init__(pygame.rect.Rect(0, 0, |
115 constants.screen[0], constants.screen[1]), gd) | 115 constants.screen[0], constants.screen[1]), gd) |
116 self.mode = 'draw' | 116 self.mode = 'draw' |
117 self._scene = scene | 117 self._scene = scene |
118 self._parent = parent | |
118 self._detail = detail | 119 self._detail = detail |
119 self.rects = [] | 120 self.rects = [] |
120 self.images = [] | 121 self.images = [] |
121 self.start_pos = None | 122 self.start_pos = None |
122 self.end_pos = None | 123 self.end_pos = None |
362 print ' (%d, %d, %d, %d),' % (r.x, r.y, r.w, r.h) | 363 print ' (%d, %d, %d, %d),' % (r.x, r.y, r.w, r.h) |
363 print | 364 print |
364 print | 365 print |
365 | 366 |
366 def image_load(self, ev, widget): | 367 def image_load(self, ev, widget): |
367 # XXX: Needs file choose widget | 368 image_path = '.' |
368 return | 369 filechooser = FileChooser((0, 0), self.gd, image_path) |
369 image_path = ('%s/Resources/images/%s' | 370 self._parent.add(filechooser) |
370 % (script_path, self.state.current_scene.FOLDER)) | 371 self._parent.modal = True |
371 imagename = request_old_filename(directory=image_path) | 372 #try: |
372 try: | 373 # image_data = pygame.image.load(imagename) |
373 image_data = pygame.image.load(imagename) | 374 # self.current_image = Image(image_data) |
374 self.current_image = Image(image_data) | 375 # self.place_image_menu.enabled = True |
375 self.place_image_menu.enabled = True | 376 # # ensure we're off screen to start |
376 # ensure we're off screen to start | 377 # self.current_image.rect = image_data.get_rect() \ |
377 self.current_image.rect = image_data.get_rect() \ | 378 # .move(constants.screen[0] + constants.menu_width, |
378 .move(constants.screen[0] + constants.menu_width, | 379 # constants.screen[1]) |
379 constants.screen[1]) | 380 #except pygame.error, e: |
380 except pygame.error, e: | 381 # print 'Unable to load image %s' % e |
381 print 'Unable to load image %s' % e | |
382 | 382 |
383 def image_mode(self, ev, widget): | 383 def image_mode(self, ev, widget): |
384 self.mode = 'image' | 384 self.mode = 'image' |
385 self.start_pos = None | 385 self.start_pos = None |
386 self.end_pos = None | 386 self.end_pos = None |
602 try: | 602 try: |
603 scene = state.detail_views[detail] | 603 scene = state.detail_views[detail] |
604 except KeyError: | 604 except KeyError: |
605 raise RectDrawerError('Invalid detail: %s' % detail) | 605 raise RectDrawerError('Invalid detail: %s' % detail) |
606 | 606 |
607 self.image = AppImage(gd, state, scene, detail is not None) | 607 self.image = AppImage(self, gd, state, scene, detail is not None) |
608 self.add(self.image) | 608 self.add(self.image) |
609 mode_label = ModeLabel(pygame.Rect((805, 0), (200, 25)), | 609 mode_label = ModeLabel(pygame.Rect((805, 0), (200, 25)), |
610 self.gd, self.image) | 610 self.gd, self.image) |
611 self.add(mode_label) | 611 self.add(mode_label) |
612 y = mode_label.rect.height | 612 y = mode_label.rect.height |