Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Aguiar <alanjas@hotmail.com>2012-10-17 07:38:11 (GMT)
committer Alan Aguiar <alanjas@hotmail.com>2012-10-17 07:38:11 (GMT)
commitd58c5ebf84d9102a037b645cb38509be58fe94e5 (patch)
treeaaab34029aed2b41fa66994adcb3302afbbacc67
parent8c308232eebce97b7bfea6d3245b5bddc781ba8d (diff)
add possibility of load image from journal
-rwxr-xr-xactivity.py28
-rwxr-xr-xrun.py26
2 files changed, 48 insertions, 6 deletions
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
+