Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tablock.py3
-rw-r--r--tacanvas.py30
-rw-r--r--taconstants.py18
-rwxr-xr-xtasprite_factory.py66
-rw-r--r--tawindow.py28
5 files changed, 100 insertions, 45 deletions
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 " </g>\n</svg>\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=''):