import wx import os.path from draggablemappanel import DraggableMapPanel from tilemanager import TileManager from tilefetcher_disc import TileFetcher_Disc from tilefetcher_memory import TileFetcher_Memory from tilefetcher_googlemaps import TileFetcher_GoogleMaps class StatusPanel(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent) self.mappanel = parent.panel txtsize = (200,-1) self.lontext = wx.TextCtrl(self, size = txtsize) self.lattext = wx.TextCtrl(self, size = txtsize) self.distance = wx.TextCtrl(self, size = txtsize) self.sizer = wx.BoxSizer(wx.HORIZONTAL) self.sizer.Add(wx.StaticText(self, label = "Lon: "), flag = wx.ALIGN_CENTER) self.sizer.Add(self.lontext, flag = wx.RIGHT, border = 20) self.sizer.Add(wx.StaticText(self, label = "Lat: "), flag = wx.ALIGN_CENTER) self.sizer.Add(self.lattext, flag = wx.RIGHT, border = 20) self.sizer.Add(wx.StaticText(self, label = "Distance: "), flag = wx.ALIGN_CENTER) self.sizer.Add(self.distance) self.SetAutoLayout(True) self.SetSizer(self.sizer) self.Layout() def setpos(self, lon, lat): self.lontext.SetValue("%0.5f" % lon) self.lattext.SetValue("%0.5f" % lat) self.distance.SetValue("%0.1f km" % self.mappanel.get_distance()) class MainWindow(wx.Frame): def __init__(self, parent = None, title = "Testi", size = (600,600), **kwargs): wx.Frame.__init__(self, parent, title = title, size = size, **kwargs) self.tilemanager = TileManager() self.tilemanager.fetchers.append(TileFetcher_Memory(self.tilemanager)) self.tilemanager.fetchers.append(TileFetcher_Disc(self.tilemanager, os.path.expanduser("~/googlemaps"))) self.tilemanager.fetchers.append(TileFetcher_GoogleMaps(self.tilemanager)) self.panel = DraggableMapPanel(self, self.tilemanager) self.status = StatusPanel(self) self.panel.mouseposcallback = self.status.setpos self.sizer = wx.BoxSizer(wx.VERTICAL) self.sizer.Add(self.panel, proportion = 1, flag = wx.EXPAND) self.sizer.Add(wx.StaticLine(self), flag = wx.EXPAND | wx.ALL, border = 5) self.sizer.Add(self.status, flag = wx.EXPAND) self.SetAutoLayout(True) self.SetSizer(self.sizer) self.Layout() class MyApp(wx.App): def OnInit(self): self.window = MainWindow() self.window.Show() return True if __name__ == '__main__': app = MyApp() app.MainLoop()