Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS12
-rw-r--r--TurtleArt/tabasics.py2
-rw-r--r--TurtleArt/talogo.py2
-rw-r--r--TurtleArt/tawindow.py11
-rw-r--r--TurtleArtActivity.py78
-rw-r--r--activity/activity.info2
-rwxr-xr-xturtleblocks.py7
-rw-r--r--util/codegen.py8
8 files changed, 77 insertions, 45 deletions
diff --git a/NEWS b/NEWS
index 6cdac1e..2686bd1 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,16 @@
+195
+
+ENHANCEMENTS:
+* New translations
+
+BUG FIX:
+* Added missing parens for some binary operations in Python export
+* Fixed positioning of help messages (#4679)
+
194
ENHANCEMENTS:
+* Added URL block (Scimonster)
* Save/restore palette settings in GConf
* Add confirmation when emptying trash in GNONE version (Alan Aguiar)
* Add load/save plugin dialog to GNOME version (Daniel Francis)
@@ -10,7 +20,7 @@ ENHANCEMENTS:
* Enabled load file to heap/save heap to file to use the Sugar journal
* New translations
-BUG FIX:
+BUG FIXES:
* Fixed shade block dock settings (Alan Aguiar)
* Fixed bug in empty trash (Alan Aguiar)
* Set active turtle after 'clean' in exported Python code
diff --git a/TurtleArt/tabasics.py b/TurtleArt/tabasics.py
index d66345b..a7dbd5b 100644
--- a/TurtleArt/tabasics.py
+++ b/TurtleArt/tabasics.py
@@ -196,8 +196,8 @@ turtle'))
Primitive(self.tw.lc.reset_scale),
Primitive(self.tw.lc.reset_timer),
Primitive(self.tw.lc.clear_value_blocks),
- Primitive(self.tw.lc.reset_internals),
Primitive(self.tw.canvas.clearscreen),
+ Primitive(self.tw.lc.reset_internals),
Primitive(self.tw.turtles.reset_turtles),
Primitive(self.tw.lc.active_turtle)
])]))
diff --git a/TurtleArt/talogo.py b/TurtleArt/talogo.py
index 5792043..ec6e7e7 100644
--- a/TurtleArt/talogo.py
+++ b/TurtleArt/talogo.py
@@ -675,9 +675,9 @@ class LogoCode:
self.reset_scale()
self.reset_timer()
self.clear_value_blocks()
- self.reset_internals()
self.tw.canvas.clearscreen()
self.tw.turtles.reset_turtles()
+ self.reset_internals()
def stop_playing_media(self):
if self.tw.gst_available:
diff --git a/TurtleArt/tawindow.py b/TurtleArt/tawindow.py
index d8bdb6d..3ed93c0 100644
--- a/TurtleArt/tawindow.py
+++ b/TurtleArt/tawindow.py
@@ -4610,13 +4610,20 @@ before making changes to your program'))
self.status_spr.move((PALETTE_WIDTH, self.height - 400))
else:
# Adjust vertical position based on scrolled window adjustment
+ offset_from_bottom = 60
if self.running_sugar:
+ if self.activity.toolbox.get_property("visible"):
+ if self.activity.toolbars_expanded():
+ offset_from_bottom += 110
+ else:
+ offset_from_bottom += 60
self.status_spr.move(
(0,
- self.height - 200 +
+ self.height - offset_from_bottom +
self.activity.sw.get_vadjustment().get_value()))
elif self.interactive_mode:
- self.status_spr.move((0, self.height - 100))
+ self.status_spr.move(
+ (0, self.activity.win.get_window().get_size()[1] - 80))
def calc_position(self, template):
''' Relative placement of portfolio objects (deprecated) '''
diff --git a/TurtleArtActivity.py b/TurtleArtActivity.py
index 0cc907c..9dca296 100644
--- a/TurtleArtActivity.py
+++ b/TurtleArtActivity.py
@@ -198,31 +198,31 @@ class TurtleArtActivity(activity.Activity):
# scrolling window
self._setup_palette_toolbar()
- if self.samples_button in self._toolbox.toolbar:
- self._toolbox.toolbar.remove(self.extras_separator)
- self._toolbox.toolbar.remove(self.samples_button)
- self._toolbox.toolbar.remove(self.stop_separator)
- self._toolbox.toolbar.remove(self.stop_button)
+ if self.samples_button in self.toolbox.toolbar:
+ self.toolbox.toolbar.remove(self.extras_separator)
+ self.toolbox.toolbar.remove(self.samples_button)
+ self.toolbox.toolbar.remove(self.stop_separator)
+ self.toolbox.toolbar.remove(self.stop_button)
self._view_toolbar.remove(self._coordinates_toolitem)
if gtk.gdk.screen_width() / 14 < style.GRID_CELL_SIZE:
self.samples_button2.show()
self.samples_label2.show()
- self._toolbox.toolbar.insert(self.stop_button, -1)
+ self.toolbox.toolbar.insert(self.stop_button, -1)
else:
self.samples_button2.hide()
self.samples_label2.hide()
- self._toolbox.toolbar.insert(self.extras_separator, -1)
+ self.toolbox.toolbar.insert(self.extras_separator, -1)
self.extras_separator.props.draw = True
self.extras_separator.show()
- self._toolbox.toolbar.insert(self.samples_button, -1)
+ self.toolbox.toolbar.insert(self.samples_button, -1)
self.samples_button.show()
- self._toolbox.toolbar.insert(self.stop_separator, -1)
+ self.toolbox.toolbar.insert(self.stop_separator, -1)
self.stop_separator.show()
- self._toolbox.toolbar.insert(self.stop_button, -1)
+ self.toolbox.toolbar.insert(self.stop_button, -1)
self._view_toolbar.insert(self._coordinates_toolitem, -1)
- self._toolbox.show_all()
+ self.toolbox.show_all()
# Activity toolbar callbacks
def do_save_as_logo_cb(self, button):
@@ -728,7 +728,7 @@ class TurtleArtActivity(activity.Activity):
self.max_participants = 4
self._setup_toolbar_help()
- self._toolbox = ToolbarBox()
+ self.toolbox = ToolbarBox()
self.activity_toolbar_button = ActivityToolbarButton(self)
@@ -750,27 +750,27 @@ class TurtleArtActivity(activity.Activity):
self._make_load_save_buttons(self.activity_toolbar_button)
self.activity_toolbar_button.show()
- self._toolbox.toolbar.insert(self.activity_toolbar_button, -1)
+ self.toolbox.toolbar.insert(self.activity_toolbar_button, -1)
self.edit_toolbar_button.show()
- self._toolbox.toolbar.insert(self.edit_toolbar_button, -1)
+ self.toolbox.toolbar.insert(self.edit_toolbar_button, -1)
self.view_toolbar_button.show()
- self._toolbox.toolbar.insert(self.view_toolbar_button, -1)
+ self.toolbox.toolbar.insert(self.view_toolbar_button, -1)
self.palette_toolbar_button.show()
- self._toolbox.toolbar.insert(self.palette_toolbar_button, -1)
+ self.toolbox.toolbar.insert(self.palette_toolbar_button, -1)
- self.set_toolbar_box(self._toolbox)
+ self.set_toolbar_box(self.toolbox)
else:
- self._toolbox = activity.ActivityToolbox(self)
- self.set_toolbox(self._toolbox)
+ self.toolbox = activity.ActivityToolbox(self)
+ self.set_toolbox(self.toolbox)
self._project_toolbar = gtk.Toolbar()
- self._toolbox.add_toolbar(_('Project'), self._project_toolbar)
+ self.toolbox.add_toolbar(_('Project'), self._project_toolbar)
self._view_toolbar = gtk.Toolbar()
- self._toolbox.add_toolbar(_('View'), self._view_toolbar)
+ self.toolbox.add_toolbar(_('View'), self._view_toolbar)
edit_toolbar = gtk.Toolbar()
- self._toolbox.add_toolbar(_('Edit'), edit_toolbar)
+ self.toolbox.add_toolbar(_('Edit'), edit_toolbar)
journal_toolbar = gtk.Toolbar()
- self._toolbox.add_toolbar(_('Save/Load'), journal_toolbar)
+ self.toolbox.add_toolbar(_('Save/Load'), journal_toolbar)
self._make_palette_buttons(self._project_toolbar,
palette_button=True)
@@ -822,14 +822,14 @@ class TurtleArtActivity(activity.Activity):
edit_toolbar.show()
self._view_toolbar.show()
- self._toolbox.show()
+ self.toolbox.show()
if self.has_toolbarbox:
self.edit_toolbar_button.set_expanded(True)
self.edit_toolbar_button.set_expanded(False)
self.palette_toolbar_button.set_expanded(True)
else:
- self._toolbox.set_current_toolbar(1)
+ self.toolbox.set_current_toolbar(1)
def _setup_extra_controls(self):
''' Add the rest of the buttons to the main toolbar '''
@@ -842,24 +842,24 @@ class TurtleArtActivity(activity.Activity):
self._make_project_buttons(self._project_toolbar)
return
- self._make_project_buttons(self._toolbox.toolbar)
+ self._make_project_buttons(self.toolbox.toolbar)
self.extras_separator = self._add_separator(
- self._toolbox.toolbar, expand=False, visible=True)
+ self.toolbox.toolbar, expand=False, visible=True)
self.samples_button = self._add_button(
'ta-open', _('Load example'), self.do_samples_cb,
- self._toolbox.toolbar)
+ self.toolbox.toolbar)
- self._toolbox.toolbar.insert(self._help_button, -1)
+ self.toolbox.toolbar.insert(self._help_button, -1)
self._help_button.show()
self.stop_separator = self._add_separator(
- self._toolbox.toolbar, expand=True, visible=False)
+ self.toolbox.toolbar, expand=True, visible=False)
self.stop_button = StopButton(self)
self.stop_button.props.accelerator = '<Ctrl>Q'
- self._toolbox.toolbar.insert(self.stop_button, -1)
+ self.toolbox.toolbar.insert(self.stop_button, -1)
self.stop_button.show()
def _setup_toolbar_help(self):
@@ -909,7 +909,7 @@ class TurtleArtActivity(activity.Activity):
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')
- add_paragraph(help_box, _('Load project'), icon='load-from-journal')
+ add_paragraph(help_box, _('Add project'), icon='load-from-journal')
home = os.environ['HOME']
if activity.get_bundle_path()[0:len(home)] == home:
add_paragraph(help_box, _('Load plugin'), icon='pluginoff')
@@ -1125,7 +1125,7 @@ class TurtleArtActivity(activity.Activity):
'load-from-journal', _('Open'),
self.do_load_ta_project_cb, True, button_box)
self.load_ta_project, label = self._add_button_and_label(
- 'load-from-journal', _('Load project'),
+ 'load-from-journal', _('Add project'),
self.do_load_ta_project_cb, False, button_box)
# Only enable plugin loading if installed in $HOME
if activity.get_bundle_path()[0:len(home)] == home:
@@ -1759,3 +1759,15 @@ class TurtleArtActivity(activity.Activity):
'samples', 'thumbnails', '*.png'))
samples.sort()
return samples
+
+ def is_toolbar_expanded(self):
+ if self.palette_toolbar_button.is_expanded():
+ return True
+ elif self.edit_toolbar_button.is_expanded():
+ return True
+ elif self.view_toolbar_button.is_expanded():
+ return True
+ elif self.activity_toolbar_button.is_expanded():
+ return True
+ return False
+
diff --git a/activity/activity.info b/activity/activity.info
index 8cfe489..c023728 100644
--- a/activity/activity.info
+++ b/activity/activity.info
@@ -1,6 +1,6 @@
[Activity]
name = TurtleBlocks
-activity_version = 194
+activity_version = 195
license = MIT
bundle_id = org.laptop.TurtleArtActivity
exec = sugar-activity TurtleArtActivity.TurtleArtActivity
diff --git a/turtleblocks.py b/turtleblocks.py
index 051d447..01ddbd3 100755
--- a/turtleblocks.py
+++ b/turtleblocks.py
@@ -517,7 +517,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'):
@@ -719,7 +720,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 '''
diff --git a/util/codegen.py b/util/codegen.py
index 451cf74..babada1 100644
--- a/util/codegen.py
+++ b/util/codegen.py
@@ -448,13 +448,13 @@ class SourceGenerator(NodeVisitor):
def visit_BinOp(self, node):
op = self.BINOP_SYMBOLS[node.op]
- if op in ['+', '-']:
- self.write('(')
+ # if op in ['+', '-']:
+ self.write('(')
self.visit(node.left)
self.write(' %s ' % op)
self.visit(node.right)
- if op in ['+', '-']:
- self.write(')')
+ # if op in ['+', '-']:
+ self.write(')')
def visit_BoolOp(self, node):
self.write('(')