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)