diff options
Diffstat (limited to 'atoidejouer/ui/toolbar.py')
-rw-r--r-- | atoidejouer/ui/toolbar.py | 115 |
1 files changed, 40 insertions, 75 deletions
diff --git a/atoidejouer/ui/toolbar.py b/atoidejouer/ui/toolbar.py index 88fdd51..fe33ef8 100644 --- a/atoidejouer/ui/toolbar.py +++ b/atoidejouer/ui/toolbar.py @@ -15,6 +15,7 @@ from sugar.activity import activity from sugar.graphics.toolbutton import ToolButton # atoidejouer import +from atoidejouer.db import story from atoidejouer.tools import config, storage from atoidejouer.ui import screens @@ -90,46 +91,6 @@ def _cb_add(widget, toolbar): logger.error('[toolbar] _cb_add - unknown: %s' % toolbar.name) -def _cb_frame_after(widget, toolbar): - if toolbar._frame_entry is None: - pass - else: - # get previous value - _value = int(toolbar._frame_entry.get_text()) - # inc it - _update_frame_entry(widget, toolbar, _value + 1) - - -def _cb_frame_before(widget, toolbar): - if toolbar._frame_entry is None: - pass - else: - # get previous value - _value = int(toolbar._frame_entry.get_text()) - # dec it - _update_frame_entry(widget, toolbar, _value - 1) - - -def _update_frame_entry(entry, toolbar, value): - # get screen - _screen = toolbar.activity.get_current_screen() - # get max value - _max = _screen.sequence_preview.number_of_items() - 1 - # prepare value - _new_val = None - if value > _max: - _new_val = _max - elif value < 0: - _new_val = 0 - # reset max just in case - else: - _new_val = value - # update entry - toolbar._frame_entry.set_text(str(_new_val)) - # update sequence - _screen.sequence_preview.move_current(_new_val) - - def _cb_open(widget, toolbar): pass @@ -145,14 +106,8 @@ def _cb_back(widget, toolbar): def _cb_import(widget, toolbar): - # get the current sequence name - _sequence_name = toolbar._sequence_entry.get_text() # get filenames _screen = toolbar.activity.get_current_screen() - # shortcut - _filenames = _screen.sequence_preview.items - # add sequence to the story keys - # toolbar.story_keys.add_sequence(_sequence_name, _filenames) def _cb_play(widget, toolbar): @@ -172,13 +127,11 @@ def _cb_pause(widget, toolbar): def _cb_stop(widget, toolbar): # replace pause button - if playing if toolbar._has_button('pause'): - # .. toolbar._replace_button('pause', 'play') else: pass # update main thread toolbar.activity._thread.pause(stop=True) - # .. toolbar.activity._thread.set_time() @@ -204,17 +157,40 @@ def _cb_view_return(widget, toolbar): _screen.set_fullscreen(False) +def __set_time(toolbar, time_): + _current_screen = toolbar.activity.get_current_screen() + if hasattr(_current_screen, 'panel_edit'): + _key = _current_screen.panel_edit._edit_panel.key + _key = story.DB().one( + story.Key( + title=_key.title, + mime_type=_key.mime_type, + timestamp=_key.timestamp, + time=time_ + ) + ) if _key is not None else None + toolbar.activity._thread.set_time(time_=time_, key=_key) + else: + toolbar.activity._thread.set_time(time_=time_) + def _cb_slider(widget, event, toolbar): """action = 'press' or 'release' """ - # ... - if event.type == gtk.gdk.BUTTON_PRESS: - pass - elif event.type == gtk.gdk.BUTTON_RELEASE: - toolbar.activity._thread.set_time(time_=widget.get_value()) - # ?? - else: - pass + if event.type == gtk.gdk.BUTTON_RELEASE: + __set_time(toolbar, widget.get_value()) + + +def _cb_backward(widget, toolbar): + _time = toolbar.activity._thread._time + _time = _time - 1 if _time > 0 else 0 + __set_time(toolbar, _time) + + +def _cb_forward(widget, toolbar): + _time = toolbar.activity._thread._time + _max = toolbar.activity.max_time + _time = _time + 1 if _time < _max else _max + __set_time(toolbar, _time) def _cb_format_value(widget, value, toolbar): @@ -223,6 +199,7 @@ def _cb_format_value(widget, value, toolbar): # return formated value return '%1d:%02d' % divmod(value, 60) + TOOLBAR_INDEXES = ['activity', 'story', 'edit', 'help'] def _cb_help_back(widget, toolbar): @@ -237,10 +214,8 @@ def _cb_help_back(widget, toolbar): BUTTONS = { 'add' : ['list-add', _cb_add], 'back' : ['edit-undo', _cb_back], - 'backward' : ['media-seek-backward', None], - 'forward' : ['media-seek-forward', None], - 'frame_after' : ['go-right', _cb_frame_after], - 'frame_before' : ['go-left', _cb_frame_before], + 'backward' : ['media-seek-backward', _cb_backward], + 'forward' : ['media-seek-forward', _cb_forward], 'frame_entry' : [None, None], 'help_back' : ['edit-undo', _cb_help_back], 'import' : ['insert-image', _cb_import], @@ -320,7 +295,6 @@ class Toolbar(gtk.Toolbar): self.activity = activity # adjustment self._adjustment = None - self._number_of_keys = self.activity._number_of_keys # keep components self._sequence_entry = None self._frame_entry = None @@ -400,25 +374,16 @@ class Toolbar(gtk.Toolbar): return None def play(self): - # do pause _cb_play(None, self) def pause(self): - # do pause _cb_pause(None, self) def refresh(self, value): - # ... - if self._number_of_keys != self.activity._number_of_keys: - # update nb of keys - self._number_of_keys = self.activity._number_of_keys - # update adjustment - if hasattr(self._adjustment, 'set_upper'): - self._adjustment.set_upper(self._number_of_keys-1) - else: - self._adjustment.upper = self._number_of_keys-1 - else: - pass + # update adjustment + # if hasattr(self._adjustment, 'set_upper'): ??? + # self._adjustment.set_upper(_max) + self._adjustment.upper = self.activity.max_time # get slider _s = self.get_slider() # slider stuff @@ -459,7 +424,7 @@ class Toolbar(gtk.Toolbar): # manage slider elif button_id == 'slider': # - self._adjustment = gtk.Adjustment(0, 0, self._number_of_keys-1, 1) + self._adjustment = gtk.Adjustment(0, 0, self.activity.max_time, 1) # .. _hscale = gtk.HScale(self._adjustment) _hscale.set_draw_value(True) |