Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/TurtleArt
diff options
context:
space:
mode:
authorWalter Bender <walter@sugarlabs.org>2010-10-11 15:42:07 (GMT)
committer Walter Bender <walter@sugarlabs.org>2010-10-11 15:42:07 (GMT)
commit8fcccae06415542040431d046dbd2bced51e65f5 (patch)
tree61e434b4e46e31c9b4b5564fa7055a30d15ca91e /TurtleArt
parent24e80496c68b5712f1404bc7a1abc792b1abd432 (diff)
more consolidation of chooser code
Diffstat (limited to 'TurtleArt')
-rw-r--r--TurtleArt/tautils.py22
-rw-r--r--TurtleArt/tawindow.py18
2 files changed, 29 insertions, 11 deletions
diff --git a/TurtleArt/tautils.py b/TurtleArt/tautils.py
index 9e9d2c3..47c2768 100644
--- a/TurtleArt/tautils.py
+++ b/TurtleArt/tautils.py
@@ -156,6 +156,28 @@ def get_save_name(suffix, load_save_folder, save_file_name):
return do_dialog(_dialog, suffix, load_save_folder)
+def chooser(caller, filter, action):
+ """ Choose an object from the datastore and take some action """
+ from sugar.graphics.objectchooser import ObjectChooser
+
+ _chooser = None
+ try:
+ _chooser = ObjectChooser(parent=caller, what_filter=filter)
+ except TypeError:
+ _chooser = ObjectChooser(None, caller,
+ gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT)
+ if _chooser is not None:
+ try:
+ result = _chooser.run()
+ if result == gtk.RESPONSE_ACCEPT:
+ dsobject = _chooser.get_selected_object()
+ action(dsobject)
+ dsobject.destroy()
+ finally:
+ _chooser.destroy()
+ del _chooser
+
+
def data_from_file(ta_file):
""" Open the .ta file, ignoring any .png file that might be present. """
file_handle = open(ta_file, "r")
diff --git a/TurtleArt/tawindow.py b/TurtleArt/tawindow.py
index f3b4beb..b3d14cf 100644
--- a/TurtleArt/tawindow.py
+++ b/TurtleArt/tawindow.py
@@ -68,7 +68,7 @@ from tautils import magnitude, get_load_name, get_save_name, data_from_file, \
collapsed, collapsible, hide_button_hit, show_button_hit, \
arithmetic_check, xy, find_block_to_run, find_top_block, \
find_start_stack, find_group, find_blk_below, olpc_xo_1, \
- dock_dx_dy, data_to_string, journal_check
+ dock_dx_dy, data_to_string, journal_check, chooser
from tasprite_factory import SVG, svg_str_to_pixbuf, svg_from_file
from sprites import Sprites, Sprite
@@ -1713,16 +1713,7 @@ class TurtleArtWindow():
def _import_from_journal(self, blk):
""" Import a file from the Sugar Journal """
if self.running_sugar:
- chooser = ObjectChooser(parent=self.parent)
- try:
- result = chooser.run()
- if result == gtk.RESPONSE_ACCEPT:
- dsobject = chooser.get_selected_object()
- self._update_media_icon(blk, dsobject, dsobject.object_id)
- dsobject.destroy()
- finally:
- chooser.destroy()
- del chooser
+ chooser(self.parent, '', self._update_media_blk)
else:
fname, self.load_save_folder = get_load_name('.*',
self.load_save_folder)
@@ -1741,6 +1732,11 @@ class TurtleArtWindow():
if dblk != None and (len(dblk.values) == 0 or dblk.values[0] is None):
self._update_media_icon(dblk, None, blk.values[0])
+ def _update_media_blk(self, dsobject):
+ """ Called from the chooser to load a media block """
+ self._update_media_icon(self.selected_blk, dsobject,
+ dsobject.object_id)
+
def _update_media_icon(self, blk, name, value=''):
""" Update the icon on a 'loaded' media block. """
if blk.name == 'journal':