From d58c5ebf84d9102a037b645cb38509be58fe94e5 Mon Sep 17 00:00:00 2001 From: Alan Aguiar Date: Wed, 17 Oct 2012 07:38:11 +0000 Subject: add possibility of load image from journal --- diff --git a/activity.py b/activity.py index bc1290b..dfa8e84 100755 --- a/activity.py +++ b/activity.py @@ -8,6 +8,8 @@ from sugar.graphics.toolbutton import ToolButton from sugar.activity.widgets import ActivityToolbarButton from sugar.activity.widgets import StopButton from sugar.graphics.toolbarbox import ToolbarButton +from sugar.graphics.objectchooser import ObjectChooser +from sugar.datastore import datastore import sugargame.canvas import run @@ -19,7 +21,7 @@ class Activity(activity.Activity): def __init__(self, handle): activity.Activity.__init__(self, handle) - self._activity = run.Game() + self._activity = run.Game(self) self.build_toolbar() self._pygamecanvas = sugargame.canvas.PygameCanvas(self) self.set_canvas(self._pygamecanvas) @@ -53,3 +55,27 @@ class Activity(activity.Activity): def write_file(self, file_path): pass + def load_image_from_journal(self): + chooser = None + name = None + jobject = None + try: + chooser = ObjectChooser(parent=self, what_filter=None) + except TypeError: + chooser = ObjectChooser( + None, self, + gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT) + if chooser is not None: + try: + result = chooser.run() + if result == gtk.RESPONSE_ACCEPT: + jobject = chooser.get_selected_object() + if jobject and jobject.file_path: + name = jobject.metadata['title'] + #mime_type = jobject.metadata['mime_type'] + #_logger.debug('result of choose: %s (%s)' % \(name, str(mime_type))) + finally: + chooser.destroy() + del chooser + + return jobject diff --git a/run.py b/run.py index be9120d..868a631 100755 --- a/run.py +++ b/run.py @@ -45,7 +45,8 @@ deck = deckinfoclass() class Game(): - def __init__(self): + def __init__(self, parent): + self.parent = parent pass def loop(self): @@ -77,13 +78,14 @@ class Game(): mainframe = gui.frame((mainheader, mainquit, maindeck, mainphoto), (25, screensize[1]-100), (screensize[0]-50, 75)) deckselexit = gui.button((screensize[0]-215, screensize[1]-145), (115, 35), "Cancel") + deckfromjournal = gui.button((screensize[0]-445, screensize[1]-145), (200, 35), "from Journal") deckselregular = gui.image((115, 115), (crazyeights.card_width(), crazyeights.card_height()), 'back.regular.png') deckselgnome = gui.image((300, 115), (crazyeights.card_width(), crazyeights.card_height()), 'back.gnome.png') deckselparis = gui.image((485, 115), (crazyeights.card_width(), crazyeights.card_height()), 'back.paris.png') deckselshapes = gui.image((670, 115), (crazyeights.card_width(), crazyeights.card_height()), 'back.shapes.png') - deckseluser = gui.image((855, 115), (crazyeights.card_width(), crazyeights.card_height()), 'back.user.tga') + self.deckseluser = gui.image((855, 115), (crazyeights.card_width(), crazyeights.card_height()), 'back.user.tga') - deckselpopup = gui.popup((deckselexit, deckselregular, deckselgnome, deckselparis, deckselshapes, deckseluser), (100, 100), (screensize[0]-200, screensize[1]-200)) + deckselpopup = gui.popup((deckselexit, deckfromjournal, deckselregular, deckselgnome, deckselparis, deckselshapes, self.deckseluser), (100, 100), (screensize[0]-200, screensize[1]-200)) mouseposition = [0, 0, 0] @@ -128,6 +130,11 @@ class Game(): elif decksel and deckselexit.detect_click(event.pos): decksel = False self.screen.fill(MMCOL) + elif decksel and deckfromjournal.detect_click(event.pos): + picture = self.parent.load_image_from_journal() + if picture: + self.update_user_deck(picture.file_path) + self.screen.fill(MMCOL) elif decksel and deckselgnome.detect_click(event.pos): deck.deck = 'gnome' decksel = False @@ -144,7 +151,7 @@ class Game(): deck.deck = 'shapes' decksel = False self.screen.fill(MMCOL) - elif decksel and deckseluser.detect_click(event.pos): + elif decksel and self.deckseluser.detect_click(event.pos): deck.deck = 'user' decksel = False self.screen.fill(MMCOL) @@ -178,7 +185,6 @@ class Game(): photocamera.set_controls(True, False) camera_size = photocamera.get_size() capture = pygame.surface.Surface(camera_size, 0, self.screen) - photodynamic.image = photocamera.get_image(capture) running = True @@ -211,6 +217,7 @@ class Game(): r.h = 244 sub = photodynamic.image.subsurface(r) pygame.image.save(sub, 'data/back.user.tga') + deck.deck = 'user' running = False photopopup.update() @@ -234,3 +241,12 @@ class Game(): photocamera.stop() + def update_user_deck(self, path): + try: + raw_deck = pygame.image.load(path) + deck = pygame.transform.scale(raw_deck, (156, 244)) + pygame.image.save(deck, 'data/back.user.tga') + self.deckseluser.image = deck + except: + pass + -- cgit v0.9.1