diff options
author | Marion <marion.zepf@gmail.com> | 2013-08-31 16:34:31 (GMT) |
---|---|---|
committer | Marion <marion.zepf@gmail.com> | 2013-08-31 16:34:31 (GMT) |
commit | 8076e1880999823d3c5df393431a419b3f9780c2 (patch) | |
tree | 2f86165e21b50020b052324c5d8cc117895cae5e /turtleblocks.py | |
parent | d2d0d6a2b5c2e5b2d89eba2044159635ba951a94 (diff) | |
parent | 624c945534e6a4d1a30d1c6fcfc621b3b27995ab (diff) |
Merge remote-tracking branch 'mainline/master' into type-system
Diffstat (limited to 'turtleblocks.py')
-rwxr-xr-x | turtleblocks.py | 65 |
1 files changed, 51 insertions, 14 deletions
diff --git a/turtleblocks.py b/turtleblocks.py index 368c14d..ab5e3db 100755 --- a/turtleblocks.py +++ b/turtleblocks.py @@ -55,6 +55,7 @@ from TurtleArt.taconstants import (OVERLAY_LAYER, DEFAULT_TURTLE_COLORS, TAB_LAYER, SUFFIX) from TurtleArt.taprimitive import PyExportError 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 @@ -70,8 +71,10 @@ class TurtleMain(): _ICON_SUBPATH = 'images/turtle.png' _GNOME_PLUGIN_SUBPATH = 'gnome_plugins' _HOVER_HELP = '/desktop/sugar/activities/turtleart/hoverhelp' + _COORDINATE_SCALE = '/desktop/sugar/activities/turtleart/coordinatescale' def __init__(self): + self._setting_gconf_overrides = False self._abspath = os.path.abspath('.') self._execdirname = self._get_execution_dir() if self._execdirname is not None: @@ -189,6 +192,7 @@ return %s(self)" % (p, P, P) else: self.win.get_window().set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH)) gobject.idle_add(self._project_loader, self._ta_file) + self._set_gconf_overrides() gtk.main() def _project_loader(self, file_name): @@ -218,16 +222,34 @@ return %s(self)" % (p, P, P) cr = cairo.Context(img_surface) surface = cr.get_target() self.turtle_canvas = surface.create_similar( - cairo.CONTENT_COLOR, max(1024, gtk.gdk.screen_width() * 2), - max(768, gtk.gdk.screen_height() * 2)) + cairo.CONTENT_COLOR, + # max(1024, gtk.gdk.screen_width() * 2), + # max(768, gtk.gdk.screen_height() * 2)) + gtk.gdk.screen_width() * 2, + gtk.gdk.screen_height() * 2) self.tw = TurtleArtWindow(self.canvas, self._execdirname, turtle_canvas=self.turtle_canvas, activity=self, running_sugar=False) self.tw.save_folder = self._abspath # os.path.expanduser('~') - if hasattr(self, 'client') and \ - self.client.get_int(self._HOVER_HELP) == 1: - self.hover.set_active(False) - self._do_hover_help_off_cb(None) + + if hasattr(self, 'client'): + if self.client.get_int(self._HOVER_HELP) == 1: + self.hover.set_active(False) + self._do_hover_help_off_cb(None) + if not self.client.get_int(self._COORDINATE_SCALE) in [0, 1]: + self.tw.coord_scale = 1 + else: + self.tw.coord_scale = 0 + + def _set_gconf_overrides(self): + if self.tw.coord_scale == 0: + self.tw.coord_scale = 1 + else: + self._do_rescale_cb(None) + if self.tw.coord_scale != 1: + self._setting_gconf_overrides = True + self.coords.set_active(True) + self._setting_gconf_overrides = False def _init_vars(self): ''' If we are invoked to start a project from Gnome, we should make @@ -397,8 +419,9 @@ return %s(self)" % (p, P, P) self._do_cartesian_cb) MenuBuilder.make_menu_item(menu, _('Polar coordinates'), self._do_polar_cb) - MenuBuilder.make_menu_item(menu, _('Rescale coordinates'), - self._do_rescale_cb) + self.coords = MenuBuilder.make_checkmenu_item( + menu, _('Rescale coordinates'), + self._do_rescale_cb, status=False) MenuBuilder.make_menu_item(menu, _('Grow blocks'), self._do_resize_cb, 1.5) MenuBuilder.make_menu_item(menu, _('Shrink blocks'), @@ -585,19 +608,31 @@ Would you like to save before quitting?')) def _do_rescale_cb(self, button): ''' Callback to rescale coordinate space. ''' + if self._setting_gconf_overrides: + return if self.tw.coord_scale == 1: - self.tw.coord_scale = self.tw.height / 200 - self.tw.eraser_button() + self.tw.coord_scale = self.tw.height / 40 + self.tw.update_overlay_position() if self.tw.cartesian is True: self.tw.overlay_shapes['Cartesian_labeled'].hide() self.tw.overlay_shapes['Cartesian'].set_layer(OVERLAY_LAYER) + default_values['forward'] = [10] + default_values['back'] = [10] + default_values['arc'] = [90, 10] + default_values['setpensize'] = [1] + self.tw.turtles.get_active_turtle().set_pen_size(1) else: self.tw.coord_scale = 1 - self.tw.eraser_button() if self.tw.cartesian is True: self.tw.overlay_shapes['Cartesian'].hide() self.tw.overlay_shapes['Cartesian_labeled'].set_layer( OVERLAY_LAYER) + default_values['forward'] = [100] + default_values['back'] = [100] + 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)) def _do_toggle_hover_help_cb(self, button): ''' Toggle hover help on/off ''' @@ -611,7 +646,8 @@ Would you like to save before quitting?')) ''' Turn hover help on ''' self.tw.no_help = False self.hover.set_active(True) - self.client.set_int(self._HOVER_HELP, 0) + if hasattr(self, 'client'): + self.client.set_int(self._HOVER_HELP, 0) def _do_hover_help_off_cb(self, button): ''' Turn hover help off ''' @@ -620,7 +656,8 @@ Would you like to save before quitting?')) if self.tw.status_spr is not None: self.tw.status_spr.hide() self.hover.set_active(False) - self.client.set_int(self._HOVER_HELP, 1) + if hasattr(self, 'client'): + self.client.set_int(self._HOVER_HELP, 1) def _do_palette_cb(self, widget): ''' Callback to show/hide palette of blocks. ''' @@ -849,7 +886,7 @@ Would you like to save before quitting?')) if os.path.exists(file_path): self.tw.load_files(file_path) break - self.tw.load_save_folder = os.path.join(activity.get_bundle_path(), + self.tw.load_save_folder = os.path.join(self._get_execution_dir(), 'samples') def _fill_samples_list(self, store): |