Mercurial > boomslang
comparison pyntnclick/tools/rect_drawer.py @ 719:3aa6163f0775 pyntnclick
Correctly pause rect drawer while file chooser is active (avoid spurious empty rectangle)
author | Neil Muller <neil@dip.sun.ac.za> |
---|---|
date | Mon, 06 Aug 2012 11:24:16 +0200 |
parents | ab489f7e87f8 |
children | 69a0349dce8e |
comparison
equal
deleted
inserted
replaced
718:ab489f7e87f8 | 719:3aa6163f0775 |
---|---|
352 self.filechooser = FileChooser((0, 0), self.gd, os.curdir, | 352 self.filechooser = FileChooser((0, 0), self.gd, os.curdir, |
353 self.do_load_image) | 353 self.do_load_image) |
354 else: | 354 else: |
355 self.filechooser.refresh() | 355 self.filechooser.refresh() |
356 self.invalidate() | 356 self.invalidate() |
357 self._parent.paused = True | |
357 self._parent.add(self.filechooser) | 358 self._parent.add(self.filechooser) |
358 | 359 |
359 def do_load_image(self, filename): | 360 def do_load_image(self, filename): |
360 try: | 361 try: |
361 self.current_image = TranslucentImage((0, 0), self.gd, | 362 self.current_image = TranslucentImage((0, 0), self.gd, |
454 elif ev.key == K_a: | 455 elif ev.key == K_a: |
455 self.toggle_anim(None, None) | 456 self.toggle_anim(None, None) |
456 | 457 |
457 def mouse_down(self, ev, widget): | 458 def mouse_down(self, ev, widget): |
458 pos = self._conv_pos(ev.pos) | 459 pos = self._conv_pos(ev.pos) |
460 if self._parent.paused: | |
461 # Ignore this if the filechooser is active | |
462 return False | |
459 if self.mode == 'del': | 463 if self.mode == 'del': |
460 cand = None | 464 cand = None |
461 # Images are drawn above rectangles, so search those first | 465 # Images are drawn above rectangles, so search those first |
462 for image in self.images: | 466 for image in self.images: |
463 if image.rect.collidepoint(pos): | 467 if image.rect.collidepoint(pos): |
512 # We want to move relative to the current mouse pos, so | 516 # We want to move relative to the current mouse pos, so |
513 self.old_mouse_pos = pos | 517 self.old_mouse_pos = pos |
514 self.invalidate() | 518 self.invalidate() |
515 | 519 |
516 def mouse_up(self, ev, widget): | 520 def mouse_up(self, ev, widget): |
521 if self._parent.paused: | |
522 return False | |
517 if self.mode == 'draw': | 523 if self.mode == 'draw': |
518 rect = pygame.rect.Rect(self.start_pos[0], self.start_pos[1], | 524 rect = pygame.rect.Rect(self.start_pos[0], self.start_pos[1], |
519 self.end_pos[0] - self.start_pos[0], | 525 self.end_pos[0] - self.start_pos[0], |
520 self.end_pos[1] - self.start_pos[1]) | 526 self.end_pos[1] - self.start_pos[1]) |
521 rect.normalize() | 527 rect.normalize() |
589 if detail: | 595 if detail: |
590 try: | 596 try: |
591 scene = state.detail_views[detail] | 597 scene = state.detail_views[detail] |
592 except KeyError: | 598 except KeyError: |
593 raise RectDrawerError('Invalid detail: %s' % detail) | 599 raise RectDrawerError('Invalid detail: %s' % detail) |
600 | |
601 self.paused = False | |
594 | 602 |
595 self.image = AppImage(self, gd, state, scene, detail is not None) | 603 self.image = AppImage(self, gd, state, scene, detail is not None) |
596 self.add(self.image) | 604 self.add(self.image) |
597 mode_label = ModeLabel(pygame.Rect((805, 0), (200, 25)), | 605 mode_label = ModeLabel(pygame.Rect((805, 0), (200, 25)), |
598 self.gd, self.image) | 606 self.gd, self.image) |