瀏覽代碼

wxGUI/mcalc: run command from dialog, simplify menu

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@42251 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 15 年之前
父節點
當前提交
0049d8c33a
共有 2 個文件被更改,包括 52 次插入54 次删除
  1. 38 16
      gui/wxpython/gui_modules/mcalc_builder.py
  2. 14 38
      gui/wxpython/xml/menudata.xml

+ 38 - 16
gui/wxpython/gui_modules/mcalc_builder.py

@@ -26,6 +26,7 @@ import wx
 
 import gcmd
 import gselect
+import menuform
 try:
     import subprocess
 except:
@@ -130,7 +131,10 @@ class MapCalcFrame(wx.Frame):
         self.btn_run = wx.Button(parent = self.panel, id = wx.ID_ANY, label = _("&Run"))
         self.btn_run.SetDefault()
         self.btn_close = wx.Button(parent = self.panel, id = wx.ID_CLOSE)
-
+        self.btn_cmd = wx.Button(parent = self.panel, id = wx.ID_ANY,
+                                 label = _("Command dialog"))
+        self.btn_cmd.SetToolTipString(_('Open %s dialog') % self.cmd)
+        
         self.btn = dict()        
         self.btn['pow'] = wx.Button(parent = self.panel, id = wx.ID_ANY, label = "^")
         self.btn['pow'].SetToolTipString(_('exponent'))
@@ -222,7 +226,8 @@ class MapCalcFrame(wx.Frame):
         self.btn_clear.Bind(wx.EVT_BUTTON, self.OnClear)
         self.btn_run.Bind(wx.EVT_BUTTON, self.OnMCalcRun)
         self.btn_help.Bind(wx.EVT_BUTTON, self.OnHelp)
-        
+        self.btn_cmd.Bind(wx.EVT_BUTTON, self.OnCmdDialog)
+
         self.mapselect.Bind(wx.EVT_TEXT, self.OnSelect)
         self.function.Bind(wx.EVT_COMBOBOX, self.OnSelect)
         self.function.Bind(wx.EVT_TEXT_ENTER, self.OnSelect)
@@ -266,25 +271,29 @@ class MapCalcFrame(wx.Frame):
         buttonSizer2.Add(item = self.btn['not'], pos = (4,1))
 
         operandSizer = wx.StaticBoxSizer(self.operandBox, wx.HORIZONTAL)
+        
         buttonSizer3 = wx.GridBagSizer(7, 1)
+        
         buttonSizer3.Add(item = self.newmaplabel, pos = (0, 0),
                          span = (1, 2), flag = wx.ALIGN_CENTER)
-        buttonSizer3.Add(item = self.newmaptxt, pos = (1,0),
+        buttonSizer3.Add(item = self.newmaptxt, pos = (1, 0),
+                         span = (1, 2))
+        buttonSizer3.Add(item = self.mapsellabel, pos = (2, 0),
+                         span = (1, 2), flag = wx.ALIGN_CENTER)
+        buttonSizer3.Add(item = self.mapselect, pos = (3, 0),
+                         span = (1, 2))
+        buttonSizer3.Add(item = self.functlabel, pos = (4, 0),
+                         span = (1, 2), flag = wx.ALIGN_CENTER)
+        buttonSizer3.Add(item = self.function, pos = (5, 0),
                          span = (1, 2))
-        buttonSizer3.Add(item = self.mapsellabel, pos = (2,0),
-                         span = (1,2), flag = wx.ALIGN_CENTER)
-        buttonSizer3.Add(item = self.mapselect, pos = (3,0),
-                         span = (1,2))
-        buttonSizer3.Add(item = self.functlabel, pos = (4,0),
-                         span = (1,2), flag = wx.ALIGN_CENTER)
-        buttonSizer3.Add(item = self.function, pos = (5,0),
-                         span = (1,2))
         buttonSizer3.Add(item = self.btn['paren'], pos = (6, 0),
-                         span = (1,1), flag = wx.ALIGN_LEFT)
-        buttonSizer3.Add(item = self.btn_clear, pos = (6,1),
-                         span = (1,1), flag = wx.ALIGN_RIGHT)
+                         flag = wx.ALIGN_LEFT)
+        buttonSizer3.Add(item = self.btn_clear, pos = (6, 1),
+                         flag = wx.ALIGN_RIGHT)
         
         buttonSizer4 = wx.BoxSizer(wx.HORIZONTAL)
