# HG changeset patch # User Neil Muller # Date 1329150248 -7200 # Node ID 929b63589c9620c910d6cdca13894f9afa2e2aa0 # Parent 6892d36dad7532238d3fc62b678f7ff4bf85a2fa Further fixes diff -r 6892d36dad75 -r 929b63589c96 pyntnclick/tools/rect_drawer.py --- a/pyntnclick/tools/rect_drawer.py Mon Feb 13 15:53:54 2012 +0200 +++ b/pyntnclick/tools/rect_drawer.py Mon Feb 13 18:24:08 2012 +0200 @@ -1,13 +1,17 @@ # Quickly hacked together helper for working out # interactive regions in Suspended Sentence -frame_rect = None +def frame_rect(*args): + pass + Image = object request_old_filename = None from pygame.locals import (K_LEFT, K_RIGHT, K_UP, K_DOWN, K_a, K_t, K_d, K_i, K_r, K_o, K_b, K_z, - BLEND_RGBA_MIN, SRCALPHA, QUIT) + BLEND_RGBA_MIN, SRCALPHA, QUIT, + MOUSEBUTTONDOWN, MOUSEMOTION, + MOUSEBUTTONUP) import pygame import pyntnclick.constants @@ -98,6 +102,9 @@ self.offset = (-self.state.current_scene.OFFSET[0], -self.state.current_scene.OFFSET[1]) self.find_existing_intersects() + self.add_callback(MOUSEBUTTONDOWN, self.mouse_down) + self.add_callback(MOUSEBUTTONUP, self.mouse_down) + self.add_callback(MOUSEMOTION, self.mouse_move) def _get_scene(self): if self.state.current_detail: @@ -304,7 +311,7 @@ d[col].append(rect) return d - def print_objs(self): + def print_objs(self, ev, widget): d = self._make_dict() self.find_intersecting_rects(d) for (num, col) in enumerate(d): @@ -379,8 +386,8 @@ self._check_limits(offset) self.zoom_offset = tuple(offset) - def do_mouse_move(self, e): - pos = self._conv_pos(e.pos) + def do_mouse_move(self, ev, widget): + pos = self._conv_pos(ev.pos) if not self.zoom_display: # Construct zoom offset from mouse pos self._make_zoom_offset(e.pos) @@ -435,8 +442,8 @@ elif e.key == K_a: self.toggle_anim(None, None) - def mouse_down(self, e): - pos = self._conv_pos(e.pos) + def mouse_down(self, ev, widget): + pos = self._conv_pos(ev.pos) if self.mode == 'del': cand = None # Images are drawn above rectangles, so search those first @@ -494,7 +501,7 @@ self.old_mouse_pos = pos self.invalidate() - def mouse_up(self, e): + def mouse_up(self, ev, widget): if self.mode == 'draw': rect = pygame.rect.Rect(self.start_pos[0], self.start_pos[1], self.end_pos[0] - self.start_pos[0], @@ -503,10 +510,13 @@ self.rects.append((self.rect_color, rect)) self.start_pos = self.end_pos = None - def mouse_drag(self, e): + def mouse_move(self, ev, widget): + # We're only interested in this if left mouse button is down + if ev.buttons[0] != 1: + return False if self.mode == 'draw': - self.end_pos = self._conv_pos(e.pos) - self.invalidate() + self.end_pos = self._conv_pos(ev.pos) + return True def animate(self): if self.draw_anim: