[gcompris/braille] Learning the braille code: First Activity



commit 0f86169a20ff3515cf034eebe8e6fc87583a9567
Author: Srishti Sethi <srishakatux gmail com>
Date:   Tue May 31 02:29:50 2011 +0530

    Learning the braille code: First Activity

 src/braille_alphabets-activity/.gitignore          |    1 +
 src/braille_alphabets-activity/Makefile.am         |   32 +++
 .../braille_alphabets.py                           |  222 ++++++++++++++++++++
 .../braille_alphabets.xml.in                       |   23 ++
 src/braille_alphabets-activity/braillebug.svg      |  199 ++++++++++++++++++
 src/braille_alphabets-activity/gcompris            |    1 +
 src/braille_alphabets-activity/init_path.sh        |    8 +
 .../resources/drawing.svg                          |   67 ++++++
 .../resources/mosaic_bg.svgz                       |  Bin 0 -> 4475 bytes
 9 files changed, 553 insertions(+), 0 deletions(-)
---
diff --git a/src/braille_alphabets-activity/.gitignore b/src/braille_alphabets-activity/.gitignore
new file mode 100755
index 0000000..b828112
--- /dev/null
+++ b/src/braille_alphabets-activity/.gitignore
@@ -0,0 +1 @@
+braille_alphabets.xml
diff --git a/src/braille_alphabets-activity/Makefile.am b/src/braille_alphabets-activity/Makefile.am
new file mode 100755
index 0000000..d9b62a1
--- /dev/null
+++ b/src/braille_alphabets-activity/Makefile.am
@@ -0,0 +1,32 @@
+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)
diff --git a/src/braille_alphabets-activity/braille_alphabets.py b/src/braille_alphabets-activity/braille_alphabets.py
new file mode 100644
index 0000000..151a231
--- /dev/null
+++ b/src/braille_alphabets-activity/braille_alphabets.py
@@ -0,0 +1,222 @@
+#  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)
+                  
diff --git a/src/braille_alphabets-activity/braille_alphabets.xml.in b/src/braille_alphabets-activity/braille_alphabets.xml.in
new file mode 100644
index 0000000..1f4d8c4
--- /dev/null
+++ b/src/braille_alphabets-activity/braille_alphabets.xml.in
@@ -0,0 +1,23 @@
+<?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>
diff --git a/src/braille_alphabets-activity/braillebug.svg b/src/braille_alphabets-activity/braillebug.svg
new file mode 100644
index 0000000..b3a61ac
--- /dev/null
+++ b/src/braille_alphabets-activity/braillebug.svg
@@ -0,0 +1,199 @@
+<?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>
diff --git a/src/braille_alphabets-activity/gcompris b/src/braille_alphabets-activity/gcompris
new file mode 120000
index 0000000..6a7dc8a
--- /dev/null
+++ b/src/braille_alphabets-activity/gcompris
@@ -0,0 +1 @@
+../boards/python/gcompris
\ No newline at end of file
diff --git a/src/braille_alphabets-activity/init_path.sh b/src/braille_alphabets-activity/init_path.sh
new file mode 100755
index 0000000..d4f78d7
--- /dev/null
+++ b/src/braille_alphabets-activity/init_path.sh
@@ -0,0 +1,8 @@
+# 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"
diff --git a/src/braille_alphabets-activity/resources/drawing.svg b/src/braille_alphabets-activity/resources/drawing.svg
new file mode 100644
index 0000000..e94971c
--- /dev/null
+++ b/src/braille_alphabets-activity/resources/drawing.svg
@@ -0,0 +1,67 @@
+<?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>
diff --git a/src/braille_alphabets-activity/resources/mosaic_bg.svgz b/src/braille_alphabets-activity/resources/mosaic_bg.svgz
new file mode 100755
index 0000000..86f5da0
Binary files /dev/null and b/src/braille_alphabets-activity/resources/mosaic_bg.svgz differ



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]