[GRASS-SVN] r50059 - grass/trunk/gui/wxpython/gcp

svn_grass at osgeo.org svn_grass at osgeo.org
Wed Jan 4 08:22:57 EST 2012


Author: mmetz
Date: 2012-01-04 05:22:57 -0800 (Wed, 04 Jan 2012)
New Revision: 50059

Modified:
   grass/trunk/gui/wxpython/gcp/manager.py
Log:
wxGUI GCP manager: add full vector support

Modified: grass/trunk/gui/wxpython/gcp/manager.py
===================================================================
--- grass/trunk/gui/wxpython/gcp/manager.py	2012-01-04 13:22:19 UTC (rev 50058)
+++ grass/trunk/gui/wxpython/gcp/manager.py	2012-01-04 13:22:57 UTC (rev 50059)
@@ -55,8 +55,9 @@
 global maptype
 
 src_map = ''
-tgt_map = ''
-maptype = 'cell'
+tgt_map = { 'raster' : '',
+            'vector' : '' }
+maptype = 'raster'
 
 def getSmallUpArrowImage():
     stream = open(os.path.join(globalvar.ETCIMGDIR, 'small_up_arrow.png'), 'rb')
@@ -115,9 +116,9 @@
         global src_map
         global tgt_map
 
-        src_map = ''
-        tgt_map = ''
-        maptype = 'cell'
+        #src_map = ''
+        #tgt_map = ''
+        maptype = 'raster'
 
         # GISRC file for source location/mapset of map(s) to georectify
         self.source_gisrc = ''
@@ -180,7 +181,7 @@
             #
             # add layer to source map
             #
-            if maptype == 'cell':
+            if maptype == 'raster':
                 rendertype = 'raster'
                 cmdlist = ['d.rast', 'map=%s' % src_map]
             else: # -> vector layer
@@ -192,22 +193,29 @@
             self.SrcMap.AddLayer(type=rendertype, command=cmdlist, l_active=True,
                                  name=name, l_hidden=False, l_opacity=1.0, l_render=False)
 
-            if tgt_map:
+            self.SwitchEnv('target')
+            if tgt_map['raster']:
                 #
-                # add layer to target map
+                # add raster layer to target map
                 #
-                if maptype == 'cell':
-                    rendertype = 'raster'
-                    cmdlist = ['d.rast', 'map=%s' % tgt_map]
-                else: # -> vector layer
-                    rendertype = 'vector'
-                    cmdlist = ['d.vect', 'map=%s' % tgt_map]
+                rendertype = 'raster'
+                cmdlist = ['d.rast', 'map=%s' % tgt_map['raster']]
                 
-                self.SwitchEnv('target')
                 name, found = utils.GetLayerNameFromCmd(cmdlist)
                 self.TgtMap.AddLayer(type=rendertype, command=cmdlist, l_active=True,
                                      name=name, l_hidden=False, l_opacity=1.0, l_render=False)
             
+            if tgt_map['vector']:
+                #
+                # add raster layer to target map
+                #
+                rendertype = 'vector'
+                cmdlist = ['d.vect', 'map=%s' % tgt_map['vector']]
+                
+                name, found = utils.GetLayerNameFromCmd(cmdlist)
+                self.TgtMap.AddLayer(type=rendertype, command=cmdlist, l_active=True,
+                                     name=name, l_hidden=False, l_opacity=1.0, l_render=False)
+            
             #
             # start GCP Manager
             #
@@ -351,7 +359,7 @@
         global maptype
 
         if event.GetInt() == 0:
-            maptype = 'cell'
+            maptype = 'raster'
         else:
             maptype = 'vector'
         
@@ -424,7 +432,7 @@
         self.xygroup = ''
 
         # default extension
-        self.extension = '.georect' + str(os.getpid())
+        self.extension = '_georect' + str(os.getpid())
 
         #
         # layout
@@ -556,7 +564,7 @@
                                               item)):
                     self.groupList.append(item)
         
-        if maptype == 'cell':
+        if maptype == 'raster':
             self.btn_vgroup.Hide()
             self.Bind(wx.EVT_BUTTON, self.OnMkGroup, self.btn_mkgroup)
 
@@ -610,22 +618,34 @@
                        flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5,
                        pos=(1, 2))
 
