diff options
author | Marion Zepf <marion.zepf@gmail.com> | 2013-10-27 02:06:05 (GMT) |
---|---|---|
committer | Walter Bender <walter@sugarlabs.org> | 2013-10-27 02:06:05 (GMT) |
commit | 629722d8859d1e8db47417673cb78963d41ce435 (patch) | |
tree | d188a0c26c724bc151c3449eb7a5613777f2ed40 /turtleblocks.py | |
parent | 8ac55749fbe9672ea3f403c93713b403efac46af (diff) |
python export
Diffstat (limited to 'turtleblocks.py')
-rwxr-xr-x | turtleblocks.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/turtleblocks.py b/turtleblocks.py index 94c0fb7..b806c55 100755 --- a/turtleblocks.py +++ b/turtleblocks.py @@ -57,6 +57,7 @@ from TurtleArt.tautils import (data_from_string, get_save_name) from TurtleArt.tapalette import default_values from TurtleArt.tawindow import TurtleArtWindow from TurtleArt.taexportlogo import save_logo +from TurtleArt.taexportpython import save_python from util.menubuilder import MenuBuilder @@ -405,6 +406,8 @@ return %s(self)" % (p, P, P) self._do_save_picture_cb) MenuBuilder.make_menu_item(menu, _('Save as Logo'), self._do_save_logo_cb) + MenuBuilder.make_menu_item(menu, _('Save as Python'), + self._do_save_python_cb) MenuBuilder.make_menu_item(menu, _('Quit'), self._quit_ta) activity_menu = MenuBuilder.make_sub_menu(menu, _('File')) @@ -556,6 +559,34 @@ Would you like to save before quitting?')) f.write(logocode) f.close() + def _do_save_python_cb(self, widget): + ''' Callback for saving the project as Python code. ''' + # catch PyExportError and display a user-friendly message instead + try: + pythoncode = save_python(self.tw) + except PyExportError as pyee: + if pyee.block is not None: + pyee.block.highlight() + self.tw.showlabel('status', str(pyee)) + return + if not pythoncode: + return + # use name of TA project if it has been saved already + default_name = self.tw.save_file_name + if default_name is None: + default_name = _("myproject") + elif default_name.endswith(".ta") or default_name.endswith(".tb"): + default_name = default_name[:-3] + save_type = '.py' + (filename, self.tw.load_save_folder) = get_save_name( + save_type, self.tw.load_save_folder, default_name) + if isinstance(filename, unicode): + filename = filename.encode('ascii', 'replace') + if filename is not None: + f = file(filename, 'w') + f.write(pythoncode) + f.close() + def _do_resize_cb(self, widget, factor): ''' Callback to resize blocks. ''' if factor == -1: |