| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 
 |  
from app.wxviews.panels import *
from wx.lib.floatcanvas import FloatCanvas
from app.wxviews.items.noderepr import NodeRepr
from app.wxviews.drawers.nodedrawer import NodeDrawer
from app.wxviews.items.userrepr import UserRepr
from app.wxviews.drawers.userdrawer import UserDrawer
 
 
class PaintPanel(wx.Panel):
    """Canvas to let people draw networks"""
    def __init__(self, parent):
        super(PaintPanel, self).__init__(parent=parent)
        self.network = Engine.Instance().network
 
        szr = wx.BoxSizer()
        self.canvas = FloatCanvas.FloatCanvas(parent=self)
        szr.Add(self.canvas, proportion=1, flag=wx.EXPAND)
        self.SetSizer(szr)
 
        self.Bind(wx.EVT_RIGHT_UP, Engine.Instance().OnRightClick)
        self.canvas.Bind(wx.EVT_RIGHT_UP, Engine.Instance().OnRightClick)
 
        # The following is called a lambda expression:
        # It allows us to define functions on-the-go.
        # It is no more than a function without definition.
        self.canvas.Bind(wx.EVT_LEFT_UP, lambda event, panel=self.canvas: self.OnLeftClick(event))
        self.canvas.Bind(wx.EVT_PAINT, self.OnWindowBack)
        #self.canvas.Bind(wx.EVT_HIBERNATE)
 
    def OnWindowBack(self, event):
        self.Update()
        print("Refresh panel")
 
    def OnLeftClick(self, event):
        if Engine.Instance().toolbarClicked:
            dc = wx.ClientDC(self.canvas)
            if Engine.Instance().item == "Node":
                x, y = event.GetX(), event.GetY()
                frontNode = NodeRepr()
                frontNode.circle = FC.Circle(XY=(x, y), Diameter=NodeDrawer.size)
                dc.DrawCircle(frontNode.circle.XY[0], frontNode.circle.XY[1], NodeDrawer.size/2)
                Engine.Instance().releaseFocus()
                Engine.Instance().AddNode(frontNode)
            if Engine.Instance().item == "User":
                x, y = event.GetX(), event.GetY()
                frontUser = UserRepr()
                frontUser.rectangle = FC.Rectangle(XY=(x, y),WH=(100,100), FillColor='Blue' )
                dc.DrawRectangle(frontUser.rectangle.XY[0], frontUser.rectangle.XY[1])
                Engine.Instance().releaseFocus()
                #Engine.Instance().AddUser(frontUser)
            if Engine.Instance().item == "Branch":
                x, y = event.GetX(), event.GetY()
 
if __name__ == '__main__':
    pass | 
Partager