[GRASS-SVN] r52437 - grass-addons/grass7/gui/wxpython/wx.vnet/vnet

svn_grass at osgeo.org svn_grass at osgeo.org
Mon Jul 23 14:34:22 PDT 2012


Author: turek
Date: 2012-07-23 14:34:21 -0700 (Mon, 23 Jul 2012)
New Revision: 52437

Modified:
   grass-addons/grass7/gui/wxpython/wx.vnet/vnet/dialogs.py
   grass-addons/grass7/gui/wxpython/wx.vnet/vnet/widgets.py
Log:
vnet: Bugs fixing, few comments added, button for adding vector map into layer tree

Modified: grass-addons/grass7/gui/wxpython/wx.vnet/vnet/dialogs.py
===================================================================
--- grass-addons/grass7/gui/wxpython/wx.vnet/vnet/dialogs.py	2012-07-23 11:56:06 UTC (rev 52436)
+++ grass-addons/grass7/gui/wxpython/wx.vnet/vnet/dialogs.py	2012-07-23 21:34:21 UTC (rev 52437)
@@ -45,8 +45,9 @@
 from vnet.widgets     import PointsList
 from vnet.toolbars    import MainToolbar, PointListToolbar
 
-#TODOs:
-# itemdada mam - not direct access
+#TODOs
+# when layer tree is lmgr is changed, tmp layer is removed from render list 
+# check if has layertree (lmgr)?
 
 class VNETDialog(wx.Dialog):
     def __init__(self, parent,
@@ -61,7 +62,8 @@
         self.inputData = {}
         self.cmdParams = {}
 
-        self.tmp_result = "vnet_tmp_result"
+        self.tmp_result = None
+        self.vnetFlowTmpCut = None
         self.tmpMaps = VnetTmpVectMaps(parent = self)
 
         self.firstAnalysis = True
@@ -80,7 +82,7 @@
         self.SetIcon(wx.Icon(os.path.join(globalvar.ETCICONDIR, 'grass_map.ico'), wx.BITMAP_TYPE_ICO))
         
         # initialization of v.net.* analysis parameters
-        self._initvnetParams()
+        self._initVnetParams()
 
         # toobars
         self.toolbars = {}
@@ -101,9 +103,9 @@
                                   style = FN.FNB_FANCY_TABS | FN.FNB_BOTTOM |
                                           FN.FNB_NO_NAV_BUTTONS | FN.FNB_NO_X_BUTTON)
 
-
-        self._createAnalysisPage()
-        self._createDataPage()
+        # Creates tabs
+        self._createPointsPage()
+        self._createParametersPage()
         self._createOutputPage()
 
         self._addPanes()
@@ -114,13 +116,13 @@
         self.handlerRegistered = False
         self.tmpResultLayer = None 
 
-
         # adds 2 points into list
         for i in range(2):
             self.list.AddItem(None)
             self.list.EditCellIndex(i, 1, self.cols[1][1][1 + i]) 
             self.list.CheckItem(i, True)
 
+        # selects first point
         self.list.selected = 0
         self.list.Select(self.list.selected)
 
@@ -135,9 +137,10 @@
             self.goutput.SetSashPosition(int(self.GetSize()[1] * .75))
 
         self.OnAnalysisChanged(None)
+        self.notebook.SetSelectionByName("parameters")
 
     def  __del__(self):
-        """!Removes temp layer with analysis result, unregisters handlers and graphics"""
+        """!Removes temp layers, unregisters handlers and graphics"""
 
         update = self.tmpMaps.RemoveAllTmpMaps()
 
@@ -153,6 +156,7 @@
 
 
     def _addPanes(self):
