Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
 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)
Exemple #4
0
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])
Exemple #5
0
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])
Exemple #6
0
    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)
Exemple #7
0
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])
Exemple #8
0
 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)
Exemple #9
0
    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)
Exemple #10
0
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])
Exemple #11
0
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()
Exemple #12
0
    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)
Exemple #13
0
 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)
     '''
Exemple #14
0
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)
Exemple #16
0
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)
Exemple #17
0
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)
Exemple #18
0
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)
Exemple #19
0
 def __init__(self, width=600, height=300):
     SimplePanel.__init__(self)
     self.canvas = Raphael(width, height)
     self.add(self.canvas)
Exemple #20
0
 def __init__(self,width=600,height=300):
     SimplePanel.__init__(self)
     self.canvas = Raphael(width,height)   
     self.add(self.canvas)
Exemple #21
0
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)