-        self.sizer.Add(item=wx.StaticText(parent=self, id=wx.ID_ANY, label=_('Select target map to display:')),
+        self.sizer.Add(item=wx.StaticText(parent=self, id=wx.ID_ANY, label=_('Select target raster map to display:')),
                        flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5,
                        pos=(2, 1))
 
-        self.tgtselection = Select(self, id=wx.ID_ANY,
-                                   size=globalvar.DIALOG_GSELECT_SIZE, type=maptype, updateOnPopup = False)
-        
-        self.sizer.Add(item=self.tgtselection,
+        self.tgtrastselection = Select(self, id=wx.ID_ANY,
+                                   size=globalvar.DIALOG_GSELECT_SIZE, type='raster', updateOnPopup = False)
+
+        self.sizer.Add(item=self.tgtrastselection,
                        flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5,
                        pos=(2, 2))
 
+        self.sizer.Add(item=wx.StaticText(parent=self, id=wx.ID_ANY, label=_('Select target vector map to display:')),
+                       flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5,
+                       pos=(3, 1))
+
+        self.tgtvectselection = Select(self, id=wx.ID_ANY,
+                                   size=globalvar.DIALOG_GSELECT_SIZE, type='vector', updateOnPopup = False)
+        
+        self.sizer.Add(item=self.tgtvectselection,
+                       flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5,
+                       pos=(3, 2))
+
         #
         # bindings
         #
         self.srcselection.Bind(wx.EVT_TEXT, self.OnSrcSelection)
-        self.tgtselection.Bind(wx.EVT_TEXT, self.OnTgtSelection)
+        self.tgtrastselection.Bind(wx.EVT_TEXT, self.OnTgtRastSelection)
+        self.tgtvectselection.Bind(wx.EVT_TEXT, self.OnTgtVectSelection)
         self.Bind(wiz.EVT_WIZARD_PAGE_CHANGING, self.OnPageChanging)
         self.Bind(wiz.EVT_WIZARD_PAGE_CHANGED, self.OnEnterPage)
         self.Bind(wx.EVT_CLOSE, self.parent.Cleanup)
@@ -644,7 +664,7 @@
 
         try:
         # set computational region to match selected map and zoom display to region
-            if maptype == 'cell':
+            if maptype == 'raster':
                 p = RunCommand('g.region', 'rast=src_map')
             elif maptype == 'vector':
                 p = RunCommand('g.region', 'vect=src_map')
@@ -655,12 +675,18 @@
         except:
             pass
 
-    def OnTgtSelection(self,event):
+    def OnTgtRastSelection(self,event):
         """!Source map to display selected"""
         global tgt_map
 
-        tgt_map = event.GetString()
+        tgt_map['raster'] = event.GetString()
 
+    def OnTgtVectSelection(self,event):
+        """!Source map to display selected"""
+        global tgt_map
+
+        tgt_map['vector'] = event.GetString()
+
     def OnPageChanging(self, event=None):
         global src_map
         global tgt_map
@@ -680,29 +706,63 @@
         global tgt_map
 
         self.srcselection.SetElementList(maptype)
-        ret = RunCommand('i.group',
-                         parent = self,
-                         read = True,
-                         group = self.parent.grouppage.xygroup,
-                         flags = 'g')            
 
-        if ret:
-            self.parent.src_maps = ret.splitlines()
-        else:
-            GError(parent = self,
-                   message = _('No maps in selected group <%s>.\n'
-                               'Please edit group or select another group.') %
-                   self.parent.grouppage.xygroup)
-            return
+        if maptype == 'raster':
+            ret = RunCommand('i.group',
+                             parent = self,
+                             read = True,
+                             group = self.parent.grouppage.xygroup,
+                             flags = 'g')            
 
+            if ret:
+                self.parent.src_maps = ret.splitlines()
+            else:
+                GError(parent = self,
+                       message = _('No maps in selected group <%s>.\n'
+                                   'Please edit group or select another group.') %
+                       self.parent.grouppage.xygroup)
+                return
+
+        elif maptype == 'vector':
+            grassdatabase = self.parent.grassdatabase
+            xylocation = self.parent.gisrc_dict['LOCATION_NAME']
+            xymapset = self.parent.gisrc_dict['MAPSET']
+            # make list of vectors to georectify from VREF
+
+            vgrpfile = os.path.join(grassdatabase,
+                                     xylocation,
+                                     xymapset,
+                                     'group',
+                                     self.parent.grouppage.xygroup,
+                                     'VREF')
+
+            f = open(vgrpfile)
+            try:
+                for vect in f.readlines():
+                    vect = vect.strip('\n')
+                    if len(vect) < 1:
+                        continue
+                    self.parent.src_maps.append(vect)
+            finally:
+                f.close()
+                
+            if len(self.parent.src_maps) < 1:
+                GError(parent = self,
+                       message = _('No maps in selected group <%s>.\n'
+                                   'Please edit group or select another group.') %
+                       self.parent.grouppage.xygroup)
+                return
+
         # filter out all maps not in group
         self.srcselection.tcp.GetElementList(elements = self.parent.src_maps)
         src_map = self.parent.src_maps[0]
         self.srcselection.SetValue(src_map)
 
         self.parent.SwitchEnv('target')
-        self.tgtselection.SetElementList(maptype)
-        self.tgtselection.GetElementList()
+        self.tgtrastselection.SetElementList('raster')
+        self.tgtrastselection.GetElementList()
+        self.tgtvectselection.SetElementList('vector')
+        self.tgtvectselection.GetElementList()
         self.parent.SwitchEnv('source')
 
         if src_map == '':
@@ -712,8 +772,8 @@
 
 class GCP(MapFrame, ColumnSorterMixin):
     """!
-    Manages ground control points for georectifying. Calculates RMS statics.
-    Calls i.rectify or v.transform to georectify map.
+    Manages ground control points for georectifying. Calculates RMS statistics.
+    Calls i.rectify or v.rectify to georectify map.
     """
     def __init__(self, parent, grwiz = None, id = wx.ID_ANY,
                  title = _("Manage Ground Control Points"),
@@ -721,7 +781,7 @@
 
         self.grwiz = grwiz # GR Wizard
 
-        if tgt_map == '':
+        if tgt_map['raster'] == '' and tgt_map['vector'] == '':
             self.show_target = False
         else:
             self.show_target = True
@@ -1321,7 +1381,7 @@
         if self.CheckGCPcount(msg=True) == False:
             return
 
-        if maptype == 'cell':
+        if maptype == 'raster':
             self.grwiz.SwitchEnv('source')
 
             if self.clip_to_region:
@@ -1350,19 +1410,7 @@
                 print >> sys.stderr, msg
                 
         elif maptype == 'vector':
-            outmsg = ''
             # loop through all vectors in VREF
-            # and move resulting vector to target location
-            
-            # make sure current mapset has a vector folder
-            if not os.path.isdir(os.path.join(self.grassdatabase,
-                                              self.currentlocation,
-                                              self.currentmapset,
-                                              'vector')):
-                os.mkdir(os.path.join(self.grassdatabase,
-                                      self.currentlocation,
-                                      self.currentmapset,
-                                      'vector'))
 
             self.grwiz.SwitchEnv('source')
             
@@ -1378,89 +1426,39 @@
             finally:
                 f.close()
                                
-            # georectify each vector in VREF using v.transform
+            # georectify each vector in VREF using v.rectify
             for vect in vectlist:
-                self.outname = vect + '_' + self.extension
+                self.outname = str(vect.split('@')[0]) + self.extension
+                print self.outname
                 self.parent.goutput.WriteLog(text = _('Transforming <%s>...') % vect,
                                              switchPage = True)
-                msg = err = ''
+                ret = msg = ''
                 
-                ret, out, err = RunCommand('v.transform',
-                                           overwrite = True,
-                                           input = vect,
-                                           output = self.outname,
-                                           pointsfile = self.file['points'],
-                                           getErrorMsg = True, read = True) 
-                
-                if ret == 0:
-                    self.VectGRList.append(self.outname)
-                    # note: WriteLog doesn't handle GRASS_INFO_PERCENT well, so using a print here
-                    # self.parent.goutput.WriteLog(text = _(err), switchPage = True)
-                    self.parent.goutput.WriteLog(text = out, switchPage = True)
-                else:
-                    self.parent.goutput.WriteError(_('Georectification of vector map <%s> failed') %
-                                                   self.outname)
-                    self.parent.goutput.WriteError(err)
-                
-                # FIXME
-                # Copying database information not working. 
-                # Does not copy from xy location to current location
-                # TODO: replace $GISDBASE etc with real paths
-                #                xyLayer = []
-                #                for layer in grass.vector_db(map = vect).itervalues():
-                #                    xyLayer.append((layer['driver'],
-                #                                    layer['database'],
-                #                                    layer['table']))
-                    
-                    
-                    #                dbConnect = grass.db_connection()
-                    #                print 'db connection =', dbConnect
-                    #                for layer in xyLayer:     
-                    #                    self.parent.goutput.RunCmd(['db.copy',
-                    #                                                '--q',
-                    #                                                '--o',
-                    #                                                'from_driver=%s' % layer[0],
-                    #                                                'from_database=%s' % layer[1],
-                    #                                                'from_table=%s' % layer[2],
-                    #                                                'to_driver=%s' % dbConnect['driver'],
-                    #                                                'to_database=%s' % dbConnect['database'],
-                    #                                                'to_table=%s' % layer[2] + '_' + self.extension])
+                busy = wx.BusyInfo(message=_("Rectifying vector map <%s>, please wait...") % vect,
+                                   parent=self)
+                wx.Yield()
 
-            # copy all georectified vectors from source location to current location
-            for name in self.VectGRList:
-                xyvpath = os.path.join(self.grassdatabase,
-                                       self.xylocation,
-                                       self.xymapset,
-                                       'vector',
-                                       name)
-                vpath = os.path.join(self.grassdatabase,
-                                     self.currentlocation,
-                                     self.currentmapset,
-                                     'vector',
-                                     name)
-                                    
-                if os.path.isdir(vpath):
-                    self.parent.goutput.WriteWarning(_('Vector map <%s> already exists. '
-                                                       'Change extension name and '
-                                                       'georectify again.') % self.outname)
-                    break
-                else:
-                    # use shutil.copytree() because shutil.move() deletes src dir
-                    shutil.copytree(xyvpath, vpath)
+                ret, msg = RunCommand('v.rectify',
+                                      parent = self,
+                                      getErrorMsg = True,
+                                      quiet = True,
+                                      input = vect,
+                                      output = self.outname,
+                                      group = self.xygroup,
+                                      order = self.gr_order)
 
-                # TODO: connect vectors to copied tables with v.db.connect
+                busy.Destroy()
+
+                # provide feedback on failure
+                if ret != 0:
+                    print >> sys.stderr, msg
                                                    
-            GMessage(_('For all vector maps georectified successfully,') + '\n' +
-                     _('you will need to copy any attribute tables') + '\n' +
-                     _('and reconnect them to the georectified vectors'),
-                     parent = self)
-        
         self.grwiz.SwitchEnv('target')
 
     def OnGeorectDone(self, **kargs):
         """!Print final message"""
         global maptype
-        if maptype == 'cell':
+        if maptype == 'raster':
             return
         
         returncode = kargs['returncode']
@@ -2219,7 +2217,7 @@
         for item in range(self.listMap.GetCount()):
             if not self.listMap.IsChecked(item):
                 continue
-            vgrouplist.append(self.listMap.GetString(item))
+            vgrouplist.append(self.listMap.GetString(item) + '@' + self.xymapset)
         
         f = open(self.vgrpfile, mode='w')
         try:
@@ -2339,7 +2337,8 @@
         #
         self.parent = parent
         self.new_src_map = src_map
-        self.new_tgt_map = tgt_map
+        self.new_tgt_map = { 'raster' : tgt_map['raster'],
+                             'vector' : tgt_map['vector'] }
         self.sdfactor = 0
 
         self.symbol = {}
@@ -2542,35 +2541,46 @@
         #
         # source map to display
         self.srcselection = Select(panel, id=wx.ID_ANY,
-                                   size=globalvar.DIALOG_GSELECT_SIZE, type='cell', updateOnPopup = False)
+                                   size=globalvar.DIALOG_GSELECT_SIZE, type='maptype', updateOnPopup = False)
         self.parent.grwiz.SwitchEnv('source')
         self.srcselection.SetElementList(maptype)
         # filter out all maps not in group
         self.srcselection.tcp.GetElementList(elements = self.parent.src_maps)
 
-        # target map to display
-        self.tgtselection = Select(panel, id=wx.ID_ANY,
-                                   size=globalvar.DIALOG_GSELECT_SIZE, type='cell', updateOnPopup = False)
+        # target map(s) to display
         self.parent.grwiz.SwitchEnv('target')
-        self.tgtselection.SetElementList(maptype)
-        self.tgtselection.GetElementList()
+        self.tgtrastselection = Select(panel, id=wx.ID_ANY,
+                                   size=globalvar.DIALOG_GSELECT_SIZE, type='raster', updateOnPopup = False)
+        self.tgtrastselection.SetElementList('cell')
+        self.tgtrastselection.GetElementList()
 
+        self.tgtvectselection = Select(panel, id=wx.ID_ANY,
+                                   size=globalvar.DIALOG_GSELECT_SIZE, type='vector', updateOnPopup = False)
+        self.tgtvectselection.SetElementList('vector')
+        self.tgtvectselection.GetElementList()
+
         sizer.Add(item=wx.StaticText(parent=panel, id=wx.ID_ANY, label=_('Select source map to display:')),
                        proportion=0, flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5)
         sizer.Add(item=self.srcselection, proportion=0, 
                        flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5)
         self.srcselection.SetValue(src_map)
-        sizer.Add(item=wx.StaticText(parent=panel, id=wx.ID_ANY, label=_('Select target map to display:')),
+        sizer.Add(item=wx.StaticText(parent=panel, id=wx.ID_ANY, label=_('Select target raster map to display:')),
                        proportion=0, flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5)
-        sizer.Add(item=self.tgtselection, proportion=0, 
+        sizer.Add(item=self.tgtrastselection, proportion=0, 
                        flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5)
-        self.tgtselection.SetValue(tgt_map)
+        self.tgtrastselection.SetValue(tgt_map['raster'])
+        sizer.Add(item=wx.StaticText(parent=panel, id=wx.ID_ANY, label=_('Select target vector map to display:')),
+                       proportion=0, flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5)
+        sizer.Add(item=self.tgtvectselection, proportion=0, 
+                       flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5)
+        self.tgtvectselection.SetValue(tgt_map['vector'])
 
         # bindings
         self.highlighthighest.Bind(wx.EVT_CHECKBOX, self.OnHighlight)
         self.rmsWin.Bind(wx.EVT_TEXT, self.OnSDFactor)
         self.srcselection.Bind(wx.EVT_TEXT, self.OnSrcSelection)
-        self.tgtselection.Bind(wx.EVT_TEXT, self.OnTgtSelection)
+        self.tgtrastselection.Bind(wx.EVT_TEXT, self.OnTgtRastSelection)
+        self.tgtvectselection.Bind(wx.EVT_TEXT, self.OnTgtVectSelection)
 
         panel.SetSizer(sizer)
         
@@ -2657,19 +2667,26 @@
         global src_map
 
         tmp_map = event.GetString()
-
+        
         if not tmp_map == '' and not tmp_map == src_map:
             self.new_src_map = tmp_map
 
-    def OnTgtSelection(self,event):
+    def OnTgtRastSelection(self,event):
         """!Target map to display selected"""
         global tgt_map
 
-        tmp_map = event.GetString()
+        self.new_tgt_map['raster'] = event.GetString()
+        if self.new_tgt_map['raster'] is None:
+            self.new_tgt_map['raster'] = ''
 
-        if not tmp_map == tgt_map:
-            self.new_tgt_map = tmp_map
+    def OnTgtVectSelection(self,event):
+        """!Target map to display selected"""
+        global tgt_map
 
+        self.new_tgt_map['vector'] = event.GetString()
+        if self.new_tgt_map['vector'] is None:
+            self.new_tgt_map['vector'] = ''
+
     def OnMethod(self, event):
         self.parent.gr_method = self.methods[event.GetSelection()]
 
@@ -2682,6 +2699,7 @@
     def UpdateSettings(self):
         global src_map
         global tgt_map
+        global maptype
 
         layers = None
 
@@ -2714,51 +2732,73 @@
         srcrenderVector = False
         tgtrender = False
         tgtrenderVector = False
+        reload_target = False
         if self.new_src_map != src_map:
             # remove old layer
             layers = self.parent.grwiz.SrcMap.GetListOfLayers()
             self.parent.grwiz.SrcMap.DeleteLayer(layers[0])
             
             src_map = self.new_src_map
-            cmdlist = ['d.rast', 'map=%s' % src_map]
+            if maptype == 'raster':
+                cmdlist = ['d.rast', 'map=%s' % src_map]
+                srcrender = True
+            else:
+                cmdlist = ['d.vect', 'map=%s' % src_map]
+                srcrenderVector = True
             self.parent.grwiz.SwitchEnv('source')
-            name, found = utils.GetLayerNameFromCmd(cmdlist),
-            self.parent.grwiz.SrcMap.AddLayer(type='raster', command=cmdlist, l_active=True,
+            name, found = utils.GetLayerNameFromCmd(cmdlist)
+            self.parent.grwiz.SrcMap.AddLayer(type=maptype, command=cmdlist, l_active=True,
                               name=name, l_hidden=False, l_opacity=1.0, l_render=False)
 
             self.parent.grwiz.SwitchEnv('target')
-            srcrender = True
 
-        if self.new_tgt_map != tgt_map:
-            # remove old layer
+        if self.new_tgt_map['raster'] != tgt_map['raster'] or \
+           self.new_tgt_map['vector'] != tgt_map['vector']:
+            # remove all layers
             layers = self.parent.grwiz.TgtMap.GetListOfLayers()
-            if layers:
+            while layers:
                 self.parent.grwiz.TgtMap.DeleteLayer(layers[0])
-            tgt_map = self.new_tgt_map
+                del layers[0]
+                layers = self.parent.grwiz.TgtMap.GetListOfLayers()
+            #self.parent.grwiz.TgtMap.DeleteAllLayers()
+            reload_target = True
+            tgt_map['raster'] = self.new_tgt_map['raster']
+            tgt_map['vector'] = self.new_tgt_map['vector']
 
-            if tgt_map != '':
-                cmdlist = ['d.rast', 'map=%s' % tgt_map]
+            if tgt_map['raster'] != '':
+                cmdlist = ['d.rast', 'map=%s' % tgt_map['raster']]
                 name, found = utils.GetLayerNameFromCmd(cmdlist)
                 self.parent.grwiz.TgtMap.AddLayer(type='raster', command=cmdlist, l_active=True,
                                   name=name, l_hidden=False, l_opacity=1.0, l_render=False)
 
                 tgtrender = True
-                if self.parent.show_target == False:
-                    self.parent.show_target = True
-                    self.parent._mgr.GetPane("target").Show()
-                    self.parent._mgr.Update()
-                    self.parent.GetMapToolbar().Enable('zoommenu', enable = True)
-                    self.parent.activemap.Enable()
-                    self.parent.TgtMapWindow.ZoomToMap(layers = self.parent.TgtMap.GetListOfLayers())
-            else: # tgt_map == ''
-                if self.parent.show_target == True:
-                    self.parent.show_target = False
-                    self.parent._mgr.GetPane("target").Hide()
-                    self.parent._mgr.Update()
-                    self.parent.activemap.SetSelection(0)
-                    self.parent.activemap.Enable(False)
-                    self.parent.GetMapToolbar().Enable('zoommenu', enable = False)
 
+            if tgt_map['vector'] != '':
+                cmdlist = ['d.vect', 'map=%s' % tgt_map['vector']]
+                name, found = utils.GetLayerNameFromCmd(cmdlist)
+                self.parent.grwiz.TgtMap.AddLayer(type='vector', command=cmdlist, l_active=True,
+                                  name=name, l_hidden=False, l_opacity=1.0, l_render=False)
+
+                tgtrenderVector = True
+
+        if tgt_map['raster'] == '' and tgt_map['vector'] == '':
+            if self.parent.show_target == True:
+                self.parent.show_target = False
+                self.parent._mgr.GetPane("target").Hide()
+                self.parent._mgr.Update()
+                self.parent.activemap.SetSelection(0)
+                self.parent.activemap.Enable(False)
+                self.parent.GetMapToolbar().Enable('zoommenu', enable = False)
+        else:
+            if self.parent.show_target == False:
+                self.parent.show_target = True
+                self.parent._mgr.GetPane("target").Show()
+                self.parent._mgr.Update()
+                self.parent.activemap.SetSelection(0)
+                self.parent.activemap.Enable(True)
+                self.parent.GetMapToolbar().Enable('zoommenu', enable = True)
+                self.parent.TgtMapWindow.ZoomToMap(layers = self.parent.TgtMap.GetListOfLayers())
+        
         self.parent.UpdateColours(srcrender, srcrenderVector, tgtrender, tgtrenderVector)
 
     def OnSave(self, event):



More information about the grass-commit mailing list