def __init__(self, *args, **kwargs): self.mapwidget = kwargs.pop('map', None) self.timewidget = kwargs.pop('time', None) wx.Panel.__init__(self, *args, **kwargs) self.id = wx.NewId() sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(sizer) self.widthlabel = wx.StaticText(self, wx.NewId(), "Map width:") self.heightlabel = wx.StaticText(self, wx.NewId(), "Map height:") self.osdlabel = wx.StaticText(self, wx.NewId(), "Current path: empty") self.moreinfolabel = wx.StaticText(self, wx.NewId(), "More informations:") sizer.Add(self.widthlabel, 0, wx.TOP) sizer.Add(self.heightlabel, 0, wx.TOP) sizer.Add(self.osdlabel, 0, wx.TOP) sizer.Add(self.moreinfolabel, 0, wx.TOP) self.text = wx.TextCtrl(self, style=wx.TE_MULTILINE | wx.TE_RICH2, size=(-1, 1200)) sizer.Add(self.text, 0, wx.TOP | wx.EXPAND) self.measurelayer = wxMeasureMapLayer(self.mapwidget) self.mapwidget.AppendLayer(self.measurelayer) self.measurelayer.RegisterPanel(self) self.mapwidget.GetNamedLayer("Gpx tools").AppendTool( WxMapButton("Measure", WxMapImage.FromBase64(meas64), self.measurelayer.SetActive)) #custom events msgwrap.register(self.OnSigCurChanged, "CurChanged") msgwrap.register(self.OnSigSelChanged, "SelChanged") msgwrap.register(self.OnSigValChanged, "ValChanged")
def __init__(self, *args, **kwargs): self.mapwidget = kwargs.pop('map', None) self.timewidget = kwargs.pop('time', None) wx.Panel.__init__(self, *args, **kwargs) self.id = wx.NewId() self.key = 'speed' self.gpx = None sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(sizer) self.l1 = wx.StaticText(self, wx.NewId(), "Value:") #self.l2=wx.StaticText(self,wx.NewId(),"Map height:") #self.l3=wx.StaticText(self,wx.NewId(),"Current path: empty") self.peakmeter = pm.PeakMeterCtrl(self, -1, style=wx.SIMPLE_BORDER, agwStyle=pm.PM_VERTICAL) self.peakmeter.SetMaxSize(wx.Size(20, 1200)) self.peakmeter.SetMeterBands(1, 20) self.peakmeter.SetBandsColour(wx.GREEN, wx.YELLOW, wx.RED) self.peakmeter.SetRangeValue(10, 20, 22) self.peakmeter.SetData([12], 0, 1) sizer.Add(self.l1, 0, wx.CENTER) #sizer.Add(self.l2,0,wx.CENTER) #sizer.Add(self.l3,0,wx.CENTER) sizer.Add(self.peakmeter, 0, wx.CENTER) self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftMouseDblClick) msgwrap.register(self.OnSigCurChanged, signal="CurChanged") msgwrap.register(self.OnSigSelChanged, signal="SelChanged") msgwrap.register(self.OnSigValChanged, signal="ValChanged")
def __init__(self, *args, **kwargs): self.mapwidget = kwargs.pop('map', None) self.timewidget = kwargs.pop('time', None) wx.Panel.__init__(self, *args, **kwargs) self.id = wx.NewId() sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(sizer) self.html = wx.html2.WebView.New(self) if not getattr(sys, "frozen", False): self.html.LoadURL("file:///" + os.path.dirname(os.path.abspath(__file__)) + "/../docs/Readme.html") else: self.html.LoadURL("file:///" + os.path.dirname(sys.executable) + os.sep + "docs/Readme.html") sizer.Add(self.html, wx.CENTER | wx.EXPAND) #standard events self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftMouseDown) self.Bind(wx.EVT_LEFT_UP, self.OnLeftMouseUp) self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftMouseDblClick) self.Bind(wx.EVT_MOTION, self.OnMouseMotion) self.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnter) self.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseLeave) self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightMouseDown) self.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnErase) #custom events msgwrap.register(self.OnSigCurChanged, "CurChanged") msgwrap.register(self.OnSigSelChanged, "SelChanged") msgwrap.register(self.OnSigValChanged, "ValChanged")
def __init__(self, *args, **kwargs): self.mapwidget = kwargs.pop('map', None) self.timewidget = kwargs.pop('time', None) wx.Panel.__init__(self, *args, **kwargs) self.id = wx.NewId() sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(sizer) self.text = wx.TextCtrl(self, style=wx.TE_MULTILINE | wx.TE_RICH2) self.text.AppendText("Statistics:\n") sizer.Add(self.text, wx.CENTER | wx.EXPAND) #standard events self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftMouseDown) self.Bind(wx.EVT_LEFT_UP, self.OnLeftMouseUp) self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftMouseDblClick) self.Bind(wx.EVT_MOTION, self.OnMouseMotion) self.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnter) self.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseLeave) self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightMouseDown) self.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnErase) #custom events msgwrap.register(self.OnSigCurChanged, "CurChanged") msgwrap.register(self.OnSigSelChanged, "SelChanged") msgwrap.register(self.OnSigValChanged, "ValChanged")
def __init__(self, *args, **kwargs): self.mapwidget = kwargs.pop('map', None) self.timewidget = kwargs.pop('time', None) wx.Panel.__init__(self, *args, **kwargs) self.id = wx.NewId() sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(sizer) self.runbutton = wx.Button(self, 0, "Run the script file below...") self.runbutton.Bind(wx.EVT_BUTTON, self.OnRunButtonClicked) sizer.Add(self.runbutton, 0, wx.EXPAND) #if not getattr(sys,"frozen",False): # self.scriptpath=os.path.dirname(os.path.abspath(__file__))+os.sep+".."+os.sep+"scripts/" #else: # self.scriptpath=os.path.dirname(sys.executable)+os.sep+"scripts/" #scriptlist=sorted(os.listdir(self.scriptpath)) scriptlist = self.scanscripts() self.lastscripts = ['Browse file...'] scriptlist.append(self.lastscripts[0]) self.scriptcombo = wx.ComboBox(self, choices=scriptlist, style=wx.CB_READONLY) self.scriptcombo.SetValue(self.lastscripts[0]) self.lastscript = self.lastscripts[0] self.Bind(wx.EVT_COMBOBOX_DROPDOWN, self.UpdateScripts, self.scriptcombo) sizer.Add(self.scriptcombo, 0, wx.EXPAND) self.pyshell = shell.Shell(self, -1, introText='Python Shell') sizer.Add(self.pyshell, 1, wx.EXPAND) self.gpx = None #standard events self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftMouseDown) self.Bind(wx.EVT_LEFT_UP, self.OnLeftMouseUp) self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftMouseDblClick) self.Bind(wx.EVT_MOTION, self.OnMouseMotion) self.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnter) self.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseLeave) self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightMouseDown) self.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel) self.Bind(wx.EVT_PAINT, self.OnPaint) #self.Bind(wx.EVT_SIZE,self.OnSize) self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnErase) #custom events msgwrap.register(self.OnSigCurChanged, "CurChanged") msgwrap.register(self.OnSigSelChanged, "SelChanged") msgwrap.register(self.OnSigValChanged, "ValChanged") self.pyshell.interp.locals = {} self.Link()
def __init__(self, *args, **kwargs): self.mapwidget = kwargs.pop('map', None) self.timewidget = kwargs.pop('time', None) wx.Panel.__init__(self, *args, **kwargs) self.id = wx.NewId() self.gpxfig = Figure() self.ax = self.gpxfig.add_subplot(111) self.gpxfig.subplots_adjust(right=0.9, left=0.06) # canvas and events self.gpxcanvas = FigureCanvas(self, -1, self.gpxfig) self.gpxcanvas.mpl_connect('draw_event', self.OnDraw) self.gpxcanvas.mpl_connect('scroll_event', self.OnMouseWheel) self.gpxcanvas.mpl_connect('button_press_event', self.OnLeftMouseDown) self.gpxcanvas.mpl_connect('button_release_event', self.OnLeftMouseUp) self.gpxcanvas.mpl_connect('motion_notify_event', self.OnMouseMotion) self.gpxcanvas.mpl_connect('resize_event', self.OnSize) self.gpxcanvas.mpl_connect('figure_enter_event', self.OnMouseEnter) self.gpxcanvas.mpl_connect('figure_leave_event', self.OnMouseLeave) self.sizer = wx.BoxSizer(wx.VERTICAL) self.sizer.Add(self.gpxcanvas, 1, wx.LEFT | wx.TOP | wx.GROW | wx.EXPAND) self.SetSizer(self.sizer) msgwrap.register(self.OnSigCurChanged, "CurChanged") msgwrap.register(self.OnSigSelChanged, "SelChanged") msgwrap.register(self.OnSigValChanged, "ValChanged") #that code does not work on linux... color = wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE) self.gpxfig.set_facecolor( (color.red / 255.0, color.green / 255.0, color.blue / 255.0)) self.gpxfig.set_edgecolor( (color.red / 255.0, color.green / 255.0, color.blue / 255.0)) self.gpxcanvas.SetBackgroundColour(color) self.dragging = False #plugin specific initialization self.xsrc = 'speed' self.ysrc = 'speed' self.autoscale = True self.grid = False self.kwargs={'color':'#0000FF',\ 'marker':'o'} self.grid = False
def __init__(self, *args, **kwargs): self.mapwidget = kwargs.pop('map', None) self.timewidget = kwargs.pop('time', None) wx.Panel.__init__(self, *args, **kwargs) self.id = wx.NewId() self.key = 'speed' self.gpx = None self.current = 0 self.size = 150 sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(sizer) self.l1 = wx.StaticText(self, wx.NewId(), "Value:") self.speedmeter = sm.SpeedMeter( self, agwStyle=sm.SM_DRAW_HAND | sm.SM_DRAW_SECTORS | sm.SM_DRAW_MIDDLE_TEXT | sm.SM_DRAW_SECONDARY_TICKS | sm.SM_ROTATE_TEXT) self.speedmeter.SetSpeedBackground( wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DFACE)) self.speedmeter.SetMinSize(wx.Size(self.size, self.size)) self.speedmeter.SetAngleRange(-math.pi / 6, 7 * math.pi / 6) self.speedmeter.SetIntervals(range(0, 201, 20)) self.speedmeter.SetIntervalColours([wx.BLACK] * 10) self.speedmeter.SetTicks( [str(interval) for interval in range(0, 201, 20)]) self.speedmeter.SetTicksColour(wx.WHITE) self.speedmeter.SetNumberOfSecondaryTicks(5) self.speedmeter.SetTicksFont(wx.Font(9, wx.SWISS, wx.NORMAL, wx.NORMAL)) self.speedmeter.SetMiddleText("Km/h") self.speedmeter.SetMiddleTextColour(wx.WHITE) self.speedmeter.SetMiddleTextFont( wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD)) self.speedmeter.SetHandColour(wx.Colour(255, 50, 0)) self.speedmeter.DrawExternalArc(False) self.speedmeter.SetSpeedValue(44) self.speedmeter.Show() sizer.Add(self.l1, 0, wx.CENTER) sizer.Add(self.speedmeter, 0, wx.CENTER | wx.EXPAND) self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftMouseDblClick) #custom events msgwrap.register(self.OnSigCurChanged, "CurChanged") msgwrap.register(self.OnSigSelChanged, "SelChanged") msgwrap.register(self.OnSigValChanged, "ValChanged")
def __init__(self, *args, **kwargs): WxMapLayer.__init__(self, *args, **kwargs) self.id = wx.NewId() self.name = "Gpx layer" self.gpx = None self.current_x = 0 self.current_y = 0 self.current = 0 self.trackcolorkey = 'speed' self.trackcolordefault = (1.0, 0.0, 0.0, 1.0) self.currentcolor = (0.0, 1.0, 0.0, 1.0) self.currentmagkey = 'speed' self.currentthetakey = 'course' self.currentindic = 'Arrowhead' self.currentzoom = 25 self.linewidth = 2.0 msgwrap.register(self.OnSigCurChanged, "CurChanged") msgwrap.register(self.OnSigSelChanged, "SelChanged") msgwrap.register(self.OnSigValChanged, "ValChanged")
def __init__(self, *args, **kwargs): self.mapwidget = kwargs.pop('map', None) self.timewidget = kwargs.pop('time', None) wx.Panel.__init__(self, *args, **kwargs) self.id = wx.NewId() self.gpx = None self.waypoints = [] self.disableoutside = True self.results = [] sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(sizer) self.osdlabel = wx.StaticText(self, wx.NewId(), "Number or doors: 0") self.waypointsTE = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE | wx.TE_PROCESS_ENTER | wx.TE_DONTWRAP, size=(200, 75)) self.analysebutton = wx.Button(self, -1, "Analyse") self.resultsgrid = SimpleGrid(self) self.resultsgrid.SetHeaders([ 'lap', 'start', 'stop', 'duration', 'distance', 'avg speed', 'top speed' ]) sizer.Add(self.osdlabel, 0, wx.TOP) sizer.Add(self.waypointsTE, 0, wx.TOP | wx.ALL | wx.CENTER | wx.EXPAND) sizer.Add(self.analysebutton, 0, wx.TOP | wx.CENTER) sizer.Add(wx.StaticText(self, wx.NewId(), "Results:"), 0, wx.TOP) sizer.Add(self.resultsgrid, 0, wx.TOP | wx.ALL | wx.CENTER | wx.EXPAND) self.waypointslayer = wxWaypointLayer(self.mapwidget, "Waypoints layer") self.mapwidget.AppendLayer(self.waypointslayer) self.waypointslayer.RegisterPanel(self) self.mapwidget.GetNamedLayer("Gpx tools").AppendTool( WxMapButton("Waypoints", WxMapImage.FromBase64(flag64), self.waypointslayer.SetActive)) self.waypointsTE.Bind(wx.EVT_TEXT_ENTER, self.OnTextEnter) self.waypointsTE.Bind(wx.EVT_KEY_DOWN, self.OnTextKeydown) self.analysebutton.Bind(wx.EVT_BUTTON, self.OnAnalyseButton) #custom events msgwrap.register(self.OnSigCurChanged, "CurChanged") msgwrap.register(self.OnSigSelChanged, "SelChanged") msgwrap.register(self.OnSigValChanged, "ValChanged")
def __init__(self, *args, **kwargs): self.mapwidget = kwargs.pop('map', None) self.timewidget = kwargs.pop('time', None) wx.Panel.__init__(self,*args, **kwargs) self.id=wx.NewId() self.gpxgrid=WxGpxGrid(self) #standard events #self.Bind(wx.EVT_LEFT_DOWN,self.OnLeftMouseDown) #self.Bind(wx.EVT_LEFT_UP,self.OnLeftMouseUp) #self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftMouseDblClick) #self.Bind(wx.EVT_MOTION,self.OnMouseMotion) #self.Bind(wx.EVT_ENTER_WINDOW,self.OnMouseEnter) #self.Bind(wx.EVT_LEAVE_WINDOW,self.OnMouseLeave) #self.Bind(wx.EVT_RIGHT_DOWN,self.OnRightMouseDown) #self.Bind(wx.EVT_MOUSEWHEEL,self.OnMouseWheel) #self.Bind(wx.EVT_PAINT,self.OnPaint) self.Bind(wx.EVT_SIZE,self.OnSize) #self.Bind(wx.EVT_ERASE_BACKGROUND,self.OnErase) #custom events msgwrap.register(self.OnSigCurChanged, "CurChanged") msgwrap.register(self.OnSigSelChanged, "SelChanged") msgwrap.register(self.OnSigValChanged, "ValChanged")
def __init__(self, parent, id, title, size=(500,500)): wx.Frame.__init__(self, parent,id,size=(750,500),title=title,style=wx.DEFAULT_FRAME_STYLE) self.Bind(wx.EVT_CLOSE, self.OnClose) #self.id=wx.NewId() # deprecated in wxPython phonix self.id=wx.Window.NewControlId() self.gpx=None self.replaytimer=None self.selstart=0 self.selstop=0 self.plugins={} # mappanel raises errors on invalid images, which are displayed in dialogs. # this redirects error logging to stderr wx.Log.SetActiveTarget(wx.LogStderr()) # standard initialisation of default values self.config=configparser.ConfigParser() self.config.read(thispath()+os.sep+"wxgpgpsport.ini") if not self.config.get("map","map_cache") or self.config.get("map","map_cache")=="default": map_cache=None elif os.path.isabs(self.config.get("map","map_cache")): map_cache=os.path.normpath(self.config.get("map","map_cache")) else: map_cache=os.path.normpath(thispath()+os.sep+self.config.get("map","map_cache")) #building interface self.InitMenus() panel = wx.Panel(self, -1) fdtarget=MainFrameDropTarget(self) #panel.SetDropTarget(fdtarget) hsplitter=wx.SplitterWindow(self,style=wx.SP_3D|wx.SP_3DSASH|wx.SP_BORDER|wx.SP_LIVE_UPDATE) vsplitter=wx.SplitterWindow(hsplitter,style=wx.SP_3D|wx.SP_3DSASH|wx.SP_BORDER|wx.SP_LIVE_UPDATE) hsplitter.SetSashGravity(0.666) vsplitter.SetSashGravity(0.500) # time panel self.timewidget=wxlinescatterwidget.WxTimeWidget(hsplitter) self.timewidget.SetDropTarget(fdtarget) # map widget self.mapwidget=wxmapwidget.WxMapWidget(vsplitter,usegl=self.config.getboolean("map","map_usegl"),\ localcache=map_cache,\ numthreads=self.config.getint("map","map_numthreads"),\ style=wx.BORDER_SUNKEN) #self.mapwidget=wxmapwidget.WxMapWidget(vsplitter,usegl=False,localcache=map_cache,style=wx.BORDER_SUNKEN) self.mapwidget.mapproviders=[] providers=self.config.get("map","tile_providers") for l in providers.split('\n'): self.mapwidget.AppendTileProvider(*tuple(l.split(','))) self.mapwidget.SetMapSrc(self.config.get("map","map_source")) self.mapwidget.SetUserAgent(self.config.get("map","http_user_agent")) self.mapwidget.SetDropTarget(fdtarget) # notebook # on OSX, the native notebook control does not allow for a large number of tabs # so we use a specific aui notebook with specific style to dismiss close button # or a wx.Choicebook # notebook=wx.Notebook(vsplitter) # notebook=wx.Choicebook(vsplitter,wx.ID_ANY) self.notebook=wx.aui.AuiNotebook(vsplitter,style=wx.aui.AUI_NB_DEFAULT_STYLE&~(wx.aui.AUI_NB_CLOSE_ON_ACTIVE_TAB)) # pack everything... hsplitter.SplitHorizontally(vsplitter, self.timewidget) vsplitter.SplitVertically(self.mapwidget, self.notebook) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(hsplitter, 1, wx.EXPAND) self.SetSizer(sizer) # status bar self.sb = wxstatusbarwidget.wxStatusBarWidget(self) self.SetStatusBar(self.sb) msgwrap.register(self.OnSigCurChanged, "CurChanged") msgwrap.register(self.OnSigSelChanged, "SelChanged") msgwrap.register(self.OnSigValChanged, "ValChanged") self.Show() self.mapwidget.Draw(True)
def __init__(self, *args, **kwargs): kwargs['style'] = kwargs.setdefault( 'style', wx.NO_FULL_REPAINT_ON_RESIZE) | wx.NO_FULL_REPAINT_ON_RESIZE wx.Panel.__init__(self, *args, **kwargs) self.id = wx.NewId() self.plot1 = 'none' self.plot2 = 'none' self.plot3 = 'none' self.lineprops1 = wxLineProps({'color': '#990000', 'fill': True}) self.lineprops2 = wxLineProps({'color': '#009900', 'fill': True}) self.lineprops3 = wxLineProps({'color': '#000099', 'fill': True}) self.autoy1 = True self.autoy2 = True self.autoy3 = True self.smooth1 = 1 self.smooth2 = 1 self.smooth3 = 1 self.xaxis = '' self.press = False self.cursor = None self.span = None self.selstart = 0 self.selstop = 0 self.enablecursor = True self.enablespan = True self.cursorcolor = '#FF0000' self.cursorwidth = 1 self.gpxfig = Figure() self.ax1 = self.gpxfig.add_subplot( 1, 1, 1 ) # create a grid of 1 row, 1 col and put a subplot in the first cell of this grid self.gpxfig.subplots_adjust(right=0.9, left=0.06) self.ax2 = self.ax1.twinx() #self.ax2.spines["left"].set_visible(False) self.ax3 = self.ax1.twinx() self.ax3.spines["right"].set_position(("axes", self.axis_offset)) #self.ax3.spines["left"].set_visible(False) # canvas and events self.gpxcanvas = FigureCanvas(self, -1, self.gpxfig) self.gpxcanvas.mpl_connect('scroll_event', self.OnMouseWheel) self.gpxcanvas.mpl_connect('button_press_event', self.OnLeftMouseDown) self.gpxcanvas.mpl_connect('button_release_event', self.OnLeftMouseUp) self.gpxcanvas.mpl_connect('motion_notify_event', self.OnMouseMotion) self.gpxcanvas.mpl_connect('resize_event', self.OnSize) self.gpxcanvas.mpl_connect('figure_enter_event', self.OnMouseEnter) self.gpxcanvas.mpl_connect('figure_leave_event', self.OnMouseLeave) self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightMouseDown) self.sizer = wx.BoxSizer(wx.VERTICAL) self.sizer.Add(self.gpxcanvas, 1, wx.LEFT | wx.TOP | wx.GROW | wx.EXPAND) self.SetSizer(self.sizer) #self.OnSize(None) msgwrap.register(self.OnSigCurChanged, signal="CurChanged") msgwrap.register(self.OnSigSelChanged, signal="SelChanged") msgwrap.register(self.OnSigValChanged, signal="ValChanged") #set background color to pure white #that code does not work on linux... #color = wx.SystemSettings.GetColour(wx.wx.SYS_COLOUR_BTNFACE) color = wx.Colour(255, 255, 255) self.gpxfig.set_facecolor( (color.red / 255.0, color.green / 255.0, color.blue / 255.0)) self.gpxfig.set_edgecolor( (color.red / 255.0, color.green / 255.0, color.blue / 255.0)) self.gpxfig.set_edgecolor((0.0, 0.0, 0.0)) self.gpxcanvas.SetBackgroundColour(color) # create right now the popup menu self.select_menu = wx.Menu() for text in ["Disable selected",\ "Enable selected",\ "Delete selected",\ "Disable non selected",\ "Enable non selected",\ "Delete non selected",\ "Toggle points"]: item = self.select_menu.Append(wx.NewId(), text) self.Bind(wx.EVT_MENU, self.OnPopup, item)