From ebbaf1f427c01334106add9a11802381e170d7ce Mon Sep 17 00:00:00 2001 From: U-BRIAN-X60\Brian Silverman Date: Thu, 30 Aug 2007 21:48:32 +0000 Subject: added journal awareness --- (limited to 'TurtleArtActivity.py') diff --git a/TurtleArtActivity.py b/TurtleArtActivity.py index 3c40d89..6fc4b50 100755 --- a/TurtleArtActivity.py +++ b/TurtleArtActivity.py @@ -3,32 +3,134 @@ import pygtk pygtk.require('2.0') import gtk +from socket import * +import sys +import gobject + +serverHost = '192.168.1.101' +serverPort = 5647 + +import sugar from sugar.activity import activity +from sugar.activity import registry +from sugar.graphics.toolbutton import ToolButton +from sugar.datastore import datastore +from sugar import profile +from gettext import gettext as _ + class TurtleArtActivity(activity.Activity): def __init__(self, handle): super(TurtleArtActivity,self).__init__(handle) - +# self.debug_init() + self.gamename = 'turtleart' self.set_title("TurtleArt") - toolbar = activity.ActivityToolbar(self) - toolbar.show() - self.set_toolbox(toolbar) + + toolbox = activity.ActivityToolbox(self) + self.set_toolbox(toolbox) + self.projectToolbar = ProjectToolbar(self) + toolbox.add_toolbar( ('Project'), self.projectToolbar ) + toolbox.show() + + toolbox._activity_toolbar.keep.connect('clicked', self._keep_clicked_cb) # patch self.connect('destroy', self._cleanup_cb) -# self.connect('focus_in_event', self._focus_in) -# self.connect('focus_out_event', self._focus_out) - + canvas = gtk.EventBox() - self.set_canvas(canvas) + + sugar.graphics.window.Window.set_canvas(self, canvas) + ta.init(canvas, activity.get_bundle_path(),self) - + + if self._jobject and self._jobject.file_path: + self.read_file(self._jobject.file_path) def _cleanup_cb(self, data=None): return - def _focus_in(self, event, data=None): - return + def _keep_clicked_cb(self, button): + self.jobject_new_patch() + + def write_file(self, file_path): + print "Writing file %s" % file_path + self.metadata['mime_type'] = 'application/x-tar' + import tarfile,os,tempfile + tar_fd = tarfile.open(file_path, 'w') + pngfd, pngfile = tempfile.mkstemp(".png") + tafd, tafile = tempfile.mkstemp(".ta") + del pngfd, tafd + + try: + ta.save_data(tafile) + ta.save_pict(pngfile) + tar_fd.add(tafile, "ta_code.ta") + tar_fd.add(pngfile, "ta_image.png") + + finally: + tar_fd.close() + os.remove(pngfile) + os.remove(tafile) + + def read_file(self, file_path): + # Better be a tar file. + import tarfile,os,tempfile,shutil + + print "Reading file %s" % file_path + tar_fd = tarfile.open(file_path, 'r') + tmpdir = tempfile.mkdtemp() + + try: + # We'll get 'ta_code.ta' and 'ta_image.png' + tar_fd.extractall(tmpdir) + ta.load_files(os.path.join(tmpdir, 'ta_code.ta'), os.path.join(tmpdir, 'ta_image.png')) + + finally: + shutil.rmtree(tmpdir) + tar_fd.close() + + def debug_init(self): + s = socket(AF_INET, SOCK_STREAM) # create a TCP socket + s.connect((serverHost, serverPort)) # connect to server on the port + sys.stdout = s.makefile() + sys.stderr = sys.stdout + gobject.timeout_add(100, self.debug_tick) + + def debug_tick(self): + sys.stdout.flush() + return True + + def jobject_new_patch(self): + oldj = self._jobject + self._jobject = datastore.create() + self._jobject.metadata['title'] = oldj.metadata['title'] + self._jobject.metadata['title_set_by_user'] = oldj.metadata['title_set_by_user'] + self._jobject.metadata['activity'] = self.get_service_name() + self._jobject.metadata['activity_id'] = self.get_id() + self._jobject.metadata['keep'] = '0' + #self._jobject.metadata['buddies'] = '' + self._jobject.metadata['preview'] = '' + self._jobject.metadata['icon-color'] = profile.get_color().to_string() + self._jobject.file_path = '' + datastore.write(self._jobject, + reply_handler=self._internal_jobject_create_cb, + error_handler=self._internal_jobject_error_cb) + + +class ProjectToolbar(gtk.Toolbar): + def __init__(self, pc): + gtk.Toolbar.__init__(self) + self.activity = pc + + self.sampb = ToolButton( "stock-open" ) + self.sampb.set_tooltip("samples") + self.sampb.props.sensitive = True + self.sampb.connect('clicked', self.do_samples) + self.insert(self.sampb, -1) + self.sampb.show() + + + def do_samples(self, button): + ta.load_file() +# self.activity.jobject_new_patch() - def _focus_out(self, event, data=None): - return -- cgit v0.9.1