Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/atoidejouer/ui/timeline.py
diff options
context:
space:
mode:
Diffstat (limited to 'atoidejouer/ui/timeline.py')
-rw-r--r--atoidejouer/ui/timeline.py404
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()