浏览代码

wxGUI: layer tree popup menu - export data

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@45034 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 14 年之前
父节点
当前提交
63a48bf69d
共有 2 个文件被更改,包括 34 次插入13 次删除
  1. 32 11
      gui/wxpython/gui_modules/layertree.py
  2. 2 2
      gui/wxpython/wxgui.py

+ 32 - 11
gui/wxpython/gui_modules/layertree.py

@@ -250,7 +250,8 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
             return
             return
 
 
         ltype = self.GetPyData(self.layer_selected)[0]['type']
         ltype = self.GetPyData(self.layer_selected)[0]['type']
-
+        mapLayer = self.GetPyData(self.layer_selected)[0]['maplayer']
+        
         Debug.msg (4, "LayerTree.OnContextMenu: layertype=%s" % \
         Debug.msg (4, "LayerTree.OnContextMenu: layertype=%s" % \
                        ltype)
                        ltype)
 
 
@@ -271,15 +272,16 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
             self.popupID14 = wx.NewId()
             self.popupID14 = wx.NewId()
             self.popupID15 = wx.NewId()
             self.popupID15 = wx.NewId()
             self.popupID16 = wx.NewId()
             self.popupID16 = wx.NewId()
-
+            self.popupID17 = wx.NewId()
+        
         self.popupMenu = wx.Menu()
         self.popupMenu = wx.Menu()
-
+        
         numSelected = len(self.GetSelections())
         numSelected = len(self.GetSelections())
         
         
         # general item
         # general item
         self.popupMenu.Append(self.popupID1, text = _("Remove"))
         self.popupMenu.Append(self.popupID1, text = _("Remove"))
         self.Bind(wx.EVT_MENU, self.lmgr.OnDeleteLayer, id = self.popupID1)
         self.Bind(wx.EVT_MENU, self.lmgr.OnDeleteLayer, id = self.popupID1)
-
+        
         if ltype != "command": # rename
         if ltype != "command": # rename
             self.popupMenu.Append(self.popupID2, text = _("Rename"))
             self.popupMenu.Append(self.popupID2, text = _("Rename"))
             self.Bind(wx.EVT_MENU, self.OnRenameLayer, id = self.popupID2)
             self.Bind(wx.EVT_MENU, self.OnRenameLayer, id = self.popupID2)
@@ -304,21 +306,28 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
                 self.Bind(wx.EVT_MENU, self.mapdisplay.OnZoomToMap, id = self.popupID9)
                 self.Bind(wx.EVT_MENU, self.mapdisplay.OnZoomToMap, id = self.popupID9)
                 self.popupMenu.Append(self.popupID10, text = _("Set computational region from selected map(s)"))
                 self.popupMenu.Append(self.popupID10, text = _("Set computational region from selected map(s)"))
                 self.Bind(wx.EVT_MENU, self.OnSetCompRegFromMap, id = self.popupID10)
                 self.Bind(wx.EVT_MENU, self.OnSetCompRegFromMap, id = self.popupID10)
+
             if numSelected > 1:
             if numSelected > 1:
                 self.popupMenu.Enable(self.popupID8, False)
                 self.popupMenu.Enable(self.popupID8, False)
                 self.popupMenu.Enable(self.popupID3, False)
                 self.popupMenu.Enable(self.popupID3, False)
-            
+        
         # specific items
         # specific items
         try:
         try:
             mltype = self.GetPyData(self.layer_selected)[0]['type']
             mltype = self.GetPyData(self.layer_selected)[0]['type']
         except:
         except:
             mltype = None
             mltype = None
-
+        
         # vector layers (specific items)
         # vector layers (specific items)
         if mltype and mltype == "vector":
         if mltype and mltype == "vector":
             self.popupMenu.AppendSeparator()
             self.popupMenu.AppendSeparator()
+            self.popupMenu.Append(self.popupID17, text = _("Export"))
+            self.Bind(wx.EVT_MENU, lambda x: self.lmgr.OnMenuCmd(cmd = ['v.out.ogr',
+                                                                        'input=%s' % mapLayer.GetName()]),
+                      id = self.popupID17)
+            
+            self.popupMenu.AppendSeparator()
             self.popupMenu.Append(self.popupID4, text = _("Show attribute data"))
             self.popupMenu.Append(self.popupID4, text = _("Show attribute data"))
-            self.Bind (wx.EVT_MENU, self.lmgr.OnShowAttributeTable, id = self.popupID4)
+            self.Bind(wx.EVT_MENU, self.lmgr.OnShowAttributeTable, id = self.popupID4)
 
 
             self.popupMenu.Append(self.popupID5, text = _("Start editing"))
             self.popupMenu.Append(self.popupID5, text = _("Start editing"))
             self.popupMenu.Append(self.popupID6, text = _("Stop editing"))
             self.popupMenu.Append(self.popupID6, text = _("Stop editing"))
