diff options
Diffstat (limited to 'atoidejouer/ui/timeline.py')
-rw-r--r-- | atoidejouer/ui/timeline.py | 404 |
1 files changed, 0 insertions, 404 deletions
diff --git a/atoidejouer/ui/timeline.py b/atoidejouer/ui/timeline.py deleted file mode 100644 index f359bd2..0000000 --- a/atoidejouer/ui/timeline.py +++ /dev/null @@ -1,404 +0,0 @@ - -# python import -import logging, os -# .. -from functools import partial -from gettext import gettext as _ - -# gtk import -import gtk, glib - -# atoidejouer import -from atoidejouer.tools import storage, ui - -# get application logger -logger = logging.getLogger('atoidejouer') - - -def _on_title_clicked(widget, timeline, sequence_name): - # .. do update - timeline.set_active_sequence(sequence_name) - - -def _on_key_clicked(widget, timeline, sequence_name, frame): - # shortcut - # timeline.story_keys.ask_clear() - # update time and scene - timeline.screen.toolbar.activity._thread.set_time(time_=frame) - # do timeline update - if timeline.screen.panel.sequence_name == sequence_name: - pass - else: - timeline.set_active_sequence(sequence_name) - - -class Timeline(gtk.Frame): - - def __init__(self, screen): - # init parent - gtk.Frame.__init__(self) - self.set_shadow_type(gtk.SHADOW_NONE) - self.set_size_request(-1, 236) - # do show - self.show() - # keep the screen - self.screen = screen - self.hadjustment = None - self.vadjustment = gtk.Adjustment(0, 0, 1, 1) - # tmp - _s = self.screen - self._viewport_width = _s.scene._screen_width - 120 - self._current_keys = dict() - self._number_of_keys = self._get_number_of_keys() - # prepare scrolled window - self.scrolled_window = gtk.ScrolledWindow(vadjustment=self.vadjustment) - self.scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS) - self.scrolled_window.show() - # .. - self.add(self.scrolled_window) - # .. - if self.screen.toolbar.name == 'graphics': - self.story_keys = self.screen.toolbar.activity.graphic_keys - else: - self.story_keys = self.screen.toolbar.activity.sound_keys - # .. - self._main_hbox = None - self._titles_box = None - self._keys_box = None - # .. - self.__init_rows() - - def __init_rows(self): - # .. - if self._main_hbox is None: - pass - else: - self._main_hbox.destroy() - # a box - self._main_hbox = gtk.HBox(homogeneous=False, spacing=0) - # show it - self._main_hbox.show() - # .. - self.scrolled_window.add_with_viewport(self._main_hbox) - # init main vars - if self._titles_box is None: - pass - else: - self._titles_box.destroy() - # init main vars - if self._keys_box is None: - pass - else: - self._keys_box.destroy() - # .. - self._titles_box = None - self._init_titles_box() - # .. - self._keys_box = None - self._init_keys_box() - - def set_active_sequence(self, sequence_name): - # get viewport - _t_rows = self._titles_box.get_children() - # get viewport - _k_rows = self._keys_box.get_children() - # .. - _c1 = ui.get_color(0.92, 0.92, 0.92) - _c2 = ui.get_color(0.8, 0.8, 0.8) - # ... - for _i, _r in enumerate(_t_rows): - # title row | row - eventbox - button - label - _label = _r.get_children()[0].get_children()[0].get_children()[1] - # prepare color - _c = _c1 if _label.get_label() == sequence_name else _c2 - # update row color - _r.modify_bg(gtk.STATE_NORMAL, _c) - _k_rows[_i].modify_bg(gtk.STATE_NORMAL, _c) - # update panel at the end - self.screen.panel.refresh(sequence_name=sequence_name, - update_store=True) - - def _get_number_of_keys(self): - """shortcut .. - """ - return self.screen.toolbar.activity._number_of_keys - - def _get_number_of_rows(self): - """shortcut .. - """ - return len(self._titles_box.get_children()) - - def _add_title(self, sequence_name): - # screen name - _screen_name = self.screen.toolbar.name.replace('_add', '') - # get first image name - _img_name = storage.get_sequence_first_graphic_name(_screen_name, - sequence_name) - # get button - _title = ui.get_button(label=sequence_name, img_name=_img_name, - width=0, padding=(4, 0), img_size=(16, 16)) - # _title.set_size_request(-1, 28) - # set color - _title.modify_bg(gtk.STATE_NORMAL, ui.get_color(0.3, 0.5, 0.6)) # TODO manage common colors like a theme - # _title.modify_bg(gtk.STATE_PRELIGHT, ui.get_color(0.5, 0.7, 0.8)) # TODO manage common colors like a theme - # get row number - _row_number = self._get_number_of_rows() - # add simple cb - _title.connect('released', _on_title_clicked, self, sequence_name) - # to manage color - _e_box = gtk.EventBox() - # show - _e_box.show() - # .. - _e_box.modify_bg(gtk.STATE_NORMAL, ui.get_color(0.8, 0.8, 0.8)) # TODO manage common colors like a theme - # add it - _e_box.add(_title) - # add it - self._titles_box.pack_start(_e_box, expand=False, fill=True) - - def _add_keys(self, sequence_name): - # default row color - _c = ui.get_color(0.8, 0.8, 0.8) - # to manage color - _e_box = gtk.EventBox() - # show - _e_box.show() - # .. - _e_box.modify_bg(gtk.STATE_NORMAL, _c) - # init row - _row = gtk.HBox(homogeneous=False, spacing=1) - # show - _row.show() - # add it - _e_box.add(_row) - # .. - for _x in range(self._get_number_of_keys()): - # to manage color - _e = gtk.EventBox() - # show - _e.show() - # .. - _e.set_visible_window(False) - # get button - _b = ui.get_button(label='', width=24) # label='%s' % _x - # add simple cb - _b.connect('released', _on_key_clicked, self, sequence_name, _x) - # add to event box - _e.add(_b) - # set color - _b.modify_bg(gtk.STATE_NORMAL, _c) - # add to the row - _row.pack_start(_e, expand=False, fill=True) - # add it - self._keys_box.pack_start(_e_box, expand=False, fill=True) - - def _refresh_row_keys(self, row, time_, color): - # - _r_e_box = row.get_children()[0] - # get cells - _cells = _r_e_box.get_children() - _c_idx = int(time_) - # .. - for _i, _c in enumerate(_cells): - if _i == _c_idx: - pass - else: - # update row color - _c.modify_bg(gtk.STATE_NORMAL, color) - - def _init_titles_box(self): - # prepare scrolled window - _viewport = gtk.Viewport() - _viewport.set_size_request(100, -1) - _viewport.show() - # init row - self._titles_box = gtk.VBox(homogeneous=False, spacing=1) - # show - self._titles_box.show() - # .. - _viewport.add(self._titles_box) - # update main box - self._main_hbox.pack_start(_viewport, expand=False, fill=True) - - def _init_keys_box(self): - # init horizontal adjustment - self.hadjustment = gtk.Adjustment(0, 0, self._number_of_keys, 1) - # prepare scrolled window - _viewport = gtk.Viewport(hadjustment=self.hadjustment) - _viewport.set_size_request(self._viewport_width, -1) - _viewport.show() - # init row - self._keys_box = gtk.VBox(homogeneous=False, spacing=1) - # show - self._keys_box.show() - # .. - _viewport.add(self._keys_box) - # .. - self._main_hbox.pack_start(_viewport, expand=False, fill=True) - - def _refresh_keys(self, time_): - # ... - _t_children = self._titles_box.get_children() - _k_children = self._keys_box.get_children() - # .. - _color = ui.get_color(1.0, 1.0, 0.5) - # for each row - for _i, _r in enumerate(_k_children): - # - _r_e_box = _r.get_children()[0] - # get cells - _cells = _r_e_box.get_children() - _c_idx = int(time_) - # .. - if _c_idx < len(_cells): - # ... - _c = _cells[_c_idx] - # update row color - _c.modify_bg(gtk.STATE_NORMAL, _color) - _c.set_visible_window(True) - # - self._current_keys[_i] = _c - else: - continue - - def reorder(self): - # get new order - _names = [_n for _n in self.story_keys.get_names()] - # ... - _t_children = self._titles_box.get_children() - _k_children = self._keys_box.get_children() - # ... - for _i, _r in enumerate(_t_children): - # title row | row - eventbox - button - label - _label = _r.get_children()[0].get_children()[0].get_children()[1] - # ... - if _label.get_label() in _names: - _index = _names.index(_label.get_label()) - else: - continue - # do reorder - self._titles_box.reorder_child(_r, _index) - self._keys_box.reorder_child(_k_children[_i], _index) - - def add_sequence(self, sequence_name): - """Need to rebuild all on each add to ensure valid scrollwindow ?? - """ - # .. - self.__init_rows() - # .. - _seq_names = self.story_keys.get_names() - # restore all - for _n in _seq_names: - # first add title - self._add_title(_n) - # second add new keys - self._add_keys(_n) - - def remove_sequence(self, sequence_name): - # ... - _t_children = self._titles_box.get_children() - _k_children = self._keys_box.get_children() - # ... - for _i, _r in enumerate(_t_children): - # title row | row - eventbox - button - label - _label = _r.get_children()[0].get_children()[0].get_children()[1] - # ... - if _label.get_label() == sequence_name: - _r.destroy() - _k_children[_i].destroy() - else: - continue - - def refresh_sequence(self): - # ... - _t_children = self._titles_box.get_children() - _k_children = self._keys_box.get_children() - # sequence to remove - _seq_to_remove = list() - # ... - for _i, _r in enumerate(_t_children): - # title row | row - eventbox - button - label - _label_wid = _r.get_children()[0].get_children()[0].get_children()[1] - _seq_name = _label_wid.get_label() - # seq check - if _seq_name in self.story_keys._names: - pass - else: - _seq_to_remove.append(_seq_name) - continue - # ... - for _frame, _c_key in enumerate(_k_children[_i].get_children()[0]): - # ... - _current, _f_type, _k_type = self.story_keys.get_current( - _seq_name, _frame) - # get button - _button = _c_key.get_children()[0] - # ... - if _current is None: - # _button.set_image(None) - _button.set_label("") - elif _k_type == 'transition': - # _button.set_image(None) - _button.set_label("-") - else: - # _button.set_image(None) - _button.set_label("0") - # remove non-exisitng sequences - for _s_name in _seq_to_remove: - self.remove_sequence(_s_name) - - - def __reset(self): - # .. - _seq_names = self.story_keys.get_names() - # remove all - for _n in _seq_names: - self.remove_sequence(_n) - # ?? - _seq_names = self.story_keys.get_names() - # restore all - for _n in _seq_names: - # first add title - self._add_title(_n) - # second add new keys - self._add_keys(_n) - - def refresh_adjustment(self, time=None): - # ensure time - if time is None: - time = 0 if self.screen.toolbar.activity._thread is None\ - else self.screen.toolbar.activity._thread._time - else: - pass - # compute new adjustment - _keys_width = self._number_of_keys * 26 - if self._viewport_width < _keys_width: - _new_value = (_keys_width - self._viewport_width) * time - _new_value /= float(self._number_of_keys) - else: - _new_value = 0 - # .. - self.hadjustment.set_value(_new_value) - - def refresh(self): - # .. - _time = 0 if self.screen.toolbar.activity._thread is None\ - else self.screen.toolbar.activity._thread._time - # .. - _activity_nb_of_keys = self._get_number_of_keys() - # check reset - if self._number_of_keys != _activity_nb_of_keys: - # update number of keys - self._number_of_keys = _activity_nb_of_keys - # reset - self.__reset() - else: - pass - self.refresh_adjustment(time=_time) - # first avoid current keys colors - for _c in self._current_keys.values(): - _c.set_visible_window(False) - # change cell colors - self._refresh_keys(_time) - # udpate sequences - self.refresh_sequence() |