Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/activity.py
diff options
context:
space:
mode:
Diffstat (limited to 'activity.py')
-rw-r--r--activity.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/activity.py b/activity.py
index 9994dea..6539119 100644
--- a/activity.py
+++ b/activity.py
@@ -22,6 +22,8 @@ import os
import gtk
from gettext import gettext as _
import logging
+import json
+import tempfile
import pygame
import sugargame
@@ -36,6 +38,7 @@ from sugar.graphics.alert import ConfirmationAlert
from sugar.graphics.toolbarbox import ToolbarBox
from sugar.graphics.toolbarbox import ToolbarButton
from sugar.graphics.style import GRID_CELL_SIZE
+from sugar.datastore import datastore
import tools
import physics
@@ -120,6 +123,12 @@ class PhysicsActivity(activity.Activity):
self._insert_stop_play_button(toolbar_box.toolbar)
+ export_json = ToolButton("document-save")
+ export_json.set_tooltip(_("Export tracked objects to journal"))
+ export_json.connect('clicked', self._export_json_cb)
+ toolbar_box.toolbar.insert(export_json, -1)
+ export_json.show()
+
separator = gtk.SeparatorToolItem()
toolbar_box.toolbar.insert(separator, -1)
separator.show()
@@ -216,6 +225,16 @@ class PhysicsActivity(activity.Activity):
else:
pass
+ def _export_json_cb(self, button):
+ jobject = datastore.create()
+ jobject.metadata['title'] = _("Physics export")
+ jobject.metadata['mime_type'] = "application/json"
+ tmp = tempfile.TemporaryFile()
+ data = self.game.full_pos_list
+ json.dump(data, tmp)
+ jobject.file_path = os.path.abspath(tmp.name)
+ datastore.write(jobject)
+
def radioClicked(self, button):
pygame.event.post(pygame.event.Event(pygame.USEREVENT,
action=self.radioList[button]))