[GRASS-SVN] r48269 - grass/branches/releasebranch_6_4/gui/wxpython/gui_modules

svn_grass at osgeo.org svn_grass at osgeo.org
Tue Sep 13 12:48:54 EDT 2011


Author: martinl
Date: 2011-09-13 09:48:54 -0700 (Tue, 13 Sep 2011)
New Revision: 48269

Modified:
   grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/gselect.py
Log:
wxGUI/GDALImporter: add widget for defining extension in directory mode
		    (merge r48008 & r48009 from devbr6)


Modified: grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/gselect.py
===================================================================
--- grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/gselect.py	2011-09-13 16:28:07 UTC (rev 48268)
+++ grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/gselect.py	2011-09-13 16:48:54 UTC (rev 48269)
@@ -1055,7 +1055,7 @@
                                         label=" %s " % _("Settings"))
         
         self.inputBox = wx.StaticBox(parent = self, id=wx.ID_ANY,
-                                     label=" %s " % _("Source name"))
+                                     label=" %s " % _("Source"))
         
         # source type
         sources = list()
@@ -1153,6 +1153,9 @@
         self.format = FormatSelect(parent = self,
                                    ogr = ogr)
         self.format.Bind(wx.EVT_CHOICE, self.OnSetFormat)
+        self.extension = wx.TextCtrl(parent = self, id = wx.ID_ANY)
+        self.extension.Bind(wx.EVT_TEXT, self.OnSetExtension)
+        self.extension.Hide()
         
         if ogr:
             fType = 'ogr'
@@ -1179,18 +1182,20 @@
         self.input[self.dsnType][1].Show()
         self.format.SetItems(self.input[self.dsnType][2])
         
-        if not ogr:
-            self.format.SetStringSelection('GeoTIFF')
-        else:
-            self.format.SetStringSelection('ESRI Shapefile')
-        
         self.dsnText = wx.StaticText(parent = self, id = wx.ID_ANY,
                                      label = self.input[self.dsnType][0],
                                      size = (75, -1))
-        self.formatText = wx.StaticText(parent = self, id = wx.ID_ANY,
-                                        label = _("Format:"))
+        self.extensionText = wx.StaticText(parent = self, id = wx.ID_ANY,
+                                           label = _("Extension:"))
+        self.extensionText.Hide()
+        
         self._layout()
         
+        if not ogr:
+            self.OnSetFormat(event = None, format = 'GeoTIFF')
+        else:
+            self.OnSetFormat(event = None, format = 'ESRI Shapefile')
+        
     def _layout(self):
         """!Layout"""
         mainSizer = wx.BoxSizer(wx.VERTICAL)
@@ -1210,23 +1215,30 @@
         
         inputSizer = wx.StaticBoxSizer(self.inputBox, wx.HORIZONTAL)
         
-        self.dsnSizer = wx.GridBagSizer(vgap=3, hgap=3)
+        self.dsnSizer = wx.GridBagSizer(vgap = 3, hgap = 3)
         self.dsnSizer.AddGrowableRow(1)
-        self.dsnSizer.AddGrowableCol(1)
+        self.dsnSizer.AddGrowableCol(3)
         
         self.dsnSizer.Add(item=self.dsnText,
                           flag=wx.ALIGN_CENTER_VERTICAL,
                           pos = (0, 0))
         self.dsnSizer.Add(item=self.input[self.dsnType][1],
                           flag = wx.ALIGN_CENTER_VERTICAL | wx.EXPAND,
-                          pos = (0, 1))
+                          pos = (0, 1), span = (1, 3))
         
-        self.dsnSizer.Add(item=self.formatText,
-                          flag=wx.ALIGN_CENTER_VERTICAL,
+        self.dsnSizer.Add(item = wx.StaticText(parent = self, id = wx.ID_ANY,
+                                               label = _("Format:")),
+                          flag = wx.ALIGN_CENTER_VERTICAL,
                           pos = (1, 0))
         self.dsnSizer.Add(item=self.format,
                           flag = wx.ALIGN_CENTER_VERTICAL,
                           pos = (1, 1))
+        self.dsnSizer.Add(item = self.extensionText,
+                          flag=wx.ALIGN_CENTER_VERTICAL,
+                          pos = (1, 2))
+        self.dsnSizer.Add(item=self.extension,
+                          flag = wx.ALIGN_CENTER_VERTICAL,
+                          pos = (1, 3))
         
         inputSizer.Add(item=self.dsnSizer, proportion=1,
                        flag=wx.EXPAND | wx.ALL)
@@ -1353,6 +1365,7 @@
                                               changeCallback=self.OnSetDsn,
                                               fileMask = format)
             self.input[self.dsnType][1] = win
