Codebase list sugar-pippy-activity / 85607ec
New upstream version 75 Jonas Smedegaard 4 years ago
154 changed file(s) with 1921 addition(s) and 4619 deletion(s). Raw diff Collapse all Expand all
0 75
1
2 * Port to Python 3 - inline template and #! (Srevin Saju),
3 * New icon (Srevin Saju),
4 * Set focus on empty page (Martin Abente),
5 * Port to GTK 3 - query module (Ibiam Chihurumnaya),
6 * Remove Box2D binaries (Ibiam Chihurumnaya),
7 * Port to Python 3 - missed #! (James Cameron),
8
9 74
10
11 * Fix keep error in a shared instance (James Cameron),
12 * Fix harmless mime_type log error (James Cameron),
13 * Fix data loss of notebook tab label during collaboration (James Cameron),
14 * Use logging consistently (James Cameron),
15 * Port CollabWrapper to Python 3 (James Cameron),
16 * Share renaming of notebook tabs (James Cameron),
17 * Share closing of notebook tabs (James Cameron),
18 * Add notebook tab close confirmation alert (James Cameron),
19 * Avoid close confirmation on unchanged examples or empty tabs (James Cameron),
20 * Grab focus for the text view on startup (James Cameron),
21 * Rename clear button (James Cameron).
22
23 73
24
25 * Update Collabwrapper to favour TelepathyGLib (Aniket Mathur),
26 * Remove empty locale files (James Cameron),
27 * Port to Python 3 (Aniket Mathur, James Cameron),
28 * Using default acclerator (Aniket Mathur),
29 * Define PyGObject versions before import (Aniket Mathur),
30 * Add dark mode for embedded terminal and source view (James Cameron),
31 * Fix example ordering (James Cameron),
32 * Fix GTK deprecation warnings in tutorials (James Cameron),
33 * Port from GObject to GLib in tutorials (James Cameron).
34
035 72
136
237 * Fix license inconsistencies, remove groupthink (James Cameron),
99
1010 * [How to Get Sugar on sugarlabs.org](https://sugarlabs.org/),
1111 * [How to use Sugar](https://help.sugarlabs.org/),
12 * [How to use Pippy](https://help.sugarlabs.org/pippy.html)
12 * [How to use Pippy](https://help.sugarlabs.org/pippy.html).
13
14 How to upgrade?
15 ===============
16
17 On Sugar desktop systems;
18 * use [My Settings](https://help.sugarlabs.org/my_settings.html), [Software Update](https://help.sugarlabs.org/my_settings.html#software-update).
19
20 How to integrate?
21 =================
22
23 On Debian and Ubuntu systems;
24
25 ```
26 apt install sugar-pippy-activity
27 ```
28
29 On Fedora systems;
30
31 ```
32 dnf install sugar-pippy
33 ```
34
35 Pippy depends on Python, [Sugar
36 Toolkit](https://github.com/sugarlabs/sugar-toolkit-gtk3), Cairo,
37 Telepathy, GTK+ 3,
38 [GtkSourceView](https://wiki.gnome.org/Projects/GtkSourceView), Pango,
39 Vte, Box2d and Pygame.
40
41 Pippy is started by [Sugar](https://github.com/sugarlabs/sugar).
42
43 Pippy is packaged by Linux distributions;
44 * [Fedora package sugar-pippy](https://src.fedoraproject.org/rpms/sugar-pippy)
45 * [Debian package sugar-pippy-activity](https://packages.debian.org/sugar-pippy-activity).
46
0 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
1 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
2 <!ENTITY ns_svg "http://www.w3.org/2000/svg">
3 <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
4 <!ENTITY stroke_color "#000000">
5 <!ENTITY fill_color "#FFFFFF">
6 ]><!--"-->
7 <svg version="1.1" id="Pippy_activity" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="47.585" height="49.326"
8 viewBox="0 0 47.585 49.326" overflow="visible" enable-background="new 0 0 47.585 49.326" xml:space="preserve">
9
10 <path
11 fill="&fill_color;" stroke="&stroke_color;" stroke-width="2" d="M 30.689595,16.460324 L 24.320145,12.001708 L 2.7550028,23.830689 L 23.319231,38.662412 L 45.157349,26.742438 L 36.877062,21.100925" id="path3195" />
12 <path
13 fill="&fill_color;" stroke="&stroke_color;" stroke-width="2"
14 nodetypes="cscscssscsssssccc"
15 d="M 12.201296,21.930888 C 13.063838,20.435352 17.035411,18.617621 20.372026,18.965837 C 22.109464,19.147161 24.231003,20.786115 24.317406,21.584638 C 24.401593,22.43057 25.386617,24.647417 26.88611,24.600494 C 28.114098,24.562065 28.61488,23.562481 28.992123,22.444401 C 28.992123,22.444401 28.564434,17.493894 31.897757,15.363536 C 32.836646,14.763482 35.806711,14.411448 37.249047,15.221493 C 38.691382,16.031536 37.648261,19.495598 36.785717,20.991133 C 35.923174,22.48667 32.967872,24.980813 32.967872,24.980813 C 31.242783,27.971884 29.235995,28.5001 26.338769,28.187547 C 23.859153,27.920046 22.434219,26.128159 21.837191,24.708088 C 21.323835,23.487033 20.047743,22.524906 18.388178,22.52176 C 17.218719,22.519542 14.854476,23.017137 16.212763,25.620664 C 16.687174,26.53 18.919175,28.917592 21.08204,29.521929 C 22.919903,30.035455 26.713699,31.223552 30.30027,31.418089 C 26.770532,33.262079 21.760623,32.530604 18.909599,31.658168 C 17.361253,30.887002 9.0350995,26.651992 12.201296,21.930888 z "
16 id="path2209" />
17 <path
18 fill="&fill_color;" stroke="&stroke_color;" stroke-width="1"
19 d="M 37.832194,18.895786 C 36.495131,19.851587 34.017797,22.097672 32.3528,21.069911"
20 id="path2211"
21 transform-center-y="-3.6171625"
22 transform-center-x="-0.50601649" />
23 <circle
24 fill="&stroke_color;" stroke="none" stroke-width="0"
25 cx="33.926998"
26 cy="6.073"
27 r="1.927"
28 id="circle2213"
29 transform="matrix(0.269108,-0.4665976,-0.472839,-0.2655557,26.503175,35.608682)"
30 />
31 </svg>
0 <?xml version="1.0" ?><!-- Created with Inkscape (http://www.inkscape.org/) --><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [
1 <!ENTITY stroke_color "#666666">
2 <!ENTITY fill_color "#ffffff">
3 ]><svg height="55" id="svg1756" inkscape:version="0.92.4 (unknown)" sodipodi:docname="pippy-collect.svg" version="1.1" viewBox="0 0 14.552083 14.552084" width="55" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg">
4 <defs id="defs1750"/>
5 <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="24.258817" inkscape:cy="26.682316" inkscape:document-units="mm" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:snap-global="false" inkscape:window-height="702" inkscape:window-maximized="1" inkscape:window-width="1366" inkscape:window-x="0" inkscape:window-y="36" inkscape:zoom="11.2" pagecolor="#ffffff" showgrid="false" units="px"/>
6 <metadata id="metadata1753">
7 <rdf:RDF>
8 <cc:Work rdf:about="">
9 <dc:format>image/svg+xml</dc:format>
10 <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
11 <dc:title/>
12 </cc:Work>
13 </rdf:RDF>
14 </metadata>
15 <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1" transform="translate(0,-282.4479)">
16 <g id="g3005" transform="matrix(0.85087045,0,0,0.85087045,-1.071627,35.113386)">
17 <path d="m 9.336117,304.44728 c 0,0 -0.402123,0 -0.402123,-0.40212 v -2.6138 l 3.920699,-2.21167 3.920698,2.21167 v 2.6138 c 0,0 0,0.40212 -0.402123,0.40212 z" id="path2" inkscape:connector-curvature="0" style="fill:none;stroke:&stroke_color;;stroke-width:0.35185757;stroke-opacity:1"/>
18 <path d="m 11.888804,298.70157 -3.719326,2.07466 c -0.426633,0.22817 -0.254659,0.87592 0.228966,0.86242 v 6e-4 c 0.07708,-0.002 0.152487,-0.0228 0.219248,-0.0613 l 4.210661,-2.35221 4.083728,2.27812 c 0.547884,0.35316 1.033868,-0.51936 0.445177,-0.79926 l -3.588141,-2.0042 -0.938335,-0.52414 z" id="line14" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccc" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:&stroke_color;;stroke-width:0.30465612;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/>
19 <path d="m 10.912829,295.40166 v 3.82701 l 0.975715,-0.52736 0.941978,-0.52534 0.938334,0.52413 0.952849,0.51863 v -3.81707 z" id="path16" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccc" style="fill:none;stroke:&stroke_color;;stroke-width:0.34670374;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
20 <path d="m 10.860126,295.40432 2.035524,-1.17956 2.035523,1.17956 z" id="path18" inkscape:connector-curvature="0" style="fill:&stroke_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.46178851;stroke-opacity:1"/>
21 <g id="g891" transform="translate(-10.532315,5.6540353)">
22 <path d="M 37.041016 16.658203 A 2.1014215 2.1014215 0 0 0 34.941406 18.759766 L 34.941406 20.216797 L 34.939453 20.216797 A 0.80831983 0.80831983 0 0 0 34.857422 20.216797 A 0.80831983 0.80831983 0 0 0 34.939453 21.830078 L 36.25 21.830078 A 0.80823902 0.80823902 0 0 1 36.25 21.832031 A 0.80823902 0.80823902 0 0 0 36.234375 21.994141 A 0.80823902 0.80823902 0 0 0 37.041016 22.800781 A 0.80823902 0.80823902 0 0 0 37.849609 21.994141 A 0.80823902 0.80823902 0 0 0 37.832031 21.830078 L 39.140625 21.830078 A 0.80831983 0.80831983 0 1 0 39.142578 20.216797 L 39.142578 18.759766 A 2.1014215 2.1014215 0 0 0 37.041016 16.658203 z " id="circle20" style="fill:&stroke_color;;stroke:none;stroke-width:1.29318237;fill-opacity:1" transform="matrix(0.31095607,0,0,0.31095607,11.791763,285.03007)"/>
23 </g>
24 </g>
25 <path d="m 10.817019,294.04825 v -1.96782 c 0,0 0,-0.35779 -0.357786,-0.35779 H 9.2069825 c 0,0 -0.357786,0 -0.357786,0.35779 v 1.96782 z" id="path4" inkscape:connector-curvature="0" style="fill:none;stroke:&stroke_color;;stroke-width:0.20216294;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
26 <path d="m 4.9039105,289.69667 c 0,0 1.6617248,0.17132 1.74738,-0.68524 0.085657,-0.85657 -0.4968027,-1.62747 -0.8565581,-1.74739 -0.3597547,-0.11991 -1.4390195,-0.23983 -1.970086,0.0514 -0.5310671,0.29123 -0.9764776,0.95935 -1.0963957,1.26772 -0.1199185,0.30836 -0.2227053,1.16491 0,1.66172 0.2227053,0.4968 1.1306581,1.38762 1.1306581,1.38762 0,0 -1.2334452,0.10279 -1.7816431,0.58247 -0.5481981,0.47967 -0.9593464,0.75376 -0.9079528,1.45614 0.051393,0.70238 0.5824601,1.21631 1.130658,1.3191 0.5481979,0.10279 1.6617249,0.32549 2.1756602,0.22271 0.5139353,-0.10279 1.7131176,-0.18844 2.004349,-0.56533 0.2912293,-0.37688 0.4111475,-1.13065 0.5653281,-1.23344 0.1541799,-0.10279 0.3597547,0.10279 0.394017,0.41115 0.034259,0.30836 0.051393,0.63385 0.2398373,0.73664 0.1884422,0.10279 0.7195097,0.56533 1.2677068,0.34262 0.5481978,-0.22271 0.8736907,-0.58246 0.8565601,-0.95935 -0.017136,-0.37688 -0.034256,-1.30196 -0.9422155,-1.66172 -0.9079526,-0.35976 -2.141398,-0.51394 -2.141398,-0.51394 0,0 -0.2227053,-0.47967 -0.6681159,-0.71951 -0.4454113,-0.23983 -1.0621336,-0.58246 -1.1649207,-0.7709 -0.102787,-0.18844 0.017133,-0.58246 0.017133,-0.58246 z" id="path1265-5" inkscape:connector-curvature="0" style="fill:&fill_color;;fill-opacity:1;stroke:none;stroke-width:0.03391801px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
27 <ellipse cx="5.1582479" cy="288.17889" id="path894-6-7-3-6" inkscape:export-xdpi="96" inkscape:export-ydpi="96" rx="0.22242011" ry="0.22327726" style="fill:#fffff8;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.26687196;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
28 <path d="m 4.6067138,288.7958 c 0,0 0.4625417,0.32549 0.8565588,0.39402 0.394017,0.0685 0.9336487,-0.0343 0.9336487,-0.0343" id="path896-2-0-6-5" inkscape:connector-curvature="0" inkscape:export-xdpi="96" inkscape:export-ydpi="96" sodipodi:nodetypes="csc" style="fill:none;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.29035962;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
29 <path d="m 4.9039105,289.69667 c 0,0 -0.4282794,0.49681 0.4625425,0.94221 0.8908204,0.44542 1.8249669,1.16096 1.6445921,2.60395 -0.1803733,1.44298 -0.8051645,1.66172 -1.6959864,1.8159 -0.8908211,0.15418 -2.9979565,0.35976 -3.7859911,-0.59959 -0.78803441,-0.95935 0.1027873,-2.19279 0.9422152,-2.50115 0.8394284,-0.30837 1.5760689,-0.25697 1.5760689,-0.25697" id="path1042-6" inkscape:connector-curvature="0" sodipodi:nodetypes="cszcscc" style="fill:none;stroke:&stroke_color;;stroke-width:0.63035321;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
30 <path d="m 3.180093,285.5608 -1.2544663,-0.37386 3.0836123,-1.2677 2.9294333,1.38761 -1.5779499,0.55537" id="path1078-9" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" style="fill:#ffffff;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.63035321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
31 <path d="m 2.1937405,285.52498 v 1.29549" id="path1084-74" inkscape:connector-curvature="0" style="fill:none;stroke:&stroke_color;;stroke-width:0.44093415;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
32 <path d="m 3.8263228,289.26619 c 2.3104813,1.16084 2.853264,-0.10207 2.8875264,-0.616 0.034267,-0.51395 -0.7623377,-1.57179 -1.7473807,-1.61034 -0.9850437,-0.0385 -1.2578224,0.10698 -1.8019349,0.74673 -0.8413184,0.98919 -0.9163958,2.91377 0.8479506,3.9248 2.1562163,1.23558 -0.7268151,1.52631 -0.7268151,1.52631" id="path50-5-2-9-7" inkscape:connector-curvature="0" inkscape:export-xdpi="96" inkscape:export-ydpi="96" sodipodi:nodetypes="cszssc" style="fill:none;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.63035321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
33 <path d="m 3.439233,287.49884 c 0,0 0.8383264,-0.38482 1.481544,-0.35466 0.6432176,0.0301 1.1180302,0.34738 1.1180302,0.34738 l 0.1623221,-2.03992 c 0,0 -0.8079894,-0.52857 -1.4110059,-0.43812 -0.6030165,0.0904 -1.3872311,0.48657 -1.3872311,0.48657 z" id="path2757" inkscape:connector-curvature="0" style="fill:#fffff8;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.63035321;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
34 <path d="m 1.9839533,286.89272 -0.2079012,0.32629" id="path1084-7-52" inkscape:connector-curvature="0" style="fill:none;stroke:&stroke_color;;stroke-width:0.35511744;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
35 <path d="M 2.6161924,287.12525 2.343088,286.85373" id="path1084-7-3-5" inkscape:connector-curvature="0" style="fill:none;stroke:&stroke_color;;stroke-width:0.37128088;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
36 <path d="m 2.1947366,287.11969 0.021518,0.3863" id="path1084-7-5-4" inkscape:connector-curvature="0" style="fill:none;stroke:&stroke_color;;stroke-width:0.35511744;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
37 <path d="m 8.2650379,292.75546 0.140922,-1.6099 -0.545258,1.43259 z" id="path2755" inkscape:connector-curvature="0" sodipodi:nodetypes="cccc" style="fill:&fill_color;;fill-opacity:1;stroke:none;stroke-width:0.22512613px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
38 <path d="m 6.8027644,291.76383 c 0,0 0.393592,0.0208 0.8919079,0.12169 m 0.9535322,0.23756 c 0.4165504,0.15664 0.6652564,0.37174 0.8869837,0.69431 0.4202588,0.61139 0.4019938,1.71961 -0.4475934,2.01154 -0.7427274,0.25522 -1.5418069,-0.0685 -1.713118,-0.95933 -0.1713117,-0.89083 1.2322622,-3.42533 1.2322622,-3.42533" id="path1199-7" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccc" style="fill:none;stroke:&stroke_color;;stroke-width:0.63035321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
39 <path d="m 8.6659409,290.38215 c -0.2162241,1.23387 -0.1750284,2.14761 -0.064385,2.8701" id="path1154-4" inkscape:connector-curvature="0" sodipodi:nodetypes="cc" style="fill:none;stroke:&stroke_color;;stroke-width:0.45260674;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
40 </g>
41 </svg>
0 <?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [
1 <!ENTITY stroke_color "#010101">
2 <!ENTITY fill_color "#FFFFFF">
3 ]><svg enable-background="new 0 0 55 55" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="activity-pippy">
4 <path d="M28.497,48.507 c5.988,0,14.88-2.838,14.88-11.185c0-9.285-7.743-10.143-10.954-11.083c-3.549-0.799-5.913-1.914-6.055-3.455 c-0.243-2.642,1.158-3.671,3.946-3.671c0,0,6.632,3.664,12.266,0.74c1.588-0.823,4.432-4.668,4.432-7.32 c0-2.653-9.181-5.719-11.967-5.719c-2.788,0-5.159,3.847-5.159,3.847c-5.574,0-11.149,5.306-11.149,10.612 c0,5.305,5.333,9.455,11.707,10.612c2.963,0.469,5.441,2.22,4.878,5.438c-0.457,2.613-2.995,5.306-8.361,5.306 c-4.252,0-13.3-0.219-14.745-4.079c-0.929-2.486,0.168-5.205,1.562-5.205l-0.027-0.16c-1.42-0.158-5.548,0.16-5.548,5.465 C8.202,45.452,17.347,48.507,28.497,48.507z" fill="&fill_color;" stroke="&stroke_color;" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.5"/>
5 <path d="M42.579,19.854c-2.623-0.287-6.611-2-7.467-5.022" fill="none" stroke="&stroke_color;" stroke-linecap="round" stroke-width="3"/>
6 <circle cx="35.805" cy="10.96" fill="&stroke_color;" r="1.676"/>
7 </g></svg><!-- " -->
0 <?xml version="1.0" ?><!-- Created with Inkscape (http://www.inkscape.org/) --><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [
1 <!ENTITY stroke_color "#666666">
2 <!ENTITY fill_color "#ffffff">
3 ]><svg height="55" id="svg1756" inkscape:version="0.92.4 (unknown)" sodipodi:docname="pippy-collect.svg" version="1.1" viewBox="0 0 14.552083 14.552084" width="55" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg">
4 <defs id="defs1750"/>
5 <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="24.258817" inkscape:cy="26.682316" inkscape:document-units="mm" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:snap-global="false" inkscape:window-height="702" inkscape:window-maximized="1" inkscape:window-width="1366" inkscape:window-x="0" inkscape:window-y="36" inkscape:zoom="11.2" pagecolor="#ffffff" showgrid="false" units="px"/>
6 <metadata id="metadata1753">
7 <rdf:RDF>
8 <cc:Work rdf:about="">
9 <dc:format>image/svg+xml</dc:format>
10 <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
11 <dc:title/>
12 </cc:Work>
13 </rdf:RDF>
14 </metadata>
15 <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1" transform="translate(0,-282.4479)">
16 <g id="g3005" transform="matrix(0.85087045,0,0,0.85087045,-1.071627,35.113386)">
17 <path d="m 9.336117,304.44728 c 0,0 -0.402123,0 -0.402123,-0.40212 v -2.6138 l 3.920699,-2.21167 3.920698,2.21167 v 2.6138 c 0,0 0,0.40212 -0.402123,0.40212 z" id="path2" inkscape:connector-curvature="0" style="fill:none;stroke:&stroke_color;;stroke-width:0.35185757;stroke-opacity:1"/>
18 <path d="m 11.888804,298.70157 -3.719326,2.07466 c -0.426633,0.22817 -0.254659,0.87592 0.228966,0.86242 v 6e-4 c 0.07708,-0.002 0.152487,-0.0228 0.219248,-0.0613 l 4.210661,-2.35221 4.083728,2.27812 c 0.547884,0.35316 1.033868,-0.51936 0.445177,-0.79926 l -3.588141,-2.0042 -0.938335,-0.52414 z" id="line14" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccc" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:&stroke_color;;stroke-width:0.30465612;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/>
19 <path d="m 10.912829,295.40166 v 3.82701 l 0.975715,-0.52736 0.941978,-0.52534 0.938334,0.52413 0.952849,0.51863 v -3.81707 z" id="path16" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccc" style="fill:none;stroke:&stroke_color;;stroke-width:0.34670374;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
20 <path d="m 10.860126,295.40432 2.035524,-1.17956 2.035523,1.17956 z" id="path18" inkscape:connector-curvature="0" style="fill:&stroke_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.46178851;stroke-opacity:1"/>
21 <g id="g891" transform="translate(-10.532315,5.6540353)">
22 <path d="M 37.041016 16.658203 A 2.1014215 2.1014215 0 0 0 34.941406 18.759766 L 34.941406 20.216797 L 34.939453 20.216797 A 0.80831983 0.80831983 0 0 0 34.857422 20.216797 A 0.80831983 0.80831983 0 0 0 34.939453 21.830078 L 36.25 21.830078 A 0.80823902 0.80823902 0 0 1 36.25 21.832031 A 0.80823902 0.80823902 0 0 0 36.234375 21.994141 A 0.80823902 0.80823902 0 0 0 37.041016 22.800781 A 0.80823902 0.80823902 0 0 0 37.849609 21.994141 A 0.80823902 0.80823902 0 0 0 37.832031 21.830078 L 39.140625 21.830078 A 0.80831983 0.80831983 0 1 0 39.142578 20.216797 L 39.142578 18.759766 A 2.1014215 2.1014215 0 0 0 37.041016 16.658203 z " id="circle20" style="fill:&stroke_color;;stroke:none;stroke-width:1.29318237;fill-opacity:1" transform="matrix(0.31095607,0,0,0.31095607,11.791763,285.03007)"/>
23 </g>
24 </g>
25 <path d="m 10.817019,294.04825 v -1.96782 c 0,0 0,-0.35779 -0.357786,-0.35779 H 9.2069825 c 0,0 -0.357786,0 -0.357786,0.35779 v 1.96782 z" id="path4" inkscape:connector-curvature="0" style="fill:none;stroke:&stroke_color;;stroke-width:0.20216294;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
26 <path d="m 4.9039105,289.69667 c 0,0 1.6617248,0.17132 1.74738,-0.68524 0.085657,-0.85657 -0.4968027,-1.62747 -0.8565581,-1.74739 -0.3597547,-0.11991 -1.4390195,-0.23983 -1.970086,0.0514 -0.5310671,0.29123 -0.9764776,0.95935 -1.0963957,1.26772 -0.1199185,0.30836 -0.2227053,1.16491 0,1.66172 0.2227053,0.4968 1.1306581,1.38762 1.1306581,1.38762 0,0 -1.2334452,0.10279 -1.7816431,0.58247 -0.5481981,0.47967 -0.9593464,0.75376 -0.9079528,1.45614 0.051393,0.70238 0.5824601,1.21631 1.130658,1.3191 0.5481979,0.10279 1.6617249,0.32549 2.1756602,0.22271 0.5139353,-0.10279 1.7131176,-0.18844 2.004349,-0.56533 0.2912293,-0.37688 0.4111475,-1.13065 0.5653281,-1.23344 0.1541799,-0.10279 0.3597547,0.10279 0.394017,0.41115 0.034259,0.30836 0.051393,0.63385 0.2398373,0.73664 0.1884422,0.10279 0.7195097,0.56533 1.2677068,0.34262 0.5481978,-0.22271 0.8736907,-0.58246 0.8565601,-0.95935 -0.017136,-0.37688 -0.034256,-1.30196 -0.9422155,-1.66172 -0.9079526,-0.35976 -2.141398,-0.51394 -2.141398,-0.51394 0,0 -0.2227053,-0.47967 -0.6681159,-0.71951 -0.4454113,-0.23983 -1.0621336,-0.58246 -1.1649207,-0.7709 -0.102787,-0.18844 0.017133,-0.58246 0.017133,-0.58246 z" id="path1265-5" inkscape:connector-curvature="0" style="fill:&fill_color;;fill-opacity:1;stroke:none;stroke-width:0.03391801px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
27 <ellipse cx="5.1582479" cy="288.17889" id="path894-6-7-3-6" inkscape:export-xdpi="96" inkscape:export-ydpi="96" rx="0.22242011" ry="0.22327726" style="fill:#fffff8;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.26687196;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
28 <path d="m 4.6067138,288.7958 c 0,0 0.4625417,0.32549 0.8565588,0.39402 0.394017,0.0685 0.9336487,-0.0343 0.9336487,-0.0343" id="path896-2-0-6-5" inkscape:connector-curvature="0" inkscape:export-xdpi="96" inkscape:export-ydpi="96" sodipodi:nodetypes="csc" style="fill:none;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.29035962;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
29 <path d="m 4.9039105,289.69667 c 0,0 -0.4282794,0.49681 0.4625425,0.94221 0.8908204,0.44542 1.8249669,1.16096 1.6445921,2.60395 -0.1803733,1.44298 -0.8051645,1.66172 -1.6959864,1.8159 -0.8908211,0.15418 -2.9979565,0.35976 -3.7859911,-0.59959 -0.78803441,-0.95935 0.1027873,-2.19279 0.9422152,-2.50115 0.8394284,-0.30837 1.5760689,-0.25697 1.5760689,-0.25697" id="path1042-6" inkscape:connector-curvature="0" sodipodi:nodetypes="cszcscc" style="fill:none;stroke:&stroke_color;;stroke-width:0.63035321;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
30 <path d="m 3.180093,285.5608 -1.2544663,-0.37386 3.0836123,-1.2677 2.9294333,1.38761 -1.5779499,0.55537" id="path1078-9" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" style="fill:#ffffff;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.63035321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
31 <path d="m 2.1937405,285.52498 v 1.29549" id="path1084-74" inkscape:connector-curvature="0" style="fill:none;stroke:&stroke_color;;stroke-width:0.44093415;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
32 <path d="m 3.8263228,289.26619 c 2.3104813,1.16084 2.853264,-0.10207 2.8875264,-0.616 0.034267,-0.51395 -0.7623377,-1.57179 -1.7473807,-1.61034 -0.9850437,-0.0385 -1.2578224,0.10698 -1.8019349,0.74673 -0.8413184,0.98919 -0.9163958,2.91377 0.8479506,3.9248 2.1562163,1.23558 -0.7268151,1.52631 -0.7268151,1.52631" id="path50-5-2-9-7" inkscape:connector-curvature="0" inkscape:export-xdpi="96" inkscape:export-ydpi="96" sodipodi:nodetypes="cszssc" style="fill:none;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.63035321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
33 <path d="m 3.439233,287.49884 c 0,0 0.8383264,-0.38482 1.481544,-0.35466 0.6432176,0.0301 1.1180302,0.34738 1.1180302,0.34738 l 0.1623221,-2.03992 c 0,0 -0.8079894,-0.52857 -1.4110059,-0.43812 -0.6030165,0.0904 -1.3872311,0.48657 -1.3872311,0.48657 z" id="path2757" inkscape:connector-curvature="0" style="fill:#fffff8;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.63035321;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
34 <path d="m 1.9839533,286.89272 -0.2079012,0.32629" id="path1084-7-52" inkscape:connector-curvature="0" style="fill:none;stroke:&stroke_color;;stroke-width:0.35511744;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
35 <path d="M 2.6161924,287.12525 2.343088,286.85373" id="path1084-7-3-5" inkscape:connector-curvature="0" style="fill:none;stroke:&stroke_color;;stroke-width:0.37128088;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
36 <path d="m 2.1947366,287.11969 0.021518,0.3863" id="path1084-7-5-4" inkscape:connector-curvature="0" style="fill:none;stroke:&stroke_color;;stroke-width:0.35511744;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
37 <path d="m 8.2650379,292.75546 0.140922,-1.6099 -0.545258,1.43259 z" id="path2755" inkscape:connector-curvature="0" sodipodi:nodetypes="cccc" style="fill:&fill_color;;fill-opacity:1;stroke:none;stroke-width:0.22512613px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
38 <path d="m 6.8027644,291.76383 c 0,0 0.393592,0.0208 0.8919079,0.12169 m 0.9535322,0.23756 c 0.4165504,0.15664 0.6652564,0.37174 0.8869837,0.69431 0.4202588,0.61139 0.4019938,1.71961 -0.4475934,2.01154 -0.7427274,0.25522 -1.5418069,-0.0685 -1.713118,-0.95933 -0.1713117,-0.89083 1.2322622,-3.42533 1.2322622,-3.42533" id="path1199-7" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccc" style="fill:none;stroke:&stroke_color;;stroke-width:0.63035321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
39 <path d="m 8.6659409,290.38215 c -0.2162241,1.23387 -0.1750284,2.14761 -0.064385,2.8701" id="path1154-4" inkscape:connector-curvature="0" sodipodi:nodetypes="cc" style="fill:none;stroke:&stroke_color;;stroke-width:0.45260674;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
40 </g>
41 </svg>
00 [Activity]
11 name = Pippy
22 bundle_id = org.laptop.Pippy
3 exec = sugar-activity pippy_app.PippyActivity
3 exec = sugar-activity3 pippy_app.PippyActivity
44 icon = activity-icon
5 activity_version = 72
5 activity_version = 75
66 max_participants = 4
77 mime_types = text/x-python
88 show_launcher = yes
2020 from gettext import gettext as _
2121
2222 from gi import require_version
23 require_version('Gdk', '3.0')
24 require_version('Gtk', '3.0')
25 from gi.repository import Gdk
2326 from gi.repository import Gtk
24 from gi.repository import Gdk
2527 from gi.repository import Pango
2628 try:
2729 require_version('Vte', '2.91')
6769 'icon-color': profile.get_color().to_string(),
6870 'mime_type': 'text/x-python',
6971 }
70 for k, v in metadata.items():
72 for k, v in list(metadata.items()):
7173 jobject.metadata[k] = v # dict.update method is missing =(
7274 jobject.file_path = os.path.join(get_bundle_path(), 'pippy_app.py')
7375 datastore.write(jobject)
122124 separator.show()
123125
124126 stop_button = StopButton(self)
125 stop_button.props.accelerator = '<Ctrl>q'
126127 toolbox.toolbar.insert(stop_button, -1)
127128 stop_button.show()
128129
176177 self._pid = self._vte.fork_command_full(
177178 Vte.PtyFlags.DEFAULT,
178179 bundle_path,
179 ['/bin/sh', '-c', 'python %s/pippy_app.py; sleep 1' % bundle_path],
180 ['/bin/sh', '-c', 'python3 %s/pippy_app.py; sleep 1' % bundle_path],
180181 ["PYTHONPATH=%s/library" % bundle_path],
181182 GLib.SpawnFlags.DO_NOT_REAP_CHILD,
182183 None,
218219 sys.path[0:0] = [library_path]
219220 g = globals()
220221 g['__name__'] = '__main__'
221 execfile(pippy_app_path, g, g) # start pygame
222 exec(compile(open(pippy_app_path, "rb").read(), pippy_app_path, 'exec'), g, g) # start pygame
222223 sys.exit(0)
223224 super(PyGameActivity, self).__init__(handle)
224225 from gi.repository import GObject
236237 toolbox.toolbar.insert(separator, -1)
237238 separator.show()
238239 stop_button = StopButton(self)
239 stop_button.props.accelerator = '<Ctrl>q'
240240 toolbox.toolbar.insert(stop_button, -1)
241241 stop_button.show()
242242 toolbox.toolbar.show_all()
1515 # Foundation, 51 Franklin Street, Suite 500 Boston, MA 02110-1335 USA
1616
1717 '''
18 The wrapper module provides an abstraction over the sugar
18 The wrapper module provides an abstraction over the Sugar
1919 collaboration system.
2020
2121 Using CollabWrapper
2222 -------------------
23 1. Implement the `get_data` and `set_data` methods in your activity
24 class::
23 1. Add `get_data` and `set_data` methods to the activity class::
2524
2625 def get_data(self):
2726 # return plain python objects - things that can be encoded
3433 # data will be the same object returned by get_data
3534 self._entry.set_text(data.get('text'))
3635
37 2. Make your CollabWrapper instance::
36 2. Make a CollabWrapper instance::
3837
3938 def __init__(self, handle):
4039 sugar3.activity.activity.Activity.__init__(self, handle)
4140 self._collab = CollabWrapper(self)
4241 self._collab.connect('message', self.__message_cb)
4342
44 # setup your activity
43 # setup your activity here
4544
4645 self._collab.setup()
4746
48 3. Post any changes to the CollabWrapper. The changes will be sent to
49 other users if any are connected::
47 3. Post any changes of shared state to the CollabWrapper. The changes
48 will be sent to other buddies if any are connected, for example::
5049
5150 def __entry_changed_cb(self, *args):
5251 self._collab.post(dict(
5453 new_text=self._entry.get_text()
5554 ))
5655
57 4. Handle incoming messages::
58
59 def __message_cb(self, collab, buddy, message):
56 4. Handle incoming messages, for example::
57
58 def __message_cb(self, collab, buddy, msg):
6059 action = msg.get('action')
6160 if action == 'entry_changed':
6261 self._entry.set_text(msg.get('new_text'))
6867 import socket
6968 from gettext import gettext as _
7069
70 import gi
71 gi.require_version('TelepathyGLib', '0.12')
7172 from gi.repository import GObject
7273 from gi.repository import Gio
7374 from gi.repository import GLib
75 from gi.repository import TelepathyGLib
7476 import dbus
75
76 from telepathy.interfaces import \
77 CHANNEL_INTERFACE, \
78 CHANNEL_INTERFACE_GROUP, \
79 CHANNEL_TYPE_TEXT, \
80 CHANNEL_TYPE_FILE_TRANSFER, \
81 CONN_INTERFACE_ALIASING, \
82 CHANNEL, \
83 CLIENT
84 from telepathy.constants import \
85 CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES, \
86 CONNECTION_HANDLE_TYPE_CONTACT, \
87 CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, \
88 SOCKET_ADDRESS_TYPE_UNIX, \
89 SOCKET_ACCESS_CONTROL_LOCALHOST
90 from telepathy.client import Connection, Channel
77 from dbus import PROPERTIES_IFACE
78
79 CHANNEL_INTERFACE = TelepathyGLib.IFACE_CHANNEL
80 CHANNEL_INTERFACE_GROUP = TelepathyGLib.IFACE_CHANNEL_INTERFACE_GROUP
81 CHANNEL_TYPE_TEXT = TelepathyGLib.IFACE_CHANNEL_TYPE_TEXT
82 CHANNEL_TYPE_FILE_TRANSFER = TelepathyGLib.IFACE_CHANNEL_TYPE_FILE_TRANSFER
83 CONN_INTERFACE_ALIASING = TelepathyGLib.IFACE_CONNECTION_INTERFACE_ALIASING
84 CONN_INTERFACE = TelepathyGLib.IFACE_CONNECTION
85 CHANNEL = TelepathyGLib.IFACE_CHANNEL
86 CLIENT = TelepathyGLib.IFACE_CLIENT
87 CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES = \
88 TelepathyGLib.ChannelGroupFlags.CHANNEL_SPECIFIC_HANDLES
89 CONNECTION_HANDLE_TYPE_CONTACT = TelepathyGLib.HandleType.CONTACT
90 CHANNEL_TEXT_MESSAGE_TYPE_NORMAL = TelepathyGLib.ChannelTextMessageType.NORMAL
91 SOCKET_ADDRESS_TYPE_UNIX = TelepathyGLib.SocketAddressType.UNIX
92 SOCKET_ACCESS_CONTROL_LOCALHOST = TelepathyGLib.SocketAccessControl.LOCALHOST
9193
9294 from sugar3.presence import presenceservice
9395 from sugar3.activity.activity import SCOPE_PRIVATE
9496 from sugar3.graphics.alert import NotifyAlert
9597
9698 import logging
97 _logger = logging.getLogger('text-channel-wrapper')
99 _logger = logging.getLogger('CollabWrapper')
98100
99101 ACTION_INIT_REQUEST = '!!ACTION_INIT_REQUEST'
100102 ACTION_INIT_RESPONSE = '!!ACTION_INIT_RESPONSE'
103105
104106 class CollabWrapper(GObject.GObject):
105107 '''
106 The collaboration wrapper provides a high level abstraction over the
107 collaboration system. The wrapper deals with setting up the channels,
108 encoding and decoding messages, initialization and alerting the user
109 to the status.
110
111 When a user joins the activity, it will query the leader for the
112 contents. The leader will return the result of the activity's
113 `get_data` function which will be passed to the `set_data` function
114 on the new user's computer.
115
116 The `message` signal is called when a message is received from a
117 buddy. It has 2 arguments. The first is the buddy, as a
118 :class:`sugar3.presence.buddy.Buddy`. The second is the decoded
119 content of the message, same as that posted by the other instance.
120
121 The `joined` signal is emitted when the buddy joins a running
122 activity. If the user shares and activity, the joined signal
123 is not emitted. By the time this signal is emitted, the channels
124 will be setup so all messages will flow through.
125
126 The `buddy_joined` and `buddy_left` signals are emitted when
127 another user joins or leaves the activity. They both a
128 :class:`sugar3.presence.buddy.Buddy` as their only argument.
108 The wrapper provides a high level abstraction over the
109 collaboration system. The wrapper deals with setting up the
110 channels, encoding and decoding messages, initialization and
111 alerting the caller to the status.
112
113 An activity instance is initially private, but may be shared. Once
114 shared, an instance will remain shared for as long as the activity
115 runs. On stop, the journal will preserve the instance as shared,
116 and on resume the instance will be shared again.
117
118 When the caller shares an activity instance, they are the leader,
119 and other buddies may join. The instance is now a shared activity.
120
121 When the caller joins a shared activity, the leader will call
122 `get_data`, and the caller's `set_data` will be called with the
123 result.
124
125 The `joined` signal is emitted when the caller joins a shared
126 activity. One or more `buddy_joined` signals will be emitted before
127 this signal. The signal is not emitted to the caller who first
128 shared the activity. There are no arguments.
129
130 The `buddy_joined` signal is emitted when another buddy joins the
131 shared activity. At least one will be emitted before the `joined`
132 signal. The caller will never be mentioned, but is assumed to be
133 part of the set. The signal passes a
134 :class:`sugar3.presence.buddy.Buddy` as the only argument.
135
136 The `buddy_left` signal is emitted when another user leaves the
137 shared activity. The signal is not emitted during quit. The signal
138 passes a :class:`sugar3.presence.buddy.Buddy` as the only argument.
139
140 Any buddy may call `post` to send a message to all buddies. Each
141 buddy will receive a `message` signal.
142
143 The `message` signal is emitted when a `post` is received from any
144 buddy. The signal has two arguments. The first is a
145 :class:`sugar3.presence.buddy.Buddy`. The second is the message.
146
147 Any buddy may call `send_file_memory` or `send_file_file` to
148 transfer a file to all buddies. A description is to be given.
149 Each buddy will receive an `incoming_file` signal.
129150
130151 The `incoming_file` signal is emitted when a file transfer is
131 received from a buddy. The first argument is the object representing
132 the transfer, as a
133 :class:`sugar3.presence.filetransfer.IncomingFileTransfer`. The seccond
134 argument is the description, as passed to the `send_file_*` function
135 on the sender's client
152 received. The signal has two arguments. The first is a
153 :class:`IncomingFileTransfer`. The second is the description.
136154 '''
137155
138156 message = GObject.Signal('message', arg_types=[object, object])
142160 incoming_file = GObject.Signal('incoming_file', arg_types=[object, object])
143161
144162 def __init__(self, activity):
163 _logger.debug('__init__')
145164 GObject.GObject.__init__(self)
146165 self.activity = activity
147166 self.shared_activity = activity.shared_activity
151170
152171 def setup(self):
153172 '''
154 Setup must be called to so that the activity can join or share
173 Setup must be called so that the activity can join or share
155174 if appropriate.
156175
157176 .. note::
158177 As soon as setup is called, any signal, `get_data` or
159 `set_data` call must be made. This means that your
160 activity must have set up enough so these functions can
161 work. For example, place this at the end of the activity's
178 `set_data` call may occur. This means that the activity
179 must have set up enough so these functions can work. For
180 example, call setup at the end of the activity
162181 `__init__` function.
163182 '''
183 _logger.debug('setup')
164184 # Some glue to know if we are launching, joining, or resuming
165185 # a shared activity.
166186 if self.shared_activity:
198218
199219 def __shared_cb(self, sender):
200220 ''' Callback for when activity is shared. '''
221 _logger.debug('__shared_cb')
222 # FIXME: may be called twice, but we should only act once
201223 self.shared_activity = self.activity.shared_activity
202224 self._setup_text_channel()
203225 self._listen_for_channels()
204 _logger.debug('I am sharing...')
205226
206227 def __joined_cb(self, sender):
207228 '''Callback for when an activity is joined.'''
229 _logger.debug('__joined_cb')
208230 self.shared_activity = self.activity.shared_activity
209231 if not self.shared_activity:
210232 return
214236 self._init_waiting = True
215237 self.post({'action': ACTION_INIT_REQUEST})
216238
217 _logger.debug('I joined a shared activity.')
239 for buddy in self.shared_activity.get_joined_buddies():
240 self.buddy_joined.emit(buddy)
241
218242 self.joined.emit()
219243
220244 def _setup_text_channel(self):
221245 ''' Set up a text channel to use for collaboration. '''
246 _logger.debug('_setup_text_channel')
222247 self._text_channel = _TextChannelWrapper(
223248 self.shared_activity.telepathy_text_chan,
224249 self.shared_activity.telepathy_conn)
233258 self.shared_activity.connect('buddy-left', self.__buddy_left_cb)
234259
235260 def _listen_for_channels(self):
261 _logger.debug('_listen_for_channels')
236262 conn = self.shared_activity.telepathy_conn
237263 conn.connect_to_signal('NewChannels', self.__new_channels_cb)
238264
239265 def __new_channels_cb(self, channels):
266 _logger.debug('__new_channels_cb')
240267 conn = self.shared_activity.telepathy_conn
241268 for path, props in channels:
242269 if props[CHANNEL + '.Requested']:
247274 self._handle_ft_channel(conn, path, props)
248275
249276 def _handle_ft_channel(self, conn, path, props):
277 _logger.debug('_handle_ft_channel')
250278 ft = IncomingFileTransfer(conn, path, props)
251279 if ft.description == ACTION_INIT_RESPONSE:
252 ft.connect('notify::state', self.__notify_ft_state_cb)
280 ft.connect('ready', self.__ready_cb)
253281 ft.accept_to_memory()
254282 else:
255283 desc = json.loads(ft.description)
256284 self.incoming_file.emit(ft, desc)
257285
258 def __notify_ft_state_cb(self, ft, pspec):
259 if ft.props.state == FT_STATE_COMPLETED and self._init_waiting:
260 stream = ft.props.output
286 def __ready_cb(self, ft, stream):
287 _logger.debug('__ready_cb')
288 if self._init_waiting:
261289 stream.close(None)
262290 # FIXME: The data prop seems to just be the raw pointer
263291 gbytes = stream.steal_as_bytes()
264292 data = gbytes.get_data()
265 logging.debug('Got init data from buddy: %s', data)
293 _logger.debug('Got init data from buddy: %r', data)
266294 data = json.loads(data)
267295 self.activity.set_data(data)
268296 self._init_waiting = False
269297
270298 def __received_cb(self, buddy, msg):
271299 '''Process a message when it is received.'''
300 _logger.debug('__received_cb')
272301 action = msg.get('action')
273 if action == ACTION_INIT_REQUEST and self._leader:
274 data = self.activity.get_data()
275 data = json.dumps(data)
276 OutgoingBlobTransfer(
277 buddy,
278 self.shared_activity.telepathy_conn,
279 data,
280 self.get_client_name(),
281 ACTION_INIT_RESPONSE,
282 ACTIVITY_FT_MIME)
302 if action == ACTION_INIT_REQUEST:
303 if self._leader:
304 data = self.activity.get_data()
305 if data is not None:
306 data = json.dumps(data)
307 OutgoingBlobTransfer(
308 buddy,
309 self.shared_activity.telepathy_conn,
310 data.encode(),
311 self.get_client_name(),
312 ACTION_INIT_RESPONSE,
313 ACTIVITY_FT_MIME)
283314 return
284315
285316 if buddy:
291322
292323 def send_file_memory(self, buddy, data, description):
293324 '''
294 Send a 1-to-1 transfer from memory to a given buddy. They will
295 get the file transfer and description through the `incoming_transfer`
296 signal.
325 Send a one to one file transfer from memory to a buddy. The
326 buddy will get the file transfer and description through the
327 `incoming_transfer` signal.
297328
298329 Args:
299 buddy (sugar3.presence.buddy.Buddy), buddy to offer the transfer to
300 data (str), the data to offer to the buddy via the transfer
330 buddy (sugar3.presence.buddy.Buddy), buddy to send to.
331 data (str), the data to send.
301332 description (object), a json encodable description for the
302 transfer. This will be given to the `incoming_transfer` signal
303 of the transfer
333 transfer. This will be given to the
334 `incoming_transfer` signal at the buddy.
304335 '''
305336 OutgoingBlobTransfer(
306337 buddy,
312343
313344 def send_file_file(self, buddy, path, description):
314345 '''
315 Send a 1-to-1 transfer from a file to a given buddy. They will
316 get the file transfer and description through the `incoming_transfer`
317 signal.
346 Send a one to one file transfer from a filesystem path to a
347 given buddy. The buddy will get the file transfer and
348 description through the `incoming_transfer` signal.
318349
319350 Args:
320 buddy (sugar3.presence.buddy.Buddy), buddy to offer the transfer to
321 path (str), path of the file to send to the buddy
351 buddy (sugar3.presence.buddy.Buddy), buddy to send to.
352 path (str), path of the file containing the data to send.
322353 description (object), a json encodable description for the
323 transfer. This will be given to the `incoming_transfer` signal
324 of the transfer
354 transfer. This will be given to the
355 `incoming_transfer` signal at the buddy.
325356 '''
326357 OutgoingFileTransfer(
327358 buddy,
333364
334365 def post(self, msg):
335366 '''
336 Broadcast a message to the other buddies if the activity is
337 shared. If it is not shared, the message will not be send
338 at all.
367 Send a message to all buddies. If the activity is not shared,
368 no message is sent.
339369
340370 Args:
341 msg (object): json encodable object to send to the other
342 buddies, eg. :class:`dict` or :class:`str`.
371 msg (object): json encodable object to send,
372 eg. :class:`dict` or :class:`str`.
343373 '''
344374 if self._text_channel is not None:
345375 self._text_channel.post(msg)
365395 '''
366396 Boolean of if this client is the leader in this activity. The
367397 way the leader is decided may change, however there should only
368 ever be 1 leader for an activity.
398 ever be one leader for an activity.
369399 '''
370400 return self._leader
401
371402
372403 FT_STATE_NONE = 0
373404 FT_STATE_PENDING = 1
401432
402433 GObject Props:
403434 state (FT_STATE_*), current state of the transfer
404 transferred_bytes (int), number of bytes transfered so far
435 transferred_bytes (int), number of bytes transferred so far
405436 '''
406437
407438 def __init__(self):
430461 self.channel[CHANNEL_TYPE_FILE_TRANSFER].connect_to_signal(
431462 'InitialOffsetDefined', self.__initial_offset_defined_cb)
432463
433 channel_properties = self.channel[dbus.PROPERTIES_IFACE]
464 channel_properties = self.channel[PROPERTIES_IFACE]
434465
435466 props = channel_properties.GetAll(CHANNEL_TYPE_FILE_TRANSFER)
436467 self._state = props['State']
440471 self.mime_type = props['ContentType']
441472
442473 def __transferred_bytes_changed_cb(self, transferred_bytes):
443 logging.debug('__transferred_bytes_changed_cb %r', transferred_bytes)
474 _logger.debug('__transferred_bytes_changed_cb %r', transferred_bytes)
444475 self.props.transferred_bytes = transferred_bytes
445476
446477 def _set_transferred_bytes(self, transferred_bytes):
455486 setter=_set_transferred_bytes)
456487
457488 def __initial_offset_defined_cb(self, offset):
458 logging.debug('__initial_offset_defined_cb %r', offset)
489 _logger.debug('__initial_offset_defined_cb %r', offset)
459490 self.initial_offset = offset
460491
461492 def __state_changed_cb(self, state, reason):
462 logging.debug('__state_changed_cb %r %r', state, reason)
493 _logger.debug('__state_changed_cb %r %r', state, reason)
463494 self.reason_last_change = reason
464495 self.props.state = state
465496
494525 it is a :class:`Gio.MemoryOutputStream`.
495526 '''
496527
528 ready = GObject.Signal('ready', arg_types=[object])
529
497530 def __init__(self, connection, object_path, props):
498531 _BaseFileTransfer.__init__(self)
499532
500 channel = Channel(connection.bus_name, object_path)
533 channel = {}
534 proxy = dbus.Bus().get_object(connection.bus_name, object_path)
535 channel[PROPERTIES_IFACE] = dbus.Interface(proxy, PROPERTIES_IFACE)
536 channel[CHANNEL] = dbus.Interface(proxy, CHANNEL)
537 channel[CHANNEL_TYPE_FILE_TRANSFER] = dbus.Interface(
538 proxy, CHANNEL_TYPE_FILE_TRANSFER)
501539 self.set_channel(channel)
502540
503541 self.connect('notify::state', self.__notify_state_cb)
529567 Accept the file transfer. Once the state is FT_STATE_OPEN, a
530568 :class:`Gio.MemoryOutputStream` accessible via the output prop.
531569 '''
570 self._destination_path = None
532571 self._accept()
533572
534573 def _accept(self):
541580 byte_arrays=True)
542581
543582 def __notify_state_cb(self, file_transfer, pspec):
544 logging.debug('__notify_state_cb %r', self.props.state)
583 _logger.debug('__notify_state_cb %r', self.props.state)
545584 if self.props.state == FT_STATE_OPEN:
546585 # Need to hold a reference to the socket so that python doesn't
547586 # close the fd when it goes out of scope
558597 else:
559598 self._output_stream = destination_file.append_to()
560599 else:
561 self._output_stream = Gio.MemoryOutputStream.new_resizable()
600 if hasattr(Gio.MemoryOutputStream, 'new_resizable'):
601 self._output_stream = \
602 Gio.MemoryOutputStream.new_resizable()
603 else:
604 self._output_stream = Gio.MemoryOutputStream()
562605
563606 self._output_stream.splice_async(
564607 input_stream,
565608 Gio.OutputStreamSpliceFlags.CLOSE_SOURCE |
566609 Gio.OutputStreamSpliceFlags.CLOSE_TARGET,
567 GLib.PRIORITY_LOW, None, None, None)
610 GLib.PRIORITY_LOW, None, self.__splice_done_cb, None)
611
612 def __splice_done_cb(self, output_stream, res, user):
613 _logger.debug('__splice_done_cb')
614 self.ready.emit(self._destination_path or self._output_stream)
568615
569616 @GObject.Property
570617 def output(self):
612659 CHANNEL_TYPE_FILE_TRANSFER + '.Size': file_size,
613660 CHANNEL_TYPE_FILE_TRANSFER + '.ContentType': self._mime,
614661 CHANNEL_TYPE_FILE_TRANSFER + '.InitialOffset': 0}, signature='sv'))
615 self.set_channel(Channel(self._conn.bus_name, object_path))
662 channel = {}
663 proxy = dbus.Bus().get_object(self._conn.bus_name, object_path)
664 channel[PROPERTIES_IFACE] = dbus.Interface(proxy, PROPERTIES_IFACE)
665 channel[CHANNEL] = dbus.Interface(proxy, CHANNEL)
666 channel[CHANNEL_TYPE_FILE_TRANSFER] = dbus.Interface(
667 proxy, CHANNEL_TYPE_FILE_TRANSFER)
668 self.set_channel(channel)
616669
617670 channel_file_transfer = self.channel[CHANNEL_TYPE_FILE_TRANSFER]
618671 self._socket_address = channel_file_transfer.ProvideFile(
802855
803856 # Get the Telepathy Connection
804857 tp_name, tp_path = pservice.get_preferred_connection()
805 conn = Connection(tp_name, tp_path)
858 obj = dbus.Bus().get_object(tp_name, tp_path)
859 conn = dbus.Interface(obj, CONN_INTERFACE)
806860 group = self._text_chan[CHANNEL_INTERFACE_GROUP]
807861 my_csh = group.GetSelfHandle()
808862 if my_csh == cs_handle:
00 import pippy
11
2 for i in xrange(0, 50):
2 for i in range(0, 50):
33 pippy.console.clear()
44 if i < 25:
55 pippy.console.red()
77 pippy.console.blue()
88
99 # Note that we have to escape backslashes
10 print '\\o/'
11 print '_|_'
12 print ' '
10 print('\\o/')
11 print('_|_')
12 print(' ')
1313 pippy.wait()
1414
1515 pippy.console.clear()
16 print '_o_'
17 print ' | '
18 print '/ \\'
16 print('_o_')
17 print(' | ')
18 print('/ \\')
1919 pippy.wait()
2020
2121 pippy.console.clear()
22 print ' o '
23 print '/|\\'
24 print '| |'
22 print(' o ')
23 print('/|\\')
24 print('| |')
2525 pippy.wait()
2626
2727 pippy.console.clear()
28 print '_o_'
29 print ' | '
30 print '/ \\'
28 print('_o_')
29 print(' | ')
30 print('/ \\')
3131 pippy.wait()
0 # -*- coding: utf-8 -*-
1 # This is the game life http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life
2
3 import os
4 import time
5 import random
6
7
8 def LoadCells(rows, cols):
9 """ We need a function to load cells in the neighborhood """
10 grid = []
11 col = [0] * cols
12 # first we load an empty grid
13 for i in range(rows):
14 col = [0] * cols
15 grid.append(col)
16 # then we load some cells
17 for x in range(rows):
18 for y in range(cols):
19 cell = random.randint(0, random.randint(0, 1))
20 grid[x][y] = cell
21 return grid
22
23
24 def DrawGrid(grid):
25 """ Here we draw the grid """
26 """ Test: Print the number of neighbors of living cells """
27 rows = len(grid)
28 cols = len(grid[1])
29 # print rows, cols
30 for x in range(rows):
31 for y in range(cols):
32 if grid[x][y] != 1:
33 print '.',
34 else:
35 neighbors = CountNeighbors(grid, x, y)
36 print chr(neighbors+48),
37 # print 'o',
38 print '\n',
39
40
41 def CountNeighbors(grid, x, y):
42 """ Count neighbors arround a single cell"""
43
44 neighbors = 0
45 rows = len(grid)
46 cols = len(grid[1])
47
48 # if x < (rows - 1) and grid[x + 1][y] == 1:
49 # neighbors += 1
50 # if x > 0 and grid[x - 1][y] == 1:
51 # neighbors += 1
52 # if y < (cols - 1) and grid[x][y + 1] == 1:
53 # neighbors += 1
54 # if y > 0 and grid[x][y - 1] == 1:
55 # neighbors += 1
56 # if x < (rows - 1) and y < (cols - 1) and grid[x + 1][y + 1] == 1:
57 # neighbors += 1
58 # if x > 0 and y > 0 and grid[x - 1][y - 1] == 1:
59 # neighbors += 1
60 # if x > 0 and y < (cols - 1) and grid[x - 1][y + 1] == 1:
61 # neighbors += 1
62 # if x < (rows - 1) and y > 0 and grid[x + 1][y - 1] == 1:
63 # neighbors += 1
64
65 neighbors += grid[(x+rows-1) % rows][(y+cols-1) % cols]
66 neighbors += grid[(x+rows-1) % rows][ y ]
67 neighbors += grid[(x+rows-1) % rows][(y +1) % cols]
68 neighbors += grid[ x ][(y+cols-1) % cols]
69 # neighbors += grid[ x ][ y ]
70 neighbors += grid[ x ][(y +1) % cols]
71 neighbors += grid[(x +1) % rows][(y+cols-1) % cols]
72 neighbors += grid[(x +1) % rows][ y ]
73 neighbors += grid[(x +1) % rows][(y +1) % cols]
74
75 return neighbors
76
77
78 def Iteration(grid):
79 """ here we define a single iteration :
80 # if we have between 3 and 6 neighbors the single cell lives
81 # in other case the cell dies
82 If a living cell has 2 or 3 neighbors, it survives
83 in other cases it dies.
84 A dead cell with 3 neighbors will become alive.
85 """
86 rows = len(grid)
87 cols = len(grid[1])
88
89 # grid0 = grid # Save the original grid for proper counts
90 grid0 = []
91 col = [0] * cols
92 # First we load an empty grid
93 for x in range(rows):
94 col = [0] * cols
95 grid0.append(col)
96
97 for x in range(rows):
98 for y in range(cols):
99 cell = grid[x][y]
100 grid0[x][y] = cell
101
102 # neighbors = 0
103 for x in range(rows):
104 for y in range(cols):
105 neighbors = CountNeighbors(grid0, x, y)
106 if grid0[x][y] == 1:
107 if neighbors < 2 or neighbors > 3:
108 grid[x][y] = 0
109 else:
110 if neighbors == 3:
111 grid[x][y] = 1
112
113 return grid
114
115 def Iterator(rows, cols, pulses):
116 """ Iterate n pulses and draws the result of each one """
117 pulse = 1
118 grid = LoadCells(rows, cols)
119 while pulse <= pulses:
120 # os.system('clear')
121 print 'Pulse: ', pulse
122 # Iteration(grid)
123 grid = Iteration(grid)
124 DrawGrid(grid)
125 pulse += 1
126 time.sleep(0.2)
127
128 number = input('Please input the number of rows and cols (unique number):')
129 pulses = input('Please input the number of pulses:')
130 Iterator(number, 4*number, pulses)
0 # -*- coding: utf-8 -*-
1 # This is the game life http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life
2
3 import os
4 import time
5 import random
6
7
8 def LoadCells(rows, cols):
9 """ We need a function to load cells in the neighborhood """
10 grid = []
11 col = [0] * cols
12 # first we load an empty grid
13 for i in range(rows):
14 col = [0] * cols
15 grid.append(col)
16 # then we load some cells
17 for x in range(rows):
18 for y in range(cols):
19 cell = random.randint(0, random.randint(0, 1))
20 grid[x][y] = cell
21 return grid
22
23
24 def DrawGrid(grid):
25 """ Here we draw the grid """
26 """ Test: Print the number of neighbors of living cells """
27 rows = len(grid)
28 cols = len(grid[1])
29 # print rows, cols
30 for x in range(rows):
31 for y in range(cols):
32 if grid[x][y] != 1:
33 print('.', end=' ')
34 else:
35 neighbors = CountNeighbors(grid, x, y)
36 print(chr(neighbors+48), end=' ')
37 # print 'o',
38 print('\n', end=' ')
39
40
41 def CountNeighbors(grid, x, y):
42 """ Count neighbors arround a single cell"""
43
44 neighbors = 0
45 rows = len(grid)
46 cols = len(grid[1])
47
48 # if x < (rows - 1) and grid[x + 1][y] == 1:
49 # neighbors += 1
50 # if x > 0 and grid[x - 1][y] == 1:
51 # neighbors += 1
52 # if y < (cols - 1) and grid[x][y + 1] == 1:
53 # neighbors += 1
54 # if y > 0 and grid[x][y - 1] == 1:
55 # neighbors += 1
56 # if x < (rows - 1) and y < (cols - 1) and grid[x + 1][y + 1] == 1:
57 # neighbors += 1
58 # if x > 0 and y > 0 and grid[x - 1][y - 1] == 1:
59 # neighbors += 1
60 # if x > 0 and y < (cols - 1) and grid[x - 1][y + 1] == 1:
61 # neighbors += 1
62 # if x < (rows - 1) and y > 0 and grid[x + 1][y - 1] == 1:
63 # neighbors += 1
64
65 neighbors += grid[(x+rows-1) % rows][(y+cols-1) % cols]
66 neighbors += grid[(x+rows-1) % rows][ y ]
67 neighbors += grid[(x+rows-1) % rows][(y +1) % cols]
68 neighbors += grid[ x ][(y+cols-1) % cols]
69 # neighbors += grid[ x ][ y ]
70 neighbors += grid[ x ][(y +1) % cols]
71 neighbors += grid[(x +1) % rows][(y+cols-1) % cols]
72 neighbors += grid[(x +1) % rows][ y ]
73 neighbors += grid[(x +1) % rows][(y +1) % cols]
74
75 return neighbors
76
77
78 def Iteration(grid):
79 """ here we define a single iteration :
80 # if we have between 3 and 6 neighbors the single cell lives
81 # in other case the cell dies
82 If a living cell has 2 or 3 neighbors, it survives
83 in other cases it dies.
84 A dead cell with 3 neighbors will become alive.
85 """
86 rows = len(grid)
87 cols = len(grid[1])
88
89 # grid0 = grid # Save the original grid for proper counts
90 grid0 = []
91 col = [0] * cols
92 # First we load an empty grid
93 for x in range(rows):
94 col = [0] * cols
95 grid0.append(col)
96
97 for x in range(rows):
98 for y in range(cols):
99 cell = grid[x][y]
100 grid0[x][y] = cell
101
102 # neighbors = 0
103 for x in range(rows):
104 for y in range(cols):
105 neighbors = CountNeighbors(grid0, x, y)
106 if grid0[x][y] == 1:
107 if neighbors < 2 or neighbors > 3:
108 grid[x][y] = 0
109 else:
110 if neighbors == 3:
111 grid[x][y] = 1
112
113 return grid
114
115 def Iterator(rows, cols, pulses):
116 """ Iterate n pulses and draws the result of each one """
117 pulse = 1
118 grid = LoadCells(rows, cols)
119 while pulse <= pulses:
120 # os.system('clear')
121 print('Pulse: ', pulse)
122 # Iteration(grid)
123 grid = Iteration(grid)
124 DrawGrid(grid)
125 pulse += 1
126 time.sleep(0.2)
127
128 number = eval(input('Please input the number of rows and cols (unique number):'))
129 pulses = eval(input('Please input the number of pulses:'))
130 Iterator(number, 4*number, pulses)
55 result = 1
66 if number > 0:
77 result = number * factorial_recursive(number - 1)
8 print 'factorizing: ', number, ' result: ', result
8 print('factorizing: ', number, ' result: ', result)
99 return result
1010
1111
1414 result = 1
1515 for i in range(1, number + 1):
1616 result = result * i
17 print 'factorizing: ', i, ' result: ', result
17 print('factorizing: ', i, ' result: ', result)
1818 return result
1919
2020
2929 factorial_iterative(number)
3030 delta = time.time() - start
3131 if delta > 0:
32 print 'Type: ', type_s, ' in: ', 1 / delta
32 print('Type: ', type_s, ' in: ', 1 / delta)
3333 else:
34 print 'Type: ', type_s
34 print('Type: ', type_s)
3535
3636 # ask for a number to compute the factorial of
37 number = input('Please input a number:')
38 print 'Calculating...'
37 number = eval(input('Please input a number:'))
38 print('Calculating...')
3939 calculate(number, 0)
4040 calculate(number, 1)
00 a, b = 0, 1
11 while b < 1001:
2 print b,
2 print(b, end=' ')
33 a, b = b, a + b
11 import pippy
22 R = random.randrange(1, 100)
33
4 print 'Guess a number between 1 and 100!'
5 N = input('Enter a number: ')
4 print('Guess a number between 1 and 100!')
5 N = eval(input('Enter a number: '))
66 i = 1
77 while (N != R):
88 if N > R:
99 pippy.console.red()
10 print 'Too big... try again'
10 print('Too big... try again')
1111 else:
1212 pippy.console.blue()
13 print 'Too small.. try again'
13 print('Too small.. try again')
1414 pippy.console.black()
15 N = input('Enter a number: ')
15 N = eval(input('Enter a number: '))
1616 i = i + 1
1717
18 print 'You got it in', i, 'tries'
18 print('You got it in', i, 'tries')
99 newvector = vector[:]
1010 for j in range(0, len(vector) - 1):
1111 if (newvector[j] == 0):
12 print ' ',
12 print(' ', end=' ')
1313 else:
14 print '%2d' % newvector[j],
14 print('%2d' % newvector[j], end=' ')
1515 newvector[j] = vector[j - 1] + vector[j + 1]
16 print
16 print()
1717 vector = newvector[:]
44 pi += (4.0/a) - (4.0/b)
55 a += 4
66 b += 4
7 print pi
7 print(pi)
88 # Now that the result has been computed we can explore printing the result.
9 print "There are multiple ways to print numbers here is a quick sample."
10 print "Just print it :", pi
11 print "Using repr() :", repr(pi)
12 print "Our approximation: %3.20f" % pi
13 print "\nPi is a very famous number...."
9 print("There are multiple ways to print numbers here is a quick sample.")
10 print("Just print it :", pi)
11 print("Using repr() :", repr(pi))
12 print("Our approximation: %3.20f" % pi)
13 print("\nPi is a very famous number....")
1414 # Use python's math module it is faster and close enough for most computations.
1515 import math
16 print "Python's Math library computes"
17 print "a better value pi: %3.39f" % math.pi; # it uses...(math.atan(1.0) * 4.0)
16 print("Python's Math library computes")
17 print("a better value pi: %3.39f" % math.pi); # it uses...(math.atan(1.0) * 4.0)
1818 # when running computations based on "pi" it is good to begin with the best value you can get.
1919 # from the gnu 'C' comiler /usr/include/math.h"
20 print "For reference a more exact 32 bit floating point value for pi is."
21 print "Known value of pi: 3.14159265358979323846"
20 print("For reference a more exact 32 bit floating point value for pi is.")
21 print("Known value of pi: 3.14159265358979323846")
1212 newvector = vector[:]
1313 for j in range(0, len(vector) - 1):
1414 if (newvector[j] == 0):
15 print ' ',
15 print(' ', end=' ')
1616 else:
1717 remainder = newvector[j] % modulus
1818 if (remainder == 0):
19 print 'O',
19 print('O', end=' ')
2020 else:
21 print '.',
21 print('.', end=' ')
2222 newvector[j] = vector[j - 1] + vector[j + 1]
23 print
23 print()
2424 vector = newvector[:]
3131 r = rationals()
3232 i = 1
3333 while i<5:
34 print r.next()
34 print(next(r))
3535 i+=1
0 number = input('Which times table? ')
0 number = eval(input('Which times table? '))
11 for i in range(1, 13):
2 print i, 'x', number, '=', i * number
2 print(i, 'x', number, '=', i * number)
00 def square(x):
1 print x * x
1 print(x * x)
22
33 square(3)
44 square(4)
0 number = input('Enter a number: ')
0 number = eval(input('Enter a number: '))
11
22 if number > 5:
3 print 'Greater than 5'
3 print('Greater than 5')
44 elif number < 5:
5 print 'Less than 5'
5 print('Less than 5')
66 else:
7 print 'Number is 5!'
7 print('Number is 5!')
00 def count_backwards(number):
1 print 'I have the number', number
1 print('I have the number', number)
22 if number > 0:
3 print 'Calling count_backwards again!'
3 print('Calling count_backwards again!')
44 count_backwards(number - 1)
55 else:
6 print 'I am done counting'
6 print('I am done counting')
77
8 number = input('Enter a number: ')
8 number = eval(input('Enter a number: '))
99 count_backwards(number)
00 import pippy
11
2 print " ".join(pippy.sound.getSoundList())
2 print(" ".join(pippy.sound.getSoundList()))
0 name = raw_input("Type your name here: ")
1 print "Hello " + name + "!"
0 name = input("Type your name here: ")
1 print("Hello " + name + "!")
77 vowels = ['a', 'e', 'i', 'o', 'u']
88
99 # then we ask for a string to make the replacements
10 text = raw_input("Please input your text to translate to jeringoso:")
10 text = input("Please input your text to translate to jeringoso:")
1111 length = len(text)
1212 jeringoso = ""
1313 for i in range(length):
1717 else:
1818 jeringoso = jeringoso + char
1919
20 print jeringoso
20 print(jeringoso)
00 table = {
1 'Hardware & Mechanicals': 'John Watlington, Mark Foster, Mary Lou Jepsen, Yves Behar, Bret Recor, Mitch Pergola, Martin Schnitzer, Kenneth Jewell, Kevin Young, Jacques Gagne, Nicholas Negroponte, Frank Lee, Victor Chau, Albert Hsu, HT Chen, Vance Ke, Ben Chuang, Johnson Huang, Sam Chang, Alex Chu, Roger Huang, and the rest of the Quanta team, the Marvell team, the AMD team, the ChiMei team...',
2
3 'Firmware': 'Ron Minnich, Richard Smith, Mitch Bradley, Tom Sylla, Lilian Walter, Bruce Wang, James Cameron',
1 'Hardware & Mechanicals': 'John Watlington, Mark Foster, Mary Lou Jepsen, Yves Behar, Bret Recor, Mitch Pergola, Martin Schnitzer, Kenneth Jewell, Kevin Young, Jacques Gagne, Nicholas Negroponte, Frank Lee, Victor Chau, Albert Hsu, HT Chen, Vance Ke, Ben Chuang, Johnson Huang, Sam Chang, Alex Chu, Roger Huang, and the rest of the Quanta team, the Marvell team, the AMD team, the ChiMei team ...',
42
5 'Kernel & Drivers': 'Jaya Kumar, Jon Corbet, Reynaldo Verdejo, Pierre Ossman, Dave Woodhouse, Matthew Garrett, Chris Ball, Andy Tanenbaum, Linus Torvalds, Dave Jones, Andres Salomon, Marcelo Tosatti..',
6
7 'Graphics systems': 'Jordan Crouse, Daniel Stone, Zephaniah Hull, Bernardo Innocenti, Behdad Esfahbod, Jim Gettys, Adam Jackson, RobertTheKing, William Orr, Simon Schampijer, Gary Martin',
8
9 'Programming': 'Guido Van Rossum, Johan Dahlin, Brian Silverman, Alan Kay, Kim Rose, Bert Freudenberg, Yoshiki Ohshima, Takashi Yamamiya, Scott Wallace, Ted Kaehler, Stephane Ducasse, Hilaire Fernandes, David Narveaz, Tim Moody, Martin Langhoff, Paul Fox, Tim Shepard, Martin Abente Lahaye, Sam Parkinson, James Cameron, Ignacio Rodriguez, Jerry Vonau, Sebastian Silva, Ana Balica, rcunning01 Frederick Grose, Prason Shukla, Emil Dudev, Christofer Yael, cheekujodhpur, Agustin Zubiaga, Daniel Francis',
10
11 'Sugar': 'Marco Pesenti Gritti, Dan Williams, Chris Blizzard, John Palmieri, Lisa Strausfeld, Christian Marc Schmidt, Takaaki Okada, Eben Eliason, Walter Bender, Tomeu Vizoso, Simon Schampijer, Reinier Heeres, Ben Saller, Martin Dengler, Benjamin Berg, Daniel Drake, Jameson Quinn, Miguel Alvarez...',
12
13 'Activities': 'Erik Blankinship, Bakhtiar Mikhak, Manusheel Gupta, J.M. Maurer (uwog) and the Abiword team, the Mozilla team, Jean Piche, Barry Vercoe, Richard Boulanger, Greg Thompson, Arjun Sarwal, Cody Lodrige, Shannon Sullivan, Idit Harel, and the MaMaMedia team, John Huang, Bruno Coudoin, Eduardo Silva, Hakon Wium Lie, Don Hopkins, Muriel de Souza Godoi, Benjamin M. Schwartz..',
14
15 'Network': 'Michael Bletsas, James Cameron, Javier Cardona, Ronak Chokshi, Polychronis Ypodimatopoulos, Simon McVittie, Dafydd Harries, Sjoerd Simons, Morgan Collett, Guillaume Desmottes, Robert McQueen..',
16
17 'Security': 'Ivan Krstic, Michael Stone, C. Scott Ananian, Noah Kantrowitz, Herbert Poetzl, Marcus Leech..',
18
19 'Content': 'SJ Klein, Mako Hill, Xavier Alvarez, Alfonso de la Guarda, Sayamindu Dasgupta, Mallory Chua, Lauren Klein, Zdenek Broz, Felicity Tepper, Andy Sisson, Christine Madsen, Matthew Steven Carlos, Justin Thorp, Ian Bicking, Christopher Fabian, Wayne Mackintosh, the OurStories team, Will Wright, Chuck Normann..',
20
21 'Testing': 'Kim Quirk, Alex Latham, Giannis Galanis, Ricardo Carrano, Zach Cerza, John Fuhrer, Tom Gilliard, Niraj Nakrani',
22
23 'Country Support': 'Carla Gomez Monroy, David Cavallo, Matt Keller, Khaled Hassounah, Antonio Battro, Audrey Choi, Habib Kahn, Arnan (Roger) Sipitakiat, Reuben Caron',
24
25 'Administrative Support': 'Nia Lewis, Felice Gardner, Lindsay Petrillose, Jill Clarke, Julia Reynolds, Tracy Price, David Robertson, Danny Clark',
26
27 'Finance & Legal': 'Eben Moglen, Bruce Parker, William Kolb, John Sare, Sandra Lee, Richard Bernstein, Jaclyn Tsai, Jaime Cheng, Robert Fadel, Charles Kane (Grasshopper), Kathy Paur, Andriani Ferti',
28
29 'PR and Media': 'Larry Weber, Jackie Lustig, Jodi Petrie, George Snell, Kyle Austin, Hilary Meserole, Erick A. Betancourt, Michael Borosky, Sylvain Lefebvre, Martin Le Sauteur',
30
31 'Directors & Advisors': 'Howard Anderson, Rebecca Allen, Ayo Kusamotu, Jose Maria Aznar, V. Michael Bove, Jr., Rodrigo Mesquita, Seymour Papert, Ted Selker, Ethan Beard (Google); John Roese (Nortel); Dandy Hsu (Quanta); Marcelo Claure (Brightstar); Gary Dillabough (eBay); Gustavo Arenas (AMD); Mike Evans (Red Hat); Ed Horowitz (SES Astra); Jeremy Philips (NewsCorp); Scott Soong (Chi Lin); Sehat Sutardja (Marvell); Joe Jacobson (MIT Media Lab); Steve Kaufman (Riverside); and Tom Meredith (MFI)',
32
33 'Pippy': 'Chris Ball, C. Scott Ananian, James Cameron, Anish Mangal'
34 }
3 'Firmware': 'Ron Minnich, Richard Smith, Mitch Bradley, Tom Sylla, Lilian Walter, Bruce Wang, James Cameron ...',
4
5 'Kernel & Drivers': 'Jaya Kumar, Jon Corbet, Reynaldo Verdejo, Pierre Ossman, Dave Woodhouse, Matthew Garrett, Chris Ball, Andy Tanenbaum, Linus Torvalds, Dave Jones, Andres Salomon, Marcelo Tosatti ...',
6
7 'Graphics systems': 'Jordan Crouse, Daniel Stone, Zephaniah Hull, Bernardo Innocenti, Behdad Esfahbod, Jim Gettys, Adam Jackson, RobertTheKing, William Orr, Simon Schampijer, Gary Martin ...',
8
9 'Programming': 'Guido Van Rossum, Johan Dahlin, Brian Silverman, Alan Kay, Kim Rose, Bert Freudenberg, Yoshiki Ohshima, Takashi Yamamiya, Scott Wallace, Ted Kaehler, Stephane Ducasse, Hilaire Fernandes, David Narveaz, Tim Moody, Martin Langhoff, Paul Fox, Tim Shepard, Martin Abente Lahaye, Sam Parkinson, James Cameron, Ignacio Rodriguez, Jerry Vonau, Sebastian Silva, Ana Balica, rcunning01 Frederick Grose, Prason Shukla, Emil Dudev, Christofer Yael, cheekujodhpur, Agustin Zubiaga, Daniel Francis ...',
10
11 'Sugar': 'Marco Pesenti Gritti, Dan Williams, Chris Blizzard, John Palmieri, Lisa Strausfeld, Christian Marc Schmidt, Takaaki Okada, Eben Eliason, Walter Bender, Tomeu Vizoso, Simon Schampijer, Reinier Heeres, Ben Saller, Martin Dengler, Benjamin Berg, Daniel Drake, Jameson Quinn, Miguel Alvarez ...',
12
13 'Activities': 'Erik Blankinship, Bakhtiar Mikhak, Manusheel Gupta, J.M. Maurer (uwog) and the Abiword team, the Mozilla team, Jean Piche, Barry Vercoe, Richard Boulanger, Greg Thompson, Arjun Sarwal, Cody Lodrige, Shannon Sullivan, Idit Harel, and the MaMaMedia team, John Huang, Bruno Coudoin, Eduardo Silva, Hakon Wium Lie, Don Hopkins, Muriel de Souza Godoi, Benjamin M. Schwartz ...',
14
15 'Network': 'Michael Bletsas, James Cameron, Javier Cardona, Ronak Chokshi, Polychronis Ypodimatopoulos, Simon McVittie, Dafydd Harries, Sjoerd Simons, Morgan Collett, Guillaume Desmottes, Robert McQueen ...',
16
17 'Security': 'Ivan Krstic, Michael Stone, C. Scott Ananian, Noah Kantrowitz, Herbert Poetzl, Marcus Leech ...',
18
19 'Content': 'SJ Klein, Mako Hill, Xavier Alvarez, Alfonso de la Guarda, Sayamindu Dasgupta, Mallory Chua, Lauren Klein, Zdenek Broz, Felicity Tepper, Andy Sisson, Christine Madsen, Matthew Steven Carlos, Justin Thorp, Ian Bicking, Christopher Fabian, Wayne Mackintosh, the OurStories team, Will Wright, Chuck Normann ...',
20
21 'Testing': 'Kim Quirk, Alex Latham, Giannis Galanis, Ricardo Carrano, Zach Cerza, John Fuhrer, Tom Gilliard, Niraj Nakrani ...',
22
23 'Country Support': 'Carla Gomez Monroy, David Cavallo, Matt Keller, Khaled Hassounah, Antonio Battro, Audrey Choi, Habib Kahn, Arnan (Roger) Sipitakiat, Reuben Caron ...',
24
25 'Administrative Support': 'Nia Lewis, Felice Gardner, Lindsay Petrillose, Jill Clarke, Julia Reynolds, Tracy Price, David Robertson, Danny Clark ...',
26
27 'Finance & Legal': 'Eben Moglen, Bruce Parker, William Kolb, John Sare, Sandra Lee, Richard Bernstein, Jaclyn Tsai, Jaime Cheng, Robert Fadel, Charles Kane (Grasshopper), Kathy Paur, Andriani Ferti ...',
28
29 'PR and Media': 'Larry Weber, Jackie Lustig, Jodi Petrie, George Snell, Kyle Austin, Hilary Meserole, Erick A. Betancourt, Michael Borosky, Sylvain Lefebvre, Martin Le Sauteur ...',
30
31 'Directors & Advisors': 'Howard Anderson, Rebecca Allen, Ayo Kusamotu, Jose Maria Aznar, V. Michael Bove, Jr., Rodrigo Mesquita, Seymour Papert, Ted Selker, Ethan Beard (Google); John Roese (Nortel); Dandy Hsu (Quanta); Marcelo Claure (Brightstar); Gary Dillabough (eBay); Gustavo Arenas (AMD); Mike Evans (Red Hat); Ed Horowitz (SES Astra); Jeremy Philips (NewsCorp); Scott Soong (Chi Lin); Sehat Sutardja (Marvell); Joe Jacobson (MIT Media Lab); Steve Kaufman (Riverside); and Tom Meredith (MFI)',
32
33 'Pippy': 'Chris Ball, C. Scott Ananian, James Cameron, Anish Mangal ...'
34 }
3535
3636 import random
3737 import time
4646
4747 while True:
4848 reset()
49 print fill("OLPC would like to take this opportunity to acknowledge the community of people and projects that have made the XO laptop possible.", int(cols))
49 print(fill("OLPC would like to take this opportunity to acknowledge the community of people and projects that have made the XO laptop possible.", int(cols)))
5050
51 subsystem = random.choice(table.keys())
51 subsystem = random.choice(list(table.keys()))
5252 random.choice([red, green, yellow, blue, magenta, cyan])()
5353 #random.choice([normal, bold, underlined, inverse])()
54 print '\n', fill("%s: %s" % (subsystem, table[subsystem]), int(cols))
54 print('\n' + fill("%s: %s" % (subsystem, table[subsystem]), int(cols)))
5555 table.pop(subsystem)
5656 if len(table) == 0:
5757 break
00
1 name = raw_input('What is your name?\n')
2 print 'Hi, %s.' % name
1 name = input('What is your name?\n')
2 print('Hi, %s.' % name)
11
22 def while_backward_count(number):
33 while(number > -1):
4 print str(number) + " for the explosion!!!"
4 print(str(number) + " for the explosion!!!")
55 time.sleep(1)
66 number = number -1
77
8 number = input('Enter a number: ')
9 print "Let's count backward using a while sentence!!"
8 number = eval(input('Enter a number: '))
9 print("Let's count backward using a while sentence!!")
1010 while_backward_count(number)
11 print "Kaboooommm!!!, X_X"
11 print("Kaboooommm!!!, X_X")
22 num1 = num1 + 1
33 num2 = num2 + 1
44 for i in range(num1, num2):
5 print str(total) + " + " + str(i) + " = " + str(total+i)
5 print(str(total) + " + " + str(i) + " = " + str(total+i))
66 total = total + 1
77
8 number1 = int(input('Enter first number: '))
9 number2 = int(input('Enter second number: '))
8 number1 = int(eval(input('Enter first number: ')))
9 number2 = int(eval(input('Enter second number: ')))
1010
1111 if number1 < number2:
1212 sum_in_range(number1, number2)
22 num = 1
33
44 while(num < 5):
5 data = input("Please enter number " + str(num) + ":")
5 data = eval(input("Please enter number " + str(num) + ":"))
66 my_list.append(int(data))
77 num = num + 1
88
9 print "You entered the following numbers:"
10 print my_list
9 print("You entered the following numbers:")
10 print(my_list)
11
22 basket['bananas'] = 5
33
4 print basket
5 print "There are %d various items in the basket" % len(basket)
4 print(basket)
5 print("There are %d various items in the basket" % len(basket))
66
7 print basket['apples']
7 print(basket['apples'])
88 basket['apples'] = 8
9 print basket['apples']
9 print(basket['apples'])
1010
11 print basket.get('oranges', 'undefined')
12 print basket.get('cherries', 'undefined')
11 print(basket.get('oranges', 'undefined'))
12 print(basket.get('cherries', 'undefined'))
00 def is_valid_number(num):
11 try:
22 int(num)
3 print "You wrote a number"
3 print("You wrote a number")
44 except:
5 print "Sorry but, you didn't write a number"
5 print("Sorry but, you didn't write a number")
66
7 number1 = raw_input("Give me any input and I will tell you if it's a number: ")
7 number1 = input("Give me any input and I will tell you if it's a number: ")
88 is_valid_number(number1)
1111 self.set_position(Gtk.WindowPosition.CENTER_ALWAYS)
1212
1313 def button_cb(widget):
14 print 'click'
14 print('click')
1515
16 button = Gtk.Button('Button')
16 button = Gtk.Button(label='Button')
1717 fixed = Gtk.Fixed()
1818 fixed.put(button, 20, 30)
1919 button.connect('clicked', button_cb)
1212
1313 def entry_cb(widget, event):
1414 if Gdk.keyval_name(event.keyval) == 'Return':
15 print widget.get_text()
15 print(widget.get_text())
1616
1717 entry = Gtk.Entry()
1818 entry.connect('key_press_event', entry_cb)
1414 grid.set_column_homogeneous(True)
1515 grid.set_row_homogeneous(True)
1616
17 button = Gtk.Button('Button 1')
17 button = Gtk.Button(label='Button 1')
1818 grid.attach(button, 0, 0, 1, 1)
1919
20 button = Gtk.Button('Button 2')
20 button = Gtk.Button(label='Button 2')
2121 grid.attach(button, 0, 2, 1, 2)
2222
23 button = Gtk.Button('Button 3')
23 button = Gtk.Button(label='Button 3')
2424 grid.attach(button, 1, 1, 2, 2)
2525
26 button = Gtk.Button('Button 4')
26 button = Gtk.Button(label='Button 4')
2727 grid.attach(button, 2, 0, 2, 1)
2828
29 button = Gtk.Button('Button 5')
29 button = Gtk.Button(label='Button 5')
3030 grid.attach(button, 3, 3, 3, 3)
3131
3232 self.add(grid)
1616 scrolled.add(vbox)
1717
1818 for x in range(1, 16):
19 boton = Gtk.Button('Button %d' % x)
19 boton = Gtk.Button(label='Button %d' % x)
2020 vbox.pack_start(boton, False, False, 1)
2121
2222 self.add(scrolled)
2323 box = Gtk.HBox()
2424 textview.add_child_at_anchor(box, anchor)
2525
26 button = Gtk.Button('Click me')
26 button = Gtk.Button(label='Click me')
2727 button.connect('clicked', self._clicked_cb, textbuffer)
2828 box.pack_start(button, False, False, 0)
2929
3131
3232 def _activate_cb(self, button, button_index):
3333 if button.get_active():
34 print 'You selected %d button' % button_index
34 print('You selected %d button' % button_index)
3535
3636
3737 PyApp()
1818 menubar = Gtk.MenuBar()
1919 vbox.pack_start(menubar, False, False, 0)
2020
21 self.label = Gtk.Label('Activate a menu item')
21 self.label = Gtk.Label(label='Activate a menu item')
2222 vbox.pack_start(self.label, True, True, 0)
2323
2424 menu_file = Gtk.Menu()
102102 menu_edit.append(separator)
103103
104104 label = 'Vertical page'
105 item_vertical = Gtk.RadioMenuItem(label)
105 item_vertical = Gtk.RadioMenuItem(label=label)
106106 item_vertical.set_active(True)
107107 item_vertical.connect('toggled', self._toggled_cb, label)
108108 menu_edit.append(item_vertical)
126126
127127 menu_help = Gtk.Menu()
128128
129 item_help = Gtk.MenuItem('Ayuda')
129 item_help = Gtk.MenuItem(label='Ayuda')
130130 item_help.set_submenu(menu_help)
131131 menubar.append(item_help)
132132
00 import gi
11 gi.require_version('Gtk', '3.0')
22 from gi.repository import Gtk
3 from gi.repository import GObject
3 from gi.repository import GLib
44
55
66 class PyApp(Gtk.Window):
2222 self.bar1.set_vexpand(True)
2323 grid.attach(self.bar1, 1, 0, 3, 1)
2424
25 label = Gtk.Label("Una barra de progreso simple")
25 label = Gtk.Label(label="Una barra de progreso simple")
2626 label.set_hexpand(True)
2727 grid.attach(label, 1, 1, 1, 1)
2828
3131 self.bar2.set_vexpand(True)
3232 grid.attach(self.bar2, 1, 2, 3, 1)
3333
34 label = Gtk.Label("Una barra de progreso con pulsos")
34 label = Gtk.Label(label="Una barra de progreso con pulsos")
3535 grid.attach(label, 1, 3, 1, 1)
3636
37 GObject.timeout_add(200, self._update)
37 GLib.timeout_add(200, self._update)
3838
3939 self.add(grid)
4040 self.show_all()
3434 palette_box = Gtk.VBox()
3535 palette.set_content(palette_box)
3636
37 checkbutton1 = Gtk.CheckButton('Option 1')
37 checkbutton1 = Gtk.CheckButton(label='Option 1')
3838 palette_box.pack_start(checkbutton1, False, False, 0)
3939
40 checkbutton2 = Gtk.CheckButton('Option 2')
40 checkbutton2 = Gtk.CheckButton(label='Option 2')
4141 palette_box.pack_start(checkbutton2, False, False, 0)
4242
43 checkbutton3 = Gtk.CheckButton('Option 3')
43 checkbutton3 = Gtk.CheckButton(label='Option 3')
4444 palette_box.pack_start(checkbutton3, False, False, 0)
4545
4646 separator = Gtk.VSeparator()
4747 palette_box.pack_start(separator, False, False, 0)
4848
49 radio_button1 = Gtk.RadioButton('Option 1')
49 radio_button1 = Gtk.RadioButton(label='Option 1')
5050 palette_box.pack_start(radio_button1, False, False, 0)
5151
52 radio_button2 = Gtk.RadioButton('Option 2', group=radio_button1)
52 radio_button2 = Gtk.RadioButton(label='Option 2', group=radio_button1)
5353 palette_box.pack_start(radio_button2, False, False, 0)
5454
55 radio_button3 = Gtk.RadioButton('Option 3', group=radio_button1)
55 radio_button3 = Gtk.RadioButton(label='Option 3', group=radio_button1)
5656 palette_box.pack_start(radio_button3, False, False, 0)
5757
5858 palette_box.show_all()
00 # -*- coding: utf-8 -*-
1 name = raw_input('¿Cual es tu nombre?\n')
2 print 'Hi, %s.' % name
1 name = input('¿Cual es tu nombre?\n')
2 print('Hi, %s.' % name)
33
44 def while_cuenta_regresiva(numero):
55 while(numero > -1):
6 print str(numero) + ' para la explosion!!!'
6 print(str(numero) + ' para la explosion!!!')
77 time.sleep(1)
88 numero = numero -1
99
10 numero = input('Escribe un numero: ')
11 print 'Cuenta regresiva usando sentencia while!!'
10 numero = eval(input('Escribe un numero: '))
11 print('Cuenta regresiva usando sentencia while!!')
1212 while_cuenta_regresiva(numero)
13 print 'Kaboooommm!!!, X_X'
13 print('Kaboooommm!!!, X_X')
22 num1 = num1 + 1
33 num2 = num2 + 1
44 for i in range(num1, num2):
5 print str(total) + " + " + str(i) + " = " + str(total+i)
5 print(str(total) + " + " + str(i) + " = " + str(total+i))
66 total = total + 1
77
8 numero1 = int(input('Escribe primer numero: '))
9 numero2 = int(input('Escribe segundo numero: '))
8 numero1 = int(eval(input('Escribe primer numero: ')))
9 numero2 = int(eval(input('Escribe segundo numero: ')))
1010
1111 if numero1 > numero2:
1212 suma_en_rango(numero1, numero2)
22 num = 1
33
44 while(num < 5):
5 data = input("Porfavor escriba el numero " + str(num) + ":")
5 data = eval(input("Porfavor escriba el numero " + str(num) + ":"))
66 mi_lista.append(int(data))
77 num = num + 1
88
9 print "Tu escribiste los siguientes numeros:"
10 print mi_lista
9 print("Tu escribiste los siguientes numeros:")
10 print(mi_lista)
11
22 canasta['bananas'] = 5
33
4 print canasta
5 print "Hay %d tipos de fruta en la canasta" % len(canasta)
4 print(canasta)
5 print("Hay %d tipos de fruta en la canasta" % len(canasta))
66
7 print canasta['manzanas']
7 print(canasta['manzanas'])
88 canasta['manzanas'] = 8
9 print canasta['manzanas']
9 print(canasta['manzanas'])
1010
11 print canasta.get('naranjas', 'undefined')
12 print canasta.get('cerezas', 'undefined')
11 print(canasta.get('naranjas', 'undefined'))
12 print(canasta.get('cerezas', 'undefined'))
00 def es_numero_valido(num):
11 try:
22 int(num)
3 print "Escribio un numero"
3 print("Escribio un numero")
44 except:
5 print "Lo siento, no escribiste un numero"
5 print("Lo siento, no escribiste un numero")
66
7 number1 = input("Escriba y le dire si es un numero: ")
7 number1 = eval(input("Escriba y le dire si es un numero: "))
88 es_numero_valido(number1)
1010 self.set_size_request(250, 200)
1111
1212 def button_cb(widget):
13 print 'click'
13 print('click')
1414
15 button = Gtk.Button("Boton")
15 button = Gtk.Button(label="Boton")
1616 fixed = Gtk.Fixed()
1717 fixed.put(button, 20, 30)
1818 button.connect('clicked', button_cb)
1212
1313 def entry_cb(widget, event):
1414 if Gdk.keyval_name(event.keyval) == 'Return':
15 print widget.get_text()
15 print(widget.get_text())
1616
1717 entry = Gtk.Entry()
1818 entry.connect('key_press_event', entry_cb)
1414 grid.set_column_homogeneous(True)
1515 grid.set_row_homogeneous(True)
1616
17 button = Gtk.Button('Boton 1')
17 button = Gtk.Button(label='Boton 1')
1818 grid.attach(button, 0, 0, 1, 1)
1919
20 button = Gtk.Button('Boton 2')
20 button = Gtk.Button(label='Boton 2')
2121 grid.attach(button, 0, 2, 1, 2)
2222
23 button = Gtk.Button('Boton 3')
23 button = Gtk.Button(label='Boton 3')
2424 grid.attach(button, 1, 1, 2, 2)
2525
26 button = Gtk.Button('Boton 4')
26 button = Gtk.Button(label='Boton 4')
2727 grid.attach(button, 2, 0, 2, 1)
2828
29 button = Gtk.Button('Boton 5')
29 button = Gtk.Button(label='Boton 5')
3030 grid.attach(button, 3, 3, 3, 3)
3131
3232 self.add(grid)
1616 scrolled.add(vbox)
1717
1818 for x in range(1, 16):
19 boton = Gtk.Button('Boton %d' % x)
19 boton = Gtk.Button(label='Boton %d' % x)
2020 vbox.pack_start(boton, False, False, 1)
2121
2222 self.add(scrolled)
2323 box = Gtk.HBox()
2424 textview.add_child_at_anchor(box, anchor)
2525
26 button = Gtk.Button('Haz click en mi')
26 button = Gtk.Button(label='Haz click en mi')
2727 button.connect('clicked', self._clicked_cb, textbuffer)
2828 box.pack_start(button, False, False, 0)
2929
3131
3232 def _activate_cb(self, button, button_index):
3333 if button.get_active():
34 print 'Has seleccionado el boton %d' % button_index
34 print('Has seleccionado el boton %d' % button_index)
3535
3636
3737 PyApp()
1818 menubar = Gtk.MenuBar()
1919 vbox.pack_start(menubar, False, False, 0)
2020
21 self.label = Gtk.Label('Activa un item del menu')
21 self.label = Gtk.Label(label='Activa un item del menu')
2222 vbox.pack_start(self.label, True, True, 0)
2323
2424 menu_file = Gtk.Menu()
102102 menu_edit.append(separator)
103103
104104 label = 'Pagina vertical'
105 item_vertical = Gtk.RadioMenuItem(label)
105 item_vertical = Gtk.RadioMenuItem(label=label)
106106 item_vertical.set_active(True)
107107 item_vertical.connect('toggled', self._toggled_cb, label)
108108 menu_edit.append(item_vertical)
126126
127127 menu_help = Gtk.Menu()
128128
129 item_help = Gtk.MenuItem('Ayuda')
129 item_help = Gtk.MenuItem(label='Ayuda')
130130 item_help.set_submenu(menu_help)
131131 menubar.append(item_help)
132132
00 import gi
11 gi.require_version('Gtk', '3.0')
22 from gi.repository import Gtk
3 from gi.repository import GObject
3 from gi.repository import GLib
44
55
66 class PyApp(Gtk.Window):
2222 self.bar1.set_vexpand(True)
2323 grid.attach(self.bar1, 1, 0, 3, 1)
2424
25 label = Gtk.Label('Una barra de progreso simple')
25 label = Gtk.Label(label='Una barra de progreso simple')
2626 label.set_hexpand(True)
2727 grid.attach(label, 1, 1, 1, 1)
2828
3131 self.bar2.set_vexpand(True)
3232 grid.attach(self.bar2, 1, 2, 3, 1)
3333
34 label = Gtk.Label('Una barra de progreso con pulsos')
34 label = Gtk.Label(label='Una barra de progreso con pulsos')
3535 grid.attach(label, 1, 3, 1, 1)
3636
37 GObject.timeout_add(200, self._update)
37 GLib.timeout_add(200, self._update)
3838
3939 self.add(grid)
4040 self.show_all()
3434 palette_box = Gtk.VBox()
3535 palette.set_content(palette_box)
3636
37 checkbutton1 = Gtk.CheckButton('Opcion 1')
37 checkbutton1 = Gtk.CheckButton(label='Opcion 1')
3838 palette_box.pack_start(checkbutton1, False, False, 0)
3939
40 checkbutton2 = Gtk.CheckButton('Opcion 2')
40 checkbutton2 = Gtk.CheckButton(label='Opcion 2')
4141 palette_box.pack_start(checkbutton2, False, False, 0)
4242
43 checkbutton3 = Gtk.CheckButton('Opcion 3')
43 checkbutton3 = Gtk.CheckButton(label='Opcion 3')
4444 palette_box.pack_start(checkbutton3, False, False, 0)
4545
4646 separator = Gtk.VSeparator()
4747 palette_box.pack_start(separator, False, False, 0)
4848
49 radio_button1 = Gtk.RadioButton("Opcion 1")
49 radio_button1 = Gtk.RadioButton(label="Opcion 1")
5050 palette_box.pack_start(radio_button1, False, False, 0)
5151
52 radio_button2 = Gtk.RadioButton("Opcion 2", group=radio_button1)
52 radio_button2 = Gtk.RadioButton(label="Opcion 2", group=radio_button1)
5353 palette_box.pack_start(radio_button2, False, False, 0)
5454
55 radio_button3 = Gtk.RadioButton("Opcion 3", group=radio_button1)
55 radio_button3 = Gtk.RadioButton(label="Opcion 3", group=radio_button1)
5656 palette_box.pack_start(radio_button3, False, False, 0)
5757
5858 palette_box.show_all()
133133 if not files:
134134 return None
135135
136 files.sort()
137
136138 for _file in files:
137139 if _file.endswith('~'):
138140 continue
139141 entry = {"name": _(_file.capitalize()),
140142 "path": os.path.join(path, _file)}
141143
142 button = Gtk.Button(entry['name'])
144 button = Gtk.Button(label=entry['name'])
143145 button.set_tooltip_text(entry['path'])
144146 button.set_has_tooltip(False)
145147 button.connect('clicked', self._destroy, True)
0 #!/usr/bin/env python
0 #!/usr/bin/python3
11 # -*- coding: utf-8 -*-
22 # Copyright (C) 2013 Ignacio Rodríguez <ignacio@sugarlabs.org>
33 #
0 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
1 <!-- Created with Inkscape (http://www.inkscape.org/) -->
2
3 <svg
4 xmlns:dc="http://purl.org/dc/elements/1.1/"
5 xmlns:cc="http://creativecommons.org/ns#"
6 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7 xmlns:svg="http://www.w3.org/2000/svg"
8 xmlns="http://www.w3.org/2000/svg"
9 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
10 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11 width="32px"
12 height="32px"
13 id="svg2985"
14 version="1.1"
15 inkscape:version="0.48.3.1 r9886"
16 sodipodi:docname="dark-theme.svg">
17 <defs
18 id="defs2987" />
19 <sodipodi:namedview
20 id="base"
21 pagecolor="#ffffff"
22 bordercolor="#666666"
23 borderopacity="1.0"
24 inkscape:pageopacity="0.0"
25 inkscape:pageshadow="2"
26 inkscape:zoom="12.219689"
27 inkscape:cx="12.682313"
28 inkscape:cy="14.416406"
29 inkscape:current-layer="layer1"
30 showgrid="true"
31 inkscape:grid-bbox="true"
32 inkscape:document-units="px"
33 inkscape:snap-global="false"
34 objecttolerance="10000"
35 guidetolerance="10000"
36 showguides="false"
37 inkscape:window-width="1360"
38 inkscape:window-height="712"
39 inkscape:window-x="0"
40 inkscape:window-y="27"
41 inkscape:window-maximized="1">
42 <sodipodi:guide
43 position="0,0"
44 orientation="0,32"
45 id="guide3767" />
46 <sodipodi:guide
47 position="32,0"
48 orientation="-32,0"
49 id="guide3769" />
50 <sodipodi:guide
51 position="32,32"
52 orientation="0,-32"
53 id="guide3771" />
54 <sodipodi:guide
55 position="0,32"
56 orientation="32,0"
57 id="guide3773" />
58 <inkscape:grid
59 type="xygrid"
60 id="grid3775"
61 empspacing="5"
62 visible="true"
63 enabled="true"
64 snapvisiblegridlinesonly="true" />
65 <sodipodi:guide
66 position="0,0"
67 orientation="0,32"
68 id="guide3777" />
69 <sodipodi:guide
70 position="32,0"
71 orientation="-32,0"
72 id="guide3779" />
73 <sodipodi:guide
74 position="32,32"
75 orientation="0,-32"
76 id="guide3781" />
77 <sodipodi:guide
78 position="0,32"
79 orientation="32,0"
80 id="guide3783" />
81 <sodipodi:guide
82 position="0,0"
83 orientation="0,32"
84 id="guide3785" />
85 <sodipodi:guide
86 position="32,0"
87 orientation="-32,0"
88 id="guide3787" />
89 <sodipodi:guide
90 position="32,32"
91 orientation="0,-32"
92 id="guide3789" />
93 <sodipodi:guide
94 position="0,32"
95 orientation="32,0"
96 id="guide3791" />
97 </sodipodi:namedview>
98 <metadata
99 id="metadata2990">
100 <rdf:RDF>
101 <cc:Work
102 rdf:about="">
103 <dc:format>image/svg+xml</dc:format>
104 <dc:type
105 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
106 <dc:title></dc:title>
107 </cc:Work>
108 </rdf:RDF>
109 </metadata>
110 <g
111 id="layer1"
112 inkscape:label="Layer 1"
113 inkscape:groupmode="layer">
114 <rect
115 style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
116 id="rect2993"
117 width="31.022896"
118 height="31.194761"
119 x="0.66299194"
120 y="0.60228604"
121 ry="2.9258621" />
122 <text
123 xml:space="preserve"
124 style="font-size:11.23703003px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
125 x="5.8393445"
126 y="26.455677"
127 id="text3763"
128 sodipodi:linespacing="125%"><tspan
129 sodipodi:role="line"
130 id="tspan3765"
131 x="5.8393445"
132 y="26.455677"
133 style="font-size:30.90183258px;fill:#ffffff;fill-opacity:1">A</tspan></text>
134 </g>
135 </svg>
0 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
1 <!-- Created with Inkscape (http://www.inkscape.org/) -->
2
3 <svg
4 xmlns:dc="http://purl.org/dc/elements/1.1/"
5 xmlns:cc="http://creativecommons.org/ns#"
6 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7 xmlns:svg="http://www.w3.org/2000/svg"
8 xmlns="http://www.w3.org/2000/svg"
9 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
10 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11 width="32px"
12 height="32px"
13 id="svg2985"
14 version="1.1"
15 inkscape:version="0.48.3.1 r9886"
16 sodipodi:docname="dark-theme.svg">
17 <defs
18 id="defs2987" />
19 <sodipodi:namedview
20 id="base"
21 pagecolor="#ffffff"
22 bordercolor="#666666"
23 borderopacity="1.0"
24 inkscape:pageopacity="0.0"
25 inkscape:pageshadow="2"
26 inkscape:zoom="12.219689"
27 inkscape:cx="12.682313"
28 inkscape:cy="14.416406"
29 inkscape:current-layer="layer1"
30 showgrid="true"
31 inkscape:grid-bbox="true"
32 inkscape:document-units="px"
33 inkscape:snap-global="false"
34 objecttolerance="10000"
35 guidetolerance="10000"
36 showguides="false"
37 inkscape:window-width="1360"
38 inkscape:window-height="712"
39 inkscape:window-x="0"
40 inkscape:window-y="27"
41 inkscape:window-maximized="1">
42 <sodipodi:guide
43 position="0,0"
44 orientation="0,32"
45 id="guide3767" />
46 <sodipodi:guide
47 position="32,0"
48 orientation="-32,0"
49 id="guide3769" />
50 <sodipodi:guide
51 position="32,32"
52 orientation="0,-32"
53 id="guide3771" />
54 <sodipodi:guide
55 position="0,32"
56 orientation="32,0"
57 id="guide3773" />
58 <inkscape:grid
59 type="xygrid"
60 id="grid3775"
61 empspacing="5"
62 visible="true"
63 enabled="true"
64 snapvisiblegridlinesonly="true" />
65 <sodipodi:guide
66 position="0,0"
67 orientation="0,32"
68 id="guide3777" />
69 <sodipodi:guide
70 position="32,0"
71 orientation="-32,0"
72 id="guide3779" />
73 <sodipodi:guide
74 position="32,32"
75 orientation="0,-32"
76 id="guide3781" />
77 <sodipodi:guide
78 position="0,32"
79 orientation="32,0"
80 id="guide3783" />
81 <sodipodi:guide
82 position="0,0"
83 orientation="0,32"
84 id="guide3785" />
85 <sodipodi:guide
86 position="32,0"
87 orientation="-32,0"
88 id="guide3787" />
89 <sodipodi:guide
90 position="32,32"
91 orientation="0,-32"
92 id="guide3789" />
93 <sodipodi:guide
94 position="0,32"
95 orientation="32,0"
96 id="guide3791" />
97 </sodipodi:namedview>
98 <metadata
99 id="metadata2990">
100 <rdf:RDF>
101 <cc:Work
102 rdf:about="">
103 <dc:format>image/svg+xml</dc:format>
104 <dc:type
105 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
106 <dc:title></dc:title>
107 </cc:Work>
108 </rdf:RDF>
109 </metadata>
110 <g
111 id="layer1"
112 inkscape:label="Layer 1"
113 inkscape:groupmode="layer">
114 <rect
115 style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
116 id="rect2993"
117 width="31.022896"
118 height="31.194761"
119 x="0.66299194"
120 y="0.60228604"
121 ry="2.9258621" />
122 <text
123 xml:space="preserve"
124 style="font-size:11.23703002999999967px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
125 x="5.8393445"
126 y="26.455677"
127 id="text3763"
128 sodipodi:linespacing="125%"><tspan
129 sodipodi:role="line"
130 id="tspan3765"
131 x="5.8393445"
132 y="26.455677"
133 style="font-size:30.90183258000000066px;fill:#000000;fill-opacity:1">A</tspan></text>
134 </g>
135 </svg>
+0
-20
library/LICENSE less more
0 This software is covered under the zlib license.
1
2 C++ version Copyright (c) 2006-2011 Erin Catto http://www.box2d.org
3 Python version Copyright (c) 2008-2011 Ken Lauer / sirkne at gmail dot com
4
5 Implemented using the pybox2d SWIG interface for Box2D (pybox2d.googlecode.com)
6
7 This software is provided 'as-is', without any express or implied
8 warranty. In no event will the authors be held liable for any damages
9 arising from the use of this software.
10 Permission is granted to anyone to use this software for any purpose,
11 including commercial applications, and to alter it and redistribute it
12 freely, subject to the following restrictions:
13 1. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would be
16 appreciated but is not required.
17 2. Altered source versions must be plainly marked as such, and must not be
18 misrepresented as being the original software.
19 3. This notice may not be removed or altered from any source distribution.
3838 if c == delimit:
3939 break
4040 buf.append(c)
41 return ''.join(buf)
41 return b''.join(buf)
4242 oldattr = termios.tcgetattr(fd) # make sure we can restore tty state
4343 tty.setraw(fd, termios.TCSANOW) # set to raw mode.
44 os.write(fd, '\x1B[18t') # write the 'query screen size' command
45 read_to_delimit('\x1b') # parse response.
46 read_to_delimit('[')
47 size = read_to_delimit('t')
44 os.write(fd, b'\x1B[18t') # write the 'query screen size' command
45 read_to_delimit(b'\x1b') # parse response.
46 read_to_delimit(b'[')
47 size = read_to_delimit(b't')
4848 # Output can be '8;rows;cols' or 'rows;cols' depending on vte version.
4949 # (SL #843)
50 values = size.split(';')
50 values = size.split(b';')
5151 if len(values) == 3:
5252 rows = int(values[1])
5353 cols = int(values[2])
7373 if c == delimit:
7474 break
7575 buf.append(c)
76 return ''.join(buf)
76 return b''.join(buf)
7777 oldattr = termios.tcgetattr(fd) # make sure we can restore tty state
7878 tty.setraw(fd, termios.TCSANOW) # set to raw mode.
79 os.write(fd, '\x1B[6n') # Report Cursor Position
80 read_to_delimit('\x1b') # parse response.
81 read_to_delimit('[')
82 row = int(read_to_delimit(';'))
83 col = int(read_to_delimit('R'))
79 os.write(fd, b'\x1B[6n') # Report Cursor Position
80 read_to_delimit(b'\x1b') # parse response.
81 read_to_delimit(b'[')
82 row = int(read_to_delimit(b';'))
83 col = int(read_to_delimit(b'R'))
8484 termios.tcsetattr(fd, termios.TCSANOW, oldattr) # reset tty
8585 return col, row
8686
7575 clock = _default_clock
7676 clock.tick(max_fps)
7777
78 if pygame.event.peek(xrange(pygame.NOEVENT, pygame.USEREVENT)):
78 if pygame.event.peek(list(range(pygame.NOEVENT, pygame.USEREVENT))):
7979 # we're not idle anymore.
8080 _last_event_time = pygame.time.get_ticks()
8181 elif (pygame.time.get_ticks() - _last_event_time) >= idle_timeout * 1000:
44 # Use own 'elements' modified module
55 # http://bugs.sugarlabs.org/ticket/3361
66 # sys.path.append('library/pippy/physics/Elements-0.13-py2.5.egg')
7 from myelements import Elements
7 from .myelements import Elements
394394 try:
395395 polyDef.shape.valid
396396 except ValueError:
397 print "concavePoly: Created an invalid polygon!"
397 print("concavePoly: Created an invalid polygon!")
398398 return None
399399
400400 body.CreateFixture(polyDef)
3838
3939 # init callback dict to avoid those slow try
4040 # (especially for self.get, as it is called *often*)
41 for i in xrange(10):
41 for i in range(10):
4242 self.callbacks[i] = []
4343
4444 def add(self, callback_type, callback_handler, *args):
6161 if self.parent.listener is None:
6262 self.parent.listener = kContactListener(self.get)
6363 self.parent.world.SetContactListener(self.parent.listener)
64 print "* ContactListener added"
64 print("* ContactListener added")
6565
6666 # Get callback dict for this callback_type
6767 c = self.callbacks[callback_type]
6969
7070 Return: Class draw_pygame()
7171 """
72 print "* Pygame selected as renderer"
72 print("* Pygame selected as renderer")
7373 from pygame import draw
7474 from pygame import Rect
7575
168168
169169 Return: Class draw_cairo()
170170 """
171 print "* Cairo selected as renderer"
171 print("* Cairo selected as renderer")
172172 import cairo
173173 self.cairo = cairo
174174 self.set_drawing_method(drawMethod)
186186 """
187187 self.da = da
188188 self.window = da.window
189 print "* Cairo renderer drawing area set"
189 print("* Cairo renderer drawing area set")
190190
191191 def set_drawing_method(self, type):
192192 """ type = filled, image """
334334 surface .... not used with pyglet
335335 lineWidth ..
336336 """
337 print "* OpenGL_Pyglet selected as renderer"
337 print("* OpenGL_Pyglet selected as renderer")
338338
339339 from pyglet import gl
340340 self.gl = gl
3131 try:
3232 import Box2D as box2d
3333 except:
34 print 'Could not load the pybox2d library (Box2D).'
35 print 'Please run "setup.py install" to install the dependencies.'
36 print
37 print 'Or recompile pybox2d for your system and python version.'
38 print "See http://code.google.com/p/pybox2d"
34 print('Could not load the pybox2d library (Box2D).')
35 print('Please run "setup.py install" to install the dependencies.')
36 print()
37 print('Or recompile pybox2d for your system and python version.')
38 print("See http://code.google.com/p/pybox2d")
3939 exit()
4040
4141 # Standard Imports
376376 self.renderer.draw_polygon(clr, points)
377377
378378 else:
379 print "unknown shape type:%d" % shape.type
379 print("unknown shape type:%d" % shape.type)
380380
381381 for joint in self.world.joints:
382382 p2 = joint.anchorA
409409 self.mouseJoint.target = (x, y)
410410
411411 def pickle_save(self, fn, additional_vars={}):
412 import cPickle as pickle
412 import pickle as pickle
413413 self.add.remove_mouseJoint()
414414
415415 if not additional_vars and hasattr(self, '_pickle_vars'):
422422 try:
423423 pickle.dump(save_values, open(fn, 'wb'))
424424 except Exception as s:
425 print 'Pickling failed: ', s
425 print('Pickling failed: ', s)
426426 return
427427
428 print 'Saved to %s' % fn
428 print('Saved to %s' % fn)
429429
430430 def pickle_load(self, fn, set_vars=True, additional_vars=[]):
431431 """
433433 additional_vars is a dictionary to be populated with the
434434 loaded variables.
435435 """
436 import cPickle as pickle
436 import pickle as pickle
437437 try:
438438 world, variables = pickle.load(open(fn, 'rb'))
439439 world = world._pickle_finalize()
440440 variables = box2d.pickle_fix(world, variables, 'load')
441441 except Exception as s:
442 print 'Error while loading world: ', s
442 print('Error while loading world: ', s)
443443 return
444444
445445 self.world = world
446446
447447 if set_vars:
448448 # reset the additional saved variables:
449 for var, value in variables.items():
449 for var, value in list(variables.items()):
450450 if hasattr(self, var):
451451 setattr(self, var, value)
452452 else:
453 print 'Unknown property %s=%s' % (var, value)
454
455 print 'Loaded from %s' % fn
453 print('Unknown property %s=%s' % (var, value))
454
455 print('Loaded from %s' % fn)
456456
457457 return variables
458458
530530 addvars = additional_vars
531531 trackinfo = addvars['trackinfo']
532532 backup = trackinfo
533 for key, info in backup.iteritems():
533 for key, info in backup.items():
534534 if not info[3]:
535535 try:
536536 trackinfo[key][0] = info[0].userData['saveid']
625625
626626 self.additional_vars = {}
627627 addvars = {}
628 for (k, v) in worldmodel['additional_vars'].items():
628 for (k, v) in list(worldmodel['additional_vars'].items()):
629629 addvars[k] = v
630630
631631 if serialized and 'trackinfo' in addvars:
632632 trackinfo = addvars['trackinfo']
633 for key, info in trackinfo.iteritems():
633 for key, info in trackinfo.items():
634634 if not info[3]:
635635 addvars['trackinfo'][key][0] = \
636636 self.getBodyWithSaveId(info[0])
159159 focus_in = self.focus
160160
161161 found = False
162 for i in xrange(len(self.items)):
162 for i in range(len(self.items)):
163163 item = self.items[i]
164164 if item.pos_inside(pos):
165165 found = True
194194
195195 surface.blit(s, (0, 0))
196196
197 for i in xrange(len(self.items)):
197 for i in range(len(self.items)):
198198 item = self.items[i]
199199 if not item.parent:
200200 x, y, w, h = item.rect
110110
111111 # Get maximum difference
112112 alpha_diff = fabs(alphas[-1] - alphas[0])
113 print "alpha difference:", alpha_diff
113 print("alpha difference:", alpha_diff)
114114
115115 if alpha_diff < tolerance:
116116 return True
140140 dir = None
141141 is_convex = True
142142
143 for i in xrange(len(vertices) - 1):
143 for i in range(len(vertices) - 1):
144144 if i == 0:
145145 p_old = vertices[i]
146146 continue
172172 angle = degrees(acos(a / (b * c)))
173173 except:
174174 # cos=1.0
175 print "cos=", a / (b * c)
175 print("cos=", a / (b * c))
176176 continue
177177
178178 # Check if inside tolerance
1818 import dbus
1919 import gobject
2020
21 from sugar.datastore import datastore
21 from sugar3.datastore import datastore
2222
2323 DS_DBUS_SERVICE = 'org.laptop.sugar.DataStore'
2424 DS_DBUS_INTERFACE = 'org.laptop.sugar.DataStore'
8181 return len(self._array)
8282
8383 def __getitem__(self, key):
84 if isinstance(key, basestring):
84 if isinstance(key, str):
8585 return self._dict[key]
8686 else:
8787 return self._array[key]
279279 SCREEN_SIZE = 10
280280
281281 def mock_debug(string):
282 print "\tDEBUG: %s" % string
282 print("\tDEBUG: %s" % string)
283283 logging.debug = mock_debug
284284
285285 def mock_find(query, sorting=None, limit=None, offset=None, properties=[]):
286 print "mock_find %r %r" % (offset, (offset + limit))
286 print("mock_find %r %r" % (offset, (offset + limit)))
287287
288288 if limit is None or offset is None:
289289 raise RuntimeError("Unimplemented test.")
298298
299299 result_set = find({})
300300
301 print "Get first page"
301 print("Get first page")
302302 objects = result_set.read(SCREEN_SIZE)
303 print [obj.object_id for obj in objects]
304 assert range(0, SCREEN_SIZE) == [obj.object_id for obj in objects]
305 print ""
306
307 print "Scroll to 5th item"
303 print([obj.object_id for obj in objects])
304 assert list(range(0, SCREEN_SIZE)) == [obj.object_id for obj in objects]
305 print("")
306
307 print("Scroll to 5th item")
308308 result_set.seek(5)
309309 objects = result_set.read(SCREEN_SIZE)
310 print [obj.object_id for obj in objects]
311 assert range(5, SCREEN_SIZE + 5) == [obj.object_id for obj in objects]
312 print ""
313
314 print "Scroll back to beginning"
310 print([obj.object_id for obj in objects])
311 assert list(range(5, SCREEN_SIZE + 5)) == [obj.object_id for obj in objects]
312 print("")
313
314 print("Scroll back to beginning")
315315 result_set.seek(0)
316316 objects = result_set.read(SCREEN_SIZE)
317 print [obj.object_id for obj in objects]
318 assert range(0, SCREEN_SIZE) == [obj.object_id for obj in objects]
319 print ""
320
321 print "Hit PgDn five times"
317 print([obj.object_id for obj in objects])
318 assert list(range(0, SCREEN_SIZE)) == [obj.object_id for obj in objects]
319 print("")
320
321 print("Hit PgDn five times")
322322 for i in range(0, 5):
323323 result_set.seek((i + 1) * SCREEN_SIZE)
324324 objects = result_set.read(SCREEN_SIZE)
325 print [obj.object_id for obj in objects]
326 assert range((i + 1) * SCREEN_SIZE, (i + 2) * SCREEN_SIZE) == \
325 print([obj.object_id for obj in objects])
326 assert list(range((i + 1) * SCREEN_SIZE, (i + 2) * SCREEN_SIZE)) == \
327327 [obj.object_id for obj in objects]
328 print ""
329
330 print "Hit PgUp five times"
328 print("")
329
330 print("Hit PgUp five times")
331331 for i in range(0, 5)[::-1]:
332332 result_set.seek(i * SCREEN_SIZE)
333333 objects = result_set.read(SCREEN_SIZE)
334 print [obj.object_id for obj in objects]
335 assert range(i * SCREEN_SIZE, (i + 1) * SCREEN_SIZE) == \
334 print([obj.object_id for obj in objects])
335 assert list(range(i * SCREEN_SIZE, (i + 1) * SCREEN_SIZE)) == \
336336 [obj.object_id for obj in objects]
337 print ""
337 print("")
3030 from gettext import gettext as _
3131
3232 from sugar3.graphics.toolbutton import ToolButton
33 from sugar3.graphics.alert import ConfirmationAlert
3334
3435 from texteditor import TextBufferCollaberizer
3536
4344 'tab-close': (GObject.SignalFlags.RUN_FIRST,
4445 None,
4546 ([GObject.TYPE_PYOBJECT])),
47 'tab-rename': (GObject.SignalFlags.RUN_FIRST,
48 None,
49 ([GObject.TYPE_PYOBJECT, GObject.TYPE_PYOBJECT, ])),
4650 }
4751
4852 def __init__(self, child, label, path, tabs, editor_id):
7680 self._close_button = button
7781 tab_object.append(self)
7882
79 def set_text(self, title):
80 self._label.set_text(title)
83 def set_text(self, label):
84 self.label_text = label
85 self._label.set_text(self.label_text)
8186
8287 def get_text(self):
8388 return self._label.get_text()
110115 self.label_entry.show()
111116
112117 def _label_entry_cb(self, entry, focus=None):
113 if self.label_entry.get_text() != "":
114 self.label_text = self.label_entry.get_text()
118 label = self.label_entry.get_text()
119 if label != "":
120 if label != self.label_text:
121 self.label_text = label
122 self.emit('tab-rename', self.child, label)
115123 self.label_box.show_all()
116124 self.label_entry.hide()
117125 self._label.set_text(self.label_text)
128136 'tab-added': (GObject.SignalFlags.RUN_FIRST,
129137 None,
130138 ([])),
139 'tab-renamed': (GObject.SignalFlags.RUN_FIRST,
140 None,
141 ([GObject.TYPE_PYOBJECT, GObject.TYPE_PYOBJECT, ])),
142 'tab-closed': (GObject.SignalFlags.RUN_FIRST,
143 None,
144 ([GObject.TYPE_PYOBJECT, ])),
131145 }
132146
133147 def __init__(self):
146160
147161 def __init__(self, buffer_text, editor_id, collab):
148162 GtkSource.View.__init__(self)
163
164 self._css_provider = Gtk.CssProvider()
165 self.set_light()
166 self.get_style_context().add_provider(
167 self._css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
149168
150169 text_buffer = GtkSource.Buffer()
151170 TextBufferCollaberizer(text_buffer, editor_id, collab)
188207 Pango.FontDescription(
189208 'Monospace {}'.format(font_size)))
190209
210 def set_dark(self):
211 theme = b"""
212 textview text {
213 background: @black;
214 color: @white;
215 }"""
216 self._css_provider.load_from_data(theme)
217
218 def set_light(self):
219 theme = b"""
220 textview text {
221 background: @white;
222 color: @black;
223 }"""
224 self._css_provider.load_from_data(theme)
191225
192226 class SourceNotebook(AddNotebook):
193227 def __init__(self, activity, collab):
212246 text_view.show()
213247 text_view.grab_focus()
214248 if label:
215 self.tablabel = TabLabel(codesw, label, path, self, editor_id)
249 tablabel = TabLabel(codesw, label, path, self, editor_id)
216250 else:
217 self.tablabel = TabLabel(codesw,
251 tablabel = TabLabel(codesw,
218252 _('New Source File %d' % self.last_tab),
219253 path, self, editor_id)
220 self.tablabel.connect('tab-close', self._tab_closed_cb)
254 tablabel.connect('tab-close', self._tab_closed_cb)
255 tablabel.connect('tab-rename', self._tab_renamed_cb)
221256 self.connect('key-press-event', self._key_press_cb)
222257
223258 codesw.show_all()
224259
225 index = self.append_page(codesw, self.tablabel)
260 index = self.append_page(codesw, tablabel)
226261 self.props.page = index # Set new page as active tab
227262
228263 # Show close only when tabs > 1
238273 if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
239274 if key_name == 'w':
240275 if self.get_n_pages() > 1:
241 index = self.get_current_page()
242 self.remove_page(index)
243 tab_object.pop(index)
244 try:
245 logging.debug('deleting session_data %s' %
246 str(self.activity.session_data[index]))
247 del self.activity.session_data[index]
248 except IndexError:
249 pass
250 # Show close only when tabs > 1
251 only_widget = self.get_nth_page(0)
252 if self.get_n_pages() == 1:
253 self.get_tab_label(only_widget).hide_close_button()
254 else:
255 self.get_tab_label(only_widget).show_close_button()
276 self._tab_closed_cb(
277 None, self.get_nth_page(self.get_current_page()))
256278 elif key_name in ['1', '2', '3', '4', '5', '6', '7', '8', '9']:
257279 if int(key_name) <= self.get_n_pages():
258280 self.set_current_page(int(key_name) - 1)
279301 def set_current_label(self, label):
280302 child = self.get_nth_page(self.get_current_page())
281303 widget = self.get_tab_label(child)
282 widget.set_text(self._purify_file(label))
304 widget.set_text(self.purify_name(label))
283305
284306 def set_current_path(self, path):
285307 child = self.get_nth_page(self.get_current_page())
292314 return text_buffer
293315
294316 def get_text_view(self):
295 tab = self.get_nth_page(self.get_current_page()).get_children()
317 page = self.get_current_page()
318 if page == -1:
319 return None
320 tab = self.get_nth_page(page).get_children()
296321 text_view = tab[0]
297322 return text_view
298323
299 def _purify_file(self, label):
324 def purify_name(self, label):
300325 if not label.endswith('.py'):
301326 label = label + '.py'
302327
303328 label = label.replace(' ', '_')
304 if isinstance(label, unicode):
305 label = \
306 unicodedata.normalize('NFKD', label).encode('ascii', 'ignore')
307
308329 return label
309330
310331 def get_all_data(self):
317338 for i in range(0, self.get_n_pages()):
318339 child = self.get_nth_page(i)
319340
320 label = self._purify_file(self.get_tab_label(child).get_text())
341 label = self.get_tab_label(child).get_text()
321342 names.append(label)
322343
323344 path = self.get_tab_label(child).get_path()
337358 def get_current_file_name(self):
338359 child = self.get_nth_page(self.get_current_page())
339360 label = self.get_tab_label(child).get_text()
340 label = self._purify_file(label)
361 label = self.purify_name(label)
341362
342363 return label
343364
344365 def set_font_size(self, font_size):
345366 self._font_size = font_size
346367
347 for i in xrange(self.get_n_pages()):
368 for i in range(self.get_n_pages()):
348369 page = self.get_nth_page(i)
349370 children = page.get_children()
350371 children[0].set_font_size(self._font_size)
351372
352373 def get_font_size(self):
353374 return self._font_size
375
376 def set_light(self):
377 for i in range(self.get_n_pages()):
378 page = self.get_nth_page(i)
379 children = page.get_children()
380 children[0].set_light()
381
382 def set_dark(self):
383 for i in range(self.get_n_pages()):
384 page = self.get_nth_page(i)
385 children = page.get_children()
386 children[0].set_dark()
354387
355388 def child_exited_cb(self, *args):
356389 '''Called whenever a child exits. If there's a handler, runadd it.'''
359392 if h is not None:
360393 h()
361394
362 def _tab_closed_cb(self, notebook, child):
363 index = self.page_num(child)
395 def __tab_close(self, index):
364396 self.remove_page(index)
365397 tab_object.pop(index)
366398 # Hide close button if only one tab present
375407 except IndexError:
376408 pass
377409
378 def rename_tab(self, iterator1):
379 for i in range(iterator1, self.get_n_pages()):
380 mo = re.match('New Source File ', tab_object[i].get_text())
381 if mo is not None:
382 tab_object[i].label_text = 'New Source File ' + \
383 str(self.last_tab + 1)
384 else:
385 tab_object[i].label_text = tab_object[i].get_text()
386 tab_object[i]._label.set_text(tab_object[i].label_text)
410 def _tab_closed_cb(self, notebook, child):
411 index = self.page_num(child)
412
413 page = self.get_nth_page(index)
414
415 text_buffer = page.get_children()[0].get_buffer()
416 empty = text_buffer.get_char_count() == 0
417
418 if empty:
419 self.__tab_close(index)
420 self.emit('tab-closed', index)
421 return
422
423 tablabel = self.get_tab_label(page)
424 path = tablabel.get_path()
425 example = self.activity.is_example(path)
426 pristine = not text_buffer.get_modified()
427
428 if example and pristine:
429 self.__tab_close(index)
430 self.emit('tab-closed', index)
431 return
432
433 alert = ConfirmationAlert()
434 alert.props.title = _('Erase')
435 alert.props.msg = _('Do you want to permanently erase \"%s\"?') \
436 % tablabel.get_text()
437 alert.connect('response', self._tab_close_alert_response_cb, index)
438 self.activity.add_alert(alert)
439
440 def _tab_close_alert_response_cb(self, alert, response_id, index):
441 self.activity.remove_alert(alert)
442
443 if response_id is not Gtk.ResponseType.OK:
444 return
445
446 logging.debug(
447 'SourceNotebook._tab_close_alert_response_cb %r' % (index))
448 self.__tab_close(index)
449 self.emit('tab-closed', index)
450
451 def close_tab(self, index):
452 logging.debug('SourceNotebook.close_tab %r' % (index))
453 self.__tab_close(index)
454
455 def _tab_renamed_cb(self, tablabel, child, name):
456 index = self.page_num(child)
457 logging.debug('SourceNotebook._tab_renamed_cb %r %r' % (index, name))
458 self.emit('tab-renamed', index, name)
459
460 def rename_tab(self, index, name):
461 logging.debug('SourceNotebook.rename_tab %r %r' % (index, name))
462 page = self.get_nth_page(index)
463 tablabel = self.get_tab_label(page)
464 tablabel.set_text(name)
0 #!/usr/bin/python
0 #!/usr/bin/python3
11 # -*- coding: utf-8 -*-
22 #
33 # Copyright (C) 2007,2008,2009 Chris Ball, based on Collabora's
2323 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
2424
2525 """Pippy Activity: A simple Python programming activity ."""
26 from __future__ import with_statement
26
2727
2828 import re
2929 import os
4141 from dbus.mainloop.glib import DBusGMainLoop
4242
4343 from gi import require_version
44 require_version('Gdk', '3.0')
4445 require_version('Gtk', '3.0')
46 from gi.repository import Gdk
4547 from gi.repository import Gtk
46 from gi.repository import Gdk
4748 from gi.repository import GLib
4849 from gi.repository import Pango
4950 try:
8990
9091 text_buffer = None
9192 # magic prefix to use utf-8 source encoding
92 PYTHON_PREFIX = '''#!/usr/bin/python
93 PYTHON_PREFIX = '''#!/usr/bin/python3
9394 # -*- coding: utf-8 -*-
9495 '''
9596 # Force category names into Pootle
9899
99100 _logger = logging.getLogger('pippy-activity')
100101
101 DISTUTILS_SETUP_SCRIPT = """#!/usr/bin/python
102 DISTUTILS_SETUP_SCRIPT = """#!/usr/bin/python3
102103 # -*- coding: utf-8 -*-
103104 from distutils.core import setup
104105 setup(name='{modulename}',
109110 )
110111 """ # This is .format()'ed with the list of the file names.
111112
112 DISTUTILS_SETUP_SCRIPT = """#!/usr/bin/python
113 DISTUTILS_SETUP_SCRIPT = """#!/usr/bin/python3
113114 # -*- coding: utf-8 -*-
114115 from distutils.core import setup
115116 setup(name='{modulename}',
159160 self.after_init()
160161 self.connect("notify::active", self.__active_cb)
161162 self._collab.setup()
163
164 def focus():
165 """ Enforce focus for the text view once. """
166 widget = self.get_toplevel().get_focus()
167 textview = self._source_tabs.get_text_view()
168 if widget is None and textview is not None:
169 textview.grab_focus()
170 return True
171 return False
172 GLib.timeout_add(100, focus)
162173
163174 def initialize_display(self):
164175 '''Build activity toolbar with title input, share button and export
248259 self._toggle_output.connect('toggled', self._toggle_output_cb)
249260 actions_toolbar.insert(self._toggle_output, -1)
250261 self._toggle_output.show()
262
263 self._inverted_colors = ToggleToolButton(icon_name='dark-theme')
264 self._inverted_colors.set_tooltip(_('Inverted Colors'))
265 self._inverted_colors.set_accelerator('<Ctrl><Shift>I')
266 self._inverted_colors.connect(
267 'toggled', self.__inverted_colors_toggled_cb)
268 actions_toolbar.insert(self._inverted_colors, -1)
269 self._inverted_colors.show()
251270
252271 icons_path = os.path.join(get_bundle_path(), 'icons')
253272
289308 icon_color = Gtk.Image()
290309 icon_color.set_from_file(os.path.join(icons_path, 'eraser_color.svg'))
291310 icon_color.show()
292 button = ToolButton(label=_('Clear'))
311 button = ToolButton(label=_('Clear output panel'))
293312 button.props.accelerator = _('<alt>c')
294313 button.set_icon_widget(icon_bw)
295314 button.connect('clicked', self._clear_button_cb)
296315 button.connect('clicked', self._flash_cb,
297316 dict({'bw': icon_bw, 'color': icon_color}))
298 button.set_tooltip(_('Clear'))
317 button.set_tooltip(_('Clear output panel'))
299318 actions_toolbar.insert(button, -1)
300319 button.show()
301320
385404
386405 self._source_tabs = SourceNotebook(self, self._collab)
387406 self._source_tabs.connect('tab-added', self._add_source_cb)
407 self._source_tabs.connect('tab-renamed', self._rename_source_cb)
408 self._source_tabs.connect('tab-closed', self._close_source_cb)
388409 if self._loaded_session:
389410 for name, content, path in self._loaded_session:
390411 self._source_tabs.add_tab(name, content, path)
402423 self._vte.set_size(30, 5)
403424 self._vte.set_scrollback_lines(-1)
404425
405 # XXX support both Vte APIs
406 if _has_new_vte_api():
407 foreground = Gdk.RGBA()
408 foreground.parse('#000000')
409 background = Gdk.RGBA()
410 background.parse('#E7E7E7')
411 else:
412 foreground = Gdk.color_parse('#000000')
413 background = Gdk.color_parse('#E7E7E7')
414
415 self._vte.set_colors(foreground, background, [])
426 self._vte_set_colors('#000000', '#E7E7E7')
416427
417428 self._child_exited_handler = None
418429 self._vte.connect('child_exited', self._child_exited_cb)
430441 self._outbox.show()
431442 vpane.show()
432443 return vpane
444
445 def _vte_set_colors(self, bg, fg):
446 # XXX support both Vte APIs
447 if _has_new_vte_api():
448 foreground = Gdk.RGBA()
449 foreground.parse(bg)
450 background = Gdk.RGBA()
451 background.parse(fg)
452 else:
453 foreground = Gdk.color_parse(bg)
454 background = Gdk.color_parse(fg)
455
456 self._vte.set_colors(foreground, background, [])
433457
434458 def after_init(self):
435459 self._outbox.hide()
463487 Pango.FontDescription('Monospace {}'.format(font_size)))
464488
465489 def __active_cb(self, widget, event):
466 logging.debug('__active_cb %r', self.props.active)
490 _logger.debug('__active_cb %r', self.props.active)
467491 if self.props.active:
468492 self.resume()
469493 else:
470494 self.pause()
471495
472496 def do_visibility_notify_event(self, event):
473 logging.debug('do_visibility_notify_event %r', event.get_state())
497 _logger.debug('do_visibility_notify_event %r', event.get_state())
474498 if event.get_state() == Gdk.VisibilityState.FULLY_OBSCURED:
475499 self.pause()
476500 else:
494518 self._outbox.hide()
495519 self._toggle_output.set_tooltip(_('Show output panel'))
496520 self._toggle_output.set_icon_name('tray-show')
521
522 def __inverted_colors_toggled_cb(self, button):
523 if button.props.active:
524 self._vte_set_colors('#E7E7E7', '#000000')
525 self._source_tabs.set_dark()
526 button.set_icon_name('light-theme')
527 button.set_tooltip(_('Normal Colors'))
528 else:
529 self._vte_set_colors('#000000', '#E7E7E7')
530 self._source_tabs.set_light()
531 button.set_icon_name('dark-theme')
532 button.set_tooltip(_('Inverted Colors'))
497533
498534 def _load_example_cb(self, widget):
499535 widget.set_icon_name('pippy-openon')
521557 # up the text buffer
522558 self._collab.post(dict(action='add-source-request'))
523559
560 def _rename_source_cb(self, notebook, page, name):
561 _logger.debug('_rename_source_cb %r %r' % (page, name))
562 self._collab.post(dict(action='rename-source', page=page, name=name))
563
564 def _close_source_cb(self, notebook, page):
565 _logger.debug('_close_source_cb %r' % (page))
566 self._collab.post(dict(action='close-source', page=page))
567
524568 def __message_cb(self, collab, buddy, msg):
525569 action = msg.get('action')
526570 if action == 'add-source-request' and self._collab._leader:
528572 elif action == 'add-source':
529573 self._add_source_cb(
530574 None, force=True, editor_id=msg.get('editor_id'))
575 elif action == 'rename-source':
576 page = msg.get('page')
577 name = msg.get('name')
578 _logger.debug('__message_cb rename-source %r %r' % (page, name))
579 self._source_tabs.rename_tab(page, name)
580 elif action == 'close-source':
581 page = msg.get('page')
582 _logger.debug('__message_cb close-source %r' % (page))
583 self._source_tabs.close_tab(page)
531584
532585 def _vte_drop_cb(self, widget, context, x, y, selection, targetType, time):
533586 if targetType == TARGET_TYPE_TEXT:
543596 try:
544597 self._source_tabs.remove_page(0)
545598 tab_object.pop(0)
599 self._source_tabs.last_tab = 0
546600 except IndexError:
547601 pass
548602
549 list_ = zip(*data)
603 list_ = list(zip(*data))
550604 for name, code, path, modified, editor_id in list_:
551605 self._source_tabs.add_tab(
552606 label=name, editor_id=editor_id)
592646
593647 def _write_all_buffers(self, tmp_dir):
594648 data = self._source_tabs.get_all_data()
595 zipdata = zip(data[0], data[1])
649 zipdata = list(zip(data[0], data[1]))
596650 for name, content in zipdata:
651 name = self._source_tabs.purify_name(name)
597652 with open(os.path.join(tmp_dir, name), 'w') as f:
598653 # Write utf-8 coding prefix if there's not one already
599654 if re.match(r'coding[:=]\s*([-\w.]+)',
603658
604659 def _reset_vte(self):
605660 self._vte.grab_focus()
606 self._vte.feed('\x1B[H\x1B[J\x1B[0;39m')
661 self._vte.feed(b'\x1B[H\x1B[J\x1B[0;39m')
607662
608663 def __undobutton_cb(self, butston):
609664 text_buffer = self._source_tabs.get_text_buffer()
659714 self._pid = vte_run(
660715 Vte.PtyFlags.DEFAULT,
661716 get_bundle_path(),
662 ['/bin/sh', '-c', 'python %s; sleep 1' % current_file,
717 ['/bin/sh', '-c', 'python3 %s; sleep 1' % current_file,
663718 'PYTHONPATH=%s/library:%s' % (get_bundle_path(),
664719 os.getenv('PYTHONPATH', ''))],
665720 ['PYTHONPATH=%s/library:%s' % (get_bundle_path(),
772827 self._stop_button_cb(None) # try stopping old code first.
773828 self._reset_vte()
774829 self._outbox.show_all()
775 self._vte.feed(_("Creating activity bundle..."))
776 self._vte.feed("\r\n")
830 self._vte.feed(_("Creating activity bundle...").encode())
831 self._vte.feed(b'\r\n')
777832 TMPDIR = 'instance'
778833 app_temp = mkdtemp('.activity', 'Pippy',
779834 os.path.join(self.get_activity_root(), TMPDIR))
787842 icon = window.get_icon()
788843 self._stop_button_cb(None) # Try stopping old code first.
789844 self._reset_vte()
790 self._vte.feed(_('Creating activity bundle...'))
791 self._vte.feed('\r\n')
845 self._vte.feed(_('Creating activity bundle...').encode())
846 self._vte.feed(b'\r\n')
792847
793848 TMPDIR = 'instance'
794849 app_temp = mkdtemp('.activity', 'Pippy',
804859 # FIXME: vte invocation was raising errors.
805860 # Switched to subprocss
806861 output = subprocess.check_output(
807 ['/usr/bin/python2',
862 ['/usr/bin/python3',
808863 '%s/pippy_app.py' % get_bundle_path(),
809864 '-p', '%s/library' % get_bundle_path(),
810865 '-d', app_temp, title, sourcefile, icon])
811866 self._vte.feed(output)
812 self._vte.feed('\r\n')
867 self._vte.feed(b'\r\n')
813868 self._bundle_cb(title, app_temp)
814869 except subprocess.CalledProcessError:
815870 rmtree(app_temp, ignore_errors=True) # clean up!
816 self._vte.feed(_('Save as Activity Error'))
817 self._vte.feed('\r\n')
871 self._vte.feed(_('Save as Activity Error').encode())
872 self._vte.feed(b'\r\n')
818873 raise
819874
820875 def _alert_response(alert, response_id):
874929 os.chdir(app_temp)
875930
876931 subprocess.check_output(
877 ['/usr/bin/python', os.path.join(app_temp, 'setup.py'), 'sdist',
932 ['/usr/bin/python3', os.path.join(app_temp, 'setup.py'), 'sdist',
878933 '-v'])
879934
880935 # Hand off to journal
881 os.chmod(app_temp, 0777)
936 os.chmod(app_temp, 0o777)
882937 jobject = datastore.create()
883938 metadata = {
884939 'title': '%s distutils bundle' % title,
885940 'title_set_by_user': '1',
886941 'mime_type': 'application/x-gzip',
887942 }
888 for k, v in metadata.items():
943 for k, v in list(metadata.items()):
889944 # The dict.update method is missing =(
890945 jobject.metadata[k] = v
891946 tarname = 'dist/{modulename}-1.0.tar.gz'.format(modulename=title)
908963 return
909964 self._stop_button_cb(None) # Try stopping old code first.
910965 self._reset_vte()
911 self._vte.feed(_('Creating example...'))
912 self._vte.feed('\r\n')
966 self._vte.feed(_('Creating example...').encode())
967 self._vte.feed(b'\r\n')
913968 local_data = os.path.join(os.environ['SUGAR_ACTIVITY_ROOT'], 'data')
914969 local_file = os.path.join(local_data, title)
915970 if os.path.exists(local_file):
922977 else:
923978 self.write_file(local_file)
924979 self._reset_vte()
925 self._vte.feed(_('Saved as example.'))
926 self._vte.feed('\r\n')
980 self._vte.feed(_('Saved as example.').encode())
981 self._vte.feed(b'\r\n')
927982 self._add_to_example_list(local_file)
928983
929984 def _child_exited_cb(self, *args):
943998 if len(bundle_file) != 1:
944999 _logger.debug("Couldn't find bundle: %s" %
9451000 str(bundle_file))
946 self._vte.feed('\r\n')
947 self._vte.feed(_('Error saving activity to journal.'))
948 self._vte.feed('\r\n')
1001 self._vte.feed(b'\r\n')
1002 self._vte.feed(_('Error saving activity to journal.').encode())
1003 self._vte.feed(b'\r\n')
9491004 return # Something went wrong.
9501005 # Hand off to journal
951 os.chmod(app_temp, 0755)
1006 os.chmod(app_temp, 0o755)
9521007 jobject = datastore.create()
9531008 metadata = {
9541009 'title': '%s Bundle' % title,
9581013 'icon-color': profile.get_color().to_string(),
9591014 'mime_type': 'application/vnd.olpc-sugar',
9601015 }
961 for k, v in metadata.items():
1016 for k, v in list(metadata.items()):
9621017 # The dict.update method is missing =(
9631018 jobject.metadata[k] = v
9641019 jobject.file_path = os.path.join(app_temp, bundle_file[0])
9651020 datastore.write(jobject)
966 self._vte.feed('\r\n')
967 self._vte.feed(_('Activity saved to journal.'))
968 self._vte.feed('\r\n')
1021 self._vte.feed(b'\r\n')
1022 self._vte.feed(_('Activity saved to journal.').encode())
1023 self._vte.feed(b'\r\n')
9691024 self.journal_show_object(jobject.object_id)
9701025 jobject.destroy()
9711026 finally:
9801035 if response_id is Gtk.ResponseType.OK:
9811036 self.write_file(local_file)
9821037 self._reset_vte()
983 self._vte.feed(_('Saved as example.'))
984 self._vte.feed('\r\n')
1038 self._vte.feed(_('Saved as example.').encode())
1039 self._vte.feed(b'\r\n')
9851040 else:
9861041 self._reset_vte()
9871042
9911046 _iter = self.model.insert_before(self.example_iter, None)
9921047 self.model.set_value(_iter, 0, entry)
9931048 self.model.set_value(_iter, 1, entry['name'])
1049
1050 def is_example(self, path):
1051 if path is None:
1052 return False
1053
1054 for name in self.paths:
1055 if path.startswith(name[1]):
1056 return True
1057
1058 return False
9941059
9951060 def _get_pippy_object_id(self):
9961061 ''' We need the object_id of this pippy instance to save in the .py
10041069 def write_file(self, file_path):
10051070 pippy_id = self._get_pippy_object_id()
10061071 data = self._source_tabs.get_all_data()
1007 zipped_data = zip(*data)
1072 zipped_data = list(zip(*data))
10081073 session_list = []
10091074 app_temp = os.path.join(self.get_activity_root(), 'instance')
10101075 tmpfile = os.path.join(app_temp, 'pippy-tempfile-storing.py')
10111076 for zipdata, content in zip(zipped_data, self.session_data):
1012 logging.debug('Session data %r', content)
1077 _logger.debug('Session data %r', content)
10131078 name, python_code, path, modified, editor_id = zipdata
10141079 if content is not None and content == self._py_object_id:
10151080 _logger.debug('saving to self')
10961161 try:
10971162 self._source_tabs.remove_page(0)
10981163 tab_object.pop(0)
1164 self._source_tabs.last_tab = 0
10991165 except IndexError:
11001166 pass
11011167
11181184
11191185 self._py_file_loaded_from_journal = True
11201186
1121 # Discard the '#!/usr/bin/python' and 'coding: utf-8' lines,
1187 # Discard the '#!/usr/bin/python3' and 'coding: utf-8' lines,
11221188 # if present
11231189 python_code = re.sub(r'^' + re.escape(PYTHON_PREFIX), '', text)
11241190 name = self.metadata['title']
11761242 if 'mime_type' not in dsobject.metadata:
11771243 _logger.error(
11781244 'Warning: %s missing mime_type' % content)
1179 elif dsobject.metadata['mime_type'] != 'text/python':
1245 elif dsobject.metadata['mime_type'] != 'text/x-python':
11801246 _logger.error(
11811247 'Warning: %s has unexpected mime_type %s' %
11821248 (content, dsobject.metadata['mime_type']))
12081274 [Activity]
12091275 name = %(title)s
12101276 bundle_id = %(bundle_id)s
1211 exec = sugar-activity %(class)s
1277 exec = sugar-activity3 %(class)s
12121278 icon = activity-icon
12131279 activity_version = %(version)d
12141280 mime_types = %(mime_types)s
13621428 try_import = False
13631429
13641430 info = readmodule_ex(module, [sourcedir] + options.path)
1365 for func in bundle_info.keys():
1431 for func in list(bundle_info.keys()):
13661432 p_a_func = 'pippy_activity_%s' % func
13671433 if p_a_func in info:
13681434 try_import = True
13711437 oldpath = list(sys.path)
13721438 sys.path[0:0] = [sourcedir] + options.path
13731439 modobj = __import__(module)
1374 for func in bundle_info.keys():
1440 for func in list(bundle_info.keys()):
13751441 p_a_func = 'pippy_activity_%s' % func
13761442 if p_a_func in modobj.__dict__:
13771443 bundle_info[func] = modobj.__dict__[p_a_func]()
13941460 'NEWS': bundle_info['news'],
13951461 }
13961462 extra_files.update(bundle_info['extra_files'])
1397 for path, contents in extra_files.items():
1463 for path, contents in list(extra_files.items()):
13981464 # safety first!
13991465 assert '..' not in path
14001466 dirname, filename = os.path.split(path)
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-08-29 14:54+1000\n"
10 "POT-Creation-Date: 2020-03-10 10:37+1100\n"
1111 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1212 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313 "Language-Team: LANGUAGE <LL@li.org>\n"
2626 "language your computer understands called \"Python\"."
2727 msgstr ""
2828
29 #: activity.py:65
29 #: activity.py:67
3030 #, python-format
3131 msgid "%s Source"
3232 msgstr ""
3333
34 #: collabwrapper.py:176
34 #: collabwrapper.py:196
3535 msgid "Joining activity..."
3636 msgstr ""
3737
38 #: collabwrapper.py:177 collabwrapper.py:189
38 #: collabwrapper.py:197 collabwrapper.py:209
3939 msgid "Please wait for the connection..."
4040 msgstr ""
4141
42 #: collabwrapper.py:188
42 #: collabwrapper.py:208
4343 msgid "Resuming shared activity..."
4444 msgstr ""
4545
5555 msgid "PAUSED"
5656 msgstr ""
5757
58 #: library/pippy/sound.py:41 sound_check.py:27
58 #: library/pippy/sound.py:41 sound_check.py:26
5959 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
6060 msgstr ""
6161
62 #: notebook.py:219
62 #: notebook.py:253
6363 #, python-format
6464 msgid "New Source File %d"
6565 msgstr ""
6666
67 #: pippy_app.py:97
67 #: notebook.py:435
68 msgid "Erase"
69 msgstr ""
70
71 #: notebook.py:436
72 #, python-format
73 msgid "Do you want to permanently erase \"%s\"?"
74 msgstr ""
75
76 #: pippy_app.py:98
6877 msgid "graphics"
6978 msgstr ""
7079
71 #: pippy_app.py:97
80 #: pippy_app.py:98
7281 msgid "math"
7382 msgstr ""
7483
75 #: pippy_app.py:97
84 #: pippy_app.py:98
7685 msgid "python"
7786 msgstr ""
7887
79 #: pippy_app.py:97
88 #: pippy_app.py:98
8089 msgid "sound"
8190 msgstr ""
8291
83 #: pippy_app.py:98
92 #: pippy_app.py:99
8493 msgid "string"
8594 msgstr ""
8695
87 #: pippy_app.py:98
96 #: pippy_app.py:99
8897 msgid "tutorials"
8998 msgstr ""
9099
91 #: pippy_app.py:181
100 #: pippy_app.py:192
92101 msgid "Import Python file to new tab"
93102 msgstr ""
94103
95 #: pippy_app.py:187
104 #: pippy_app.py:198
96105 msgid "Export as Pippy document"
97106 msgstr ""
98107
99 #: pippy_app.py:193
108 #: pippy_app.py:204
100109 msgid "Save this file to the Pippy library"
101110 msgstr ""
102111
103 #: pippy_app.py:201
112 #: pippy_app.py:212
104113 msgid "Export as new Pippy example"
105114 msgstr ""
106115
107 #: pippy_app.py:207
116 #: pippy_app.py:218
108117 msgid "Create a Sugar activity bundle"
109118 msgstr ""
110119
111120 #. TRANS: A distutils package is used to distribute Python modules
112 #: pippy_app.py:214
121 #: pippy_app.py:225
113122 msgid "Export as a distutils package"
114123 msgstr ""
115124
116 #: pippy_app.py:224
125 #: pippy_app.py:235
117126 msgid "Edit"
118127 msgstr ""
119128
120 #: pippy_app.py:238
129 #: pippy_app.py:249
121130 msgid "View"
122131 msgstr ""
123132
124 #: pippy_app.py:248 pippy_app.py:496
133 #: pippy_app.py:259 pippy_app.py:520
125134 msgid "Show output panel"
126135 msgstr ""
127136
128 #: pippy_app.py:261 pippy_app.py:264
137 #: pippy_app.py:265 pippy_app.py:533
138 msgid "Inverted Colors"
139 msgstr ""
140
141 #: pippy_app.py:280 pippy_app.py:283
129142 msgid "Run!"
130143 msgstr ""
131144
132 #: pippy_app.py:262
145 #: pippy_app.py:281
133146 msgid "<alt>r"
134147 msgstr ""
135148
136 #: pippy_app.py:277 pippy_app.py:283
149 #: pippy_app.py:296 pippy_app.py:302
137150 msgid "Stop"
138151 msgstr ""
139152
140 #: pippy_app.py:278
153 #: pippy_app.py:297
141154 msgid "<alt>s"
142155 msgstr ""
143156
144 #: pippy_app.py:293 pippy_app.py:299
145 msgid "Clear"
146 msgstr ""
147
148 #: pippy_app.py:294
157 #: pippy_app.py:312 pippy_app.py:318
158 msgid "Clear output panel"
159 msgstr ""
160
161 #: pippy_app.py:313
149162 msgid "<alt>c"
150163 msgstr ""
151164
152 #: pippy_app.py:310
165 #: pippy_app.py:329
153166 msgid "Open an example"
154167 msgstr ""
155168
156 #: pippy_app.py:385
169 #: pippy_app.py:404
157170 msgid "My examples"
158171 msgstr ""
159172
160 #: pippy_app.py:492
173 #: pippy_app.py:516
161174 msgid "Hide output panel"
162175 msgstr ""
163176
164 #: pippy_app.py:699
177 #: pippy_app.py:528
178 msgid "Normal Colors"
179 msgstr ""
180
181 #: pippy_app.py:754
165182 msgid "Python File added to Library"
166183 msgstr ""
167184
168 #: pippy_app.py:700
185 #: pippy_app.py:755
169186 #, python-brace-format
170187 msgid ""
171188 "The file you selected has been added to the library. Use \"import "
172189 "{importname}\" to import the library for using."
173190 msgstr ""
174191
175 #: pippy_app.py:710
192 #: pippy_app.py:765
176193 msgid "Saved"
177194 msgstr ""
178195
179 #: pippy_app.py:711
196 #: pippy_app.py:766
180197 msgid "The document has been saved to journal."
181198 msgstr ""
182199
183 #: pippy_app.py:725 pippy_app.py:732
200 #: pippy_app.py:780 pippy_app.py:787
184201 msgid "Error importing Python file"
185202 msgstr ""
186203
187 #: pippy_app.py:726
204 #: pippy_app.py:781
188205 msgid "The file you selected is not a Python file."
189206 msgstr ""
190207
191 #: pippy_app.py:733
208 #: pippy_app.py:788
192209 msgid "The file you selected is already open"
193210 msgstr ""
194211
195 #: pippy_app.py:758 pippy_app.py:817
212 #: pippy_app.py:813 pippy_app.py:872
196213 msgid "Save as Activity Error"
197214 msgstr ""
198215
199 #: pippy_app.py:759
216 #: pippy_app.py:814
200217 msgid ""
201218 "Please give your activity a meaningful name before attempting to save it as "
202219 "an activity."
203220 msgstr ""
204221
205 #: pippy_app.py:762 pippy_app.py:769 pippy_app.py:864 pippy_app.py:906
222 #: pippy_app.py:817 pippy_app.py:824 pippy_app.py:919 pippy_app.py:961
206223 msgid "Ok"
207224 msgstr ""
208225
209 #: pippy_app.py:770
226 #: pippy_app.py:825
210227 msgid "Activity icon"
211228 msgstr ""
212229
213 #: pippy_app.py:771
230 #: pippy_app.py:826
214231 msgid "Please select an activity icon."
215232 msgstr ""
216233
217 #: pippy_app.py:776 pippy_app.py:791
234 #: pippy_app.py:831 pippy_app.py:846
218235 msgid "Creating activity bundle..."
219236 msgstr ""
220237
221 #: pippy_app.py:857 pippy_app.py:899
238 #: pippy_app.py:912 pippy_app.py:954
222239 msgid "Pippy Activity"
223240 msgstr ""
224241
225 #: pippy_app.py:859
242 #: pippy_app.py:914
226243 msgid "Save as distutils package error"
227244 msgstr ""
228245
229 #: pippy_app.py:860
246 #: pippy_app.py:915
230247 msgid ""
231248 "Please give your activity a meaningful name before attempting to save it as "
232249 "an distutils package."
233250 msgstr ""
234251
235 #: pippy_app.py:901
252 #: pippy_app.py:956
236253 msgid "Save as Example Error"
237254 msgstr ""
238255
239 #: pippy_app.py:903
256 #: pippy_app.py:958
240257 msgid ""
241258 "Please give your activity a meaningful name before attempting to save it as "
242259 "an example."
243260 msgstr ""
244261
245 #: pippy_app.py:912
262 #: pippy_app.py:967
246263 msgid "Creating example..."
247264 msgstr ""
248265
249 #: pippy_app.py:918
266 #: pippy_app.py:973
250267 msgid "Save as Example Warning"
251268 msgstr ""
252269
253 #: pippy_app.py:919
270 #: pippy_app.py:974
254271 msgid "This example already exists. Do you want to overwrite it?"
255272 msgstr ""
256273
257 #: pippy_app.py:926 pippy_app.py:984
274 #: pippy_app.py:981 pippy_app.py:1039
258275 msgid "Saved as example."
259276 msgstr ""
260277
261 #: pippy_app.py:948
278 #: pippy_app.py:1003
262279 msgid "Error saving activity to journal."
263280 msgstr ""
264281
265 #: pippy_app.py:968
282 #: pippy_app.py:1023
266283 msgid "Activity saved to journal."
267284 msgstr ""
268285
269 #: pippy_app.py:1110
286 #: pippy_app.py:1176
270287 msgid "Error"
271288 msgstr ""
272289
273 #: pippy_app.py:1111
290 #: pippy_app.py:1177
274291 msgid "Error reading data."
275292 msgstr ""
276293
277 #: pippy_app.py:1434
294 #: pippy_app.py:1500
278295 msgid "Working..."
279296 msgstr ""
280297
281 #: pippy_app.py:1437
298 #: pippy_app.py:1503
282299 msgid "done!"
283300 msgstr ""
284301
303303 #: library/pippy/game.py:36
304304 msgid "PAUSED"
305305 msgstr "OCUNG"
306
307 #: notebook.py:428
308 msgid "Erase"
309 msgstr "Jwa"
310
311
312 #: notebook.py:429
313 #, python-format
314 msgid "Do you want to permanently erase \"%s\"?"
315 msgstr "Imito jwayo matwal \"%s\"?"
316
294294 #: library/pippy/game.py:36
295295 msgid "PAUSED"
296296 msgstr ""
297
298 #: notebook.py:428
299 msgid "Erase"
300 msgstr "Uitwis"
301
294294 #: library/pippy/game.py:36
295295 msgid "PAUSED"
296296 msgstr ""
297
298 #: notebook.py:428
299 msgid "Erase"
300 msgstr "አጥፋው"
301
296296 #: library/pippy/game.py:36
297297 msgid "PAUSED"
298298 msgstr "متوقف"
299
300 #: notebook.py:428
301 msgid "Erase"
302 msgstr "امسح"
303
304
305 #: notebook.py:429
306 #, python-format
307 msgid "Do you want to permanently erase \"%s\"?"
308 msgstr "أتريد إزالة \"%s\" نهائيًا؟"
309
322322 #: library/pippy/game.py:36
323323 msgid "PAUSED"
324324 msgstr "Suyt'ayaña"
325
326 #: notebook.py:428
327 msgid "Erase"
328 msgstr "Chhaqtayaña"
329
330
331 #: notebook.py:429
332 #, python-format
333 msgid "Do you want to permanently erase \"%s\"?"
334 msgstr "¿Sapa kutiti chhaqtayaña munta \"%s\" ukxa?"
335
298298 #: library/pippy/game.py:36
299299 msgid "PAUSED"
300300 msgstr ""
301
302 #: notebook.py:428
303 msgid "Erase"
304 msgstr "Изтриване"
305
+0
-156
po/bi.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 # SOME DESCRIPTIVE TITLE.
5 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
6 # This file is distributed under the same license as the PACKAGE package.
7 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
8 # SOME DESCRIPTIVE TITLE.
9 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
10 # This file is distributed under the same license as the PACKAGE package.
11 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
12 #, fuzzy
13 msgid ""
14 msgstr ""
15 "Project-Id-Version: PACKAGE VERSION\n"
16 "Report-Msgid-Bugs-To: \n"
17 "POT-Creation-Date: 2012-06-19 00:34-0400\n"
18 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
19 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
20 "Language-Team: LANGUAGE <LL@li.org>\n"
21 "Language: \n"
22 "MIME-Version: 1.0\n"
23 "Content-Type: text/plain; charset=UTF-8\n"
24 "Content-Transfer-Encoding: 8bit\n"
25 "X-Generator: Translate Toolkit 1.1.1rc4\n"
26
27 #: activity/activity.info:2
28 msgid "Pippy"
29 msgstr ""
30
31 #: activity.py:49
32 #, python-format
33 msgid "%s Source"
34 msgstr ""
35
36 #: activity.py:91
37 msgid "Copy selected text to clipboard"
38 msgstr ""
39
40 #: activity.py:96 pippy_app.py:113 pippy_app.py:118
41 msgid "Edit"
42 msgstr ""
43
44 #: library/pippy/game.py:36
45 msgid "PAUSED"
46 msgstr ""
47
48 #: library/pippy/sound.py:54
49 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
50 msgstr ""
51
52 #: pippy_app.py:90
53 msgid "Export as Pippy Document"
54 msgstr ""
55
56 #: pippy_app.py:96
57 msgid "Export as Pippy Example"
58 msgstr ""
59
60 #: pippy_app.py:102
61 msgid "Create Activity Bundle"
62 msgstr ""
63
64 #: pippy_app.py:111
65 msgid "Actions"
66 msgstr ""
67
68 #: pippy_app.py:138 pippy_app.py:141
69 msgid "Run!"
70 msgstr ""
71
72 #: pippy_app.py:139
73 msgid "<alt>r"
74 msgstr ""
75
76 #: pippy_app.py:152 pippy_app.py:158
77 msgid "Stop"
78 msgstr ""
79
80 #: pippy_app.py:153
81 msgid "<alt>s"
82 msgstr ""
83
84 #: pippy_app.py:167 pippy_app.py:173
85 msgid "Clear"
86 msgstr ""
87
88 #: pippy_app.py:168
89 msgid "<alt>c"
90 msgstr ""
91
92 #: pippy_app.py:197
93 msgid "Examples"
94 msgstr ""
95
96 #: pippy_app.py:229
97 msgid "My examples"
98 msgstr ""
99
100 #: pippy_app.py:358
101 #, python-format
102 msgid "%s Activity"
103 msgstr ""
104
105 #: pippy_app.py:438
106 msgid "Save as Activity Error"
107 msgstr ""
108
109 #: pippy_app.py:439
110 msgid ""
111 "Please give your activity a meaningful name before attempting to save it as "
112 "an activity."
113 msgstr ""
114
115 #: pippy_app.py:442 pippy_app.py:486
116 msgid "Ok"
117 msgstr ""
118
119 #: pippy_app.py:448
120 msgid "Creating activity bundle..."
121 msgstr ""
122
123 #: pippy_app.py:479
124 msgid "Pippy Activity"
125 msgstr ""
126
127 #: pippy_app.py:483
128 msgid "Save as Example Error"
129 msgstr ""
130
131 #: pippy_app.py:484
132 msgid ""
133 "Please give your activity a meaningful name before attempting to save it as "
134 "an example."
135 msgstr ""
136
137 #: pippy_app.py:492
138 msgid "Creating example..."
139 msgstr ""
140
141 #: pippy_app.py:499
142 msgid "Save as Example Warning"
143 msgstr ""
144
145 #: pippy_app.py:500
146 msgid "This example already exists. Do you want to overwrite it?"
147 msgstr ""
148
149 #: pippy_app.py:506 pippy_app.py:562
150 msgid "Saved as example."
151 msgstr ""
152
153 #: pippy_app.py:546
154 msgid "Activity saved to journal."
155 msgstr ""
295295 #: library/pippy/game.py:36
296296 msgid "PAUSED"
297297 msgstr "স্থগিত"
298
299 #: notebook.py:428
300 msgid "Erase"
301 msgstr "মোছো"
302
296296 #: library/pippy/game.py:36
297297 msgid "PAUSED"
298298 msgstr "স্থগিত"
299
300 #: notebook.py:428
301 msgid "Erase"
302 msgstr "মুছে ফেলো"
303
307307 #: library/pippy/game.py:36
308308 msgid "PAUSED"
309309 msgstr "ATURAT"
310
311 #: notebook.py:428
312 msgid "Erase"
313 msgstr "Esborra"
314
315
316 #: notebook.py:429
317 #, python-format
318 msgid "Do you want to permanently erase \"%s\"?"
319 msgstr "Voleu esborrar \"%s\" de forma permanent?"
320
+0
-156
po/cpp.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 # SOME DESCRIPTIVE TITLE.
5 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
6 # This file is distributed under the same license as the PACKAGE package.
7 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
8 # SOME DESCRIPTIVE TITLE.
9 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
10 # This file is distributed under the same license as the PACKAGE package.
11 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
12 #, fuzzy
13 msgid ""
14 msgstr ""
15 "Project-Id-Version: PACKAGE VERSION\n"
16 "Report-Msgid-Bugs-To: \n"
17 "POT-Creation-Date: 2012-06-19 00:34-0400\n"
18 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
19 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
20 "Language-Team: LANGUAGE <LL@li.org>\n"
21 "Language: \n"
22 "MIME-Version: 1.0\n"
23 "Content-Type: text/plain; charset=UTF-8\n"
24 "Content-Transfer-Encoding: 8bit\n"
25 "X-Generator: Translate Toolkit 1.1.1rc4\n"
26
27 #: activity/activity.info:2
28 msgid "Pippy"
29 msgstr ""
30
31 #: activity.py:49
32 #, python-format
33 msgid "%s Source"
34 msgstr ""
35
36 #: activity.py:91
37 msgid "Copy selected text to clipboard"
38 msgstr ""
39
40 #: activity.py:96 pippy_app.py:113 pippy_app.py:118
41 msgid "Edit"
42 msgstr ""
43
44 #: library/pippy/game.py:36
45 msgid "PAUSED"
46 msgstr ""
47
48 #: library/pippy/sound.py:54
49 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
50 msgstr ""
51
52 #: pippy_app.py:90
53 msgid "Export as Pippy Document"
54 msgstr ""
55
56 #: pippy_app.py:96
57 msgid "Export as Pippy Example"
58 msgstr ""
59
60 #: pippy_app.py:102
61 msgid "Create Activity Bundle"
62 msgstr ""
63
64 #: pippy_app.py:111
65 msgid "Actions"
66 msgstr ""
67
68 #: pippy_app.py:138 pippy_app.py:141
69 msgid "Run!"
70 msgstr ""
71
72 #: pippy_app.py:139
73 msgid "<alt>r"
74 msgstr ""
75
76 #: pippy_app.py:152 pippy_app.py:158
77 msgid "Stop"
78 msgstr ""
79
80 #: pippy_app.py:153
81 msgid "<alt>s"
82 msgstr ""
83
84 #: pippy_app.py:167 pippy_app.py:173
85 msgid "Clear"
86 msgstr ""
87
88 #: pippy_app.py:168
89 msgid "<alt>c"
90 msgstr ""
91
92 #: pippy_app.py:197
93 msgid "Examples"
94 msgstr ""
95
96 #: pippy_app.py:229
97 msgid "My examples"
98 msgstr ""
99
100 #: pippy_app.py:358
101 #, python-format
102 msgid "%s Activity"
103 msgstr ""
104
105 #: pippy_app.py:438
106 msgid "Save as Activity Error"
107 msgstr ""
108
109 #: pippy_app.py:439
110 msgid ""
111 "Please give your activity a meaningful name before attempting to save it as "
112 "an activity."
113 msgstr ""
114
115 #: pippy_app.py:442 pippy_app.py:486
116 msgid "Ok"
117 msgstr ""
118
119 #: pippy_app.py:448
120 msgid "Creating activity bundle..."
121 msgstr ""
122
123 #: pippy_app.py:479
124 msgid "Pippy Activity"
125 msgstr ""
126
127 #: pippy_app.py:483
128 msgid "Save as Example Error"
129 msgstr ""
130
131 #: pippy_app.py:484
132 msgid ""
133 "Please give your activity a meaningful name before attempting to save it as "
134 "an example."
135 msgstr ""
136
137 #: pippy_app.py:492
138 msgid "Creating example..."
139 msgstr ""
140
141 #: pippy_app.py:499
142 msgid "Save as Example Warning"
143 msgstr ""
144
145 #: pippy_app.py:500
146 msgid "This example already exists. Do you want to overwrite it?"
147 msgstr ""
148
149 #: pippy_app.py:506 pippy_app.py:562
150 msgid "Saved as example."
151 msgstr ""
152
153 #: pippy_app.py:546
154 msgid "Activity saved to journal."
155 msgstr ""
294294 #: library/pippy/game.py:36
295295 msgid "PAUSED"
296296 msgstr "POZASTAVIT"
297
298 #: notebook.py:428
299 msgid "Erase"
300 msgstr "Odstranit"
301
66 "Project-Id-Version: PACKAGE VERSION\n"
77 "Report-Msgid-Bugs-To: \n"
88 "POT-Creation-Date: 2017-03-24 17:39+1100\n"
9 "PO-Revision-Date: 2012-06-25 02:28+0200\n"
10 "Last-Translator: Aputsiaq Niels <aj@isit.gl>\n"
9 "PO-Revision-Date: 2018-10-22 18:23+0000\n"
10 "Last-Translator: scootergrisen <scootergrisen@gmail.com>\n"
1111 "Language-Team: LANGUAGE <LL@li.org>\n"
1212 "Language: da\n"
1313 "MIME-Version: 1.0\n"
1414 "Content-Type: text/plain; charset=UTF-8\n"
1515 "Content-Transfer-Encoding: 8bit\n"
1616 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17 "X-Generator: Pootle 2.0.5\n"
17 "X-Generator: Pootle 2.5.1.1\n"
18 "X-POOTLE-MTIME: 1540232583.000000\n"
1819
1920 #: activity/activity.info:2
2021 msgid "Pippy"
2526 "Searching for programmers! Here you can use examples to begin learning the "
2627 "language your computer understands called \"Python.\""
2728 msgstr ""
29 "Søger efter programmører! Her kan du bruge eksempler for at begynde at lære "
30 "sproget som din computer forstår, kaldet \"Python\"."
2831
2932 #: filedialog.py:79
3033 msgid "Choose an example to open"
31 msgstr ""
34 msgstr "Vælg et eksempel som skal åbnes"
3235
3336 #: collabwrapper.py:178
3437 msgid "Joining activity..."
35 msgstr ""
38 msgstr "Deltager i aktivitet..."
3639
3740 #: collabwrapper.py:179 collabwrapper.py:191
3841 msgid "Please wait for the connection..."
39 msgstr ""
42 msgstr "Vent venligst på forbindelsen..."
4043
4144 #: collabwrapper.py:190
4245 msgid "Resuming shared activity..."
43 msgstr ""
46 msgstr "Genoptager delt aktivitet..."
4447
4548 #: toolbars.py:42
4649 msgid "Zoom in"
47 msgstr ""
50 msgstr "Zoom ind"
4851
4952 #: toolbars.py:48
5053 msgid "Zoom out"
51 msgstr ""
54 msgstr "Zoom ud"
5255
5356 #: activity.py:65
5457 #, python-format
5760
5861 #: icondialog.py:116
5962 msgid "Select an icon"
60 msgstr ""
63 msgstr "Vælg et ikon"
6164
6265 #: notebook.py:219
6366 #, python-format
6467 msgid "New Source File %d"
65 msgstr ""
68 msgstr "Ny kildefil %d"
6669
6770 #: sound_check.py:27 library/pippy/sound.py:41
6871 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
7174
7275 #: pippy_app.py:97
7376 msgid "graphics"
74 msgstr ""
77 msgstr "grafik"
7578
7679 #: pippy_app.py:97
7780 msgid "math"
78 msgstr ""
81 msgstr "matematik"
7982
8083 #: pippy_app.py:97
8184 msgid "python"
82 msgstr ""
85 msgstr "python"
8386
8487 #: pippy_app.py:97
8588 msgid "sound"
86 msgstr ""
89 msgstr "lyd"
8790
8891 #: pippy_app.py:98
8992 msgid "string"
90 msgstr ""
93 msgstr "streng"
9194
9295 #: pippy_app.py:98
9396 msgid "tutorials"
94 msgstr ""
97 msgstr "vejledninger"
9598
9699 #: pippy_app.py:185
97100 msgid "Import Python file to new tab"
98 msgstr ""
101 msgstr "Importér Python-fil til nye faneblad"
99102
100103 #: pippy_app.py:191
101104 msgid "Export as Pippy document"
102 msgstr ""
105 msgstr "Eksportér som Pippy-dokument"
103106
104107 #: pippy_app.py:197
105108 msgid "Save this file to the Pippy library"
106 msgstr ""
109 msgstr "Gem filen til Pippy-biblioteket"
107110
108111 #: pippy_app.py:205
109112 msgid "Export as new Pippy example"
110 msgstr ""
113 msgstr "Eksportér som nyt Pippy-eksempel"
111114
112115 #: pippy_app.py:211
113116 msgid "Create a Sugar activity bundle"
114 msgstr ""
117 msgstr "Opret en Sugar-aktivitspakke"
115118
116119 #. TRANS: A distutils package is used to distribute Python modules
117120 #: pippy_app.py:218
118121 msgid "Export as a distutils package"
119 msgstr ""
122 msgstr "Eksportér som en distutils-pakke"
120123
121124 #: pippy_app.py:228
122125 msgid "Edit"
124127
125128 #: pippy_app.py:242
126129 msgid "View"
127 msgstr ""
130 msgstr "Vis"
128131
129132 #: pippy_app.py:252 pippy_app.py:500
130133 msgid "Show output panel"
131 msgstr ""
134 msgstr "Vis outputpanel"
132135
133136 #: pippy_app.py:265 pippy_app.py:268
134137 msgid "Run!"
156159
157160 #: pippy_app.py:314
158161 msgid "Open an example"
159 msgstr ""
162 msgstr "Åbn et eksempel"
160163
161164 #: pippy_app.py:389
162165 msgid "My examples"
164167
165168 #: pippy_app.py:496
166169 msgid "Hide output panel"
167 msgstr ""
170 msgstr "Skjul outputpanel"
168171
169172 #: pippy_app.py:598
170173 #, python-format
173176
174177 #: pippy_app.py:708
175178 msgid "Python File added to Library"
176 msgstr ""
179 msgstr "Python-fil blev tilføjet til bibliotek"
177180
178181 #: pippy_app.py:709
179182 #, python-brace-format
181184 "The file you selected has been added to the library. Use \"import "
182185 "{importname}\" to import the library for using."
183186 msgstr ""
187 "Filen du har valgt er blevet tilføjet til biblioteket. Brug \"import "
188 "{importname}\" til at importere biblioteket for at bruge det."
184189
185190 #: pippy_app.py:719
186191 msgid "Saved"
187 msgstr ""
192 msgstr "Gemt"
188193
189194 #: pippy_app.py:720
190195 msgid "The document has been saved to journal."
191 msgstr ""
196 msgstr "Dokumentet er blevet gemt til journalen."
192197
193198 #: pippy_app.py:734 pippy_app.py:741
194199 msgid "Error importing Python file"
195 msgstr ""
200 msgstr "Fejl ved import af Python-fil"
196201
197202 #: pippy_app.py:735
198203 msgid "The file you selected is not a Python file."
199 msgstr ""
204 msgstr "Filen du valgte er ikke en Python-fil."
200205
201206 #: pippy_app.py:742
202207 msgid "The file you selected is already open"
203 msgstr ""
208 msgstr "Filen du valgte er allerede åben"
204209
205210 #: pippy_app.py:767 pippy_app.py:826
206211 msgid "Save as Activity Error"
220225
221226 #: pippy_app.py:779
222227 msgid "Activity icon"
223 msgstr ""
228 msgstr "Aktivitetsikon"
224229
225230 #: pippy_app.py:780
226231 msgid "Please select an activity icon."
227 msgstr ""
232 msgstr "Vælg venligst et aktivitsikon."
228233
229234 #: pippy_app.py:785 pippy_app.py:800
230235 msgid "Creating activity bundle..."
236241
237242 #: pippy_app.py:868
238243 msgid "Save as distutils package error"
239 msgstr ""
244 msgstr "Fejl ved gem som distutils-pakke"
240245
241246 #: pippy_app.py:869
242247 msgid ""
243248 "Please give your activity a meaningful name before attempting to save it as "
244249 "an distutils package."
245250 msgstr ""
251 "Giv venligst din aktivitet et meningsfyldt navn inden du forsøger at gemme "
252 "den som en distutils-pakke."
246253
247254 #: pippy_app.py:910
248255 msgid "Save as Example Error"
274281
275282 #: pippy_app.py:957
276283 msgid "Error saving activity to journal."
277 msgstr ""
284 msgstr "Fejl ved forsøg på at gemme aktivitet til journal."
278285
279286 #: pippy_app.py:977
280287 msgid "Activity saved to journal."
282289
283290 #: pippy_app.py:1119
284291 msgid "Error"
285 msgstr ""
292 msgstr "Fejl"
286293
287294 #: pippy_app.py:1120
288295 msgid "Error reading data."
289 msgstr ""
296 msgstr "Fejl ved læsning af data."
290297
291298 #: pippy_app.py:1448
292299 msgid "Working..."
293 msgstr ""
300 msgstr "Arbejder..."
294301
295302 #: pippy_app.py:1451
296303 msgid "done!"
297 msgstr ""
304 msgstr "færdig!"
298305
299306 #: library/pippy/game.py:36
300307 msgid "PAUSED"
301308 msgstr "PÅ PAUSE"
309
310 #: notebook.py:428
311 msgid "Erase"
312 msgstr "Slet"
313
314
315 #: notebook.py:429
316 #, python-format
317 msgid "Do you want to permanently erase \"%s\"?"
318 msgstr "Vil du foretage permanent sletning af \"%s\"?"
319
302302 #: library/pippy/game.py:36
303303 msgid "PAUSED"
304304 msgstr "ANGEHALTEN"
305
306 #: notebook.py:428
307 msgid "Erase"
308 msgstr "Löschen"
309
310
311 #: notebook.py:429
312 #, python-format
313 msgid "Do you want to permanently erase \"%s\"?"
314 msgstr "Möchtest Du \"%s\" dauerhaft löschen?"
315
294294 #: library/pippy/game.py:36
295295 msgid "PAUSED"
296296 msgstr ""
297
298 #: notebook.py:428
299 msgid "Erase"
300 msgstr "ཀྲེག་གཏང་།"
301
301301 #: library/pippy/game.py:36
302302 msgid "PAUSED"
303303 msgstr "ΣΕ ΠΑΥΣΗ"
304
305 #: notebook.py:428
306 msgid "Erase"
307 msgstr "Διαγραφή"
308
309
310 #: notebook.py:429
311 #, python-format
312 msgid "Do you want to permanently erase \"%s\"?"
313 msgstr "Θέλετε να διαγράψετε μόνιμα το \"%s\";"
314
307307 #: library/pippy/game.py:36
308308 msgid "PAUSED"
309309 msgstr "PAUSADO"
310
311 #: notebook.py:428
312 msgid "Erase"
313 msgstr "Borrar"
314
315
316 #: notebook.py:429
317 #, python-format
318 msgid "Do you want to permanently erase \"%s\"?"
319 msgstr "¿Deseas borrar permanentemente \"%s\"?"
320
296296 #: library/pippy/game.py:36
297297 msgid "PAUSED"
298298 msgstr "مکث شده"
299
300 #: notebook.py:428
301 msgid "Erase"
302 msgstr "پاک کن"
303
+0
-296
po/ff.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2017-03-24 17:39+1100\n"
9 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
11 "Language-Team: LANGUAGE <LL@li.org>\n"
12 "Language: ff\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.0.1\n"
17
18 #: activity/activity.info:2
19 msgid "Pippy"
20 msgstr ""
21
22 #: activity/activity.info:3
23 msgid ""
24 "Searching for programmers! Here you can use examples to begin learning the "
25 "language your computer understands called \"Python.\""
26 msgstr ""
27
28 #: filedialog.py:79
29 msgid "Choose an example to open"
30 msgstr ""
31
32 #: collabwrapper.py:178
33 msgid "Joining activity..."
34 msgstr ""
35
36 #: collabwrapper.py:179 collabwrapper.py:191
37 msgid "Please wait for the connection..."
38 msgstr ""
39
40 #: collabwrapper.py:190
41 msgid "Resuming shared activity..."
42 msgstr ""
43
44 #: toolbars.py:42
45 msgid "Zoom in"
46 msgstr ""
47
48 #: toolbars.py:48
49 msgid "Zoom out"
50 msgstr ""
51
52 #: activity.py:65
53 #, python-format
54 msgid "%s Source"
55 msgstr ""
56
57 #: icondialog.py:116
58 msgid "Select an icon"
59 msgstr ""
60
61 #: notebook.py:219
62 #, python-format
63 msgid "New Source File %d"
64 msgstr ""
65
66 #: sound_check.py:27 library/pippy/sound.py:41
67 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
68 msgstr ""
69
70 #: pippy_app.py:97
71 msgid "graphics"
72 msgstr ""
73
74 #: pippy_app.py:97
75 msgid "math"
76 msgstr ""
77
78 #: pippy_app.py:97
79 msgid "python"
80 msgstr ""
81
82 #: pippy_app.py:97
83 msgid "sound"
84 msgstr ""
85
86 #: pippy_app.py:98
87 msgid "string"
88 msgstr ""
89
90 #: pippy_app.py:98
91 msgid "tutorials"
92 msgstr ""
93
94 #: pippy_app.py:185
95 msgid "Import Python file to new tab"
96 msgstr ""
97
98 #: pippy_app.py:191
99 msgid "Export as Pippy document"
100 msgstr ""
101
102 #: pippy_app.py:197
103 msgid "Save this file to the Pippy library"
104 msgstr ""
105
106 #: pippy_app.py:205
107 msgid "Export as new Pippy example"
108 msgstr ""
109
110 #: pippy_app.py:211
111 msgid "Create a Sugar activity bundle"
112 msgstr ""
113
114 #. TRANS: A distutils package is used to distribute Python modules
115 #: pippy_app.py:218
116 msgid "Export as a distutils package"
117 msgstr ""
118
119 #: pippy_app.py:228
120 msgid "Edit"
121 msgstr ""
122
123 #: pippy_app.py:242
124 msgid "View"
125 msgstr ""
126
127 #: pippy_app.py:252 pippy_app.py:500
128 msgid "Show output panel"
129 msgstr ""
130
131 #: pippy_app.py:265 pippy_app.py:268
132 msgid "Run!"
133 msgstr ""
134
135 #: pippy_app.py:266
136 msgid "<alt>r"
137 msgstr ""
138
139 #: pippy_app.py:281 pippy_app.py:287
140 msgid "Stop"
141 msgstr ""
142
143 #: pippy_app.py:282
144 msgid "<alt>s"
145 msgstr ""
146
147 #: pippy_app.py:297 pippy_app.py:303
148 msgid "Clear"
149 msgstr ""
150
151 #: pippy_app.py:298
152 msgid "<alt>c"
153 msgstr ""
154
155 #: pippy_app.py:314
156 msgid "Open an example"
157 msgstr ""
158
159 #: pippy_app.py:389
160 msgid "My examples"
161 msgstr ""
162
163 #: pippy_app.py:496
164 msgid "Hide output panel"
165 msgstr ""
166
167 #: pippy_app.py:598
168 #, python-format
169 msgid "%s Activity"
170 msgstr ""
171
172 #: pippy_app.py:708
173 msgid "Python File added to Library"
174 msgstr ""
175
176 #: pippy_app.py:709
177 #, python-brace-format
178 msgid ""
179 "The file you selected has been added to the library. Use \"import "
180 "{importname}\" to import the library for using."
181 msgstr ""
182
183 #: pippy_app.py:719
184 msgid "Saved"
185 msgstr ""
186
187 #: pippy_app.py:720
188 msgid "The document has been saved to journal."
189 msgstr ""
190
191 #: pippy_app.py:734 pippy_app.py:741
192 msgid "Error importing Python file"
193 msgstr ""
194
195 #: pippy_app.py:735
196 msgid "The file you selected is not a Python file."
197 msgstr ""
198
199 #: pippy_app.py:742
200 msgid "The file you selected is already open"
201 msgstr ""
202
203 #: pippy_app.py:767 pippy_app.py:826
204 msgid "Save as Activity Error"
205 msgstr ""
206
207 #: pippy_app.py:768
208 msgid ""
209 "Please give your activity a meaningful name before attempting to save it as "
210 "an activity."
211 msgstr ""
212
213 #: pippy_app.py:771 pippy_app.py:778 pippy_app.py:873 pippy_app.py:915
214 msgid "Ok"
215 msgstr ""
216
217 #: pippy_app.py:779
218 msgid "Activity icon"
219 msgstr ""
220
221 #: pippy_app.py:780
222 msgid "Please select an activity icon."
223 msgstr ""
224
225 #: pippy_app.py:785 pippy_app.py:800
226 msgid "Creating activity bundle..."
227 msgstr ""
228
229 #: pippy_app.py:866 pippy_app.py:908
230 msgid "Pippy Activity"
231 msgstr ""
232
233 #: pippy_app.py:868
234 msgid "Save as distutils package error"
235 msgstr ""
236
237 #: pippy_app.py:869
238 msgid ""
239 "Please give your activity a meaningful name before attempting to save it as "
240 "an distutils package."
241 msgstr ""
242
243 #: pippy_app.py:910
244 msgid "Save as Example Error"
245 msgstr ""
246
247 #: pippy_app.py:912
248 msgid ""
249 "Please give your activity a meaningful name before attempting to save it as "
250 "an example."
251 msgstr ""
252
253 #: pippy_app.py:921
254 msgid "Creating example..."
255 msgstr ""
256
257 #: pippy_app.py:927
258 msgid "Save as Example Warning"
259 msgstr ""
260
261 #: pippy_app.py:928
262 msgid "This example already exists. Do you want to overwrite it?"
263 msgstr ""
264
265 #: pippy_app.py:935 pippy_app.py:993
266 msgid "Saved as example."
267 msgstr ""
268
269 #: pippy_app.py:957
270 msgid "Error saving activity to journal."
271 msgstr ""
272
273 #: pippy_app.py:977
274 msgid "Activity saved to journal."
275 msgstr ""
276
277 #: pippy_app.py:1119
278 msgid "Error"
279 msgstr ""
280
281 #: pippy_app.py:1120
282 msgid "Error reading data."
283 msgstr ""
284
285 #: pippy_app.py:1448
286 msgid "Working..."
287 msgstr ""
288
289 #: pippy_app.py:1451
290 msgid "done!"
291 msgstr ""
292
293 #: library/pippy/game.py:36
294 msgid "PAUSED"
295 msgstr ""
305305 #: library/pippy/game.py:36
306306 msgid "PAUSED"
307307 msgstr "PAUSE"
308
309 #: notebook.py:428
310 msgid "Erase"
311 msgstr "Supprimer"
312
313
314 #: notebook.py:429
315 #, python-format
316 msgid "Do you want to permanently erase \"%s\"?"
317 msgstr "Faut-il supprimer \"%s\" définitivement ?"
318
150150 #: pippy_app.py:546
151151 msgid "Activity saved to journal."
152152 msgstr "Mba'apo oñeñongatu tembiapokuérañeñongatuha."
153
154 #: notebook.py:428
155 msgid "Erase"
156 msgstr "Mbogue"
157
158
159 #: notebook.py:429
160 #, python-format
161 msgid "Do you want to permanently erase \"%s\"?"
162 msgstr "Emboguese opyta haguãicha \"%s\"?"
163
+0
-156
po/gu.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 # SOME DESCRIPTIVE TITLE.
5 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
6 # This file is distributed under the same license as the PACKAGE package.
7 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
8 # SOME DESCRIPTIVE TITLE.
9 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
10 # This file is distributed under the same license as the PACKAGE package.
11 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
12 #, fuzzy
13 msgid ""
14 msgstr ""
15 "Project-Id-Version: PACKAGE VERSION\n"
16 "Report-Msgid-Bugs-To: \n"
17 "POT-Creation-Date: 2012-06-19 00:34-0400\n"
18 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
19 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
20 "Language-Team: LANGUAGE <LL@li.org>\n"
21 "Language: \n"
22 "MIME-Version: 1.0\n"
23 "Content-Type: text/plain; charset=UTF-8\n"
24 "Content-Transfer-Encoding: 8bit\n"
25 "X-Generator: Translate Toolkit 1.0.1\n"
26
27 #: activity/activity.info:2
28 msgid "Pippy"
29 msgstr ""
30
31 #: activity.py:49
32 #, python-format
33 msgid "%s Source"
34 msgstr ""
35
36 #: activity.py:91
37 msgid "Copy selected text to clipboard"
38 msgstr ""
39
40 #: activity.py:96 pippy_app.py:113 pippy_app.py:118
41 msgid "Edit"
42 msgstr ""
43
44 #: library/pippy/game.py:36
45 msgid "PAUSED"
46 msgstr ""
47
48 #: library/pippy/sound.py:54
49 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
50 msgstr ""
51
52 #: pippy_app.py:90
53 msgid "Export as Pippy Document"
54 msgstr ""
55
56 #: pippy_app.py:96
57 msgid "Export as Pippy Example"
58 msgstr ""
59
60 #: pippy_app.py:102
61 msgid "Create Activity Bundle"
62 msgstr ""
63
64 #: pippy_app.py:111
65 msgid "Actions"
66 msgstr ""
67
68 #: pippy_app.py:138 pippy_app.py:141
69 msgid "Run!"
70 msgstr ""
71
72 #: pippy_app.py:139
73 msgid "<alt>r"
74 msgstr ""
75
76 #: pippy_app.py:152 pippy_app.py:158
77 msgid "Stop"
78 msgstr ""
79
80 #: pippy_app.py:153
81 msgid "<alt>s"
82 msgstr ""
83
84 #: pippy_app.py:167 pippy_app.py:173
85 msgid "Clear"
86 msgstr ""
87
88 #: pippy_app.py:168
89 msgid "<alt>c"
90 msgstr ""
91
92 #: pippy_app.py:197
93 msgid "Examples"
94 msgstr ""
95
96 #: pippy_app.py:229
97 msgid "My examples"
98 msgstr ""
99
100 #: pippy_app.py:358
101 #, python-format
102 msgid "%s Activity"
103 msgstr ""
104
105 #: pippy_app.py:438
106 msgid "Save as Activity Error"
107 msgstr ""
108
109 #: pippy_app.py:439
110 msgid ""
111 "Please give your activity a meaningful name before attempting to save it as "
112 "an activity."
113 msgstr ""
114
115 #: pippy_app.py:442 pippy_app.py:486
116 msgid "Ok"
117 msgstr ""
118
119 #: pippy_app.py:448
120 msgid "Creating activity bundle..."
121 msgstr ""
122
123 #: pippy_app.py:479
124 msgid "Pippy Activity"
125 msgstr ""
126
127 #: pippy_app.py:483
128 msgid "Save as Example Error"
129 msgstr ""
130
131 #: pippy_app.py:484
132 msgid ""
133 "Please give your activity a meaningful name before attempting to save it as "
134 "an example."
135 msgstr ""
136
137 #: pippy_app.py:492
138 msgid "Creating example..."
139 msgstr ""
140
141 #: pippy_app.py:499
142 msgid "Save as Example Warning"
143 msgstr ""
144
145 #: pippy_app.py:500
146 msgid "This example already exists. Do you want to overwrite it?"
147 msgstr ""
148
149 #: pippy_app.py:506 pippy_app.py:562
150 msgid "Saved as example."
151 msgstr ""
152
153 #: pippy_app.py:546
154 msgid "Activity saved to journal."
155 msgstr ""
304304 #: library/pippy/game.py:36
305305 msgid "PAUSED"
306306 msgstr "Mbegue"
307
308 #: notebook.py:428
309 msgid "Erase"
310 msgstr "Mbogue"
311
312
313 #: notebook.py:429
314 #, python-format
315 msgid "Do you want to permanently erase \"%s\"?"
316 msgstr "Emboguese opyta haguãicha \"%s\"?"
317
+0
-296
po/ha.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2017-03-24 17:39+1100\n"
9 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
11 "Language-Team: LANGUAGE <LL@li.org>\n"
12 "Language: ha\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.0.1\n"
17
18 #: activity/activity.info:2
19 msgid "Pippy"
20 msgstr ""
21
22 #: activity/activity.info:3
23 msgid ""
24 "Searching for programmers! Here you can use examples to begin learning the "
25 "language your computer understands called \"Python.\""
26 msgstr ""
27
28 #: filedialog.py:79
29 msgid "Choose an example to open"
30 msgstr ""
31
32 #: collabwrapper.py:178
33 msgid "Joining activity..."
34 msgstr ""
35
36 #: collabwrapper.py:179 collabwrapper.py:191
37 msgid "Please wait for the connection..."
38 msgstr ""
39
40 #: collabwrapper.py:190
41 msgid "Resuming shared activity..."
42 msgstr ""
43
44 #: toolbars.py:42
45 msgid "Zoom in"
46 msgstr ""
47
48 #: toolbars.py:48
49 msgid "Zoom out"
50 msgstr ""
51
52 #: activity.py:65
53 #, python-format
54 msgid "%s Source"
55 msgstr ""
56
57 #: icondialog.py:116
58 msgid "Select an icon"
59 msgstr ""
60
61 #: notebook.py:219
62 #, python-format
63 msgid "New Source File %d"
64 msgstr ""
65
66 #: sound_check.py:27 library/pippy/sound.py:41
67 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
68 msgstr ""
69
70 #: pippy_app.py:97
71 msgid "graphics"
72 msgstr ""
73
74 #: pippy_app.py:97
75 msgid "math"
76 msgstr ""
77
78 #: pippy_app.py:97
79 msgid "python"
80 msgstr ""
81
82 #: pippy_app.py:97
83 msgid "sound"
84 msgstr ""
85
86 #: pippy_app.py:98
87 msgid "string"
88 msgstr ""
89
90 #: pippy_app.py:98
91 msgid "tutorials"
92 msgstr ""
93
94 #: pippy_app.py:185
95 msgid "Import Python file to new tab"
96 msgstr ""
97
98 #: pippy_app.py:191
99 msgid "Export as Pippy document"
100 msgstr ""
101
102 #: pippy_app.py:197
103 msgid "Save this file to the Pippy library"
104 msgstr ""
105
106 #: pippy_app.py:205
107 msgid "Export as new Pippy example"
108 msgstr ""
109
110 #: pippy_app.py:211
111 msgid "Create a Sugar activity bundle"
112 msgstr ""
113
114 #. TRANS: A distutils package is used to distribute Python modules
115 #: pippy_app.py:218
116 msgid "Export as a distutils package"
117 msgstr ""
118
119 #: pippy_app.py:228
120 msgid "Edit"
121 msgstr ""
122
123 #: pippy_app.py:242
124 msgid "View"
125 msgstr ""
126
127 #: pippy_app.py:252 pippy_app.py:500
128 msgid "Show output panel"
129 msgstr ""
130
131 #: pippy_app.py:265 pippy_app.py:268
132 msgid "Run!"
133 msgstr ""
134
135 #: pippy_app.py:266
136 msgid "<alt>r"
137 msgstr ""
138
139 #: pippy_app.py:281 pippy_app.py:287
140 msgid "Stop"
141 msgstr ""
142
143 #: pippy_app.py:282
144 msgid "<alt>s"
145 msgstr ""
146
147 #: pippy_app.py:297 pippy_app.py:303
148 msgid "Clear"
149 msgstr ""
150
151 #: pippy_app.py:298
152 msgid "<alt>c"
153 msgstr ""
154
155 #: pippy_app.py:314
156 msgid "Open an example"
157 msgstr ""
158
159 #: pippy_app.py:389
160 msgid "My examples"
161 msgstr ""
162
163 #: pippy_app.py:496
164 msgid "Hide output panel"
165 msgstr ""
166
167 #: pippy_app.py:598
168 #, python-format
169 msgid "%s Activity"
170 msgstr ""
171
172 #: pippy_app.py:708
173 msgid "Python File added to Library"
174 msgstr ""
175
176 #: pippy_app.py:709
177 #, python-brace-format
178 msgid ""
179 "The file you selected has been added to the library. Use \"import "
180 "{importname}\" to import the library for using."
181 msgstr ""
182
183 #: pippy_app.py:719
184 msgid "Saved"
185 msgstr ""
186
187 #: pippy_app.py:720
188 msgid "The document has been saved to journal."
189 msgstr ""
190
191 #: pippy_app.py:734 pippy_app.py:741
192 msgid "Error importing Python file"
193 msgstr ""
194
195 #: pippy_app.py:735
196 msgid "The file you selected is not a Python file."
197 msgstr ""
198
199 #: pippy_app.py:742
200 msgid "The file you selected is already open"
201 msgstr ""
202
203 #: pippy_app.py:767 pippy_app.py:826
204 msgid "Save as Activity Error"
205 msgstr ""
206
207 #: pippy_app.py:768
208 msgid ""
209 "Please give your activity a meaningful name before attempting to save it as "
210 "an activity."
211 msgstr ""
212
213 #: pippy_app.py:771 pippy_app.py:778 pippy_app.py:873 pippy_app.py:915
214 msgid "Ok"
215 msgstr ""
216
217 #: pippy_app.py:779
218 msgid "Activity icon"
219 msgstr ""
220
221 #: pippy_app.py:780
222 msgid "Please select an activity icon."
223 msgstr ""
224
225 #: pippy_app.py:785 pippy_app.py:800
226 msgid "Creating activity bundle..."
227 msgstr ""
228
229 #: pippy_app.py:866 pippy_app.py:908
230 msgid "Pippy Activity"
231 msgstr ""
232
233 #: pippy_app.py:868
234 msgid "Save as distutils package error"
235 msgstr ""
236
237 #: pippy_app.py:869
238 msgid ""
239 "Please give your activity a meaningful name before attempting to save it as "
240 "an distutils package."
241 msgstr ""
242
243 #: pippy_app.py:910
244 msgid "Save as Example Error"
245 msgstr ""
246
247 #: pippy_app.py:912
248 msgid ""
249 "Please give your activity a meaningful name before attempting to save it as "
250 "an example."
251 msgstr ""
252
253 #: pippy_app.py:921
254 msgid "Creating example..."
255 msgstr ""
256
257 #: pippy_app.py:927
258 msgid "Save as Example Warning"
259 msgstr ""
260
261 #: pippy_app.py:928
262 msgid "This example already exists. Do you want to overwrite it?"
263 msgstr ""
264
265 #: pippy_app.py:935 pippy_app.py:993
266 msgid "Saved as example."
267 msgstr ""
268
269 #: pippy_app.py:957
270 msgid "Error saving activity to journal."
271 msgstr ""
272
273 #: pippy_app.py:977
274 msgid "Activity saved to journal."
275 msgstr ""
276
277 #: pippy_app.py:1119
278 msgid "Error"
279 msgstr ""
280
281 #: pippy_app.py:1120
282 msgid "Error reading data."
283 msgstr ""
284
285 #: pippy_app.py:1448
286 msgid "Working..."
287 msgstr ""
288
289 #: pippy_app.py:1451
290 msgid "done!"
291 msgstr ""
292
293 #: library/pippy/game.py:36
294 msgid "PAUSED"
295 msgstr ""
300300 #: library/pippy/game.py:36
301301 msgid "PAUSED"
302302 msgstr "מושהה"
303
304 #: notebook.py:428
305 msgid "Erase"
306 msgstr "למחוק"
307
308
309 #: notebook.py:429
310 #, python-format
311 msgid "Do you want to permanently erase \"%s\"?"
312 msgstr "למחוק את „%s“ לצמיתות?"
313
296296 #: library/pippy/game.py:36
297297 msgid "PAUSED"
298298 msgstr "विराम"
299
300 #: notebook.py:428
301 msgid "Erase"
302 msgstr "मिटाएँ"
303
304
305 #: notebook.py:429
306 #, python-format
307 msgid "Do you want to permanently erase \"%s\"?"
308 msgstr "आप स्थायी रूप से \"%s\" को मिटाना चाहते हैं?"
309
288288 #: library/pippy/game.py:36
289289 msgid "PAUSED"
290290 msgstr "ZAUSTAVLJENO"
291
292 #: notebook.py:428
293 msgid "Erase"
294 msgstr "Izbrisati"
295
296
297 #: notebook.py:429
298 #, python-format
299 msgid "Do you want to permanently erase \"%s\"?"
300 msgstr "Želiš trajno izbrisati „%s“?"
301
299299 #: library/pippy/game.py:36
300300 msgid "PAUSED"
301301 msgstr "Poze"
302
303 #: notebook.py:428
304 msgid "Erase"
305 msgstr "Efase"
306
303303 #: library/pippy/game.py:36
304304 msgid "PAUSED"
305305 msgstr "TONK'IDH"
306
307 #: notebook.py:428
308 msgid "Erase"
309 msgstr "Pakuw"
310
311
312 #: notebook.py:429
313 #, python-format
314 msgid "Do you want to permanently erase \"%s\"?"
315 msgstr "¿A le' ka pákuw abal etsey \"%s\"?"
316
298298 #: library/pippy/game.py:36
299299 msgid "PAUSED"
300300 msgstr "ԴԱԴԱՐԵՑՎԱԾ"
301
302 #: notebook.py:428
303 msgid "Erase"
304 msgstr "Ջնջել"
305
306
307 #: notebook.py:429
308 #, python-format
309 msgid "Do you want to permanently erase \"%s\"?"
310 msgstr "Ցանկանում ես ընդմիշտ ջնջել \"%s\"?"
311
+0
-296
po/ibo.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2017-03-24 17:39+1100\n"
9 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
11 "Language-Team: LANGUAGE <LL@li.org>\n"
12 "Language: ibo\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.11.0\n"
17
18 #: activity/activity.info:2
19 msgid "Pippy"
20 msgstr ""
21
22 #: activity/activity.info:3
23 msgid ""
24 "Searching for programmers! Here you can use examples to begin learning the "
25 "language your computer understands called \"Python.\""
26 msgstr ""
27
28 #: filedialog.py:79
29 msgid "Choose an example to open"
30 msgstr ""
31
32 #: collabwrapper.py:178
33 msgid "Joining activity..."
34 msgstr ""
35
36 #: collabwrapper.py:179 collabwrapper.py:191
37 msgid "Please wait for the connection..."
38 msgstr ""
39
40 #: collabwrapper.py:190
41 msgid "Resuming shared activity..."
42 msgstr ""
43
44 #: toolbars.py:42
45 msgid "Zoom in"
46 msgstr ""
47
48 #: toolbars.py:48
49 msgid "Zoom out"
50 msgstr ""
51
52 #: activity.py:65
53 #, python-format
54 msgid "%s Source"
55 msgstr ""
56
57 #: icondialog.py:116
58 msgid "Select an icon"
59 msgstr ""
60
61 #: notebook.py:219
62 #, python-format
63 msgid "New Source File %d"
64 msgstr ""
65
66 #: sound_check.py:27 library/pippy/sound.py:41
67 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
68 msgstr ""
69
70 #: pippy_app.py:97
71 msgid "graphics"
72 msgstr ""
73
74 #: pippy_app.py:97
75 msgid "math"
76 msgstr ""
77
78 #: pippy_app.py:97
79 msgid "python"
80 msgstr ""
81
82 #: pippy_app.py:97
83 msgid "sound"
84 msgstr ""
85
86 #: pippy_app.py:98
87 msgid "string"
88 msgstr ""
89
90 #: pippy_app.py:98
91 msgid "tutorials"
92 msgstr ""
93
94 #: pippy_app.py:185
95 msgid "Import Python file to new tab"
96 msgstr ""
97
98 #: pippy_app.py:191
99 msgid "Export as Pippy document"
100 msgstr ""
101
102 #: pippy_app.py:197
103 msgid "Save this file to the Pippy library"
104 msgstr ""
105
106 #: pippy_app.py:205
107 msgid "Export as new Pippy example"
108 msgstr ""
109
110 #: pippy_app.py:211
111 msgid "Create a Sugar activity bundle"
112 msgstr ""
113
114 #. TRANS: A distutils package is used to distribute Python modules
115 #: pippy_app.py:218
116 msgid "Export as a distutils package"
117 msgstr ""
118
119 #: pippy_app.py:228
120 msgid "Edit"
121 msgstr ""
122
123 #: pippy_app.py:242
124 msgid "View"
125 msgstr ""
126
127 #: pippy_app.py:252 pippy_app.py:500
128 msgid "Show output panel"
129 msgstr ""
130
131 #: pippy_app.py:265 pippy_app.py:268
132 msgid "Run!"
133 msgstr ""
134
135 #: pippy_app.py:266
136 msgid "<alt>r"
137 msgstr ""
138
139 #: pippy_app.py:281 pippy_app.py:287
140 msgid "Stop"
141 msgstr ""
142
143 #: pippy_app.py:282
144 msgid "<alt>s"
145 msgstr ""
146
147 #: pippy_app.py:297 pippy_app.py:303
148 msgid "Clear"
149 msgstr ""
150
151 #: pippy_app.py:298
152 msgid "<alt>c"
153 msgstr ""
154
155 #: pippy_app.py:314
156 msgid "Open an example"
157 msgstr ""
158
159 #: pippy_app.py:389
160 msgid "My examples"
161 msgstr ""
162
163 #: pippy_app.py:496
164 msgid "Hide output panel"
165 msgstr ""
166
167 #: pippy_app.py:598
168 #, python-format
169 msgid "%s Activity"
170 msgstr ""
171
172 #: pippy_app.py:708
173 msgid "Python File added to Library"
174 msgstr ""
175
176 #: pippy_app.py:709
177 #, python-brace-format
178 msgid ""
179 "The file you selected has been added to the library. Use \"import "
180 "{importname}\" to import the library for using."
181 msgstr ""
182
183 #: pippy_app.py:719
184 msgid "Saved"
185 msgstr ""
186
187 #: pippy_app.py:720
188 msgid "The document has been saved to journal."
189 msgstr ""
190
191 #: pippy_app.py:734 pippy_app.py:741
192 msgid "Error importing Python file"
193 msgstr ""
194
195 #: pippy_app.py:735
196 msgid "The file you selected is not a Python file."
197 msgstr ""
198
199 #: pippy_app.py:742
200 msgid "The file you selected is already open"
201 msgstr ""
202
203 #: pippy_app.py:767 pippy_app.py:826
204 msgid "Save as Activity Error"
205 msgstr ""
206
207 #: pippy_app.py:768
208 msgid ""
209 "Please give your activity a meaningful name before attempting to save it as "
210 "an activity."
211 msgstr ""
212
213 #: pippy_app.py:771 pippy_app.py:778 pippy_app.py:873 pippy_app.py:915
214 msgid "Ok"
215 msgstr ""
216
217 #: pippy_app.py:779
218 msgid "Activity icon"
219 msgstr ""
220
221 #: pippy_app.py:780
222 msgid "Please select an activity icon."
223 msgstr ""
224
225 #: pippy_app.py:785 pippy_app.py:800
226 msgid "Creating activity bundle..."
227 msgstr ""
228
229 #: pippy_app.py:866 pippy_app.py:908
230 msgid "Pippy Activity"
231 msgstr ""
232
233 #: pippy_app.py:868
234 msgid "Save as distutils package error"
235 msgstr ""
236
237 #: pippy_app.py:869
238 msgid ""
239 "Please give your activity a meaningful name before attempting to save it as "
240 "an distutils package."
241 msgstr ""
242
243 #: pippy_app.py:910
244 msgid "Save as Example Error"
245 msgstr ""
246
247 #: pippy_app.py:912
248 msgid ""
249 "Please give your activity a meaningful name before attempting to save it as "
250 "an example."
251 msgstr ""
252
253 #: pippy_app.py:921
254 msgid "Creating example..."
255 msgstr ""
256
257 #: pippy_app.py:927
258 msgid "Save as Example Warning"
259 msgstr ""
260
261 #: pippy_app.py:928
262 msgid "This example already exists. Do you want to overwrite it?"
263 msgstr ""
264
265 #: pippy_app.py:935 pippy_app.py:993
266 msgid "Saved as example."
267 msgstr ""
268
269 #: pippy_app.py:957
270 msgid "Error saving activity to journal."
271 msgstr ""
272
273 #: pippy_app.py:977
274 msgid "Activity saved to journal."
275 msgstr ""
276
277 #: pippy_app.py:1119
278 msgid "Error"
279 msgstr ""
280
281 #: pippy_app.py:1120
282 msgid "Error reading data."
283 msgstr ""
284
285 #: pippy_app.py:1448
286 msgid "Working..."
287 msgstr ""
288
289 #: pippy_app.py:1451
290 msgid "done!"
291 msgstr ""
292
293 #: library/pippy/game.py:36
294 msgid "PAUSED"
295 msgstr ""
300300 #: library/pippy/game.py:36
301301 msgid "PAUSED"
302302 msgstr "DITAHAN"
303
304 #: notebook.py:428
305 msgid "Erase"
306 msgstr "Hapus"
307
308
309 #: notebook.py:429
310 #, python-format
311 msgid "Do you want to permanently erase \"%s\"?"
312 msgstr "Apakah Anda hendak menghapus \"%s\" secara permanen?"
313
+0
-156
po/ig.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 # SOME DESCRIPTIVE TITLE.
5 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
6 # This file is distributed under the same license as the PACKAGE package.
7 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
8 # SOME DESCRIPTIVE TITLE.
9 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
10 # This file is distributed under the same license as the PACKAGE package.
11 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
12 #, fuzzy
13 msgid ""
14 msgstr ""
15 "Project-Id-Version: PACKAGE VERSION\n"
16 "Report-Msgid-Bugs-To: \n"
17 "POT-Creation-Date: 2012-06-19 00:34-0400\n"
18 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
19 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
20 "Language-Team: LANGUAGE <LL@li.org>\n"
21 "Language: \n"
22 "MIME-Version: 1.0\n"
23 "Content-Type: text/plain; charset=UTF-8\n"
24 "Content-Transfer-Encoding: 8bit\n"
25 "X-Generator: Translate Toolkit 1.0.1\n"
26
27 #: activity/activity.info:2
28 msgid "Pippy"
29 msgstr ""
30
31 #: activity.py:49
32 #, python-format
33 msgid "%s Source"
34 msgstr ""
35
36 #: activity.py:91
37 msgid "Copy selected text to clipboard"
38 msgstr ""
39
40 #: activity.py:96 pippy_app.py:113 pippy_app.py:118
41 msgid "Edit"
42 msgstr ""
43
44 #: library/pippy/game.py:36
45 msgid "PAUSED"
46 msgstr ""
47
48 #: library/pippy/sound.py:54
49 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
50 msgstr ""
51
52 #: pippy_app.py:90
53 msgid "Export as Pippy Document"
54 msgstr ""
55
56 #: pippy_app.py:96
57 msgid "Export as Pippy Example"
58 msgstr ""
59
60 #: pippy_app.py:102
61 msgid "Create Activity Bundle"
62 msgstr ""
63
64 #: pippy_app.py:111
65 msgid "Actions"
66 msgstr ""
67
68 #: pippy_app.py:138 pippy_app.py:141
69 msgid "Run!"
70 msgstr ""
71
72 #: pippy_app.py:139
73 msgid "<alt>r"
74 msgstr ""
75
76 #: pippy_app.py:152 pippy_app.py:158
77 msgid "Stop"
78 msgstr ""
79
80 #: pippy_app.py:153
81 msgid "<alt>s"
82 msgstr ""
83
84 #: pippy_app.py:167 pippy_app.py:173
85 msgid "Clear"
86 msgstr ""
87
88 #: pippy_app.py:168
89 msgid "<alt>c"
90 msgstr ""
91
92 #: pippy_app.py:197
93 msgid "Examples"
94 msgstr ""
95
96 #: pippy_app.py:229
97 msgid "My examples"
98 msgstr ""
99
100 #: pippy_app.py:358
101 #, python-format
102 msgid "%s Activity"
103 msgstr ""
104
105 #: pippy_app.py:438
106 msgid "Save as Activity Error"
107 msgstr ""
108
109 #: pippy_app.py:439
110 msgid ""
111 "Please give your activity a meaningful name before attempting to save it as "
112 "an activity."
113 msgstr ""
114
115 #: pippy_app.py:442 pippy_app.py:486
116 msgid "Ok"
117 msgstr ""
118
119 #: pippy_app.py:448
120 msgid "Creating activity bundle..."
121 msgstr ""
122
123 #: pippy_app.py:479
124 msgid "Pippy Activity"
125 msgstr ""
126
127 #: pippy_app.py:483
128 msgid "Save as Example Error"
129 msgstr ""
130
131 #: pippy_app.py:484
132 msgid ""
133 "Please give your activity a meaningful name before attempting to save it as "
134 "an example."
135 msgstr ""
136
137 #: pippy_app.py:492
138 msgid "Creating example..."
139 msgstr ""
140
141 #: pippy_app.py:499
142 msgid "Save as Example Warning"
143 msgstr ""
144
145 #: pippy_app.py:500
146 msgid "This example already exists. Do you want to overwrite it?"
147 msgstr ""
148
149 #: pippy_app.py:506 pippy_app.py:562
150 msgid "Saved as example."
151 msgstr ""
152
153 #: pippy_app.py:546
154 msgid "Activity saved to journal."
155 msgstr ""
296296 #: library/pippy/game.py:36
297297 msgid "PAUSED"
298298 msgstr ""
299
300 #: notebook.py:428
301 msgid "Erase"
302 msgstr "Eyða"
303
304
305 #: notebook.py:429
306 #, python-format
307 msgid "Do you want to permanently erase \"%s\"?"
308 msgstr "Ertu viss um að þú viljir endanlega eyða \"%s?"
309
299299 #: library/pippy/game.py:36
300300 msgid "PAUSED"
301301 msgstr "INPAUSA"
302
303 #: notebook.py:428
304 msgid "Erase"
305 msgstr "Elimina"
306
307
308 #: notebook.py:429
309 #, python-format
310 msgid "Do you want to permanently erase \"%s\"?"
311 msgstr "Vuoi cancellare definitivamente \"%s\"?"
312
295295 #: library/pippy/game.py:36
296296 msgid "PAUSED"
297297 msgstr "一時停止中"
298
299 #: notebook.py:428
300 msgid "Erase"
301 msgstr "消去する"
302
296296 #: library/pippy/game.py:36
297297 msgid "PAUSED"
298298 msgstr "បញ្ឈប់"
299
300 #: notebook.py:428
301 msgid "Erase"
302 msgstr "លុប"
303
+0
-156
po/kos.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 # SOME DESCRIPTIVE TITLE.
5 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
6 # This file is distributed under the same license as the PACKAGE package.
7 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
8 # SOME DESCRIPTIVE TITLE.
9 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
10 # This file is distributed under the same license as the PACKAGE package.
11 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
12 #, fuzzy
13 msgid ""
14 msgstr ""
15 "Project-Id-Version: PACKAGE VERSION\n"
16 "Report-Msgid-Bugs-To: \n"
17 "POT-Creation-Date: 2012-06-19 00:34-0400\n"
18 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
19 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
20 "Language-Team: LANGUAGE <LL@li.org>\n"
21 "Language: \n"
22 "MIME-Version: 1.0\n"
23 "Content-Type: text/plain; charset=UTF-8\n"
24 "Content-Transfer-Encoding: 8bit\n"
25 "X-Generator: Translate Toolkit 1.3.0\n"
26
27 #: activity/activity.info:2
28 msgid "Pippy"
29 msgstr ""
30
31 #: activity.py:49
32 #, python-format
33 msgid "%s Source"
34 msgstr ""
35
36 #: activity.py:91
37 msgid "Copy selected text to clipboard"
38 msgstr ""
39
40 #: activity.py:96 pippy_app.py:113 pippy_app.py:118
41 msgid "Edit"
42 msgstr ""
43
44 #: library/pippy/game.py:36
45 msgid "PAUSED"
46 msgstr ""
47
48 #: library/pippy/sound.py:54
49 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
50 msgstr ""
51
52 #: pippy_app.py:90
53 msgid "Export as Pippy Document"
54 msgstr ""
55
56 #: pippy_app.py:96
57 msgid "Export as Pippy Example"
58 msgstr ""
59
60 #: pippy_app.py:102
61 msgid "Create Activity Bundle"
62 msgstr ""
63
64 #: pippy_app.py:111
65 msgid "Actions"
66 msgstr ""
67
68 #: pippy_app.py:138 pippy_app.py:141
69 msgid "Run!"
70 msgstr ""
71
72 #: pippy_app.py:139
73 msgid "<alt>r"
74 msgstr ""
75
76 #: pippy_app.py:152 pippy_app.py:158
77 msgid "Stop"
78 msgstr ""
79
80 #: pippy_app.py:153
81 msgid "<alt>s"
82 msgstr ""
83
84 #: pippy_app.py:167 pippy_app.py:173
85 msgid "Clear"
86 msgstr ""
87
88 #: pippy_app.py:168
89 msgid "<alt>c"
90 msgstr ""
91
92 #: pippy_app.py:197
93 msgid "Examples"
94 msgstr ""
95
96 #: pippy_app.py:229
97 msgid "My examples"
98 msgstr ""
99
100 #: pippy_app.py:358
101 #, python-format
102 msgid "%s Activity"
103 msgstr ""
104
105 #: pippy_app.py:438
106 msgid "Save as Activity Error"
107 msgstr ""
108
109 #: pippy_app.py:439
110 msgid ""
111 "Please give your activity a meaningful name before attempting to save it as "
112 "an activity."
113 msgstr ""
114
115 #: pippy_app.py:442 pippy_app.py:486
116 msgid "Ok"
117 msgstr ""
118
119 #: pippy_app.py:448
120 msgid "Creating activity bundle..."
121 msgstr ""
122
123 #: pippy_app.py:479
124 msgid "Pippy Activity"
125 msgstr ""
126
127 #: pippy_app.py:483
128 msgid "Save as Example Error"
129 msgstr ""
130
131 #: pippy_app.py:484
132 msgid ""
133 "Please give your activity a meaningful name before attempting to save it as "
134 "an example."
135 msgstr ""
136
137 #: pippy_app.py:492
138 msgid "Creating example..."
139 msgstr ""
140
141 #: pippy_app.py:499
142 msgid "Save as Example Warning"
143 msgstr ""
144
145 #: pippy_app.py:500
146 msgid "This example already exists. Do you want to overwrite it?"
147 msgstr ""
148
149 #: pippy_app.py:506 pippy_app.py:562
150 msgid "Saved as example."
151 msgstr ""
152
153 #: pippy_app.py:546
154 msgid "Activity saved to journal."
155 msgstr ""
302302 #: library/pippy/game.py:36
303303 msgid "PAUSED"
304304 msgstr "PRISTABDYTA"
305
306 #: notebook.py:428
307 msgid "Erase"
308 msgstr "Ištrinti"
309
310
311 #: notebook.py:429
312 #, python-format
313 msgid "Do you want to permanently erase \"%s\"?"
314 msgstr "Ar norite negrįžtamai ištrinti \"%s\"?"
315
299299 #: library/pippy/game.py:36
300300 msgid "PAUSED"
301301 msgstr "Mijanona"
302
303 #: notebook.py:428
304 msgid "Erase"
305 msgstr "Soloy"
306
298298 #: library/pippy/game.py:36
299299 msgid "PAUSED"
300300 msgstr "KUA TĀRIA"
301
302 #: notebook.py:428
303 msgid "Erase"
304 msgstr "Muku"
305
306
307 #: notebook.py:429
308 #, python-format
309 msgid "Do you want to permanently erase \"%s\"?"
310 msgstr "E hiahia ana koe kia muku i \"%s\" mō ake tonu atu?"
311
300300 #: library/pippy/game.py:36
301301 msgid "PAUSED"
302302 msgstr "ПАУЗИРАНО"
303
304 #: notebook.py:428
305 msgid "Erase"
306 msgstr "Избриши"
307
+0
-296
po/ml.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2017-03-24 17:39+1100\n"
9 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
11 "Language-Team: LANGUAGE <LL@li.org>\n"
12 "Language: ml\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.0.1\n"
17
18 #: activity/activity.info:2
19 msgid "Pippy"
20 msgstr ""
21
22 #: activity/activity.info:3
23 msgid ""
24 "Searching for programmers! Here you can use examples to begin learning the "
25 "language your computer understands called \"Python.\""
26 msgstr ""
27
28 #: filedialog.py:79
29 msgid "Choose an example to open"
30 msgstr ""
31
32 #: collabwrapper.py:178
33 msgid "Joining activity..."
34 msgstr ""
35
36 #: collabwrapper.py:179 collabwrapper.py:191
37 msgid "Please wait for the connection..."
38 msgstr ""
39
40 #: collabwrapper.py:190
41 msgid "Resuming shared activity..."
42 msgstr ""
43
44 #: toolbars.py:42
45 msgid "Zoom in"
46 msgstr ""
47
48 #: toolbars.py:48
49 msgid "Zoom out"
50 msgstr ""
51
52 #: activity.py:65
53 #, python-format
54 msgid "%s Source"
55 msgstr ""
56
57 #: icondialog.py:116
58 msgid "Select an icon"
59 msgstr ""
60
61 #: notebook.py:219
62 #, python-format
63 msgid "New Source File %d"
64 msgstr ""
65
66 #: sound_check.py:27 library/pippy/sound.py:41
67 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
68 msgstr ""
69
70 #: pippy_app.py:97
71 msgid "graphics"
72 msgstr ""
73
74 #: pippy_app.py:97
75 msgid "math"
76 msgstr ""
77
78 #: pippy_app.py:97
79 msgid "python"
80 msgstr ""
81
82 #: pippy_app.py:97
83 msgid "sound"
84 msgstr ""
85
86 #: pippy_app.py:98
87 msgid "string"
88 msgstr ""
89
90 #: pippy_app.py:98
91 msgid "tutorials"
92 msgstr ""
93
94 #: pippy_app.py:185
95 msgid "Import Python file to new tab"
96 msgstr ""
97
98 #: pippy_app.py:191
99 msgid "Export as Pippy document"
100 msgstr ""
101
102 #: pippy_app.py:197
103 msgid "Save this file to the Pippy library"
104 msgstr ""
105
106 #: pippy_app.py:205
107 msgid "Export as new Pippy example"
108 msgstr ""
109
110 #: pippy_app.py:211
111 msgid "Create a Sugar activity bundle"
112 msgstr ""
113
114 #. TRANS: A distutils package is used to distribute Python modules
115 #: pippy_app.py:218
116 msgid "Export as a distutils package"
117 msgstr ""
118
119 #: pippy_app.py:228
120 msgid "Edit"
121 msgstr ""
122
123 #: pippy_app.py:242
124 msgid "View"
125 msgstr ""
126
127 #: pippy_app.py:252 pippy_app.py:500
128 msgid "Show output panel"
129 msgstr ""
130
131 #: pippy_app.py:265 pippy_app.py:268
132 msgid "Run!"
133 msgstr ""
134
135 #: pippy_app.py:266
136 msgid "<alt>r"
137 msgstr ""
138
139 #: pippy_app.py:281 pippy_app.py:287
140 msgid "Stop"
141 msgstr ""
142
143 #: pippy_app.py:282
144 msgid "<alt>s"
145 msgstr ""
146
147 #: pippy_app.py:297 pippy_app.py:303
148 msgid "Clear"
149 msgstr ""
150
151 #: pippy_app.py:298
152 msgid "<alt>c"
153 msgstr ""
154
155 #: pippy_app.py:314
156 msgid "Open an example"
157 msgstr ""
158
159 #: pippy_app.py:389
160 msgid "My examples"
161 msgstr ""
162
163 #: pippy_app.py:496
164 msgid "Hide output panel"
165 msgstr ""
166
167 #: pippy_app.py:598
168 #, python-format
169 msgid "%s Activity"
170 msgstr ""
171
172 #: pippy_app.py:708
173 msgid "Python File added to Library"
174 msgstr ""
175
176 #: pippy_app.py:709
177 #, python-brace-format
178 msgid ""
179 "The file you selected has been added to the library. Use \"import "
180 "{importname}\" to import the library for using."
181 msgstr ""
182
183 #: pippy_app.py:719
184 msgid "Saved"
185 msgstr ""
186
187 #: pippy_app.py:720
188 msgid "The document has been saved to journal."
189 msgstr ""
190
191 #: pippy_app.py:734 pippy_app.py:741
192 msgid "Error importing Python file"
193 msgstr ""
194
195 #: pippy_app.py:735
196 msgid "The file you selected is not a Python file."
197 msgstr ""
198
199 #: pippy_app.py:742
200 msgid "The file you selected is already open"
201 msgstr ""
202
203 #: pippy_app.py:767 pippy_app.py:826
204 msgid "Save as Activity Error"
205 msgstr ""
206
207 #: pippy_app.py:768
208 msgid ""
209 "Please give your activity a meaningful name before attempting to save it as "
210 "an activity."
211 msgstr ""
212
213 #: pippy_app.py:771 pippy_app.py:778 pippy_app.py:873 pippy_app.py:915
214 msgid "Ok"
215 msgstr ""
216
217 #: pippy_app.py:779
218 msgid "Activity icon"
219 msgstr ""
220
221 #: pippy_app.py:780
222 msgid "Please select an activity icon."
223 msgstr ""
224
225 #: pippy_app.py:785 pippy_app.py:800
226 msgid "Creating activity bundle..."
227 msgstr ""
228
229 #: pippy_app.py:866 pippy_app.py:908
230 msgid "Pippy Activity"
231 msgstr ""
232
233 #: pippy_app.py:868
234 msgid "Save as distutils package error"
235 msgstr ""
236
237 #: pippy_app.py:869
238 msgid ""
239 "Please give your activity a meaningful name before attempting to save it as "
240 "an distutils package."
241 msgstr ""
242
243 #: pippy_app.py:910
244 msgid "Save as Example Error"
245 msgstr ""
246
247 #: pippy_app.py:912
248 msgid ""
249 "Please give your activity a meaningful name before attempting to save it as "
250 "an example."
251 msgstr ""
252
253 #: pippy_app.py:921
254 msgid "Creating example..."
255 msgstr ""
256
257 #: pippy_app.py:927
258 msgid "Save as Example Warning"
259 msgstr ""
260
261 #: pippy_app.py:928
262 msgid "This example already exists. Do you want to overwrite it?"
263 msgstr ""
264
265 #: pippy_app.py:935 pippy_app.py:993
266 msgid "Saved as example."
267 msgstr ""
268
269 #: pippy_app.py:957
270 msgid "Error saving activity to journal."
271 msgstr ""
272
273 #: pippy_app.py:977
274 msgid "Activity saved to journal."
275 msgstr ""
276
277 #: pippy_app.py:1119
278 msgid "Error"
279 msgstr ""
280
281 #: pippy_app.py:1120
282 msgid "Error reading data."
283 msgstr ""
284
285 #: pippy_app.py:1448
286 msgid "Working..."
287 msgstr ""
288
289 #: pippy_app.py:1451
290 msgid "done!"
291 msgstr ""
292
293 #: library/pippy/game.py:36
294 msgid "PAUSED"
295 msgstr ""
297297 #: library/pippy/game.py:36
298298 msgid "PAUSED"
299299 msgstr "ТҮР ЗОГССОН"
300
301 #: notebook.py:428
302 msgid "Erase"
303 msgstr "Арилгах"
304
295295 #: library/pippy/game.py:36
296296 msgid "PAUSED"
297297 msgstr "थोडा वेळ थांबा"
298
299 #: notebook.py:428
300 msgid "Erase"
301 msgstr "खोडा"
302
+0
-296
po/ms.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2017-03-24 17:39+1100\n"
9 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
11 "Language-Team: LANGUAGE <LL@li.org>\n"
12 "Language: ms\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.1.1rc4\n"
17
18 #: activity/activity.info:2
19 msgid "Pippy"
20 msgstr ""
21
22 #: activity/activity.info:3
23 msgid ""
24 "Searching for programmers! Here you can use examples to begin learning the "
25 "language your computer understands called \"Python.\""
26 msgstr ""
27
28 #: filedialog.py:79
29 msgid "Choose an example to open"
30 msgstr ""
31
32 #: collabwrapper.py:178
33 msgid "Joining activity..."
34 msgstr ""
35
36 #: collabwrapper.py:179 collabwrapper.py:191
37 msgid "Please wait for the connection..."
38 msgstr ""
39
40 #: collabwrapper.py:190
41 msgid "Resuming shared activity..."
42 msgstr ""
43
44 #: toolbars.py:42
45 msgid "Zoom in"
46 msgstr ""
47
48 #: toolbars.py:48
49 msgid "Zoom out"
50 msgstr ""
51
52 #: activity.py:65
53 #, python-format
54 msgid "%s Source"
55 msgstr ""
56
57 #: icondialog.py:116
58 msgid "Select an icon"
59 msgstr ""
60
61 #: notebook.py:219
62 #, python-format
63 msgid "New Source File %d"
64 msgstr ""
65
66 #: sound_check.py:27 library/pippy/sound.py:41
67 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
68 msgstr ""
69
70 #: pippy_app.py:97
71 msgid "graphics"
72 msgstr ""
73
74 #: pippy_app.py:97
75 msgid "math"
76 msgstr ""
77
78 #: pippy_app.py:97
79 msgid "python"
80 msgstr ""
81
82 #: pippy_app.py:97
83 msgid "sound"
84 msgstr ""
85
86 #: pippy_app.py:98
87 msgid "string"
88 msgstr ""
89
90 #: pippy_app.py:98
91 msgid "tutorials"
92 msgstr ""
93
94 #: pippy_app.py:185
95 msgid "Import Python file to new tab"
96 msgstr ""
97
98 #: pippy_app.py:191
99 msgid "Export as Pippy document"
100 msgstr ""
101
102 #: pippy_app.py:197
103 msgid "Save this file to the Pippy library"
104 msgstr ""
105
106 #: pippy_app.py:205
107 msgid "Export as new Pippy example"
108 msgstr ""
109
110 #: pippy_app.py:211
111 msgid "Create a Sugar activity bundle"
112 msgstr ""
113
114 #. TRANS: A distutils package is used to distribute Python modules
115 #: pippy_app.py:218
116 msgid "Export as a distutils package"
117 msgstr ""
118
119 #: pippy_app.py:228
120 msgid "Edit"
121 msgstr ""
122
123 #: pippy_app.py:242
124 msgid "View"
125 msgstr ""
126
127 #: pippy_app.py:252 pippy_app.py:500
128 msgid "Show output panel"
129 msgstr ""
130
131 #: pippy_app.py:265 pippy_app.py:268
132 msgid "Run!"
133 msgstr ""
134
135 #: pippy_app.py:266
136 msgid "<alt>r"
137 msgstr ""
138
139 #: pippy_app.py:281 pippy_app.py:287
140 msgid "Stop"
141 msgstr ""
142
143 #: pippy_app.py:282
144 msgid "<alt>s"
145 msgstr ""
146
147 #: pippy_app.py:297 pippy_app.py:303
148 msgid "Clear"
149 msgstr ""
150
151 #: pippy_app.py:298
152 msgid "<alt>c"
153 msgstr ""
154
155 #: pippy_app.py:314
156 msgid "Open an example"
157 msgstr ""
158
159 #: pippy_app.py:389
160 msgid "My examples"
161 msgstr ""
162
163 #: pippy_app.py:496
164 msgid "Hide output panel"
165 msgstr ""
166
167 #: pippy_app.py:598
168 #, python-format
169 msgid "%s Activity"
170 msgstr ""
171
172 #: pippy_app.py:708
173 msgid "Python File added to Library"
174 msgstr ""
175
176 #: pippy_app.py:709
177 #, python-brace-format
178 msgid ""
179 "The file you selected has been added to the library. Use \"import "
180 "{importname}\" to import the library for using."
181 msgstr ""
182
183 #: pippy_app.py:719
184 msgid "Saved"
185 msgstr ""
186
187 #: pippy_app.py:720
188 msgid "The document has been saved to journal."
189 msgstr ""
190
191 #: pippy_app.py:734 pippy_app.py:741
192 msgid "Error importing Python file"
193 msgstr ""
194
195 #: pippy_app.py:735
196 msgid "The file you selected is not a Python file."
197 msgstr ""
198
199 #: pippy_app.py:742
200 msgid "The file you selected is already open"
201 msgstr ""
202
203 #: pippy_app.py:767 pippy_app.py:826
204 msgid "Save as Activity Error"
205 msgstr ""
206
207 #: pippy_app.py:768
208 msgid ""
209 "Please give your activity a meaningful name before attempting to save it as "
210 "an activity."
211 msgstr ""
212
213 #: pippy_app.py:771 pippy_app.py:778 pippy_app.py:873 pippy_app.py:915
214 msgid "Ok"
215 msgstr ""
216
217 #: pippy_app.py:779
218 msgid "Activity icon"
219 msgstr ""
220
221 #: pippy_app.py:780
222 msgid "Please select an activity icon."
223 msgstr ""
224
225 #: pippy_app.py:785 pippy_app.py:800
226 msgid "Creating activity bundle..."
227 msgstr ""
228
229 #: pippy_app.py:866 pippy_app.py:908
230 msgid "Pippy Activity"
231 msgstr ""
232
233 #: pippy_app.py:868
234 msgid "Save as distutils package error"
235 msgstr ""
236
237 #: pippy_app.py:869
238 msgid ""
239 "Please give your activity a meaningful name before attempting to save it as "
240 "an distutils package."
241 msgstr ""
242
243 #: pippy_app.py:910
244 msgid "Save as Example Error"
245 msgstr ""
246
247 #: pippy_app.py:912
248 msgid ""
249 "Please give your activity a meaningful name before attempting to save it as "
250 "an example."
251 msgstr ""
252
253 #: pippy_app.py:921
254 msgid "Creating example..."
255 msgstr ""
256
257 #: pippy_app.py:927
258 msgid "Save as Example Warning"
259 msgstr ""
260
261 #: pippy_app.py:928
262 msgid "This example already exists. Do you want to overwrite it?"
263 msgstr ""
264
265 #: pippy_app.py:935 pippy_app.py:993
266 msgid "Saved as example."
267 msgstr ""
268
269 #: pippy_app.py:957
270 msgid "Error saving activity to journal."
271 msgstr ""
272
273 #: pippy_app.py:977
274 msgid "Activity saved to journal."
275 msgstr ""
276
277 #: pippy_app.py:1119
278 msgid "Error"
279 msgstr ""
280
281 #: pippy_app.py:1120
282 msgid "Error reading data."
283 msgstr ""
284
285 #: pippy_app.py:1448
286 msgid "Working..."
287 msgstr ""
288
289 #: pippy_app.py:1451
290 msgid "done!"
291 msgstr ""
292
293 #: library/pippy/game.py:36
294 msgid "PAUSED"
295 msgstr ""
+0
-296
po/mvo.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2017-03-24 17:39+1100\n"
9 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
11 "Language-Team: LANGUAGE <LL@li.org>\n"
12 "Language: mvo\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.1.1rc4\n"
17
18 #: activity/activity.info:2
19 msgid "Pippy"
20 msgstr ""
21
22 #: activity/activity.info:3
23 msgid ""
24 "Searching for programmers! Here you can use examples to begin learning the "
25 "language your computer understands called \"Python.\""
26 msgstr ""
27
28 #: filedialog.py:79
29 msgid "Choose an example to open"
30 msgstr ""
31
32 #: collabwrapper.py:178
33 msgid "Joining activity..."
34 msgstr ""
35
36 #: collabwrapper.py:179 collabwrapper.py:191
37 msgid "Please wait for the connection..."
38 msgstr ""
39
40 #: collabwrapper.py:190
41 msgid "Resuming shared activity..."
42 msgstr ""
43
44 #: toolbars.py:42
45 msgid "Zoom in"
46 msgstr ""
47
48 #: toolbars.py:48
49 msgid "Zoom out"
50 msgstr ""
51
52 #: activity.py:65
53 #, python-format
54 msgid "%s Source"
55 msgstr ""
56
57 #: icondialog.py:116
58 msgid "Select an icon"
59 msgstr ""
60
61 #: notebook.py:219
62 #, python-format
63 msgid "New Source File %d"
64 msgstr ""
65
66 #: sound_check.py:27 library/pippy/sound.py:41
67 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
68 msgstr ""
69
70 #: pippy_app.py:97
71 msgid "graphics"
72 msgstr ""
73
74 #: pippy_app.py:97
75 msgid "math"
76 msgstr ""
77
78 #: pippy_app.py:97
79 msgid "python"
80 msgstr ""
81
82 #: pippy_app.py:97
83 msgid "sound"
84 msgstr ""
85
86 #: pippy_app.py:98
87 msgid "string"
88 msgstr ""
89
90 #: pippy_app.py:98
91 msgid "tutorials"
92 msgstr ""
93
94 #: pippy_app.py:185
95 msgid "Import Python file to new tab"
96 msgstr ""
97
98 #: pippy_app.py:191
99 msgid "Export as Pippy document"
100 msgstr ""
101
102 #: pippy_app.py:197
103 msgid "Save this file to the Pippy library"
104 msgstr ""
105
106 #: pippy_app.py:205
107 msgid "Export as new Pippy example"
108 msgstr ""
109
110 #: pippy_app.py:211
111 msgid "Create a Sugar activity bundle"
112 msgstr ""
113
114 #. TRANS: A distutils package is used to distribute Python modules
115 #: pippy_app.py:218
116 msgid "Export as a distutils package"
117 msgstr ""
118
119 #: pippy_app.py:228
120 msgid "Edit"
121 msgstr ""
122
123 #: pippy_app.py:242
124 msgid "View"
125 msgstr ""
126
127 #: pippy_app.py:252 pippy_app.py:500
128 msgid "Show output panel"
129 msgstr ""
130
131 #: pippy_app.py:265 pippy_app.py:268
132 msgid "Run!"
133 msgstr ""
134
135 #: pippy_app.py:266
136 msgid "<alt>r"
137 msgstr ""
138
139 #: pippy_app.py:281 pippy_app.py:287
140 msgid "Stop"
141 msgstr ""
142
143 #: pippy_app.py:282
144 msgid "<alt>s"
145 msgstr ""
146
147 #: pippy_app.py:297 pippy_app.py:303
148 msgid "Clear"
149 msgstr ""
150
151 #: pippy_app.py:298
152 msgid "<alt>c"
153 msgstr ""
154
155 #: pippy_app.py:314
156 msgid "Open an example"
157 msgstr ""
158
159 #: pippy_app.py:389
160 msgid "My examples"
161 msgstr ""
162
163 #: pippy_app.py:496
164 msgid "Hide output panel"
165 msgstr ""
166
167 #: pippy_app.py:598
168 #, python-format
169 msgid "%s Activity"
170 msgstr ""
171
172 #: pippy_app.py:708
173 msgid "Python File added to Library"
174 msgstr ""
175
176 #: pippy_app.py:709
177 #, python-brace-format
178 msgid ""
179 "The file you selected has been added to the library. Use \"import "
180 "{importname}\" to import the library for using."
181 msgstr ""
182
183 #: pippy_app.py:719
184 msgid "Saved"
185 msgstr ""
186
187 #: pippy_app.py:720
188 msgid "The document has been saved to journal."
189 msgstr ""
190
191 #: pippy_app.py:734 pippy_app.py:741
192 msgid "Error importing Python file"
193 msgstr ""
194
195 #: pippy_app.py:735
196 msgid "The file you selected is not a Python file."
197 msgstr ""
198
199 #: pippy_app.py:742
200 msgid "The file you selected is already open"
201 msgstr ""
202
203 #: pippy_app.py:767 pippy_app.py:826
204 msgid "Save as Activity Error"
205 msgstr ""
206
207 #: pippy_app.py:768
208 msgid ""
209 "Please give your activity a meaningful name before attempting to save it as "
210 "an activity."
211 msgstr ""
212
213 #: pippy_app.py:771 pippy_app.py:778 pippy_app.py:873 pippy_app.py:915
214 msgid "Ok"
215 msgstr ""
216
217 #: pippy_app.py:779
218 msgid "Activity icon"
219 msgstr ""
220
221 #: pippy_app.py:780
222 msgid "Please select an activity icon."
223 msgstr ""
224
225 #: pippy_app.py:785 pippy_app.py:800
226 msgid "Creating activity bundle..."
227 msgstr ""
228
229 #: pippy_app.py:866 pippy_app.py:908
230 msgid "Pippy Activity"
231 msgstr ""
232
233 #: pippy_app.py:868
234 msgid "Save as distutils package error"
235 msgstr ""
236
237 #: pippy_app.py:869
238 msgid ""
239 "Please give your activity a meaningful name before attempting to save it as "
240 "an distutils package."
241 msgstr ""
242
243 #: pippy_app.py:910
244 msgid "Save as Example Error"
245 msgstr ""
246
247 #: pippy_app.py:912
248 msgid ""
249 "Please give your activity a meaningful name before attempting to save it as "
250 "an example."
251 msgstr ""
252
253 #: pippy_app.py:921
254 msgid "Creating example..."
255 msgstr ""
256
257 #: pippy_app.py:927
258 msgid "Save as Example Warning"
259 msgstr ""
260
261 #: pippy_app.py:928
262 msgid "This example already exists. Do you want to overwrite it?"
263 msgstr ""
264
265 #: pippy_app.py:935 pippy_app.py:993
266 msgid "Saved as example."
267 msgstr ""
268
269 #: pippy_app.py:957
270 msgid "Error saving activity to journal."
271 msgstr ""
272
273 #: pippy_app.py:977
274 msgid "Activity saved to journal."
275 msgstr ""
276
277 #: pippy_app.py:1119
278 msgid "Error"
279 msgstr ""
280
281 #: pippy_app.py:1120
282 msgid "Error reading data."
283 msgstr ""
284
285 #: pippy_app.py:1448
286 msgid "Working..."
287 msgstr ""
288
289 #: pippy_app.py:1451
290 msgid "done!"
291 msgstr ""
292
293 #: library/pippy/game.py:36
294 msgid "PAUSED"
295 msgstr ""
172172
173173 #~ msgid "Please install TamTamEdit's sound library."
174174 #~ msgstr "Vennligst installer TamTamEdit sitt lydbibliotek."
175
176 #: notebook.py:428
177 msgid "Erase"
178 msgstr "Slett"
179
298298 #: library/pippy/game.py:36
299299 msgid "PAUSED"
300300 msgstr "रोकिएको छ"
301
302 #: notebook.py:428
303 msgid "Erase"
304 msgstr "मेट"
305
306
307 #: notebook.py:429
308 #, python-format
309 msgid "Do you want to permanently erase \"%s\"?"
310 msgstr "के तिमीलाई \"%s\" स्थायी रुपमा मेटाउन मन छ?"
311
307307 #: library/pippy/game.py:36
308308 msgid "PAUSED"
309309 msgstr "GEPAUZEERD"
310
311 #: notebook.py:428
312 msgid "Erase"
313 msgstr "Wissen"
314
315
316 #: notebook.py:429
317 #, python-format
318 msgid "Do you want to permanently erase \"%s\"?"
319 msgstr "Wil je permanent verwijderen \"%s\"?"
320
+0
-296
po/pa.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2017-03-24 17:39+1100\n"
9 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
11 "Language-Team: LANGUAGE <LL@li.org>\n"
12 "Language: pa\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.0.1\n"
17
18 #: activity/activity.info:2
19 msgid "Pippy"
20 msgstr ""
21
22 #: activity/activity.info:3
23 msgid ""
24 "Searching for programmers! Here you can use examples to begin learning the "
25 "language your computer understands called \"Python.\""
26 msgstr ""
27
28 #: filedialog.py:79
29 msgid "Choose an example to open"
30 msgstr ""
31
32 #: collabwrapper.py:178
33 msgid "Joining activity..."
34 msgstr ""
35
36 #: collabwrapper.py:179 collabwrapper.py:191
37 msgid "Please wait for the connection..."
38 msgstr ""
39
40 #: collabwrapper.py:190
41 msgid "Resuming shared activity..."
42 msgstr ""
43
44 #: toolbars.py:42
45 msgid "Zoom in"
46 msgstr ""
47
48 #: toolbars.py:48
49 msgid "Zoom out"
50 msgstr ""
51
52 #: activity.py:65
53 #, python-format
54 msgid "%s Source"
55 msgstr ""
56
57 #: icondialog.py:116
58 msgid "Select an icon"
59 msgstr ""
60
61 #: notebook.py:219
62 #, python-format
63 msgid "New Source File %d"
64 msgstr ""
65
66 #: sound_check.py:27 library/pippy/sound.py:41
67 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
68 msgstr ""
69
70 #: pippy_app.py:97
71 msgid "graphics"
72 msgstr ""
73
74 #: pippy_app.py:97
75 msgid "math"
76 msgstr ""
77
78 #: pippy_app.py:97
79 msgid "python"
80 msgstr ""
81
82 #: pippy_app.py:97
83 msgid "sound"
84 msgstr ""
85
86 #: pippy_app.py:98
87 msgid "string"
88 msgstr ""
89
90 #: pippy_app.py:98
91 msgid "tutorials"
92 msgstr ""
93
94 #: pippy_app.py:185
95 msgid "Import Python file to new tab"
96 msgstr ""
97
98 #: pippy_app.py:191
99 msgid "Export as Pippy document"
100 msgstr ""
101
102 #: pippy_app.py:197
103 msgid "Save this file to the Pippy library"
104 msgstr ""
105
106 #: pippy_app.py:205
107 msgid "Export as new Pippy example"
108 msgstr ""
109
110 #: pippy_app.py:211
111 msgid "Create a Sugar activity bundle"
112 msgstr ""
113
114 #. TRANS: A distutils package is used to distribute Python modules
115 #: pippy_app.py:218
116 msgid "Export as a distutils package"
117 msgstr ""
118
119 #: pippy_app.py:228
120 msgid "Edit"
121 msgstr ""
122
123 #: pippy_app.py:242
124 msgid "View"
125 msgstr ""
126
127 #: pippy_app.py:252 pippy_app.py:500
128 msgid "Show output panel"
129 msgstr ""
130
131 #: pippy_app.py:265 pippy_app.py:268
132 msgid "Run!"
133 msgstr ""
134
135 #: pippy_app.py:266
136 msgid "<alt>r"
137 msgstr ""
138
139 #: pippy_app.py:281 pippy_app.py:287
140 msgid "Stop"
141 msgstr ""
142
143 #: pippy_app.py:282
144 msgid "<alt>s"
145 msgstr ""
146
147 #: pippy_app.py:297 pippy_app.py:303
148 msgid "Clear"
149 msgstr ""
150
151 #: pippy_app.py:298
152 msgid "<alt>c"
153 msgstr ""
154
155 #: pippy_app.py:314
156 msgid "Open an example"
157 msgstr ""
158
159 #: pippy_app.py:389
160 msgid "My examples"
161 msgstr ""
162
163 #: pippy_app.py:496
164 msgid "Hide output panel"
165 msgstr ""
166
167 #: pippy_app.py:598
168 #, python-format
169 msgid "%s Activity"
170 msgstr ""
171
172 #: pippy_app.py:708
173 msgid "Python File added to Library"
174 msgstr ""
175
176 #: pippy_app.py:709
177 #, python-brace-format
178 msgid ""
179 "The file you selected has been added to the library. Use \"import "
180 "{importname}\" to import the library for using."
181 msgstr ""
182
183 #: pippy_app.py:719
184 msgid "Saved"
185 msgstr ""
186
187 #: pippy_app.py:720
188 msgid "The document has been saved to journal."
189 msgstr ""
190
191 #: pippy_app.py:734 pippy_app.py:741
192 msgid "Error importing Python file"
193 msgstr ""
194
195 #: pippy_app.py:735
196 msgid "The file you selected is not a Python file."
197 msgstr ""
198
199 #: pippy_app.py:742
200 msgid "The file you selected is already open"
201 msgstr ""
202
203 #: pippy_app.py:767 pippy_app.py:826
204 msgid "Save as Activity Error"
205 msgstr ""
206
207 #: pippy_app.py:768
208 msgid ""
209 "Please give your activity a meaningful name before attempting to save it as "
210 "an activity."
211 msgstr ""
212
213 #: pippy_app.py:771 pippy_app.py:778 pippy_app.py:873 pippy_app.py:915
214 msgid "Ok"
215 msgstr ""
216
217 #: pippy_app.py:779
218 msgid "Activity icon"
219 msgstr ""
220
221 #: pippy_app.py:780
222 msgid "Please select an activity icon."
223 msgstr ""
224
225 #: pippy_app.py:785 pippy_app.py:800
226 msgid "Creating activity bundle..."
227 msgstr ""
228
229 #: pippy_app.py:866 pippy_app.py:908
230 msgid "Pippy Activity"
231 msgstr ""
232
233 #: pippy_app.py:868
234 msgid "Save as distutils package error"
235 msgstr ""
236
237 #: pippy_app.py:869
238 msgid ""
239 "Please give your activity a meaningful name before attempting to save it as "
240 "an distutils package."
241 msgstr ""
242
243 #: pippy_app.py:910
244 msgid "Save as Example Error"
245 msgstr ""
246
247 #: pippy_app.py:912
248 msgid ""
249 "Please give your activity a meaningful name before attempting to save it as "
250 "an example."
251 msgstr ""
252
253 #: pippy_app.py:921
254 msgid "Creating example..."
255 msgstr ""
256
257 #: pippy_app.py:927
258 msgid "Save as Example Warning"
259 msgstr ""
260
261 #: pippy_app.py:928
262 msgid "This example already exists. Do you want to overwrite it?"
263 msgstr ""
264
265 #: pippy_app.py:935 pippy_app.py:993
266 msgid "Saved as example."
267 msgstr ""
268
269 #: pippy_app.py:957
270 msgid "Error saving activity to journal."
271 msgstr ""
272
273 #: pippy_app.py:977
274 msgid "Activity saved to journal."
275 msgstr ""
276
277 #: pippy_app.py:1119
278 msgid "Error"
279 msgstr ""
280
281 #: pippy_app.py:1120
282 msgid "Error reading data."
283 msgstr ""
284
285 #: pippy_app.py:1448
286 msgid "Working..."
287 msgstr ""
288
289 #: pippy_app.py:1451
290 msgid "done!"
291 msgstr ""
292
293 #: library/pippy/game.py:36
294 msgid "PAUSED"
295 msgstr ""
299299 #: library/pippy/game.py:36
300300 msgid "PAUSED"
301301 msgstr "Den pausa"
302
303 #: notebook.py:428
304 msgid "Erase"
305 msgstr "Paga"
306
307
308 #: notebook.py:429
309 #, python-format
310 msgid "Do you want to permanently erase \"%s\"?"
311 msgstr "Bo ke paga \"%s\" permanentemente?"
312
303303 #: library/pippy/game.py:36
304304 msgid "PAUSED"
305305 msgstr "PAUZA"
306
307 #: notebook.py:428
308 msgid "Erase"
309 msgstr "Usuń"
310
311
312 #: notebook.py:429
313 #, python-format
314 msgid "Do you want to permanently erase \"%s\"?"
315 msgstr "Czy chcesz trwale wykasować \"%s\"?"
316
299299 #: library/pippy/game.py:36
300300 msgid "PAUSED"
301301 msgstr "ځنډول شوی"
302
303 #: notebook.py:428
304 msgid "Erase"
305 msgstr "لرې کول"
306
+0
-85
po/pseudo.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #, fuzzy
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: PACKAGE VERSION\n"
8 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2008-05-27 00:30-0400\n"
10 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.0.1\n"
17
18 #: activity/activity.info:2
19 msgid "Pippy"
20 msgstr ""
21
22 #: activity.py:26
23 #, python-format
24 msgid "%s Source"
25 msgstr ""
26
27 #: activity.py:62
28 msgid "Copy selected text to clipboard"
29 msgstr ""
30
31 #: activity.py:67
32 msgid "Edit"
33 msgstr ""
34
35 #: library/pippy/game.py:19
36 msgid "PAUSED"
37 msgstr ""
38
39 #: library/pippy/sound.py:179
40 msgid "Please install TamTamEdit's sound library."
41 msgstr ""
42
43 #: pippy_app.py:61
44 msgid "As Pippy Document"
45 msgstr ""
46
47 #: pippy_app.py:66
48 msgid "As Activity Bundle"
49 msgstr ""
50
51 #: pippy_app.py:83
52 msgid "Examples"
53 msgstr ""
54
55 #: pippy_app.py:152
56 msgid "_Run!"
57 msgstr ""
58
59 #: pippy_app.py:252
60 #, python-format
61 msgid "%s Activity"
62 msgstr ""
63
64 #: pippy_app.py:308
65 msgid "Save as Activity Error"
66 msgstr ""
67
68 #: pippy_app.py:309
69 msgid ""
70 "Please give your activity a meaningful name before attempting to save it as "
71 "an activity."
72 msgstr ""
73
74 #: pippy_app.py:311
75 msgid "Ok"
76 msgstr ""
77
78 #: pippy_app.py:317
79 msgid "Creating activity bundle..."
80 msgstr ""
81
82 #: pippy_app.py:376
83 msgid "Activity saved to journal."
84 msgstr ""
300300 #: library/pippy/game.py:36
301301 msgid "PAUSED"
302302 msgstr "EM PAUSA"
303
304 #: notebook.py:428
305 msgid "Erase"
306 msgstr "Apagar"
307
308
309 #: notebook.py:429
310 #, python-format
311 msgid "Do you want to permanently erase \"%s\"?"
312 msgstr "Tem a certeza que pretende eliminar permanentemente \"%s\"?"
313
66 "Project-Id-Version: PACKAGE VERSION\n"
77 "Report-Msgid-Bugs-To: \n"
88 "POT-Creation-Date: 2017-03-24 17:39+1100\n"
9 "PO-Revision-Date: 2018-08-20 20:25+0000\n"
9 "PO-Revision-Date: 2019-03-09 00:55+0000\n"
1010 "Last-Translator: Paulo Francisco <slomp@ufrgs.br>\n"
1111 "Language-Team: LANGUAGE <LL@li.org>\n"
1212 "Language: pt_BR\n"
1515 "Content-Transfer-Encoding: 8bit\n"
1616 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
1717 "X-Generator: Pootle 2.5.1.1\n"
18 "X-POOTLE-MTIME: 1534796735.000000\n"
18 "X-POOTLE-MTIME: 1552092953.000000\n"
1919
2020 #: activity/activity.info:2
2121 msgid "Pippy"
5757 #: activity.py:65
5858 #, python-format
5959 msgid "%s Source"
60 msgstr "Fonte de %s"
60 msgstr "%s Fonte"
6161
6262 #: icondialog.py:116
6363 msgid "Select an icon"
279279
280280 #: pippy_app.py:935 pippy_app.py:993
281281 msgid "Saved as example."
282 msgstr "Salvo como exemplo"
282 msgstr "Salvo como exemplo."
283283
284284 #: pippy_app.py:957
285285 msgid "Error saving activity to journal."
308308 #: library/pippy/game.py:36
309309 msgid "PAUSED"
310310 msgstr "PAUSADO"
311
312 #: notebook.py:428
313 msgid "Erase"
314 msgstr "Apagar"
315
316
317 #: notebook.py:429
318 #, python-format
319 msgid "Do you want to permanently erase \"%s\"?"
320 msgstr "Você deseja apagar permanentemente \"%s\"?"
321
317317 #: library/pippy/game.py:36
318318 msgid "PAUSED"
319319 msgstr "SAYARICHISQA"
320
321 #: notebook.py:428
322 msgid "Erase"
323 msgstr "Pichay"
324
325
326 #: notebook.py:429
327 #, python-format
328 msgid "Do you want to permanently erase \"%s\"?"
329 msgstr "¿Sapa kutichu pichayta munanki kay kaq \"%s\" nisqataqa?"
330
300300 #: library/pippy/game.py:36
301301 msgid "PAUSED"
302302 msgstr "PAUZĂ"
303
304 #: notebook.py:428
305 msgid "Erase"
306 msgstr "Șterge"
307
302302 #: library/pippy/game.py:36
303303 msgid "PAUSED"
304304 msgstr "ПАУЗА"
305
306 #: notebook.py:428
307 msgid "Erase"
308 msgstr "Удалить"
309
310
311 #: notebook.py:429
312 #, python-format
313 msgid "Do you want to permanently erase \"%s\"?"
314 msgstr "Вы действительно хотите навсегда удалить \"%s\"?"
315
302302 #: library/pippy/game.py:36
303303 msgid "PAUSED"
304304 msgstr "Bihagaritswe by'akanya gato"
305
306 #: notebook.py:428
307 msgid "Erase"
308 msgstr "Gusiba"
309
310
311 #: notebook.py:429
312 #, python-format
313 msgid "Do you want to permanently erase \"%s\"?"
314 msgstr "Ushaka gusiba burundu \"%s\"?"
315
+0
-296
po/sd.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2017-03-24 17:39+1100\n"
9 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
11 "Language-Team: LANGUAGE <LL@li.org>\n"
12 "Language: sd\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.1.1rc4\n"
17
18 #: activity/activity.info:2
19 msgid "Pippy"
20 msgstr ""
21
22 #: activity/activity.info:3
23 msgid ""
24 "Searching for programmers! Here you can use examples to begin learning the "
25 "language your computer understands called \"Python.\""
26 msgstr ""
27
28 #: filedialog.py:79
29 msgid "Choose an example to open"
30 msgstr ""
31
32 #: collabwrapper.py:178
33 msgid "Joining activity..."
34 msgstr ""
35
36 #: collabwrapper.py:179 collabwrapper.py:191
37 msgid "Please wait for the connection..."
38 msgstr ""
39
40 #: collabwrapper.py:190
41 msgid "Resuming shared activity..."
42 msgstr ""
43
44 #: toolbars.py:42
45 msgid "Zoom in"
46 msgstr ""
47
48 #: toolbars.py:48
49 msgid "Zoom out"
50 msgstr ""
51
52 #: activity.py:65
53 #, python-format
54 msgid "%s Source"
55 msgstr ""
56
57 #: icondialog.py:116
58 msgid "Select an icon"
59 msgstr ""
60
61 #: notebook.py:219
62 #, python-format
63 msgid "New Source File %d"
64 msgstr ""
65
66 #: sound_check.py:27 library/pippy/sound.py:41
67 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
68 msgstr ""
69
70 #: pippy_app.py:97
71 msgid "graphics"
72 msgstr ""
73
74 #: pippy_app.py:97
75 msgid "math"
76 msgstr ""
77
78 #: pippy_app.py:97
79 msgid "python"
80 msgstr ""
81
82 #: pippy_app.py:97
83 msgid "sound"
84 msgstr ""
85
86 #: pippy_app.py:98
87 msgid "string"
88 msgstr ""
89
90 #: pippy_app.py:98
91 msgid "tutorials"
92 msgstr ""
93
94 #: pippy_app.py:185
95 msgid "Import Python file to new tab"
96 msgstr ""
97
98 #: pippy_app.py:191
99 msgid "Export as Pippy document"
100 msgstr ""
101
102 #: pippy_app.py:197
103 msgid "Save this file to the Pippy library"
104 msgstr ""
105
106 #: pippy_app.py:205
107 msgid "Export as new Pippy example"
108 msgstr ""
109
110 #: pippy_app.py:211
111 msgid "Create a Sugar activity bundle"
112 msgstr ""
113
114 #. TRANS: A distutils package is used to distribute Python modules
115 #: pippy_app.py:218
116 msgid "Export as a distutils package"
117 msgstr ""
118
119 #: pippy_app.py:228
120 msgid "Edit"
121 msgstr ""
122
123 #: pippy_app.py:242
124 msgid "View"
125 msgstr ""
126
127 #: pippy_app.py:252 pippy_app.py:500
128 msgid "Show output panel"
129 msgstr ""
130
131 #: pippy_app.py:265 pippy_app.py:268
132 msgid "Run!"
133 msgstr ""
134
135 #: pippy_app.py:266
136 msgid "<alt>r"
137 msgstr ""
138
139 #: pippy_app.py:281 pippy_app.py:287
140 msgid "Stop"
141 msgstr ""
142
143 #: pippy_app.py:282
144 msgid "<alt>s"
145 msgstr ""
146
147 #: pippy_app.py:297 pippy_app.py:303
148 msgid "Clear"
149 msgstr ""
150
151 #: pippy_app.py:298
152 msgid "<alt>c"
153 msgstr ""
154
155 #: pippy_app.py:314
156 msgid "Open an example"
157 msgstr ""
158
159 #: pippy_app.py:389
160 msgid "My examples"
161 msgstr ""
162
163 #: pippy_app.py:496
164 msgid "Hide output panel"
165 msgstr ""
166
167 #: pippy_app.py:598
168 #, python-format
169 msgid "%s Activity"
170 msgstr ""
171
172 #: pippy_app.py:708
173 msgid "Python File added to Library"
174 msgstr ""
175
176 #: pippy_app.py:709
177 #, python-brace-format
178 msgid ""
179 "The file you selected has been added to the library. Use \"import "
180 "{importname}\" to import the library for using."
181 msgstr ""
182
183 #: pippy_app.py:719
184 msgid "Saved"
185 msgstr ""
186
187 #: pippy_app.py:720
188 msgid "The document has been saved to journal."
189 msgstr ""
190
191 #: pippy_app.py:734 pippy_app.py:741
192 msgid "Error importing Python file"
193 msgstr ""
194
195 #: pippy_app.py:735
196 msgid "The file you selected is not a Python file."
197 msgstr ""
198
199 #: pippy_app.py:742
200 msgid "The file you selected is already open"
201 msgstr ""
202
203 #: pippy_app.py:767 pippy_app.py:826
204 msgid "Save as Activity Error"
205 msgstr ""
206
207 #: pippy_app.py:768
208 msgid ""
209 "Please give your activity a meaningful name before attempting to save it as "
210 "an activity."
211 msgstr ""
212
213 #: pippy_app.py:771 pippy_app.py:778 pippy_app.py:873 pippy_app.py:915
214 msgid "Ok"
215 msgstr ""
216
217 #: pippy_app.py:779
218 msgid "Activity icon"
219 msgstr ""
220
221 #: pippy_app.py:780
222 msgid "Please select an activity icon."
223 msgstr ""
224
225 #: pippy_app.py:785 pippy_app.py:800
226 msgid "Creating activity bundle..."
227 msgstr ""
228
229 #: pippy_app.py:866 pippy_app.py:908
230 msgid "Pippy Activity"
231 msgstr ""
232
233 #: pippy_app.py:868
234 msgid "Save as distutils package error"
235 msgstr ""
236
237 #: pippy_app.py:869
238 msgid ""
239 "Please give your activity a meaningful name before attempting to save it as "
240 "an distutils package."
241 msgstr ""
242
243 #: pippy_app.py:910
244 msgid "Save as Example Error"
245 msgstr ""
246
247 #: pippy_app.py:912
248 msgid ""
249 "Please give your activity a meaningful name before attempting to save it as "
250 "an example."
251 msgstr ""
252
253 #: pippy_app.py:921
254 msgid "Creating example..."
255 msgstr ""
256
257 #: pippy_app.py:927
258 msgid "Save as Example Warning"
259 msgstr ""
260
261 #: pippy_app.py:928
262 msgid "This example already exists. Do you want to overwrite it?"
263 msgstr ""
264
265 #: pippy_app.py:935 pippy_app.py:993
266 msgid "Saved as example."
267 msgstr ""
268
269 #: pippy_app.py:957
270 msgid "Error saving activity to journal."
271 msgstr ""
272
273 #: pippy_app.py:977
274 msgid "Activity saved to journal."
275 msgstr ""
276
277 #: pippy_app.py:1119
278 msgid "Error"
279 msgstr ""
280
281 #: pippy_app.py:1120
282 msgid "Error reading data."
283 msgstr ""
284
285 #: pippy_app.py:1448
286 msgid "Working..."
287 msgstr ""
288
289 #: pippy_app.py:1451
290 msgid "done!"
291 msgstr ""
292
293 #: library/pippy/game.py:36
294 msgid "PAUSED"
295 msgstr ""
297297 #: library/pippy/game.py:36
298298 msgid "PAUSED"
299299 msgstr "විරාමයක් ගෙන ඇත"
300
301 #: notebook.py:428
302 msgid "Erase"
303 msgstr "මකන්න"
304
305
306 #: notebook.py:429
307 #, python-format
308 msgid "Do you want to permanently erase \"%s\"?"
309 msgstr "ඔබට \"%s\" ස්ථිරවම මැකීමට අවශ්‍යද?"
310
299299 #: library/pippy/game.py:36
300300 msgid "PAUSED"
301301 msgstr "USTAVLJENO"
302
303 #: notebook.py:428
304 msgid "Erase"
305 msgstr "Izbriši"
306
306306 #: library/pippy/game.py:36
307307 msgid "PAUSED"
308308 msgstr "E PUSHUAR"
309
310 #: notebook.py:428
311 msgid "Erase"
312 msgstr "Fshije"
313
314
315 #: notebook.py:429
316 #, python-format
317 msgid "Do you want to permanently erase \"%s\"?"
318 msgstr "Doni të fshihet \"%s\" përgjithmonë?"
319
305305 #: library/pippy/game.py:36
306306 msgid "PAUSED"
307307 msgstr "PAUSAD"
308
309 #: notebook.py:428
310 msgid "Erase"
311 msgstr "Ta bort"
312
313
314 #: notebook.py:429
315 #, python-format
316 msgid "Do you want to permanently erase \"%s\"?"
317 msgstr "Vill du permanent ta bort \"%s\"?"
318
294294 #: library/pippy/game.py:36
295295 msgid "PAUSED"
296296 msgstr ""
297
298 #: notebook.py:428
299 msgid "Erase"
300 msgstr "Futa"
301
298298 #: library/pippy/game.py:36
299299 msgid "PAUSED"
300300 msgstr "இடைநிறுத்து"
301
302 #: notebook.py:428
303 msgid "Erase"
304 msgstr "அழி"
305
306
307 #: notebook.py:429
308 #, python-format
309 msgid "Do you want to permanently erase \"%s\"?"
310 msgstr "உங்களுக்கு நிரந்திரமாக அழிக்க விருப்பமா \"%s\"?"
311
295295 #: library/pippy/game.py:36
296296 msgid "PAUSED"
297297 msgstr "ఆగినది"
298
299 #: notebook.py:428
300 msgid "Erase"
301 msgstr "చెరిపివేయి"
302
294294 #: library/pippy/game.py:36
295295 msgid "PAUSED"
296296 msgstr "หยุดการทำงาน"
297
298 #: notebook.py:428
299 msgid "Erase"
300 msgstr "ลบ"
301
298298 #: library/pippy/game.py:36
299299 msgid "PAUSED"
300300 msgstr "Ara"
301
302 #: notebook.py:428
303 msgid "Erase"
304 msgstr "Silme"
305
+0
-156
po/tvl.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 # SOME DESCRIPTIVE TITLE.
5 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
6 # This file is distributed under the same license as the PACKAGE package.
7 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
8 # SOME DESCRIPTIVE TITLE.
9 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
10 # This file is distributed under the same license as the PACKAGE package.
11 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
12 #, fuzzy
13 msgid ""
14 msgstr ""
15 "Project-Id-Version: PACKAGE VERSION\n"
16 "Report-Msgid-Bugs-To: \n"
17 "POT-Creation-Date: 2012-06-19 00:34-0400\n"
18 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
19 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
20 "Language-Team: LANGUAGE <LL@li.org>\n"
21 "Language: \n"
22 "MIME-Version: 1.0\n"
23 "Content-Type: text/plain; charset=UTF-8\n"
24 "Content-Transfer-Encoding: 8bit\n"
25 "X-Generator: Translate Toolkit 1.3.0\n"
26
27 #: activity/activity.info:2
28 msgid "Pippy"
29 msgstr ""
30
31 #: activity.py:49
32 #, python-format
33 msgid "%s Source"
34 msgstr ""
35
36 #: activity.py:91
37 msgid "Copy selected text to clipboard"
38 msgstr ""
39
40 #: activity.py:96 pippy_app.py:113 pippy_app.py:118
41 msgid "Edit"
42 msgstr ""
43
44 #: library/pippy/game.py:36
45 msgid "PAUSED"
46 msgstr ""
47
48 #: library/pippy/sound.py:54
49 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
50 msgstr ""
51
52 #: pippy_app.py:90
53 msgid "Export as Pippy Document"
54 msgstr ""
55
56 #: pippy_app.py:96
57 msgid "Export as Pippy Example"
58 msgstr ""
59
60 #: pippy_app.py:102
61 msgid "Create Activity Bundle"
62 msgstr ""
63
64 #: pippy_app.py:111
65 msgid "Actions"
66 msgstr ""
67
68 #: pippy_app.py:138 pippy_app.py:141
69 msgid "Run!"
70 msgstr ""
71
72 #: pippy_app.py:139
73 msgid "<alt>r"
74 msgstr ""
75
76 #: pippy_app.py:152 pippy_app.py:158
77 msgid "Stop"
78 msgstr ""
79
80 #: pippy_app.py:153
81 msgid "<alt>s"
82 msgstr ""
83
84 #: pippy_app.py:167 pippy_app.py:173
85 msgid "Clear"
86 msgstr ""
87
88 #: pippy_app.py:168
89 msgid "<alt>c"
90 msgstr ""
91
92 #: pippy_app.py:197
93 msgid "Examples"
94 msgstr ""
95
96 #: pippy_app.py:229
97 msgid "My examples"
98 msgstr ""
99
100 #: pippy_app.py:358
101 #, python-format
102 msgid "%s Activity"
103 msgstr ""
104
105 #: pippy_app.py:438
106 msgid "Save as Activity Error"
107 msgstr ""
108
109 #: pippy_app.py:439
110 msgid ""
111 "Please give your activity a meaningful name before attempting to save it as "
112 "an activity."
113 msgstr ""
114
115 #: pippy_app.py:442 pippy_app.py:486
116 msgid "Ok"
117 msgstr ""
118
119 #: pippy_app.py:448
120 msgid "Creating activity bundle..."
121 msgstr ""
122
123 #: pippy_app.py:479
124 msgid "Pippy Activity"
125 msgstr ""
126
127 #: pippy_app.py:483
128 msgid "Save as Example Error"
129 msgstr ""
130
131 #: pippy_app.py:484
132 msgid ""
133 "Please give your activity a meaningful name before attempting to save it as "
134 "an example."
135 msgstr ""
136
137 #: pippy_app.py:492
138 msgid "Creating example..."
139 msgstr ""
140
141 #: pippy_app.py:499
142 msgid "Save as Example Warning"
143 msgstr ""
144
145 #: pippy_app.py:500
146 msgid "This example already exists. Do you want to overwrite it?"
147 msgstr ""
148
149 #: pippy_app.py:506 pippy_app.py:562
150 msgid "Saved as example."
151 msgstr ""
152
153 #: pippy_app.py:546
154 msgid "Activity saved to journal."
155 msgstr ""
+0
-296
po/tzo.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2017-03-24 17:39+1100\n"
9 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
11 "Language-Team: LANGUAGE <LL@li.org>\n"
12 "Language: tzo\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.7.0\n"
17
18 #: activity/activity.info:2
19 msgid "Pippy"
20 msgstr ""
21
22 #: activity/activity.info:3
23 msgid ""
24 "Searching for programmers! Here you can use examples to begin learning the "
25 "language your computer understands called \"Python.\""
26 msgstr ""
27
28 #: filedialog.py:79
29 msgid "Choose an example to open"
30 msgstr ""
31
32 #: collabwrapper.py:178
33 msgid "Joining activity..."
34 msgstr ""
35
36 #: collabwrapper.py:179 collabwrapper.py:191
37 msgid "Please wait for the connection..."
38 msgstr ""
39
40 #: collabwrapper.py:190
41 msgid "Resuming shared activity..."
42 msgstr ""
43
44 #: toolbars.py:42
45 msgid "Zoom in"
46 msgstr ""
47
48 #: toolbars.py:48
49 msgid "Zoom out"
50 msgstr ""
51
52 #: activity.py:65
53 #, python-format
54 msgid "%s Source"
55 msgstr ""
56
57 #: icondialog.py:116
58 msgid "Select an icon"
59 msgstr ""
60
61 #: notebook.py:219
62 #, python-format
63 msgid "New Source File %d"
64 msgstr ""
65
66 #: sound_check.py:27 library/pippy/sound.py:41
67 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
68 msgstr ""
69
70 #: pippy_app.py:97
71 msgid "graphics"
72 msgstr ""
73
74 #: pippy_app.py:97
75 msgid "math"
76 msgstr ""
77
78 #: pippy_app.py:97
79 msgid "python"
80 msgstr ""
81
82 #: pippy_app.py:97
83 msgid "sound"
84 msgstr ""
85
86 #: pippy_app.py:98
87 msgid "string"
88 msgstr ""
89
90 #: pippy_app.py:98
91 msgid "tutorials"
92 msgstr ""
93
94 #: pippy_app.py:185
95 msgid "Import Python file to new tab"
96 msgstr ""
97
98 #: pippy_app.py:191
99 msgid "Export as Pippy document"
100 msgstr ""
101
102 #: pippy_app.py:197
103 msgid "Save this file to the Pippy library"
104 msgstr ""
105
106 #: pippy_app.py:205
107 msgid "Export as new Pippy example"
108 msgstr ""
109
110 #: pippy_app.py:211
111 msgid "Create a Sugar activity bundle"
112 msgstr ""
113
114 #. TRANS: A distutils package is used to distribute Python modules
115 #: pippy_app.py:218
116 msgid "Export as a distutils package"
117 msgstr ""
118
119 #: pippy_app.py:228
120 msgid "Edit"
121 msgstr ""
122
123 #: pippy_app.py:242
124 msgid "View"
125 msgstr ""
126
127 #: pippy_app.py:252 pippy_app.py:500
128 msgid "Show output panel"
129 msgstr ""
130
131 #: pippy_app.py:265 pippy_app.py:268
132 msgid "Run!"
133 msgstr ""
134
135 #: pippy_app.py:266
136 msgid "<alt>r"
137 msgstr ""
138
139 #: pippy_app.py:281 pippy_app.py:287
140 msgid "Stop"
141 msgstr ""
142
143 #: pippy_app.py:282
144 msgid "<alt>s"
145 msgstr ""
146
147 #: pippy_app.py:297 pippy_app.py:303
148 msgid "Clear"
149 msgstr ""
150
151 #: pippy_app.py:298
152 msgid "<alt>c"
153 msgstr ""
154
155 #: pippy_app.py:314
156 msgid "Open an example"
157 msgstr ""
158
159 #: pippy_app.py:389
160 msgid "My examples"
161 msgstr ""
162
163 #: pippy_app.py:496
164 msgid "Hide output panel"
165 msgstr ""
166
167 #: pippy_app.py:598
168 #, python-format
169 msgid "%s Activity"
170 msgstr ""
171
172 #: pippy_app.py:708
173 msgid "Python File added to Library"
174 msgstr ""
175
176 #: pippy_app.py:709
177 #, python-brace-format
178 msgid ""
179 "The file you selected has been added to the library. Use \"import "
180 "{importname}\" to import the library for using."
181 msgstr ""
182
183 #: pippy_app.py:719
184 msgid "Saved"
185 msgstr ""
186
187 #: pippy_app.py:720
188 msgid "The document has been saved to journal."
189 msgstr ""
190
191 #: pippy_app.py:734 pippy_app.py:741
192 msgid "Error importing Python file"
193 msgstr ""
194
195 #: pippy_app.py:735
196 msgid "The file you selected is not a Python file."
197 msgstr ""
198
199 #: pippy_app.py:742
200 msgid "The file you selected is already open"
201 msgstr ""
202
203 #: pippy_app.py:767 pippy_app.py:826
204 msgid "Save as Activity Error"
205 msgstr ""
206
207 #: pippy_app.py:768
208 msgid ""
209 "Please give your activity a meaningful name before attempting to save it as "
210 "an activity."
211 msgstr ""
212
213 #: pippy_app.py:771 pippy_app.py:778 pippy_app.py:873 pippy_app.py:915
214 msgid "Ok"
215 msgstr ""
216
217 #: pippy_app.py:779
218 msgid "Activity icon"
219 msgstr ""
220
221 #: pippy_app.py:780
222 msgid "Please select an activity icon."
223 msgstr ""
224
225 #: pippy_app.py:785 pippy_app.py:800
226 msgid "Creating activity bundle..."
227 msgstr ""
228
229 #: pippy_app.py:866 pippy_app.py:908
230 msgid "Pippy Activity"
231 msgstr ""
232
233 #: pippy_app.py:868
234 msgid "Save as distutils package error"
235 msgstr ""
236
237 #: pippy_app.py:869
238 msgid ""
239 "Please give your activity a meaningful name before attempting to save it as "
240 "an distutils package."
241 msgstr ""
242
243 #: pippy_app.py:910
244 msgid "Save as Example Error"
245 msgstr ""
246
247 #: pippy_app.py:912
248 msgid ""
249 "Please give your activity a meaningful name before attempting to save it as "
250 "an example."
251 msgstr ""
252
253 #: pippy_app.py:921
254 msgid "Creating example..."
255 msgstr ""
256
257 #: pippy_app.py:927
258 msgid "Save as Example Warning"
259 msgstr ""
260
261 #: pippy_app.py:928
262 msgid "This example already exists. Do you want to overwrite it?"
263 msgstr ""
264
265 #: pippy_app.py:935 pippy_app.py:993
266 msgid "Saved as example."
267 msgstr ""
268
269 #: pippy_app.py:957
270 msgid "Error saving activity to journal."
271 msgstr ""
272
273 #: pippy_app.py:977
274 msgid "Activity saved to journal."
275 msgstr ""
276
277 #: pippy_app.py:1119
278 msgid "Error"
279 msgstr ""
280
281 #: pippy_app.py:1120
282 msgid "Error reading data."
283 msgstr ""
284
285 #: pippy_app.py:1448
286 msgid "Working..."
287 msgstr ""
288
289 #: pippy_app.py:1451
290 msgid "done!"
291 msgstr ""
292
293 #: library/pippy/game.py:36
294 msgid "PAUSED"
295 msgstr ""
308308 #: library/pippy/game.py:36
309309 msgid "PAUSED"
310310 msgstr "ПРИЗУПИНЕНО"
311
312 #: notebook.py:428
313 msgid "Erase"
314 msgstr "Стерти"
315
316
317 #: notebook.py:429
318 #, python-format
319 msgid "Do you want to permanently erase \"%s\"?"
320 msgstr "Бажаєте повністю стерти \"%s\"?"
321
297297 #: library/pippy/game.py:36
298298 msgid "PAUSED"
299299 msgstr "رکا ہوا"
300
301 #: notebook.py:428
302 msgid "Erase"
303 msgstr "مٹائيں"
304
305
306 #: notebook.py:429
307 #, python-format
308 msgid "Do you want to permanently erase \"%s\"?"
309 msgstr "کیا آپ \"%s\" ہمیشہ کے لیے ختم کرنا چاہتے ہیں؟"
310
298298 #: library/pippy/game.py:36
299299 msgid "PAUSED"
300300 msgstr "BỊ TẠM DỪNG"
301
302 #: notebook.py:428
303 msgid "Erase"
304 msgstr "Xoá"
305
306
307 #: notebook.py:429
308 #, python-format
309 msgid "Do you want to permanently erase \"%s\"?"
310 msgstr "Xác nhận việc xoá: bạn có muốn xoá hẳn \"%s\" không?"
311
+0
-156
po/wa.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 # SOME DESCRIPTIVE TITLE.
5 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
6 # This file is distributed under the same license as the PACKAGE package.
7 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
8 # SOME DESCRIPTIVE TITLE.
9 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
10 # This file is distributed under the same license as the PACKAGE package.
11 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
12 #, fuzzy
13 msgid ""
14 msgstr ""
15 "Project-Id-Version: PACKAGE VERSION\n"
16 "Report-Msgid-Bugs-To: \n"
17 "POT-Creation-Date: 2012-06-19 00:34-0400\n"
18 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
19 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
20 "Language-Team: LANGUAGE <LL@li.org>\n"
21 "Language: \n"
22 "MIME-Version: 1.0\n"
23 "Content-Type: text/plain; charset=UTF-8\n"
24 "Content-Transfer-Encoding: 8bit\n"
25 "X-Generator: Translate Toolkit 1.1.1rc4\n"
26
27 #: activity/activity.info:2
28 msgid "Pippy"
29 msgstr ""
30
31 #: activity.py:49
32 #, python-format
33 msgid "%s Source"
34 msgstr ""
35
36 #: activity.py:91
37 msgid "Copy selected text to clipboard"
38 msgstr ""
39
40 #: activity.py:96 pippy_app.py:113 pippy_app.py:118
41 msgid "Edit"
42 msgstr ""
43
44 #: library/pippy/game.py:36
45 msgid "PAUSED"
46 msgstr ""
47
48 #: library/pippy/sound.py:54
49 msgid "Cannot find TamTamEdit sound library. Did you install TamTamEdit?"
50 msgstr ""
51
52 #: pippy_app.py:90
53 msgid "Export as Pippy Document"
54 msgstr ""
55
56 #: pippy_app.py:96
57 msgid "Export as Pippy Example"
58 msgstr ""
59
60 #: pippy_app.py:102
61 msgid "Create Activity Bundle"
62 msgstr ""
63
64 #: pippy_app.py:111
65 msgid "Actions"
66 msgstr ""
67
68 #: pippy_app.py:138 pippy_app.py:141
69 msgid "Run!"
70 msgstr ""
71
72 #: pippy_app.py:139
73 msgid "<alt>r"
74 msgstr ""
75
76 #: pippy_app.py:152 pippy_app.py:158
77 msgid "Stop"
78 msgstr ""
79
80 #: pippy_app.py:153
81 msgid "<alt>s"
82 msgstr ""
83
84 #: pippy_app.py:167 pippy_app.py:173
85 msgid "Clear"
86 msgstr ""
87
88 #: pippy_app.py:168
89 msgid "<alt>c"
90 msgstr ""
91
92 #: pippy_app.py:197
93 msgid "Examples"
94 msgstr ""
95
96 #: pippy_app.py:229
97 msgid "My examples"
98 msgstr ""
99
100 #: pippy_app.py:358
101 #, python-format
102 msgid "%s Activity"
103 msgstr ""
104
105 #: pippy_app.py:438
106 msgid "Save as Activity Error"
107 msgstr ""
108
109 #: pippy_app.py:439
110 msgid ""
111 "Please give your activity a meaningful name before attempting to save it as "
112 "an activity."
113 msgstr ""
114
115 #: pippy_app.py:442 pippy_app.py:486
116 msgid "Ok"
117 msgstr ""
118
119 #: pippy_app.py:448
120 msgid "Creating activity bundle..."
121 msgstr ""
122
123 #: pippy_app.py:479
124 msgid "Pippy Activity"
125 msgstr ""
126
127 #: pippy_app.py:483
128 msgid "Save as Example Error"
129 msgstr ""
130
131 #: pippy_app.py:484
132 msgid ""
133 "Please give your activity a meaningful name before attempting to save it as "
134 "an example."
135 msgstr ""
136
137 #: pippy_app.py:492
138 msgid "Creating example..."
139 msgstr ""
140
141 #: pippy_app.py:499
142 msgid "Save as Example Warning"
143 msgstr ""
144
145 #: pippy_app.py:500
146 msgid "This example already exists. Do you want to overwrite it?"
147 msgstr ""
148
149 #: pippy_app.py:506 pippy_app.py:562
150 msgid "Saved as example."
151 msgstr ""
152
153 #: pippy_app.py:546
154 msgid "Activity saved to journal."
155 msgstr ""
299299 #: library/pippy/game.py:36
300300 msgid "PAUSED"
301301 msgstr "Bii"
302
303 #: notebook.py:428
304 msgid "Erase"
305 msgstr "nu"
306
307
308 #: notebook.py:429
309 #, python-format
310 msgid "Do you want to permanently erase \"%s\"?"
311 msgstr "Ṣe o fẹ lati patapata nu \"%s\"?"
312
302302 #, fuzzy
303303 msgid "PAUSED"
304304 msgstr "暂停"
305
306 #: notebook.py:428
307 msgid "Erase"
308 msgstr "删除"
309
310
311 #: notebook.py:429
312 #, python-format
313 msgid "Do you want to permanently erase \"%s\"?"
314 msgstr "你想永久删除“%s”?"
315
294294 #: library/pippy/game.py:36
295295 msgid "PAUSED"
296296 msgstr "暫停"
297
298 #: notebook.py:428
299 msgid "Erase"
300 msgstr "刪除"
301
302
303 #: notebook.py:429
304 #, python-format
305 msgid "Do you want to permanently erase \"%s\"?"
306 msgstr "你想永久删除“%s”嗎?"
307
0 #!/usr/bin/env python
0 #!/usr/bin/python3
11
22 # Copyright (C) 2006, Red Hat, Inc.
33 #
0 #!/usr/bin/python
10 # -*- coding: utf-8 -*-
21 # Copyright (C) 2013,14 Walter Bender (walter@sugarlabs.org)
32 #