Browse Source

wxGUI: ZBulk-labeling fixed (trac https://trac.osgeo.org/grass/ticket/737)
(merge from relbr64, https://trac.osgeo.org/grass/changeset/38929)


git-svn-id: https://svn.osgeo.org/grass/grass/trunk@38931 15284696-431f-4ddb-bdfa-cd5b030d7da7

Martin Landa 15 years ago
parent
commit
5ba16e05ed

+ 3 - 3
gui/wxpython/gui_modules/mapdisp_window.py

@@ -1428,7 +1428,7 @@ class BufferedWindow(MapWindow, wx.Window):
             end   = self.Pixel2Cell(self.polycoords[-1])
             end   = self.Pixel2Cell(self.polycoords[-1])
             begin = self.Pixel2Cell(self.mouse['begin'])
             begin = self.Pixel2Cell(self.mouse['begin'])
             
             
-            self.DrawLines(self.pdcTmp, begin, end)
+            self.DrawLines(self.pdcTmp, polycoords = (begin, end))
         
         
     def OnLeftDown(self, event):
     def OnLeftDown(self, event):
         """!
         """!
@@ -2143,8 +2143,8 @@ class BufferedWindow(MapWindow, wx.Window):
                 dlg = VDigitZBulkDialog(parent=self, title=_("Z bulk-labeling dialog"),
                 dlg = VDigitZBulkDialog(parent=self, title=_("Z bulk-labeling dialog"),
                                         nselected=len(selected))
                                         nselected=len(selected))
                 if dlg.ShowModal() == wx.ID_OK:
                 if dlg.ShowModal() == wx.ID_OK:
-                    if digitClass.ZBulkLine(pos1, pos2, dlg.value.GetValue(),
-                                            dlg.step.GetValue()) < 0:
+                    if digitClass.ZBulkLines(pos1, pos2, dlg.value.GetValue(),
+                                             dlg.step.GetValue()) < 0:
                         return
                         return
                 self.UpdateMap(render=False, renderVector=True)
                 self.UpdateMap(render=False, renderVector=True)
             elif digitToolbar.GetAction() == "typeConv":
             elif digitToolbar.GetAction() == "typeConv":

+ 6 - 0
gui/wxpython/gui_modules/toolbars.py

@@ -1008,6 +1008,12 @@ class VDigitToolbar(AbstractToolbar):
 
 
     def OnZBulk(self, event):
     def OnZBulk(self, event):
         """!Z bulk-labeling selected lines/boundaries"""
         """!Z bulk-labeling selected lines/boundaries"""
+        if not self.parent.digit.driver.Is3D():
+            wx.MessageBox(parent=self.parent,
+                          message=_("Vector map is not 3D. Operation canceled."),
+                          caption=_("Error"), style=wx.OK | wx.ICON_ERROR | wx.CENTRE)
+            return
+        
         if self.action['desc'] == 'zbulkLine': # select previous action
         if self.action['desc'] == 'zbulkLine': # select previous action
             self.toolbar[0].ToggleTool(self.addPoint, True)
             self.toolbar[0].ToggleTool(self.addPoint, True)
             self.toolbar[0].ToggleTool(self.additionalTools, False)
             self.toolbar[0].ToggleTool(self.additionalTools, False)

+ 27 - 1
gui/wxpython/gui_modules/vdigit.py

@@ -711,6 +711,25 @@ class VDigit(AbstractDigit):
                                   UserSettings.Get(group='vdigit', key='catBoundary',
                                   UserSettings.Get(group='vdigit', key='catBoundary',
                                                    subkey='enabled'))
                                                    subkey='enabled'))
         
         
+    def ZBulkLines(self, pos1, pos2, start, step):
+        """!Z-bulk labeling
+
+        @param pos1 reference line (start point)
+        @param pos1 reference line (end point)
+        @param start starting value
+        @param step step value
+
+        @return number of modified lines
+        @return -1 on error
+        """
+        ret = self.digit.ZBulkLabeling(pos1[0], pos1[1], pos2[0], pos2[1],
+                                       start, step)
+        
+        if ret > 0:
+            self.toolbar.EnableUndo()
+        
+        return ret
+    
     def __getSnapThreshold(self):
     def __getSnapThreshold(self):
         """!Get snap mode and threshold value
         """!Get snap mode and threshold value
 
 
@@ -1018,6 +1037,13 @@ class CDisplayDriver(AbstractDisplayDriver):
 
 
         return self.__display.GetMapBoundingBox()
         return self.__display.GetMapBoundingBox()
 
 
+    def Is3D(self):
+        """!Check if open vector map is 3D
+
+        @return True if 3D
+        @return False if not 3D"""
+        return self.__display.Is3D()
+    
     def DrawSelected(self, draw=True):
     def DrawSelected(self, draw=True):
         """!Show/hide selected features"""
         """!Show/hide selected features"""
         self.__display.DrawSelected(draw)
         self.__display.DrawSelected(draw)
@@ -2463,7 +2489,7 @@ class VDigitZBulkDialog(wx.Dialog):
         flexSizer.Add(self.step, proportion=0, flag=wx.ALIGN_CENTER | wx.FIXED_MINSIZE)
         flexSizer.Add(self.step, proportion=0, flag=wx.ALIGN_CENTER | wx.FIXED_MINSIZE)
 
 
         sizer.Add(item=flexSizer, proportion=1, flag=wx.ALL | wx.EXPAND, border=1)
         sizer.Add(item=flexSizer, proportion=1, flag=wx.ALL | wx.EXPAND, border=1)
-        border.Add(item=sizer, proportion=1, flag=wx.ALL | wx.EXPAND, border=5)
+        border.Add(item=sizer, proportion=1, flag=wx.ALL | wx.EXPAND, border=0)
 
 
         # buttons
         # buttons
         btnCancel = wx.Button(self, wx.ID_CANCEL)
         btnCancel = wx.Button(self, wx.ID_CANCEL)

+ 10 - 0
gui/wxpython/vdigit/driver.cpp

@@ -617,3 +617,13 @@ int print_percent(int x)
     
     
     return 0;
     return 0;
 }
 }
+
+/**
+   \brief Check if vector map is 3D
+
+   \return True for 3D otherwise False
+*/
+bool DisplayDriver::Is3D()
+{
+    return (bool) Vect_is_3d(mapInfo);
+}

+ 1 - 0
gui/wxpython/vdigit/driver.h

@@ -206,6 +206,7 @@ public:
 
 
     /* misc */
     /* misc */
     std::vector<double> GetMapBoundingBox();
     std::vector<double> GetMapBoundingBox();
+    bool Is3D();
 
 
     /* set */
     /* set */
     void SetRegion(double, double, double, double,
     void SetRegion(double, double, double, double,