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