Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/turtleblocks.py
diff options
context:
space:
mode:
authorMarion <marion.zepf@gmail.com>2013-08-31 16:34:31 (GMT)
committer Marion <marion.zepf@gmail.com>2013-08-31 16:34:31 (GMT)
commit8076e1880999823d3c5df393431a419b3f9780c2 (patch)
tree2f86165e21b50020b052324c5d8cc117895cae5e /turtleblocks.py
parentd2d0d6a2b5c2e5b2d89eba2044159635ba951a94 (diff)
parent624c945534e6a4d1a30d1c6fcfc621b3b27995ab (diff)
Merge remote-tracking branch 'mainline/master' into type-system
Diffstat (limited to 'turtleblocks.py')
-rwxr-xr-xturtleblocks.py65
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):