From 22b1af75535c78e9f67556a6fa7027cf60b5b019 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Fri, 17 Jan 2014 17:40:23 +0000 Subject: fix labeling problems with action and box blocks --- diff --git a/TurtleArt/tablock.py b/TurtleArt/tablock.py index 81bdd2a..5f3315a 100644 --- a/TurtleArt/tablock.py +++ b/TurtleArt/tablock.py @@ -371,11 +371,11 @@ class Block: return dx = (self.spr.label_width() - self.spr.label_safe_width()) / \ self.scale - if self.dx + dx >= self.block_list.max_width and \ - self.name == 'string': + if self.dx + dx >= self.block_list.max_width and self.name == 'string': self.dx = self.block_list.max_width self.refresh() - self._set_labels(0, self.spr.labels[0]) + for i, label in enumerate(self.spr.labels): + self._set_labels(i, label) elif dx != 0: self.dx += dx if self.dx < 0: @@ -640,7 +640,7 @@ class Block: else: n = 0 if self.name in block_names: - n = len(block_names[self.name]) + n = len(self.spr.labels) elif self.name not in BLOCKS_WITH_SKIN: debug_output('WARNING: unknown block name %s' % (self.name)) for i in range(n): diff --git a/TurtleArt/tacanvas.py b/TurtleArt/tacanvas.py index c12e2c7..e5e0c0a 100644 --- a/TurtleArt/tacanvas.py +++ b/TurtleArt/tacanvas.py @@ -310,12 +310,14 @@ class TurtleGraphics: def draw_text(self, label, x, y, size, width, heading, scale): ''' Draw text ''' - def _draw_text(cr, label, x, y, size, width, scale, heading, rgb): + def _draw_text(cr, label, x, y, size, width, scale, heading, rgb, + wrap=False): import textwrap final_scale = int(size * scale) * pango.SCALE label = str(label) - label = '\n'.join(textwrap.wrap(label, int(width / scale))) + if wrap: + label = '\n'.join(textwrap.wrap(label, int(width / scale))) cc = pangocairo.CairoContext(cr) pl = cc.create_layout() @@ -343,7 +345,7 @@ class TurtleGraphics: self.inval() if self.cr_svg is not None: # and self.pendown: _draw_text(self.cr_svg, label, x, y, size, width, scale, heading, - self._fgrgb) + self._fgrgb, wrap=True) def set_source_rgb(self): r = self._fgrgb[0] / 255. diff --git a/TurtleArt/tawindow.py b/TurtleArt/tawindow.py index 4edf593..fe006a7 100644 --- a/TurtleArt/tawindow.py +++ b/TurtleArt/tawindow.py @@ -1574,16 +1574,22 @@ before making changes to your program')) def _unselect_all_blocks(self): # Unselect things that may have been selected earlier if self.selected_blk is not None: + label_with_no_returns = \ + self.selected_blk.spr.labels[0].replace(RETURN, ' ') if self._action_name(self.selected_blk, hat=True): + self.selected_blk.values[0] = label_with_no_returns + self.selected_blk.spr.labels[0] = label_with_no_returns if self.selected_blk.values[0] == _('action'): - self._new_stack_block(self.selected_blk.spr.labels[0]) - self._update_action_names(self.selected_blk.spr.labels[0]) + self._new_stack_block(label_with_no_returns) + self._update_action_names(label_with_no_returns) elif self._box_name(self.selected_blk, storein=True): + self.selected_blk.values[0] = label_with_no_returns + self.selected_blk.spr.labels[0] = label_with_no_returns if self.selected_blk.values[0] == _('my box'): - self._new_storein_block(self.selected_blk.spr.labels[0]) - self._new_box_block(self.selected_blk.spr.labels[0]) - self._update_storein_names(self.selected_blk.spr.labels[0]) - self._update_box_names(self.selected_blk.spr.labels[0]) + self._new_storein_block(label_with_no_returns) + self._new_box_block(label_with_no_returns) + self._update_storein_names(label_with_no_returns) + self._update_box_names(label_with_no_returns) # Un-highlight any blocks in the stack grp = find_group(self.selected_blk) for blk in grp: @@ -2338,16 +2344,23 @@ before making changes to your program')) if self._text_to_check: self._test_string() self._text_to_check = False + + label_with_no_returns = \ + self.selected_blk.spr.labels[0].replace(RETURN, ' ') if self._action_name(self.selected_blk, hat=True): + self.selected_blk.spr.labels[0] = label_with_no_returns + self.selected_blk.values[0] = label_with_no_returns if self._saved_action_name == _('action'): - self._new_stack_block(self.selected_blk.spr.labels[0]) - self._update_action_names(self.selected_blk.spr.labels[0]) + self._new_stack_block(label_with_no_returns) + self._update_action_names(label_with_no_returns) elif self._box_name(self.selected_blk, storein=True): + self.selected_blk.spr.labels[0] = label_with_no_returns + self.selected_blk.values[0] = label_with_no_returns if self._saved_box_name == _('my box'): - self._new_storein_block(self.selected_blk.spr.labels[0]) - self._new_box_block(self.selected_blk.spr.labels[0]) - self._update_storein_names(self.selected_blk.spr.labels[0]) - self._update_box_names(self.selected_blk.spr.labels[0]) + self._new_storein_block(label_with_no_returns) + self._new_box_block(label_with_no_returns) + self._update_storein_names(label_with_no_returns) + self._update_box_names(label_with_no_returns) self.selected_blk.unhighlight() self.selected_blk = None @@ -2993,7 +3006,7 @@ before making changes to your program')) if blk.name == 'string': count = self._saved_string.count(RETURN) self._text_buffer.set_text( - self._saved_string.replace(RETURN, '\12')) + self._saved_string.replace(RETURN, '\n')) h = blk.spr.label_safe_height() * (count + 1) else: self._text_buffer.set_text(self._saved_string) @@ -3925,7 +3938,7 @@ before making changes to your program')) def _insert_text_cb(self, textbuffer, textiter, text, length): self._text_to_check = True - if '\12' in text: + if '\n' in text: self._unselect_block() def _test_string(self): @@ -3935,9 +3948,9 @@ before making changes to your program')) self._hide_text_entry() else: text = self.selected_blk.spr.labels[0] - self.selected_blk.spr.set_label(text.replace('\12', RETURN)) + self.selected_blk.spr.set_label(text.replace('\n', RETURN)) self.selected_blk.resize() - self.selected_blk.values[0] = text.replace(RETURN, '\12') + self.selected_blk.values[0] = text.replace(RETURN, '\n') self._saved_string = self.selected_blk.values[0] def load_python_code_from_file(self, fname=None, add_new_block=True): -- cgit v0.9.1