diff options
author | Daniel Francis <francis@sugarlabs.org> | 2012-05-27 03:01:39 (GMT) |
---|---|---|
committer | Daniel Francis <francis@sugarlabs.org> | 2012-05-27 03:01:39 (GMT) |
commit | 4291de2ab351f597a79b49ebf9ada68d04c64d49 (patch) | |
tree | 0c07ee763cfac37016bdb64b356ee7c724a0e7e7 | |
parent | bd769f3d4c78177daeab4688db21b5c26dacc897 (diff) |
Using Tree Selection
-rw-r--r-- | animation.py | 5 | ||||
-rw-r--r-- | frames_list.py | 16 |
2 files changed, 15 insertions, 6 deletions
diff --git a/animation.py b/animation.py index 8259bc8..29b83ab 100644 --- a/animation.py +++ b/animation.py @@ -31,6 +31,9 @@ logging.basicConfig() class Animation(gtk.Image): + __gsignals__ = {"current-frame-updated": (gobject.SIGNAL_RUN_LAST, + gobject.TYPE_NONE, + (gobject.TYPE_INT,))} def __init__(self, width, height, sleep_time=1): gtk.Image.__init__(self) @@ -111,7 +114,7 @@ class Animation(gtk.Image): elif not self._current_image != len(self.images) - 1 and self._return: self._current_image = 0 - self.set_pos(self._current_image) + self.emit("current-frame-updated", self._current_image) return True diff --git a/frames_list.py b/frames_list.py index 5bc0317..46d87fe 100644 --- a/frames_list.py +++ b/frames_list.py @@ -27,13 +27,15 @@ import gtk class FramesList(gtk.ScrolledWindow): def __init__(self): super(FramesList, self).__init__() + self._animation = None + self._animation_connected = False self.set_size_request(225, -1) self.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) self.store = gtk.ListStore(int, gtk.gdk.Pixbuf) self.treeview = gtk.TreeView(self.store) self.set_vadjustment(self.treeview.get_vadjustment()) - selection = self.treeview.get_selection() - selection.connect("changed", self._selection_changed_cb) + self.selection = self.treeview.get_selection() + self.selection.connect("changed", self._selection_changed_cb) column = gtk.TreeViewColumn("Frame") self.treeview.append_column(column) num_cell = gtk.CellRendererText() @@ -46,6 +48,9 @@ class FramesList(gtk.ScrolledWindow): self.add(self.treeview) self.frames = 0 + def _select_frame(self, widget, index): + self.selection.select_iter(self.store.get_iter(index)) + def add_frame(self, pixbuf): self.frames += 1 width = pixbuf.get_width() @@ -54,9 +59,10 @@ class FramesList(gtk.ScrolledWindow): 200 * height / width, gtk.gdk.INTERP_TILES) self.store.append([self.frames, preview_pixbuf]) + if self._animation and not self._animation_connected: + self._animation.connect("current-frame-updated", self._select_frame) + self._animation_connected = True def _selection_changed_cb(self, selection): model, _iter = selection.get_selected() - self._animation.images = [i[-1] for i in self.store] - #FIXME Index out of range in Animation - self._animation.set_pos(self.store[_iter][0]) + self._animation.set_pos(self.store.get_value(_iter, 0) - 1) |