[GRASS-SVN] r41318 - in grass/trunk/gui/wxpython: . gui_modules

svn_grass at osgeo.org svn_grass at osgeo.org
Sun Mar 7 06:21:17 EST 2010


Author: martinl
Date: 2010-03-07 06:21:16 -0500 (Sun, 07 Mar 2010)
New Revision: 41318

Modified:
   grass/trunk/gui/wxpython/gis_set.py
   grass/trunk/gui/wxpython/gui_modules/location_wizard.py
   grass/trunk/gui/wxpython/gui_modules/utils.py
Log:
wxGUI/loc_wiz: bugfix #987
(merge r41316 from relbr64)


Modified: grass/trunk/gui/wxpython/gis_set.py
===================================================================
--- grass/trunk/gui/wxpython/gis_set.py	2010-03-07 11:10:27 UTC (rev 41317)
+++ grass/trunk/gui/wxpython/gis_set.py	2010-03-07 11:21:16 UTC (rev 41318)
@@ -396,7 +396,8 @@
     def OnWizard(self, event):
         """!Location wizard started"""
         from gui_modules import location_wizard
-        gWizard = location_wizard.LocationWizard(self, self.tgisdbase.GetValue())
+        gWizard = location_wizard.LocationWizard(parent = self,
+                                                 grassdatabase = self.tgisdbase.GetValue())
         if gWizard.location != None:
             self.OnSetDatabase(event)
             self.UpdateMapsets(os.path.join(self.gisdbase, gWizard.location))

Modified: grass/trunk/gui/wxpython/gui_modules/location_wizard.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/location_wizard.py	2010-03-07 11:10:27 UTC (rev 41317)
+++ grass/trunk/gui/wxpython/gui_modules/location_wizard.py	2010-03-07 11:21:16 UTC (rev 41318)
@@ -65,14 +65,6 @@
 global wizerror
 global translist
 
-coordsys = ''
-north = ''
-south = ''
-east = ''
-west = ''
-resolution = ''
-transformlist = []
-
 class BaseClass(wx.Object):
     """!Base class providing basic methods"""
     def __init__(self):
@@ -268,6 +260,7 @@
                                              "PROJ.4 parameters"))
         self.radio6 = wx.RadioButton(parent=self, id=wx.ID_ANY,
                                      label=_("Create an arbitrary non-earth coordinate system (XY)"))
+        
         # layout
         self.sizer.AddGrowableCol(1)
         self.sizer.SetVGap(10)
@@ -1302,13 +1295,13 @@
                                     style=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL)
         # text input
         epsgdir = utils.PathJoin(os.environ["GRASS_PROJSHARE"], 'epsg')
-        self.tfile = self.MakeTextCtrl(text=epsgdir, size=(200,-1))
+        self.tfile = self.MakeTextCtrl(text=epsgdir, size=(200,-1),
+                                       style = wx.TE_PROCESS_ENTER)
         self.tcode = self.MakeTextCtrl(size=(200,-1))
 
         # buttons
         self.bbrowse = self.MakeButton(_("Browse"))
-#        self.bbcodes = self.MakeButton(_("Reload EPSG Codes"))
-
+        
         # search box
         self.searchb = wx.SearchCtrl(self, size=(200,-1),
                                      style=wx.TE_PROCESS_ENTER)
@@ -1342,11 +1335,7 @@
                        flag=wx.ALIGN_LEFT |
                        wx.ALIGN_CENTER_VERTICAL |
                        wx.ALL, border=5, pos=(3, 3))
-#        self.sizer.Add(item=self.bbcodes,
-#                       flag=wx.ALIGN_LEFT |
-#                       wx.ALIGN_CENTER_VERTICAL |
-#                       wx.ALL, border=5, pos=(3, 4))
-
+        
         self.sizer.AddGrowableRow(4)
         self.sizer.Add(item=self.epsglist,
                        flag=wx.ALIGN_LEFT | wx.EXPAND, pos=(4, 1),
@@ -1354,7 +1343,7 @@
 
         # events
         self.bbrowse.Bind(wx.EVT_BUTTON, self.OnBrowse)
-#        self.bbcodes.Bind(wx.EVT_BUTTON, self.OnBrowseCodes)
+        self.tfile.Bind(wx.EVT_TEXT_ENTER, self.OnBrowseCodes)
         self.tcode.Bind(wx.EVT_TEXT, self.OnText)
         self.tcode.Bind(wx.EVT_TEXT_ENTER, self.OnText)
         self.epsglist.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected)
@@ -1454,15 +1443,15 @@
         path = os.path.dirname(self.tfile.GetValue())
         if not path:
             path = os.getcwd()
