Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter@sugarlabs.org>2014-01-17 20:43:26 (GMT)
committer Walter Bender <walter@sugarlabs.org>2014-01-17 20:43:26 (GMT)
commitc0ecec9cf16c077449516c5902ce1b42f47e14b9 (patch)
tree04c8b888383272818e14bbb47f1dffbbac896bef
parent5fa20d9630c990f77aacb95222f7ea8d6386dc07 (diff)
resync with 196
-rw-r--r--TurtleArtActivity.py78
-rwxr-xr-xturtleblocks.py33
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 '''