From 198ce06b4ee684af8d965a60152211a9eaac8503 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Wed, 14 Oct 2009 15:13:34 +0000 Subject: clean up of HTML code --- 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 \n" "Language-Team: LANGUAGE \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 "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 "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 "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 "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 "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 "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 "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 "d" msgstr "" -#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1406 +#: /home/walter/Desktop/turtleart-activity/TurtleArtActivity.py:1251 msgid "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': ("\n", ""), - 'html': ("\n", "\n"), + 'html': ("\n", "\n"), 'head': ("\n\n", \ "\n"), 'meta': ("\n", ""), 'img': ("\"Image\"\n"), 'img2': ("\"Image\"\n"), - 'ul': ("
    \n", "
\n"), - 'li': ("
  • ", "
  • \n") } + 'ul': ("\n", "
    \n"), + 'li': ("", "\n") } - if embed_flag == True: + if self.embed_images == True: # store images in-line as base64 - html_glue['img'] = ("\"Image\"\n") - html_glue['img2'] = ("\"Image\"\n") + self.html_glue['img'] = ("\"Image\"\n") + self.html_glue['img2'] = ("\"Image\"\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]]]")) + -- cgit v0.9.1