Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--activity/activity.info2
-rw-r--r--po/TurtleArt.pot120
-rw-r--r--po/de.po22
-rw-r--r--po/en.po24
-rw-r--r--po/es.po10
-rw-r--r--taexporthtml.py453
-rw-r--r--talogo.py27
-rw-r--r--taproject.py29
9 files changed, 384 insertions, 305 deletions
diff --git a/NEWS b/NEWS
index 30ae38d..91e5985 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,8 @@
* fixed bug with reloading descriptions from Journal
* added hover help to command line version
* initiate the import Python chooser when Python block is clicked
+* saving pastable code to html export
+* fixed some problems in export to HTML code
73
diff --git a/activity/activity.info b/activity/activity.info
index 3337dd9..9dfa202 100644
--- a/activity/activity.info
+++ b/activity/activity.info
@@ -1,6 +1,6 @@
[Activity]
name = Turtle Art
-activity_version = 73
+activity_version = 74
license = MIT
bundle_id = org.laptop.TurtleArtActivity
exec = sugar-activity TurtleArtActivity.TurtleArtActivity
diff --git a/po/TurtleArt.pot b/po/TurtleArt.pot
index f289b9b..5f9ceb9 100644
--- a/po/TurtleArt.pot
+++ b/po/TurtleArt.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-30 14:35+0000\n"
+"POT-Creation-Date: 2009-10-12 08:19+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,6 +18,7 @@ msgstr ""
#: activity/activity.info:2
#: /home/walter/Desktop/turtleart-activity/tahoverhelp.py:125
+#: /home/walter/Desktop/turtleart-activity/turtleart.py:73
#: /home/walter/Desktop/turtleart-activity/taexporthtml.py:288
msgid "Turtle Art"
msgstr ""
@@ -790,12 +791,12 @@ msgid "template"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:97
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1385
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1228
msgid "Save snapshot"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:108
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1037
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1045
msgid "Save as HTML"
msgstr ""
@@ -804,89 +805,86 @@ msgid "Save as Logo"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:122
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1053
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1063
msgid "Save as image"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:129
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1066
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1077
msgid "Load my block"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:137
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1074
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1087
msgid "Import project from the Journal"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:157
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1368
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1210
msgid "Fullscreen"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:172
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:603
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:614
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:630
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:642
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1269
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1420
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1430
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1473
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1485
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:611
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:622
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:638
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:650
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1107
msgid "Hide palette"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:175
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1273
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1112
msgid "<Ctrl>p"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:181
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:623
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:640
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1281
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1466
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1483
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:631
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:648
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1120
msgid "Hide blocks"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:184
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1285
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1125
msgid "<Ctrl>b"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:190
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1351
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1192
+#: /home/walter/Desktop/turtleart-activity/turtleart.py:101
msgid "Clean"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:193
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1355
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1197
msgid "<Ctrl>e"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:199
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1298
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1138
+#: /home/walter/Desktop/turtleart-activity/turtleart.py:105
msgid "Run"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:202
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1302
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1142
msgid "<Ctrl>r"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:208
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1310
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1150
+#: /home/walter/Desktop/turtleart-activity/turtleart.py:109
msgid "Step"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:211
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1314
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1154
msgid "<Ctrl>w"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:217
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1322
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1162
msgid "Debug"
msgstr ""
@@ -895,22 +893,22 @@ msgid "<Alt>d"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:226
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1334
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1175
msgid "Stop turtle"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:229
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1338
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1179
msgid "<Ctrl>s"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:241
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1402
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1246
msgid "Samples"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:252
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1018
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1026
msgid "Move the cursor over the orange palette for help."
msgstr ""
@@ -921,7 +919,6 @@ msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:290
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:496
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1190
msgid "Project"
msgstr ""
@@ -934,58 +931,69 @@ msgid "Import/Export"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:437
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1125
msgid "presentation"
msgstr ""
#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:552
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1247
msgid "image"
msgstr ""
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:580
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1521
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:589
msgid "snapshot"
msgstr ""
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:599
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:609
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:627
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:636
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1416
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1425
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1470
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1479
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:607
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:617
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:635
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:644
msgid "Show palette"
msgstr ""
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:620
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:634
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1463
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1477
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:628
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:642
msgid "Show blocks"
msgstr ""
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:967
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:975
msgid "Copy"
msgstr ""
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:979
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:987
msgid "Paste"
msgstr ""
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1045
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1054
msgid "Save Logo"
msgstr ""
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1326
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1167
msgid "<Ctrl>d"
msgstr ""
-#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1406
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1251
msgid "<Ctrl>o"
msgstr ""
+#: /home/walter/Desktop/turtleart-activity/turtleart.py:78
+msgid "Open"
+msgstr ""
+
+#: /home/walter/Desktop/turtleart-activity/turtleart.py:82
+msgid "Save"
+msgstr ""
+
+#: /home/walter/Desktop/turtleart-activity/turtleart.py:93
+msgid "Palette"
+msgstr ""
+
+#: /home/walter/Desktop/turtleart-activity/turtleart.py:97
+msgid "Blocks"
+msgstr ""
+
+#: /home/walter/Desktop/turtleart-activity/turtleart.py:113
+msgid "Stop"
+msgstr ""
+
#: /home/walter/Desktop/turtleart-activity/svg/heading.py:40
#: /home/walter/Desktop/turtleart-activity/svg/turtlegroup.py:55
msgid "heading"
diff --git a/po/de.po b/po/de.po
index e9b2bbd..d6550af 100644
--- a/po/de.po
+++ b/po/de.po
@@ -410,27 +410,27 @@ msgstr "Aufruf des Stapels einer benannten Aktion"
#: /home/walter/Desktop/turtleart-activity/tahoverhelp.py:106
msgid "store numeric value in variable 1"
-msgstr "Zahlenwert in Variable 1 speichern"
+msgstr "Lege etwas in Schachtel 1"
#: /home/walter/Desktop/turtleart-activity/tahoverhelp.py:107
msgid "variable 1 (numeric value)"
-msgstr "Variable 1 (Zahlenwert)"
+msgstr "Schachtel 1"
#: /home/walter/Desktop/turtleart-activity/tahoverhelp.py:108
msgid "store numeric value in variable 2"
-msgstr "Zahlenwert in Variable 2 speichern"
+msgstr "Lege etwas in Schachtel 2"
#: /home/walter/Desktop/turtleart-activity/tahoverhelp.py:109
msgid "variable 2 (numeric value)"
-msgstr "Variable 2 (Zahlenwert)"
+msgstr "Schachtel 2"
#: /home/walter/Desktop/turtleart-activity/tahoverhelp.py:110
msgid "store numeric value in named variable"
-msgstr "Zahlenwert in benannter Variable speichern"
+msgstr "Lege etwas in eine Schachtel der du einen Namen gegeben hast."
#: /home/walter/Desktop/turtleart-activity/tahoverhelp.py:111
msgid "named variable (numeric value)"
-msgstr "benannte Variable (Zahlenwert)"
+msgstr "Schachtel der du einen Namen geben kannst."
#: /home/walter/Desktop/turtleart-activity/tahoverhelp.py:112
msgid "string value"
@@ -742,22 +742,22 @@ msgstr "Meine Blöcke"
#: /home/walter/Desktop/turtleart-activity/svg/myblocksgroup.py:43
#: /home/walter/Desktop/turtleart-activity/svg/storeinbox1.py:40
msgid "store in box 1"
-msgstr "speichere in Rahmen 1"
+msgstr "lege in Schachtel 1"
#: /home/walter/Desktop/turtleart-activity/svg/myblocksgroup.py:44
#: /home/walter/Desktop/turtleart-activity/svg/box1.py:40
msgid "box 1"
-msgstr "Rahmen 1"
+msgstr "Schachtel 1"
#: /home/walter/Desktop/turtleart-activity/svg/myblocksgroup.py:45
#: /home/walter/Desktop/turtleart-activity/svg/storeinbox2.py:40
msgid "store in box 2"
-msgstr "speichere in Rahmen 2"
+msgstr "lege in Schachtel 2"
#: /home/walter/Desktop/turtleart-activity/svg/myblocksgroup.py:46
#: /home/walter/Desktop/turtleart-activity/svg/box2.py:40
msgid "box 2"
-msgstr "Rahmen 2"
+msgstr "Schachtel 2"
#: /home/walter/Desktop/turtleart-activity/svg/printheap.py:40
#: /home/walter/Desktop/turtleart-activity/svg/sensorsgroup.py:46
@@ -835,7 +835,7 @@ msgstr "drehe rechts"
#: /home/walter/Desktop/turtleart-activity/svg/storein.py:40
msgid "store in"
-msgstr "speichere in"
+msgstr "lege in"
#: /home/walter/Desktop/turtleart-activity/svg/textsize.py:40
#: /home/walter/Desktop/turtleart-activity/svg/pengroup.py:53
diff --git a/po/en.po b/po/en.po
index 277092c..0e82ae8 100644
--- a/po/en.po
+++ b/po/en.po
@@ -359,3 +359,27 @@ msgstr ""
#:
msgid "start"
msgstr ""
+
+#: /home/walter/Desktop/turtleart-activity/tahoverhelp.py:106
+msgid "store numeric value in variable 1"
+msgstr "put something in box 1"
+
+#: /home/walter/Desktop/turtleart-activity/tahoverhelp.py:107
+msgid "variable 1 (numeric value)"
+msgstr "whatever is in box 1"
+
+#: /home/walter/Desktop/turtleart-activity/tahoverhelp.py:108
+msgid "store numeric value in variable 2"
+msgstr "put something in box 2"
+
+#: /home/walter/Desktop/turtleart-activity/tahoverhelp.py:109
+msgid "variable 2 (numeric value)"
+msgstr "whatever is in box 2"
+
+#: /home/walter/Desktop/turtleart-activity/tahoverhelp.py:110
+msgid "store numeric value in named variable"
+msgstr "put something in a box that you name"
+
+#: /home/walter/Desktop/turtleart-activity/tahoverhelp.py:111
+msgid "named variable (numeric value)"
+msgstr "whatever is in the box that you named"
diff --git a/po/es.po b/po/es.po
index 9113d24..e402177 100644
--- a/po/es.po
+++ b/po/es.po
@@ -689,7 +689,7 @@ msgstr "oculta los bloques"
#: /home/walter/Desktop/turtleart-activity/svg/heading.py:40
#: /home/walter/Desktop/turtleart-activity/svg/turtlegroup.py:55
msgid "heading"
-msgstr "rumbo"
+msgstr "dirección"
#: /home/walter/Desktop/turtleart-activity/svg/start.py:40
#: /home/walter/Desktop/turtleart-activity/svg/myblocksgroup.py:48
@@ -961,7 +961,7 @@ msgstr "y"
#: /home/walter/Desktop/turtleart-activity/svg/turtlegroup.py:52
#: /home/walter/Desktop/turtleart-activity/svg/seth.py:40
msgid "set heading"
-msgstr "establecer la partida"
+msgstr "fijar dirección"
#: /home/walter/Desktop/turtleart-activity/svg/turtlegroup.py:53
#: /home/walter/Desktop/turtleart-activity/svg/xcor.py:40
@@ -1084,3 +1084,9 @@ msgstr "fijar xy"
#~ msgid "vres"
#~ msgstr "res v"
+
+
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:137
+#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1071
+msgid "Import project from the Journal"
+msgstr "Importar desde el Diario" \ No newline at end of file
diff --git a/taexporthtml.py b/taexporthtml.py
index f2fce3b..392c32a 100644
--- a/taexporthtml.py
+++ b/taexporthtml.py
@@ -30,20 +30,21 @@ from gettext import gettext as _
def save_html(self, tw, embed_flag=True):
+ self.embed_images = embed_flag
try:
- datapath = os.path.join(activity.get_activity_root(), "instance")
+ self.datapath = os.path.join(activity.get_activity_root(), "instance")
except:
# early versions of Sugar (656) didn't support get_activity_root()
- datapath = os.path.join( \
+ self.datapath = os.path.join( \
os.environ['HOME'], \
".sugar/default/org.laptop.TurtleArtActivity/instance")
# dictionary defines the html wrappers around template elements
# start of block, end of block
- html_glue = {
+ self.html_glue = {
'doctype': ("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 \
Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n", ""),
- 'html': ("<http>\n", "</http>\n"),
+ 'html': ("<html>\n", "</html>\n"),
'head': ("<head>\n<!-- Created by Turtle Art -->\n", \
"</head>\n"),
'meta': ("<meta http-equiv=\"content-type\" content=\"text/html; \
@@ -61,181 +62,194 @@ charset=UTF-8\">\n", ""),
'img': ("<img width=\"400\" height=\"300\" alt=\"Image\" src=\"image",\
".png\" />\n"),
'img2': ("<img alt=\"Image\" src=\"image", ".png\" />\n"),
- 'ul': ("<ul>\n", "</ul>\n"),
- 'li': ("<li>", "</li>\n") }
+ 'ul': ("<table>\n", "</table>\n"),
+ 'li': ("<tr><td>", "</td></tr>\n") }
- if embed_flag == True:
+ if self.embed_images == True:
# store images in-line as base64
- html_glue['img'] = ("<img width=\"400\" height=\"300\" alt=\"Image\" \
-src=\"data:image/png;base64,\n", " \"/>\n")
- html_glue['img2'] = ("<img alt=\"Image\" \
-src=\"data:image/png;base64,\n", " \"/>\n")
+ self.html_glue['img'] = ("<img width=\"400\" height=\"300\" alt=\"Image\" src=\"data:image/png;base64,\n", " \"/>\n")
+ self.html_glue['img2'] = ("<img alt=\"Image\" src=\"data:image/png;base64,\n", " \"/>\n")
bs = tawindow.blocks(tw)
code = ""
- imagecount = 0
- slidecount = 0
+ self.imagecount = 0 # incremented for each image
+ slidecount = 0 # incremented for each template (slide)
for b in bs:
this_stack = ""
data = walk_stack(self, tw, b)
show = 0
- onepic = 0
- twopic = 0
- fourpic = 0
- sevenbullets = 0
- title = 0
- picture = 0
+ tp1, tp2, tp3, tp8, tp6, tp7 = 0,0,0,0,0,0
for d in data:
- if type(d) is float:
- continue
- else:
- # transalate some Turtle Art blocks into HTML
- # show and template blocks
- # ignores most turtle graphics
- if d == "show":
- show = 1
- elif d == "container":
- show = 2
- elif show > 0:
- if show == 1:
- try: # is it media or a string?
- tmp = d[0:8]
- except:
- tmp = ""
- if tmp == '#smedia_': # show media
- show = 2
- else: # show a string
- this_stack += d[2:]
- show = 0
- if show == 2:
- # show an image
- if d[8:] != None:
- try:
- dsobject = datastore.get(d[8:])
- pixbuf = \
- get_pixbuf_from_journal(dsobject,400,300)
- except:
- pixbuf = None
- if pixbuf != None:
- filename = os.path.join(datapath, 'image' + \
- str(imagecount) + ".png")
- pixbuf.save(filename, "png")
- # if the embed flag is True
- # embed base64 into the html
- if embed_flag == True:
- base64 = \
- os.path.join(datapath, 'base64tmp')
- cmd = "base64 <" + filename + " >" + base64
- subprocess.check_call(cmd, shell=True)
- f = open( base64, 'r')
- imgdata = f.read()
- f.close()
- tmp = html_glue['img2'][0]
- if embed_flag == True:
- tmp = tmp + imgdata
- else:
- tmp = tmp + str(imagecount)
- imagecount += 1
- tmp = tmp + html_glue['img2'][1]
- this_stack += tmp
+ if type(d) is float or type(d) is int:
+ d = str(d) # convert floats and ints to strings
+ # transalate some Turtle Art blocks into HTML
+ # show and template blocks
+ # ignores most turtle graphics
+ if d == "show": # show bricks take one argument
+ show = 1
+ elif d == "container": # containers hold a media block
+ show = 2
+ elif show > 0: # process the argument to show or container
+ if show == 1: # could be media or a string
+ if d[0:8] == '#smedia_': # show media
+ this_stack += add_image(self,d)
+ elif d[0:8] == '#sdescr_': # show description
+ this_stack += add_description(self,d)
+ elif d[0:2] == '#s': # show a string
+ this_stack += d[2:]
show = 0
- elif d == "tp1" or d == 'tp8':
- onepic = 1
- elif d == "tp2" or d == 'tp6':
- twopic = 1
- elif d == "tp7":
- fourpic = 1
- elif d == "tp3":
- sevenbullets = 8
- elif sevenbullets > 0:
- if sevenbullets == 8:
- tmp = html_glue['slide'][0] + str(slidecount) +\
- html_glue['slide'][1] + \
- html_glue['div'][0] + html_glue['h1'][0] + \
- d[2:] + html_glue['h1'][1] + html_glue['ul'][0]
- elif d[2:] != "":
- tmp = html_glue['li'][0] + d[2:] + html_glue['li'][1]
- this_stack += tmp
- tmp = ""
- sevenbullets -= 1
- if sevenbullets == 0:
- this_stack += html_glue['ul'][1]
- elif onepic == 1 or twopic == 1 or fourpic == 1:
- tmp = html_glue['slide'][0] + str(slidecount) + \
- html_glue['slide'][1] + \
- html_glue['div'][0] + html_glue['h1'][0] + d[2:] + \
- html_glue['h1'][1] + html_glue['table'][0]
- this_stack += tmp
- if onepic > 0: onepic += 1
- elif twopic > 0: twopic += 1
- elif fourpic > 0: fourpic += 1
+ else:
+ this_stack += d
+ show = 0
+ # process slide templates
+ elif d == "tp1":
+ tp1 = 1
+ elif d == "tp2":
+ tp2 = 1
+ elif d == "tp3":
+ tp3 = 8
+ elif d == 'tp8':
+ tp8 = 1
+ elif d == "tp6":
+ tp6 = 1
+ elif d == "tp7":
+ tp7 = 1
+ elif tp3 > 0: # bullets
+ if tp3 == 8: # title comes first
+ tmp = self.html_glue['slide'][0] + \
+ str(slidecount) + \
+ self.html_glue['slide'][1] + \
+ self.html_glue['div'][0] + \
+ self.html_glue['h1'][0] + \
+ d[2:] + \
+ self.html_glue['h1'][1] + \
+ self.html_glue['ul'][0]
slidecount += 1
- elif onepic > 1 or twopic > 1 or fourpic > 1:
- # Need filename to copy it into instance directory
- # if it is not an image, save the preview
- # save the description too.
- if d[8:] != None:
- try:
- dsobject = datastore.get(d[8:])
- pixbuf = get_pixbuf_from_journal(dsobject,400,300)
- except:
- pixbuf = None
- if pixbuf != None:
- filename = os.path.join(datapath, 'image' + \
- str(imagecount) + ".png")
- pixbuf.save(filename, "png")
- # if the embed flag is True
- # embed base64 into the html
- if embed_flag == True:
- base64 = os.path.join(datapath, 'base64tmp')
- cmd = "base64 <" + filename + " >" + base64
- subprocess.check_call(cmd, shell=True)
- f = open( base64, 'r')
- imgdata = f.read()
- f.close()
- if onepic == 2 or twopic == 2 or twopic == 4 or\
- fourpic == 2 or fourpic == 4:
- tmp = html_glue['tr'][0]
- else:
- tmp = ""
- if pixbuf != None:
- tmp = tmp + html_glue['td'][0] + \
- html_glue['img'][0]
- if embed_flag == True:
- tmp = tmp + imgdata
- else:
- tmp = tmp + str(imagecount)
- tmp = tmp + html_glue['img'][1] + \
- html_glue['td'][1]
- if fourpic == 0:
- try:
- description = dsobject.metadata['description']
- except:
- description = ""
- tmp = tmp + html_glue['td'][0] + description + \
- html_glue['td'][1]
- if onepic == 2 or twopic == 3 or fourpic == 3 or \
- fourpic == 5:
- tmp = tmp + html_glue['tr'][1]
- imagecount += 1
- this_stack += tmp
- if onepic > 1:
- this_stack += html_glue['table'][1] + \
- html_glue['div'][1]
- onepic = 0
- elif twopic > 1:
- if twopic == 3:
- this_stack += html_glue['table'][1] + \
- html_glue['div'][1]
- twopic = 0
- else: twopic += 1
- elif fourpic > 1:
- if fourpic == 5:
- this_stack += html_glue['table'][1] + \
- html_glue['div'][1]
- fourpic = 0
- else: fourpic += 1
- this_stack += " "
+ elif d[2:] != "": # process bullets
+ tmp = self.html_glue['li'][0] + d[2:] + \
+ self.html_glue['li'][1]
+ this_stack += tmp
+ tmp = ""
+ bullets -= 1
+ if bullets == 0:
+ this_stack += (self.html_glue['ul'][1] + \
+ self.html_glue['div'][1])
+ elif tp1 == 1 or tp2 == 1 or tp8 == 1 or\
+ tp6 == 1 or tp7 == 1:
+ # first time through, process title
+ this_stack += (self.html_glue['slide'][0] + \
+ str(slidecount) + \
+ self.html_glue['slide'][1] + \
+ self.html_glue['div'][0] + \
+ self.html_glue['h1'][0] + d[2:] + \
+ self.html_glue['h1'][1] + \
+ self.html_glue['table'][0])
+ if tp1 > 0: tp1 += 1
+ elif tp2 > 0: tp2 += 1
+ elif tp8 > 0: tp8 += 1
+ elif tp6 > 0: tp6 += 1
+ elif tp7 > 0: tp7 += 1
+ slidecount += 1
+ elif tp1 > 1 or tp6 > 1:
+ tmp = self.html_glue['tr'][0] + \
+ self.html_glue['td'][0]
+ if d[0:8] == '#smedia_':
+ tmp += (add_image(self,d) + \
+ self.html_glue['td'][1] + \
+ self.html_glue['td'][0] + \
+ add_description(self,d) + \
+ self.html_glue['td'][1] + \
+ self.html_glue['tr'][1])
+ elif d[0:8] == '#sdescr_':
+ tmp += (add_description(self,d) + \
+ self.html_glue['td'][1] + \
+ self.html_glue['tr'][1])
+ if tp1 > 1 or tp6 > 2:
+ this_stack += (tmp + self.html_glue['table'][1] + \
+ self.html_glue['div'][1])
+ tp1 = 0
+ tp6 = 0
+ else:
+ this_stack += tmp
+ tp6 += 1
+ elif tp8 > 1:
+ tmp = self.html_glue['tr'][0] + \
+ self.html_glue['td'][0]
+ if d[0:8] == '#smedia_':
+ tmp += (add_image(self,d) + \
+ self.html_glue['td'][1] + \
+ self.html_glue['tr'][1])
+ elif d[0:8] == '#sdescr_':
+ tmp += (add_description(self,d) + \
+ self.html_glue['td'][1] + \
+ self.html_glue['tr'][1])
+ this_stack += (tmp + self.html_glue['table'][1] + \
+ self.html_glue['div'][1])
+ tp8 = 0
+ elif tp2 > 1 or tp7 > 1:
+ if tp2 == 2 or tp7 == 2:
+ tmp = self.html_glue['tr'][0] + \
+ self.html_glue['td'][0]
+ else:
+ tmp += self.html_glue['td'][0]
+ if tp2 == 2:
+ saved_description = add_description(self,d)
+ if tp2 == 2 or tp7 == 2:
+ if d[0:8] == '#smedia_':
+ tmp += (add_image(self,d) + \
+ self.html_glue['td'][1])
+ elif d[0:8] == '#sdescr_':
+ tmp += (add_description(self,d) + \
+ self.html_glue['td'][1])
+ if tp2 > 1: tp2 += 1
+ elif tp7 > 1: tp7 += 1
+ elif tp2 == 3:
+ if tmp == "":
+ if d[0:8] == '#smedia_':
+ tmp += add_image(self,d)
+ elif d[0:8] == '#sdescr_':
+ tmp += add_description(self,d)
+ tmp += (self.html_glue['td'][1] + \
+ self.html_glue['tr'][1] + \
+ self.html_glue['tr'][0] + \
+ self.html_glue['td'][0])
+ tmp += saved_description
+ saved_desciption = ""
+ tmp += (self.html_glue['td'][1] + \
+ self.html_glue['td'][0])
+ tmp += (add_description(self,d) + \
+ self.html_glue['td'][1] + \
+ self.html_glue['tr'][1])
+ this_stack += (tmp + self.html_glue['table'][1] + \
+ self.html_glue['div'][1])
+ tp2 = 0
+ elif tp7 == 3:
+ if d[0:8] == '#smedia_':
+ tmp += add_image(self,d)
+ elif d[0:8] == '#sdescr_':
+ tmp += add_description(self,d)
+ tmp += (self.html_glue['td'][1] + \
+ self.html_glue['tr'][1] + \
+ self.html_glue['tr'][0])
+ tp7 += 1
+ elif tp7 == 4:
+ if d[0:8] == '#smedia_':
+ tmp += add_image(self,d)
+ elif d[0:8] == '#sdescr_':
+ tmp += add_description(self,d)
+ tmp += (self.html_glue['td'][1])
+ tp7 += 1
+ elif tp7 == 5:
+ if d[0:8] == '#smedia_':
+ tmp += add_image(self,d)
+ elif d[0:8] == '#sdescr_':
+ tmp += add_description(self,d)
+ tmp += (self.html_glue['td'][1] + \
+ self.html_glue['tr'][1])
+ this_stack += (tmp + self.html_glue['table'][1] + \
+ self.html_glue['div'][1])
+ tp7 = 0
+
if len(data) > 0:
code += this_stack
@@ -245,55 +259,38 @@ src=\"data:image/png;base64,\n", " \"/>\n")
"""
if slidecount == 0:
# save a screen dump instead
- filename = os.path.join(datapath, 'image.png')
+ filename = os.path.join(self.datapath, 'image.png')
tawindow.save_pict(tw,filename)
- # if the embed flag is True
- # embed base64 into the html
- if embed_flag == True:
- base64 = os.path.join(datapath, 'base64tmp')
+ # if the embed_images flag is True
+ # embed_images base64 into the html
+ if self.embed_images == True:
+ base64 = os.path.join(self.datapath, 'base64tmp')
cmd = "base64 <" + filename + " >" + base64
subprocess.check_call(cmd, shell=True)
f = open( base64, 'r')
imgdata = f.read()
f.close()
- code = html_glue['img'][0] + \
- imgdata + \
- html_glue['img'][1]
- for b in bs: # "show me the code"
- code = code + html_glue['div'][0]
- data = walk_stack(self, tw, b)
- for d in data:
- if type(d) is not float:
- if d[0:2] == "#s":
- d = d[2:]
- elif d[0:3] == "nop":
- stack = {"nop" :"",\
- "nop1":"stack1",\
- "nop2":"stack2",\
- "nop3":"stack"}
- d = stack[d]
- # translate block name if it is in the dictionary
- if d in blocks_dict:
- d = _(blocks_dict[d])
- else:
- d = _(d)
- code = code + str(d) + " "
- code = code + html_glue['div'][1]
-
- code = html_glue['doctype'][0] + \
- html_glue['html'][0] + \
- html_glue['head'][0] + \
- html_glue['meta'][0] + \
- html_glue['title'][0] + \
- _("Turtle Art") + \
- html_glue['title'][1] + \
- html_glue['style'][0] + \
- html_glue['style'][1] + \
- html_glue['head'][1] + \
- html_glue['body'][0] + \
+ code += (self.html_glue['img'][0] + \
+ imgdata + \
+ self.html_glue['img'][1])
+ code += (self.html_glue['div'][0])
+ # get a json dump of the code
+ code += (tawindow.save_string(tw,False))
+ code += (self.html_glue['div'][1])
+ code = self.html_glue['doctype'][0] + \
+ self.html_glue['html'][0] + \
+ self.html_glue['head'][0] + \
+ self.html_glue['meta'][0] + \
+ self.html_glue['title'][0] + \
+ _("Turtle Art") + " " + tw.activity.metadata['title'] + \
+ self.html_glue['title'][1] + \
+ self.html_glue['style'][0] + \
+ self.html_glue['style'][1] + \
+ self.html_glue['head'][1] + \
+ self.html_glue['body'][0] + \
code + \
- html_glue['body'][1] + \
- html_glue['html'][1]
+ self.html_glue['body'][1] + \
+ self.html_glue['html'][1]
return code
def walk_stack(self, tw, spr):
@@ -305,3 +302,41 @@ def walk_stack(self, tw, spr):
# not top of stack, then return empty list
return []
+def add_image(self, d):
+ if d[8:] != "None":
+ try:
+ dsobject = datastore.get(d[8:])
+ pixbuf = get_pixbuf_from_journal(dsobject,400,300)
+ filename = os.path.join(self.datapath, 'image' + \
+ str(self.imagecount) + ".png")
+ pixbuf.save(filename, "png")
+ # if the embed_images flag is True
+ # embed images base64 into the html
+ if self.embed_images == True:
+ base64 = os.path.join(self.datapath, 'base64tmp')
+ cmd = "base64 <" + filename + " >" + base64
+ subprocess.check_call(cmd, shell=True)
+ f = open( base64, 'r')
+ imgdata = f.read()
+ f.close()
+ tmp = self.html_glue['img2'][0]
+ if self.embed_images == True:
+ tmp += imgdata
+ else:
+ tmp += str(self.imagecount)
+ self.imagecount += 1
+ tmp += self.html_glue['img2'][1]
+ return tmp
+ except:
+ return ""
+ return ""
+
+def add_description(self, d):
+ # show description
+ if d[8:] != "None":
+ try:
+ dsobject = datastore.get(d[8:])
+ return dsobject.metadata['description']
+ except:
+ return ""
+ return ""
diff --git a/talogo.py b/talogo.py
index fdee6c4..a49b3f9 100644
--- a/talogo.py
+++ b/talogo.py
@@ -618,23 +618,23 @@ def callmyfunc(lc, f, x):
def show_picture(lc, media, x, y, w, h):
if media == "" or media[6:] == "":
-# raise logoerror("#nomedia")
- print "no media"
+ # raise logoerror("#nomedia")
+ pass
elif media[6:] != "None":
try:
dsobject = datastore.get(media[6:])
except:
raise logoerror("#nomedia")
# check to see if it is a movie
- print dsobject.file_path
- print "object has file suffix of: " + dsobject.file_path[-4:]
+ # print dsobject.file_path
+ # print "object has file suffix of: " + dsobject.file_path[-4:]
if dsobject.file_path[-4:] == '.ogv' or \
dsobject.file_path[-4:] == '.vob' or \
dsobject.file_path[-4:] == '.mp4' or \
dsobject.file_path[-4:] == '.wmv' or \
dsobject.file_path[-4:] == '.mov':
- print "playing movie x:" + str(x) + " y:" + str(y) + " w:" \
- + str(w) + " h:" + str(h)
+ # print "playing movie x:" + str(x) + " y:" + str(y) + " w:" + \
+ # str(w) + " h:" + str(h)
play_dsobject(lc, dsobject, int(x), int(y), int(w), int(h))
else:
pixbuf = get_pixbuf_from_journal(dsobject, int(w), int(h))
@@ -650,12 +650,11 @@ def get_pixbuf_from_journal(dsobject,w,h):
except:
try:
# print "Trying preview..."
- pixbufloader = gtk.gdk.pixbuf_loader_new_with_mime_type \
- ('image/png')
+ pixbufloader = \
+ gtk.gdk.pixbuf_loader_new_with_mime_type('image/png')
pixbufloader.set_size(min(300,int(w)),min(225,int(h)))
pixbufloader.write(dsobject.metadata['preview'])
pixbufloader.close()
-# gtk.gdk_pixbuf_loader_close(pixbufloader)
pixbuf = pixbufloader.get_pixbuf()
except:
# print "No preview"
@@ -664,8 +663,8 @@ def get_pixbuf_from_journal(dsobject,w,h):
def show_description(lc, media, x, y, w, h):
if media == "" or media[6:] == "":
-# raise logoerror("#nomedia")
- print "no media"
+ # raise logoerror("#nomedia")
+ pass
elif media[6:] != "None":
try:
dsobject = datastore.get(media[6:])
@@ -678,7 +677,7 @@ def show_description(lc, media, x, y, w, h):
def draw_title(lc,title,x,y):
draw_text(lc.tw.turtle,title,int(x),int(y),lc.title_height, \
- lc.tw.turtle.width-x)
+ lc.tw.turtle.width-x)
def calc_position(lc,t):
w,h,x,y,dx,dy = lc.templates[t]
@@ -1007,8 +1006,8 @@ def kbinput(lc):
else:
try:
lc.keyboard = {'Escape': 27, 'space': 32, ' ': 32, 'Return': 13, \
- 'KP_Up': 2, 'KP_Down': 4, 'KP_Left': 1, 'KP_Right': 3,} \
- [lc.tw.keypress]
+ 'KP_Up': 2, 'KP_Down': 4, 'KP_Left': 1, \
+ 'KP_Right': 3,}[lc.tw.keypress]
except:
lc.keyboard = 0
lc.tw.keypress = ""
diff --git a/taproject.py b/taproject.py
index 37b0964..05c2a87 100644
--- a/taproject.py
+++ b/taproject.py
@@ -45,12 +45,13 @@ import os.path
from tasprites import *
from taturtle import *
from talogo import stop_logo
+from talogo import get_pixbuf_from_journal
try:
from sugar.datastore import datastore
except:
pass
-nolabel = ['audiooff', 'descriptionoff','journal']
+nolabel = ['audiooff', 'descriptionoff', 'journal']
shape_dict = {'journal':'texton', \
'descriptionoff':'decson', \
'audiooff':'audioon'}
@@ -157,7 +158,7 @@ def load_spr(tw,b):
btype, label = btype
if btype == 'title': # for backward compatibility
btype = 'string'
- if btype == 'journal' or btype == 'audiooff':
+ if btype == 'journal' or btype == 'audiooff' or btype == 'descriptionoff':
media = label
label = None
proto = tw.protodict[btype]
@@ -173,7 +174,6 @@ def load_spr(tw,b):
spr.ds_id = dsobject.object_id
setimage(spr, tw.media_shapes[shape_dict[spr.proto.name]])
if spr.proto.name == 'journal':
- from talogo import get_pixbuf_from_journal
pixbuf = get_pixbuf_from_journal \
(dsobject,spr.width,spr.height)
if pixbuf is not None:
@@ -233,8 +233,8 @@ def save_data(tw,fname):
f.close()
# Used to send data across a shared session
-def save_string(tw):
- data = assemble_data_to_save(tw)
+def save_string(tw,save_turtle=True):
+ data = assemble_data_to_save(tw,save_turtle)
if _old_Sugar_system is True:
text = json.write(data)
else:
@@ -243,7 +243,7 @@ def save_string(tw):
text = io.getvalue()
return text
-def assemble_data_to_save(tw):
+def assemble_data_to_save(tw,save_turtle=True):
bs = blocks(tw)
data = []
for i in range(len(bs)): bs[i].id=i
@@ -260,9 +260,10 @@ def assemble_data_to_save(tw):
connections = None
data.append((b.id,name,b.x-tw.turtle.canvas.x, \
b.y-tw.turtle.canvas.y,connections))
- data.append((-1,'turtle',
- tw.turtle.xcor,tw.turtle.ycor,tw.turtle.heading,
- tw.turtle.color,tw.turtle.shade,tw.turtle.pensize))
+ if save_turtle is True:
+ data.append((-1,'turtle',
+ tw.turtle.xcor,tw.turtle.ycor,tw.turtle.heading,
+ tw.turtle.color,tw.turtle.shade,tw.turtle.pensize))
return data
# serialize a stack to save to the clipboard
@@ -279,7 +280,6 @@ def serialize_stack(tw):
# find the stack under the cursor and serialize it
def assemble_stack_to_clone(tw):
(x,y) = tw.window.get_pointer()
- # print x,y
spr = findsprite(tw,(x,y))
bs = findgroup(find_top_block(spr))
@@ -336,7 +336,12 @@ def findgroup(b):
def find_top_block(spr):
b = spr
- while b.connections[0]!=None:
- b=b.connections[0]
+ if hasattr(b,"connections"):
+ while b.connections[0]!=None:
+ b=b.connections[0]
return b
+# start a new project with a start brick
+def load_start(tw):
+ clone_stack(tw,str("[[0,\"start\",250,30,[null,null]]]"))
+