Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Francis <francis@sugarlabs.org>2012-05-27 03:01:39 (GMT)
committer Daniel Francis <francis@sugarlabs.org>2012-05-27 03:01:39 (GMT)
commit4291de2ab351f597a79b49ebf9ada68d04c64d49 (patch)
tree0c07ee763cfac37016bdb64b356ee7c724a0e7e7
parentbd769f3d4c78177daeab4688db21b5c26dacc897 (diff)
Using Tree Selection
-rw-r--r--animation.py5
-rw-r--r--frames_list.py16
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)