+        """!Adds toolbar pane and pane with tabs"""
 
         self._mgr.AddPane(self.toolbars['mainToolbar'],
                               wx.aui.AuiPaneInfo().
@@ -180,23 +184,24 @@
         sizer.Fit(self)  
         self.Layout()
 
-    def _createAnalysisPage(self):
+    def _createPointsPage(self):
+        """!Tab with points list and analysis settings"""
 
-        analysisPanel = wx.Panel(parent = self)
+        pointsPanel = wx.Panel(parent = self)
         self.anSettings = {} #TODO
         maxValue = 1e8
 
-        listBox = wx.StaticBox(parent = analysisPanel, id = wx.ID_ANY,
+        listBox = wx.StaticBox(parent = pointsPanel, id = wx.ID_ANY,
                                 label =" %s " % _("Points for analysis:"))
 
-        self.notebook.AddPage(page = analysisPanel, 
+        self.notebook.AddPage(page = pointsPanel, 
                               text=_('Points'), 
                               name = 'points')
 
-        self.list = PtsList(parent = analysisPanel, dialog = self, cols = self.cols)
-        self.toolbars['pointsList'] = PointListToolbar(parent = analysisPanel, list = self.list)
+        self.list = PtsList(parent = pointsPanel, dialog = self, cols = self.cols)
+        self.toolbars['pointsList'] = PointListToolbar(parent = pointsPanel, list = self.list)
 
-        anSettingsPanel = wx.Panel(parent = analysisPanel)
+        anSettingsPanel = wx.Panel(parent = pointsPanel)
 
         anSettingsBox = wx.StaticBox(parent = anSettingsPanel, id = wx.ID_ANY,
                                 label =" %s " % _("Analysis settings:"))
@@ -213,11 +218,17 @@
         #maxDist = int(UserSettings.Get(group = 'vnet', key = 'analysis_settings', subkey ='maxDist'))
         self.anSettings["max_dist"].SetValue(100000) #TODO init val
 
+        #showCutPanel =  wx.Panel(parent = anSettingsPanel)
+        #self.anSettings["show_cut"] = wx.CheckBox(parent = showCutPanel, id=wx.ID_ANY,
+        #                                          label = _("Show minimal cut"))
+        #self.anSettings["show_cut"].Bind(wx.EVT_CHECKBOX, self.OnShowCut)
+
         isoLinesPanel =  wx.Panel(parent = anSettingsPanel)
         isoLineslabel = wx.StaticText(parent = isoLinesPanel, id = wx.ID_ANY, label = _("Iso lines:"))
         self.anSettings["iso_lines"] = wx.TextCtrl(parent = isoLinesPanel, id = wx.ID_ANY) #TODO
         self.anSettings["iso_lines"].SetValue("1000,2000,3000")
 
+        # Layout
         AnalysisSizer = wx.BoxSizer(wx.VERTICAL)
 
         listSizer = wx.StaticBoxSizer(listBox, wx.VERTICAL)
@@ -241,8 +252,14 @@
         maxDistPanel.SetSizer(maxDistSizer)
         anSettingsSizer.Add(item = maxDistPanel, proportion = 1, flag = wx.EXPAND)
 
+        #showCutSizer = wx.BoxSizer(wx.HORIZONTAL)
+        #showCutPanel.SetSizer(showCutSizer)
+        #showCutSizer.Add(item = self.anSettings["show_cut"],
+        #                 flag = wx.EXPAND | wx.ALL, border = 5, proportion = 0)
+        #anSettingsSizer.Add(item = showCutPanel, proportion = 1, flag = wx.EXPAND)
+
         isoLinesSizer = wx.BoxSizer(wx.HORIZONTAL)
-        isoLinesSizer.Add(item = isoLineslabel, flag = wx.EXPAND, proportion = 0)
+        isoLinesSizer.Add(item = isoLineslabel, flag = wx.ALIGN_CENTER_VERTICAL, proportion = 1)
         isoLinesSizer.Add(item = self.anSettings["iso_lines"],
                         flag = wx.EXPAND | wx.ALL, border = 5, proportion = 1)
         isoLinesPanel.SetSizer(isoLinesSizer)
@@ -252,10 +269,22 @@
         AnalysisSizer.Add(item = anSettingsPanel, proportion = 0, flag = wx.EXPAND | wx.RIGHT | wx.LEFT | wx.BOTTOM, border = 5)
 
         anSettingsPanel.SetSizer(anSettingsSizer)
-        analysisPanel.SetSizer(AnalysisSizer)
+        pointsPanel.SetSizer(AnalysisSizer)
 
+    def OnShowCut(self, event):
+        """!Shows vector map with minimal cut (v.net.flow) - not yet implemented"""
+        val = event.IsChecked()
+        if val:
+            self.tmp_result.DeleteRenderLayer()
+            self.vnetFlowTmpCut.AddRenderLayer()
+        else:
+            self.vnetFlowTmpCut.DeleteRenderLayer()
+            self.tmp_result.AddRenderLayer()
+
+        self.mapWin.UpdateMap(render = True, renderVector = True)
+
     def _createOutputPage(self):
-
+        """!Tab with output console"""
         outputPanel = wx.Panel(parent = self)
         self.notebook.AddPage(page = outputPanel, 
                               text = _("Output"), 
@@ -276,8 +305,8 @@
 
         outputPanel.SetSizer(self.outputSizer)
 
-    def _createDataPage(self):
-
+    def _createParametersPage(self):
+        """!Tab with output console"""
         dataPanel = wx.Panel(parent=self)
         self.notebook.AddPage(page = dataPanel,
                               text=_('Parameters'), 
@@ -299,6 +328,15 @@
                 self.inputData[dataSel[0]] = dataSel[2](parent = selPanels[dataSel[0]],  
                                                         size = (-1, -1), 
                                                         type = 'vector')
+
+                icon = wx.Image(os.path.join(globalvar.ETCICONDIR, "grass", "layer-vector-add.png"))
+                icon.Rescale(18, 18)
+                icon = wx.BitmapFromImage(icon) 
+                self.addToTreeBtn = wx.BitmapButton(parent = selPanels[dataSel[0]], 
+                                                    bitmap = icon, 
+                                                    size = globalvar.DIALOG_COLOR_SIZE) 
+                self.addToTreeBtn.SetToolTipString(_("Add vector map into layer tree"))
+                self.addToTreeBtn.Disable()
             else:
                 self.inputData[dataSel[0]] = dataSel[2](parent = selPanels[dataSel[0]],  
                                                         size = (-1, -1))
@@ -309,17 +347,23 @@
         self.inputData['input'].Bind(wx.EVT_TEXT, self.OnVectSel) # TODO optimization
         self.inputData['alayer'].Bind(wx.EVT_TEXT, self.OnALayerSel)
         self.inputData['nlayer'].Bind(wx.EVT_TEXT, self.OnNLayerSel)
+        self.addToTreeBtn .Bind(wx.EVT_BUTTON, self.OnToTreeBtn)
 
+        # Layout
         mainSizer = wx.BoxSizer(wx.VERTICAL)
-        box = wx.StaticBox(dataPanel, -1, "Layer for analysis")
+        box = wx.StaticBox(dataPanel, -1, "Vector map and layers for analysis")
         bsizer = wx.StaticBoxSizer(box, wx.VERTICAL)
 
         mainSizer.Add(item = bsizer, proportion = 0,
-                                 flag = wx.EXPAND  | wx.TOP | wx.LEFT | wx.RIGHT, border = 5) 
+                      flag = wx.EXPAND  | wx.TOP | wx.LEFT | wx.RIGHT, border = 5) 
 
         for sel in ['input', 'alayer', 'nlayer']:
-            selPanels[sel].SetSizer(self._doSelLayout(title = label[sel], sel = self.inputData[sel]))
-            bsizer.Add(item = selPanels[sel], proportion = 0,
+            if sel== 'input':
+                btn = self.addToTreeBtn
+            selPanels[sel].SetSizer(self._doSelLayout(title = label[sel], 
+                                                           sel = self.inputData[sel], 
+                                                      btn = btn))
+            bsizer.Add(item = selPanels[sel], proportion = 1,
                        flag = wx.EXPAND)
 
         box = wx.StaticBox(dataPanel, -1, "Costs")
@@ -335,7 +379,7 @@
 
         dataPanel.SetSizer(mainSizer)
 
-    def _doSelLayout(self, title, sel): 
+    def _doSelLayout(self, title, sel, btn = None): 
 
         selSizer = wx.BoxSizer(orient = wx.VERTICAL)
 
@@ -345,12 +389,44 @@
 
         selSizer.Add(item = selTitleSizer, proportion = 0,
                                  flag = wx.EXPAND)
-        selSizer.Add(item = sel, proportion = 0,
-                     flag = wx.EXPAND | wx.ALL| wx.ALIGN_CENTER_VERTICAL,
-                     border = 5)
+
+        if btn:
+                selFiledSizer = wx.BoxSizer(orient = wx.HORIZONTAL)
+                selFiledSizer.Add(item = sel, proportion = 1,
+                             flag = wx.EXPAND | wx.ALL)
+
+                selFiledSizer.Add(item = btn, proportion = 0,
+                             flag = wx.EXPAND | wx.ALL)
+
+                selSizer.Add(item = selFiledSizer, proportion = 0,
+                             flag = wx.EXPAND | wx.ALL| wx.ALIGN_CENTER_VERTICAL,
+                             border = 5)
+        else:
+                selSizer.Add(item = sel, proportion = 1,
+                             flag = wx.EXPAND | wx.ALL| wx.ALIGN_CENTER_VERTICAL,
+                             border = 5)
         return selSizer
 
+    def OnToTreeBtn(self, event):
+        """!Adds vector map into layer tree (button next to map select)"""
+        vectorMap = self.inputData['input'].GetValue()
+        existsMap = grass.find_file(name = vectorMap, 
+                                    element = 'vector', 
+                                    mapset = grass.gisenv()['MAPSET'])
+        if not existsMap["name"]:
+            return
+
+        cmd = ['d.vect', 
+               'map=' + vectorMap]
+
+        if  self.mapWin.tree.FindItemByData(key = 'name', value = vectorMap) is None: 
+            self.mapWin.tree.AddLayer(ltype = "vector", 
+                                      lcmd = cmd,
+                                      lname =vectorMap,
+                                      lchecked = True)           
+
     def OnVectSel(self, event):
+        """!When vector map is selected populates other selects (layer selects, columns selects)"""
         self.inputData['alayer'].Clear()
         self.inputData['nlayer'].Clear()
 
@@ -360,6 +436,7 @@
         items = self.inputData['alayer'].GetItems()
         itemsLen = len(items)
         if itemsLen < 1:
+            self.addToTreeBtn.Disable()
             self.inputData['alayer'].SetValue("")
             self.inputData['nlayer'].SetValue("")
             for sel in ['afcolumn', 'abcolumn', 'ncolumn']:
@@ -377,11 +454,13 @@
                 iItem = items.index(unicode("2")) 
                 self.inputData['nlayer'].SetSelection(iItem)
 
+        self.addToTreeBtn.Enable()
+
         self.OnALayerSel(event) 
         self.OnNLayerSel(event)
 
     def OnALayerSel(self, event):
-
+        """!When arc layer from vector map is selected, populates corespondent columns selects"""
         self.inputData['afcolumn'].InsertColumns(vector = self.inputData['input'].GetValue(), 
                                                  layer = self.inputData['alayer'].GetValue(), 
                                                  type = self.columnTypes)
@@ -391,14 +470,13 @@
 
 
     def OnNLayerSel(self, event):
-
+        """!When node layer from vector map is selected, populates corespondent column select"""
         self.inputData['ncolumn'].InsertColumns(vector = self.inputData['input'].GetValue(), 
                                                 layer = self.inputData['nlayer'].GetValue(), 
                                                 type = self.columnTypes)
  
     def OnCloseDialog(self, event):
         """!Cancel dialog"""
-
         self.parent.dialogs['vnet'] = None
         self.Destroy()
 
@@ -427,7 +505,6 @@
 
     def OnMapClickHandler(self, event):
         """!Takes coordinates from map window."""
-
         if event == 'unregistered':
             ptListToolbar = self.toolbars['pointsList']
             if ptListToolbar:
@@ -457,7 +534,6 @@
 
     def OnAnalyze(self, event):
         """!Called when network analysis is started"""
-
         # Check of parameters for analysis
         curr_mapset = grass.gisenv()['MAPSET']
         vectMaps = grass.list_grouped('vect')[curr_mapset]
@@ -514,7 +590,7 @@
             return            
 
         if self.firstAnalysis:
-            self.tmp_result = self.tmpMaps.AddTmpVectMap(self.tmp_result)
+            self.tmp_result = self.tmpMaps.AddTmpVectMap("vnet_tmp_result")
             if not self.tmp_result:
                     return          
             self.firstAnalysis = False
@@ -529,13 +605,15 @@
 
         catPts = self._getPtByCat()
 
+        self.tmpMaps.RemoveTmpMap(self.tmp_result)
+
         if self.currAnModule == "v.net.path":
             self._vnetPathRunAn(cmdParams, catPts)
         else:
             self._runAn(cmdParams, catPts)
    
     def _vnetPathRunAn(self, cmdParams, catPts):
-
+        """!Called when analysis is run for v.net.path module"""
         if len(self.pointsToDraw.GetAllItems()) < 1:
             return
 
@@ -578,8 +656,7 @@
         self.goutput.RunCmd(command = cmdParams, onDone = self._vnetPathRunAnDone)
 
     def _vnetPathRunAnDone(self, cmd, returncode):
-
-
+        """!Called when v.net.path analysis is done"""
         grass.try_remove(self.coordsTmpFile)
         self.tmp_result.SaveVectLayerState(layer = 1)
 
@@ -587,7 +664,7 @@
         self.mapWin.UpdateMap(render=True, renderVector=True)
 
     def _runAn(self, cmdParams, catPts):
-
+        """!Called for all v.net.* analysis (except v.net.path)"""
         # TODO how to get output in ondone function
         #cmdCategory = [ "v.category",
         #                "input=" + self.inputData['input'].GetValue(),
@@ -678,13 +755,9 @@
         self.goutput.RunCmd(command = cmdParams, onDone = self._runAnDone)
 
     def _runAnDone(self, cmd, returncode):
-
+        """!Called when analysis is done"""
         self.tmpMaps.RemoveTmpMap(self.tmpInPts) # remove earlier (ondone lambda?)
         self.tmpMaps.RemoveTmpMap(self.tmpInPtsConnected)
-        try:
-            self.tmpMaps.RemoveTmpMap(self.vnetFlowTmpCut)
-        except AttributeError:
-            pass
         grass.try_remove(self.tmpPtsAsciiFile)
 
         self.tmp_result.SaveVectLayerState(layer = 1)
@@ -692,7 +765,6 @@
         self.mapWin.UpdateMap(render=True, renderVector=True)
 
     def _getInputParams(self):
-
         inParams = []
         for col in self.vnetParams[self.currAnModule]["cmdParams"]["cols"]:
 
@@ -709,7 +781,7 @@
         return inParams
 
     def _getPtByCat(self):
-
+        """!Returns points separated by theirs categories"""
         cats = self.vnetParams[self.currAnModule]["cmdParams"]["cats"]
 
         ptByCats = {}
@@ -727,7 +799,7 @@
         return ptByCats
 
     def _getAsciiPts (self, catPts, maxCat, layerNum):
-
+        """!Returns points separated by categories in GRASS ASCII vector representation"""
         catsNums = {}
         pt_ascii = ""
         catNum = maxCat
@@ -746,7 +818,7 @@
         return pt_ascii, catsNums
 
     def _prepareCmd(self, cmd):
-
+        """!Helper function for preparation of cmd in list into form for RunCmd method"""
         for c in cmd[:]:
             if c.find("=") == -1:
                 continue
@@ -757,7 +829,7 @@
                 cmd.remove(c)
 
     def GetLayerStyle(self):
-
+        """!Returns cmd for d.vect, with set style for analysis result"""
         resStyle = self.vnetParams[self.currAnModule]["resultStyle"]
 
         width = UserSettings.Get(group='vnet', key='res_style', subkey= "line_width")
@@ -785,6 +857,7 @@
         return layerStyleCmd 
 
     def OnShowResult(self, event):
+        """!Shows, hides analysis result - not yet implemented"""
         mainToolbar = self.toolbars['mainToolbar']
         id = vars(mainToolbar)['showResult']
         toggleState = mainToolbar.GetToolState(id)
@@ -797,6 +870,7 @@
         self.mapWin.UpdateMap(render=True, renderVector=True)
 
     def OnInsertPoint(self, event):
+        """!Registers/unregisters mouse handler into map window"""
         if self.handlerRegistered == False:
             self.mapWin.RegisterMouseEventHandler(wx.EVT_LEFT_DOWN, 
                                                   self.OnMapClickHandler,
@@ -808,28 +882,51 @@
             self.handlerRegistered = False
 
     def OnSaveTmpLayer(self, event):
-
+        """!Permanently saves temporary map of analysis result"""
         dlg = AddLayerDialog(parent = self)#TODO impot location check?
 
+        msg = _("Vector map with analysis result does not exist.")
         if dlg.ShowModal() == wx.ID_OK:
 
-            addedMap = dlg.vectSel.GetValue()
-            existsMap = grass.find_file(name = addedMap, 
+            if not hasattr(self.tmp_result, "GetVectMapName"):
+                GMessage(parent = self,
+                         message = msg)
+                return
+
+            mapToAdd = self.tmp_result.GetVectMapName()
+            mapToAddEx = grass.find_file(name = mapToAdd, 
                                         element = 'vector', 
                                         mapset = grass.gisenv()['MAPSET'])
 
-            if existsMap["name"] and not dlg.overwrite.GetValue():
+            if not mapToAddEx["name"]: 
                 GMessage(parent = self,
-                         message = _("Map already exists. Result will not be added."))
+                         message = msg)
                 return
 
+            addedMap = dlg.vectSel.GetValue()
+            existsMap = grass.find_file(name = addedMap, 
+                                        element = 'vector', 
+                                        mapset = grass.gisenv()['MAPSET'])
+
+            if existsMap["name"]:
+                dlg = wx.MessageDialog(parent = self.parent.parent,
+                                       message = _("Vector map %s already exists. " +
+                                                "Do you want to overwrite it?") % 
+                                                (existsMap["fullname"]),
+                                       caption = _("Overwrite map layer"),
+                                       style = wx.YES_NO | wx.NO_DEFAULT |
+                                               wx.ICON_QUESTION | wx.CENTRE)            
+                ret = dlg.ShowModal()
+                if ret == wx.ID_NO:
+                    return
+
             RunCommand("g.copy",
                        overwrite = True,
                        vect = [self.tmp_result.GetVectMapName(), addedMap])
 
             cmd = self.GetLayerStyle()
             cmd.append('map=%s' % addedMap)
-            if  self.mapWin.tree.FindItemByData(key = 'name', value = addedMap) is None: #TODO check if has tree
+            if  self.mapWin.tree.FindItemByData(key = 'name', value = addedMap) is None: 
                 self.mapWin.tree.AddLayer(ltype = "vector", 
                                           lname =addedMap,
                                           lcmd = cmd,
@@ -848,7 +945,7 @@
         dlg.Destroy()
 
     def OnAnalysisChanged(self, event):
-
+        """!Updates dialog when analysis is changed"""
         # finds module name according to value in anChoice
         for module, params in self.vnetParams.iteritems():
             chLabel = self.toolbars['mainToolbar'].anChoice.GetValue()
@@ -867,6 +964,12 @@
         else:
             self.anSettings['iso_lines'].GetParent().Hide()
 
+        #if self.currAnModule == "v.net.flow":
+        #    self.anSettings['show_cut'].GetParent().Show()
+        #else:
+        #    self.anSettings['show_cut'].GetParent().Hide()
+
+        # Show only corresponding selects for chosen v.net module
         skip = []
         for col in self.attrCols.iterkeys():
             if "inputField" in self.attrCols[col]:
@@ -888,6 +991,7 @@
                 self.inputData[colInptF].GetParent().Hide()
         self.Layout()
 
+        # If module has only one category -> hide type column in points list otherwise show it
         if len(self.vnetParams[self.currAnModule]["cmdParams"]["cats"]) > 1:
             if self.hiddenTypeCol:
                 self.list.InsertColumnItem(1, self.hiddenTypeCol)
@@ -907,8 +1011,8 @@
                 self.list.ResizeColumns()
 
 
-    def _initvnetParams(self):
-        """!Initializes parameters for different v.net.* analysis """
+    def _initVnetParams(self):
+        """!Initializes parameters for different v.net.* modules """
 
         self.attrCols = {
                           'afcolumn' : {
@@ -1036,7 +1140,7 @@
         self.prev2catsAnModule = self.vnetModulesOrder[0]
 
     def _initSettings(self):
-
+        """!Initialization of settings (if not already defined)"""
         if 'vnet' in UserSettings.userSettings:
            return
 
@@ -1107,7 +1211,7 @@
         self.dialog.pointsToDraw.AddItem(coords = [0,0], 
                                          label = str(self.selectedkey + 1))
 
-        self.dialog.mapWin.UpdateMap(render=True, renderVector=True)
+        self.dialog.mapWin.UpdateMap(render=False, renderVector=False)
 
 
     def DeleteItem(self, event):
@@ -1132,7 +1236,7 @@
         event.Skip()
 
     def _adaptPointsList(self, currParamsCats, prevParamsCats):
- 
+        """Rename category values fwhen module is changed. Expample: Start point -> Sink point"""
         for item in enumerate(self.itemDataMap):            
             iCat = 0
             for ptCat in prevParamsCats:
@@ -1157,6 +1261,8 @@
         currModule = self.dialog.currAnModule #TODO public func
         cats = self.dialog.vnetParams[currModule]["cmdParams"]["cats"]
 
+        self.dialog.mapWin.UpdateMap(render=False, renderVector=False)
+
         if len(cats) <= 1:
             return 
 
@@ -1168,7 +1274,7 @@
             self._updateCheckedItems(index)
 
     def _updateCheckedItems(self, index):
-        """!for v.net.path - max. just one checked start point and end point """
+        """!For v.net.path - max. just one checked start point and end point """
         alreadyChecked = []
         if index:
             checkedKey = self.GetItemData(index)
@@ -1302,7 +1408,6 @@
 
     def OnSave(self, event):
         """!Button 'Save' pressed"""
-
         self.UpdateSettings()
 
         fileSettings = {}
@@ -1330,8 +1435,9 @@
 
         self.parent.SetPointDrawSettings()
 
-        renderLayer = self.parent.tmp_result.GetRenderLayer()
-        if renderLayer:
+        if not hasattr(self.parent.tmp_result, "GetRenderLayer"):
+            self.parent.mapWin.UpdateMap(render=False, renderVector=False)
+        elif self.parent.tmp_result.GetRenderLayer():
             self.parent.tmp_result.AddRenderLayer()
             self.parent.mapWin.UpdateMap(render=True, renderVector=True)#TODO optimization
         else:
@@ -1347,12 +1453,9 @@
         self.Close()
 
 class AddLayerDialog(wx.Dialog):
-    """!Adds layer with analysis result into layer tree"""
-   
     def __init__(self, parent,id=wx.ID_ANY,
                  title =_("Add analysis result into layer tree"), style=wx.DEFAULT_DIALOG_STYLE):
-        """!Dialog for editing item cells in list"""
-
+        """!Adds vector map with analysis result into layer tree"""
         wx.Dialog.__init__(self, parent, id, title = _(title), style = style)
 
         self.panel = wx.Panel(parent = self)
@@ -1362,14 +1465,12 @@
         self.vectSellabel = wx.StaticText(parent = self.panel, id = wx.ID_ANY,
                                           label = _("Layer name:")) 
 
-        self.overwrite = wx.CheckBox(parent = self.panel, id=wx.ID_ANY,
-                                     label = _("Overwrite existing layer"))
-
         # buttons
         self.btnCancel = wx.Button(self.panel, wx.ID_CANCEL)
         self.btnOk = wx.Button(self.panel, wx.ID_OK)
         self.btnOk.SetDefault()
 
+        self.SetInitialSize((400, -1))
         self._layout()
 
     def _layout(self):
@@ -1379,28 +1480,18 @@
         box = wx.StaticBox (parent = self.panel, id = wx.ID_ANY,
                             label = "Added layer")
 
-        boxSizer = wx.StaticBoxSizer(box, wx.VERTICAL)
+        boxSizer = wx.StaticBoxSizer(box, wx.HORIZONTAL)
 
-        # source coordinates
-        gridSizer = wx.GridBagSizer(vgap = 5, hgap = 5)
+        boxSizer.Add(item = self.vectSellabel, 
+                     flag = wx.ALIGN_CENTER_VERTICAL,
+                     proportion = 0)
 
-        row = 0
-        gridSizer.Add(item = self.vectSellabel, 
-                      flag = wx.ALIGN_CENTER_VERTICAL,
-                      pos = (row, 0))
-
-        gridSizer.Add(item = self.vectSel, 
-                      pos = (row, 1))
-
-        boxSizer.Add(item = gridSizer, proportion = 1,
+        boxSizer.Add(item = self.vectSel, proportion = 1,
                      flag = wx.EXPAND | wx.ALL, border = 5)
 
         sizer.Add(item = boxSizer, proportion = 1,
                   flag = wx.EXPAND | wx.ALL, border = 5)
 
-        row +=1 
-        gridSizer.Add(item = self.overwrite, pos =(row, 0))
-
         btnSizer = wx.StdDialogButtonSizer()
         btnSizer.AddButton(self.btnCancel)
         btnSizer.AddButton(self.btnOk)
@@ -1414,7 +1505,7 @@
 
 class VnetTmpVectMaps:
     def __init__(self, parent):
-
+        """!Class which creates, stores and destroys all tmp maps created during analysis"""
         self.tmpMaps = []
         self.parent = parent
         self.mapWin = self.parent.mapWin
@@ -1470,9 +1561,8 @@
         return update
 
 class VnetTmpVectMap:
-
     def __init__(self, parent, fullName):
-
+        """!Represents one temporary map"""
         self.fullName = fullName
         self.parent = parent
         self.renderLayer = None
@@ -1501,7 +1591,7 @@
         self.renderLayer = self.parent.mapWin.Map.AddLayer(type = "vector",  command = cmd,
                                                            l_active=True,    name = self.fullName, 
                                                            l_hidden = True,  l_opacity = 1.0, 
-                                                           l_render = True,  pos = -1)
+                                                           l_render = False,  pos = -1)
         return True
 
     def DeleteRenderLayer(self):

Modified: grass-addons/grass7/gui/wxpython/wx.vnet/vnet/widgets.py
===================================================================
--- grass-addons/grass7/gui/wxpython/wx.vnet/vnet/widgets.py	2012-07-23 11:56:06 UTC (rev 52436)
+++ grass-addons/grass7/gui/wxpython/wx.vnet/vnet/widgets.py	2012-07-23 21:34:21 UTC (rev 52437)
@@ -36,7 +36,8 @@
                  wx.LC_SINGLE_SEL):
         """!Creates list for points. 
 
-        PointsList class was extracted from GCPList class in GCP manager. 
+        PointsList class was extracted from GCPList class in GCP manager. It is possible 
+        to be shared by GCP and VNET front end.
 
         Important parameters:
         @param cols is list containing list items. which represents columns.



More information about the grass-commit mailing list