From 71e4e4705b3e52cbd2f3a9e176b19bc8ceb3adbd Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Tue, 18 Aug 2009 03:19:56 +0000 Subject: cleaning up load/save/keep --- diff --git a/TurtleArtActivity.py b/TurtleArtActivity.py index 7c0838d..8852984 100644 --- a/TurtleArtActivity.py +++ b/TurtleArtActivity.py @@ -84,7 +84,7 @@ class TurtleArtActivity(activity.Activity): self.editToolbar = EditToolbar(self) self.toolbox.add_toolbar(_('Edit'), self.editToolbar) self.saveasToolbar = SaveAsToolbar(self) - self.toolbox.add_toolbar( _('Save as'), self.saveasToolbar ) + self.toolbox.add_toolbar( _('Import/Export'), self.saveasToolbar ) self.toolbox.show() # Set the project toolbar as the initial one selected @@ -147,6 +147,7 @@ class TurtleArtActivity(activity.Activity): dsobject.metadata['icon-color'] = \ profile.get_color().to_string() dsobject.metadata['mime_type'] = 'text/x-python' + dsobject.metadata['activity'] = 'org.laptop.Pippy' dsobject.set_file_path(os.path.join( \ activity.get_bundle_path(), 'tamyblock.py')) datastore.write(dsobject) @@ -359,28 +360,12 @@ class TurtleArtActivity(activity.Activity): self.jobject_new_patch() """ - Write the project and a screen snapshot to the Journal + Write the project to the Journal """ def write_file(self, file_path): - _logger.debug("Writing file %s" % file_path) - self.metadata['mime_type'] = 'application/x-tar' - import tempfile - tar_fd = tarfile.open(file_path, 'w') - pngfd, pngfile = tempfile.mkstemp(".png") - tafd, tafile = tempfile.mkstemp(".ta") - del pngfd - del tafd - - try: - tawindow.save_data(self.tw,tafile) - tawindow.save_pict(self.tw,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) + _logger.debug("Write file: %s" % file_path) + self.metadata['mime_type'] = 'application/x-turtle-art' + tawindow.save_data(self.tw,file_path) """ Read a project in and then run it @@ -389,8 +374,8 @@ class TurtleArtActivity(activity.Activity): import tarfile,os,tempfile,shutil if hasattr(self, 'tw'): - _logger.debug("Reading file %s" % file_path) - # should be a gtar (newer builds) or tar (767) file + _logger.debug("Read file: %s" % file_path) + # Could be a gtar (newer builds) or tar (767) file if file_path[-5:] == ".gtar" or file_path[-4:] == ".tar": tar_fd = tarfile.open(file_path, 'r') tmpdir = tempfile.mkdtemp() @@ -402,8 +387,9 @@ class TurtleArtActivity(activity.Activity): finally: shutil.rmtree(tmpdir) tar_fd.close() - # try to open a .ta file - elif file_path[-3:] == ".ta": + # Otherwise, assume it is a .ta file + else: + print "trying to open a .ta file:" + file_path tawindow.load_files(self.tw, file_path, "") # run the activity tawindow.runbutton(self.tw, 0) @@ -419,11 +405,11 @@ class TurtleArtActivity(activity.Activity): 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'] = self.get_service_name() self._jobject.metadata['activity_id'] = self.get_id() self._jobject.metadata['keep'] = '0' # Is this the correct syntax for saving the buddies list? - self._jobject.metadata['buddies'] = self.tw.buddies + # self._jobject.metadata['buddies'] = self.tw.buddies self._jobject.metadata['preview'] = '' self._jobject.metadata['icon-color'] = profile.get_color().to_string() self._jobject.file_path = '' @@ -511,23 +497,6 @@ class SaveAsToolbar(gtk.Toolbar): gtk.Toolbar.__init__(self) self.activity = pc - # project open - self.sampb = ToolButton( "stock-open" ) - self.sampb.set_tooltip(_('samples')) - self.sampb.props.sensitive = True - self.sampb.connect('clicked', self.do_samples) - try: - self.sampb.props.accelerator = _('o') - except: - pass - self.insert(self.sampb, -1) - self.sampb.show() - - separator = gtk.SeparatorToolItem() - separator.set_draw(True) - self.insert(separator, -1) - separator.show() - # HTML save source button self.savehtml = ToolButton( "htmloff" ) self.savehtml.set_tooltip(_('save as HTML')) @@ -544,6 +513,14 @@ class SaveAsToolbar(gtk.Toolbar): self.insert(self.savelogo, -1) self.savelogo.show() + # Save as image button + self.saveimage = ToolButton( "image-saveoff" ) + self.saveimage.set_tooltip(_('save as image')) + self.saveimage.props.sensitive = True + self.saveimage.connect('clicked', self.do_saveimage) + self.insert(self.saveimage, -1) + self.saveimage.show() + separator = gtk.SeparatorToolItem() separator.set_draw(True) self.insert(separator, -1) @@ -557,11 +534,6 @@ class SaveAsToolbar(gtk.Toolbar): self.insert(self.loadmyblock, -1) self.loadmyblock.show() - def do_samples(self, button): - tawindow.load_file(self.activity.tw) - # run the activity - tawindow.runbutton(self.activity.tw, 0) - def do_savehtml(self, button): # write html out to datastore self.savehtml.set_icon("htmlon") @@ -602,21 +574,22 @@ class SaveAsToolbar(gtk.Toolbar): tar_fd.close() # Create a datastore object - file_dsobject = datastore.create() + dsobject = datastore.create() # Write any metadata (here we specifically set the title of the file # and specify that this is a plain text file). - file_dsobject.metadata['title'] = "Turtle Art portfolio" - file_dsobject.metadata['icon-color'] = profile.get_color().to_string() + dsobject.metadata['title'] = "Turtle Art portfolio" + dsobject.metadata['icon-color'] = profile.get_color().to_string() if embed_flag == True: - file_dsobject.metadata['mime_type'] = 'text/html' - file_dsobject.set_file_path(html_file) + dsobject.metadata['mime_type'] = 'text/html' + dsobject.set_file_path(html_file) else: - file_dsobject.metadata['mime_type'] = 'application/x-tar' - file_dsobject.set_file_path(tar_path) + dsobject.metadata['mime_type'] = 'application/x-tar' + dsobject.set_file_path(tar_path) - datastore.write(file_dsobject) - file_dsobject.destroy() + dsobject.metadata['activity'] = 'org.laptop.WebActivity' + datastore.write(dsobject) + dsobject.destroy() gobject.timeout_add(250,self.savehtml.set_icon, "htmloff") return @@ -630,13 +603,13 @@ class SaveAsToolbar(gtk.Toolbar): filename = "logosession.lg" # Create a datastore object - file_dsobject = datastore.create() + dsobject = datastore.create() # Write any metadata (here we specifically set the title of the file # and specify that this is a plain text file). - file_dsobject.metadata['title'] = filename - file_dsobject.metadata['mime_type'] = 'text/plain' - file_dsobject.metadata['icon-color'] = profile.get_color().to_string() + dsobject.metadata['title'] = filename + dsobject.metadata['mime_type'] = 'text/plain' + dsobject.metadata['icon-color'] = profile.get_color().to_string() # save the html code to the instance directory try: @@ -656,9 +629,9 @@ class SaveAsToolbar(gtk.Toolbar): f.close() # Set the file_path in the datastore. - file_dsobject.set_file_path(file_path) + dsobject.set_file_path(file_path) - datastore.write(file_dsobject) + datastore.write(dsobject) gobject.timeout_add(250,self.savelogo.set_icon, "logo-saveoff") return @@ -690,6 +663,28 @@ class SaveAsToolbar(gtk.Toolbar): chooser.destroy() del chooser + def do_saveimage(self, button): + self.saveimage.set_icon("image-saveon") + _logger.debug("saving image to journal") + import tempfile + pngfd, pngfile = tempfile.mkstemp(".png") + del pngfd + tawindow.save_pict(self.activity.tw,pngfile) + + # Create a datastore object + dsobject = datastore.create() + + # Write metadata + dsobject.metadata['title'] = "Turtle Art image" + dsobject.metadata['icon-color'] = profile.get_color().to_string() + dsobject.metadata['mime_type'] = 'image/png' + dsobject.set_file_path(pngfile) + + datastore.write(dsobject) + dsobject.destroy() + gobject.timeout_add(250,self.saveimage.set_icon, "image-saveoff") + return + """ Project toolbar: show/hide palettes; show/hide blocks; run; walk; stop; erase; load sample project; fullscreen @@ -816,13 +811,34 @@ class ProjectToolbar(gtk.Toolbar): self.insert(separator, -1) separator.show() - # Save as image button - self.saveimage = ToolButton( "image-saveoff" ) - self.saveimage.set_tooltip(_('save as image')) - self.saveimage.props.sensitive = True - self.saveimage.connect('clicked', self.do_saveimage) - self.insert(self.saveimage, -1) - self.saveimage.show() + # Save snapshot ("keep") + self.keepb = ToolButton( "filesave" ) + self.keepb.set_tooltip(_('save snapshot')) + self.keepb.props.sensitive = True + try: + self.fullscreenb.props.accelerator = 'S' + except: + pass + self.keepb.connect('clicked', self.do_savesnapshot) + self.insert(self.keepb, -1) + self.keepb.show() + + separator = gtk.SeparatorToolItem() + separator.set_draw(True) + self.insert(separator, -1) + separator.show() + + # project open + self.sampb = ToolButton( "stock-open" ) + self.sampb.set_tooltip(_('samples')) + self.sampb.props.sensitive = True + self.sampb.connect('clicked', self.do_samples) + try: + self.sampb.props.accelerator = _('o') + except: + pass + self.insert(self.sampb, -1) + self.sampb.show() def do_palette(self, button): if self.activity.tw.palette == True: @@ -850,7 +866,6 @@ class ProjectToolbar(gtk.Toolbar): self.activity.tw.lc.trace = 0 tawindow.runbutton(self.activity.tw, 0) gobject.timeout_add(1000,self.runproject.set_icon,"run-fastoff") -# gobject.timeout_add(1000,self.stepproject.set_icon,"run-slowoff") def do_step(self, button): self.stepproject.set_icon("run-slowon") @@ -858,7 +873,6 @@ class ProjectToolbar(gtk.Toolbar): self.activity.tw.lc.trace = 0 tawindow.runbutton(self.activity.tw, 3) gobject.timeout_add(1000,self.stepproject.set_icon,"run-slowoff") -# gobject.timeout_add(1000,self.runproject.set_icon,"run-fastoff") def do_debug(self, button): self.debugproject.set_icon("debugon") @@ -911,24 +925,37 @@ class ProjectToolbar(gtk.Toolbar): self.activity.fullscreen() self.activity.recenter() - def do_saveimage(self, button): - self.saveimage.set_icon("image-saveon") - _logger.debug("saving image to journal") - import tempfile - pngfd, pngfile = tempfile.mkstemp(".png") - del pngfd - tawindow.save_pict(self.activity.tw,pngfile) + def do_samples(self, button): + tawindow.load_file(self.activity.tw) + # run the activity + tawindow.runbutton(self.activity.tw, 0) + def do_savesnapshot(self, button): # Create a datastore object - file_dsobject = datastore.create() + # save the current state of the project to the instance directory + print "### in savesnapshot ###" - # Write metadata - file_dsobject.metadata['title'] = "Turtle Art image" - file_dsobject.metadata['icon-color'] = profile.get_color().to_string() - file_dsobject.metadata['mime_type'] = 'image/png' - file_dsobject.set_file_path(pngfile) + import tempfile + tafd, tafile = tempfile.mkstemp(".ta") + print tafile + try: + tawindow.save_data(self.activity.tw,tafile) + except: + _logger.debug("couldn't save snapshot to journal") - datastore.write(file_dsobject) - file_dsobject.destroy() - gobject.timeout_add(250,self.saveimage.set_icon, "image-saveoff") + # Create a datastore object + dsobject = datastore.create() + + # Write any metadata + dsobject.metadata['title'] = "Turtle Art snapshot" + dsobject.metadata['icon-color'] = profile.get_color().to_string() + dsobject.metadata['mime_type'] = 'application/x-turtle-art' + dsobject.metadata['activity'] = 'org.laptop.TurtleArtActivity' + dsobject.set_file_path(tafile) + datastore.write(dsobject) + + # Clean up + dsobject.destroy() + os.remove(tafile) + del tafd return diff --git a/taproject.py b/taproject.py index c0c5c69..38ee5fa 100644 --- a/taproject.py +++ b/taproject.py @@ -73,6 +73,7 @@ def load_files(tw,ta_file, png_file=''): # print "reading saved json data" f.seek(0) # rewind necessary because of pickle.load text = f.read() + # print text io = StringIO(text) listdata = jload(io) print listdata -- cgit v0.9.1