From 28f8bc18af06b0d30ac82ae6d23e3194aa2dbb30 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Thu, 25 Jul 2013 21:02:35 +0000 Subject: add iconview for selecting sample programs --- diff --git a/samples/thumbnails/basic-intro-1-es.png b/samples/thumbnails/basic-intro-1-es.png new file mode 100644 index 0000000..df7de37 --- /dev/null +++ b/samples/thumbnails/basic-intro-1-es.png Binary files differ diff --git a/samples/thumbnails/basic-intro-1.png b/samples/thumbnails/basic-intro-1.png new file mode 100644 index 0000000..289b303 --- /dev/null +++ b/samples/thumbnails/basic-intro-1.png Binary files differ diff --git a/samples/thumbnails/basic-intro-2-es.png b/samples/thumbnails/basic-intro-2-es.png new file mode 100644 index 0000000..cae1b2e --- /dev/null +++ b/samples/thumbnails/basic-intro-2-es.png Binary files differ diff --git a/samples/thumbnails/basic-intro-2.png b/samples/thumbnails/basic-intro-2.png new file mode 100644 index 0000000..5db87ce --- /dev/null +++ b/samples/thumbnails/basic-intro-2.png Binary files differ diff --git a/samples/thumbnails/basic-intro-3.png b/samples/thumbnails/basic-intro-3.png new file mode 100644 index 0000000..0514b48 --- /dev/null +++ b/samples/thumbnails/basic-intro-3.png Binary files differ diff --git a/samples/thumbnails/basic-repeat-squares.png b/samples/thumbnails/basic-repeat-squares.png new file mode 100644 index 0000000..921fe20 --- /dev/null +++ b/samples/thumbnails/basic-repeat-squares.png Binary files differ diff --git a/samples/thumbnails/basic-spiral.png b/samples/thumbnails/basic-spiral.png new file mode 100644 index 0000000..62ad3a4 --- /dev/null +++ b/samples/thumbnails/basic-spiral.png Binary files differ diff --git a/samples/thumbnails/basic-square.png b/samples/thumbnails/basic-square.png new file mode 100644 index 0000000..bb82231 --- /dev/null +++ b/samples/thumbnails/basic-square.png Binary files differ diff --git a/samples/thumbnails/card-01.png b/samples/thumbnails/card-01.png new file mode 100644 index 0000000..b7fa040 --- /dev/null +++ b/samples/thumbnails/card-01.png Binary files differ diff --git a/samples/thumbnails/card-02.png b/samples/thumbnails/card-02.png new file mode 100644 index 0000000..07f9027 --- /dev/null +++ b/samples/thumbnails/card-02.png Binary files differ diff --git a/samples/thumbnails/card-03.png b/samples/thumbnails/card-03.png new file mode 100644 index 0000000..21b5d09 --- /dev/null +++ b/samples/thumbnails/card-03.png Binary files differ diff --git a/samples/thumbnails/card-04.png b/samples/thumbnails/card-04.png new file mode 100644 index 0000000..9affda7 --- /dev/null +++ b/samples/thumbnails/card-04.png Binary files differ diff --git a/samples/thumbnails/card-05.png b/samples/thumbnails/card-05.png new file mode 100644 index 0000000..d55bcaa --- /dev/null +++ b/samples/thumbnails/card-05.png Binary files differ diff --git a/samples/thumbnails/card-06.png b/samples/thumbnails/card-06.png new file mode 100644 index 0000000..570ccac --- /dev/null +++ b/samples/thumbnails/card-06.png Binary files differ diff --git a/samples/thumbnails/card-07.png b/samples/thumbnails/card-07.png new file mode 100644 index 0000000..e419e78 --- /dev/null +++ b/samples/thumbnails/card-07.png Binary files differ diff --git a/samples/thumbnails/card-08.png b/samples/thumbnails/card-08.png new file mode 100644 index 0000000..e7f0ca4 --- /dev/null +++ b/samples/thumbnails/card-08.png Binary files differ diff --git a/samples/thumbnails/card-09.png b/samples/thumbnails/card-09.png new file mode 100644 index 0000000..bdaef1c --- /dev/null +++ b/samples/thumbnails/card-09.png Binary files differ diff --git a/samples/thumbnails/card-10.png b/samples/thumbnails/card-10.png new file mode 100644 index 0000000..0d9eb87 --- /dev/null +++ b/samples/thumbnails/card-10.png Binary files differ diff --git a/samples/thumbnails/card-11.png b/samples/thumbnails/card-11.png new file mode 100644 index 0000000..367888c --- /dev/null +++ b/samples/thumbnails/card-11.png Binary files differ diff --git a/samples/thumbnails/card-12.png b/samples/thumbnails/card-12.png new file mode 100644 index 0000000..91b16ac --- /dev/null +++ b/samples/thumbnails/card-12.png Binary files differ diff --git a/samples/thumbnails/card-13.png b/samples/thumbnails/card-13.png new file mode 100644 index 0000000..08eef1c --- /dev/null +++ b/samples/thumbnails/card-13.png Binary files differ diff --git a/samples/thumbnails/card-14.png b/samples/thumbnails/card-14.png new file mode 100644 index 0000000..419f2a6 --- /dev/null +++ b/samples/thumbnails/card-14.png Binary files differ diff --git a/samples/thumbnails/card-15.png b/samples/thumbnails/card-15.png new file mode 100644 index 0000000..f4c94b6 --- /dev/null +++ b/samples/thumbnails/card-15.png Binary files differ diff --git a/samples/thumbnails/card-16.png b/samples/thumbnails/card-16.png new file mode 100644 index 0000000..1851ddb --- /dev/null +++ b/samples/thumbnails/card-16.png Binary files differ diff --git a/samples/thumbnails/card-17.png b/samples/thumbnails/card-17.png new file mode 100644 index 0000000..64fb4ae --- /dev/null +++ b/samples/thumbnails/card-17.png Binary files differ diff --git a/samples/thumbnails/game-basketball.png b/samples/thumbnails/game-basketball.png new file mode 100644 index 0000000..ca94b79 --- /dev/null +++ b/samples/thumbnails/game-basketball.png Binary files differ diff --git a/samples/thumbnails/game-continents.png b/samples/thumbnails/game-continents.png new file mode 100644 index 0000000..5ffccce --- /dev/null +++ b/samples/thumbnails/game-continents.png Binary files differ diff --git a/samples/thumbnails/game-find-boston.png b/samples/thumbnails/game-find-boston.png new file mode 100644 index 0000000..df26435 --- /dev/null +++ b/samples/thumbnails/game-find-boston.png Binary files differ diff --git a/samples/thumbnails/game-set.png b/samples/thumbnails/game-set.png new file mode 100644 index 0000000..d092e41 --- /dev/null +++ b/samples/thumbnails/game-set.png Binary files differ diff --git a/samples/thumbnails/game-shapes-and-colors.png b/samples/thumbnails/game-shapes-and-colors.png new file mode 100644 index 0000000..9a7bfd1 --- /dev/null +++ b/samples/thumbnails/game-shapes-and-colors.png Binary files differ diff --git a/samples/thumbnails/game-spiralaterals.png b/samples/thumbnails/game-spiralaterals.png new file mode 100644 index 0000000..17978d4 --- /dev/null +++ b/samples/thumbnails/game-spiralaterals.png Binary files differ diff --git a/samples/thumbnails/game-trianglepaint.png b/samples/thumbnails/game-trianglepaint.png new file mode 100644 index 0000000..8578922 --- /dev/null +++ b/samples/thumbnails/game-trianglepaint.png Binary files differ diff --git a/samples/thumbnails/graphics-bbq.png b/samples/thumbnails/graphics-bbq.png new file mode 100644 index 0000000..33e41e8 --- /dev/null +++ b/samples/thumbnails/graphics-bbq.png Binary files differ diff --git a/samples/thumbnails/graphics-birds.png b/samples/thumbnails/graphics-birds.png new file mode 100644 index 0000000..d8e0dcc --- /dev/null +++ b/samples/thumbnails/graphics-birds.png Binary files differ diff --git a/samples/thumbnails/graphics-bubbles.png b/samples/thumbnails/graphics-bubbles.png new file mode 100644 index 0000000..65d4653 --- /dev/null +++ b/samples/thumbnails/graphics-bubbles.png Binary files differ diff --git a/samples/thumbnails/graphics-candyvortex.png b/samples/thumbnails/graphics-candyvortex.png new file mode 100644 index 0000000..54ceb1e --- /dev/null +++ b/samples/thumbnails/graphics-candyvortex.png Binary files differ diff --git a/samples/thumbnails/graphics-city.png b/samples/thumbnails/graphics-city.png new file mode 100644 index 0000000..a0b63dc --- /dev/null +++ b/samples/thumbnails/graphics-city.png Binary files differ diff --git a/samples/thumbnails/graphics-colors.png b/samples/thumbnails/graphics-colors.png new file mode 100644 index 0000000..611a5a6 --- /dev/null +++ b/samples/thumbnails/graphics-colors.png Binary files differ diff --git a/samples/thumbnails/graphics-csquiral.png b/samples/thumbnails/graphics-csquiral.png new file mode 100644 index 0000000..32c1097 --- /dev/null +++ b/samples/thumbnails/graphics-csquiral.png Binary files differ diff --git a/samples/thumbnails/graphics-curls.png b/samples/thumbnails/graphics-curls.png new file mode 100644 index 0000000..f68dd8e --- /dev/null +++ b/samples/thumbnails/graphics-curls.png Binary files differ diff --git a/samples/thumbnails/graphics-curlygates.png b/samples/thumbnails/graphics-curlygates.png new file mode 100644 index 0000000..69d0054 --- /dev/null +++ b/samples/thumbnails/graphics-curlygates.png Binary files differ diff --git a/samples/thumbnails/graphics-daimons.png b/samples/thumbnails/graphics-daimons.png new file mode 100644 index 0000000..6ec4220 --- /dev/null +++ b/samples/thumbnails/graphics-daimons.png Binary files differ diff --git a/samples/thumbnails/graphics-dalton.png b/samples/thumbnails/graphics-dalton.png new file mode 100644 index 0000000..ed1c9e8 --- /dev/null +++ b/samples/thumbnails/graphics-dalton.png Binary files differ diff --git a/samples/thumbnails/graphics-dots.png b/samples/thumbnails/graphics-dots.png new file mode 100644 index 0000000..5aadcf0 --- /dev/null +++ b/samples/thumbnails/graphics-dots.png Binary files differ diff --git a/samples/thumbnails/graphics-flower.png b/samples/thumbnails/graphics-flower.png new file mode 100644 index 0000000..52b1af7 --- /dev/null +++ b/samples/thumbnails/graphics-flower.png Binary files differ diff --git a/samples/thumbnails/graphics-fountain.png b/samples/thumbnails/graphics-fountain.png new file mode 100644 index 0000000..cf79a01 --- /dev/null +++ b/samples/thumbnails/graphics-fountain.png Binary files differ diff --git a/samples/thumbnails/graphics-op-art.png b/samples/thumbnails/graphics-op-art.png new file mode 100644 index 0000000..088ce25 --- /dev/null +++ b/samples/thumbnails/graphics-op-art.png Binary files differ diff --git a/samples/thumbnails/graphics-palm.png b/samples/thumbnails/graphics-palm.png new file mode 100644 index 0000000..28d7ef6 --- /dev/null +++ b/samples/thumbnails/graphics-palm.png Binary files differ diff --git a/samples/thumbnails/graphics-rainbow.png b/samples/thumbnails/graphics-rainbow.png new file mode 100644 index 0000000..cedc298 --- /dev/null +++ b/samples/thumbnails/graphics-rainbow.png Binary files differ diff --git a/samples/thumbnails/graphics-redwisp.png b/samples/thumbnails/graphics-redwisp.png new file mode 100644 index 0000000..dacbc3b --- /dev/null +++ b/samples/thumbnails/graphics-redwisp.png Binary files differ diff --git a/samples/thumbnails/graphics-reflections.png b/samples/thumbnails/graphics-reflections.png new file mode 100644 index 0000000..a69e5c1 --- /dev/null +++ b/samples/thumbnails/graphics-reflections.png Binary files differ diff --git a/samples/thumbnails/graphics-shades.png b/samples/thumbnails/graphics-shades.png new file mode 100644 index 0000000..90ebf44 --- /dev/null +++ b/samples/thumbnails/graphics-shades.png Binary files differ diff --git a/samples/thumbnails/graphics-smoothcandy.png b/samples/thumbnails/graphics-smoothcandy.png new file mode 100644 index 0000000..30fd99f --- /dev/null +++ b/samples/thumbnails/graphics-smoothcandy.png Binary files differ diff --git a/samples/thumbnails/graphics-sunrise.png b/samples/thumbnails/graphics-sunrise.png new file mode 100644 index 0000000..5cf2945 --- /dev/null +++ b/samples/thumbnails/graphics-sunrise.png Binary files differ diff --git a/samples/thumbnails/graphics-turtles.png b/samples/thumbnails/graphics-turtles.png new file mode 100644 index 0000000..6ce6638 --- /dev/null +++ b/samples/thumbnails/graphics-turtles.png Binary files differ diff --git a/samples/thumbnails/graphics-xo-child.png b/samples/thumbnails/graphics-xo-child.png new file mode 100644 index 0000000..26979cf --- /dev/null +++ b/samples/thumbnails/graphics-xo-child.png Binary files differ diff --git a/samples/thumbnails/math-Pythagoras.png b/samples/thumbnails/math-Pythagoras.png new file mode 100644 index 0000000..9035426 --- /dev/null +++ b/samples/thumbnails/math-Pythagoras.png Binary files differ diff --git a/samples/thumbnails/math-cherlin.png b/samples/thumbnails/math-cherlin.png new file mode 100644 index 0000000..dfb65bb --- /dev/null +++ b/samples/thumbnails/math-cherlin.png Binary files differ diff --git a/samples/thumbnails/math-dice.png b/samples/thumbnails/math-dice.png new file mode 100644 index 0000000..dc19019 --- /dev/null +++ b/samples/thumbnails/math-dice.png Binary files differ diff --git a/samples/thumbnails/math-forster.png b/samples/thumbnails/math-forster.png new file mode 100644 index 0000000..2990ca6 --- /dev/null +++ b/samples/thumbnails/math-forster.png Binary files differ diff --git a/samples/thumbnails/math-fractions.png b/samples/thumbnails/math-fractions.png new file mode 100644 index 0000000..07301d2 --- /dev/null +++ b/samples/thumbnails/math-fractions.png Binary files differ diff --git a/samples/thumbnails/math-galton-box.png b/samples/thumbnails/math-galton-box.png new file mode 100644 index 0000000..8d6e8a1 --- /dev/null +++ b/samples/thumbnails/math-galton-box.png Binary files differ diff --git a/samples/thumbnails/math-geometry.png b/samples/thumbnails/math-geometry.png new file mode 100644 index 0000000..8a1564f --- /dev/null +++ b/samples/thumbnails/math-geometry.png Binary files differ diff --git a/samples/thumbnails/math-heart.png b/samples/thumbnails/math-heart.png new file mode 100644 index 0000000..9e0aea5 --- /dev/null +++ b/samples/thumbnails/math-heart.png Binary files differ diff --git a/samples/thumbnails/math-sierpquad.png b/samples/thumbnails/math-sierpquad.png new file mode 100644 index 0000000..a7c8a63 --- /dev/null +++ b/samples/thumbnails/math-sierpquad.png Binary files differ diff --git a/samples/thumbnails/math-sierptri.png b/samples/thumbnails/math-sierptri.png new file mode 100644 index 0000000..6b08951 --- /dev/null +++ b/samples/thumbnails/math-sierptri.png Binary files differ diff --git a/samples/thumbnails/math-snowflake.png b/samples/thumbnails/math-snowflake.png new file mode 100644 index 0000000..8749651 --- /dev/null +++ b/samples/thumbnails/math-snowflake.png Binary files differ diff --git a/samples/thumbnails/math-tangents.png b/samples/thumbnails/math-tangents.png new file mode 100644 index 0000000..252815d --- /dev/null +++ b/samples/thumbnails/math-tangents.png Binary files differ diff --git a/samples/thumbnails/math-tree.png b/samples/thumbnails/math-tree.png new file mode 100644 index 0000000..cea0d0b --- /dev/null +++ b/samples/thumbnails/math-tree.png Binary files differ diff --git a/samples/thumbnails/media-scratch.png b/samples/thumbnails/media-scratch.png new file mode 100644 index 0000000..de75291 --- /dev/null +++ b/samples/thumbnails/media-scratch.png Binary files differ diff --git a/samples/thumbnails/sensors-psuedo-color.png b/samples/thumbnails/sensors-psuedo-color.png new file mode 100644 index 0000000..2ba1567 --- /dev/null +++ b/samples/thumbnails/sensors-psuedo-color.png Binary files differ diff --git a/turtleblocks.py b/turtleblocks.py index 7f0ca8f..9bc6c60 100755 --- a/turtleblocks.py +++ b/turtleblocks.py @@ -31,6 +31,7 @@ import getopt import sys import os import os.path +import glob import cStringIO import errno import ConfigParser @@ -98,6 +99,8 @@ class TurtleMain(): self._parse_command_line() self._ensure_sugar_paths() self._gnome_plugins = [] + self._selected_sample = None + self._sample_window = None if self._output_png: # Outputing to file, so no need for a canvas @@ -370,6 +373,10 @@ return %s(self)" % (p, P, P) ''' Instead of Sugar toolbars, use GNOME menus. ''' menu = gtk.Menu() MenuBuilder.make_menu_item(menu, _('New'), self._do_new_cb) + MenuBuilder.make_menu_item(menu, _('Show sample projects'), + self._create_store) + MenuBuilder.make_menu_item(menu, _('Hide sample projects'), + self._hide_store) MenuBuilder.make_menu_item(menu, _('Open'), self._do_open_cb) MenuBuilder.make_menu_item(menu, _('Load project'), self._do_load_cb) MenuBuilder.make_menu_item(menu, _('Save'), self._do_save_cb) @@ -741,6 +748,90 @@ Would you like to save before quitting?')) ''' Anything that needs restoring after a clear screen can go here ''' pass + def _hide_store(self, widget=None): + if self._sample_window is not None: + self._sample_box.hide() + + def _create_store(self, widget=None): + if self._sample_window is None: + self._sample_box = gtk.EventBox() + self._sample_window = gtk.ScrolledWindow() + self._sample_window.set_policy(gtk.POLICY_NEVER, + gtk.POLICY_AUTOMATIC) + width = gtk.gdk.screen_width() / 2 + height = gtk.gdk.screen_height() / 2 + self._sample_window.set_size_request(width, height) + self._sample_window.show() + + store = gtk.ListStore(gtk.gdk.Pixbuf, str) + + icon_view = gtk.IconView() + icon_view.set_model(store) + icon_view.set_selection_mode(gtk.SELECTION_SINGLE) + icon_view.connect('selection-changed', self._sample_selected, + store) + icon_view.set_pixbuf_column(0) + icon_view.grab_focus() + self._sample_window.add_with_viewport(icon_view) + icon_view.show() + self._fill_samples_list(store) + + width = gtk.gdk.screen_width() / 4 + height = gtk.gdk.screen_height() / 4 + + self._sample_box.add(self._sample_window) + self.fixed.put(self._sample_box, width, height) + + self._sample_window.show() + self._sample_box.show() + + def _get_selected_path(self, widget, store): + try: + iter_ = store.get_iter(widget.get_selected_items()[0]) + image_path = store.get(iter_, 1)[0] + + return image_path, iter_ + except: + return None + + def _sample_selected(self, widget, store): + selected = self._get_selected_path(widget, store) + + if selected is None: + self._selected_sample = None + self._sample_window.hide() + return + + image_path, _iter = selected + iter_ = store.get_iter(widget.get_selected_items()[0]) + image_path = store.get(iter_, 1)[0] + + self._selected_sample = image_path + self._sample_window.hide() + + # Convert from thumbnail path to sample path + basename = os.path.basename(self._selected_sample)[:-4] + for suffix in ['.ta', '.tb']: + file_path = os.path.join(self._execdirname, + 'samples', basename + suffix) + if os.path.exists(file_path): + self.tw.load_files(file_path) + break + + def _fill_samples_list(self, store): + ''' + Append images from the artwork_paths to the store. + ''' + for filepath in self._scan_for_samples(): + pixbuf = None + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size( + filepath, 100, 100) + store.append([pixbuf, filepath]) + + def _scan_for_samples(self): + return glob.glob(os.path.join(self._get_execution_dir(), + 'samples', 'thumbnails', '*.png')) + if __name__ == '__main__': TurtleMain() -- cgit v0.9.1