Browse Source

wxGUI: add function to LM interface to programatically change layer

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@74136 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová 6 years ago
parent
commit
195fb3d495
3 changed files with 20 additions and 1 deletions
  1. 2 0
      gui/wxpython/core/render.py
  2. 17 0
      gui/wxpython/lmgr/giface.py
  3. 1 1
      gui/wxpython/lmgr/layertree.py

+ 2 - 0
gui/wxpython/core/render.py

@@ -415,6 +415,8 @@ class RenderLayerMgr(wx.EvtHandler):
         env_cmd.update(self._render_env)
         env_cmd['GRASS_RENDER_FILE'] = self.layer.mapfile
         if self.layer.GetType() in ('vector', 'thememap'):
+            if not self.layer._legrow:
+                self.layer._legrow = grass.tempfile(create=True)
             if os.path.isfile(self.layer._legrow):
                 os.remove(self.layer._legrow)
             env_cmd['GRASS_LEGEND_FILE'] = text_to_string(self.layer._legrow)

+ 17 - 0
gui/wxpython/lmgr/giface.py

@@ -21,6 +21,7 @@ import os
 
 from grass.pydispatch.signal import Signal
 from core.giface import Notification
+from core.utils import GetLayerNameFromCmd
 
 
 class Layer(object):
@@ -123,6 +124,22 @@ class LayerList(object):
         "Select or unselect layer"
         self._tree.SelectItem(layer._layer, select)
 
+    def ChangeLayer(self, layer, **kwargs):
+        "Change layer (cmd, ltype, opacity)"
+        if 'cmd' in kwargs:
+            layer._pydata[0]['cmd'] = kwargs['cmd']
+            layerName, found = GetLayerNameFromCmd(kwargs['cmd'], fullyQualified=True)
+            if found:
+                layer._pydata[0]['label'] = layerName
+        if 'ltype' in kwargs:
+            layer._pydata[0]['type'] = kwargs['ltype']
+        if 'opacity' in kwargs:
+            layer._pydata[0]['maplayer'].SetOpacity(kwargs['opacity'])
+
+        self._tree.ChangeLayer(layer._layer)
+        self._tree.SetItemIcon(layer._layer)
+        self._tree.SetItemText(layer._layer, self._tree._getLayerName(layer._layer))
+
     def IsLayerChecked(self, layer):
         """Returns True if layer is checked, False otherwise"""
         return self._tree.IsItemChecked(layer._layer)

+ 1 - 1
gui/wxpython/lmgr/layertree.py

@@ -2132,7 +2132,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
             layer=self.GetLayerInfo(
                 item,
                 key='maplayer'),
-            type=type,
+            ltype=type,
             command=cmdlist,
             name=layerName,
             active=chk,