Преглед изворни кода

wxGUI/vdigit: fix vertex pseudo id's
(merge https://trac.osgeo.org/grass/changeset/45323 from devbr6)


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

Martin Landa пре 14 година
родитељ
комит
6c3ab48415
1 измењених фајлова са 18 додато и 0 уклоњено
  1. 18 0
      gui/wxpython/gui_modules/wxvdriver.py

+ 18 - 0
gui/wxpython/gui_modules/wxvdriver.py

@@ -86,6 +86,9 @@ class DisplayDriver:
         self.window  = window
         self.log     = log        # log device
 
+        self.firstNode = True     # track PseudoDC Id of selected features
+        self.lastNodeId = -1
+        
         # GRASS lib
         self.poPoints = Vect_new_line_struct()
         self.poCats   = Vect_new_cats_struct()
@@ -242,11 +245,26 @@ class DisplayDriver:
         
         if robj.type & (TYPE_POINT | TYPE_CENTROIDIN | TYPE_CENTROIDOUT | TYPE_CENTROIDDUP |
                         TYPE_NODEONE | TYPE_NODETWO | TYPE_VERTEX): # -> point
+            if dcId > 0:
+                if robj.type == TYPE_VERTEX:
+                    dcId = 3 # first vertex
+                elif robj.type & (TYPE_NODEONE | TYPE_NODETWO):
+                    if self.firstNode:
+                        dcId = 1
+                        self.firstNode = False
+                    else:
+                        dcId = self.lastNodeId
+            
             for i in range(robj.npoints):
                 p = robj.point[i]
+                if dcId > 0:
+                    pdc.SetId(dcId)
+                    dcId += 2
                 self._drawCross(pdc, p)
         else:
             if dcId > 0 and self._drawSegments:
+                self.fisrtNode = True
+                self.lastNodeId = robj.npoints * 2 - 1
                 dcId = 2 # first segment
                 i = 0
                 while i < robj.npoints - 1: