diff options
-rw-r--r-- | LetterMatch.py | 26 | ||||
-rwxr-xr-x | genpieces.py | 12 | ||||
-rw-r--r-- | images/correct.png | bin | 0 -> 41806 bytes | |||
-rw-r--r-- | images/wrong.png | bin | 0 -> 42162 bytes | |||
-rw-r--r-- | page.py | 45 |
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 Binary files differnew file mode 100644 index 0000000..95f5d5d --- /dev/null +++ b/images/correct.png diff --git a/images/wrong.png b/images/wrong.png Binary files differnew file mode 100644 index 0000000..63084d4 --- /dev/null +++ b/images/wrong.png @@ -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 |