Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorflorent <florent.pigout@gmail.com>2011-08-28 23:22:03 (GMT)
committer florent <florent.pigout@gmail.com>2011-08-28 23:22:03 (GMT)
commit4d6d0cae89044024fdbbad3cc45759764c1fff47 (patch)
tree5012db6bc74e932699ef3bc131f1af62bfbff4a2
parentb61a85d99c65487d79d53b9ff85379033ca3f608 (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.py32
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: