Kaynağa Gözat

wxGUI/mapwindow: removing call to layer tree by direct calls from tree to map object

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@57240 15284696-431f-4ddb-bdfa-cd5b030d7da7
Vaclav Petras 11 yıl önce
ebeveyn
işleme
42532cb1fa

+ 7 - 10
gui/wxpython/core/render.py

@@ -1098,20 +1098,17 @@ class Map(object):
         
         return None
 
-    def ReorderLayers(self, layerList):
-        """!Reorder list to match layer tree
-        
-        @param layerList list of layers
-        """
-        self.layers = layerList
-        
+    def SetLayers(self, layers):
+        self.layers = layers
+
+        # only for debug
+        # might be removed including message, it seems more than clear
         layerNameList = ""
         for layer in self.layers:
             if layer.GetName():
                 layerNameList += layer.GetName() + ','
-        Debug.msg (4, "Map.ReoderLayers(): layers=%s" % \
-                   (layerNameList))
-        
+        Debug.msg(5, "Map.SetLayers(): layers=%s" % (layerNameList))
+
     def ChangeLayer(self, layer, render = False, **kargs):
         """!Change map layer properties
 

+ 1 - 1
gui/wxpython/iclass/frame.py

@@ -1252,7 +1252,7 @@ class MapManager:
             choice.SetSelection(0)
             
             #layers.reverse()
-            self.map.ReorderLayers(layers)
+            self.map.SetLayers(layers)
             self.frame.Render(self.mapWindow)
         
     def SetOpacity(self, name):

+ 22 - 28
gui/wxpython/lmgr/layertree.py

@@ -1131,7 +1131,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
 
         # redraw map if auto-rendering is enabled
         self.rerender = True
-        self.reorder = True
+        self.Map.SetLayers(self.GetVisibleLayers())
         
         if self.mapdisplay.GetToolbar('vdigit'):
             self.mapdisplay.toolbars['vdigit'].UpdateListOfLayers (updateTool = True)
@@ -1215,7 +1215,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
         
         # redraw map if auto-rendering is enabled
         self.rerender = True
-        self.reorder = True
+        self.Map.SetLayers(self.GetVisibleLayers())
         
     def OnCmdChanged(self, event):
         """!Change command string"""
@@ -1356,7 +1356,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
 
         # redraw map if auto-rendering is enabled
         self.rerender = True
-        self.reorder = True
+        self.Map.SetLayers(self.GetVisibleLayers())
         
         # select new item
         self.SelectItem(newItem)
@@ -1525,40 +1525,33 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
                                                          active = True))
                 if nlayers < 2:
                     mapWin.ResetView()
-        
-    def ReorderLayers(self):
-        """!Add commands from data associated with any valid layers
-        (checked or not) to layer list in order to match layers in
-        layer tree."""
 
+    def GetVisibleLayers(self):
         # make a list of visible layers
-        treelayers = []
-        
+        layers = []
+
         vislayer = self.GetFirstVisibleItem()
-        
+
         if not vislayer or self.GetPyData(vislayer) is None:
-            return
-        
+            return layers
+
         itemList = ""
-        
         for item in range(self.GetCount()):
             itemList += self.GetItemText(vislayer) + ','
-            if self.GetLayerInfo(vislayer, key = 'type') != 'group':
-                treelayers.append(self.GetLayerInfo(vislayer, key = 'maplayer'))
+            if self.GetLayerInfo(vislayer, key='type') != 'group':
+                layers.append(self.GetLayerInfo(vislayer, key='maplayer'))
 
             if not self.GetNextVisible(vislayer):
                 break
             else:
                 vislayer = self.GetNextVisible(vislayer)
-        
-        Debug.msg (4, "LayerTree.ReorderLayers(): items=%s" % \
-                   (itemList))
-        
-        # reorder map layers
-        treelayers.reverse()
-        self.Map.ReorderLayers(treelayers)
-        self.reorder = False
-        
+
+        Debug.msg(5, "LayerTree.GetVisibleLayers(): items=%s" %
+                  (reversed(itemList)))
+
+        layers.reverse()
+        return layers
+
     def ChangeLayer(self, item):
         """!Change layer"""
         type = self.GetLayerInfo(item, key = 'type')
@@ -1594,10 +1587,11 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
         # if digitization tool enabled -> update list of available vector map layers
         if self.mapdisplay.GetToolbar('vdigit'):
             self.mapdisplay.GetToolbar('vdigit').UpdateListOfLayers(updateTool = True)
-        
+
+        self.Map.SetLayers(self.GetVisibleLayers())
         # redraw map if auto-rendering is enabled
-        self.rerender = self.reorder = True
-        
+        self.rerender = True
+
     def OnCloseWindow(self, event):
         pass
         # self.Map.Clean()

+ 1 - 1
gui/wxpython/mapdisp/main.py

@@ -170,7 +170,7 @@ class DMonMap(Map):
                 else:
                     reorderedLayers[layersOrder[i]] = layer
 
-            self.ReorderLayers(reorderedLayers)
+            self.SetLayers(reorderedLayers)
 
         except IOError, e:
             grass.warning(_("Unable to read cmdfile '%(cmd)s'. Details: %(det)s") % \

+ 3 - 6
gui/wxpython/mapdisp/mapwindow.py

@@ -628,10 +628,7 @@ class BufferedWindow(MapWindow, wx.Window):
         #
         # render background image if needed
         #
-        # update layer dictionary if there has been a change in layers
-        if self.tree and self.tree.reorder:
-            self.tree.ReorderLayers()
-        
+
         # reset flag for auto-rendering
         if self.tree:
             self.tree.rerender = False
@@ -1577,8 +1574,8 @@ class BufferedWindow(MapWindow, wx.Window):
         @param render True to re-render display
         """
         if not layers:
-            layers = self.tree.GetSelectedLayer(multi = True, checkedOnly = False)
-            layers = [self.tree.GetLayerInfo(layer, key = 'maplayer') for layer in layers]
+            layers = self._giface.GetLayerList().GetSelectedLayers(checkedOnly=False)
+            layers = [layer.maplayer for layer in layers]
 
         if not layers:
             return