浏览代码

wxGUI/gmodeler: limit data dialog only to raster,raster_3d and vector

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@67862 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 9 年之前
父节点
当前提交
b23a95d809

+ 7 - 2
gui/wxpython/gmodeler/dialogs.py

@@ -62,9 +62,12 @@ class ModelDataDialog(SimpleDialog):
         self.Bind(wx.EVT_BUTTON, self.OnCancel, self.btnCancel)
         if self.etype:
             self.typeSelect = ElementSelect(parent = self.panel,
+                                            elements = ['raster', 'raster_3d', 'vector'],
                                             size = globalvar.DIALOG_GSELECT_SIZE)
             self.typeSelect.Bind(wx.EVT_CHOICE, self.OnType)
-        
+            self.typeSelect.SetSelection(0)
+            self.element.SetType('raster')
+            
         if shape.GetValue():
             self.btnOK.Enable()
         
@@ -120,7 +123,9 @@ class ModelDataDialog(SimpleDialog):
             if elem == 'raster':
                 self.shape.SetPrompt('raster')
             elif elem == 'vector':
-                self.shape.SetPrompt('raster')
+                self.shape.SetPrompt('vector')
+            elif elem == 'raster_3d':
+                self.shape.SetPrompt('raster_3d')
         
         self.parent.canvas.Refresh()
         self.parent.SetStatusText('', 0)

+ 0 - 1
gui/wxpython/gmodeler/frame.py

@@ -725,7 +725,6 @@ class ModelFrame(wx.Frame):
         data.SetPropDialog(dlg)
         dlg.CentreOnParent()
         ret = dlg.ShowModal()
-        data.SetPrompt(dlg.GetType())
         dlg.Destroy()
         if ret != wx.ID_OK:
             return

+ 1 - 1
gui/wxpython/gmodeler/model.py

@@ -1378,7 +1378,7 @@ class ModelData(ModelObject, ogl.EllipseShape):
         if self.prompt == 'raster':
             color = UserSettings.Get(group = 'modeler', key = 'data',
                                      subkey = ('color', 'raster'))
-        elif self.prompt == 'raster3d':
+        elif self.prompt == 'raster_3d':
             color = UserSettings.Get(group = 'modeler', key = 'data',
                                      subkey = ('color', 'raster3d'))
         elif self.prompt == 'vector':

+ 15 - 2
gui/wxpython/gui_core/gselect.py

@@ -2107,11 +2107,13 @@ class ProjSelect(wx.ComboBox):
         self.SetValue('')
 
 class ElementSelect(wx.Choice):
-    def __init__(self, parent, id = wx.ID_ANY, size = globalvar.DIALOG_COMBOBOX_SIZE,
+    def __init__(self, parent, id = wx.ID_ANY, elements = None,
+                 size = globalvar.DIALOG_COMBOBOX_SIZE,
                  **kwargs):
         """Widget for selecting GIS element
 
         :param parent: parent window
+        :param elements: filter elements
         """
         super(ElementSelect, self).__init__(parent, id, size = size,
                                             **kwargs)
@@ -2121,7 +2123,18 @@ class ElementSelect(wx.Choice):
         p = task.get_param(value = 'type')
         self.values = p.get('values', [])
         self.valuesDesc = p.get('values_desc', [])
-
+        
+        if elements:
+            values = []
+            valuesDesc = []
+            for idx in range(0, len(self.values)):
+                value = self.values[idx]
+                if value in elements:
+                    values.append(value)
+                    valuesDesc.append(self.valuesDesc[idx])
+            self.values = values
+            self.valuesDesc = valuesDesc
+        
         self.SetItems(self.valuesDesc)
 
     def GetValue(self, name):