Пример #1
0
 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")
Пример #2
0
    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")
Пример #3
0
 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")
Пример #4
0
 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")
Пример #5
0
    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()
Пример #6
0
    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
Пример #7
0
 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")
Пример #8
0
 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")
Пример #9
0
 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")
Пример #10
0
 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")
Пример #11
0
        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)
Пример #12
0
    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)