Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--LetterMatch.py26
-rwxr-xr-xgenpieces.py12
-rw-r--r--images/correct.pngbin0 -> 41806 bytes
-rw-r--r--images/wrong.pngbin0 -> 42162 bytes
-rw-r--r--page.py45
5 files changed, 61 insertions, 22 deletions
diff --git a/LetterMatch.py b/LetterMatch.py
index 08c6278..9d8664c 100644
--- a/LetterMatch.py
+++ b/LetterMatch.py
@@ -16,17 +16,14 @@
from gi.repository import Gtk, Gdk, GdkPixbuf
+from sugar3.datastore import datastore
+from sugar3.graphics.objectchooser import ObjectChooser
+from sugar3 import mime
from sugar3.activity import activity
from sugar3.graphics.toolbarbox import ToolbarBox, ToolbarButton
from sugar3.activity.widgets import ActivityToolbarButton
from sugar3.activity.widgets import StopButton
from sugar3.graphics.toolbutton import ToolButton
-from sugar3.graphics.combobox import ComboBox
-from sugar3.graphics.toolcombobox import ToolComboBox
-from sugar3.datastore import datastore
-from sugar3 import profile
-from sugar3.graphics.objectchooser import ObjectChooser
-from sugar3 import mime
from utils.sprites import Sprites, Sprite
from gettext import gettext as _
@@ -75,16 +72,13 @@ class LetterMatch(activity.Activity):
language = 'es'
self.letter = None
- if os.path.exists(os.path.join('~', 'Activities',
- 'IKnowMyABCs.activity')):
- self._lessons_path = os.path.join('~', 'Activities',
- 'IKnowMyABCs.activity',
- 'lessons', language)
- else:
- self._lessons_path = os.path.join('.', 'lessons', language)
-
- self._images_path = self._lessons_path.replace('lessons', 'images')
- self._sounds_path = self._lessons_path.replace('lessons', 'sounds')
+ self.activity_path = activity.get_bundle_path()
+ self._lessons_path = os.path.join(self.activity_path,
+ 'lessons', language)
+ self._images_path = os.path.join(self.activity_path,
+ 'images', language)
+ self._sounds_path = os.path.join(self.activity_path,
+ 'sounds', language)
self.data_from_journal = {}
if 'data_from_journal' in self.metadata:
self.data_from_journal = json.loads(
diff --git a/genpieces.py b/genpieces.py
index f4d8485..bf9232d 100755
--- a/genpieces.py
+++ b/genpieces.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-#Copyright (c) 2009-11 Walter Bender
+#Copyright (c) 2009-13 Walter Bender
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -146,6 +146,16 @@ def generator(datapath):
close_file(f)
+def genblank(w, h, colors, stroke_width=1.0):
+ svg = SVG()
+ svg.set_scale(1)
+ svg.set_colors(colors)
+ svg.set_stroke_width(stroke_width)
+ svg_string = svg.header(int(w / 80), int(h / 60))
+ svg_string += svg.footer()
+ return svg_string
+
+
def main():
return 0
diff --git a/images/correct.png b/images/correct.png
new file mode 100644
index 0000000..95f5d5d
--- /dev/null
+++ b/images/correct.png
Binary files differ
diff --git a/images/wrong.png b/images/wrong.png
new file mode 100644
index 0000000..63084d4
--- /dev/null
+++ b/images/wrong.png
Binary files differ
diff --git a/page.py b/page.py
index 59dfbd8..d0043d1 100644
--- a/page.py
+++ b/page.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-# Copyright (c) 2012 Walter Bender <walter.bender@gmail.com>
+# Copyright (c) 2012,13 Walter Bender <walter.bender@gmail.com>
# Copyright (c) 2013 Aneesh Dogra <lionaneesh@gmail.com>
# Copyright (c) 2013 Ignacio Rodríguez <ignacio@sugarlabs.org>
# This program is free software; you can redistribute it and/or modify
@@ -15,7 +15,6 @@
from gi.repository import Gtk, Gdk, GObject, GdkPixbuf
import os
-import codecs
from random import uniform, choice
from gettext import gettext as _
@@ -26,10 +25,11 @@ from utils.play_audio import play_audio_from_file
import logging
_logger = logging.getLogger('lettermatch-activity')
+from sugar3 import profile
from sugar3.graphics import style
GRID_CELL_SIZE = style.GRID_CELL_SIZE
-from genpieces import generate_card
+from genpieces import generate_card, genblank
from utils.sprites import Sprites, Sprite
@@ -49,6 +49,8 @@ class Page():
self._images_path = images_path
self._sounds_path = sounds_path
+ self._colors = profile.get_color().to_string().split(',')
+
self._card_data = []
self._color_data = []
self._image_data = []
@@ -92,6 +94,30 @@ class Page():
self.target = 0
self.answers = [0, 0, 0, 0, 0, 0]
+ self._my_canvas = Sprite(
+ self._sprites, 0, 0, svg_str_to_pixbuf(genblank(
+ self._width, self._height, (self._colors[0],
+ self._colors[0]))))
+ self._my_canvas.type = 'background'
+
+ self._smile = Sprite(self._sprites,
+ int(self._width / 4),
+ int(self._height / 4),
+ GdkPixbuf.Pixbuf.new_from_file_at_size(
+ os.path.join(self._activity.activity_path,
+ 'images', 'correct.png'),
+ int(self._width / 2),
+ int(self._height / 2)))
+
+ self._frown = Sprite(self._sprites,
+ int(self._width / 4),
+ int(self._height / 4),
+ GdkPixbuf.Pixbuf.new_from_file_at_size(
+ os.path.join(self._activity.activity_path,
+ 'images', 'wrong.png'),
+ int(self._width / 2),
+ int(self._height / 2)))
+
self.load_level(os.path.join(self._lessons_path, 'alphabet' + '.csv'))
# Create the cards we'll need
@@ -100,11 +126,17 @@ class Page():
self.new_page()
+ def _hide_feedback(self):
+ if hasattr(self, '_smile'):
+ self._smile.hide()
+ self._frown.hide()
+
def new_page(self):
''' Load a page of cards '''
if self.timeout is not None:
GObject.source_remove(self.timeout)
self._hide_cards()
+ self._hide_feedback()
self.new_target()
x = self._grid_x_offset + self._card_width + GUTTER * 3
y = self._grid_y_offset + GUTTER
@@ -281,12 +313,15 @@ class Page():
self._activity.status.set_text(_('Please try again.'))
self._play(False)
self._play_target_sound()
+ self.timeout = GObject.timeout_add(1000, self._hide_feedback)
def _play(self, great):
if great:
- play_audio_from_file(os.getcwd() + '/sounds/great.ogg')
+ self._smile.set_layer(1000)
+ # play_audio_from_file(os.getcwd() + '/sounds/great.ogg')
else:
- play_audio_from_file(os.getcwd() + '/sounds/bad.ogg')
+ self._frown.set_layer(1000)
+ # play_audio_from_file(os.getcwd() + '/sounds/bad.ogg')
def _keypress_cb(self, area, event):
''' No keyboard shortcuts at the moment. Perhaps jump to the page