From 1af713b345b75cd7c9dd112879a79d6c3f8dd881 Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Thu, 09 Apr 2009 16:05:06 +0000 Subject: Add filter to ObjectChooser invoking --- diff --git a/char.py b/char.py index c91c9b9..c5d9f6a 100644 --- a/char.py +++ b/char.py @@ -101,7 +101,7 @@ class CustomFrame(Frame): def select(self): if self._orig: return True; - self.name, self.id, self._orig = theme.choose(lambda jobject: + self.name, self.id, self._orig = theme.choose_image(lambda jobject: (jobject.metadata['title'], jobject.object_id, theme.pixbuf(jobject.file_path)), (None, None, None)) diff --git a/ground.py b/ground.py index 1f97514..85bf608 100644 --- a/ground.py +++ b/ground.py @@ -62,7 +62,7 @@ class CustomGround(Ground): def select(self): try: - return theme.choose(lambda jobject: JournalGround(jobject)) + return theme.choose_image(lambda jobject: JournalGround(jobject)) except: return None diff --git a/sound.py b/sound.py index 9a3e311..8e90c44 100644 --- a/sound.py +++ b/sound.py @@ -85,7 +85,7 @@ class CustomSound(Sound): Sound.__init__(self, name, None, None, theme.SOUND_CUSTOM) def select(self): - sound = theme.choose(lambda jobject: JournalSound(jobject)) + sound = theme.choose_audio(lambda jobject: JournalSound(jobject)) if sound: sound.select() return sound diff --git a/theme.py b/theme.py index 6021cb6..160b202 100644 --- a/theme.py +++ b/theme.py @@ -16,9 +16,12 @@ import os import gtk import shutil from math import ceil +from gettext import gettext as _ from sugar.activity.activity import get_bundle_path, get_activity_root from sugar.graphics import style +from sugar import mime +from sugar.graphics.objectchooser import ObjectChooser SOUND_SPEAKER = 'images/sounds/speaker.png' SOUND_MUTE = 'images/sounds/mute.png' @@ -104,10 +107,7 @@ EMPTY_THUMB = scale(EMPTY_ORIG) CUSTOM_FRAME_ORIG = pixbuf('images/pics/custom.png') CUSTOM_FRAME_THUMB = scale(CUSTOM_FRAME_ORIG) -def choose(out_fun, default=None): - from sugar.graphics.objectchooser import ObjectChooser - - chooser = ObjectChooser() +def do_choose(out_fun, default, chooser): jobject = None try: @@ -124,6 +124,20 @@ def choose(out_fun, default=None): return default +def choose_image(out_fun, default=None): + if hasattr(mime, 'GENERIC_TYPE_IMAGE'): + return do_choose(out_fun, default, ObjectChooser(_('Choose image'), + what_filter=mime.GENERIC_TYPE_IMAGE)) + else: + return do_choose(out_fun, default, ObjectChooser(_('Choose image'))) + +def choose_audio(out_fun, default=None): + if hasattr(mime, 'GENERIC_TYPE_AUDIO'): + return do_choose(out_fun, default, ObjectChooser(_('Choose audio'), + what_filter=mime.GENERIC_TYPE_AUDIO)) + else: + return do_choose(out_fun, default, ObjectChooser(_('Choose audio'))) + def pixbuf2str(pixbuf): def push(data, buffer): buffer.write(data) -- cgit v0.9.1