|
@@ -72,6 +72,11 @@ global resolution
|
|
|
global wizerror
|
|
|
global translist
|
|
|
|
|
|
+if globalvar.CheckWxVersion(version=[4, 1, 0]):
|
|
|
+ search_cancel_evt = wx.EVT_SEARCH_CANCEL
|
|
|
+else:
|
|
|
+ search_cancel_evt = wx.EVT_SEARCHCTRL_CANCEL_BTN
|
|
|
+
|
|
|
|
|
|
class TitledPage(WizardPageSimple):
|
|
|
"""Class to make wizard pages. Generic methods to make labels,
|
|
@@ -480,9 +485,10 @@ class ProjectionsPage(TitledPage):
|
|
|
# search box
|
|
|
self.searchb = SearchCtrl(self, size=(200, -1),
|
|
|
style=wx.TE_PROCESS_ENTER)
|
|
|
+ self.searchb.ShowCancelButton(True)
|
|
|
|
|
|
# projection list
|
|
|
- self.projlist = ItemList(self, data=self.parent.projdesc.items(),
|
|
|
+ self.projlist = ItemList(self, data=list(self.parent.projdesc.items()),
|
|
|
columns=[_('Code'), _('Description')])
|
|
|
self.projlist.resizeLastColumn(30)
|
|
|
|
|
@@ -511,7 +517,8 @@ class ProjectionsPage(TitledPage):
|
|
|
|
|
|
# events
|
|
|
self.tproj.Bind(wx.EVT_TEXT, self.OnText)
|
|
|
- self.searchb.Bind(wx.EVT_TEXT_ENTER, self.OnSearch)
|
|
|
+ self.searchb.Bind(wx.EVT_TEXT, self.OnSearch)
|
|
|
+ self.searchb.Bind(search_cancel_evt, self.OnSearchCancel)
|
|
|
self.projlist.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected)
|
|
|
self.Bind(wiz.EVT_WIZARD_PAGE_CHANGING, self.OnPageChanging)
|
|
|
self.Bind(wiz.EVT_WIZARD_PAGE_CHANGED, self.OnEnterPage)
|
|
@@ -556,15 +563,19 @@ class ProjectionsPage(TitledPage):
|
|
|
|
|
|
def OnSearch(self, event):
|
|
|
"""Search projection by desc"""
|
|
|
- str = event.GetString()
|
|
|
+ search_str = event.GetString()
|
|
|
try:
|
|
|
self.proj, self.projdesc = self.projlist.Search(
|
|
|
- index=[0, 1], pattern=event.GetString())
|
|
|
+ index=[0, 1], pattern=search_str)
|
|
|
except:
|
|
|
self.proj = self.projdesc = ''
|
|
|
|
|
|
event.Skip()
|
|
|
|
|
|
+ def OnSearchCancel(self, event):
|
|
|
+ self.projlist.Search(index=None, pattern="")
|
|
|
+ event.Skip()
|
|
|
+
|
|
|
def OnItemSelected(self, event):
|
|
|
"""Projection selected"""
|
|
|
index = event.GetIndex()
|
|
@@ -600,13 +611,8 @@ class ItemList(ListCtrl,
|
|
|
for column in columns:
|
|
|
self.InsertColumn(i, column)
|
|
|
i += 1
|
|
|
- #
|
|
|
- # add some attributes
|
|
|
- #
|
|
|
- self.attr1 = wx.ListItemAttr()
|
|
|
- self.attr1.SetBackgroundColour(wx.Colour(238, 238, 238))
|
|
|
- self.attr2 = wx.ListItemAttr()
|
|
|
- self.attr2.SetBackgroundColour("white")
|
|
|
+
|
|
|
+ self.EnableAlternateRowColours()
|
|
|
|
|
|
if self.sourceData:
|
|
|
self.Populate()
|
|
@@ -704,14 +710,6 @@ class ItemList(ListCtrl,
|
|
|
def OnGetItemImage(self, item):
|
|
|
return -1
|
|
|
|
|
|
- def OnGetItemAttr(self, item):
|
|
|
- """Get item attributes"""
|
|
|
- index = self.itemIndexMap[item]
|
|
|
- if (index % 2) == 0:
|
|
|
- return self.attr2
|
|
|
- else:
|
|
|
- return self.attr1
|
|
|
-
|
|
|
def SortItems(self, sorter=cmp):
|
|
|
"""Sort items"""
|
|
|
items = list(self.itemDataMap.keys())
|
|
@@ -1008,6 +1006,7 @@ class DatumPage(TitledPage):
|
|
|
# search box
|
|
|
self.searchb = SearchCtrl(self, size=(200, -1),
|
|
|
style=wx.TE_PROCESS_ENTER)
|
|
|
+ self.searchb.ShowCancelButton(True)
|
|
|
|
|
|
# create list control for datum/elipsoid list
|
|
|
data = []
|
|
@@ -1047,7 +1046,8 @@ class DatumPage(TitledPage):
|
|
|
|
|
|
# events
|
|
|
self.datumlist.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnDatumSelected)
|
|
|
- self.searchb.Bind(wx.EVT_TEXT_ENTER, self.OnDSearch)
|
|
|
+ self.searchb.Bind(wx.EVT_TEXT, self.OnDSearch)
|
|
|
+ self.searchb.Bind(search_cancel_evt, self.OnSearchCancel)
|
|
|
self.tdatum.Bind(wx.EVT_TEXT, self.OnDText)
|
|
|
self.Bind(wiz.EVT_WIZARD_PAGE_CHANGING, self.OnPageChanging)
|
|
|
self.Bind(wiz.EVT_WIZARD_PAGE_CHANGED, self.OnEnterPage)
|
|
@@ -1139,19 +1139,23 @@ class DatumPage(TitledPage):
|
|
|
|
|
|
def OnDSearch(self, event):
|
|
|
"""Search geodetic datum by desc"""
|
|
|
- str = self.searchb.GetValue()
|
|
|
+ search_str = self.searchb.GetValue()
|
|
|
try:
|
|
|
self.datum, self.ellipsoid, self.datumdesc = self.datumlist.Search(
|
|
|
index=[
|
|
|
0,
|
|
|
1,
|
|
|
2],
|
|
|
- pattern=str)
|
|
|
+ pattern=search_str)
|
|
|
except:
|
|
|
self.datum = self.datumdesc = self.ellipsoid = ''
|
|
|
|
|
|
event.Skip()
|
|
|
|
|
|
+ def OnSearchCancel(self, event):
|
|
|
+ self.datumlist.Search(index=None, pattern="")
|
|
|
+ event.Skip()
|
|
|
+
|
|
|
def OnDatumSelected(self, event):
|
|
|
"""Datum selected"""
|
|
|
index = event.GetIndex()
|
|
@@ -1182,6 +1186,7 @@ class EllipsePage(TitledPage):
|
|
|
# search box
|
|
|
self.searchb = SearchCtrl(self, size=(200, -1),
|
|
|
style=wx.TE_PROCESS_ENTER)
|
|
|
+ self.searchb.ShowCancelButton(True)
|
|
|
# radio buttons
|
|
|
self.radio1 = wx.RadioButton(parent=self, id=wx.ID_ANY,
|
|
|
label=_("Earth based"),
|
|
@@ -1235,7 +1240,8 @@ class EllipsePage(TitledPage):
|
|
|
# events
|
|
|
self.ellipselist.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected)
|
|
|
self.tellipse.Bind(wx.EVT_TEXT, self.OnText)
|
|
|
- self.searchb.Bind(wx.EVT_TEXT_ENTER, self.OnSearch)
|
|
|
+ self.searchb.Bind(wx.EVT_TEXT, self.OnSearch)
|
|
|
+ self.searchb.Bind(search_cancel_evt, self.OnSearchCancel)
|
|
|
|
|
|
self.radio1.Bind(
|
|
|
wx.EVT_RADIOBUTTON,
|
|
@@ -1311,6 +1317,10 @@ class EllipsePage(TitledPage):
|
|
|
|
|
|
event.Skip()
|
|
|
|
|
|
+ def OnSearchCancel(self, event):
|
|
|
+ self.ellipselist.Search(index=None, pattern="")
|
|
|
+ event.Skip()
|
|
|
+
|
|
|
def OnItemSelected(self, event):
|
|
|
"""Ellipsoid selected"""
|
|
|
index = event.GetIndex()
|
|
@@ -1520,6 +1530,7 @@ class EPSGPage(TitledPage):
|
|
|
# search box
|
|
|
self.searchb = SearchCtrl(self, size=(200, -1),
|
|
|
style=wx.TE_PROCESS_ENTER)
|
|
|
+ self.searchb.ShowCancelButton(True)
|
|
|
|
|
|
self.epsglist = ItemList(
|
|
|
self,
|
|
@@ -1566,7 +1577,8 @@ class EPSGPage(TitledPage):
|
|
|
self.tfile.Bind(wx.EVT_TEXT_ENTER, self.OnBrowseCodes)
|
|
|
self.tcode.Bind(wx.EVT_TEXT, self.OnText)
|
|
|
self.epsglist.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected)
|
|
|
- self.searchb.Bind(wx.EVT_TEXT_ENTER, self.OnSearch)
|
|
|
+ self.searchb.Bind(wx.EVT_TEXT, self.OnSearch)
|
|
|
+ self.searchb.Bind(search_cancel_evt, self.OnSearchCancel)
|
|
|
self.Bind(wiz.EVT_WIZARD_PAGE_CHANGING, self.OnPageChanging)
|
|
|
self.Bind(wiz.EVT_WIZARD_PAGE_CHANGED, self.OnEnterPage)
|
|
|
|
|
@@ -1644,8 +1656,8 @@ class EPSGPage(TitledPage):
|
|
|
if value == '':
|
|
|
self.epsgcode = None
|
|
|
self.epsgdesc = self.epsgparams = ''
|
|
|
- self.tcode.SetValue('')
|
|
|
- self.searchb.SetValue('')
|
|
|
+ self.tcode.ChangeValue('')
|
|
|
+ self.searchb.ChangeValue('')
|
|
|
self.OnBrowseCodes(None)
|
|
|
else:
|
|
|
try:
|
|
@@ -1654,8 +1666,12 @@ class EPSGPage(TitledPage):
|
|
|
except (IndexError, ValueError): # -> no item found
|
|
|
self.epsgcode = None
|
|
|
self.epsgdesc = self.epsgparams = ''
|
|
|
- self.tcode.SetValue('')
|
|
|
+ self.tcode.ChangeValue('')
|
|
|
+
|
|
|
+ event.Skip()
|
|
|
|
|
|
+ def OnSearchCancel(self, event):
|
|
|
+ self.epsglist.Search(index=None, pattern="")
|
|
|
event.Skip()
|
|
|
|
|
|
def OnBrowse(self, event):
|
|
@@ -1747,6 +1763,7 @@ class IAUPage(TitledPage):
|
|
|
# search box
|
|
|
self.searchb = SearchCtrl(self, size=(200, -1),
|
|
|
style=wx.TE_PROCESS_ENTER)
|
|
|
+ self.searchb.ShowCancelButton(True)
|
|
|
|
|
|
self.epsglist = ItemList(
|
|
|
self,
|
|
@@ -1793,7 +1810,8 @@ class IAUPage(TitledPage):
|
|
|
self.tfile.Bind(wx.EVT_TEXT_ENTER, self.OnBrowseCodes)
|
|
|
self.tcode.Bind(wx.EVT_TEXT, self.OnText)
|
|
|
self.epsglist.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected)
|
|
|
- self.searchb.Bind(wx.EVT_TEXT_ENTER, self.OnSearch)
|
|
|
+ self.searchb.Bind(wx.EVT_TEXT, self.OnSearch)
|
|
|
+ self.searchb.Bind(search_cancel_evt, self.OnSearchCancel)
|
|
|
self.Bind(wiz.EVT_WIZARD_PAGE_CHANGING, self.OnPageChanging)
|
|
|
self.Bind(wiz.EVT_WIZARD_PAGE_CHANGED, self.OnEnterPage)
|
|
|
|
|
@@ -1902,6 +1920,10 @@ class IAUPage(TitledPage):
|
|
|
|
|
|
event.Skip()
|
|
|
|
|
|
+ def OnSearchCancel(self, event):
|
|
|
+ self.epsglist.Search(index=None, pattern="")
|
|
|
+ event.Skip()
|
|
|
+
|
|
|
def OnBrowse(self, event):
|
|
|
"""Define path for IAU code file"""
|
|
|
path = os.path.dirname(self.tfile.GetValue())
|