Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2009-02-10 22:57:49 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-02-10 22:57:49 (GMT)
commitd3d4f5937ec7bb7ca762eb14d4d4992d7a7acdc9 (patch)
tree9e2cb64c6b092c1cae487ab9878efe7791e96403
parent05a9623d0a3e48dbcf84a0123682872c6bb5d16b (diff)
Use the whole surface of keyframe to move it
-rw-r--r--flipsticks.py20
-rw-r--r--theme.py2
2 files changed, 16 insertions, 6 deletions
diff --git a/flipsticks.py b/flipsticks.py
index 18b7d45..dd1310e 100644
--- a/flipsticks.py
+++ b/flipsticks.py
@@ -162,9 +162,10 @@ class flipsticks:
if state & gtk.gdk.BUTTON1_MASK and self.pixmap != None:
if self.kfpressed >= 0:
if _inarea(x,y,KEYFRAMEWIDTH,KEYFRAMEHEIGHT):
- xdiff = x - model.keys[self.kfpressed].x
+ xdiff = int(x - self.kf_mouse_pos)
self.shiftjoints(xdiff,0, model.keys[self.kfpressed].scaled_joints)
- model.keys[self.kfpressed].x = x
+ model.keys[self.kfpressed].x += xdiff
+ self.kf_mouse_pos = x
self.drawkeyframe()
return True
@@ -192,6 +193,7 @@ class flipsticks:
if event.button == 1 and self.pixmap != None:
kfnum = _inkeyframe(event.x, event.y)
if kfnum >= 0:
+ self.kf_mouse_pos = event.x
self.kfpressed = kfnum
self.kfselected = kfnum
self.drawkeyframe()
@@ -422,10 +424,14 @@ class flipsticks:
drawgc.set_foreground(pink)
else:
drawgc.set_foreground(darkgreen)
- self.kfpixmap.draw_arc(drawgc,True,x-40,y-40,80,80,0,360*64)
+ self.kfpixmap.draw_arc(drawgc, True, x-KEYFRAME_RADIUS,
+ y-KEYFRAME_RADIUS, KEYFRAME_RADIUS*2, KEYFRAME_RADIUS*2,
+ 0, 360*64)
# then the inner circle
drawgc.set_foreground(white)
- self.kfpixmap.draw_arc(drawgc,True,x-35,y-35,70,70,0,360*64)
+ self.kfpixmap.draw_arc(drawgc, True, x-KEYFRAME_RADIUS+5,
+ y-KEYFRAME_RADIUS+5, (KEYFRAME_RADIUS-5)*2,
+ (KEYFRAME_RADIUS-5)*2, 0, 360*64)
if model.keys[i].scaled_sticks:
# draw a man in the circle
drawgc.set_foreground(black)
@@ -831,8 +837,10 @@ def _inarea(x,y,awidth,aheight):
return True
def _inkeyframe(x, y):
+ dy = math.pow(abs(y - KEYFRAMEHEIGHT/2), 2)
for i in range(len(model.keys)):
- kx = model.keys[i].x
- if (abs(kx-x) <= 20):
+ dx = math.pow(abs(x - model.keys[i].x), 2)
+ l = math.sqrt(dx + dy)
+ if int(l) <= KEYFRAME_RADIUS:
return i
return -1
diff --git a/theme.py b/theme.py
index bb55e41..4198f22 100644
--- a/theme.py
+++ b/theme.py
@@ -105,6 +105,8 @@ DRAWHEIGHT = gtk.gdk.screen_height() - 370 # 500
KEYFRAMES = [] # [50,190,337,487,625]
TOTALFRAMES = 30
+KEYFRAME_RADIUS = 40
+
for i in range(5):
keyframe_width = KEYFRAMEWIDTH/5
KEYFRAMES.append(keyframe_width/2 + i*keyframe_width)