Browse Source

wxGUI/lmgr: add apply button to opacity dialog

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@52687 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová 12 years ago
parent
commit
d5e8cdb510
2 changed files with 40 additions and 16 deletions
  1. 10 1
      gui/wxpython/gui_core/dialogs.py
  2. 30 15
      gui/wxpython/lmgr/layertree.py

+ 10 - 1
gui/wxpython/gui_core/dialogs.py

@@ -54,7 +54,8 @@ from core.utils       import GetListOfMapsets, GetLayerNameFromCmd, GetValidLaye
 from core.settings    import UserSettings, GetDisplayVectSettings
 from core.debug       import Debug
 
-wxApplyMapLayers, EVT_APPLY_MAP_LAYERS= NewEvent()
+wxApplyMapLayers, EVT_APPLY_MAP_LAYERS = NewEvent()
+wxApplyOpacity, EVT_APPLY_OPACITY = NewEvent()
 
 class ElementDialog(wx.Dialog):
     def __init__(self, parent, title, label, id = wx.ID_ANY,
@@ -2263,6 +2264,10 @@ class SetOpacityDialog(wx.Dialog):
 
         btnCancel = wx.Button(parent = panel, id = wx.ID_CANCEL)
         btnsizer.AddButton(btnCancel)
+
+        btnApply = wx.Button(parent = panel, id = wx.ID_APPLY)
+        btnApply.Bind(wx.EVT_BUTTON, self.OnApply)
+        btnsizer.AddButton(btnApply)
         btnsizer.Realize()
 
         sizer.Add(item = btnsizer, proportion = 0,
@@ -2281,6 +2286,10 @@ class SetOpacityDialog(wx.Dialog):
         opacity = float(self.value.GetValue()) / 100
         return opacity
 
+    def OnApply(self, event):
+        event = wxApplyOpacity(value = self.GetOpacity())
+        wx.PostEvent(self, event)
+
 def GetImageHandlers(image):
     """!Get list of supported image handlers"""
     lext = list()

+ 30 - 15
gui/wxpython/lmgr/layertree.py

@@ -30,7 +30,7 @@ except ImportError:
 from grass.script import core as grass
 
 from core                import globalvar
-from gui_core.dialogs    import SqlQueryFrame, SetOpacityDialog
+from gui_core.dialogs    import SqlQueryFrame, SetOpacityDialog, EVT_APPLY_OPACITY
 from gui_core.forms      import GUI
 from mapdisp.frame       import MapFrame
 from core.render         import Map
@@ -678,23 +678,38 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
         dlg = SetOpacityDialog(self, opacity = current_opacity,
                                title = _("Set opacity of <%s>") % maplayer.GetName())
         dlg.CentreOnParent()
+        dlg.Bind(EVT_APPLY_OPACITY, self.OnApplyLayerOpacity)
 
         if dlg.ShowModal() == wx.ID_OK:
-            new_opacity = dlg.GetOpacity() # string
-            self.Map.ChangeOpacity(maplayer, new_opacity)
-            maplayer.SetOpacity(new_opacity)
-            self.SetItemText(self.layer_selected,
-                             self._getLayerName(self.layer_selected))
+            self.ChangeLayerOpacity(layer = self.layer_selected, value = dlg.GetOpacity())
+        dlg.Destroy()
+
+    def OnApplyLayerOpacity(self, event):
+        """!Handles EVT_APPLY_OPACITY event."""
+        self.ChangeLayerOpacity(layer = self.layer_selected, value = event.value)
+
+    def ChangeLayerOpacity(self, layer, value):
+        """!Change opacity value of layer
+        @param layer layer for which to change (item in layertree)
+        @param value opacity value (float between 0 and 1)
+        """
+        maplayer = self.GetPyData(layer)[0]['maplayer']
+        self.Map.ChangeOpacity(maplayer, value)
+        maplayer.SetOpacity(value)
+        self.SetItemText(layer,
+                         self._getLayerName(layer))
+        
+        # vector layer currently edited
+        if self.GetMapDisplay().GetToolbar('vdigit') and \
+                self.GetMapDisplay().GetToolbar('vdigit').GetLayer() == maplayer:
+            alpha = int(value * 255)
+            self.GetMapDisplay().GetWindow().digit.GetDisplay().UpdateSettings(alpha = alpha)
             
-            # vector layer currently edited
-            if self.mapdisplay.GetToolbar('vdigit') and \
-                    self.mapdisplay.GetToolbar('vdigit').GetLayer() == maplayer:   
-                alpha = int(new_opacity * 255)
-                self.mapdisplay.GetWindow().digit.GetDisplay().UpdateSettings(alpha = alpha)
-                
-            # redraw map if auto-rendering is enabled
-            self.rerender = True
-            self.reorder = True
+        # redraw map if auto-rendering is enabled
+        renderVector = False
+        if self.GetMapDisplay().GetToolbar('vdigit'):
+            renderVector = True
+        self.GetMapDisplay().GetWindow().UpdateMap(render = False, renderVector = renderVector)
 
     def OnNvizProperties(self, event):
         """!Nviz-related properties (raster/vector/volume)