Kaynağa Gözat

wxGUI: launch ATM when creating new vector map

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@47336 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 13 yıl önce
ebeveyn
işleme
1444cdf7b6

+ 47 - 57
gui/wxpython/gui_modules/dbm.py

@@ -51,10 +51,10 @@ import gcmd
 import utils
 import utils
 import gdialogs
 import gdialogs
 import dbm_base
 import dbm_base
-from debug import Debug
+from debug       import Debug
 from dbm_dialogs import ModifyTableRecord
 from dbm_dialogs import ModifyTableRecord
 from preferences import globalSettings as UserSettings
 from preferences import globalSettings as UserSettings
-
+from menuform    import GNotebook
 class Log:
 class Log:
     """
     """
     The log output is redirected to the status bar of the containing frame.
     The log output is redirected to the status bar of the containing frame.
@@ -526,13 +526,20 @@ class VirtualAttributeList(wx.ListCtrl,
         return True
         return True
     
     
 class AttributeManager(wx.Frame):
 class AttributeManager(wx.Frame):
-    """
-    GRASS Attribute manager main window
-    """
-    def __init__(self, parent, id=wx.ID_ANY,
-                 size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE,
-                 title=None, vectorName=None, item=None, log=None):
-
+    def __init__(self, parent, id = wx.ID_ANY,
+                 title = None, vectorName = None, item = None, log = None,
+                 selection = None, **kwargs):
+        """!GRASS Attribute Table Manager window
+
+        @param parent parent window
+        @parem id window id
+        @param title window title or None for default title
+        @param vetorName name of vector map
+        @param item item from Layer Tree
+        @param log log window
+        @param selection name of page to be selected
+        @param kwagrs other wx.Frame's arguments
+        """
         self.vectorName = vectorName
         self.vectorName = vectorName
         self.parent     = parent # GMFrame
         self.parent     = parent # GMFrame
         self.treeItem   = item   # item in layer tree
         self.treeItem   = item   # item in layer tree
@@ -549,9 +556,9 @@ class AttributeManager(wx.Frame):
         else:
         else:
             self.editable = False
             self.editable = False
         
         
-        self.cmdLog     = log    # self.parent.goutput
+        self.cmdLog = log    # self.parent.goutput
         
         
-        wx.Frame.__init__(self, parent, id, style=style)
+        wx.Frame.__init__(self, parent, id, *kwargs)
 
 
         # title
         # title
         if not title:
         if not title:
@@ -604,22 +611,7 @@ class AttributeManager(wx.Frame):
         ### {layer: list, widgets...}
         ### {layer: list, widgets...}
         self.layerPage = {}
         self.layerPage = {}
 
 
-        # auinotebook (browse, manage, settings)
-        #self.notebook = wx.aui.AuiNotebook(parent=self, id=wx.ID_ANY,
-        #                                   style=wx.aui.AUI_NB_BOTTOM)
-        # really needed (ML)
-        # self.notebook.SetFont(wx.Font(10, wx.FONTFAMILY_MODERN, wx.NORMAL, wx.NORMAL, 0, ''))
-
-        if globalvar.hasAgw:
-            self.notebook = FN.FlatNotebook(parent = self.panel, id = wx.ID_ANY,
-                                            agwStyle = FN.FNB_BOTTOM |
-                                            FN.FNB_NO_NAV_BUTTONS |
-                                            FN.FNB_FANCY_TABS | FN.FNB_NO_X_BUTTON)
-        else:
-            self.notebook = FN.FlatNotebook(parent = self.panel, id = wx.ID_ANY,
-                                            style = FN.FNB_BOTTOM |
-                                            FN.FNB_NO_NAV_BUTTONS |
-                                            FN.FNB_FANCY_TABS | FN.FNB_NO_X_BUTTON)
+        self.notebook = GNotebook(self.panel, style = globalvar.FNPageDStyle)
         
         
         if globalvar.hasAgw:
         if globalvar.hasAgw:
             dbmStyle = { 'agwStyle' : globalvar.FNPageStyle }
             dbmStyle = { 'agwStyle' : globalvar.FNPageStyle }
@@ -628,22 +620,22 @@ class AttributeManager(wx.Frame):
         
         
         self.browsePage = FN.FlatNotebook(self.panel, id = wx.ID_ANY,
         self.browsePage = FN.FlatNotebook(self.panel, id = wx.ID_ANY,
                                           **dbmStyle)
                                           **dbmStyle)
-        # self.notebook.AddPage(self.browsePage, caption=_("Browse data"))
-        self.notebook.AddPage(self.browsePage, text=_("Browse data")) # FN
+        self.notebook.AddPage(page = self.browsePage, text = _("Browse data"),
+                              name = 'browse')
         self.browsePage.SetTabAreaColour(globalvar.FNPageColor)
         self.browsePage.SetTabAreaColour(globalvar.FNPageColor)
 
 
         self.manageTablePage = FN.FlatNotebook(self.panel, id = wx.ID_ANY,
         self.manageTablePage = FN.FlatNotebook(self.panel, id = wx.ID_ANY,
                                                **dbmStyle)
                                                **dbmStyle)
-        #self.notebook.AddPage(self.manageTablePage, caption=_("Manage tables"))
-        self.notebook.AddPage(self.manageTablePage, text=_("Manage tables")) # FN
+        self.notebook.AddPage(page = self.manageTablePage, text = _("Manage tables"),
+                              name = 'table')
         if not self.editable:
         if not self.editable:
             self.notebook.GetPage(self.notebook.GetPageCount()-1).Enable(False)
             self.notebook.GetPage(self.notebook.GetPageCount()-1).Enable(False)
         self.manageTablePage.SetTabAreaColour(globalvar.FNPageColor)
         self.manageTablePage.SetTabAreaColour(globalvar.FNPageColor)
 
 
         self.manageLayerPage = FN.FlatNotebook(self.panel, id = wx.ID_ANY,
         self.manageLayerPage = FN.FlatNotebook(self.panel, id = wx.ID_ANY,
                                                **dbmStyle)
                                                **dbmStyle)
-        #self.notebook.AddPage(self.manageLayerPage, caption=_("Manage layers"))
-        self.notebook.AddPage(self.manageLayerPage, text=_("Manage layers")) # FN
+        self.notebook.AddPage(page = self.manageLayerPage, text = _("Manage layers"),
+                              name = 'layers')
         self.manageLayerPage.SetTabAreaColour(globalvar.FNPageColor)
         self.manageLayerPage.SetTabAreaColour(globalvar.FNPageColor)
         if not self.editable:
         if not self.editable:
             self.notebook.GetPage(self.notebook.GetPageCount()-1).Enable(False)
             self.notebook.GetPage(self.notebook.GetPageCount()-1).Enable(False)
@@ -652,11 +644,10 @@ class AttributeManager(wx.Frame):
         self.__createManageTablePage()
         self.__createManageTablePage()
         self.__createManageLayerPage()
         self.__createManageLayerPage()
 
 
-        self.notebook.SetSelection(0) # select browse tab
+        if selection:
+            wx.CallAfter(self.notebook.SetSelectionByName, selection) # select browse tab
 
 
-        #
         # buttons
         # buttons
-        #
         self.btnQuit   = wx.Button(parent=self.panel, id=wx.ID_EXIT)
         self.btnQuit   = wx.Button(parent=self.panel, id=wx.ID_EXIT)
         self.btnQuit.SetToolTipString(_("Close Attribute Table Manager"))
         self.btnQuit.SetToolTipString(_("Close Attribute Table Manager"))
         self.btnReload = wx.Button(parent=self.panel, id=wx.ID_REFRESH)
         self.btnReload = wx.Button(parent=self.panel, id=wx.ID_REFRESH)
@@ -2049,8 +2040,7 @@ class AttributeManager(wx.Frame):
         event.Skip()
         event.Skip()
 
 
     def OnExtractSelected(self, event):
     def OnExtractSelected(self, event):
-        """!
-        Extract vector objects selected in attribute browse window
+        """!Extract vector objects selected in attribute browse window
         to new vector map
         to new vector map
         """
         """
         list = self.FindWindowById(self.layerPage[self.layer]['data'])
         list = self.FindWindowById(self.layerPage[self.layer]['data'])
@@ -2063,24 +2053,26 @@ class AttributeManager(wx.Frame):
             return
             return
         else:
         else:
             # dialog to get file name
             # dialog to get file name
-            name, add = gdialogs.CreateNewVector(parent = self, title = _('Extract selected features'),
-                                                 log = self.cmdLog,
-                                                 cmd = (('v.extract',
-                                                         { 'input' : self.vectorName,
-                                                           'list' : utils.ListOfCatsToRange(cats) },
-                                                         'output')),
-                                                 disableTable = True)
-            if name and add:
+            dlg = gdialogs.CreateNewVector(parent = self, title = _('Extract selected features'),
+                                           log = self.cmdLog,
+                                           cmd = (('v.extract',
+                                                   { 'input' : self.vectorName,
+                                                     'list' : utils.ListOfCatsToRange(cats) },
+                                                   'output')),
+                                           disableTable = True)
+            if not dlg:
+                return
+            
+            if dlg.GetName() and dlg.IsChecked('add'):
+                name = dlg.GetName() + '@' + grass.gisenv()['MAPSET']
                 # add layer to map layer tree
                 # add layer to map layer tree
-                self.parent.curr_page.maptree.AddLayer(ltype='vector',
-                                                       lname=name,
-                                                       lchecked=True,
-                                                       lopacity=1.0,
-                                                       lcmd=['d.vect', 'map=%s' % name])
+                self.parent.curr_page.maptree.AddLayer(ltype = 'vector',
+                                                       lname = name,
+                                                       lcmd = ['d.vect', 'map=%s' % name])
+            dlg.Destroy()
             
             
     def OnDeleteSelected(self, event):
     def OnDeleteSelected(self, event):
-        """
-        Delete vector objects selected in attribute browse window
+        """!Delete vector objects selected in attribute browse window
         (attribures and geometry)
         (attribures and geometry)
         """
         """
         list = self.FindWindowById(self.layerPage[self.layer]['data'])
         list = self.FindWindowById(self.layerPage[self.layer]['data'])
@@ -2128,9 +2120,7 @@ class AttributeManager(wx.Frame):
     
     
     def UpdateDialog(self, layer):
     def UpdateDialog(self, layer):
         """!Updates dialog layout for given layer"""
         """!Updates dialog layout for given layer"""
-        #
         # delete page
         # delete page
-        #
         if layer in self.mapDBInfo.layers.keys():
         if layer in self.mapDBInfo.layers.keys():
             # delete page
             # delete page
             # draging pages disallowed
             # draging pages disallowed
@@ -2140,7 +2130,7 @@ class AttributeManager(wx.Frame):
             self.browsePage.DeletePage(self.mapDBInfo.layers.keys().index(layer))
             self.browsePage.DeletePage(self.mapDBInfo.layers.keys().index(layer))
             self.manageTablePage.DeletePage(self.mapDBInfo.layers.keys().index(layer))
             self.manageTablePage.DeletePage(self.mapDBInfo.layers.keys().index(layer))
             # set current page selection
             # set current page selection
-            self.notebook.SetSelection(2)
+            self.notebook.SetSelectionByName('layers')
             
             
         # fetch fresh db info
         # fetch fresh db info
         self.mapDBInfo = dbm_base.VectorDBInfo(self.vectorName)    
         self.mapDBInfo = dbm_base.VectorDBInfo(self.vectorName)    
@@ -2154,7 +2144,7 @@ class AttributeManager(wx.Frame):
             # 'manage tables' page
             # 'manage tables' page
             self.__createManageTablePage(layer)
             self.__createManageTablePage(layer)
             # set current page selection
             # set current page selection
-            self.notebook.SetSelection(2)
+            self.notebook.SetSelectionByName('layers')
             
             
         #
         #
         # 'manage layers' page
         # 'manage layers' page

+ 78 - 46
gui/wxpython/gui_modules/gdialogs.py

@@ -216,14 +216,25 @@ class MapsetDialog(ElementDialog):
         return self.GetElement()
         return self.GetElement()
     
     
 class NewVectorDialog(ElementDialog):
 class NewVectorDialog(ElementDialog):
-    """!Dialog for creating new vector map"""
-    def __init__(self, parent, id, title, disableAdd=False, disableTable=False,
-                 style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER):
+    def __init__(self, parent, id = wx.ID_ANY, title = _('Create new vector map'),
+                 disableAdd = False, disableTable = False,
+                 style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, *kwargs):
+        """!Dialog for creating new vector map
+
+        @param parent parent window
+        @param id window id
+        @param title window title
+        @param disableAdd disable 'add layer' checkbox
+        @param disableTable disable 'create table' checkbox
+        @param style window style
+        @param kwargs other argumentes for ElementDialog
         
         
+        @return dialog instance       
+        """
         ElementDialog.__init__(self, parent, title, label = _("Name for new vector map:"))
         ElementDialog.__init__(self, parent, title, label = _("Name for new vector map:"))
         
         
-        self.element = gselect.Select(parent=self.panel, id=wx.ID_ANY, size=globalvar.DIALOG_GSELECT_SIZE,
-                                      type='vector', mapsets=[grass.gisenv()['MAPSET'],])
+        self.element = gselect.Select(parent = self.panel, id = wx.ID_ANY, size = globalvar.DIALOG_GSELECT_SIZE,
+                                      type = 'vector', mapsets = [grass.gisenv()['MAPSET'],])
         
         
         self.table = wx.CheckBox(parent = self.panel, id = wx.ID_ANY,
         self.table = wx.CheckBox(parent = self.panel, id = wx.ID_ANY,
                                  label = _("Create attribute table"))
                                  label = _("Create attribute table"))
@@ -241,55 +252,76 @@ class NewVectorDialog(ElementDialog):
         
         
         self.PostInit()
         self.PostInit()
         
         
-        self.__Layout()
+        self._layout()
         self.SetMinSize(self.GetSize())
         self.SetMinSize(self.GetSize())
         
         
     def OnMapName(self, event):
     def OnMapName(self, event):
         """!Name for vector map layer given"""
         """!Name for vector map layer given"""
         self.OnElement(event)
         self.OnElement(event)
         
         
-    def __Layout(self):
+    def _layout(self):
         """!Do layout"""
         """!Do layout"""
-        self.dataSizer.Add(self.element, proportion=0,
-                      flag=wx.EXPAND | wx.ALL, border=1)
+        self.dataSizer.Add(self.element, proportion = 0,
+                      flag = wx.EXPAND | wx.ALL, border = 1)
         
         
-        self.dataSizer.Add(self.table, proportion=0,
-                      flag=wx.EXPAND | wx.ALL, border=1)
+        self.dataSizer.Add(self.table, proportion = 0,
+                      flag = wx.EXPAND | wx.ALL, border = 1)
         
         
         self.dataSizer.AddSpacer(5)
         self.dataSizer.AddSpacer(5)
         
         
-        self.dataSizer.Add(item=self.addbox, proportion=0,
-                      flag=wx.EXPAND | wx.ALL, border=1)
+        self.dataSizer.Add(item = self.addbox, proportion = 0,
+                      flag = wx.EXPAND | wx.ALL, border = 1)
         
         
         self.panel.SetSizer(self.sizer)
         self.panel.SetSizer(self.sizer)
         self.sizer.Fit(self)
         self.sizer.Fit(self)
 
 
     def GetName(self):
     def GetName(self):
-        """!Return (mapName, overwrite)"""
+        """!Get name of vector map to be created"""
         return self.GetElement().split('@', 1)[0]
         return self.GetElement().split('@', 1)[0]
-            
-def CreateNewVector(parent, cmd, title=_('Create new vector map'),
-                    exceptMap=None, log=None, disableAdd=False, disableTable=False):
-    """!Create new vector map layer
 
 
-    @cmd cmd (prog, **kwargs)
+    def IsChecked(self, key):
+        """!Get dialog properties
+
+        @param key window key ('add', 'table')
+
+        @return True/False
+        @return None on error
+        """
+        if key == 'add':
+            return self.addbox.IsChecked()
+        elif key == 'table':
+            return self.table.IsChecked()
+        
+        return None
     
     
-    @return tuple (name of create vector map, add to layer tree)
-    @return None of failure
+def CreateNewVector(parent, cmd, title = _('Create new vector map'),
+                    exceptMap = None, log = None, disableAdd = False, disableTable = False):
+    """!Create new vector map layer
+    
+    @param cmd (prog, **kwargs)
+    @param title window title
+    @param exceptMap list of maps to be excepted
+    @param log
+    @param disableAdd disable 'add layer' checkbox
+    @param disableTable disable 'create table' checkbox
+
+    @return dialog instance
+    @return None on error
     """
     """
-    dlg = NewVectorDialog(parent, wx.ID_ANY, title,
-                          disableAdd, disableTable)
+    dlg = NewVectorDialog(parent, title = title,
+                          disableAdd = disableAdd, disableTable = disableTable)
+    
     if dlg.ShowModal() == wx.ID_OK:
     if dlg.ShowModal() == wx.ID_OK:
         outmap = dlg.GetName()
         outmap = dlg.GetName()
         if outmap == exceptMap:
         if outmap == exceptMap:
-            wx.MessageBox(parent=parent,
-                          message=_("Unable to create vector map <%s>.") % outmap,
-                          caption=_("Error"),
-                          style=wx.ID_OK | wx.ICON_ERROR | wx.CENTRE)
-            return (None, None)
+            gcmd.GError(parent = parent,
+                        message = _("Unable to create vector map <%s>.") % outmap)
+            dlg.Destroy()
+            return None
         
         
         if outmap == '': # should not happen
         if outmap == '': # should not happen
-            return (None, None)
+            dlg.Destroy()
+            return None
         
         
         cmd[1][cmd[2]] = outmap
         cmd[1][cmd[2]] = outmap
         
         
@@ -299,20 +331,21 @@ def CreateNewVector(parent, cmd, title=_('Create new vector map'),
             listOfVectors = []
             listOfVectors = []
         
         
         overwrite = False
         overwrite = False
-        if not UserSettings.Get(group='cmd', key='overwrite', subkey='enabled') and \
+        if not UserSettings.Get(group = 'cmd', key = 'overwrite', subkey = 'enabled') and \
                 outmap in listOfVectors:
                 outmap in listOfVectors:
-            dlgOw = wx.MessageDialog(parent, message=_("Vector map <%s> already exists "
-                                                       "in the current mapset. "
-                                                       "Do you want to overwrite it?") % outmap,
-                                     caption=_("Overwrite?"),
-                                     style=wx.YES_NO | wx.YES_DEFAULT | wx.ICON_QUESTION)
+            dlgOw = wx.MessageDialog(parent, message = _("Vector map <%s> already exists "
+                                                         "in the current mapset. "
+                                                         "Do you want to overwrite it?") % outmap,
+                                     caption = _("Overwrite?"),
+                                     style = wx.YES_NO | wx.YES_DEFAULT | wx.ICON_QUESTION)
             if dlgOw.ShowModal() == wx.ID_YES:
             if dlgOw.ShowModal() == wx.ID_YES:
                 overwrite = True
                 overwrite = True
             else:
             else:
                 dlgOw.Destroy()
                 dlgOw.Destroy()
-                return (None, None)
-
-        if UserSettings.Get(group='cmd', key='overwrite', subkey='enabled') is True:
+                dlg.Destroy()
+                return None
+        
+        if UserSettings.Get(group = 'cmd', key = 'overwrite', subkey = 'enabled'):
             overwrite = True
             overwrite = True
         
         
         try:
         try:
@@ -322,13 +355,12 @@ def CreateNewVector(parent, cmd, title=_('Create new vector map'),
         except gcmd.GException, e:
         except gcmd.GException, e:
             gcmd.GError(parent = self,
             gcmd.GError(parent = self,
                         message = e.value)
                         message = e.value)
-            return (None, None)
+            dlg.Destroy()
+            return None
         
         
-        #
         # create attribute table
         # create attribute table
-        #
         if dlg.table.IsEnabled() and dlg.table.IsChecked():
         if dlg.table.IsEnabled() and dlg.table.IsChecked():
-            key = UserSettings.Get(group='atm', key='keycolumn', subkey='value')
+            key = UserSettings.Get(group = 'atm', key = 'keycolumn', subkey = 'value')
             sql = 'CREATE TABLE %s (%s INTEGER)' % (outmap, key)
             sql = 'CREATE TABLE %s (%s INTEGER)' % (outmap, key)
             
             
             gcmd.RunCommand('db.connect',
             gcmd.RunCommand('db.connect',
@@ -347,17 +379,17 @@ def CreateNewVector(parent, cmd, title=_('Create new vector map'),
                             table = outmap,
                             table = outmap,
                             key = key,
                             key = key,
                             layer = '1')
                             layer = '1')
-            
+        
         # return fully qualified map name
         # return fully qualified map name
         if '@' not in outmap:
         if '@' not in outmap:
             outmap += '@' + grass.gisenv()['MAPSET']
             outmap += '@' + grass.gisenv()['MAPSET']
-
+        
         if log:
         if log:
             log.WriteLog(_("New vector map <%s> created") % outmap)
             log.WriteLog(_("New vector map <%s> created") % outmap)
 
 
-        return (outmap, dlg.addbox.IsChecked())
+        return dlg
     
     
-    return (None, dlg.addbox.IsChecked())
+    return dlg
 
 
 class SavedRegion(wx.Dialog):
 class SavedRegion(wx.Dialog):
     def __init__(self, parent, id = wx.ID_ANY, title="", loadsave='load',
     def __init__(self, parent, id = wx.ID_ANY, title="", loadsave='load',

+ 23 - 17
gui/wxpython/gui_modules/toolbars.py

@@ -966,34 +966,41 @@ class VDigitToolbar(AbstractToolbar):
                 openVectorMap = self.mapLayer.GetName(fullyQualified = False)['name']
                 openVectorMap = self.mapLayer.GetName(fullyQualified = False)['name']
             else:
             else:
                 openVectorMap = None
                 openVectorMap = None
-            mapName = gdialogs.CreateNewVector(self.parent,
-                                               exceptMap = openVectorMap, log = self.log,
-                                               cmd = (('v.edit',
-                                                       { 'tool' : 'create' },
-                                                       'map')),
-                                               disableAdd = True)[0]
-            if mapName:
+            dlg = gdialogs.CreateNewVector(self.parent,
+                                           exceptMap = openVectorMap, log = self.log,
+                                           cmd = (('v.edit',
+                                                   { 'tool' : 'create' },
+                                                   'map')),
+                                           disableAdd = True)
+            
+            if dlg and dlg.GetName():
                 # add layer to map layer tree
                 # add layer to map layer tree
                 if self.layerTree:
                 if self.layerTree:
+                    mapName = dlg.GetName() + '@' + grass.gisenv()['MAPSET']
                     self.layerTree.AddLayer(ltype = 'vector',
                     self.layerTree.AddLayer(ltype = 'vector',
                                             lname = mapName,
                                             lname = mapName,
-                                            lchecked = True,
-                                            lopacity = 1.0,
                                             lcmd = ['d.vect', 'map=%s' % mapName])
                                             lcmd = ['d.vect', 'map=%s' % mapName])
                     
                     
                     vectLayers = self.UpdateListOfLayers(updateTool = True)
                     vectLayers = self.UpdateListOfLayers(updateTool = True)
                     selection = vectLayers.index(mapName)
                     selection = vectLayers.index(mapName)
-                else:
-                    pass # TODO (no Layer Manager)
+                
+                # create table ?
+                if dlg.IsChecked('table'):
+                    lmgr = self.parent.GetLayerManager()
+                    if lmgr:
+                        lmgr.OnShowAttributeTable(None, selection = 'table')
+                dlg.Destroy()
             else:
             else:
                 self.combo.SetValue(_('Select vector map'))
                 self.combo.SetValue(_('Select vector map'))
-                return 
+                if dlg:
+                    dlg.Destroy()
+                return
         else:
         else:
             selection = event.GetSelection() - 1 # first option is 'New vector map'
             selection = event.GetSelection() - 1 # first option is 'New vector map'
         
         
         # skip currently selected map
         # skip currently selected map
         if self.layers[selection] == self.mapLayer:
         if self.layers[selection] == self.mapLayer:
-            return False
+            return
         
         
         if self.mapLayer:
         if self.mapLayer:
             # deactive map layer for editing
             # deactive map layer for editing
@@ -1003,9 +1010,7 @@ class VDigitToolbar(AbstractToolbar):
         self.StartEditing(self.layers[selection])
         self.StartEditing(self.layers[selection])
         
         
         event.Skip()
         event.Skip()
-
-        return True
-    
+        
     def StartEditing (self, mapLayer):
     def StartEditing (self, mapLayer):
         """!Start editing selected vector map layer.
         """!Start editing selected vector map layer.
 
 
@@ -1127,7 +1132,7 @@ class VDigitToolbar(AbstractToolbar):
         Update list of available vector map layers.
         Update list of available vector map layers.
         This list consists only editable layers (in the current mapset)
         This list consists only editable layers (in the current mapset)
 
 
-        Optionally also update toolbar
+        @param updateTool True to update also toolbar
         """
         """
         Debug.msg (4, "VDigitToolbar.UpdateListOfLayers(): updateTool=%d" % \
         Debug.msg (4, "VDigitToolbar.UpdateListOfLayers(): updateTool=%d" % \
                    updateTool)
                    updateTool)
@@ -1141,6 +1146,7 @@ class VDigitToolbar(AbstractToolbar):
         layerNameList = []
         layerNameList = []
         self.layers = self.mapcontent.GetListOfLayers(l_type = "vector",
         self.layers = self.mapcontent.GetListOfLayers(l_type = "vector",
                                                       l_mapset = grass.gisenv()['MAPSET'])
                                                       l_mapset = grass.gisenv()['MAPSET'])
+        
         for layer in self.layers:
         for layer in self.layers:
             if not layer.name in layerNameList: # do not duplicate layer
             if not layer.name in layerNameList: # do not duplicate layer
                 layerNameList.append (layer.GetName())
                 layerNameList.append (layer.GetName())

+ 3 - 2
gui/wxpython/wxgui.py

@@ -1189,7 +1189,7 @@ class GMFrame(wx.Frame):
                 
                 
         dlg.Destroy()
         dlg.Destroy()
         
         
-    def OnShowAttributeTable(self, event):
+    def OnShowAttributeTable(self, event, selection = None):
         """!Show attribute table of the given vector map layer
         """!Show attribute table of the given vector map layer
         """
         """
         if not self.curr_page:
         if not self.curr_page:
@@ -1226,7 +1226,8 @@ class GMFrame(wx.Frame):
         
         
         dbmanager = dbm.AttributeManager(parent = self, id = wx.ID_ANY,
         dbmanager = dbm.AttributeManager(parent = self, id = wx.ID_ANY,
                                          size = wx.Size(500, 300),
                                          size = wx.Size(500, 300),
-                                         item = layer, log = self.goutput)
+                                         item = layer, log = self.goutput,
+                                         selection = selection)
         
         
         busy.Destroy()
         busy.Destroy()