diff options
author | Walter Bender <walter@sugarlabs.org> | 2014-01-17 20:43:26 (GMT) |
---|---|---|
committer | Walter Bender <walter@sugarlabs.org> | 2014-01-17 20:43:26 (GMT) |
commit | c0ecec9cf16c077449516c5902ce1b42f47e14b9 (patch) | |
tree | 04c8b888383272818e14bbb47f1dffbbac896bef | |
parent | 5fa20d9630c990f77aacb95222f7ea8d6386dc07 (diff) |
resync with 196
-rw-r--r-- | TurtleArtActivity.py | 78 | ||||
-rwxr-xr-x | turtleblocks.py | 33 |
2 files changed, 104 insertions, 7 deletions
diff --git a/TurtleArtActivity.py b/TurtleArtActivity.py index 9072d45..cce2d2d 100644 --- a/TurtleArtActivity.py +++ b/TurtleArtActivity.py @@ -335,6 +335,33 @@ class TurtleArtActivity(activity.Activity): self.tw.load_python_code_from_file(fname=None, add_new_block=True) gobject.timeout_add(250, self.load_python.set_icon, 'pippy-openoff') + def do_save_as_odp_cb(self, button): + _logger.debug('saving odp to journal') + if hasattr(self, 'get_window'): + if hasattr(self.get_window(), 'get_cursor'): + self._old_cursor = self.get_window().get_cursor() + self.get_window().set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH)) + gobject.timeout_add(250, self.__save_as_odp) + + def __save_as_odp(self): + self.tw.save_as_odp() + if hasattr(self, 'get_window'): + self.get_window().set_cursor(self._old_cursor) + + def do_save_as_icon_cb(self, button): + _logger.debug('saving icon to journal') + if hasattr(self, 'get_window'): + if hasattr(self.get_window(), 'get_cursor'): + self._old_cursor = self.get_window().get_cursor() + self.get_window().set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH)) + gobject.timeout_add(250, self.__save_as_icon) + + def __save_as_icon(self): + self.tw.write_svg_operation() + self.tw.save_as_icon() + if hasattr(self, 'get_window'): + self.get_window().set_cursor(self._old_cursor) + def do_save_as_image_cb(self, button): ''' Save the canvas to the Journal. ''' self.save_as_image.set_icon('image-saveon') @@ -383,7 +410,8 @@ class TurtleArtActivity(activity.Activity): if self.tw.palette: self.tw.hideshow_palette(False) self.do_hidepalette() - if not self.has_toolbarbox and self.tw.selected_palette is not None: + if not self.has_toolbarbox and \ + self.tw.selected_palette is not None: self.palette_buttons[self.tw.selected_palette].set_icon( palette_names[self.tw.selected_palette] + 'off') else: @@ -892,6 +920,18 @@ class TurtleArtActivity(activity.Activity): add_paragraph(help_box, _('Share selected blocks'), icon='shareon') add_paragraph(help_box, _('Save/Load'), icon='save-load') add_paragraph(help_box, _('Save as image'), icon='image-saveoff') + + self.save_as_icon = add_paragraph( + help_box, _('Save as icon'), icon='image-saveoff') + self.save_as_icon.connect( + 'expose-event', self._save_as_icon_expose_cb) + + # TRANS: ODP is Open Office presentation + self.save_as_odp = add_paragraph(help_box, _('Save as ODP'), + icon='odp-saveoff') + self.save_as_odp.connect('expose-event', + self._save_as_odp_expose_cb) + add_paragraph(help_box, _('Save as Logo'), icon='logo-saveoff') add_paragraph(help_box, _('Save as Python'), icon='python-saveoff') add_paragraph(help_box, _('Save snapshot'), icon='filesaveoff') @@ -947,6 +987,14 @@ class TurtleArtActivity(activity.Activity): add_paragraph(help_box, _('Shrink blocks'), icon='resize-') add_paragraph(help_box, _('Turn off hover help'), icon='help-off') + def _save_as_icon_expose_cb(self, box, context): + for widget in box.get_children(): + widget.set_sensitive(self.tw.canvas.cr_svg is not None) + + def _save_as_odp_expose_cb(self, box, context): + for widget in box.get_children(): + widget.set_sensitive(len(self.tw.saved_pictures) > 0) + def _setup_palette_toolbar(self): ''' The palette toolbar must be setup *after* plugins are loaded. ''' if self.has_toolbarbox: @@ -1076,6 +1124,19 @@ class TurtleArtActivity(activity.Activity): self.save_as_image, label = self._add_button_and_label( 'image-saveoff', _('Save as image'), self.do_save_as_image_cb, None, button_box) + self.save_as_icon = self._add_button_and_label( + 'image-saveoff', _('Save as icon'), self.do_save_as_icon_cb, + None, button_box) + # TRANS: ODP is Open Office presentation + self.save_as_odp = self._add_button_and_label( + 'odp-saveoff', _('Save as ODP'), self.do_save_as_odp_cb, + None, button_box) + self.save_as_icon[0].get_parent().connect('expose-event', + self._save_as_icon_expose_cb) + + self.save_as_odp[0].get_parent().connect('expose-event', + self._save_as_odp_expose_cb) + self.save_as_logo, label = self._add_button_and_label( 'logo-saveoff', _('Save as Logo'), self.do_save_as_logo_cb, None, button_box) @@ -1124,6 +1185,19 @@ class TurtleArtActivity(activity.Activity): self.save_as_image = self._add_button( 'image-saveoff', _('Save as image'), self.do_save_as_image_cb, toolbar) + self.save_as_icon = self._add_button( + 'image-saveoff', _('Save as icon'), self.do_save_as_icon_cb, + toolbar) + # TRANS: ODP is Open Office presentation + self.save_as_odp = self._add_button( + 'odp-saveoff', _('Save as ODP'), self.do_save_as_odp_cb, + toolbar) + + self.save_as_icon.connect('expose-event', + self._save_as_icon_expose_cb) + self.save_as_odp.connect('expose-event', + self._save_as_odp_expose_cb) + self.save_as_logo = self._add_button( 'logo-saveoff', _('Save as Logo'), self.do_save_as_logo_cb, toolbar) @@ -1136,6 +1210,7 @@ class TurtleArtActivity(activity.Activity): self.load_ta_project = self._add_button( 'load-from-journal', _('Add project'), self.do_load_ta_project_cb, toolbar) + # Only enable plugin loading if installed in $HOME if activity.get_bundle_path()[0:len(home)] == home: self.load_ta_plugin = self._add_button( @@ -1750,4 +1825,3 @@ class TurtleArtActivity(activity.Activity): elif self.activity_toolbar_button.is_expanded(): return True return False - diff --git a/turtleblocks.py b/turtleblocks.py index 051d447..3483169 100755 --- a/turtleblocks.py +++ b/turtleblocks.py @@ -428,11 +428,22 @@ return %s(self)" % (p, P, P) self._do_load_plugin_cb) MenuBuilder.make_menu_item(menu, _('Save'), self._do_save_cb) MenuBuilder.make_menu_item(menu, _('Save as'), self._do_save_as_cb) - MenuBuilder.make_menu_item(menu, _('Save as image'), + + # export submenu + export_submenu = gtk.Menu() + export_menu = MenuBuilder.make_sub_menu(export_submenu, _('Export as')) + menu.append(export_menu) + + MenuBuilder.make_menu_item(export_submenu, _('image'), self._do_save_picture_cb) - MenuBuilder.make_menu_item(menu, _('Save as Logo'), + MenuBuilder.make_menu_item(export_submenu, _('icon'), + self._do_save_as_icon_cb) + # TRANS: ODP is Open Office presentation + MenuBuilder.make_menu_item(export_submenu, _('ODP'), + self._do_save_as_odp_cb) + MenuBuilder.make_menu_item(export_submenu, _('Logo'), self._do_save_logo_cb) - MenuBuilder.make_menu_item(menu, _('Save as Python'), + MenuBuilder.make_menu_item(export_submenu, _('Python'), self._do_save_python_cb) MenuBuilder.make_menu_item(menu, _('Quit'), self._quit_ta) activity_menu = MenuBuilder.make_sub_menu(menu, _('File')) @@ -517,7 +528,8 @@ return %s(self)" % (p, P, P) elif resp == gtk.RESPONSE_CANCEL: return - self.client.set_int(self._ORIENTATION, self.tw.orientation) + if hasattr(self, 'client'): + self.client.set_int(self._ORIENTATION, self.tw.orientation) for plugin in self.tw.turtleart_plugins: if hasattr(plugin, 'quit'): @@ -631,6 +643,15 @@ Would you like to save before quitting?')) ''' Callback for save canvas. ''' self.tw.save_as_image() + def _do_save_as_icon_cb(self, widget): + ''' Callback for save canvas. ''' + self.tw.write_svg_operation() + self.tw.save_as_icon() + + def _do_save_as_odp_cb(self, widget): + ''' Callback for save canvas. ''' + self.tw.save_as_odp() + def _do_save_logo_cb(self, widget): ''' Callback for save project to Logo. ''' logocode = save_logo(self.tw) @@ -719,7 +740,9 @@ Would you like to save before quitting?')) default_values['arc'] = [90, 100] default_values['setpensize'] = [5] self.tw.turtles.get_active_turtle().set_pen_size(5) - self.client.set_int(self._COORDINATE_SCALE, int(self.tw.coord_scale)) + if hasattr(self, 'client'): + self.client.set_int(self._COORDINATE_SCALE, + int(self.tw.coord_scale)) def _do_toggle_hover_help_cb(self, button): ''' Toggle hover help on/off ''' |