[gcompris] piano composition, added missing files.



commit ac772646a0f37d4f0aa4b4d31fa121f68c1f0599
Author: Bruno Coudoin <bruno coudoin free fr>
Date:   Tue Oct 2 21:05:09 2012 +0200

    piano composition, added missing files.

 src/piano_composition-activity/gcomprismusic.py    |    1 +
 .../piano_composition/bassclef_button.svg          |  295 ++++++++++++++++++++
 .../piano_composition/trebbleclef_button.svg       |  275 ++++++++++++++++++
 src/play_rhythm-activity/play_rhythm.py            |   61 +++--
 4 files changed, 614 insertions(+), 18 deletions(-)
---
diff --git a/src/piano_composition-activity/gcomprismusic.py b/src/piano_composition-activity/gcomprismusic.py
index 8888904..bf8983e 100644
--- a/src/piano_composition-activity/gcomprismusic.py
+++ b/src/piano_composition-activity/gcomprismusic.py
@@ -454,6 +454,7 @@ class Staff():
         else:
             for o in self._staffImages:
                 o.props.visibility = goocanvas.ITEM_INVISIBLE
+
     def play_it(self, noteIndexToPlay, playingLineOnly=False):
         '''
         NOT A PUBLIC METHOD
diff --git a/src/piano_composition-activity/resources/piano_composition/bassclef_button.svg b/src/piano_composition-activity/resources/piano_composition/bassclef_button.svg
new file mode 100644
index 0000000..977ced2
--- /dev/null
+++ b/src/piano_composition-activity/resources/piano_composition/bassclef_button.svg
@@ -0,0 +1,295 @@
+<?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";
+   height="54.988968"
+   id="svg1"
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="bassclef_button.svg"
+   sodipodi:version="0.32"
+   width="50"
+   version="1.1">
+  <metadata
+     id="metadata2996">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title />
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li />
+            <rdf:li>webpage</rdf:li>
+            <rdf:li>button</rdf:li>
+            <rdf:li>shape</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org";>
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain"; />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain";>
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks"; />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient1702">
+      <stop
+         id="stop1703"
+         offset="0.0000000"
+         style="stop-color:#ffffff;stop-opacity:0.69072163;" />
+      <stop
+         id="stop1704"
+         offset="1.0000000"
+         style="stop-color:#ffffff;stop-opacity:0.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient1697">
+      <stop
+         id="stop1698"
+         offset="0.0000000"
+         style="stop-color:#db210e;stop-opacity:1.0000000;" />
+      <stop
+         id="stop1699"
+         offset="1.0000000"
+         style="stop-color:#761107;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       cx="522.89532"
+       cy="481.86633"
+       fx="522.89911"
+       fy="473.03323"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1706"
+       inkscape:collect="always"
+       r="15.301119"
+       xlink:href="#linearGradient1702" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1076"
+       inkscape:collect="always"
+       x1="520.57166"
+       x2="520.57166"
+       xlink:href="#linearGradient1697"
+       y1="506.28723"
+       y2="466.2785" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1077"
+       inkscape:collect="always"
+       x1="522.94183"
+       x2="522.94183"
+       xlink:href="#linearGradient1697"
+       y1="469.49918"
+       y2="505.0845" />
+    <linearGradient
+       gradientTransform="matrix(0.19754276,0,0,0.08181161,-11.184797,337.28233)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1078"
+       inkscape:collect="always"
+       x1="213.82799"
+       x2="214.59154"
+       xlink:href="#linearGradient1702"
+       y1="183.48366"
+       y2="463.47311" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient5027"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient5029"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       r="117.14286"
+       fy="486.64789"
+       fx="605.71429"
+       cy="486.64789"
+       cx="605.71429"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3111"
+       xlink:href="#linearGradient5060"
+       inkscape:collect="always" />
+    <radialGradient
+       r="117.14286"
+       fy="486.64789"
+       fx="605.71429"
+       cy="486.64789"
+       cx="605.71429"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4147"
+       xlink:href="#linearGradient5060"
+       inkscape:collect="always" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="0.0054889241"
+     inkscape:cy="18.940842"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="914"
+     inkscape:window-width="1276"
+     inkscape:window-x="241"
+     inkscape:window-y="53"
+     inkscape:zoom="6.9465337"
+     pagecolor="#ffffff"
+     showgrid="false"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-6.3108766,-350.04413)">
+    <g
+       style="display:inline;overflow:visible"
+       id="g5022"
+       transform="matrix(0.01369322,0,0,0.01903841,44.685433,398.79497)">
+      <rect
+         y="-150.69685"
+         x="-1559.2523"
+         height="478.35718"
+         width="1339.6335"
+         id="rect4173"
+         style="opacity:0.40206185;color:#000000;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <path
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc"
+         id="path5058"
+         d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z"
+         style="opacity:0.40206185;color:#000000;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <path
+         inkscape:connector-curvature="0"
+         style="opacity:0.40206185;color:#000000;fill:url(#radialGradient4147);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+         d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z"
+         id="path5018"
+         sodipodi:nodetypes="cccc" />
+    </g>
+    <path
+       d="m 544.06634,487.06226 c 0,11.47854 -9.3052,20.78374 -20.78375,20.78374 -11.47854,0 -20.78374,-9.3052 -20.78374,-20.78374 0,-11.47855 9.3052,-20.78375 20.78374,-20.78375 11.47855,0 20.78375,9.3052 20.78375,20.78375 z"
+       id="path1070"
+       sodipodi:cx="523.28259"
+       sodipodi:cy="487.06226"
+       sodipodi:rx="20.783747"
+       sodipodi:ry="20.783747"
+       sodipodi:type="arc"
+       style="fill:url(#linearGradient1076);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1077);stroke-width:1.3644532;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
+       transform="matrix(1.1646339,0,0,1.1646339,-578.12177,-192.20508)" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.35074341;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 27.876384,355.6716 c -6.760883,0.16004 -11.940427,4.89632 -10.261892,12.14999 0.002,0.009 0.01025,0.016 0.01225,0.0245 0.197055,2.50165 2.27858,4.47503 4.83057,4.47503 2.681994,0 4.855089,-2.1731 4.855089,-4.8551 0,-2.36375 -1.685983,-4.33473 -3.923305,-4.76925 -0.891577,-0.31547 -2.228755,-1.03275 -2.170078,-2.18234 0.02704,-0.57215 0.694981,-1.60994 1.765486,-2.1333 1.301063,-0.61058 2.642664,-0.94098 3.996867,-0.66206 2.052796,0.37475 7.302523,4.14428 7.711747,10.67875 0.234891,4.9613 -2.551944,11.65973 -5.271942,14.83498 -4.384928,5.00504 -11.429128,8.11397 -10.740045,8.66805 0.61848,0.5541 8.935152,-3.24717 13.26567,-8.01825 5.284785,-5.72257 7.901005,-10.49263 7.650443,-16.29397 -0.150703,-5.80134 -4.642052,-12.08223 -11.72087,-11.91704 z"
+       id="path861" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.89399999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path1877"
+       sodipodi:cx="107.08598"
+       sodipodi:cy="36.472969"
+       sodipodi:rx="9.7721043"
+       sodipodi:ry="9.1613474"
+       d="m 116.85809,36.472969 c 0,5.059673 -4.37512,9.161347 -9.77211,9.161347 -5.39698,0 -9.772101,-4.101674 -9.772101,-9.161347 0,-5.059672 4.375121,-9.161347 9.772101,-9.161347 5.39699,0 9.77211,4.101675 9.77211,9.161347 z"
+       transform="matrix(0.39232999,0,0,0.39232999,2.7759223,348.51688)" />
+    <path
+       d="m 48.89429,368.66823 c 5.64027,-0.12288 -1.576394,-15.65606 -17.248728,-15.73869 -17.106413,-0.0874 -20.606784,14.1062 -17.889254,14.36501 0,0 4.686435,0.64359 9.145469,1.8886 7.179202,2.02524 15.960694,-1.66145 19.421043,-2.19721 3.857353,-0.59722 6.022446,1.9568 6.57147,1.68229 z"
+       id="path1713"
+       sodipodi:nodetypes="cccccc"
+       style="opacity:0.3639576;fill:url(#linearGradient1078);fill-opacity:1;fill-rule:evenodd;stroke:none"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.89399999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path2766"
+       sodipodi:cx="107.08598"
+       sodipodi:cy="36.472969"
+       sodipodi:rx="9.7721043"
+       sodipodi:ry="9.1613474"
+       d="m 116.85809,36.472969 c 0,5.059673 -4.37512,9.161347 -9.77211,9.161347 -5.39698,0 -9.772101,-4.101674 -9.772101,-9.161347 0,-5.059672 4.375121,-9.161347 9.772101,-9.161347 5.39699,0 9.77211,4.101675 9.77211,9.161347 z"
+       transform="matrix(0.39232999,0,0,0.39232999,2.7759223,358.55642)" />
+  </g>
+</svg>
diff --git a/src/piano_composition-activity/resources/piano_composition/trebbleclef_button.svg b/src/piano_composition-activity/resources/piano_composition/trebbleclef_button.svg
new file mode 100644
index 0000000..9a2a699
--- /dev/null
+++ b/src/piano_composition-activity/resources/piano_composition/trebbleclef_button.svg
@@ -0,0 +1,275 @@
+<?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";
+   height="55.374386"
+   id="svg1"
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="trebbleclef_button.svg"
+   sodipodi:version="0.32"
+   width="50.00647"
+   version="1.1">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li />
+            <rdf:li>webpage</rdf:li>
+            <rdf:li>button</rdf:li>
+            <rdf:li>shape</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org";>
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Benji Park</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain"; />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain";>
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks"; />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient1702">
+      <stop
+         id="stop1703"
+         offset="0.0000000"
+         style="stop-color:#ffffff;stop-opacity:0.69072163;" />
+      <stop
+         id="stop1704"
+         offset="1.0000000"
+         style="stop-color:#ffffff;stop-opacity:0.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient1697">
+      <stop
+         id="stop1698"
+         offset="0.0000000"
+         style="stop-color:#0e56db;stop-opacity:1.0000000;" />
+      <stop
+         id="stop1699"
+         offset="1.0000000"
+         style="stop-color:#071176;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       cx="522.89532"
+       cy="481.86633"
+       fx="522.89911"
+       fy="473.03323"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1706"
+       inkscape:collect="always"
+       r="15.301119"
+       xlink:href="#linearGradient1702" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1076"
+       inkscape:collect="always"
+       x1="520.57166"
+       x2="520.57166"
+       xlink:href="#linearGradient1697"
+       y1="506.28723"
+       y2="466.2785" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1077"
+       inkscape:collect="always"
+       x1="522.94183"
+       x2="522.94183"
+       xlink:href="#linearGradient1697"
+       y1="469.49918"
+       y2="505.0845" />
+    <linearGradient
+       gradientTransform="matrix(0.19754276,0,0,0.08181161,-11.184797,337.28233)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1078"
+       inkscape:collect="always"
+       x1="213.82799"
+       x2="214.59154"
+       xlink:href="#linearGradient1702"
+       y1="183.48366"
+       y2="463.47311" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient5027"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient5029"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       r="117.14286"
+       fy="486.64789"
+       fx="605.71429"
+       cy="486.64789"
+       cx="605.71429"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3111"
+       xlink:href="#linearGradient5060"
+       inkscape:collect="always" />
+    <radialGradient
+       r="117.14286"
+       fy="486.64789"
+       fx="605.71429"
+       cy="486.64789"
+       cx="605.71429"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4147"
+       xlink:href="#linearGradient5060"
+       inkscape:collect="always" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="5.3828827"
+     inkscape:cy="23.823127"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="914"
+     inkscape:window-width="1276"
+     inkscape:window-x="177"
+     inkscape:window-y="51"
+     inkscape:zoom="9.8238822"
+     pagecolor="#ffffff"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-6.3060789,-350.04118)">
+    <path
+       d="m 544.06634,487.06226 c 0,11.47854 -9.3052,20.78374 -20.78375,20.78374 -11.47854,0 -20.78374,-9.3052 -20.78374,-20.78374 0,-11.47855 9.3052,-20.78375 20.78374,-20.78375 11.47855,0 20.78375,9.3052 20.78375,20.78375 z"
+       id="path1070"
+       sodipodi:cx="523.28259"
+       sodipodi:cy="487.06226"
+       sodipodi:rx="20.783747"
+       sodipodi:ry="20.783747"
+       sodipodi:type="arc"
+       style="fill:url(#linearGradient1076);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1077);stroke-width:1.3644532;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
+       transform="matrix(1.1646339,0,0,1.1646339,-578.12177,-192.20508)" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#000000;stroke:#000000;stroke-width:0.29537645"
+       d="m 31.819666,354.32899 c -1.60274,-0.0416 -3.477725,3.7862 -3.415292,7.19981 0.0144,1.03988 0.342608,3.14854 0.821519,5.79677 -3.019857,3.12531 -6.52597,6.33297 -6.52597,10.54125 -0.04822,3.85691 2.308775,8.77127 7.901315,8.72283 0.858369,-0.004 1.630701,-0.11325 2.316859,-0.29538 0.51118,2.80365 0.851071,5.01582 0.849207,6.03676 0.01805,4.02906 -5.275445,4.42781 -5.529075,2.11379 1.115513,-0.0384 2.003017,-0.92659 2.003017,-2.02149 0,-1.11948 -0.926869,-2.0307 -2.076865,-2.0307 -0.632555,0 -1.196203,0.27704 -1.578409,0.71074 -0.0088,0.01 -0.01921,0.0178 -0.02766,0.0276 -0.08639,0.0899 -0.158798,0.20099 -0.230763,0.32306 -0.235598,0.39964 -0.388739,0.97254 -0.39691,1.79072 0,3.37467 8.528997,5.5454 8.528997,-1.10767 0.01339,-0.89358 -0.371444,-3.16508 -0.932286,-6.02751 6.085677,-2.20259 4.556824,-11.2373 -1.043053,-11.2797 -0.434118,0.004 -0.852555,0.0549 -1.255346,0.15693 -0.318792,-1.53503 -0.626606,-3.0249 -0.895356,-4.39372 2.12641,-2.08876 3.982945,-4.79246 3.
 941426,-9.77511 0.0067,-3.57805 -1.185615,-6.4474 -2.455316,-6.48905 z m 0.37845,3.46145 c 0.725435,-0.0701 1.301505,0.60361 1.301505,2.08609 0.05871,2.54616 -1.724989,4.76962 -3.849119,7.00597 -0.203094,-1.22481 -0.336408,-2.21746 -0.35076,-2.80608 0.06028,-3.97743 1.689321,-6.16922 2.898374,-6.28598 z m -2.279932,13.19964 c 0.258978,1.33365 0.53886,2.73855 0.821519,4.15372 -3.706569,1.31873 -5.485237,6.4848 -0.230764,8.79669 -3.202802,-2.72664 -1.626207,-5.95405 0.683053,-6.51675 0.580584,2.8997 1.147619,5.75979 1.606107,8.23363 -0.622461,0.21657 -1.34881,0.34507 -2.196861,0.35075 -2.121297,0 -6.359825,-1.3508 -6.359825,-6.46135 0,-4.28117 2.967466,-6.02083 5.676771,-8.55669 z m 1.799954,6.34136 c 0.09259,-0.006 0.192505,-0.002 0.286141,0 3.858332,0 5.313705,6.12695 1.384575,8.08593 -0.488857,-2.4573 -1.081553,-5.27553 -1.670716,-8.08593 z"
+       id="path26" />
+    <path
+       d="m 48.89429,368.66823 c 5.64027,-0.12288 -1.576394,-15.65606 -17.248728,-15.73869 -17.106413,-0.0874 -20.606784,14.1062 -17.889254,14.36501 0,0 4.686435,0.64359 9.145469,1.8886 7.179202,2.02524 15.960694,-1.66145 19.421043,-2.19721 3.857353,-0.59722 6.022446,1.9568 6.57147,1.68229 z"
+       id="path1713"
+       sodipodi:nodetypes="cccccc"
+       style="opacity:0.20494702;fill:url(#linearGradient1078);fill-opacity:1;fill-rule:evenodd;stroke:none"
+       inkscape:connector-curvature="0" />
+    <g
+       style="display:inline;overflow:visible"
+       id="g5022"
+       transform="matrix(0.01369322,0,0,0.01903841,43.119162,399.17744)">
+      <rect
+         y="-150.69685"
+         x="-1559.2523"
+         height="478.35718"
+         width="1339.6335"
+         id="rect4173"
+         style="opacity:0.40206185;color:#000000;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <path
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc"
+         id="path5058"
+         d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z"
+         style="opacity:0.40206185;color:#000000;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <path
+         inkscape:connector-curvature="0"
+         style="opacity:0.40206185;color:#000000;fill:url(#radialGradient4147);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+         d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z"
+         id="path5018"
+         sodipodi:nodetypes="cccc" />
+    </g>
+  </g>
+</svg>
diff --git a/src/play_rhythm-activity/play_rhythm.py b/src/play_rhythm-activity/play_rhythm.py
index e6877ef..c17fbed 100644
--- a/src/play_rhythm-activity/play_rhythm.py
+++ b/src/play_rhythm-activity/play_rhythm.py
@@ -79,7 +79,6 @@ dialogue to\nenable the sound."), None)
 
         if hasattr(self, 'staff'):
             self.staff.clear()
-            self.staff.eraseAllNotes()
 
         if self.rootitem:
             self.rootitem.remove()
@@ -95,9 +94,6 @@ dialogue to\nenable the sound."), None)
                                                 + str( level % 6 + 1) + '.jpg')
             )
 
-        if hasattr(self, 'staff'):
-            self.staff.clear()
-
         goocanvas.Rect(parent=self.rootitem,
                        x=200, y=160, width=400, height=30,
                        stroke_color="black", fill_color='white',
@@ -278,28 +274,35 @@ dialogue to\nenable the sound."), None)
         gobject.timeout_add(self.songDuration,
                             self.updateBoard, 2)
 
-    def ok_event(self, widget=None, target=None, event=None):
-
+    def checkTiming(self, rhythmItem, recordedHit):
+        ''' returns true if the it is within the range for a rhythmItem '''
         def nearlyEqual(inputNum, correctNum, amountOfError):
             return abs(inputNum - correctNum) <= amountOfError
 
+        print "checkTiming " + str(rhythmItem) + " " + str(recordedHit)
+        if rhythmItem == 8 and not nearlyEqual(recordedHit, 0.25, 0.2):
+            return False
+        elif rhythmItem == 4 and not nearlyEqual(recordedHit, 0.5, 0.2):
+            return False
+        elif rhythmItem == 2 and not nearlyEqual(recordedHit, 1.0, 0.2):
+            return False
+        elif rhythmItem == 1 and not nearlyEqual(recordedHit, 2.0, 0.2):
+            return False
+        return True
+
+    def ok_event(self, widget=None, target=None, event=None):
+
         if len(self.recordedHits) != len(self.givenOption):
             self.doNotRemoveFromList = True
             self.afterBonus = self.tryagain
             gcompris.bonus.display(gcompris.bonus.LOOSE, gcompris.bonus.NOTE)
             return
 
-        for rhythmItem, recordedHit in zip(self.givenOption[:-1], self.recordedHits[1:]):
-            lost = False
-            if rhythmItem == 8 and not nearlyEqual(recordedHit, 0.25, 0.2):
-                lost = True
-            elif rhythmItem == 4 and not nearlyEqual(recordedHit, 0.5, 0.2):
-                lost = True
-            elif rhythmItem == 2 and not nearlyEqual(recordedHit, 1.0, 0.2):
-                lost = True
-            elif rhythmItem == 1 and not nearlyEqual(recordedHit, 2.0, 0.2):
-                lost = True
-            if lost:
+        print "ok_event"
+        print self.givenOption
+        print self.recordedHits
+        for rhythmItem, recordedHit in zip(self.givenOption[1:], self.recordedHits[1:]):
+            if not self.checkTiming(rhythmItem, recordedHit):
                 self.doNotRemoveFromList = True
                 self.afterBonus = self.tryagain
                 gcompris.bonus.display(gcompris.bonus.LOOSE, gcompris.bonus.NOTE)
@@ -319,6 +322,9 @@ dialogue to\nenable the sound."), None)
         self.remainingNotes = self.givenOption
         self.updateBoard(2)
 
+        for note in self.staff.noteList:
+            note.statusNone()
+
     def updateBoard(self, currentStep):
 
         if not self.running:
@@ -413,8 +419,16 @@ dialogue to\nenable the sound."), None)
         self.readyForFirstDrumBeat = True
         self.updateBoard(2)
 
+        for note in self.staff.noteList:
+            note.statusNone()
+
     def record_click(self, widget=None, target=None, event=None):
 
+        # FIXME HOW TO SKIP DOUBLE CLICKS
+        print "===="
+        if event.type == gtk.gdk._2BUTTON_PRESS:
+            return True
+
         if self.readyForFirstDrumBeat and self.playingLine:
             self.staff.playComposition(playingLineOnly=True)
 
@@ -440,10 +454,21 @@ dialogue to\nenable the sound."), None)
         if self.recordedHits == []:
             self.startTime = time.time()
             self.recordedHits.append(0.0)
+            note_on_staff = self.staff.noteList[0]
+            note_on_staff.statusPassed(self.rootitem)
         else:
-            self.recordedHits.append(time.time() - self.startTime)
+            lap = time.time() - self.startTime
+            self.recordedHits.append(lap)
             self.startTime = time.time()
 
+            if len(self.recordedHits) <= len(self.staff.noteList):
+                note_on_staff = self.staff.noteList[ len(self.recordedHits) - 1 ]
+                rhythmItem = self.givenOption[len(self.recordedHits) - 1]
+                if self.checkTiming(rhythmItem, lap):
+                    note_on_staff.statusPassed(self.rootitem)
+                else:
+                    note_on_staff.statusFailed(self.rootitem)
+
     def end(self):
         self.running = False
         self.staff.eraseAllNotes()



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