From cabecfab5ca96729093e4e69f7999bc85e5203d9 Mon Sep 17 00:00:00 2001 From: florent Date: Wed, 22 Jun 2011 10:29:35 +0000 Subject: move before/after frame in sequence action to preview item list for easier use --- diff --git a/atoidejouer/ui/preview.py b/atoidejouer/ui/preview.py index 25c48f7..2bee8ed 100644 --- a/atoidejouer/ui/preview.py +++ b/atoidejouer/ui/preview.py @@ -32,14 +32,16 @@ def _cb_on_click(button, sequence_preview, filename): # get current item pos _pos = sequence_preview # get toolbar frame entry - _entry = sequence_preview.screen.toolbar._frame_entry - # .. - _current = str(sequence_preview.get_current_pos()) - # update toolbar entry - _entry.set_text(_current) + if sequence_preview.screen.toolbar._frame_entry is None: + pass + else: + # get current + _current = str(sequence_preview.get_current_pos()) + # update toolbar entry + sequence_preview.screen.toolbar._frame_entry.set_text(_current) -def _cb_on_remove(button, sequence_preview, filename): +def _cb_on_remove(sequence_preview, filename, button): # set current first sequence_preview.set_current(filename) # udpate sequence preview @@ -56,12 +58,60 @@ def _cb_on_remove(button, sequence_preview, filename): storage.sequence_save(sequence_preview.screen.toolbar, remove=True) +def _cb_on_move(sequence_preview, move, button): + # .. + _current = sequence_preview.get_current_pos() + if move == 'left': + _current -= 1 + else: + _current += 1 + # get max value + _max = sequence_preview.number_of_items() - 1 + # prepare value + _new_val = None + if _current > _max: + _current = _max + elif _current < 0: + _current = 0 + # reset max just in case + else: + pass + # update entry + if sequence_preview.screen.toolbar._frame_entry is None: + pass + else: + sequence_preview.screen.toolbar._frame_entry.set_text(str(_current)) + # update sequence + sequence_preview.move_current(_current) + + def _set_preview_buttom_bg(button): # set color button.modify_bg(gtk.STATE_NORMAL, COLOR_GREY_LIGHT) button.modify_bg(gtk.STATE_PRELIGHT, COLOR_GREY_WHITE) button.modify_bg(gtk.STATE_ACTIVE, COLOR_WHITE) + +def _add_simple_button(parent, icon_name, tooltip, cb): + # .. remove button + _button = gtk.Button() + _button.show() + _button.set_tooltip_text(tooltip) # _('Remove ') + filename + # cb + _button.connect('clicked', cb) # cb, self, filename + # add + parent.pack_start(_button, expand=False, fill=False) + # add a remove image here + _img = gtk.Image() + _img.show() + _button.add(_img) + _button.set_size_request(30, 30) + # .. + _set_preview_buttom_bg(_button) + # get pixbuff and update image + _path = storage.get_icon_path(icon_name) + _img.set_from_pixbuf(image.get_pixbuf(_path, 24, 24)) + class SequencePreview(gtk.Frame): def __init__(self, screen, type_): @@ -86,13 +136,22 @@ class SequencePreview(gtk.Frame): self._scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_NEVER) self._scrolled_window.show() # a box - self._hbox = gtk.HBox(homogeneous=False, spacing=2) - # show it - self._hbox.show() + _hbox = gtk.HBox(homogeneous=False, spacing=2) + _hbox.show() + self.add(_hbox) + # .. move left button + _add_simple_button(_hbox, 'go_left', _('Move Before'), + partial(_cb_on_move, self, 'left')) + # a box + self._scrolled_hbox = gtk.HBox(homogeneous=False, spacing=2) + self._scrolled_hbox.show() # add box in viewport - self._scrolled_window.add_with_viewport(self._hbox) - # add all to the frame - self.add(self._scrolled_window) + self._scrolled_window.add_with_viewport(self._scrolled_hbox) + # add + _hbox.add(self._scrolled_window) + # .. move left button + _add_simple_button(_hbox, 'go_right', _('Move After'), + partial(_cb_on_move, self, 'right')) def clear(self): # ... @@ -100,13 +159,13 @@ class SequencePreview(gtk.Frame): # keep item list for the sequence self.items = list() # remove graphics - _children = self._hbox.get_children() + _children = self._scrolled_hbox.get_children() for _c in _children: _c.destroy() # remove image from preview self.screen.item_preview.unset_item() # add box in viewport - self._scrolled_window.add_with_viewport(self._hbox) + self._scrolled_window.add_with_viewport(self._scrolled_hbox) def move_current(self, new_pos): # get current pos @@ -121,19 +180,18 @@ class SequencePreview(gtk.Frame): _filename = self.items.pop(_current_pos) self.items.insert(new_pos, _filename) # .. - self._hbox.reorder_child(self._current, new_pos) - + self._scrolled_hbox.reorder_child(self._current, new_pos) def get_current_pos(self): # get children - _children = self._hbox.get_children() + _children = self._scrolled_hbox.get_children() # get button index return _children.index(self._current)\ if self._current in _children else 0 def set_current(self, filename): # get children - _children = self._hbox.get_children() + _children = self._scrolled_hbox.get_children() # get new idx index _index = self.items.index(filename)\ if filename in self.items else 1000 @@ -144,13 +202,16 @@ class SequencePreview(gtk.Frame): # update preview self.screen.item_preview.set_item(filename) # update toolbar frame entry - self.screen.toolbar._frame_entry.set_text(str(_index)) + if self.screen.toolbar._frame_entry is None: + pass + else: + self.screen.toolbar._frame_entry.set_text(str(_index)) # ?? else: pass def number_of_items(self): - return len(self._hbox.get_children()) + return len(self._scrolled_hbox.get_children()) def __remove(self, index): # update list @@ -172,7 +233,7 @@ class SequencePreview(gtk.Frame): def remove_item(self, item_name): # get children - _children = self._hbox.get_children() + _children = self._scrolled_hbox.get_children() # get button index _index = _children.index(item_name)\ if item_name in _children else 0 @@ -183,7 +244,7 @@ class SequencePreview(gtk.Frame): # .. _item_box = gtk.HBox(homogeneous=False, spacing=2) _item_box.show() - self._hbox.pack_start(_item_box, expand=False, fill=False) + self._scrolled_hbox.pack_start(_item_box, expand=False, fill=False) # prepare vbox item _vbox = gtk.VBox(homogeneous=False, spacing=2) _vbox.show() @@ -200,7 +261,7 @@ class SequencePreview(gtk.Frame): # insert filename self.items.insert(pos, filename) # second pass .. reorder - self._hbox.reorder_child(_vbox, pos) + self._scrolled_hbox.reorder_child(_vbox, pos) # init event box to manage color _item = gtk.Button() _vbox.pack_start(_item, expand=False, fill=True) @@ -235,23 +296,8 @@ class SequencePreview(gtk.Frame): # ... _vbox.pack_start(_label, expand=False, fill=True) # .. remove button - _rm_button = gtk.Button() - _rm_button.show() - _rm_button.set_tooltip_text(_('Remove ') + filename) - # cb - _rm_button.connect('clicked', _cb_on_remove, self, filename) - # add - _item_box.pack_start(_rm_button, expand=False, fill=False) - # add a remove image here - _rm_img = gtk.Image() - _rm_img.show() - _rm_button.add(_rm_img) - _rm_button.set_size_request(30, 30) - # .. - _set_preview_buttom_bg(_rm_button) - # get pixbuff and update image - _path = storage.get_icon_path('less_small') - _rm_img.set_from_pixbuf(image.get_pixbuf(_path, 24, 24)) + _add_simple_button(_item_box, 'less_small', _('Remove ') + filename, + partial(_cb_on_remove, self, filename)) # set current file nam eat the end self.set_current(filename) diff --git a/atoidejouer/ui/toolbar.py b/atoidejouer/ui/toolbar.py index 4a9600e..40a4d55 100644 --- a/atoidejouer/ui/toolbar.py +++ b/atoidejouer/ui/toolbar.py @@ -122,7 +122,11 @@ def _show_browser(toolbar, cls): toolbar._sequence_entry.set_text(_seq_name) # pos _current_pos = _screen.sequence_preview.get_current_pos() - toolbar._frame_entry.set_text(str(_current_pos)) + # .. + if toolbar._frame_entry is None: + pass + else: + toolbar._frame_entry.set_text(str(_current_pos)) def _cb_add(widget, toolbar): @@ -152,21 +156,27 @@ def _cb_remove(widget, toolbar): def _cb_frame_after(widget, toolbar): - # get previous value - _value = int(toolbar._frame_entry.get_text()) - # inc it - _update_frame_entry(widget, toolbar, _value + 1) - # update sequence file - _cb_seq_save(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) + # update sequence file + _cb_seq_save(widget, toolbar) def _cb_frame_before(widget, toolbar): - # get previous value - _value = int(toolbar._frame_entry.get_text()) - # dec it - _update_frame_entry(widget, toolbar, _value - 1) - # update sequence file - _cb_seq_save(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) + # update sequence file + _cb_seq_save(widget, toolbar) def _update_frame_entry(entry, toolbar, value): @@ -324,10 +334,11 @@ TOOLBARS = { ], 'graphics_add' : [ ['seq_new', 'seq_name', 'seq_save', 'seq_remove', - 'separator', + # 'separator', # 'add', 'remove', # ''separator', - 'frame_before', 'frame_entry', 'frame_after'], + # 'frame_before', 'frame_entry', 'frame_after' + ], ['import', 'back'] ], 'sounds' : [ @@ -338,10 +349,11 @@ TOOLBARS = { ], 'sounds_add' : [ ['seq_new', 'seq_name', 'seq_save', 'seq_remove', - 'separator', + # 'separator', # 'add', 'remove', # ''separator', - 'frame_before', 'frame_entry', 'frame_after'], + # 'frame_before', 'frame_entry', 'frame_after' + ], ['import', 'back'] ], 'story' : [ -- cgit v0.9.1