diff --git a/lightningbeam b/lightningbeam index 66ad05d..c0a7901 100644 --- a/lightningbeam +++ b/lightningbeam @@ -47,6 +47,7 @@ def onMouseDownGroup(self, x, y): self.cshape.onMouseMove = onMouseMoveObj self.cshape.onMouseDrag = onMouseDragObj self.cshape.onMouseUp = onMouseUpObj + self.cshape.onKeyDown = onKeyDownObj self.clicked = True def onMouseDownObj(self, x, y): self.clicked = True @@ -85,7 +86,17 @@ def onMouseDragGroup(self, x, y): def onMouseDragObj(self, x, y): self.x = x-self.initx self.y = y-self.inity - + +def onKeyDownGroup(self, key): + pass + if key in [" ", "s", "r", "e", "b"]: + svlgui.MODE=key +def onKeyDownObj(self, key): + print self + if key in ("delete", "backspace"): + del self.parent[self.parent.index(self)] # Need to clean up deletion + elif key in [" ", "s", "r", "e", "b"]: + svlgui.MODE=key def create_sc(root): retval = ".flash bbox=500x500 background=#ffffff\n"+root.print_sc()+".end" @@ -124,11 +135,13 @@ root.onMouseDown = onMouseDownGroup root.onMouseUp = onMouseUpGroup root.onMouseMove = onMouseMoveGroup root.onMouseDrag = onMouseDragGroup +root.onKeyDown = onKeyDownGroup e=ellipse(100,100,10,10,None) e.onMouseDown = onMouseDownObj e.onMouseMove = onMouseMoveObj e.onMouseDrag = onMouseDragObj e.onMouseUp = onMouseUpObj +e.onKeyDown = onKeyDownObj root.add(e) diff --git a/svlgui.py b/svlgui.py index bfb4706..39d83a7 100644 --- a/svlgui.py +++ b/svlgui.py @@ -610,10 +610,20 @@ class Canvas(Widget): self.invalidate_rect([0,0,self.extent[0],self.extent[1]]) def key_down(self, event): - print "Please" + keydict = {127:"backspace",63272:"delete",63232:"up_arrow",63233:"down_arrow", + 63235:"right_arrow",63234:"left_arrow",13:"enter",9:"tab", + 63236:"F1",63237:"F2",63238:"F3",63239:"F4",63240:"F5", + 63241:"F6",63242:"F7",63243:"F8",} + if ord(event.unichars) in keydict: + key = keydict[ord(event.unichars)] + else: + key = event.unichars + for i in self.objs: + i._onKeyDown(key) + self.invalidate_rect([0,0,self.extent[0],self.extent[1]]) def key_up(self, event): - print "Thank you!" + print ord(event.unichars) self.canvas = OSXCanvas(extent = (width, height), scrolling = 'hv') self.canvas.objs = self.objs elif SYSTEM=="html": @@ -981,6 +991,10 @@ class Shape (object): pass def onMouseMove(self, self1, x, y): pass + def onKeyDown(self, self1, key): + pass + def onKeyUp(self, self1, key): + pass minx = property(getminx) miny = property(getminy) maxx = property(getmaxx) @@ -1005,6 +1019,10 @@ class Layer: pass def onMouseMove(self, self1, x, y): pass + def onKeyDown(self, self1, key): + pass + def onKeyUp(self, self1, key): + pass minx = property(getminx) miny = property(getminy) maxx = property(getmaxx) @@ -1013,7 +1031,7 @@ class Layer: class frame: class framewrapper (object): #Wraps object per-frame. Allows for changes in position, rotation, scale. - def __init__(self, obj, x, y, rot, scalex, scaley): + def __init__(self, obj, x, y, rot, scalex, scaley, parent=None): self.obj = obj self.x = obj.x = x self.y = obj.y = y @@ -1026,6 +1044,7 @@ class Layer: self.linecolor = obj.linecolor self.fillcolor = obj.fillcolor self.name = obj.name + self.parent = parent def draw(self,cr,transform): pass self.update() @@ -1047,6 +1066,10 @@ class Layer: self.obj.onMouseMove(self, x, y) def _onMouseDrag(self, x, y): self.obj.onMouseDrag(self, x, y) + def _onKeyDown(self, key): + self.obj.onKeyDown(self, key) + def _onKeyUp(self, key): + self.obj.onKeyUp(self, key) def getminx(self): return self.obj.minx+self.x def getminy(self): @@ -1071,7 +1094,7 @@ class Layer: self.currentselect=None self.type="Group" def add(self, obj, x, y, rot=0, scalex=0, scaley=0): - self.objs.append(self.framewrapper(obj, x, y, rot, scalex, scaley)) + self.objs.append(self.framewrapper(obj, x, y, rot, scalex, scaley, self.objs)) def play(self, group, cr, currentselect,transform,rect): if SYSTEM=="gtk": cr.save() @@ -1258,6 +1281,22 @@ class Layer: self.onMouseDrag(self, x, y) def onMouseDrag(self, self1, x, y): pass + def _onKeyDown(self, key): + if self.level and MODE in [" ", "s"]: + if self.currentselect: + self.currentselect._onKeyDown(key) + else: + self.onKeyDown(self, key) + def onKeyDown(self, self1, key): + pass + def _onKeyUp(self, key): + if self.level and MODE in [" ", "s"]: + if self.currentselect: + self.currentselect._onKeyUp(key) + else: + self.onKeyUp(self, key) + def onKeyUp(self, self1, key): + pass def print_sc(self,defs=True,frams=True): retval = "" if defs: @@ -1416,6 +1455,22 @@ class Group (object): self.onMouseDrag(self, x, y) def onMouseDrag(self, self1, x, y): pass + def _onKeyDown(self, key): + if self.activelayer.level and MODE in [" ", "s"]: + if self.activelayer.currentselect: + self.activelayer.currentselect._onKeyDown(key) + else: + self.onKeyDown(self, key) + def onKeyDown(self, self1, key): + pass + def _onKeyUp(self, key): + if self.activelayer.level and MODE in [" ", "s"]: + if self.activelayer.currentselect: + self.activelayer.currentselect._onKeyUp(key) + else: + self.onKeyUp(self, key) + def onKeyUp(self, self1, key): + pass def maxframe(self): frame = 0 for i in self.layers: