def __init__(self, width=600, height=300): VerticalPanel.__init__(self) self.elements = [] self.desc = [] self.canvas = Raphael(width, height) self.canvas.addListener('mouseup', self.onCanvasMouseup) self.canvas.addListener('mousemove', self.onCanvasMousemove) self.canvas.addListener('dblclick', self.onCanvasDblClick) self.canvas.addListener('contextmenu', self.onCanvasContextmenu) self.canvas.addListener('mousedown', self.onCanvasMousedown) self.add(self.canvas) self.status = Label('Execute any events on the canvas!') self.add(self.status)
def __init__(self,width=600,height=300): """ Standard initialiser. """ SimplePanel.__init__(self) # Taken from the "spinner" Raphael demo: self.width = 15 self.r1 = 35 self.r2 = 60 self.cx = self.r2 + self.width self.cy = self.r2 + self.width self.numSectors = 12 self.canvas = Raphael(self.r2*2 + self.width*2, self.r2*2 + self.width*2) self.sectors = [] self.opacity = [] self.add(self.canvas)
def __init__(self): """ Standard initialiser. """ VerticalPanel.__init__(self) self.canvas = Raphael(900,700) self.add(self.canvas) x = DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.getAbsoluteTop(self.canvas.getElement()) self.offset = (x,y)
class Spinner(SimplePanel): """ Our testing panel. """ def __init__(self, width=600, height=300): """ Standard initialiser. """ SimplePanel.__init__(self) # Taken from the "spinner" Raphael demo: self.width = 15 self.r1 = 35 self.r2 = 60 self.cx = self.r2 + self.width self.cy = self.r2 + self.width self.numSectors = 12 self.canvas = Raphael(self.r2 * 2 + self.width * 2, self.r2 * 2 + self.width * 2) self.sectors = [] self.opacity = [] self.add(self.canvas) def draw(self): colour = "#000000" beta = 2 * math.pi / self.numSectors pathParams = { 'stroke': colour, 'stroke-width': self.width, 'stroke-linecap': "round" } for i in range(self.numSectors): alpha = beta * i - math.pi / 2 cos = math.cos(alpha) sin = math.sin(alpha) data = ','.join([ 'M', str(self.cx + self.r1 * cos), str(self.cy + self.r1 * sin), 'L', str(self.cx + self.r2 * cos), str(self.cy + self.r2 * sin) ]) path = self.canvas.path(data=data, attrs=pathParams) self.opacity.append(1.0 * i / self.numSectors) self.sectors.append(path) period = 1000 / self.numSectors self._timer = Timer(notify=self) self._timer.scheduleRepeating(period) def onTimer(self, timerID): """ Respond to our timer firing. """ self.opacity.insert(0, self.opacity.pop()) for i in range(self.numSectors): self.sectors[i].setAttr("opacity", self.opacity[i])
class Spinner(PopupPanel): def __init__(self, text=''): PopupPanel.__init__(self) self.width = 15 self.r1 = 35 self.r2 = 60 self.cx = self.r2 + self.width self.cy = self.r2 + self.width self.numSectors = 12 self.size = self.r2*2 + self.width*2 self.speed = 1.5 # seconds per rotation self._timer = None self.canvas = Raphael(self.size, self.size) self.sectors = [] self.opacity = [] vp = VerticalPanel() vp.add(self.canvas) blurb = HTML(text) blurb.setStyleAttribute('text-align', 'center') vp.add(blurb) self.add(vp) def draw(self): colour = "#000000" beta = 2 * math.pi / self.numSectors pathParams = {'stroke' : colour, 'stroke-width' : self.width, 'stroke-linecap' : "round"} for i in range(self.numSectors): alpha = beta * i - math.pi/2 cos = math.cos(alpha) sin = math.sin(alpha) data = ','.join(['M', str(self.cx + self.r1 * cos), str(self.cy + self.r1 * sin), 'L', str(self.cx + self.r2 * cos), str(self.cy + self.r2 * sin)]) path = self.canvas.path(data=data, attrs=pathParams) self.opacity.append(1.0 * i / self.numSectors ) self.sectors.append(path) period = (self.speed * 1000) / self.numSectors self._timer = Timer(notify=self) self._timer.scheduleRepeating(period) def onTimer(self, _): self.opacity.insert(0, self.opacity.pop()) for i in range(self.numSectors): self.sectors[i].setAttr("opacity", self.opacity[i])
def __init__(self): """ Standard initialiser. """ SimplePanel.__init__(self) # Taken from the "spinner" Raphael demo: colour = "#000000" width = 15 r1 = 35 r2 = 60 cx = r2 + width cy = r2 + width self.numSectors = 12 self.canvas = Raphael(r2 * 2 + width * 2, r2 * 2 + width * 2) self.sectors = [] self.opacity = [] beta = 2 * math.pi / self.numSectors pathParams = { 'stroke': colour, 'stroke-width': width, 'stroke-linecap': "round" } for i in range(self.numSectors): alpha = beta * i - math.pi / 2 cos = math.cos(alpha) sin = math.sin(alpha) path = self.canvas.path(data=None, attrs=pathParams) path.moveTo(cx + r1 * cos, cy + r1 * sin) path.lineTo(cx + r2 * cos, cy + r2 * sin) self.opacity.append(1 / self.numSectors * i) self.sectors.append(path) period = 1000 / self.numSectors self._timer = Timer(notify=self) self._timer.scheduleRepeating(period) self.add(self.canvas)
class TestPanel(SimplePanel): """ Our testing panel. """ def __init__(self): """ Standard initialiser. """ SimplePanel.__init__(self) # Taken from the "spinner" Raphael demo: colour = "#000000" width = 15 r1 = 35 r2 = 60 cx = r2 + width cy = r2 + width self.numSectors = 12 self.canvas = Raphael(r2*2 + width*2, r2*2 + width*2) self.sectors = [] self.opacity = [] beta = 2 * math.pi / self.numSectors pathParams = {'stroke' : colour, 'stroke-width' : width, 'stroke-linecap' : "round"} for i in range(self.numSectors): alpha = beta * i - math.pi/2 cos = math.cos(alpha) sin = math.sin(alpha) path = self.canvas.path(data=None, attrs=pathParams) path.moveTo(cx + r1 * cos, cy + r1 * sin) path.lineTo(cx + r2 * cos, cy + r2 * sin) self.opacity.append(1 / self.numSectors * i) self.sectors.append(path) period = 1000/self.numSectors self._timer = Timer(notify=self) self._timer.scheduleRepeating(period) self.add(self.canvas) def onTimer(self, timer): """ Respond to our timer firing. """ self.opacity.insert(0, self.opacity.pop()) for i in range(self.numSectors): self.sectors[i].setAttr("opacity", self.opacity[i])
def __init__(self,width=600,height=300): VerticalPanel.__init__(self) self.elements=[] self.desc=[] self.canvas = Raphael(width, height) self.canvas.addListener('mouseup',self.onCanvasMouseup) self.canvas.addListener('mousemove',self.onCanvasMousemove) self.canvas.addListener('dblclick',self.onCanvasDblClick) self.canvas.addListener('contextmenu',self.onCanvasContextmenu) self.canvas.addListener('mousedown',self.onCanvasMousedown) self.add(self.canvas) self.status=Label('Execute any events on the canvas!') self.add(self.status)
class Spinner(SimplePanel): """ Our testing panel. """ def __init__(self,width=600,height=300): """ Standard initialiser. """ SimplePanel.__init__(self) # Taken from the "spinner" Raphael demo: self.width = 15 self.r1 = 35 self.r2 = 60 self.cx = self.r2 + self.width self.cy = self.r2 + self.width self.numSectors = 12 self.canvas = Raphael(self.r2*2 + self.width*2, self.r2*2 + self.width*2) self.sectors = [] self.opacity = [] self.add(self.canvas) def draw(self): colour = "#000000" beta = 2 * math.pi / self.numSectors pathParams = {'stroke' : colour, 'stroke-width' : self.width, 'stroke-linecap' : "round"} for i in range(self.numSectors): alpha = beta * i - math.pi/2 cos = math.cos(alpha) sin = math.sin(alpha) data=','.join(['M',str(self.cx + self.r1 * cos),str(self.cy + self.r1 * sin),'L',str(self.cx + self.r2 * cos),str(self.cy + self.r2 * sin)]) path = self.canvas.path(data=data,attrs=pathParams) self.opacity.append(1.0 * i / self.numSectors ) self.sectors.append(path) period = 1000/self.numSectors self._timer = Timer(notify=self) self._timer.scheduleRepeating(period) def onTimer(self, timerID): """ Respond to our timer firing. """ self.opacity.insert(0, self.opacity.pop()) for i in range(self.numSectors): self.sectors[i].setAttr("opacity", self.opacity[i])
class Graffle(SimplePanel): def __init__(self, width=600, height=300): SimplePanel.__init__(self) self.canvas = Raphael(width, height) self.add(self.canvas) def draw(self): self.circle1 = self.canvas.circle(50, 50, 25) self.circle1.setAttr('fill', '#000') self.circle1.setAttrs({'cursor': 'move', 'opacity': 0.6}) self.circle1.drag(self._move_circle, start, up) self.circle2 = self.canvas.circle(150, 100, 25) self.circle2.setAttr('fill', '#000') self.circle2.setAttrs({'cursor': 'move', 'opacity': 0.6}) self.circle2.drag(self._move_circle, start, up) self.rect1 = self.canvas.rect(200, 100, 30, 30) self.rect1.setAttr('fill', '#000') self.rect1.drag(self._move_rect, start, up) self.rect2 = self.canvas.rect(200, 150, 30, 30) self.rect2.setAttr('fill', '#000') self.rect2.drag(self._move_rect, start, up) def connect(self): line = {'stroke': '#fff', 'stroke-width': 3} bg = {'stroke': '#000', 'stroke-width': 5} self.connection_rect = self.canvas.connection(self.rect1, self.rect2, line=line, bg=bg) line = {'stroke': '#fff', 'stroke-width': 3} bg = {'stroke': '#000', 'stroke-width': 5} self.connection_circle = self.canvas.connection( self.circle1, self.circle2, line=line, bg=bg, cp1=DOCK_CONNECTION.EAST, cp2=DOCK_CONNECTION.WEST) def _move_rect(self, obj, dx, dy, x, y): obj.translate(dx - obj.dx, dy - obj.dy) obj.dx = dx obj.dy = dy self.connection_rect.draw() def _move_circle(self, obj, dx, dy, x, y): obj.translate(dx - obj.dx, dy - obj.dy) obj.dx = dx obj.dy = dy self.connection_circle.draw()
def __init__(self, text=''): PopupPanel.__init__(self) self.width = 15 self.r1 = 35 self.r2 = 60 self.cx = self.r2 + self.width self.cy = self.r2 + self.width self.numSectors = 12 self.size = self.r2*2 + self.width*2 self.speed = 1.5 # seconds per rotation self.canvas = Raphael(self.size, self.size) self.sectors = [] self.opacity = [] vp = VerticalPanel() vp.add(self.canvas) blurb = HTML(text) blurb.setStyleAttribute('text-align', 'center') vp.add(blurb) self.add(vp)
def __init__(self): """ Standard initialiser. """ VerticalPanel.__init__(self) GUI_Event.__init__(self) self.canvas = Raphael(900,700) #self.canvas.addListener('mousedown',self.test) #self.canvas.addListener('contextmenu',self.test) #self.tb = TextArea() #self.tb.setName("textBoxFormElement") #self.tb.setStyleAttribute({'position':'absolute', # 'top':'175px','left':'158px' # ,'color':COLOR['maroon'] # ,'background':COLOR['peachpuff'] # ,'background-color':COLOR['peachpuff']}) #self.tb.setSize(450,100) #self.tb.setReadonly('readonly') self.add(self.canvas) #self.add(self.tb) x = DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.getAbsoluteTop(self.canvas.getElement()) self.offset = (x,y) '''
class Graffle(SimplePanel): def __init__(self,width=600,height=300): SimplePanel.__init__(self) self.canvas = Raphael(width,height) self.add(self.canvas) def draw(self): self.circle1=self.canvas.circle(50,50,25) self.circle1.setAttr('fill','#000') self.circle1.setAttrs({'cursor':'move','opacity':0.6}) self.circle1.drag(self._move_circle,start,up) self.circle2=self.canvas.circle(150,100,25) self.circle2.setAttr('fill','#000') self.circle2.setAttrs({'cursor':'move','opacity':0.6}) self.circle2.drag(self._move_circle,start,up) self.rect1=self.canvas.rect(200,100,30,30) self.rect1.setAttr('fill','#000') self.rect1.drag(self._move_rect,start,up) self.rect2=self.canvas.rect(200,150,30,30) self.rect2.setAttr('fill','#000') self.rect2.drag(self._move_rect,start,up) def connect(self): line={'stroke':'#fff','stroke-width':3} bg={'stroke': '#000', 'stroke-width':5} self.connection_rect=self.canvas.connection(self.rect1,self.rect2,line=line,bg=bg) line={'stroke':'#fff','stroke-width':3} bg={'stroke': '#000', 'stroke-width':5} self.connection_circle=self.canvas.connection(self.circle1,self.circle2,line=line,bg=bg,cp1=DOCK_CONNECTION.EAST,cp2=DOCK_CONNECTION.WEST) def _move_rect(self,obj,dx,dy,x,y): obj.translate(dx-obj.dx,dy-obj.dy) obj.dx=dx obj.dy=dy self.connection_rect.draw() def _move_circle(self,obj,dx,dy,x,y): obj.translate(dx-obj.dx,dy-obj.dy) obj.dx=dx obj.dy=dy self.connection_circle.draw()
class Events(VerticalPanel): def __init__(self, width=600, height=300): VerticalPanel.__init__(self) self.elements = [] self.desc = [] self.canvas = Raphael(width, height) self.canvas.addListener("mouseup", self.onCanvasMouseup) self.canvas.addListener("mousemove", self.onCanvasMousemove) self.canvas.addListener("dblclick", self.onCanvasDblClick) self.canvas.addListener("contextmenu", self.onCanvasContextmenu) self.canvas.addListener("mousedown", self.onCanvasMousedown) self.add(self.canvas) self.status = Label("Execute any events on the canvas!") self.add(self.status) def set_status(self, status): self.status.setText(status) def draw(self): circle1 = self.canvas.circle(50, 50, 25) circle1.setAttr("fill", "#000") circle1.setAttrs({"cursor": "move", "opacity": 0.6}) circle1.addListener("mouseup", self.onElementMouseup) circle1.addListener("mousemove", self.onElementMousemove) circle1.addListener("dblclick", self.onElementDblClick) circle1.addListener("contextmenu", self.onElementContextmenu) circle1.addListener("mousedown", self.onElementMousedown) self.elements.append(circle1) self.desc.append("Circle 1") circle2 = self.canvas.circle(100, 100, 25) circle2.setAttr("fill", "#000") circle2.setAttrs({"cursor": "move", "opacity": 0.6}) circle2.addListener("mouseup", self.onElementMouseup) circle2.addListener("mousemove", self.onElementMousemove) circle2.addListener("dblclick", self.onElementDblClick) circle2.addListener("contextmenu", self.onElementContextmenu) circle2.addListener("mousedown", self.onElementMousedown) self.elements.append(circle2) self.desc.append("Circle 2") rect1 = self.canvas.rect(200, 100, 30, 30) rect1.setAttr("fill", "#000") rect1.addListener("mouseup", self.onElementMouseup) rect1.addListener("mousemove", self.onElementMousemove) rect1.addListener("dblclick", self.onElementDblClick) rect1.addListener("contextmenu", self.onElementContextmenu) rect1.addListener("mousedown", self.onElementMousedown) self.elements.append(rect1) self.desc.append("Rectangle 1") rect2 = self.canvas.rect(200, 150, 30, 30) rect2.setAttr("fill", "#000") rect2.addListener("mouseup", self.onElementMouseup) rect2.addListener("mousemove", self.onElementMousemove) rect2.addListener("dblclick", self.onElementDblClick) rect2.addListener("contextmenu", self.onElementContextmenu) rect2.addListener("mousedown", self.onElementMousedown) self.elements.append(rect2) self.desc.append("Rectangle 2") connection = self.canvas.connection(rect1, rect2) connection.addListener("mouseup", self.onElementMouseup) connection.addListener("mousemove", self.onElementMousemove) connection.addListener("dblclick", self.onElementDblClick) connection.addListener("contextmenu", self.onElementContextmenu) connection.addListener("mousedown", self.onElementMousedown) self.elements.append(connection) self.desc.append("Connection") ellipse = self.canvas.ellipse(200, 200, 25, 40) text = self.canvas.text(200, 200, "ABC") set = self.canvas.set() set.add(ellipse) set.add(text) set.addListener("mousemove", self.onElementMousemove) self.elements.append(set) self.desc.append("Set") def onCanvasMousedown(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) self.set_status("Mousedown on Canvas at " + str(x) + ", " + str(y)) def onCanvasMouseup(self, obj, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) self.set_status("Mousemove on Canvas at " + str(x) + ", " + str(y)) def onCanvasMousemove(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) self.set_status("Mousemove on Canvas at " + str(x) + ", " + str(y)) def onCanvasDblClick(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) self.set_status("Doubleclick on Canvas at " + str(x) + ", " + str(y)) def onCanvasContextmenu(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) self.set_status("Contextmenue on Canvas at " + str(x) + ", " + str(y)) DOM.eventPreventDefault(event) def onElementMousedown(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status("Mousedown on Element " + s + " at " + str(x) + ", " + str(y)) DOM.eventCancelBubble(event, True) def onElementMouseup(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status("Mouseup on Element " + s + " at " + str(x) + ", " + str(y)) DOM.eventCancelBubble(event, True) def onElementMousemove(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status("Mousemove on Element " + s + " at " + str(x) + ", " + str(y)) DOM.eventCancelBubble(event, True) def onElementDblClick(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status("Doubleclick on Element " + s + " at " + str(x) + ", " + str(y)) DOM.eventCancelBubble(event, True) def onElementContextmenu(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status("Contextmenue on Element " + s + " at " + str(x) + ", " + str(y)) DOM.eventCancelBubble(event, True) DOM.eventPreventDefault(event)
class Window(VerticalPanel): def __init__(self): """ Standard initialiser. """ VerticalPanel.__init__(self) self.canvas = Raphael(900,700) self.add(self.canvas) x = DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.getAbsoluteTop(self.canvas.getElement()) self.offset = (x,y) def build_event(self,action,offset): return EventWrapper(action,offset) def build_drag(self,action,offset): return DragWrapper(action,offset) def talk(self,msg='foi'): alert (msg) def test(self,elm,event,msg='foi'): location = None JS(''' location = window.location.hostname; ''') if 'localhost' == location: location +=':8004' return location x = DOM.eventGetClientX(event) y = DOM.eventGetClientY(event) alert ('%s %s %s'%(msg,x,y)) def create_game(self,game,title): self.game = game RootPanel().add(self) return #self.inicia() def score(self,score,houses): score = j_p.encode(score) houses = j_p.encode(houses) DOM.setAttribute(self.scored,"value",score) DOM.setAttribute(self.housed,"value",houses) #self.talk(str((score,houses))) frm = self.__form JS(""" frm.submit() """) #self.__form.submit() return score def inicia(self): global IMAGEREPO self.__form = f = DOM.getElementById('mainform') self.x = DOM.getChild(f,0).value #DOM.getElementByName('_xsrf').value g = DOM.getChild(f,1).value self.scored = DOM.getChild(f,2) self.housed = DOM.getChild(f,3) if g == '12de6b622cbfe4d8f5c8d3347e56ae8c': IMAGEREPO = 'imagens/' #self.talk(self.scored.value+self.housed.value+IMAGEREPO) self._socket = NullSocket() #WebSocket("ws://%s/chatsocket"%self.test()) self._socket.register_receiver(self.game.receive) obj = j_p.wdecode(self.housed.value) #self.text(400,85, str(obj) ,'darkbrown',10) #obj = [dict(body='nonono')] return obj def receive(self,message = 'nono'): self.talk(message.line+ ':'+ message.body)
class Events(VerticalPanel): def __init__(self,width=600,height=300): VerticalPanel.__init__(self) self.elements=[] self.desc=[] self.canvas = Raphael(width, height) self.canvas.addListener('mouseup',self.onCanvasMouseup) self.canvas.addListener('mousemove',self.onCanvasMousemove) self.canvas.addListener('dblclick',self.onCanvasDblClick) self.canvas.addListener('contextmenu',self.onCanvasContextmenu) self.canvas.addListener('mousedown',self.onCanvasMousedown) self.add(self.canvas) self.status=Label('Execute any events on the canvas!') self.add(self.status) def set_status(self,status): self.status.setText(status) def draw(self): circle1=self.canvas.circle(50,50,25) circle1.setAttr('fill','#000') circle1.setAttrs({'cursor':'move','opacity':0.6}) circle1.addListener('mouseup',self.onElementMouseup) circle1.addListener('mousemove',self.onElementMousemove) circle1.addListener('dblclick',self.onElementDblClick) circle1.addListener('contextmenu',self.onElementContextmenu) circle1.addListener('mousedown',self.onElementMousedown) self.elements.append(circle1) self.desc.append('Circle 1') circle2=self.canvas.circle(100,100,25) circle2.setAttr('fill','#000') circle2.setAttrs({'cursor':'move','opacity':0.6}) circle2.addListener('mouseup',self.onElementMouseup) circle2.addListener('mousemove',self.onElementMousemove) circle2.addListener('dblclick',self.onElementDblClick) circle2.addListener('contextmenu',self.onElementContextmenu) circle2.addListener('mousedown',self.onElementMousedown) self.elements.append(circle2) self.desc.append('Circle 2') rect1=self.canvas.rect(200,100,30,30) rect1.setAttr('fill','#000') rect1.addListener('mouseup',self.onElementMouseup) rect1.addListener('mousemove',self.onElementMousemove) rect1.addListener('dblclick',self.onElementDblClick) rect1.addListener('contextmenu',self.onElementContextmenu) rect1.addListener('mousedown',self.onElementMousedown) self.elements.append(rect1) self.desc.append('Rectangle 1') rect2=self.canvas.rect(200,150,30,30) rect2.setAttr('fill','#000') rect2.addListener('mouseup',self.onElementMouseup) rect2.addListener('mousemove',self.onElementMousemove) rect2.addListener('dblclick',self.onElementDblClick) rect2.addListener('contextmenu',self.onElementContextmenu) rect2.addListener('mousedown',self.onElementMousedown) self.elements.append(rect2) self.desc.append('Rectangle 2') connection=self.canvas.connection(rect1,rect2) connection.addListener('mouseup',self.onElementMouseup) connection.addListener('mousemove',self.onElementMousemove) connection.addListener('dblclick',self.onElementDblClick) connection.addListener('contextmenu',self.onElementContextmenu) connection.addListener('mousedown',self.onElementMousedown) self.elements.append(connection) self.desc.append('Connection') ellipse=self.canvas.ellipse(200,200,25,40) text=self.canvas.text(200,200,'ABC') set=self.canvas.set() set.add(ellipse) set.add(text) set.addListener('mousemove',self.onElementMousemove) self.elements.append(set) self.desc.append('Set') def onCanvasMousedown(self,sender,event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) self.set_status('Mousedown on Canvas at '+str(x)+', '+str(y)) def onCanvasMouseup(self,obj,event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) self.set_status('Mousemove on Canvas at '+str(x)+', '+str(y)) def onCanvasMousemove(self,sender,event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) self.set_status('Mousemove on Canvas at '+str(x)+', '+str(y)) def onCanvasDblClick(self,sender,event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) self.set_status('Doubleclick on Canvas at '+str(x)+', '+str(y)) def onCanvasContextmenu(self, sender,event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) self.set_status('Contextmenue on Canvas at '+str(x)+', '+str(y)) DOM.eventPreventDefault(event) def onElementMousedown(self,sender,event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status('Mousedown on Element '+s+' at '+str(x)+', '+str(y)) DOM.eventCancelBubble(event,True) def onElementMouseup(self,sender,event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status('Mouseup on Element '+s+' at '+str(x)+', '+str(y)) DOM.eventCancelBubble(event,True) def onElementMousemove(self,sender,event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status('Mousemove on Element '+s+' at '+str(x)+', '+str(y)) DOM.eventCancelBubble(event,True) def onElementDblClick(self,sender,event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status('Doubleclick on Element '+s+' at '+str(x)+', '+str(y)) DOM.eventCancelBubble(event,True) def onElementContextmenu(self, sender,event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop(self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status('Contextmenue on Element '+s+' at '+str(x)+', '+str(y)) DOM.eventCancelBubble(event,True) DOM.eventPreventDefault(event)
class Events(VerticalPanel): def __init__(self, width=600, height=300): VerticalPanel.__init__(self) self.elements = [] self.desc = [] self.canvas = Raphael(width, height) self.canvas.addListener('mouseup', self.onCanvasMouseup) self.canvas.addListener('mousemove', self.onCanvasMousemove) self.canvas.addListener('dblclick', self.onCanvasDblClick) self.canvas.addListener('contextmenu', self.onCanvasContextmenu) self.canvas.addListener('mousedown', self.onCanvasMousedown) self.add(self.canvas) self.status = Label('Execute any events on the canvas!') self.add(self.status) def set_status(self, status): self.status.setText(status) def draw(self): circle1 = self.canvas.circle(50, 50, 25) circle1.setAttr('fill', '#000') circle1.setAttrs({'cursor': 'move', 'opacity': 0.6}) circle1.addListener('mouseup', self.onElementMouseup) circle1.addListener('mousemove', self.onElementMousemove) circle1.addListener('dblclick', self.onElementDblClick) circle1.addListener('contextmenu', self.onElementContextmenu) circle1.addListener('mousedown', self.onElementMousedown) self.elements.append(circle1) self.desc.append('Circle 1') circle2 = self.canvas.circle(100, 100, 25) circle2.setAttr('fill', '#000') circle2.setAttrs({'cursor': 'move', 'opacity': 0.6}) circle2.addListener('mouseup', self.onElementMouseup) circle2.addListener('mousemove', self.onElementMousemove) circle2.addListener('dblclick', self.onElementDblClick) circle2.addListener('contextmenu', self.onElementContextmenu) circle2.addListener('mousedown', self.onElementMousedown) self.elements.append(circle2) self.desc.append('Circle 2') rect1 = self.canvas.rect(200, 100, 30, 30) rect1.setAttr('fill', '#000') rect1.addListener('mouseup', self.onElementMouseup) rect1.addListener('mousemove', self.onElementMousemove) rect1.addListener('dblclick', self.onElementDblClick) rect1.addListener('contextmenu', self.onElementContextmenu) rect1.addListener('mousedown', self.onElementMousedown) self.elements.append(rect1) self.desc.append('Rectangle 1') rect2 = self.canvas.rect(200, 150, 30, 30) rect2.setAttr('fill', '#000') rect2.addListener('mouseup', self.onElementMouseup) rect2.addListener('mousemove', self.onElementMousemove) rect2.addListener('dblclick', self.onElementDblClick) rect2.addListener('contextmenu', self.onElementContextmenu) rect2.addListener('mousedown', self.onElementMousedown) self.elements.append(rect2) self.desc.append('Rectangle 2') connection = self.canvas.connection(rect1, rect2) connection.addListener('mouseup', self.onElementMouseup) connection.addListener('mousemove', self.onElementMousemove) connection.addListener('dblclick', self.onElementDblClick) connection.addListener('contextmenu', self.onElementContextmenu) connection.addListener('mousedown', self.onElementMousedown) self.elements.append(connection) self.desc.append('Connection') ellipse = self.canvas.ellipse(200, 200, 25, 40) text = self.canvas.text(200, 200, 'ABC') set = self.canvas.set() set.add(ellipse) set.add(text) set.addListener('mousemove', self.onElementMousemove) self.elements.append(set) self.desc.append('Set') def onCanvasMousedown(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft( self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop( self.canvas.getElement()) self.set_status('Mousedown on Canvas at ' + str(x) + ', ' + str(y)) def onCanvasMouseup(self, obj, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft( self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop( self.canvas.getElement()) self.set_status('Mousemove on Canvas at ' + str(x) + ', ' + str(y)) def onCanvasMousemove(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft( self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop( self.canvas.getElement()) self.set_status('Mousemove on Canvas at ' + str(x) + ', ' + str(y)) def onCanvasDblClick(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft( self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop( self.canvas.getElement()) self.set_status('Doubleclick on Canvas at ' + str(x) + ', ' + str(y)) def onCanvasContextmenu(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft( self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop( self.canvas.getElement()) self.set_status('Contextmenue on Canvas at ' + str(x) + ', ' + str(y)) DOM.eventPreventDefault(event) def onElementMousedown(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft( self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop( self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status('Mousedown on Element ' + s + ' at ' + str(x) + ', ' + str(y)) DOM.eventCancelBubble(event, True) def onElementMouseup(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft( self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop( self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status('Mouseup on Element ' + s + ' at ' + str(x) + ', ' + str(y)) DOM.eventCancelBubble(event, True) def onElementMousemove(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft( self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop( self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status('Mousemove on Element ' + s + ' at ' + str(x) + ', ' + str(y)) DOM.eventCancelBubble(event, True) def onElementDblClick(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft( self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop( self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status('Doubleclick on Element ' + s + ' at ' + str(x) + ', ' + str(y)) DOM.eventCancelBubble(event, True) def onElementContextmenu(self, sender, event): x = DOM.eventGetClientX(event) - DOM.getAbsoluteLeft( self.canvas.getElement()) y = DOM.eventGetClientY(event) - DOM.getAbsoluteTop( self.canvas.getElement()) s = self.desc[self.elements.index(sender)] self.set_status('Contextmenue on Element ' + s + ' at ' + str(x) + ', ' + str(y)) DOM.eventCancelBubble(event, True) DOM.eventPreventDefault(event)
def __init__(self, width=600, height=300): SimplePanel.__init__(self) self.canvas = Raphael(width, height) self.add(self.canvas)
def __init__(self,width=600,height=300): SimplePanel.__init__(self) self.canvas = Raphael(width,height) self.add(self.canvas)
class GUI(VerticalPanel,GUI_Event): def __init__(self): """ Standard initialiser. """ VerticalPanel.__init__(self) GUI_Event.__init__(self) self.canvas = Raphael(900,700) #self.canvas.addListener('mousedown',self.test) #self.canvas.addListener('contextmenu',self.test) #self.tb = TextArea() #self.tb.setName("textBoxFormElement") #self.tb.setStyleAttribute({'position':'absolute', # 'top':'175px','left':'158px' # ,'color':COLOR['maroon'] # ,'background':COLOR['peachpuff'] # ,'background-color':COLOR['peachpuff']}) #self.tb.setSize(450,100) #self.tb.setReadonly('readonly') self.add(self.canvas) #self.add(self.tb) x = DOM.getAbsoluteLeft(self.canvas.getElement()) y = DOM.getAbsoluteTop(self.canvas.getElement()) self.offset = (x,y) ''' Empacotador.init() Menu.init() self.click_listeners = [] self.drag_listeners = [] self.drop_listeners = [] self.roll_listeners = [] self.act_listeners = [] self.do_up = self._do_up self.do_move = self._do_nothing self.do_down = self._do_down #self._do_nothing self._create() ''' def _inicia(self,game): self.game = game def _decorate(self,element): element.avatar = element return element def talk(self,msg='foi'): alert (msg) def test(self,elm,event,msg='foi'): location = None JS(''' location = window.location.hostname; ''') if 'localhost' == location: location +=':8004' return location x = DOM.eventGetClientX(event) y = DOM.eventGetClientY(event) alert ('%s %s %s'%(msg,x,y)) def create_game(self,game,title): self.game = game RootPanel().add(self) return self.inicia() def remove(self, element): if element in self.drop_listeners: self.drop_listeners.remove(element) element.remove() def text(self,x,y,texto,color='navajo white', size =16): t = self.canvas.text(x,y,texto) t.setAttrs({'fill':COLOR[color],'stroke':COLOR[color],'font-size':'%d'%size}) return t def path(self,path, width = 1, color='navajo white', background ='white'): #color:#000000;fill:#462813;fill-opacity:1;stroke:#d08554;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate pathParams = {'stroke' : COLOR[color], 'color' : color, 'fill' : COLOR[background], #'stroke-width' : width, #"%dpx"%width, 'stroke-linecap' : "round"} t = self.canvas.path(data=path,attrs=pathParams) return t def textarea(self,x,y,w,h,texto,color='navajo white', background ='white'): t = Text_Area(self,texto,x,y,w,h,color, background) return t #return self._decorate(t) def rect(self,x,y,dx,dy,color='navajo white', line =None): r = self.canvas.rect(x,y,dx-x,dy-y) r.setAttrs({'fill':COLOR[color],'stroke':line and COLOR[line] or COLOR[color]}) #r.addListener('click',self.test) #r.addListener('mousedown',self.test) #r.addListener('contextmenu',self.test) #return r return self._decorate(r) def image(self,glyph,x,y,dx,dy, l=None, f='png', buff=''): return Empacotador(self.canvas,glyph,x,y,dx,dy, l) def score(self,score,houses): score = j_p.encode(score) houses = j_p.encode(houses) DOM.setAttribute(self.scored,"value",score) DOM.setAttribute(self.housed,"value",houses) #self.talk(str((score,houses))) frm = self.__form JS(""" frm.submit() """) #self.__form.submit() return score def send(self,uid,**kwargs): score = j_p.encode(uid) message = dict(line= uid, _xsrf= self.x) message.update(kwargs) message = j_p.encode(message) self._socket.sending(message) def inicia(self): global IMAGEREPO self.__form = f = DOM.getElementById('mainform') self.x = DOM.getChild(f,0).value #DOM.getElementByName('_xsrf').value g = DOM.getChild(f,1).value self.scored = DOM.getChild(f,2) self.housed = DOM.getChild(f,3) if g == '12de6b622cbfe4d8f5c8d3347e56ae8c': IMAGEREPO = 'imagens/' #self.talk(self.scored.value+self.housed.value+IMAGEREPO) self._socket = NullSocket() #WebSocket("ws://%s/chatsocket"%self.test()) self._socket.register_receiver(self.game.receive) obj = j_p.wdecode(self.housed.value) #self.text(400,85, str(obj) ,'darkbrown',10) #obj = [dict(body='nonono')] return obj def receive(self,message = 'nono'): self.talk(message.line+ ':'+ message.body) def slate(self,source,x,y,w,h, element = None, l=None, f=None, buff= None): return Slate(self.canvas,source,x,y,w,h, l, f, buff) def icon(self):#,source,x,y,w,h, l=None, f=None, buff= None): return Menu(self.canvas)#source,x,y,w,h, l, f, buff) def flyer(self,source,x,y,w=16,h=16):#, l=None, f=None, buff= None): return Flyer(self.canvas,source,x,y,w,h)#source,x,y,w,h, l, f, buff)