def __init__( self, Label, XY, WH, BackgroundColor="Yellow", TextColor="Black", InForeground=False, IsVisible=True, ): XY = N.asarray(XY, N.float).reshape(2) WH = N.asarray(WH, N.float).reshape(2) Label = FC.ScaledText(Label, XY, Size=WH[1] / 2.0, Color=TextColor, Position="cc") self.Ellipse = FC.Ellipse((XY - WH / 2.0), WH, FillColor=BackgroundColor, LineStyle=None) FC.Group.__init__(self, [self.Ellipse, Label], InForeground, IsVisible)
def __init__(self, node, config, InForeground=False, IsVisible=True): Label = node.name location = config.Point(node) self.connectors = sets.Set([]) BackgroundColor = config.getNodeColor(node) TextColor = config.getNodeTextColor(node) shape = config.getNodeShape(node) locationArray = N.asarray(location, N.float).reshape(2, ) WH = N.asarray(config.getRectangleSize(), N.float).reshape(2, ) #print "Node %s: Location = %s, WH = %s"%(Label, locationArray, WH) self.Node = node scaler = 1. + len(Label) / 7.0 self.Label = FC.ScaledText( Label, locationArray, Size=WH[1] / scaler, Color=TextColor, Position='cc', ) if shape == "rectangle": self.Shape = FC.Rectangle( (locationArray - WH / 2.0), WH, FillColor=BackgroundColor, LineStyle=None, ) elif shape == "ellipse": self.Shape = FC.Ellipse( (locationArray - WH / 2.0), WH, FillColor=BackgroundColor, LineStyle=None, ) else: print "Error. Unknown shape: %s" % (shape, ) FC.Group.__init__(self, [self.Shape, self.Label], InForeground, IsVisible)
def __init__(self, *args, **kwargs): wx.Frame.__init__(self, *args, **kwargs) self.CreateStatusBar() # Add the Canvas NC = NavCanvas.NavCanvas( self, -1, size=(500, 500), ProjectionFun=None, Debug=0, BackgroundColor="DARK SLATE BLUE", ) Canvas = NC.Canvas self.Canvas = Canvas self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) Point = (45, 40) ## create a few Objects: C = FloatCanvas.Circle((0, 0), 10, FillColor="Red") R = FloatCanvas.Rectangle((5, 5), (15, 8), FillColor="Blue") E = FloatCanvas.Ellipse((1.5, 1.5), (12, 8), FillColor="Purple") C2 = FloatCanvas.Circle((0, 5), 10, FillColor="cyan") T = FloatCanvas.Text("Group A", (5.5, 5.5), Position="cc", Size=16, Weight=wx.BOLD, Family=wx.SWISS) self.GroupA = FloatCanvas.Group((R, C, E)) self.GroupA.AddObjects((C2, T)) Canvas.AddObject(self.GroupA) ## create another Groups of objects R = FloatCanvas.Rectangle((15, 15), (10, 18), FillColor="orange") E = FloatCanvas.Ellipse((22, 28), (12, 8), FillColor="yellow") C = FloatCanvas.Circle((25, 20), 15, FillColor="Green") C2 = FloatCanvas.Circle((12, 22), 10, FillColor="cyan") T = FloatCanvas.Text("Group B", (19, 24), Position="cc", Size=16, Weight=wx.BOLD, Family=wx.SWISS) self.GroupB = FloatCanvas.Group((R, E, C, C2, T)) Canvas.AddObject(self.GroupB) self.Groups = {"A": self.GroupA, "B": self.GroupB} # Add a couple of tools to the Canvas Toolbar tb = NC.ToolBar # tb.AddSeparator() for Group in self.Groups: Button = wx.Button(tb, wx.ID_ANY, "Remove %s" % Group) tb.AddControl(Button) Button.Bind(wx.EVT_BUTTON, lambda evt, group=Group: self.RemoveGroup(evt, group)) Button = wx.Button(tb, wx.ID_ANY, "Replace%s" % Group) tb.AddControl(Button) Button.Bind(wx.EVT_BUTTON, lambda evt, group=Group: self.ReplaceGroup(evt, group)) tb.Realize() self.Show() Canvas.ZoomToBB()
def ellipse(self, xy, wh, s): self.shape = fc.Ellipse(xy, wh) self.shape.pair = self self.create_text(s)