Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/atoidejouer/ui/screens/story.py
diff options
context:
space:
mode:
Diffstat (limited to 'atoidejouer/ui/screens/story.py')
-rw-r--r--atoidejouer/ui/screens/story.py171
1 files changed, 44 insertions, 127 deletions
diff --git a/atoidejouer/ui/screens/story.py b/atoidejouer/ui/screens/story.py
index 5c4d7b1..9086410 100644
--- a/atoidejouer/ui/screens/story.py
+++ b/atoidejouer/ui/screens/story.py
@@ -19,38 +19,25 @@ logger = logging.getLogger('atoidejouer')
def _on_drag_finish(image, event, scene, key, image_size):
# get align values
- _a_x, _a_y = scene._reverse_x_y(image_size, (image.x, image.y))
- # shortcut
- # story_keys = scene._get_keys('graphics')
- # update keys
- # story_keys.set_align(sequence_name, frame, filename,
- # (_a_x, _a_y))
- # update transitions
- # story_keys.refresh(sequence_name)
- # story_keys.ask_clear()
- # refresh scene with rounded values
- scene.refresh(key=key)
- # get current screen
- _screen = scene.toolbar.activity.get_current_screen()
- # update position in panel
- if hasattr(_screen, 'panel'):
- _screen.panel.refresh()
- else:
- pass
+ key.x, key.y = scene._reverse_x_y(image_size, (image.x, image.y))
+ # do update
+ rowcount = story.DB().update(key)
+ # DEBUG
+ # logger.debug('[ui.screen.story] _on_drag_finish - key: %s' % key)
+ # logger.debug('[ui.screen.story] _on_drag_finish - rowcount: %s' % rowcount)
+ # DEBUG
+ # refresh
+ scene.toolbar.activity.get_current_screen().refresh(key=key)
def _on_click(image, event, scene, key):
- # get current screen
- _screen = scene.toolbar.activity.get_current_screen()
# remove image on right click
if event.button == 3:
story.DB()._del(key)
- scene.refresh()
- # update panel
- if hasattr(_screen, 'panel'):
- _screen.panel.refresh()
- else:
- pass
+ # invalidate key
+ key = None
+ # refresh
+ scene.toolbar.activity.get_current_screen().refresh(key=key)
class ScreenStory(graphics.Scene):
@@ -84,15 +71,6 @@ class ScreenStory(graphics.Scene):
# and show
self._show()
- """
- def _get_keys(self, type_):
- # ..
- if type_ == 'graphics':
- return self.toolbar.activity.graphic_keys
- else:
- return self.toolbar.activity.sound_keys
- """
-
def set_fullscreen(self, fullscreen):
# update fullscreen flag
self.fullscreen = fullscreen
@@ -126,35 +104,18 @@ class ScreenStory(graphics.Scene):
else:
return False
- def refresh(self, key=None):
+ def refresh(self):
+ # ensure valid screen size
+ self._refresh_screen_size()
# get the current frame
_time = 0.0 if self.toolbar.activity._thread is None\
else self.toolbar.activity._thread._time
# get the current rate
_rate = config.Config().get_rate_value()
- # clear ??
- # self._check_clear()
- # ..
- self._refresh_screen_size()
- # ..
- _currents = list()
- """
- # for each images
- for _n in self._get_keys('graphics').get_names():
- if sequence_name is None\
- or sequence_name == _n:
- # do move
- _currents.append(self.__refresh_image(_n, _time, _rate))
- else:
- # just get code
- _currents.append(self._get_current_code('graphics', _n,
- _time))
- """
# using DB
+ _currents = list()
for _k in story.DB().get(story.Key(mime_type='image/png', time=_time)):
- # redraw only if necessary
- if key is None or key.id == _k.id:
- self.__refresh_image(_k, _rate)
+ self.__refresh_image(_k, _rate)
_currents.append(_k.id)
# draw mask
_currents.append(self.__refresh_default('mask'))
@@ -238,10 +199,8 @@ class ScreenStory(graphics.Scene):
return _a_x, _a_y
def _update_x_y(self, size, align):
- # ..
_new_w, _new_h, _w, _h = size
_x, _y = align
- #
if self.fullscreen is True\
or self._screen_width < 1024:
_scene_with = self._screen_width
@@ -301,116 +260,74 @@ class ScreenStory(graphics.Scene):
if _ratio < rate:
return _x, _y
else:
- """
- _next_x, _next_y = self._get_keys('graphics').get_next_align(
- sequence_name, int(time), filename, use_transition=True)
- """
- _next_key = story.Key(name=key.name, mime_type="image/png", time=(key.time+1),
- layer=key.layer)
+ _next_key = story.Key(title=key.title, mime_type="image/png",
+ time=(key.time+1), layer=key.layer)
_next_key = story.DB().get(_next_key)
_next_x, _next_y = _next_key.x, _next_key.y
_next_x = _x if _next_x is None else _x + (_next_x - _x) * _ratio
_next_y = _y if _next_y is None else _y + (_next_y - _y) * _ratio
return _next_x, _next_y
- """
- def _get_current_code(self, type_, sequence_name, time):
- # get sequence filename
- _current, _f_type, _k_type = self._get_keys(type_).get_current(
- sequence_name, int(time))
- # need current
- if _current is None:
- return None
- else:
- pass
- # get sequence file codes
- return self._get_keys(type_).get_code(
- self.toolbar.name, sequence_name, _current)
- """
-
def __refresh_image(self, key, rate):
- """
- # get sequence filename
- _current, _f_type, _k_type = self._get_keys('graphics').get_current(
- sequence_name, int(time))
- # need current
- if _current is None:
- return None
- else:
- pass
- # get sequence file codes
- _code = self._get_keys('graphics').get_code(
- self.toolbar.name, sequence_name, _current)
- # current file code
- _code = key.random_str() if _code is None else _code
- """
# get/update width and height
_size = self._update_w_h(key)
# get align
_align = self.__get_transition_align(key, rate)
# ensure current image
if key.id in self.__graphics:
- # ..
+ # DEBUG
+ logger.debug('[ui.screen.story] __refresh_image - key: %s' % key)
+ # DEBUG
_image = self.__graphics[key.id]
# update x, y
_image.x, _image.y = self._update_x_y(_size, _align)
# get z_order
_image.z_order = key.layer
- # disconnect
- if key.id in self.__dd_signals:
- _image.disconnect(self.__dd_signals[key.id])
- else:
- pass
# scale
_new_w, _new_h, _w, _h = _size
- # re-connect
- _h_id = _image.connect('on-drag-finish', _on_drag_finish, self,
- key, (_new_w, _new_h))
- # ..
- self.__dd_signals[key.id] = _h_id
- # ..
+ # set visibility
_image.visible = True
+ # refresh signals
+ self.__update_image_signals(key, _image, (_new_w, _new_h))
else:
# draggable for edit only
_draggable = self._set_canvas is False\
and config.Config().use_dnd() is True
- # ..
_image = self.__update_drawing_area(key, _size, _align,
draggable=_draggable)
- # ..
self.__graphics[key.id] = _image
- """
- self._get_keys('graphics').set_code(self.toolbar.name, sequence_name,
- _current, _code)
- """
+
+ def __update_image_signals(self, key, image, size):
+ # remove existing handlers
+ if key.id in self.__dd_signals:
+ _h_id_drag, _h_id_click = self.__dd_signals[key.id]
+ image.disconnect(_h_id_drag)
+ image.disconnect(_h_id_click)
+ # connect
+ _h_id_drag = image.connect('on-drag-finish', _on_drag_finish, self,
+ key, size)
+ _h_id_click = image.connect('on-click', _on_click, self, key)
+ # update signal dict
+ self.__dd_signals[key.id] = (_h_id_drag, _h_id_click)
def __update_drawing_area(self, key, size, align, draggable=False):
# update x, y
_x, _y = self._update_x_y(size, align)
- # scale
_new_w, _new_h, _w, _h = size
- # ..
if _w is None or _w == 0:
_scale = 1
else:
_scale = float(_new_w)/_w
+ # DEBUG
+ logger.debug('[ui.screen.story] __update_drawing_area - key: %s' % key)
+ # DEBUG
# image
_image = graphics.Image(key.get_path(), x=_x, y=_y, scale_x=_scale,
scale_y=_scale, z_order=key.layer, draggable=draggable)
- # connect drag
- if self._set_canvas is True\
- or config.Config().use_dnd() is False\
- or self.toolbar.name != 'graphics':
- pass
- else:
- _h_id = _image.connect('on-drag-finish', _on_drag_finish, self,
- key, (_new_w, _new_h))
- self.__dd_signals[key.id] = _h_id
- # connect on click
- _image.connect('on-click', _on_click, self, key)
+ # refresh signals
+ self.__update_image_signals(key, _image, (_new_w, _new_h))
# do add
self.add_child(_image)
- # ..
return _image
"""