-
+        
         dlg = wx.FileDialog(parent=self, message=_("Choose EPSG codes file"),
                             defaultDir=path, defaultFile="", wildcard="*", style=wx.OPEN)
-
+        
         if dlg.ShowModal() == wx.ID_OK:
             path = dlg.GetPath()
             self.tfile.SetValue(path)
             self.OnBrowseCodes(None)
-
+        
         dlg.Destroy()
 
         event.Skip()
@@ -1481,18 +1470,19 @@
     def OnBrowseCodes(self, event, search=None):
         """!Browse EPSG codes"""
         self.epsgCodeDict = utils.ReadEpsgCodes(self.tfile.GetValue())
-        if type(self.epsgCodeDict) == type(''):
+
+        if type(self.epsgCodeDict) != dict:
             wx.MessageBox(parent=self,
                           message=_("Unable to read EPGS codes: %s") % self.epsgCodeDict,
                           caption=_("Error"),  style=wx.OK | wx.ICON_ERROR | wx.CENTRE)
-            self.epsglist.Populate([], update=True)
+            self.epsglist.Populate(list(), update=True)
             return
-
-        data = []
+        
+        data = list()
         for code, val in self.epsgCodeDict.iteritems():
             if code is not None:
                 data.append((code, val[0], val[1]))
-                
+        
         self.epsglist.Populate(data, update=True)
         
 class CustomPage(TitledPage):
@@ -1729,23 +1719,22 @@
             event.Skip()
 
 class LocationWizard(wx.Object):
-    """
+    """!
     Start wizard here and finish wizard here
     """
     def __init__(self, parent, grassdatabase):
+        self.__cleanUp()
+        
         global coordsys
         self.parent = parent
 
         #
         # define wizard image
         #
-        # file = "loc_wizard.png"
-        file = "loc_wizard_qgis.png"
-        imagePath = os.path.join(globalvar.ETCWXDIR, "images", file)
+        imagePath = os.path.join(globalvar.ETCWXDIR, "images", "loc_wizard_qgis.png")
         wizbmp = wx.Image(imagePath, wx.BITMAP_TYPE_PNG)
-        # wizbmp.Rescale(250,600)
         wizbmp = wizbmp.ConvertToBitmap()
-
+        
         #
         # get georeferencing information from tables in $GISBASE/etc
         #
@@ -1865,12 +1854,34 @@
                                     'err' : msg },
                               caption=_("Location wizard"),
                               style=wx.OK | wx.ICON_ERROR | wx.CENTRE)
-        else:
-            win = wx.MessageBox(parent=self.parent,
-                                message=_("Location wizard canceled. "
-                                          "Location not created."),
-                                caption=_("Location wizard"))
-    
+        else: # -> cancelled
+            self.wizard.Destroy()
+            wx.MessageBox(parent=self.parent,
+                          message=_("Location wizard canceled. "
+                                    "Location not created."),
+                          caption=_("Location wizard"),
+                          style=wx.OK | wx.ICON_INFORMATION | wx.CENTRE)
+        
+        self.__cleanUp()
+        
+    def __cleanUp(self):
+        global coordsys
+        global north
+        global south
+        global east
+        global west
+        global resolution
+        global wizerror
+        global translist
+        
+        coordsys = None
+        north = None
+        south = None
+        east = None
+        west = None
+        resolution = None
+        transformlist = list()
+
     def __readData(self):
         """!Get georeferencing information from tables in $GISBASE/etc"""
 

Modified: grass/trunk/gui/wxpython/gui_modules/utils.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/utils.py	2010-03-07 11:10:27 UTC (rev 41317)
+++ grass/trunk/gui/wxpython/gui_modules/utils.py	2010-03-07 11:21:16 UTC (rev 41318)
@@ -476,7 +476,11 @@
     """
     epsgCodeDict = dict()
     try:
-        f = open(path, "r")
+        try:
+            f = open(path, "r")
+        except IOError:
+            return _("failed to open '%s'" % path)
+        
         i = 0
         code = None
         for line in f.readlines():
@@ -488,15 +492,19 @@
                 descr = line[1:].strip()
             elif line[0] == '<':
                 code, params = line.split(" ", 1)
-                code = int(code.replace('<', '').replace('>', ''))
-
+                try:
+                    code = int(code.replace('<', '').replace('>', ''))
+                except ValueError:
+                    return e
+            
             if code is not None:
                 epsgCodeDict[code] = (descr, params)
                 code = None
             i += 1
+        
         f.close()
     except StandardError, e:
-        return str(e)
+        return e
     
     return epsgCodeDict
 



More information about the grass-commit mailing list