diff options
Diffstat (limited to 'atoidejouer/ui/panel/edit.py')
-rw-r--r-- | atoidejouer/ui/panel/edit.py | 346 |
1 files changed, 153 insertions, 193 deletions
diff --git a/atoidejouer/ui/panel/edit.py b/atoidejouer/ui/panel/edit.py index 7da08d4..b2cacee 100644 --- a/atoidejouer/ui/panel/edit.py +++ b/atoidejouer/ui/panel/edit.py @@ -48,94 +48,61 @@ def _on_position_clicked(widget, panel, move, value): raise Exception('[ui.panel] _on_position_clicked"\ " - invalid position move: %s' % move) # DB update - story.DB().update(panel.key) + rowcount = story.DB().update(panel.key) + # DEBUG + logger.debug('[ui.panel.edit] _on_position_clicked - rowcount: %s' % rowcount) # update panel entries panel.entry_x.set_text(str(panel.key.x)) panel.entry_y.set_text(str(-panel.key.y)) # refresh scene - panel.screen.scene.refresh(key=panel.key) + panel.screen.scene.refresh() -def _on_layout_clicked(widget, panel, move): +def _on_layer_clicked(widget, panel, move): # shortcut _activity = panel.screen.toolbar.activity # get max - _layout_max = story.DB().get_layout_max() + _layer_max = story.DB().get_max('layer') # do nothing if _activity._thread._pause is False\ or panel.key is None: return - # layout factory + # layer factory elif move == 'move_up_up': - panel.key.layout = _layout_max + panel.key.layer = _layer_max elif move == 'move_up': - panel.key.layout = panel.key.layout + 1\ - if panel.key.layout < _layout_max else _layout_max + panel.key.layer = panel.key.layer + 1\ + if panel.key.layer <= _layer_max else _layer_max elif move == 'move_down': - panel.key.layout = panel.key.layout - 1\ - if panel.key.layout > 0 else 0 + panel.key.layer = panel.key.layer - 1\ + if panel.key.layer > 0 else 0 elif move == 'move_down_down': - panel.key.layout = 0 + panel.key.layer = 0 else: - raise Exception('[ui.panel] _on_layout_clicked"\ - " - invalid layout move: %s' % move) + raise Exception('[ui.panel] _on_layer_clicked"\ + " - invalid layer move: %s' % move) # DB update - story.DB().update(panel.key) + rowcount = story.DB().update(panel.key) + # DEBUG + # logger.debug('[ui.screen.story] _on_layer_clicked - key: %s' % panel.key) + # logger.debug('[ui.screen.story] _on_layer_clicked - rowcount: %s' % rowcount) + # DEBUG # update entry - panel.entry_layout.set_text(str(panel.key.layout)) + panel.entry_layer.set_text(str(panel.key.layer)) # refresh scene - panel.screen.scene.refresh() - - -def _on_time_clicked(widget, panel, value): - # shortcut - _activity = panel.screen.toolbar.activity - # little check - if _activity._thread._pause is False\ - or panel.key is None: - return - else: - _time = _activity._thread._time - # time factory - _time += value - panel.key.time = 0 if _time < 0 else _time - # DB update - story.DB().update(panel.key) - # entry update - panel.time_entry.set_text('%1d:%02d' % divmod(_time, 60)) - # update thread time - _activity._thread.set_time(time_=_time) - - -def _on_remove_key_clicked(widget, panel): - # shortcut - _activity = panel.screen.toolbar.activity - if _activity._thread._pause is False\ - or panel.key is None: - return - else: - # delete - story.DB()._del(panel.key) - # empty key - panel.key = None - # refresh scene - panel.screen.scene.refresh() - # and reset panel - panel.refresh() + panel.screen.refresh(key=panel.key) def _on_duration_clicked(widget, panel, value): # shortcut _activity = panel.screen.toolbar.activity - _duration_max = story.DB().get_duration_max() + _duration_max = story.DB().get_max('duration') # do nothing if _activity._thread._pause is False\ or panel.key is None: - pass + return elif panel.key.duration + value < 0: panel.key.duration = 0 - elif panel.key.duration + value > _duration_max: - panel.key.duration = _duration_max else: panel.key.duration += value # DB update @@ -196,6 +163,21 @@ def _get_previous_time(panel, factor): return _previous +def _on_remove_key_clicked(widget, panel): + # shortcut + _activity = panel.screen.toolbar.activity + if _activity._thread._pause is False\ + or panel.key is None: + return + else: + # delete + story.DB()._del(panel.key) + # empty key + panel.key = None + # refresh screen + panel.screen.refresh() + + def _on_key_press(widget, event, parent): # .. _keyval = event.keyval @@ -205,7 +187,7 @@ def _on_key_press(widget, event, parent): if parent.screen != parent.screen.toolbar.activity.get_current_screen(): return # key factory - elif panel.screen.toolbar.name == 'edit': + elif parent.screen.toolbar.name == 'edit': # POSITION if _name == 'Left' and _mod.startswith('Ctrl+'): # big left _on_position_clicked(widget, parent, 'x', -10) @@ -225,22 +207,22 @@ def _on_key_press(widget, event, parent): _on_position_clicked(widget, parent, 'y', 1) # LAYOUT elif _name == 'Page_Up' and _mod.startswith('Ctrl+'): - _on_layout_clicked(widget, parent, 'move_up_up') + _on_layer_clicked(widget, parent, 'move_up_up') elif _name == 'Page_Up': - _on_layout_clicked(widget, parent, 'move_up') + _on_layer_clicked(widget, parent, 'move_up') elif _name == 'Page_Down' and _mod.startswith('Ctrl+'): - _on_layout_clicked(widget, parent, 'move_down_down') + _on_layer_clicked(widget, parent, 'move_down_down') elif _name == 'Page_Down': - _on_layout_clicked(widget, parent, 'move_down') + _on_layer_clicked(widget, parent, 'move_down') # TIME elif _name == 'plus' and _mod.startswith('Ctrl+'): - _on_time_clicked(widget, parent, 10) + _on_duration_clicked(widget, parent, 10) elif _name == 'plus': - _on_time_clicked(widget, parent, 1) + _on_duration_clicked(widget, parent, 1) elif _name == 'minus' and _mod.startswith('Ctrl+'): - _on_time_clicked(widget, parent, -10) + _on_duration_clicked(widget, parent, -10) elif _name == 'minus': - _on_time_clicked(widget, parent, -1) + _on_duration_clicked(widget, parent, -1) # DELETE elif _name == 'BackSpace': _on_remove_key_clicked(widget, parent) @@ -250,24 +232,17 @@ def _on_key_press(widget, event, parent): if parent.screen.toolbar.name in ['edit', 'story']: # shortcut _thread = parent.screen.toolbar.activity._thread - # .. if _name == 'space': # play right - # _time = _get_next_time(parent, 1) - # _thread.set_time(time_=_time, pause=True) elif _name == 'space' and _mod.startswith('Ctrl+'): # play left - # _time = _get_previous_time(parent, 1) - # _thread.set_time(time_=_time, pause=True) # PLAY elif _name == 'Return': - # .. if _thread._pause is True: parent.screen.toolbar.play() _thread.play() - # .. else: parent.screen.toolbar.pause() _thread.pause() @@ -297,8 +272,6 @@ class PanelEdit(gtk.Frame): # init vars self._store = None self.sequence_name = None - # .. - self.time_entry = None # add vbox to the panel for sub frames self.main_box = gtk.VBox(homogeneous=False, spacing=0) # do show @@ -308,27 +281,31 @@ class PanelEdit(gtk.Frame): # .. self.__init_handler() # main vars - self.entry_layout = None - # .. + # title + self._frame_title = None + self._title_image = None + self._title_label = None + self._add_frame_title() + # add specific + self.entry_layer = None + self._frame_layer = None + self._add_frame_layer() self.entry_x = None self.entry_y = None - # add specific - self._frame_layout = None self._frame_position = None - self._add_frame_layout() self._add_frame_position() # init sound fields - self.entry_duration = None self.toggle_loop = None - self.image_loop = None + self._image_loop = None # add specific self._frame_sound = None self._add_frame_sound() # add common - self._frame_time = None + self.entry_duration = None + self._frame_duration = None self._frame_remove = None - self.add_frame_time() - self.add_frame_remove() + self._add_frame_duration() + self._add_frame_remove() def __init_handler(self): _activity = self.screen.toolbar.activity @@ -339,13 +316,11 @@ class PanelEdit(gtk.Frame): _on_key_press, self) def clear(self): - self.time_entry.set_text('') - self.entry_duration.set_text('') - self.toggle_loop.set_active(False) - # .. - self.entry_layout.set_text('') + self.entry_layer.set_text('') self.entry_x.set_text('') self.entry_y.set_text('') + self.entry_duration.set_text('') + self.toggle_loop.set_active(False) def _get_pixbuf(self, graphic_name, dir_='graphics'): # get the image path @@ -358,95 +333,99 @@ class PanelEdit(gtk.Frame): self._frame_sound.hide() # shortcut _activity = self.screen.toolbar.activity - # set layout value - self.entry_layout.set_text(str(self.key.layout)) + # set layer value + self.entry_layer.set_text(str(self.key.layer)) # set x value self.entry_x.set_text(str(self.key.x)) # set y value self.entry_y.set_text(str(-self.key.y)) # hide frame image - self._frame_layout.show() + self._frame_layer.show() self._frame_position.show() def __refresh_sound(self): # hide frame image - self._frame_layout.hide() + self._frame_layer.hide() self._frame_position.hide() - # update duration value - self.entry_duration.set_text('%1d:%02d' % divmod(self.key.duration, 60)) # update loop value self.toggle_loop.set_active(self.key.loop==1) # update image _stock_id = 'repeat_grey' if self.key.loop==1 else 'repeat' - self.image_loop.set_from_file(storage.get_icon_path(_stock_id)) + self._image_loop.set_from_file(storage.get_icon_path(_stock_id)) # show frame sound self._frame_sound.show() def refresh(self, key=None): + # DEBUG + logger.debug('[ui.panel.edit] refresh - key: %s' % key) + # DEBUG self.key = key if not key: - """ - self._frame_layout.hide() + self._frame_title.hide() + self._frame_layer.hide() self._frame_position.hide() self._frame_sound.hide() - self._frame_time.hide() + self._frame_duration.hide() self._frame_remove.hide() - """ - self.show_all() return self.clear() - elif key.type == 'image': + elif key.mime_type == 'image/png': self.__refresh_image() - elif key.type == 'sound': + elif key.mime_type == 'audio/ogg': self.__refresh_sound() else: raise Exception('[ui.panel] refresh - invalid key: %s' % key) - # update common time value - self.time_entry.set_text( - '%1d:%02d' % divmod(key.time, 60)) - self._frame_time.show() + # update title image + self._title_image.set_from_pixbuf(key.get_preview()) + # udpate title label + self._title_label.set_text(key.title) + self._frame_title.show() + # update common duration value + self.entry_duration.set_text( + '%1d:%02d' % divmod(key.duration, 60)) + self._frame_duration.show() self._frame_remove.show() - def __get_time_button(self, name, value, tooltip_text): + def __get_duration_button(self, name, value, tooltip_text): _button = ui.get_button(stock_id=name) _button.set_tooltip_text(tooltip_text) - _button.connect('clicked', _on_time_clicked, self, value) + _button.connect('clicked', _on_duration_clicked, self, value) return _button - def add_frame_time(self): + def _add_frame_duration(self): # init frame - self._frame_time = gtk.Frame(label=_('Time')) - self._frame_time.set_border_width(1) + self._frame_duration = gtk.Frame(label=_('Duration')) + self._frame_duration.set_border_width(1) # do show - self._frame_time.show() + self._frame_duration.show() # do add - self.main_box.pack_start(self._frame_time, expand=False, fill=True) + self.main_box.pack_start(self._frame_duration, expand=False, fill=True) # get over/under spin buttons - _time_box = gtk.HBox(homogeneous=False, spacing=4) - _time_box.set_border_width(4) + _duration_box = gtk.HBox(homogeneous=False, spacing=4) + _duration_box.set_border_width(4) # before .. - _time_box.pack_start(self.__get_time_button('go_left', -10, + _duration_box.pack_start(self.__get_duration_button('go_left', -10, _('Play Before (10 Frames)')), expand=False, fill=True) - _time_box.pack_start(self.__get_time_button('go_left_small', -1, + _duration_box.pack_start(self.__get_duration_button('go_left_small', -1, _('Play Before (1 Frames)')), expand=False, fill=True) # entry - self.time_entry = gtk.Entry() + self.entry_duration = gtk.Entry() # show - self.time_entry.show() + self.entry_duration.show() # set value - should be a string - self.time_entry.set_text('') - self.time_entry.set_alignment(1) - self.time_entry.set_property('editable', False) + self.entry_duration.set_text('') + self.entry_duration.set_alignment(1) + self.entry_duration.set_property('editable', False) # add entry - _time_box.pack_start(self.time_entry, expand=True, fill=True) + _duration_box.pack_start(self.entry_duration, expand=True, fill=True) # .. after - _time_box.pack_start(self.__get_time_button('go_right_small', 1, + _duration_box.pack_start(self.__get_duration_button('go_right_small', 1, _('Play After (1 Frames)')), expand=False, fill=True) - _time_box.pack_start(self.__get_time_button('go_right', 10, + _duration_box.pack_start(self.__get_duration_button('go_right', 10, _('Play After (10 Frames)')), expand=False, fill=True) # do add - self._frame_time.add(_time_box) + self._frame_duration.add(_duration_box) - def add_frame_remove(self): + def _add_frame_remove(self): # init frame self._frame_remove = gtk.Frame(label=_('Remove')) self._frame_remove.set_border_width(1) @@ -468,42 +447,65 @@ class PanelEdit(gtk.Frame): # get remove image button _in_vbox.pack_start(_rm_key_button, expand=False, fill=True) - def __get_layout_button(self, name, tooltip_text): + def _add_frame_title(self): + # init frame + self._frame_title = gtk.Frame(label=_('Title')) + self._frame_title.set_border_width(1) + # do add + self.main_box.pack_start(self._frame_title, expand=False, fill=True) + # vbox for the fram + _in_hbox = gtk.HBox(homogeneous=False, spacing=4) + _in_hbox.set_border_width(4) + # do add + self._frame_title.add(_in_hbox) + # create image + self._title_image = gtk.Image() + # get img path + self._title_image.set_from_file(storage.get_icon_path('repeat')) + self._title_image.set_size_request(48, -1) + # add duration box + _in_hbox.pack_start(self._title_image, expand=False, fill=True) + # create label + self._title_label = gtk.Label() + self._title_label.set_alignment(0, 0.5) + # add duration box + _in_hbox.pack_start(self._title_label, expand=False, fill=True) + + def __get_layer_button(self, name, tooltip_text): _button = ui.get_button(stock_id=name) _button.set_tooltip_text(tooltip_text) - _button.connect('clicked', _on_layout_clicked, self, name) + _button.connect('clicked', _on_layer_clicked, self, name) return _button - def _add_frame_layout(self): + def _add_frame_layer(self): # init frame - self._frame_layout = gtk.Frame(label=_('Layout')) - self._frame_layout.set_border_width(1) + self._frame_layer = gtk.Frame(label=_('Layer')) + self._frame_layer.set_border_width(1) # do add - self.main_box.pack_start(self._frame_layout, expand=False, fill=True) + self.main_box.pack_start(self._frame_layer, expand=False, fill=True) # vbox for the frame _in_vbox = gtk.VBox(homogeneous=False, spacing=4) _in_vbox.set_border_width(4) # do add - self._frame_layout.add(_in_vbox) + self._frame_layer.add(_in_vbox) # get over/under spin buttons _layer_box = gtk.HBox(homogeneous=True, spacing=4) # down .. - _layer_box.pack_start(self.__get_layout_button('move_down_down', + _layer_box.pack_start(self.__get_layer_button('move_down_down', _('Layer to Bottom')), expand=False, fill=True) - _layer_box.pack_start(self.__get_layout_button('move_down', + _layer_box.pack_start(self.__get_layer_button('move_down', _('Lower Layer')), expand=False, fill=True) # entry - self.entry_layout = gtk.Entry() + self.entry_layer = gtk.Entry() # set value - should be a string - self.entry_layout.set_text("") - self.entry_layout.set_alignment(1) - self.entry_layout.set_property('editable', False) + self.entry_layer.set_alignment(1) + self.entry_layer.set_property('editable', False) # add entry - _layer_box.pack_start(self.entry_layout, expand=False, fill=True) + _layer_box.pack_start(self.entry_layer, expand=False, fill=True) # .. up - _layer_box.pack_start(self.__get_layout_button('move_up', + _layer_box.pack_start(self.__get_layer_button('move_up', _('Raise Layer')), expand=False, fill=True) - _layer_box.pack_start(self.__get_layout_button('move_up_up', + _layer_box.pack_start(self.__get_layer_button('move_up_up', _('Layer to Top')), expand=False, fill=True) # add row sequence _in_vbox.pack_start(_layer_box, expand=True, fill=True) @@ -565,51 +567,16 @@ class PanelEdit(gtk.Frame): # put it in self._frame_position.add(_in_vbox) - def _get_time(self, value): - """Format the time value to display - """ - return '%1d:%02d' % divmod(value, 60) - - def __get_duration_button(self, name, value, tooltip_text): - _button = ui.get_button(stock_id=name) - _button.set_tooltip_text(tooltip_text) - _button.connect('clicked', _on_duration_clicked, self, value) - return _button - - def _get_duration_box(self): - # get less/more spin buttons - _duration_box = gtk.HBox(homogeneous=True, spacing=4) - # down .. - _duration_box.pack_start(self.__get_duration_button('less', -10, - _('Duration -10s')), expand=False, fill=True) - _duration_box.pack_start(self.__get_duration_button('less_small', -1, - _('Duration -1s')), expand=False, fill=True) - # entry - self.entry_duration = gtk.Entry() - # set value - should be a string - self.entry_duration.set_text('') # self._get_time(0) - self.entry_duration.set_alignment(1) - self.entry_duration.set_property('editable', False) - self.entry_duration.set_size_request(64, -1) - # add entry - _duration_box.pack_start(self.entry_duration, expand=False, fill=True) - _duration_box.pack_start(self.__get_duration_button('more_small', 1, - _('Duration +1s')), expand=False, fill=True) - _duration_box.pack_start(self.__get_duration_button('more', 10, - _('Duration +10s')), expand=False, fill=True) - # return it - return _duration_box - def _init_loop_box(self): # init row _loop_box = gtk.HBox(homogeneous=False, spacing=4) # create image - self.image_loop = gtk.Image() + self._image_loop = gtk.Image() # get img path - self.image_loop.set_from_file(storage.get_icon_path('repeat')) - self.image_loop.set_size_request(48, -1) + self._image_loop.set_from_file(storage.get_icon_path('repeat')) + self._image_loop.set_size_request(48, -1) # add image - _loop_box.pack_start(self.image_loop, expand=False, fill=True) + _loop_box.pack_start(self._image_loop, expand=False, fill=True) # create label _label = gtk.Label(_('Repeat')) _label.set_alignment(0, 0.5) @@ -622,7 +589,7 @@ class PanelEdit(gtk.Frame): self.toggle_loop.add(_loop_box) # set cb self.toggle_loop.connect('toggled', _on_loop_click, self, - self.image_loop) + self._image_loop) def _add_frame_sound(self): # init frame @@ -630,13 +597,6 @@ class PanelEdit(gtk.Frame): self._frame_sound.set_border_width(1) # do add self.main_box.pack_start(self._frame_sound, expand=False, fill=True) - # vbox for the fram - _in_vbox = gtk.VBox(homogeneous=False, spacing=4) - _in_vbox.set_border_width(4) - # do add - self._frame_sound.add(_in_vbox) - # add duration box - _in_vbox.pack_start(self._get_duration_box(), expand=False, fill=True) # add loop button self._init_loop_box() - _in_vbox.pack_start(self.toggle_loop, expand=False, fill=True) + self._frame_sound.add(self.toggle_loop) |