Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/tawindow.py
diff options
context:
space:
mode:
authorWalter Bender <walter@walter-laptop.(none)>2010-01-26 17:41:12 (GMT)
committer Walter Bender <walter@walter-laptop.(none)>2010-01-26 17:41:12 (GMT)
commitbde3466f1c48bf157ee89ffa369a640c478882ac (patch)
tree2b510bc273e4eaffe4e4f9025bae35d547b7ebc2 /tawindow.py
parent7d4a9f07785f2a772b1f16463ae62e40a5ed9446 (diff)
eliminating pregenerated svgs
Diffstat (limited to 'tawindow.py')
-rw-r--r--tawindow.py179
1 files changed, 92 insertions, 87 deletions
diff --git a/tawindow.py b/tawindow.py
index 28ca9cd..ed126e8 100644
--- a/tawindow.py
+++ b/tawindow.py
@@ -41,7 +41,6 @@ import time
from math import atan2, pi
DEGTOR = 2*pi/360
from constants import *
-from tasetup import *
from talogo import *
from taturtle import *
from taproject import *
@@ -74,16 +73,9 @@ class TurtleArtWindow():
def __init__(self, win, path, lang, parent=None):
self._setup_initial_values(win, path, lang, parent)
# TODO: most of this goes away
- prep_selectors(self) # i wonder where this method belongs
- for s in selectors:
- setup_selectors(self,s)
- setup_misc(self)
- # self._select_category(self.selbuttons[0])
-
+ self._setup_misc()
# the new palette
self.show_toolbar_palette(0, False)
- # hide the old palette
- self._hide_palette()
def _setup_initial_values(self, win, path, lang, parent):
self.window = win
@@ -131,34 +123,66 @@ class TurtleArtWindow():
self.hide = False
self.palette = True
self.coord_scale = 1
- self.block_list = block.Blocks()
- self.selected_blk = None
- self.turtle_list = turtlex.Turtles()
- self.selected_turtle = None
- self.sprite_list = sprites.Sprites(self.window, self.area, self.gc)
- self.selected_spr = None
- self.drag_group = None
- self.turtle = tNew(self,self.width,self.height)
- self.lc = lcNew(self)
self.buddies = []
self.dx = 0
self.dy = 0
+ self.media_shapes = {}
self.cartesian = False
self.polar = False
-
- """
- Selector-related stuff
- """
+ self.overlay_shapes = {}
+ self.status_spr = None
+ self.status_shapes = {}
self.palette_spr = None
self.palettes = []
self.selected_palette = None
self.selectors = []
self.selected_selector = None
self.selector_shapes = []
+ self.selected_blk = None
+ self.selected_spr = None
+ self.drag_group = None
+ self.block_list = block.Blocks()
+ self.sprite_list = sprites.Sprites(self.window, self.area, self.gc)
+ self.turtle_list = turtlex.Turtles()
+ self.selected_turtle = None
+ self.turtle = tNew(self,self.width,self.height)
+ self.lc = lcNew(self)
+
+ """
+ Register the events we listen to.
+ """
+ def _setup_events(self):
+ self.window.add_events(gtk.gdk.BUTTON_PRESS_MASK)
+ self.window.add_events(gtk.gdk.BUTTON_RELEASE_MASK)
+ self.window.add_events(gtk.gdk.POINTER_MOTION_MASK)
+ self.window.add_events(gtk.gdk.KEY_PRESS_MASK)
+ self.window.connect("expose-event", self._expose_cb)
+ self.window.connect("button-press-event", self._buttonpress_cb)
+ self.window.connect("button-release-event", self._buttonrelease_cb)
+ self.window.connect("motion-notify-event", self._move_cb)
+ self.window.connect("key_press_event", self._keypress_cb)
+
+ """
+ Repaint
+ """
+ def _expose_cb(self, win, event):
+ self.sprite_list.redraw_sprites()
+ return True
+
+ """
+ Are we running from within Sugar?
+ """
+ def _running_sugar(self):
+ if hasattr(self, 'activity'):
+ return True
+ return False
- #
- # Public methods are called from the activity class
- #
+ """
+ Is the an OLPC XO-1?
+ """
+ def _OLPC_XO_1(self):
+ return os.path.exists('/etc/olpc-release') or \
+ os.path.exists('/sys/power/olpc-pm')
"""
eraser_button: hide status block
@@ -218,10 +242,19 @@ class TurtleArtWindow():
show palette
"""
def show_palette(self):
- for i in self.selbuttons: i.set_layer(TAB_LAYER)
- self._select_category(self.selbuttons[0])
+ self.show_toolbar_palette(0)
self.palette = True
+ """
+ Hide the palette.
+ """
+ def _hide_palette(self):
+ self.hide_toolbar_palette()
+ self.palette = False
+
+ """
+ Where is the mouse event?
+ """
def xy(self, event):
return map(int, event.get_coords())
@@ -247,6 +280,32 @@ class TurtleArtWindow():
return
"""
+ Misc. sprites for status, overlays, etc.
+ """
+ def _setup_misc(self):
+ # media blocks get positioned into other blocks
+ for i, name in enumerate(MEDIA_SHAPES):
+ self.media_shapes[i] = sprites.Sprite(self.sprite_list, 0, 0,
+ self._load_sprite_from_file("%s/%s.svg" % (self.path, name)))
+ self.media_shapes[i].set_layer(HIDE_LAYER)
+ self.media_shapes[i].type = 'media'
+ for i, name in enumerate(STATUS_SHAPES):
+ self.status_shapes[i] = sprites.Sprite(self.sprite_list,
+ self.height-75, 0,
+ self._load_sprite_from_file("%s/%s.svg" % (self.path, name)))
+ self.status_shapes[i].set_layer(HIDE_LAYER)
+ self.status_shapes[i].type = 'status'
+ for i in enumerate(OVERLAY_SHAPES):
+ self.overlay_shapes[i] = sprites.Sprite(self.sprite_list, 0, 0,
+ self._load_sprite_from_file("%s/%s.svg" % (self.path, name)))
+ self.overlay_shapes[i].set_layer(HIDE_LAYER)
+ self.overlay_shapes[i].type = 'overlay'
+
+ def _load_sprite_from_file(self, name):
+ svg = sprite_factory.SVG()
+ return sprite_factory.svg_str_to_pixbuf(svg.from_file(name))
+
+ """
Show/hide turtle palettes
"""
def hide_toolbar_palette(self, hide_palette_spr=True):
@@ -259,19 +318,14 @@ class TurtleArtWindow():
self.selectors[i].set_layer(HIDE_LAYER)
def show_toolbar_palette(self, n, init_only=False):
- # TODO: make graphical selector buttons
if self.selectors == []:
svg = sprite_factory.SVG()
x, y = 5, 0
for i, name in enumerate(PALETTE_NAMES):
- svg.set_stroke_width(STANDARD_STROKE_WIDTH)
- svg.set_colors(COLORS[i])
- svg_path = "%s/palette/%soff.svg" % (self.path,
- PALETTE_NAMES[i])
- a = sprite_factory.svg_str_to_pixbuf(svg.from_file(svg_path))
- svg_path = "%s/palette/%son.svg" % (self.path,
- PALETTE_NAMES[i])
- b = sprite_factory.svg_str_to_pixbuf(svg.from_file(svg_path))
+ a = self._load_sprite_from_file("%s/%soff.svg" % (self.path,
+ PALETTE_NAMES[i]))
+ b = self._load_sprite_from_file("%s/%son.svg" % (self.path,
+ PALETTE_NAMES[i]))
self.selector_shapes.append([a,b])
self.selectors.append(sprites.Sprite(self.sprite_list, x, y, a))
self.selectors[i].type = 'selector'
@@ -325,46 +379,6 @@ class TurtleArtWindow():
for blk in self.palettes[n]:
blk.spr.set_layer(CATEGORY_LAYER)
- #
- # Internal methods
- #
-
- """
- Register the events we listen to.
- """
- def _setup_events(self):
- self.window.add_events(gtk.gdk.BUTTON_PRESS_MASK)
- self.window.add_events(gtk.gdk.BUTTON_RELEASE_MASK)
- self.window.add_events(gtk.gdk.POINTER_MOTION_MASK)
- self.window.add_events(gtk.gdk.KEY_PRESS_MASK)
- self.window.connect("expose-event", self._expose_cb)
- self.window.connect("button-press-event", self._buttonpress_cb)
- self.window.connect("button-release-event", self._buttonrelease_cb)
- self.window.connect("motion-notify-event", self._move_cb)
- self.window.connect("key_press_event", self._keypress_cb)
-
- """
- Repaint
- """
- def _expose_cb(self, win, event):
- self.sprite_list.redraw_sprites()
- return True
-
- """
- Are we running from within Sugar?
- """
- def _running_sugar(self):
- if hasattr(self, 'activity'):
- return True
- return False
-
- """
- Is the an OLPC XO-1?
- """
- def _OLPC_XO_1(self):
- return os.path.exists('/etc/olpc-release') or \
- os.path.exists('/sys/power/olpc-pm')
-
"""
Select a category.
"""
@@ -378,16 +392,6 @@ class TurtleArtWindow():
self.show_toolbar_palette(i)
"""
- Hide the palette.
- TODO: move to toolbar
- """
- def _hide_palette(self):
- for i in self.selbuttons:
- i.hide()
- self.category_spr.set_shape(self.hidden_palette_icon)
- self.palette = False
-
- """
Find a stack to run (any stack without a 'def action'on the top).
"""
def _find_block_to_run(self, blk):
@@ -761,7 +765,8 @@ class TurtleArtWindow():
self._unselect_block()
self.selected_turtle = None
# Always hide the status layer on a click
- self.status_spr.set_layer(HIDE_LAYER)
+ if self.status_spr is not None:
+ self.status_spr.set_layer(HIDE_LAYER)
# Find out what was clicked
spr = self.sprite_list.find_sprite((x,y))