Bläddra i källkod

wms fill layer name if it is empty according to selected item

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@59316 15284696-431f-4ddb-bdfa-cd5b030d7da7
Štěpán Turek 11 år sedan
förälder
incheckning
2754681e0c
2 ändrade filer med 24 tillägg och 2 borttagningar
  1. 9 1
      gui/wxpython/web_services/dialogs.py
  2. 15 1
      gui/wxpython/web_services/widgets.py

+ 9 - 1
gui/wxpython/web_services/dialogs.py

@@ -125,6 +125,7 @@ class WSDialogBase(wx.Dialog):
             self.ws_panels[ws]['panel'] =  WSPanel(parent = self.reqDataPanel,
                                                    web_service = ws)
             self.ws_panels[ws]['panel'].capParsed.connect(self.OnPanelCapParsed)
+            self.ws_panels[ws]['panel'].layerSelected.connect(self.OnLayerSelected)
 
         # buttons
         self.btn_close = wx.Button(parent = self, id = wx.ID_CLOSE)
@@ -145,6 +146,11 @@ class WSDialogBase(wx.Dialog):
         self.settsManager.settingsLoaded.connect(self.OnSettingsLoaded)
         self.settsManager.settingsSaving.connect(self.OnSettingsSaving)
 
+    def OnLayerSelected(self, title):
+
+        if not self.layerName.GetValue().strip():
+            self.layerName.SetValue(title)
+
     def _doLayout(self):
 
         dialogSizer = wx.BoxSizer(wx.VERTICAL)
@@ -331,6 +337,7 @@ class WSDialogBase(wx.Dialog):
         """!Update layer name to web service panel
         """
         lname = event.GetString()
+        lname = lname.encode('ascii', 'replace')
 
         for v in self.ws_panels.itervalues():
             v['panel'].SetOutputLayerName(lname.strip())
@@ -541,7 +548,8 @@ class AddWSDialog(WSDialogBase):
             shutil.copyfile(cap_file, cmd_cap_file)
             lcmd.append('capfile=' + cmd_cap_file)
 
-        layer = ltree.AddLayer(ltype = 'wms', lname = self.layerName.GetValue(), 
+        layer = ltree.AddLayer(ltype = 'wms',
+                               lname = self.active_ws_panel.GetOutputLayerName(), 
                                lchecked = True, lcmd = lcmd)
 
 

+ 15 - 1
gui/wxpython/web_services/widgets.py

@@ -125,6 +125,8 @@ class WSPanel(wx.Panel):
 
         self._layout()
 
+        self.layerSelected = self.list.layerSelected
+
         self.Bind(EVT_CMD_DONE, self.OnCapDownloadDone)
         self.Bind(EVT_CMD_OUTPUT, self.OnCmdOutput)
 
@@ -819,6 +821,9 @@ class WSPanel(wx.Panel):
         """
         self.o_layer_name = name
 
+    def GetOutputLayerName(self):
+        return self.o_layer_name
+
     def GetCapFile(self):
         """!Get path to file where capabilities are saved
         """
@@ -852,6 +857,8 @@ class LayersList(TreeListCtrl, listmix.ListCtrlAutoWidthMixin):
         self.root = None
         self.Bind(wx.EVT_TREE_SEL_CHANGING, self.OnListSelChanging)
 
+        self.layerSelected = Signal('LayersList.layerSelected')
+
     def LoadData(self, cap = None):
         """!Load data into list
         """
@@ -950,6 +957,9 @@ class LayersList(TreeListCtrl, listmix.ListCtrlAutoWidthMixin):
     def OnListSelChanging(self, event):
         """!Do not allow to select items, which cannot be requested from server.
         """
+        def _emitSelected(layer):
+            title = layer.GetLayerData('title')
+            self.layerSelected.emit(title = title)
 
         def _selectRequestableChildren(item, list_to_check, items_to_sel):
 
@@ -971,6 +981,8 @@ class LayersList(TreeListCtrl, listmix.ListCtrlAutoWidthMixin):
             if not self.HasFlag(wx.TR_MULTIPLE):
                 return
 
+            _emitSelected(self.GetPyData(cur_item)['layer'])
+
             items_to_chck = []
             items_to_sel = []
             chck_item = cur_item
@@ -984,7 +996,9 @@ class LayersList(TreeListCtrl, listmix.ListCtrlAutoWidthMixin):
 
             while items_to_sel:
                 self.SelectItem(items_to_sel.pop(), unselect_others=False)
-
+        else:
+            _emitSelected(self.GetPyData(cur_item)['layer'])
+          
     def GetItemCount(self):
         """!Required for listmix.ListCtrlAutoWidthMixin
         """