diff options
author | florent <florent.pigout@gmail.com> | 2011-08-28 23:22:03 (GMT) |
---|---|---|
committer | florent <florent.pigout@gmail.com> | 2011-08-28 23:22:03 (GMT) |
commit | 4d6d0cae89044024fdbbad3cc45759764c1fff47 (patch) | |
tree | 5012db6bc74e932699ef3bc131f1af62bfbff4a2 | |
parent | b61a85d99c65487d79d53b9ff85379033ca3f608 (diff) |
ensure valid dnd + screen refresh on dnd activate/deactivate -> todo fix the refresh performance issue but keep the dnd that way
-rw-r--r-- | atoidejouer/ui/screens.py | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/atoidejouer/ui/screens.py b/atoidejouer/ui/screens.py index e4477c0..44111d8 100644 --- a/atoidejouer/ui/screens.py +++ b/atoidejouer/ui/screens.py @@ -38,6 +38,11 @@ COLOR_WHITE = ui.get_color(1.0, 1.0, 1.0) def _on_drag_finish(image, event, scene, sequence_name, frame, filename, image_size): + # DEBUG + logger.debug('[screens] _on_drag_finish - sequence_name: %s' % sequence_name) + logger.debug('[screens] _on_drag_finish - frame: %s' % frame) + logger.debug('[screens] _on_drag_finish - filename: %s' % filename) + # DEBUG # get align values _a_x, _a_y = scene._reverse_x_y(image_size, (image.x, image.y)) # shortcut @@ -94,6 +99,7 @@ class ScreenStory(graphics.Scene): self.__sizes = dict() self.__graphics = dict() self.__sounds = dict() + self.__dd_signals = dict() # init fullscreen flag self.fullscreen = False self._fullscreen_changed = True @@ -187,9 +193,6 @@ class ScreenStory(graphics.Scene): if self.toolbar.activity._thread is None: pass elif self.toolbar.activity._thread._pause is False: - # DEBUG - logger.debug('[screens] refresh - _pause: %s' % self.toolbar.activity._thread._pause) - # DEBUG # for each sound for _n in self._get_keys('sounds').get_names(): if sequence_name is None\ @@ -298,7 +301,7 @@ class ScreenStory(graphics.Scene): _size = self._update_w_h(_filename) # .. self.__graphics[_code] =\ - self.__update_drawing_area(_filename, _size, _align) + self.__update_drawing_area(_filename, _code, _size, _align) # and return displayed code return _code @@ -360,6 +363,15 @@ class ScreenStory(graphics.Scene): # get z_order _image.z_order = self._get_keys('graphics').get_layout( sequence_name) + # disconnect + _image.disconnect(self.__dd_signals[_code]) + # scale + _new_w, _new_h, _w, _h = _size + # re-connect + _h_id = _image.connect('on-drag-finish', _on_drag_finish, self, + sequence_name, int(time), _current, (_new_w, _new_h)) + # .. + self.__dd_signals[_code] = _h_id # .. _image.visible = True else: @@ -367,7 +379,7 @@ class ScreenStory(graphics.Scene): _draggable = self._set_canvas is False\ and config.Config().use_dnd() is True # .. - _image = self.__update_drawing_area(_current, _size, _align, + _image = self.__update_drawing_area(_current, _code, _size, _align, sequence_name=sequence_name, frame=int(time), draggable=_draggable) # .. @@ -378,7 +390,7 @@ class ScreenStory(graphics.Scene): # and return displayed code return _code - def __update_drawing_area(self, filename, size, align, + def __update_drawing_area(self, filename, code, size, align, sequence_name=None, frame=None, draggable=False): # get path _path = storage.get_image_path(filename) @@ -406,8 +418,10 @@ class ScreenStory(graphics.Scene): pass else: # .. - _image.connect('on-drag-finish', _on_drag_finish, self, sequence_name, - frame, filename, (_new_w, _new_h)) + _h_id = _image.connect('on-drag-finish', _on_drag_finish, self, + sequence_name, frame, filename, (_new_w, _new_h)) + # .. + self.__dd_signals[code] = _h_id # connect on click if sequence_name is None: pass @@ -706,7 +720,7 @@ def _on_toggle_click(radio, screen, option, value): # update config.Config().set('activity>%s' % option, value) # ... - if option == 'mode': + if option in ['mode', 'dnd']: screen._activity.remove_screen('graphics') screen._activity.remove_screen('sounds') else: |