diff options
author | Walter Bender <walter.bender@gmail.com> | 2012-08-15 12:22:44 (GMT) |
---|---|---|
committer | Walter Bender <walter.bender@gmail.com> | 2012-08-15 12:22:44 (GMT) |
commit | 2905473455b76b5b3bb68178c25002a218f4d30b (patch) | |
tree | 312862d7de42f5468858153e6f4491b708e4904f | |
parent | e639b2d36f7df297a70e80b97426787d4365965d (diff) |
clean up of thumbnail dragging code
-rw-r--r-- | PortfolioActivity.py | 82 |
1 files changed, 48 insertions, 34 deletions
diff --git a/PortfolioActivity.py b/PortfolioActivity.py index 87b627d..377a78d 100644 --- a/PortfolioActivity.py +++ b/PortfolioActivity.py @@ -193,6 +193,7 @@ class PortfolioActivity(activity.Activity): self._setup_canvas() self._slides = [] + self._current_slide = 0 self._thumbnail_mode = False self._find_starred() @@ -349,6 +350,7 @@ class PortfolioActivity(activity.Activity): self._width, self._height, (self._colors[0], self._colors[0])))) self._my_canvas.set_layer(BOTTOM) + self._my_canvas.type = 'background' self._clear_screen() @@ -421,7 +423,9 @@ class PortfolioActivity(activity.Activity): separator_factory(adjust_toolbar) - button_factory('system-restart', adjust_toolbar, self._rescan_cb, + button_factory('system-restart', + adjust_toolbar, + self._rescan_cb, tooltip=_('Refresh')) separator_factory(self.toolbar) @@ -457,12 +461,16 @@ class PortfolioActivity(activity.Activity): gtk.main_quit() def _thumb_to_slide(self, spr): + if spr is None: + return None for slide in self._slides: if slide.thumb == spr: return slide return None def _star_to_slide(self, spr): + if spr is None: + return None for slide in self._slides: if slide.star == spr: return slide @@ -694,19 +702,10 @@ class PortfolioActivity(activity.Activity): _logger.debug('Playing audio note') gobject.idle_add(play_audio_from_file, slide.sound.file_path) - ''' - self._playback_button.set_icon('media-playback-start') - self._playback_button.set_tooltip(_('Play recording')) - ''' self._playback_button.set_image(self.playback_pixbuf) self._playback_button.type = 'play' self._playback_button.set_layer(DRAG) else: - ''' - self._playback_button.set_icon( - 'media-playback-start-insensitive') - self._playback_button.set_tooltip(_('Nothing to play')) - ''' self._playback_button.hide() self._playback_button.type = 'noplay' self._record_button.set_image(self.record_pixbuf) @@ -714,18 +713,16 @@ class PortfolioActivity(activity.Activity): def _slides_cb(self, button=None): if self._thumbnail_mode: self._thumbnail_mode = False - self.i = self._current_slide - self._show_slide() + self.i = self._current_slide + self._prev.set_layer(DRAG) + self._next.set_layer(DRAG) + self._record_button.set_layer(DRAG) + self._playback_button.set_layer(DRAG) + self._show_slide() def _thumbs_cb(self, button=None): ''' Toggle between thumbnail view and slideshow view. ''' - if not self._thumbnail_mode: - self._show_thumbs() - else: - self._prev.set_layer(DRAG) - self._next.set_layer(DRAG) - self._record_button.set_layer(DRAG) - self._playback_button.set_layer(DRAG) + self._show_thumbs() return False def _count_active(self): @@ -869,7 +866,6 @@ class PortfolioActivity(activity.Activity): self._unselect() # Are we clicking on a button? - _logger.debug(spr.type) if spr.type == 'next': self._next_cb() return True @@ -959,8 +955,22 @@ class PortfolioActivity(activity.Activity): if self._press == self._release: if self._total_drag[0] * self._total_drag[0] + \ self._total_drag[1] * self._total_drag[1] < 200: - self._current_slide = self._slides.index(press_slide) + self.i = self._slides.index(press_slide) + self._current_slide = self.i self._slide_button.set_active(True) + else: # TODO: test for dragged to beginning + i = self._slides.index(press_slide) + n = len(self._slides) - 1 + press_slide.thumb.move(self._startpos) + press_slide.star.move(self._startpos) + if self._total_drag[1] > 0: + while i < n: + self._swap_slides(i, i + 1) + i += 1 + else: + while i > 0: + self._swap_slides(i, i - 1) + i -= 1 # ...and it is not the one we dragged, swap their positions. else: # Could have released on top of a star or a thumbnail @@ -968,22 +978,26 @@ class PortfolioActivity(activity.Activity): release_slide = self._star_to_slide(self._release) else: release_slide = self._thumb_to_slide(self._release) - if release_slide is None: # Move to end of slide list - pass # TODO - else: - i = self._slides.index(press_slide) - j = self._slides.index(release_slide) - self._slides[i] = release_slide - self._slides[j] = press_slide - x, y = release_slide.thumb.get_xy() - press_slide.thumb.move((x, y)) - press_slide.star.move((x, y)) - release_slide.thumb.move(self._startpos) - release_slide.star.move(self._startpos) + press_slide.thumb.move(self._startpos) + press_slide.star.move(self._startpos) + self._swap_slides(self._slides.index(press_slide), + self._slides.index(release_slide)) self._press = None self._release = None return False + def _swap_slides(self, i, j): + ''' Swap order and x, y position of two slides ''' + tmp = self._slides[i] + self._slides[i] = self._slides[j] + self._slides[j] = tmp + xi, yi = self._slides[i].thumb.get_xy() + xj, yj = self._slides[j].thumb.get_xy() + self._slides[i].thumb.move((xj, yj)) + self._slides[i].star.move((xj, yj)) + self._slides[j].thumb.move((xi, yi)) + self._slides[j].star.move((xi, yi)) + def _unit_combo_cb(self, arg=None): ''' Read value of predefined conversion factors from combo box ''' if hasattr(self, '_unit_combo'): @@ -1298,7 +1312,7 @@ class PortfolioActivity(activity.Activity): return io.getvalue() def _load(self, data): - ''' Load game data from the journal. ''' + ''' Load slide data from a sharer. ''' self._restore_cursor() uid, title, base64, description = self._data_loader(data) if self._uid_to_slide(uid) is None: |