@@ -372,11 +381,13 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
             self.popupMenu.Append(self.popupID7, _("Metadata"))
             self.popupMenu.Append(self.popupID7, _("Metadata"))
             self.Bind (wx.EVT_MENU, self.OnMetadata, id = self.popupID7)
             self.Bind (wx.EVT_MENU, self.OnMetadata, id = self.popupID7)
             if numSelected > 1:
             if numSelected > 1:
-                self.popupMenu.Enable(self.popupID4, False)
-                self.popupMenu.Enable(self.popupID5, False)
-                self.popupMenu.Enable(self.popupID6, False)
-                self.popupMenu.Enable(self.popupID7, False)
+                self.popupMenu.Enable(self.popupID4,  False)
+                self.popupMenu.Enable(self.popupID5,  False)
+                self.popupMenu.Enable(self.popupID6,  False)
+                self.popupMenu.Enable(self.popupID7,  False)
                 self.popupMenu.Enable(self.popupID14, False)
                 self.popupMenu.Enable(self.popupID14, False)
+                self.popupMenu.Enable(self.popupID16, False)
+                self.popupMenu.Enable(self.popupID17, False)
         
         
         # raster layers (specific items)
         # raster layers (specific items)
         elif mltype and mltype == "raster":
         elif mltype and mltype == "raster":
@@ -384,6 +395,13 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
             self.Bind(wx.EVT_MENU, self.mapdisplay.OnZoomToRaster, id = self.popupID12)
             self.Bind(wx.EVT_MENU, self.mapdisplay.OnZoomToRaster, id = self.popupID12)
             self.popupMenu.Append(self.popupID13, text = _("Set computational region from selected map(s) (ignore NULLs)"))
             self.popupMenu.Append(self.popupID13, text = _("Set computational region from selected map(s) (ignore NULLs)"))
             self.Bind(wx.EVT_MENU, self.OnSetCompRegFromRaster, id = self.popupID13)
             self.Bind(wx.EVT_MENU, self.OnSetCompRegFromRaster, id = self.popupID13)
+            
+            self.popupMenu.AppendSeparator()
+            self.popupMenu.Append(self.popupID17, text = _("Export"))
+            self.Bind(wx.EVT_MENU, lambda x: self.lmgr.OnMenuCmd(cmd = ['r.out.gdal',
+                                                                        'input=%s' % mapLayer.GetName()]),
+                      id = self.popupID17)
+            
             self.popupMenu.AppendSeparator()
             self.popupMenu.AppendSeparator()
             self.popupMenu.Append(self.popupID15, _("Set color table"))
             self.popupMenu.Append(self.popupID15, _("Set color table"))
             self.Bind (wx.EVT_MENU, self.OnColorTable, id = self.popupID15)
             self.Bind (wx.EVT_MENU, self.OnColorTable, id = self.popupID15)
@@ -402,6 +420,9 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
                 self.popupMenu.Enable(self.popupID5, False)
                 self.popupMenu.Enable(self.popupID5, False)
                 self.popupMenu.Enable(self.popupID6, False)
                 self.popupMenu.Enable(self.popupID6, False)
                 self.popupMenu.Enable(self.popupID11, False)
                 self.popupMenu.Enable(self.popupID11, False)
+                self.popupMenu.Enable(self.popupID17, False)
+
+      
         
         
         # self.PopupMenu(self.popupMenu, pos)
         # self.PopupMenu(self.popupMenu, pos)
         self.PopupMenu(self.popupMenu)
         self.PopupMenu(self.popupMenu)

+ 2 - 2
gui/wxpython/wxgui.py

@@ -418,13 +418,13 @@ class GMFrame(wx.Frame):
         
         
         return cmdlist
         return cmdlist
 
 
-    def RunMenuCmd(self, event, cmd = ''):
+    def RunMenuCmd(self, event = None, cmd = []):
         """!Run command selected from menu"""
         """!Run command selected from menu"""
         if event:
         if event:
             cmd = self.GetMenuCmd(event)
             cmd = self.GetMenuCmd(event)
         self.goutput.RunCmd(cmd, switchPage = False)
         self.goutput.RunCmd(cmd, switchPage = False)
 
 
-    def OnMenuCmd(self, event, cmd = ''):
+    def OnMenuCmd(self, event = None, cmd = []):
         """!Parse command selected from menu"""
         """!Parse command selected from menu"""
         if event:
         if event:
             cmd = self.GetMenuCmd(event)
             cmd = self.GetMenuCmd(event)