+        buttonSizer4.Add(item = self.btn_cmd,
+                         flag = wx.ALL, border = 5)
         buttonSizer4.Add(item = self.btn_close,
                          flag = wx.ALL, border = 5)
         buttonSizer4.Add(item = self.btn_run,
@@ -319,7 +328,7 @@ class MapCalcFrame(wx.Frame):
                   flag = wx.EXPAND | wx.LEFT | wx.RIGHT,
                       border = 5)
         sizer.Add(item = buttonSizer4, proportion = 0,
-                  flag = wx.ALIGN_RIGHT | wx.ALL, border = 1)
+                  flag = wx.ALL | wx.ALIGN_RIGHT, border = 1)
         
         self.panel.SetAutoLayout(True)        
         self.panel.SetSizer(sizer)
@@ -438,9 +447,22 @@ class MapCalcFrame(wx.Frame):
         """!Close window"""
         self.Destroy()
 
+    def OnCmdDialog(self, event):
+        """!Shows command dialog"""
+        name = self.newmaptxt.GetValue().strip()
+        mctxt = self.text_mcalc.GetValue().strip().replace("\n"," ")
+        mctxt = mctxt.replace(" " , "")
+        expr = name
+        if expr:
+            expr += '='
+        expr += mctxt
+        
+        menuform.GUI().ParseCommand(cmd = [self.cmd, 'expression=' + expr],
+                                    parentframe = self)
+        
 if __name__ == "__main__":
     app = wx.App(0)
-    frame = MapCalcFrame(None)
+    frame = MapCalcFrame(None, cmd = 'r.mapcalc')
     frame.Show()
     app.MainLoop()
 

+ 14 - 38
gui/wxpython/xml/menudata.xml

@@ -1000,25 +1000,13 @@
 	  <handler>OnMenuCmd</handler>
 	  <command>r.mask</command>
 	</menuitem>
-	<menu>
-	  <label>Map algebra</label>
-	  <items>
-	    <menuitem>
-	      <label>Interactive map calculator</label>
-	      <help>Map calculator for raster map algebra.</help>
-	      <keywords>raster,algebra</keywords>
-	      <handler>OnMapCalculator</handler>
-	      <command>r.mapcalc</command>
-	    </menuitem>
-	    <menuitem>
-	      <label>Map calculator</label>
-	      <help>Raster map calculator.</help>
-	      <keywords>raster,algebra</keywords>
-	      <handler>OnMenuCmd</handler>
-	      <command>r.mapcalc</command>
-	    </menuitem>
-	  </items>
-	</menu>
+	<menuitem>
+	  <label>Raster calculator</label>
+	  <help>Raster map calculator.</help>
+	  <keywords>raster,algebra</keywords>
+	  <handler>OnMapCalculator</handler>
+	  <command>r.mapcalc</command>
+	</menuitem>
 	<menu>
 	  <label>Neighborhood analysis</label>
 	  <items>
@@ -2779,25 +2767,13 @@
 	  <handler>OnMenuCmd</handler>
 	  <command>r3.mask</command>
 	</menuitem>
-	<menu>
-	  <label>Map algebra</label>
-	  <items>
-	    <menuitem>
-	      <label>Interactive map calculator</label>
-	      <help>Map calculator for raster map algebra.</help>
-	      <keywords>raster,algebra</keywords>
-	      <handler>OnMapCalculator3D</handler>
-	      <command>r3.mapcalc</command>
-	    </menuitem>
-	    <menuitem>
-	      <label>Map calculator</label>
-	      <help>Raster map calculator.</help>
-	      <keywords>raster,algebra</keywords>
-	      <handler>OnMenuCmd</handler>
-	      <command>r3.mapcalc</command>
-	    </menuitem>
-	  </items>
-	</menu>
+	<menuitem>
+	  <label>Volume calculator</label>
+	  <help>Raster map calculator.</help>
+	  <keywords>raster,algebra</keywords>
+	  <handler>OnMapCalculator</handler>
+	  <command>r3.mapcalc</command>
+	</menuitem>
 	<menuitem>
 	  <label>Cross section</label>
 	  <help>Creates cross section 2D raster map from 3d raster map based on 2D elevation map</help>