From b98a33bb8136c2de6b570491ad82f529696157f1 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Thu, 25 Feb 2010 14:24:13 +0000 Subject: autoload description blocks --- diff --git a/tablock.py b/tablock.py index d01bb6d..3f4478b 100644 --- a/tablock.py +++ b/tablock.py @@ -237,7 +237,8 @@ class Block: self._set_margins() self._set_label_attributes() - if self.name in CONTENT_BLOCKS and len(self.values) > 0: + if (self.name == 'number' or self.name == 'string') and\ + len(self.values) > 0: for i, v in enumerate(self.values): if v is not None: self._set_labels(i, str(v)) diff --git a/tacanvas.py b/tacanvas.py index 4d8a8f2..e222333 100644 --- a/tacanvas.py +++ b/tacanvas.py @@ -22,9 +22,10 @@ import gtk from math import sin, cos, pi from sprites import Sprite +# from tasprite_factory import SVG import pango -from taconstants import * +from taconstants import CANVAS_LAYER, DEFAULT_TURTLE def wrap100(n): n = int(n) @@ -77,6 +78,11 @@ class TurtleGraphics: self.gc = self.canvas.images[0].new_gc() self.tw.active_turtle.show() self.shade = 0 + """ + self.svg = SVG() + self.svg.set_fill_color('none') + self.svgstr = '' + """ self.clearscreen() def clearscreen(self): @@ -99,7 +105,11 @@ class TurtleGraphics: self.xcor, self.ycor, self.heading = 0, 0, 0 self.move_turtle() self.turn_turtle() - self.set_turtle(1) # default turtle has key 1 + self.set_turtle(DEFAULT_TURTLE) + """ + print self.svgstr + self.svgstr = '' + """ def forward(self, n): n *= self.tw.coord_scale @@ -113,6 +123,11 @@ class TurtleGraphics: if self.pendown: self.draw_line(oldx, oldy, self.xcor, self.ycor) self.move_turtle() + """ + self.svgstr += self.svg.new_path(oldx, oldy) + self.svgstr += self.svg.line_to(self.xcor, self.ycor) + self.svgstr += self.svg.style() + """ def seth(self, n): try: @@ -198,6 +213,9 @@ class TurtleGraphics: self.tw.active_turtle.set_pen_size(ps) self.gc.set_line_attributes(int(self.pensize*self.tw.coord_scale), gtk.gdk.LINE_SOLID, gtk.gdk.CAP_ROUND, gtk.gdk.JOIN_MITER) + """ + self.svg.set_stroke_width(self.pensize) + """ def setcolor(self,c): try: @@ -239,6 +257,9 @@ class TurtleGraphics: self.canvas.images[0].draw_rectangle(self.gc, True, *rect) self.invalt(0,0,self.width,self.height) self.setcolor(oldc); self.setshade(olds) + """ + self.svgstr = '' + """ def set_fgcolor(self): sh = (wrap100(self.shade)-50)/50.0 @@ -247,6 +268,11 @@ class TurtleGraphics: r,g,b = calc_shade(r,sh),calc_shade(g,sh),calc_shade(b,sh) self.tw.rgb = [r>>8,g>>8,b>>8] self.tw.fgcolor = self.tw.cm.alloc_color(r,g,b) + """ + self.svg.set_stroke_color("#%02x%02x%02x" % (self.tw.rgb[0], + self.tw.rgb[1], + self.tw.rgb[2])) + """ def set_textcolor(self): sh = (wrap100(self.shade)-50)/50.0 diff --git a/taconstants.py b/taconstants.py index b9cb8e7..38ccd77 100644 --- a/taconstants.py +++ b/taconstants.py @@ -873,7 +873,7 @@ MACROS = { [5, 'show', 0, 0, [2, 6, 7]], [6, ['string',_('Title')], 0, 0, [5, None]], [7, 'setscale', 0, 0, [5, 8, 9]], - [8, ['number', '45'], 0, 0, [7, None]], + [8, ['number', '35'], 0, 0, [7, None]], [9, 'setxy', 0, 0, [7, 10, 11, 12]], [10, 'leftx', 0, 0, [9, None]], [11, 'topy', 0, 0, [9, None]], @@ -904,22 +904,22 @@ MACROS = { [5, 'show', 0, 0, [2, 6, 7]], [6, ['string',_('Title')], 0, 0, [5, None]], [7, 'setscale', 0, 0, [5, 8, 9]], - [8, ['number', '45'], 0, 0, [7, None]], + [8, ['number', '35'], 0, 0, [7, None]], [9, 'setxy', 0, 0, [7, 10, 11, 12]], [10, 'leftx', 0, 0, [9, None]], [11, 'topy', 0, 0, [9, None]], [12, 'showaligned', 0, 0, [9, 13, 14]], [13, 'journal', 0, 0, [12, None]], [14, 'setxy', 0, 0, [12, 15, 16, 17]], - [15, 'rightx', 0, 0, [14, None]], - [16, 'topy', 0, 0, [14, None]], + [15, 'leftx', 0, 0, [14, None]], + [16, 'bottomy', 0, 0, [14, None]], [17, 'showaligned', 0, 0, [14, 18, 19]], - [18, 'journal', 0, 0, [17, None]], + [18, 'description', 0, 0, [17, None]], [19, 'setxy', 0, 0, [17, 20, 21, 22]], - [20, 'leftx', 0, 0, [19, None]], - [21, 'bottomy', 0, 0, [19, None]], + [20, 'rightx', 0, 0, [19, None]], + [21, 'topy', 0, 0, [19, None]], [22, 'showaligned', 0, 0, [19, 23, 24]], - [23, 'description', 0, 0, [22, None]], + [23, 'journal', 0, 0, [22, None]], [24, 'setxy', 0, 0, [22, 25, 26, 27]], [25, 'rightx', 0, 0, [24, None]], [26, 'bottomy', 0, 0, [24, None]], @@ -935,7 +935,7 @@ MACROS = { [5, 'show', 0, 0, [2, 6, 7]], [6, ['string',_('Title')], 0, 0, [5, None]], [7, 'setscale', 0, 0, [5, 8, 9]], - [8, ['number', '45'], 0, 0, [7, None]], + [8, ['number', '35'], 0, 0, [7, None]], [9, 'setxy', 0, 0, [7, 10, 11, 12]], [10, 'leftx', 0, 0, [9, None]], [11, 'topy', 0, 0, [9, None]], diff --git a/tasprite_factory.py b/tasprite_factory.py index 07ff23f..e7a0e44 100755 --- a/tasprite_factory.py +++ b/tasprite_factory.py @@ -78,7 +78,7 @@ class SVG: (x, y) = self._calculate_x_y() self.margins[2] = 0 self.margins[3] = 0 - svg = self._new_path(x, y) + svg = self.new_path(x, y) svg += self._corner(1, -1) svg += self._do_slot() svg += self._rline_to(self._expand_x, 0) @@ -93,7 +93,7 @@ class SVG: svg += self._rline_to(0, 2*self._innie_y2+self._innie_spacer) svg += self._rline_to(0, self._expand_y) svg += self._corner(-1, 1) - svg += self._line_to(xx, self._y) + svg += self.line_to(xx, self._y) svg += self._rline_to(-self._expand_x, 0) if self._tab: svg += self._do_tab() @@ -102,12 +102,12 @@ class SVG: svg += self._corner(-1, -1) svg += self._rline_to(0, -self._expand_y) if True in self._innie: - svg += self._line_to(x, self._radius+self._innie_y2+\ + svg += self.line_to(x, self._radius+self._innie_y2+\ self._stroke_width/2.0) svg += self._do_outie() self._calculate_w_h() svg += self._close_path() - svg += self._style() + svg += self.style() if self._show is True: svg += self._show_dot() if self._hide is True: @@ -120,7 +120,7 @@ class SVG: (x, y) = self._calculate_x_y() self.margins[2] = 0 self.margins[3] = 0 - svg = self._new_path(x, y) + svg = self.new_path(x, y) svg += self._corner(1, -1) svg += self._do_slot() xx = self._x @@ -154,7 +154,7 @@ class SVG: svg += self._inverse_corner(-1, 1, 90, 0, 0, True, False) svg += self._rline_to(0, self._expand_y) svg += self._corner(-1, 1, 90, 0, 1, False, True) - svg += self._line_to(xx, self._y) + svg += self.line_to(xx, self._y) if self._tab: svg += self._do_tab() else: @@ -162,11 +162,11 @@ class SVG: svg += self._corner(-1, -1) svg += self._rline_to(0, -self._expand_y) if True in self._innie: - svg += self._line_to(x, self._radius+self._innie_y2+\ + svg += self.line_to(x, self._radius+self._innie_y2+\ self._stroke_width) svg += self._close_path() self._calculate_w_h() - svg += self._style() + svg += self.style() if self._hide is True: svg += self._hide_dot() if self._show is True: @@ -181,7 +181,7 @@ class SVG: self.margins[2] = 0 self.margins[3] = 0 x += self._innie_x1+self._innie_x2 - svg = self._new_path(x, y) + svg = self.new_path(x, y) svg += self._corner(1, -1) svg += self._do_slot() xx = self._x @@ -195,7 +195,7 @@ class SVG: else: svg += self._rline_to(0, 2*self._innie_y2+self._innie_spacer) svg += self._corner(-1, 1) - svg += self._line_to(xx, self._y) + svg += self.line_to(xx, self._y) svg += self._do_tab() svg += self._corner(-1, -1) for i in range(len(self._innie)): @@ -206,7 +206,7 @@ class SVG: svg += self._rline_to(0, -2*self._innie_y2-self._innie_spacer) svg += self._close_path() self._calculate_w_h() - svg += self._style() + svg += self.style() svg += self._footer() return self._header() + svg @@ -217,16 +217,16 @@ class SVG: self.margins[1] = int((self._stroke_width+0.5)*self._scale) self.margins[2] = 0 self.margins[3] = 0 - svg = self._new_path(x, self._stroke_width/2.0) + svg = self.new_path(x, self._stroke_width/2.0) svg += self._rline_to(self._expand_x, 0) svg += self._rline_to(0, 2*self._radius+self._innie_y2+self._expand_y) svg += self._rline_to(-self._expand_x, 0) - svg += self._line_to(x, self._radius+self._innie_y2+\ + svg += self.line_to(x, self._radius+self._innie_y2+\ self._stroke_width/2.0) svg += self._do_outie() svg += self._close_path() self._calculate_w_h() - svg += self._style() + svg += self.style() svg += self._footer() return self._header() + svg @@ -245,7 +245,7 @@ class SVG: self._innie_spacer) svg += self._do_boolean() svg += self._rline_to(0,self._radius/2.0) - svg += self._line_to(xx, self._y) + svg += self.line_to(xx, self._y) svg += self._rline_to(-self._expand_x, 0) svg += self._end_boolean() self.margins[0] = int((self._radius+self._stroke_width+0.5)*self._scale) @@ -264,7 +264,7 @@ class SVG: svg += self._rline_to(0,self._radius/2.0) svg += self._do_boolean() svg += self._rline_to(0,self._radius/2.0) - svg += self._line_to(xx, self._y) + svg += self.line_to(xx, self._y) svg += self._rline_to(-self._expand_x, 0) svg += self._end_boolean() self.margins[0] = int((self._radius+self._stroke_width+0.5)*self._scale) @@ -294,7 +294,7 @@ class SVG: svg += self._rline_to(0, 2*self._innie_y2+self._innie_spacer) svg += self._do_innie() svg += self._rline_to(0, self._radius) - svg += self._line_to(xx, self._y) + svg += self.line_to(xx, self._y) svg += self._rline_to(-self._expand_x, 0) svg += self._end_boolean() self.margins[0] = int((self._radius+self._stroke_width)*self._scale) @@ -406,7 +406,7 @@ class SVG: self.margins[1] = int((self._stroke_width+0.5)*self._scale) self.margins[2] = 0 self.margins[3] = 0 - svg = self._new_path(x, y) + svg = self.new_path(x, y) svg += self._corner(1, -1) svg += self._rline_to(self._radius+self._stroke_width, 0) svg += self._do_slot() @@ -415,7 +415,7 @@ class SVG: svg += self._corner(1, 1) svg += self._do_innie() svg += self._corner(-1, 1) - svg += self._line_to(xx, self._y) + svg += self.line_to(xx, self._y) svg += self._rline_to(-self._expand_x, 0) svg += self._do_tab() if self._no_arm: @@ -427,7 +427,7 @@ class SVG: svg += self._rline_to(-self._radius, 0) svg += self._close_path() self._calculate_w_h() - svg += self._style() + svg += self.style() svg += self._footer() return self._header() + svg @@ -438,7 +438,7 @@ class SVG: self.margins[1] = int((self._stroke_width+0.5)*self._scale) self.margins[2] = 0 self.margins[3] = 0 - svg = self._new_path(x, y) + svg = self.new_path(x, y) svg += self._rline_to(self._radius, 0) svg += self._rline_to(0, self._expand_y) svg += self._inverse_corner(1, 1, 90, 0, 0) @@ -450,7 +450,7 @@ class SVG: svg += self._corner(-1, -1) svg += self._close_path() self._calculate_w_h() - svg += self._style() + svg += self.style() self._hide_x = x + self._radius/2 self._hide_y = y + self._radius/2 if self._hide is True: @@ -623,7 +623,7 @@ class SVG: else: return " \n\n" - def _style(self): + def style(self): if self._gradiant is True: fill = "url(#linearGradient5678)" else: @@ -655,7 +655,7 @@ class SVG: if self._y > self._max_y: self._max_y = self._y - def _line_to(self, x, y): + def line_to(self, x, y): if self._x == x and self._y == y: return "" else: @@ -668,11 +668,11 @@ class SVG: if dx == 0 and dy == 0: return "" else: - return self._line_to(self._x+dx, self._y+dy) + return self.line_to(self._x+dx, self._y+dy) - def _arc_to(self, x, y, r, a=90, l=0, s=1): + def arc_to(self, x, y, r, a=90, l=0, s=1): if r == 0: - return self._line_to(x, y) + return self.line_to(x, y) else: self._x = x self._y = y @@ -686,7 +686,7 @@ class SVG: else: x = self._x + sign_x*self._radius y = self._y + sign_y*self._radius - return self._arc_to(x, y, self._radius, a, l, s) + return self.arc_to(x, y, self._radius, a, l, s) def _inverse_corner(self, sign_x, sign_y, a=90, l=0, s=1, start=True, end=True): @@ -698,7 +698,7 @@ class SVG: svg_str =self._rline_to(0, sign_y*+(r2-self._stroke_width)) x = self._x + sign_x*r2 y = self._y + sign_y*r2 - svg_str += self._arc_to(x, y, r2, a, l, s) + svg_str += self.arc_to(x, y, r2, a, l, s) if end: if sign_x*sign_y == -1: svg_str +=self._rline_to(0, sign_y*(r2-self._stroke_width)) @@ -726,7 +726,7 @@ class SVG: svg_str +=self._rline_to(0, sign_y*r2) x = self._x + sign_x*r2 y = self._y + sign_y*r2 - svg_str += self._arc_to(x, y, r2, a, l, s) + svg_str += self.arc_to(x, y, r2, a, l, s) if end: if sign_x*sign_y == 1: svg_str +=self._rline_to(0, sign_y*r2) @@ -734,7 +734,7 @@ class SVG: svg_str +=self._rline_to(sign_x*r2, 0) return svg_str - def _new_path(self, x, y): + def new_path(self, x, y): self._min_x = x self._min_y = y self._max_x = x @@ -869,7 +869,7 @@ class SVG: self._corner(1, 1)) def _start_boolean(self, xoffset, yoffset): - svg = self._new_path(xoffset, yoffset) + svg = self.new_path(xoffset, yoffset) self._radius -= self._stroke_width self.docks.append((int(self._x*self._scale), int(self._y*self._scale))) svg += self._rarc_to(1, -1) @@ -893,7 +893,7 @@ class SVG: self._radius += self._stroke_width svg += self._close_path() self._calculate_w_h() - svg += self._style() + svg += self.style() return svg + self._footer() def _calculate_w_h(self): diff --git a/tawindow.py b/tawindow.py index 46644dc..1330932 100644 --- a/tawindow.py +++ b/tawindow.py @@ -1372,6 +1372,8 @@ class TurtleArtWindow(): blk.spr.labels[0] += CURSOR elif blk.name in BOX_STYLE_MEDIA: self._import_from_journal(self.selected_blk) + if blk.name == 'journal' and self.running_sugar: + self._load_description_block(blk) elif blk.name=='identity2' or blk.name=='hspace': group = self._find_group(blk) if self._hide_button_hit(blk.spr, x, y): @@ -1874,6 +1876,32 @@ class TurtleArtWindow(): self._update_media_icon(blk, fname) """ + When we load a journal block, look for a corresponding description block + """ + def _load_description_block(self, blk): + if blk == None or blk.name != 'journal' or len(blk.values) == 0 or\ + blk.connections[0] is None: + return + cblk = blk.connections[0] + dblk = self._find_blk_below(cblk, 'description') + # Only autoupdate the block if it is empty + if dblk != None and (len(dblk.values) == 0 or dblk.values[0] == None): + # Copy the dsobject id and update the icon + self._update_media_icon(dblk, None, blk.values[0]) + + """ + Find a specific block below this block. + """ + def _find_blk_below(self, blk, name): + if blk == None or len(blk.connections) == 0: + return + group = self._find_group(blk) + for b in group: + if b.name == name: + return b + return None + + """ Update the icon on a 'loaded' media block. """ def _update_media_icon(self, blk, name, value=''): -- cgit v0.9.1