Commit 0f86169a authored by Srishti Sethi's avatar Srishti Sethi

Learning the braille code: First Activity

parent 8e095f14
SUBDIRS =
pythondir = $(PYTHON_PLUGIN_DIR)
dist_python_DATA= braille_alphabets.py
xmldir = $(pkgdatadir)/@PACKAGE_DATA_DIR@
xml_in_files = \
braille_alphabets.xml.in
xml_DATA = $(xml_in_files:.xml.in=.xml)
# Do not use the INTLTOOL_XML_RULE, we don't need to embed the translations
# in the file themselves. GCompris pick the translations from the po file at
# runtime.
#
$(xml_DATA): %.xml: %.xml.in
sed -e "s/\(<\{1\}\/*\)_/\1/g" $< > $@
# Use this directive and instead of the one above to embed the translations
# in the xml files directly, this is needed for the tool gcompris2spip
#@INTLTOOL_XML_RULE@
icondir = $(pkgdatadir)/@PACKAGE_DATA_DIR@
icon_DATA = braille_alphabets.svg
EXTRA_DIST = $(icon_DATA) ${xml_in_files} init_path.sh
CLEANFILES = $(xml_DATA)
# gcompris - braille_alphabets.py
#
# Copyright (C) 2003, 2008 Bruno Coudoin
#
# 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
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# braille_alphabets activity.
import gtk
import gtk.gdk
import gcompris
import gcompris.utils
import gcompris.skin
import goocanvas
import pango
import gcompris.sound
import string
from gcompris import gcompris_gettext as _
braille_letters = {
"a": (1,), "b": (1, 2), "c": (1, 4), "d": (1, 4, 5), "e": (1, 5),
"f": (1, 2, 4), "g": (1, 2, 4, 5), "h": (1, 2, 5), "i": (2, 4),
"j": (2, 4, 5), "k": (1, 3), "l": (1, 2, 3), "m": (1, 3, 4),
"n": (1, 3, 4, 5), "o": (1, 3, 5), "p": (1, 2, 3, 4), "q": (1, 2, 3, 4, 5),
"r": (1, 2, 3, 5), "s": (2, 3, 4), "t": (2, 3, 4, 5), "u": (1, 3, 6),
"v": (1, 2, 3, 6), "w": (2, 4, 5, 6), "x": (1, 3, 4, 6), "y": (1, 3, 4, 5, 6),
"z": (1, 3, 5, 6),
}
class Gcompris_braille_alphabets:
"""Empty gcompris python class"""
def __init__(self, gcomprisBoard):
print "braille_alphabets init"
# Save the gcomprisBoard, it defines everything we need
# to know from the core
self.gcomprisBoard = gcomprisBoard
# Needed to get key_press
gcomprisBoard.disable_im_context = True
def start(self):
print "braille_alphabets start"
# Set the buttons we want in the bar
gcompris.bar_set(gcompris.BAR_LEVEL)
# Set a background image
gcompris.set_background(self.gcomprisBoard.canvas.get_root_item(),
"mosaic_bg.svgz")
# Create our rootitem. We put each canvas item in it so at the end we
# only have to kill it. The canvas deletes all the items it contains
# automaticaly.
self.rootitem = goocanvas.Group(parent =
self.gcomprisBoard.canvas.get_root_item())
self.display_game()
def end(self):
print "braille_alphabets end"
# Remove the root item removes all the others inside it
self.rootitem.remove()
#self.cleanup_game()
def ok(self):
print("learnbraille ok.")
def repeat(self):
print("learnbraille repeat.")
def config(self):
print("learnbraille config.")
def key_press(self, keyval, commit_str, preedit_str):
utf8char = gtk.gdk.keyval_to_unicode(keyval)
strn = u'%c' % utf8char
print("Gcompris_learnbraille key press keyval=%i %s" % (keyval, strn))
def pause(self, pause):
print("learnbraille pause. %i" % pause)
def set_level(self, level):
gcompris.sound.play_ogg("sounds/receive.wav")
self.gcomprisBoard.level = level
self.gcomprisBoard.sublevel = 1
gcompris.bar_set_level(self.gcomprisBoard)
print("learnbraille set level. %i" % level)
self.increment_level()
def increment_level(self):
gcompris.sound.play_ogg("sounds/bleep.wav")
self.end()
self.start()
def display_game(self):
goocanvas.Text(parent = self.rootitem,x=390.0,y=70.0,text=_("Alphabet"),width =500,height=500,fill_color="blue",anchor = gtk.ANCHOR_CENTER,font='BOLD')
"""call braille cell"""
self.braille_cell()
"""Call lower board 1 or 2"""
if(self.gcomprisBoard.level == 1 & self.gcomprisBoard.sublevel == 1):
print "Enter into lower board 2"
self.board_lower2()
else :
self.board_lower1()
def board_lower1(self):
self.cell_width = 40
for i, letter in enumerate(string.ascii_uppercase[:13]):
tile = self.braille_tile(letter,self.cell_width,i)
def braille_tile(self, letter, cell_width,i):
x1 = 190
y1 = 150
self.letter = letter
self.cell_width = cell_width
self.i = i * (cell_width + 10) + 60
padding = self.cell_width * 0.21
cell_size = self.cell_width / 2 - padding
inner_padding = self.cell_width * 0.08
cell_radius = cell_size - inner_padding * 2
self.item = goocanvas.Rect(parent = self.rootitem,x=self.i,y = 350, width=40, height=60,stroke_color="blue",line_width = 2.0)
self.item.connect("button_press_event",self.braille_char,x1,y1,letter,True,True)
gcompris.utils.item_focus_init(self.item,None)
goocanvas.Text(parent=self.rootitem,x=self.i+10,y=425,text=str(letter),fill_color="blue",font='BOLD')
#small eclipse in lower board area
self.cells = []
for u in range(2):
for v in range(3):
cell = goocanvas.Ellipse(parent=self.rootitem,center_x= i * 50 + u * 20 + 70,center_y=v*15+365,radius_x=cell_radius,radius_y=cell_radius,stroke_color="blue",line_width=2.0)
self.cells.append(cell) # keep a separate track so we don't mix up with other sprites
#fill these eclipses with red color
self.fillings = braille_letters.get(self.letter.lower())
for i in range(6):
if(i+1) in self.fillings:
self.cells[i].set_property("fill_color","red")
else :
self.cells[i].set_property("fill_color","#DfDfDf")
def braille_char(self,event,target,item,a,b,letter,clickable,displayable):
"""Checking the booleans to evaluate if text is to displayed & if its clickable"""
if(displayable == True):
self.increment_level()
self.text1 = goocanvas.Text(parent=self.rootitem,
x = a,
y = b,
fill_color = "blue",
font = "Sans 78",
anchor = gtk.ANCHOR_CENTER,
text = str(letter))
if(clickable == True):
self.text1.connect("button_press_event",self.display_letter,letter)
gcompris.utils.item_focus_init(self.text1,None)
def display_letter(self,item,event,target,letter):
print "clickable"
self.letter = letter
print self.letter
self.fillings = braille_letters.get(self.letter.lower())
for i in range(6):
if(i+1) in self.fillings:
self.c[i].set_property("fill_color","red")
else :
self.c[i].set_property("fill_color","#DfDfDf")
def board_lower2(self):
self.cell_width = 40
for i,letter in enumerate(string.ascii_uppercase[13:]):
tile = self.braille_tile(letter,self.cell_width,i)
"""Braille Cell function to represent the dots & braille code"""
def braille_cell(self):
self.c = [] #Braille Cell Array
goocanvas.Text(parent = self.rootitem,x=540.0,y=70.0,text=_("Braille Cell"),fill_color="blue",font='BOLD')
for i in range(2):
for j in range(3):
goocanvas.Text(parent = self.rootitem,text=(str(j + 1 + i * 3)),font ='Sans 30',fill_color = "blue",x = i * 140 + 510, y = j * 50 + 100)
cell1 = goocanvas.Ellipse(parent=self.rootitem,center_x=i * 50 +570,center_y=j*50 + 120,radius_x=20,radius_y=20, stroke_color="blue",line_width=5.0)
self.c.append(cell1)
<?xml version="1.0" encoding="UTF-8"?>
<GCompris>
<Board
name="braille_alphabets"
type="python:braille_alphabets"
section="/experimental"
icon="braille_bug.svg"
difficulty="1"
author="Srishti Sethi (srishakatux@gmail.com)"
boarddir=""
demo="1">
<_title>Braille Alphabets Activity</_title>
<_description>Learn and memorize the braille code for alphabets</_description>
<_prerequisite></_prerequisite>
<_goal>To let the kids discover braille codes for alphabets</_goal>
<_manual>The GCompris board shows three sections : braille cell,alphabet name and lower board
containing 13 letters.Click on each letter in the lower board to know its corresponding braille
code in the braille cell section.Click on the increment level button to jump to the
next 13 letters of the english alphabets.</_manual>
<_credit></_credit>
</Board>
<Data directory=""/>
</GCompris>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2"
version="1.1"
inkscape:version="0.48.0 r9654"
width="50"
height="50"
sodipodi:docname="braillebug.gif">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="640"
inkscape:window-height="480"
id="namedview4"
showgrid="false"
inkscape:zoom="3.2948718"
inkscape:cx="41.5"
inkscape:cy="39"
inkscape:window-x="0"
inkscape:window-y="37"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<image
width="50"
height="50"
xlink:href="data:image/png;base64,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
"
id="image10"
x="0"
y="0" />
</svg>
../boards/python/gcompris
\ No newline at end of file
# Set the different path for this activity
# This is sourced by runit.sh
path=$1
activity=braille_alphabets
plugindir=$path/../boards/.libs
pythonplugindir=$path
resourcedir=$path/resources
section="/experimental"
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg2"
version="1.1"
inkscape:version="0.48.0 r9654"
sodipodi:docname="drawing.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="366.55"
inkscape:cy="492.31103"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="701"
inkscape:window-x="0"
inkscape:window-y="37"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
rx="37.158844"
ry="73.351807"
y="0.62713188"
x="-0.52573889"
height="1054.8987"
width="743.90857"
id="rect1393"
style="fill:#e8e7e2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.875;marker:none;visibility:visible;display:inline;overflow:visible"
inkscape:export-filename="/home/bruno/Projets/gcompris/gcompris/boards/images/mosaic_bg.png"
inkscape:export-xdpi="71.968178"
inkscape:export-ydpi="71.968178" />
</g>
</svg>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment