Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/ball.py
diff options
context:
space:
mode:
authorWalter Bender <walter.bender@gmail.com>2011-10-18 20:24:06 (GMT)
committer Walter Bender <walter.bender@gmail.com>2011-10-18 20:24:06 (GMT)
commit2f0963e3d4c842a9f775100ccb27a20254eca13f (patch)
tree955a56985da836370f88cb5509e43f7f8dfd6cee /ball.py
parent919e8066884eb4a520d2ccae22847909df15f464 (diff)
added custom ball combo box
Diffstat (limited to 'ball.py')
-rw-r--r--ball.py40
1 files changed, 33 insertions, 7 deletions
diff --git a/ball.py b/ball.py
index 3cbb3b2..66e6adf 100644
--- a/ball.py
+++ b/ball.py
@@ -11,10 +11,15 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
+import gtk
+
from sprites import Sprite
from svg_utils import svg_header, svg_footer, svg_str_to_pixbuf, \
extract_svg_payload, svg_from_file
+import logging
+_logger = logging.getLogger('fractionbounce-activity')
+
SIZE = 85
ANIMATION = {10: (0, 1), 15: (1, 2), 20: (2, 1), 25: (1, 2), 30: (2, 1),
@@ -76,11 +81,11 @@ class Ball():
interaction. '''
def __init__(self, sprites, filename):
- ''' Create a ball object and Easter Egg animation from an SVG file. '''
- self.ball = Sprite(sprites, 0, 0, svg_str_to_pixbuf(
- svg_from_file(filename)))
self.current_frame = 0
self.frames = [] # Easter Egg animation
+ self.sprites = sprites
+ self.ball = Sprite(self.sprites, 0, 0, svg_str_to_pixbuf(
+ svg_from_file(filename)))
self.ball.set_layer(1)
self.ball.set_label_attributes(24)
@@ -88,13 +93,34 @@ class Ball():
ball = extract_svg_payload(file(filename, 'r'))
for i in range(8):
self.frames.append(Sprite(
- sprites, 0, 0, svg_str_to_pixbuf(
+ self.sprites, 0, 0, svg_str_to_pixbuf(
svg_header(SIZE, SIZE, 1.0) + TRANSFORMS[i] + \
ball + PUNCTURE + AIR + '</g>' + svg_footer())))
- for spr in self.frames:
- spr.set_layer(1)
- spr.move((0, -SIZE)) # move animation frames off screen
+ for frame in self.frames:
+ frame.set_layer(1)
+ frame.move((0, -SIZE)) # move animation frames off screen
+
+ def new_ball(self, filename):
+ ''' Create a ball object and Easter Egg animation from an SVG file. '''
+ self.ball.images[0] = svg_str_to_pixbuf(svg_from_file(filename))
+
+ ball = extract_svg_payload(file(filename, 'r'))
+ for i in range(8):
+ self.frames[i].images[0] = svg_str_to_pixbuf(
+ svg_header(SIZE, SIZE, 1.0) + TRANSFORMS[i] + \
+ ball + PUNCTURE + AIR + '</g>' + svg_footer())
+
+ def new_ball_from_image(self, filename):
+ ''' Just create a ball object from an image file '''
+ if filename == '':
+ _logger.debug('Image file not found.')
+ return
+ try:
+ self.ball.images[0] = gtk.gdk.pixbuf_new_from_file_at_size(
+ filename, SIZE, SIZE)
+ except:
+ _logger.debug('Could not load image from %s.', filename)
def ball_x(self):
return self.ball.get_xy()[0]