+        
         elif sel == self.sourceMap['dir']: # directory
             self.dsnType = 'dir'
         elif sel == self.sourceMap['db']: # database
@@ -1378,14 +1391,24 @@
                 self.OnSetFormat(event = None, format = 'GeoTIFF')
             else:
                 self.OnSetFormat(event = None, format = 'ESRI Shapefile')
-        elif sel == self.sourceMap['pro']:
-            win = self.input[self.dsnType][1]
-            self.dsnSizer.Add(item=self.input[self.dsnType][1],
-                              flag = wx.ALIGN_CENTER_VERTICAL | wx.EXPAND,
-                              pos = (0, 1))
-            win.SetValue('')
-            win.Show()
+        else:
+            if sel == self.sourceMap['pro']:
+                win = self.input[self.dsnType][1]
+                self.dsnSizer.Add(item=self.input[self.dsnType][1],
+                                  flag = wx.ALIGN_CENTER_VERTICAL | wx.EXPAND,
+                                  pos = (0, 1))
+                win.SetValue('')
+                win.Show()
         
+        if sel == self.sourceMap['dir']:
+            if not self.extension.IsShown():
+                self.extensionText.Show()
+                self.extension.Show()
+        else:
+            if self.extension.IsShown():
+                self.extensionText.Hide()
+                self.extension.Hide()
+            
         self.dsnSizer.Layout()
         
     def _getDsn(self):
@@ -1412,6 +1435,17 @@
         if not path:
             return 
         
+        self._reloadLayers()
+        
+        if event:
+            event.Skip()
+        
+    def _reloadLayers(self):
+        """!Reload list of layers"""
+        dsn = self._getDsn()
+        if not dsn:
+            return
+        
         data = list()        
         
         layerId = 1
@@ -1422,10 +1456,7 @@
             grassName = utils.GetValidLayerName(baseName.split('.', -1)[0])
             data.append((layerId, baseName, grassName))
         elif self.dsnType == 'dir':
-            try:
-                ext = self.format.GetExtension(self.format.GetStringSelection())
-            except KeyError:
-                ext = ''
+            ext = self.extension.GetValue()
             for file in glob.glob(os.path.join(dsn, "%s") % self._getExtPatternGlob(ext)):
                 baseName = os.path.basename(file)
                 grassName = utils.GetValidLayerName(baseName.split('.', -1)[0])
@@ -1460,8 +1491,10 @@
             else:
                 self.parent.btn_run.Enable(False)
         
-        if event:
-            event.Skip()
+    def OnSetExtension(self, event):
+        """!Extension changed"""
+        # reload layers
+        self._reloadLayers()
         
     def OnSetFormat(self, event, format = None):
         """!Format changed"""
@@ -1498,8 +1531,10 @@
                                               startDirectory=os.getcwd(),
                                               changeCallback=self.OnSetDsn,
                                               fileMask = format)
+            
         elif self.dsnType == 'dir':
             pass
+        
         else: # database
             if format == 'SQLite' or format == 'Rasterlite':
                 win = self.input['db-win']['file']
@@ -1523,15 +1558,21 @@
                     win = self.input['db-win']['text']
             else:
                 win = self.input['db-win']['text']
-        
+            
         self.input[self.dsnType][1] = win
         if not win.IsShown():
             win.Show()
-        self.dsnSizer.Add(item=self.input[self.dsnType][1],
+        self.dsnSizer.Add(item = self.input[self.dsnType][1],
                           flag = wx.ALIGN_CENTER_VERTICAL | wx.EXPAND,
-                          pos = (0, 1))
+                          pos = (0, 1), span = (1, 3))
         self.dsnSizer.Layout()
+        
+        # update extension
+        self.extension.SetValue(self.GetFormatExt())
 
+        # reload layers
+        self._reloadLayers()
+        
     def GetType(self):
         """!Get source type"""
         return self.dsnType



More information about the grass-commit mailing list