[GRASS-SVN] r60817 - in grass/trunk: . gui/wxpython gui/wxpython/animation gui/wxpython/core gui/wxpython/dbmgr gui/wxpython/docs gui/wxpython/docs/wxgui_sphinx gui/wxpython/docs/wxgui_sphinx/_static gui/wxpython/docs/wxgui_sphinx/_templates gui/wxpython/gcp gui/wxpython/gmodeler gui/wxpython/gui_core gui/wxpython/iclass gui/wxpython/icons gui/wxpython/iscatt gui/wxpython/lmgr gui/wxpython/location_wizard gui/wxpython/mapdisp gui/wxpython/mapswipe gui/wxpython/mapwin gui/wxpython/modules gui/wxpython/nviz gui/wxpython/psmap gui/wxpython/rlisetup gui/wxpython/timeline gui/wxpython/tools gui/wxpython/vdigit gui/wxpython/vnet gui/wxpython/web_services gui/wxpython/wxplot include/Make

svn_grass at osgeo.org svn_grass at osgeo.org
Fri Jun 13 02:32:40 PDT 2014


Author: lucadelu
Date: 2014-06-13 02:32:40 -0700 (Fri, 13 Jun 2014)
New Revision: 60817

Added:
   grass/trunk/gui/wxpython/docs/wxgui_sphinx/
   grass/trunk/gui/wxpython/docs/wxgui_sphinx/Makefile
   grass/trunk/gui/wxpython/docs/wxgui_sphinx/_build/
   grass/trunk/gui/wxpython/docs/wxgui_sphinx/_static/
   grass/trunk/gui/wxpython/docs/wxgui_sphinx/_static/pygrass.css
   grass/trunk/gui/wxpython/docs/wxgui_sphinx/_templates/
   grass/trunk/gui/wxpython/docs/wxgui_sphinx/_templates/layout.html.template
   grass/trunk/gui/wxpython/docs/wxgui_sphinx/conf.py
   grass/trunk/gui/wxpython/docs/wxgui_sphinx/index.rst
   grass/trunk/gui/wxpython/docs/wxgui_sphinx/make.bat
   grass/trunk/gui/wxpython/docs/wxgui_sphinx/wxgui_libraries.rst
   grass/trunk/gui/wxpython/docs/wxgui_sphinx/wxgui_tools.rst
   grass/trunk/include/Make/Sphinx.make
Modified:
   grass/trunk/Makefile
   grass/trunk/gui/wxpython/animation/anim.py
   grass/trunk/gui/wxpython/animation/controller.py
   grass/trunk/gui/wxpython/animation/data.py
   grass/trunk/gui/wxpython/animation/dialogs.py
   grass/trunk/gui/wxpython/animation/frame.py
   grass/trunk/gui/wxpython/animation/mapwindow.py
   grass/trunk/gui/wxpython/animation/nviztask.py
   grass/trunk/gui/wxpython/animation/provider.py
   grass/trunk/gui/wxpython/animation/temporal_manager.py
   grass/trunk/gui/wxpython/animation/toolbars.py
   grass/trunk/gui/wxpython/animation/utils.py
   grass/trunk/gui/wxpython/core/debug.py
   grass/trunk/gui/wxpython/core/gcmd.py
   grass/trunk/gui/wxpython/core/gconsole.py
   grass/trunk/gui/wxpython/core/giface.py
   grass/trunk/gui/wxpython/core/globalvar.py
   grass/trunk/gui/wxpython/core/layerlist.py
   grass/trunk/gui/wxpython/core/menutree.py
   grass/trunk/gui/wxpython/core/render.py
   grass/trunk/gui/wxpython/core/settings.py
   grass/trunk/gui/wxpython/core/toolboxes.py
   grass/trunk/gui/wxpython/core/treemodel.py
   grass/trunk/gui/wxpython/core/units.py
   grass/trunk/gui/wxpython/core/utils.py
   grass/trunk/gui/wxpython/core/workspace.py
   grass/trunk/gui/wxpython/core/ws.py
   grass/trunk/gui/wxpython/dbmgr/base.py
   grass/trunk/gui/wxpython/dbmgr/dialogs.py
   grass/trunk/gui/wxpython/dbmgr/manager.py
   grass/trunk/gui/wxpython/dbmgr/sqlbuilder.py
   grass/trunk/gui/wxpython/dbmgr/vinfo.py
   grass/trunk/gui/wxpython/gcp/g.gui.gcp.py
   grass/trunk/gui/wxpython/gcp/manager.py
   grass/trunk/gui/wxpython/gcp/mapdisplay.py
   grass/trunk/gui/wxpython/gcp/statusbar.py
   grass/trunk/gui/wxpython/gcp/toolbars.py
   grass/trunk/gui/wxpython/gis_set.py
   grass/trunk/gui/wxpython/gis_set_error.py
   grass/trunk/gui/wxpython/gmodeler/dialogs.py
   grass/trunk/gui/wxpython/gmodeler/frame.py
   grass/trunk/gui/wxpython/gmodeler/giface.py
   grass/trunk/gui/wxpython/gmodeler/menudata.py
   grass/trunk/gui/wxpython/gmodeler/model.py
   grass/trunk/gui/wxpython/gmodeler/preferences.py
   grass/trunk/gui/wxpython/gmodeler/toolbars.py
   grass/trunk/gui/wxpython/gui_core/dialogs.py
   grass/trunk/gui/wxpython/gui_core/forms.py
   grass/trunk/gui/wxpython/gui_core/ghelp.py
   grass/trunk/gui/wxpython/gui_core/goutput.py
   grass/trunk/gui/wxpython/gui_core/gselect.py
   grass/trunk/gui/wxpython/gui_core/mapdisp.py
   grass/trunk/gui/wxpython/gui_core/menu.py
   grass/trunk/gui/wxpython/gui_core/preferences.py
   grass/trunk/gui/wxpython/gui_core/prompt.py
   grass/trunk/gui/wxpython/gui_core/pystc.py
   grass/trunk/gui/wxpython/gui_core/query.py
   grass/trunk/gui/wxpython/gui_core/simplelmgr.py
   grass/trunk/gui/wxpython/gui_core/toolbars.py
   grass/trunk/gui/wxpython/gui_core/treeview.py
   grass/trunk/gui/wxpython/gui_core/widgets.py
   grass/trunk/gui/wxpython/iclass/dialogs.py
   grass/trunk/gui/wxpython/iclass/digit.py
   grass/trunk/gui/wxpython/iclass/frame.py
   grass/trunk/gui/wxpython/iclass/plots.py
   grass/trunk/gui/wxpython/iclass/statistics.py
   grass/trunk/gui/wxpython/iclass/toolbars.py
   grass/trunk/gui/wxpython/icons/icon.py
   grass/trunk/gui/wxpython/iscatt/controllers.py
   grass/trunk/gui/wxpython/iscatt/core_c.py
   grass/trunk/gui/wxpython/iscatt/dialogs.py
   grass/trunk/gui/wxpython/iscatt/frame.py
   grass/trunk/gui/wxpython/iscatt/iscatt_core.py
   grass/trunk/gui/wxpython/iscatt/plots.py
   grass/trunk/gui/wxpython/iscatt/toolbars.py
   grass/trunk/gui/wxpython/lmgr/frame.py
   grass/trunk/gui/wxpython/lmgr/giface.py
   grass/trunk/gui/wxpython/lmgr/layertree.py
   grass/trunk/gui/wxpython/lmgr/menudata.py
   grass/trunk/gui/wxpython/lmgr/pyshell.py
   grass/trunk/gui/wxpython/lmgr/toolbars.py
   grass/trunk/gui/wxpython/location_wizard/base.py
   grass/trunk/gui/wxpython/location_wizard/dialogs.py
   grass/trunk/gui/wxpython/location_wizard/wizard.py
   grass/trunk/gui/wxpython/mapdisp/frame.py
   grass/trunk/gui/wxpython/mapdisp/gprint.py
   grass/trunk/gui/wxpython/mapdisp/main.py
   grass/trunk/gui/wxpython/mapdisp/statusbar.py
   grass/trunk/gui/wxpython/mapdisp/test_mapdisp.py
   grass/trunk/gui/wxpython/mapdisp/toolbars.py
   grass/trunk/gui/wxpython/mapswipe/dialogs.py
   grass/trunk/gui/wxpython/mapswipe/frame.py
   grass/trunk/gui/wxpython/mapswipe/mapwindow.py
   grass/trunk/gui/wxpython/mapswipe/toolbars.py
   grass/trunk/gui/wxpython/mapwin/analysis.py
   grass/trunk/gui/wxpython/mapwin/base.py
   grass/trunk/gui/wxpython/mapwin/buffered.py
   grass/trunk/gui/wxpython/mapwin/decorations.py
   grass/trunk/gui/wxpython/mapwin/graphics.py
   grass/trunk/gui/wxpython/modules/colorrules.py
   grass/trunk/gui/wxpython/modules/extensions.py
   grass/trunk/gui/wxpython/modules/histogram.py
   grass/trunk/gui/wxpython/modules/mcalc_builder.py
   grass/trunk/gui/wxpython/modules/vclean.py
   grass/trunk/gui/wxpython/modules/vkrige.py
   grass/trunk/gui/wxpython/nviz/animation.py
   grass/trunk/gui/wxpython/nviz/main.py
   grass/trunk/gui/wxpython/nviz/mapwindow.py
   grass/trunk/gui/wxpython/nviz/preferences.py
   grass/trunk/gui/wxpython/nviz/tools.py
   grass/trunk/gui/wxpython/nviz/workspace.py
   grass/trunk/gui/wxpython/nviz/wxnviz.py
   grass/trunk/gui/wxpython/psmap/dialogs.py
   grass/trunk/gui/wxpython/psmap/frame.py
   grass/trunk/gui/wxpython/psmap/instructions.py
   grass/trunk/gui/wxpython/psmap/menudata.py
   grass/trunk/gui/wxpython/psmap/toolbars.py
   grass/trunk/gui/wxpython/psmap/utils.py
   grass/trunk/gui/wxpython/rlisetup/frame.py
   grass/trunk/gui/wxpython/rlisetup/functions.py
   grass/trunk/gui/wxpython/rlisetup/sampling_frame.py
   grass/trunk/gui/wxpython/rlisetup/wizard.py
   grass/trunk/gui/wxpython/timeline/frame.py
   grass/trunk/gui/wxpython/tools/build_modules_xml.py
   grass/trunk/gui/wxpython/tools/update_menudata.py
   grass/trunk/gui/wxpython/vdigit/dialogs.py
   grass/trunk/gui/wxpython/vdigit/main.py
   grass/trunk/gui/wxpython/vdigit/mapwindow.py
   grass/trunk/gui/wxpython/vdigit/preferences.py
   grass/trunk/gui/wxpython/vdigit/toolbars.py
   grass/trunk/gui/wxpython/vdigit/wxdigit.py
   grass/trunk/gui/wxpython/vdigit/wxdisplay.py
   grass/trunk/gui/wxpython/vnet/dialogs.py
   grass/trunk/gui/wxpython/vnet/toolbars.py
   grass/trunk/gui/wxpython/vnet/vnet_core.py
   grass/trunk/gui/wxpython/vnet/vnet_data.py
   grass/trunk/gui/wxpython/vnet/vnet_utils.py
   grass/trunk/gui/wxpython/vnet/widgets.py
   grass/trunk/gui/wxpython/web_services/cap_interface.py
   grass/trunk/gui/wxpython/web_services/dialogs.py
   grass/trunk/gui/wxpython/web_services/widgets.py
   grass/trunk/gui/wxpython/wxgui.py
   grass/trunk/gui/wxpython/wxplot/base.py
   grass/trunk/gui/wxpython/wxplot/dialogs.py
   grass/trunk/gui/wxpython/wxplot/histogram.py
   grass/trunk/gui/wxpython/wxplot/profile.py
   grass/trunk/gui/wxpython/wxplot/scatter.py
Log:
wxgui: add support for sphinx documentation

Modified: grass/trunk/Makefile
===================================================================
--- grass/trunk/Makefile	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/Makefile	2014-06-13 09:32:40 UTC (rev 60817)
@@ -126,6 +126,7 @@
 include $(MODULE_TOPDIR)/include/Make/Install.make
 include $(MODULE_TOPDIR)/include/Make/Docs.make
 include $(MODULE_TOPDIR)/include/Make/Doxygen.make
+include $(MODULE_TOPDIR)/include/Make/Sphinx.make
 
 DOXNAME=grass
 

Modified: grass/trunk/gui/wxpython/animation/anim.py
===================================================================
--- grass/trunk/gui/wxpython/animation/anim.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/animation/anim.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package animation.anim
 
 @brief Animation class controls frame order
@@ -20,7 +20,7 @@
 
 
 class Animation(wx.EvtHandler):
-    """!Animation class specifies which frame to show at which instance."""
+    """Animation class specifies which frame to show at which instance."""
     def __init__(self):
         wx.EvtHandler.__init__(self)
 
@@ -37,33 +37,33 @@
         self.isActive = False
 
     def IsActive(self):
-        """!Returns if the animation is active or not"""
+        """Returns if the animation is active or not"""
         return self.isActive
 
     def SetActive(self, active):
         self.isActive = active
 
     def SetFrames(self, frames):
-        """!Sets animation frames.
+        """Sets animation frames.
 
-        @param frames list of strings
+        :param frames: list of strings
         """
         self.frames = frames
 
     def GetFrame(self, index):
-        """!Returns animation frame"""
+        """Returns animation frame"""
         if len(self.frames) <= 1:  # special case handling (only 1 map)
             return self.frames[0]
         return self.frames[index]
 
     def GetCount(self):
-        """!Get frame count."""
+        """Get frame count."""
         return len(self.frames)
 
     count = property(fget=GetCount)
 
     def GetReplayMode(self):
-        """!Returns replay mode (loop)."""
+        """Returns replay mode (loop)."""
         return self._replayMode
 
     def SetReplayMode(self, mode):
@@ -80,15 +80,15 @@
     orientation = property(fset=SetOrientation, fget=GetOrientation)
 
     def SetCallbackUpdateFrame(self, callback):
-        """!Sets function to be called when updating frame."""
+        """Sets function to be called when updating frame."""
         self.callbackUpdateFrame = callback
 
     def SetCallbackEndAnimation(self, callback):
-        """!Sets function to be called when animation ends."""
+        """Sets function to be called when animation ends."""
         self.callbackEndAnimation = callback
 
     def SetCallbackOrientationChanged(self, callback):
-        """!Sets function to be called when orientation changes."""
+        """Sets function to be called when orientation changes."""
         self.callbackOrientationChanged = callback
 
     def Start(self):
@@ -106,7 +106,7 @@
         self.callbackEndAnimation(self.currentIndex, self.GetFrame(self.currentIndex))
 
     def _arrivedToEnd(self):
-        """!Decides which action to do after animation end (stop, repeat)."""
+        """Decides which action to do after animation end (stop, repeat)."""
         if not self.IsActive():
             return
         if self.replayMode == ReplayMode.ONESHOT:
@@ -128,7 +128,7 @@
                 self.callbackOrientationChanged(Orientation.FORWARD)
 
     def Update(self):
-        """!Updates frame."""
+        """Updates frame."""
         if not self.IsActive():
             return
 
@@ -143,7 +143,7 @@
                 self._arrivedToEnd()
 
     def FrameChangedFromOutside(self, index):
-        """!Let the animation know that frame was changed from outside."""
+        """Let the animation know that frame was changed from outside."""
         if not self.IsActive():
             return
         self.currentIndex = index

Modified: grass/trunk/gui/wxpython/animation/controller.py
===================================================================
--- grass/trunk/gui/wxpython/animation/controller.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/animation/controller.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package animation.controller
 
 @brief Animations management
@@ -254,9 +254,9 @@
         self._setAnimations()
 
     def SetAnimations(self, layerLists):
-        """!Set animation data directly.
+        """Set animation data directly.
 
-        @param layerLists list of layerLists
+        :param layerLists: list of layerLists
         """
         try:
             animationData = []

Modified: grass/trunk/gui/wxpython/animation/data.py
===================================================================
--- grass/trunk/gui/wxpython/animation/data.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/animation/data.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-"""!
+"""
 @package animation.data
 
 @brief animation data structures
@@ -75,7 +75,7 @@
     windowIndex = property(fget=GetWindowIndex, fset=SetWindowIndex)
 
     def SetLayerList(self, layerList):
-        """!
+        """
         Throws GException if layer list's combination of stds is not valid.
         """
         mapSeriesList = []
@@ -269,7 +269,7 @@
 
 
 class AnimLayer(Layer):
-    """!Animation layer allows to add either space-time dataset
+    """Animation layer allows to add either space-time dataset
     or series of maps."""
     def __init__(self):
         Layer.__init__(self)

Modified: grass/trunk/gui/wxpython/animation/dialogs.py
===================================================================
--- grass/trunk/gui/wxpython/animation/dialogs.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/animation/dialogs.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package animation.dialogs
 
 @brief Dialogs for animation management, changing speed of animation
@@ -87,7 +87,7 @@
     temporalMode = property(fset=SetTemporalMode, fget=GetTemporalMode)
 
     def _layout(self):
-        """!Layout window"""
+        """Layout window"""
         mainSizer = wx.BoxSizer(wx.VERTICAL)
         #
         # simple mode
@@ -259,7 +259,7 @@
         return delta
 
     def _total_seconds(self, delta):
-        """!timedelta.total_seconds is new in version 2.7.
+        """timedelta.total_seconds is new in version 2.7.
         """
         return delta.seconds + delta.days * 24 * 3600
 
@@ -475,7 +475,7 @@
         return panel
 
     def _enableRegionWidgets(self):
-        """!Enables/disables region widgets
+        """Enables/disables region widgets
         according to which radiobutton is active."""
         endReg = self.endRegRadio.GetValue()
         self.endRegion.Enable(endReg)
@@ -514,7 +514,7 @@
                                                   completed=(self.GetOptData, '', ''))
 
     def OnLegendProperties(self, event):
-        """!Set options for legend"""
+        """Set options for legend"""
         if self._tmpLegendCmd:
             cmd = self._tmpLegendCmd
         elif self.animationData.legendCmd:
@@ -526,7 +526,7 @@
                                                   completed=(self.GetOptData, '', ''))
 
     def GetOptData(self, dcmd, layer, params, propwin):
-        """!Process decoration layer data"""
+        """Process decoration layer data"""
         if dcmd:
             self._tmpLegendCmd = dcmd
 
@@ -1203,7 +1203,7 @@
 
 
 class AnimSimpleLayerManager(SimpleLayerManager):
-    """!Simple layer manager for animation tool.
+    """Simple layer manager for animation tool.
     Allows to add space-time dataset or series of maps.
     """
     def __init__(self, parent, layerList,
@@ -1214,7 +1214,7 @@
         self._3dActivated = False
 
     def OnAddStds(self, event):
-        """!Opens dialog for specifying temporal dataset.
+        """Opens dialog for specifying temporal dataset.
         Dummy layer is added first."""
         layer = AnimLayer()
         layer.hidden = True
@@ -1242,7 +1242,7 @@
         self.anyChange.emit()
 
     def _layerChangeProperties(self, layer):
-        """!Opens new module dialog or recycles it."""
+        """Opens new module dialog or recycles it."""
         if not hasattr(layer, 'maps'):
             GUI(parent=self, giface=None,
                 modal=self._modal).ParseCommand(cmd=layer.cmd,
@@ -1251,14 +1251,14 @@
             self.SetStdsProperties(layer)
 
     def Activate3D(self, activate=True):
-        """!Activates/deactivates certain tool depending on 2D/3D view."""
+        """Activates/deactivates certain tool depending on 2D/3D view."""
         self._toolbar.EnableTools(['addRaster', 'addVector',
                                    'opacity', 'up', 'down'], not activate)
         self._3dActivated = activate
 
 
 class AddTemporalLayerDialog(wx.Dialog):
-    """!Dialog for adding space-time dataset/ map series."""
+    """Dialog for adding space-time dataset/ map series."""
     def __init__(self, parent, layer, volume=False,
                  title=_("Add space-time dataset layer")):
         wx.Dialog.__init__(self, parent=parent, title=title)
@@ -1452,7 +1452,7 @@
 
 
 class PreferencesDialog(PreferencesBaseDialog):
-    """!Animation preferences dialog"""
+    """Animation preferences dialog"""
     def __init__(self, parent, giface, title=_("Animation Tool settings"),
                  settings=UserSettings):
         PreferencesBaseDialog.__init__(self, parent=parent, giface=giface, title=title,
@@ -1478,7 +1478,7 @@
         self.SetSize(self.size)
 
     def _createGeneralPage(self, notebook):
-        """!Create notebook page for general settings"""
+        """Create notebook page for general settings"""
         panel = SP.ScrolledPanel(parent=notebook)
         panel.SetupScrolling(scroll_x=False, scroll_y=True)
         notebook.AddPage(page=panel, text=_("General"))
@@ -1508,7 +1508,7 @@
         return panel
 
     def _createTemporalPage(self, notebook):
-        """!Create notebook page for temporal settings"""
+        """Create notebook page for temporal settings"""
         panel = SP.ScrolledPanel(parent=notebook)
         panel.SetupScrolling(scroll_x=False, scroll_y=True)
         notebook.AddPage(page=panel, text=_("Time"))

Modified: grass/trunk/gui/wxpython/animation/frame.py
===================================================================
--- grass/trunk/gui/wxpython/animation/frame.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/animation/frame.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package animation.frame
 
 @brief Animation frame and different types of sliders
@@ -116,7 +116,7 @@
         self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
 
     def InitStatusbar(self):
-        """!Init statusbar."""
+        """Init statusbar."""
         self.CreateStatusBar(number=1, style=0)
 
     def _addPanes(self):
@@ -132,7 +132,7 @@
             self._mgr.GetPane('slider_' + name).Hide()
 
     def _addToolbar(self, name):
-        """!Add defined toolbar to the window
+        """Add defined toolbar to the window
 
         Currently known toolbars are:
          - 'mainToolbar'          - data management
@@ -172,9 +172,9 @@
                               BestSize((self.toolbars['miscToolbar'].GetBestSize())))
 
     def SetAnimations(self, layerLists):
-        """!Set animation data
+        """Set animation data
 
-        @param layerLists list of layerLists
+        :param layerLists: list of layerLists
         """
         self.controller.SetAnimations(layerLists)
 
@@ -312,7 +312,7 @@
         self.Destroy()
 
     def __del__(self):
-        """!It might not be called, therefore we try to clean it all in OnCloseWindow."""
+        """It might not be called, therefore we try to clean it all in OnCloseWindow."""
         if hasattr(self, 'controller') and hasattr(self.controller, 'timer'):
             if self.controller.timer.IsRunning():
                 self.controller.timer.Stop()

Modified: grass/trunk/gui/wxpython/animation/mapwindow.py
===================================================================
--- grass/trunk/gui/wxpython/animation/mapwindow.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/animation/mapwindow.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package animation.mapwindow
 
 @brief Animation window
@@ -115,7 +115,7 @@
         self.Bind(wx.EVT_MOUSE_EVENTS, self.OnMouseEvents)
 
     def Draw(self, dc):
-        """!Draws bitmap."""
+        """Draws bitmap."""
         Debug.msg(5, "AnimationWindow.Draw()")
 
         dc.Clear()  # make sure you clear the bitmap!
@@ -131,7 +131,7 @@
             event.Skip()
 
     def DrawBitmap(self, bitmap):
-        """!Draws bitmap.
+        """Draws bitmap.
         Does not draw the bitmap if it is the same one as last time.
         """
         if self.bitmap == bitmap:
@@ -149,11 +149,11 @@
         self._pdc.EndDrawing()
 
     def SetOverlay(self, bitmap, xperc, yperc):
-        """!Sets overlay bitmap (legend)
+        """Sets overlay bitmap (legend)
 
-        @param bitmap instance of wx.Bitmap
-        @param xperc x coordinate of bitmap top left corner in % of screen
-        @param yperc y coordinate of bitmap top left corner in % of screen
+        :param bitmap: instance of wx.Bitmap
+        :param xperc: x coordinate of bitmap top left corner in % of screen
+        :param yperc: y coordinate of bitmap top left corner in % of screen
         """
         Debug.msg(3, "AnimationWindow.SetOverlay()")
         if bitmap:
@@ -170,7 +170,7 @@
         self.UpdateDrawing()
 
     def ClearOverlay(self):
-        """!Clear overlay (legend) """
+        """Clear overlay (legend) """
         Debug.msg(3, "AnimationWindow.ClearOverlay()")
         self._overlay = None
         self._pdc.RemoveAll()
@@ -184,7 +184,7 @@
             self._pdc.DrawToDC(dc)
 
     def OnMouseEvents(self, event):
-        """!Handle mouse events."""
+        """Handle mouse events."""
         # If it grows larger, split it.
         current = event.GetPosition()
         if event.LeftDown():
@@ -209,6 +209,6 @@
             self._tmpMousePos = current
 
     def GetOverlayPos(self):
-        """!Returns x, y position in pixels"""
+        """Returns x, y position in pixels"""
         rect = self._pdc.GetIdBounds(1)
         return rect.GetX(), rect.GetY()

Modified: grass/trunk/gui/wxpython/animation/nviztask.py
===================================================================
--- grass/trunk/gui/wxpython/animation/nviztask.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/animation/nviztask.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package animation.nviztask
 
 @brief Conversion from workspace file to m.nviz.image command

Modified: grass/trunk/gui/wxpython/animation/provider.py
===================================================================
--- grass/trunk/gui/wxpython/animation/provider.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/animation/provider.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-"""!
+"""
 @package animation.provider
 
 @brief Animation files and bitmaps management
@@ -38,7 +38,7 @@
 
 
 class BitmapProvider:
-    """!Class for management of image files and bitmaps.
+    """Class for management of image files and bitmaps.
 
     There is one instance of this class in the application.
     It handles both 2D and 3D animations.
@@ -78,15 +78,15 @@
         self._composer.compositionContinues.connect(self.compositionContinues)
 
     def SetCmds(self, cmdsForComposition, opacities, regions=None):
-        """!Sets commands to be rendered with opacity levels.
+        """Sets commands to be rendered with opacity levels.
         Applies to 2D mode.
 
-        @param cmdsForComposition list of lists of command lists
+        :param cmdsForComposition: list of lists of command lists
                 [[['d.rast', 'map=elev_2001'], ['d.vect', 'map=points']], # g.pnmcomp
                  [['d.rast', 'map=elev_2002'], ['d.vect', 'map=points']],
                  ...]
-        @param opacities list of opacity values
-        @param regions list of regions
+        :param opacities: list of opacity values
+        :param regions: list of regions
         """
         Debug.msg(2, "BitmapProvider.SetCmds: {n} lists".format(n=len(cmdsForComposition)))
         self._cmdsForComposition.extend(cmdsForComposition)
@@ -96,17 +96,17 @@
         self._getUniqueCmds()
 
     def SetCmds3D(self, cmds, region):
-        """!Sets commands for 3D rendering.
+        """Sets commands for 3D rendering.
 
-        @param cmds list of commands m.nviz.image (cmd as a list)
-        @param region for 3D rendering
+        :param cmds: list of commands m.nviz.image (cmd as a list)
+        :param region: for 3D rendering
         """
         Debug.msg(2, "BitmapProvider.SetCmds3D: {c} commands".format(c=len(cmds)))
         self._cmds3D = cmds
         self._regionFor3D = region
 
     def _getUniqueCmds(self):
-        """!Returns list of unique commands.
+        """Returns list of unique commands.
         Takes into account the region assigned."""
         unique = list()
         for cmdList, region in zip(self._cmdsForComposition, self._regions):
@@ -121,7 +121,7 @@
                                            for cmdAndRegion in unique])
 
     def Unload(self):
-        """!Unloads currently loaded data.
+        """Unloads currently loaded data.
         Needs to be called before setting new data.
         """
         Debug.msg(2, "BitmapProvider.Unload")
@@ -141,11 +141,11 @@
             self._regionFor3D = None
 
     def _dryRender(self, uniqueCmds, regions, force):
-        """!Determines how many files will be rendered.
+        """Determines how many files will be rendered.
 
-        @param uniqueCmds list of commands which are to be rendered
-        @param force if forced rerendering
-        @param regions list of regions assigned to the commands
+        :param uniqueCmds: list of commands which are to be rendered
+        :param force: if forced rerendering
+        :param regions: list of regions assigned to the commands
         """
         count = 0
         for cmd, region in zip(uniqueCmds, regions):
@@ -160,12 +160,12 @@
         return count
 
     def _dryCompose(self, cmdLists, regions, force):
-        """!Determines how many lists of (commands) files
+        """Determines how many lists of (commands) files
         will be composed (with g.pnmcomp).
 
-        @param cmdLists list of commands lists which are to be composed
-        @param regions list of regions assigned to the commands
-        @param force if forced rerendering
+        :param cmdLists: list of commands lists which are to be composed
+        :param regions: list of regions assigned to the commands
+        :param force: if forced rerendering
         """
         count = 0
         for cmdList, region in zip(cmdLists, regions):
@@ -180,12 +180,12 @@
         return count
 
     def Load(self, force=False, bgcolor=(255, 255, 255), nprocs=4):
-        """!Loads data, both 2D and 3D. In case of 2D, it creates composites,
+        """Loads data, both 2D and 3D. In case of 2D, it creates composites,
         even when there is only 1 layer to compose (to be changed for speedup)
 
-        @param force if True reload all data, otherwise only missing data
-        @param bgcolor background color as a tuple of 3 values 0 to 255
-        @param nprocs number of procs to be used for rendering
+        :param force: if True reload all data, otherwise only missing data
+        :param bgcolor: background color as a tuple of 3 values 0 to 255
+        :param nprocs: number of procs to be used for rendering
         """
         Debug.msg(2, "BitmapProvider.Load: "
                      "force={f}, bgcolor={b}, nprocs={n}".format(f=force,
@@ -227,16 +227,16 @@
         self.mapsLoaded.emit()
 
     def RequestStopRendering(self):
-        """!Requests to stop rendering/composition"""
+        """Requests to stop rendering/composition"""
         Debug.msg(2, "BitmapProvider.RequestStopRendering")
         self._renderer.RequestStopRendering()
         self._composer.RequestStopComposing()
 
     def GetBitmap(self, dataId):
-        """!Returns bitmap with given key
+        """Returns bitmap with given key
         or 'no data' bitmap if no such key exists.
 
-        @param dataId name of bitmap
+        :param dataId: name of bitmap
         """
         try:
             bitmap = self._bitmapPool[dataId]
@@ -245,7 +245,7 @@
         return bitmap
 
     def WindowSizeChanged(self, width, height):
-        """!Sets size when size of related window changes."""
+        """Sets size when size of related window changes."""
         Debug.msg(5, "BitmapProvider.WindowSizeChanged: w={w}, h={h}".format(w=width, h=height))
 
         self.imageWidth, self.imageHeight = width, height
@@ -254,11 +254,11 @@
         self._composer.imageHeight = self._renderer.imageHeight = height
 
     def LoadOverlay(self, cmd):
-        """!Creates raster legend with d.legend
+        """Creates raster legend with d.legend
 
-        @param cmd d.legend command as a list
+        :param cmd: d.legend command as a list
 
-        @return bitmap with legend
+        :return: bitmap with legend
         """
         Debug.msg(5, "BitmapProvider.LoadOverlay: cmd={c}".format(c=cmd))
 
@@ -280,7 +280,7 @@
 
 
 class BitmapRenderer:
-    """!Class which renderes 2D and 3D images to files."""
+    """Class which renderes 2D and 3D images to files."""
     def __init__(self, mapFilesPool, tempDir,
                  imageWidth, imageHeight):
         self._mapFilesPool = mapFilesPool
@@ -293,14 +293,14 @@
         self._isRendering = False
 
     def Render(self, cmdList, regions, regionFor3D, bgcolor, force, nprocs):
-        """!Renders all maps and stores files.
+        """Renders all maps and stores files.
 
-        @param cmdList list of rendering commands to run
-        @param regions regions for 2D rendering assigned to commands
-        @param regionFor3D region for setting 3D view
-        @param bgcolor background color as a tuple of 3 values 0 to 255
-        @param force if True reload all data, otherwise only missing data
-        @param nprocs number of procs to be used for rendering
+        :param cmdList: list of rendering commands to run
+        :param regions: regions for 2D rendering assigned to commands
+        :param regionFor3D: region for setting 3D view
+        :param bgcolor: background color as a tuple of 3 values 0 to 255
+        :param force: if True reload all data, otherwise only missing data
+        :param nprocs: number of procs to be used for rendering
         """
         Debug.msg(3, "BitmapRenderer.Render")
         count = 0
@@ -369,13 +369,13 @@
         return not stopped
 
     def RequestStopRendering(self):
-        """!Requests to stop rendering."""
+        """Requests to stop rendering."""
         if self._isRendering:
             self._stopRendering = True
 
 
 class BitmapComposer:
-    """!Class which handles the composition of image files with g.pnmcomp."""
+    """Class which handles the composition of image files with g.pnmcomp."""
     def __init__(self, tempDir, mapFilesPool, bitmapPool,
                  imageWidth, imageHeight):
         self._mapFilesPool = mapFilesPool
@@ -389,14 +389,14 @@
         self._isComposing = False
 
     def Compose(self, cmdLists, regions, opacityList, bgcolor, force, nprocs):
-        """!Performs the composition of ppm/pgm files.
+        """Performs the composition of ppm/pgm files.
 
-        @param cmdLisst lists of rendering commands lists to compose
-        @param regions regions for 2D rendering assigned to commands
-        @param opacityList list of lists of opacity values
-        @param bgcolor background color as a tuple of 3 values 0 to 255
-        @param force if True reload all data, otherwise only missing data
-        @param nprocs number of procs to be used for rendering
+        :param cmdLists: lists of rendering commands lists to compose
+        :param regions: regions for 2D rendering assigned to commands
+        :param opacityList: list of lists of opacity values
+        :param bgcolor: background color as a tuple of 3 values 0 to 255
+        :param force: if True reload all data, otherwise only missing data
+        :param nprocs: number of procs to be used for rendering
         """
         Debug.msg(3, "BitmapComposer.Compose")
 
@@ -463,22 +463,22 @@
         self._isComposing = False
 
     def RequestStopComposing(self):
-        """!Requests to stop the composition."""
+        """Requests to stop the composition."""
         if self._isComposing:
             self._stopComposing = True
 
 
 def RenderProcess2D(imageWidth, imageHeight, tempDir, cmd, region, bgcolor, fileQueue):
-    """!Render raster or vector files as ppm image and write the
+    """Render raster or vector files as ppm image and write the
        resulting ppm filename in the provided file queue
 
-    @param imageWidth image width
-    @param imageHeight image height
-    @param tempDir directory for rendering
-    @param cmd d.rast/d.vect command as a list
-    @param region region as a dict or None
-    @param bgcolor background color as a tuple of 3 values 0 to 255
-    @param fileQueue the inter process communication queue
+    :param imageWidth: image width
+    :param imageHeight: image height
+    :param tempDir: directory for rendering
+    :param cmd: d.rast/d.vect command as a list
+    :param region: region as a dict or None
+    :param bgcolor: background color as a tuple of 3 values 0 to 255
+    :param fileQueue: the inter process communication queue
     storing the file name of the image
     """
 
@@ -506,16 +506,16 @@
 
 
 def RenderProcess3D(imageWidth, imageHeight, tempDir, cmd, region, bgcolor, fileQueue):
-    """!Renders image with m.nviz.image and writes the
+    """Renders image with m.nviz.image and writes the
        resulting ppm filename in the provided file queue
 
-    @param imageWidth image width
-    @param imageHeight image height
-    @param tempDir directory for rendering
-    @param cmd m.nviz.image command as a list
-    @param region region as a dict
-    @param bgcolor background color as a tuple of 3 values 0 to 255
-    @param fileQueue the inter process communication queue
+    :param imageWidth: image width
+    :param imageHeight: image height
+    :param tempDir: directory for rendering
+    :param cmd: m.nviz.image command as a list
+    :param region: region as a dict
+    :param bgcolor: background color as a tuple of 3 values 0 to 255
+    :param fileQueue: the inter process communication queue
     storing the file name of the image
     """
 
@@ -542,17 +542,17 @@
 
 
 def CompositeProcess(imageWidth, imageHeight, tempDir, cmdList, region, opacities, bgcolor, fileQueue):
-    """!Performs the composition of image ppm files and writes the
+    """Performs the composition of image ppm files and writes the
        resulting ppm filename in the provided file queue
 
-    @param imageWidth image width
-    @param imageHeight image height
-    @param tempDir directory for rendering
-    @param cmdList list of d.rast/d.vect commands
-    @param region region as a dict or None
-    @param opacities list of opacities
-    @param bgcolor background color as a tuple of 3 values 0 to 255
-    @param fileQueue the inter process communication queue
+    :param imageWidth: image width
+    :param imageHeight: image height
+    :param tempDir: directory for rendering
+    :param cmdList: list of d.rast/d.vect commands
+    :param region: region as a dict or None
+    :param opacites: list of opacities
+    :param bgcolor: background color as a tuple of 3 values 0 to 255
+    :param fileQueue: the inter process communication queue
     storing the file name of the image
     """
 
@@ -588,8 +588,9 @@
 
 
 class DictRefCounter:
-    """!Base class storing map files/bitmaps (emulates dictionary).
-        Counts the references to know which files/bitmaps to delete."""
+    """Base class storing map files/bitmaps (emulates dictionary).
+    Counts the references to know which files/bitmaps to delete.
+    """
     def __init__(self):
         self.dictionary = {}
         self.referenceCount = {}
@@ -616,7 +617,7 @@
         return self.dictionary.keys()
 
     def Clear(self):
-        """!Clears items which are not needed any more."""
+        """Clears items which are not needed any more."""
         Debug.msg(4, 'DictRefCounter.Clear')
         for key in self.dictionary.keys():
             if key is not None:
@@ -626,7 +627,7 @@
 
 
 class MapFilesPool(DictRefCounter):
-    """!Stores rendered images as files."""
+    """Stores rendered images as files."""
     def __init__(self):
         DictRefCounter.__init__(self)
         self.size = {}
@@ -638,7 +639,7 @@
         return self.size[key]
 
     def Clear(self):
-        """!Removes files which are not needed anymore.
+        """Removes files which are not needed anymore.
         Removes both ppm and pgm.
         """
         Debug.msg(4, 'MapFilesPool.Clear')
@@ -655,13 +656,13 @@
 
 
 class BitmapPool(DictRefCounter):
-    """!Class storing bitmaps (emulates dictionary)"""
+    """Class storing bitmaps (emulates dictionary)"""
     def __init__(self):
         DictRefCounter.__init__(self)
 
 
 class CleanUp:
-    """!Responsible for cleaning up the files."""
+    """Responsible for cleaning up the files."""
     def __init__(self, tempDir):
         self._tempDir = tempDir
 
@@ -676,13 +677,13 @@
 
 
 def _setEnvironment(width, height, filename, transparent, bgcolor):
-    """!Sets environmental variables for 2D rendering.
+    """Sets environmental variables for 2D rendering.
 
-    @param width rendering width
-    @param height rendering height
-    @param filename file name
-    @param transparent use transparency
-    @param bgcolor background color as a tuple of 3 values 0 to 255
+    :param width: rendering width
+    :param height: rendering height
+    :param filename: file name
+    :param transparent: use transparency
+    :param bgcolor: background color as a tuple of 3 values 0 to 255
     """
     Debug.msg(5, "_setEnvironment: width={w}, height={h}, "
                  "filename={f}, transparent={t}, bgcolor={b}".format(w=width,
@@ -707,13 +708,13 @@
 
 
 def createNoDataBitmap(imageWidth, imageHeight, text="No data"):
-    """!Creates 'no data' bitmap.
+    """Creates 'no data' bitmap.
 
     Used when requested bitmap is not available (loading data was not successful) or
     we want to show 'no data' bitmap.
 
-    @param imageWidth image width
-    @param imageHeight image height
+    :param imageWidth: image width
+    :param imageHeight: image height
     """
     Debug.msg(4, "createNoDataBitmap: w={w}, h={h}, text={t}".format(w=imageWidth,
                                                                      h=imageHeight,

Modified: grass/trunk/gui/wxpython/animation/temporal_manager.py
===================================================================
--- grass/trunk/gui/wxpython/animation/temporal_manager.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/animation/temporal_manager.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package animation.temporal_manager
 
 @brief Management of temporal datasets used in animation
@@ -39,7 +39,7 @@
 
 
 class TemporalManager(object):
-    """!Class for temporal data processing."""
+    """Class for temporal data processing."""
     def __init__(self):
         self.timeseriesList = []
         self.timeseriesInfo = {}
@@ -50,7 +50,9 @@
         self.granularityMode = GranularityMode.ORIGINAL
 
     def GetTemporalType(self):
-        """!Get temporal type (TemporalType.ABSOLUTE, TemporalType.RELATIVE)"""
+        """Get temporal type (TemporalType.ABSOLUTE,
+        TemporalType.RELATIVE)
+        """
         return self._temporalType
 
     def SetTemporalType(self, ttype):
@@ -59,18 +61,18 @@
     temporalType = property(fget=GetTemporalType, fset=SetTemporalType)
 
     def AddTimeSeries(self, timeseries, etype):
-        """!Add space time dataset
+        """Add space time dataset
         and collect basic information about it.
 
         Raises GException (e.g. with invalid topology).
 
-        @param timeseries name of timeseries (with or without mapset)
-        @param etype element type (strds, stvds)
+        :param timeseries: name of timeseries (with or without mapset)
+        :param etype: element type (strds, stvds)
         """
         self._gatherInformation(timeseries, etype, self.timeseriesList, self.timeseriesInfo)
 
     def EvaluateInputData(self):
-        """!Checks if all timeseries are compatible (raises GException).
+        """Checks if all timeseries are compatible (raises GException).
 
         Sets internal variables.
         """
@@ -133,7 +135,8 @@
         return True, None
 
     def GetGranularity(self):
-        """!Returns temporal granularity of currently loaded timeseries."""
+        """Returns temporal granularity of currently loaded timeseries.
+        """
         if self.dataMode == DataMode.SIMPLE:
             gran = self.timeseriesInfo[self.timeseriesList[0]]['granularity']
             if 'unit' in self.timeseriesInfo[self.timeseriesList[0]]:  # relative:
@@ -171,7 +174,7 @@
             return (granNum, unit)
 
     def GetLabelsAndMaps(self):
-        """!Returns time labels and map names.
+        """Returns time labels and map names.
         """
         mapLists = []
         labelLists = []
@@ -217,7 +220,7 @@
         return timestamps, mapDict
 
     def _getLabelsAndMaps(self, timeseries):
-        """!Returns time labels and map names (done by sampling)
+        """Returns time labels and map names (done by sampling)
         for both interval and point data.
         """
         sp = tgis.dataset_factory(self.timeseriesInfo[timeseries]['etype'], timeseries)
@@ -292,7 +295,7 @@
         return timeLabels, listOfMaps
 
     def _pretifyTimeLabels(self, labels):
-        """!Convert absolute time labels to grass time and
+        """Convert absolute time labels to grass time and
         leave only datum when time is 0.
         """
         grassLabels = []
@@ -315,7 +318,7 @@
         return grassLabels
 
     def _gatherInformation(self, timeseries, etype, timeseriesList, infoDict):
-        """!Get info about timeseries and check topology (raises GException)"""
+        """Get info about timeseries and check topology (raises GException)"""
         id = validateTimeseriesName(timeseries, etype)
         sp = tgis.dataset_factory(etype, id)
         # Insert content from db

Modified: grass/trunk/gui/wxpython/animation/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/animation/toolbars.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/animation/toolbars.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package animation.toolbars
 
 @brief Animation toolbars
@@ -52,10 +52,10 @@
 
 
 class MainToolbar(BaseToolbar):
-    """!Main toolbar (data management)
+    """Main toolbar (data management)
     """
     def __init__(self, parent):
-        """!Main toolbar constructor
+        """Main toolbar constructor
         """
         BaseToolbar.__init__(self, parent)
 
@@ -65,7 +65,7 @@
         self.Realize()
 
     def _toolbarData(self):
-        """!Returns toolbar data (name, icon, handler)"""
+        """Returns toolbar data (name, icon, handler)"""
         # BaseIcons are a set of often used icons. It is possible
         # to reuse icons in ./trunk/gui/icons/grass or add new ones there.
         icons = ganimIcons
@@ -81,10 +81,10 @@
 
 
 class AnimationToolbar(BaseToolbar):
-    """!Animation toolbar (to control animation)
+    """Animation toolbar (to control animation)
     """
     def __init__(self, parent):
-        """!Animation toolbar constructor
+        """Animation toolbar constructor
         """
         BaseToolbar.__init__(self, parent)
 
@@ -97,7 +97,7 @@
         self.EnableAnimTools(False)
 
     def _toolbarData(self):
-        """!Returns toolbar data (name, icon, handler)"""
+        """Returns toolbar data (name, icon, handler)"""
         # BaseIcons are a set of often used icons. It is possible
         # to reuse icons in ./trunk/gui/icons/grass or add new ones there.
         icons = ganimIcons
@@ -194,7 +194,7 @@
         self.ToggleTool(self.bothDirectionReplay, both)
 
     def EnableAnimTools(self, enable):
-        """!Enable or diable animation tools"""
+        """Enable or diable animation tools"""
         self.EnableTool(self.playForward, enable)
         self.EnableTool(self.playBack, enable)
         self.EnableTool(self.pause, enable)
@@ -202,10 +202,10 @@
 
 
 class MiscToolbar(BaseToolbar):
-    """!Toolbar with miscellaneous tools related to app
+    """Toolbar with miscellaneous tools related to app
     """
     def __init__(self, parent):
-        """!Toolbar constructor
+        """Toolbar constructor
         """
         BaseToolbar.__init__(self, parent)
 
@@ -214,7 +214,7 @@
         self.Realize()
 
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         return self._getToolbarData((("settings", BaseIcons['settings'],
                                       self.parent.OnPreferences),
                                      ("help", BaseIcons['help'],
@@ -225,7 +225,7 @@
 
 
 class AnimSimpleLmgrToolbar(SimpleLmgrToolbar):
-    """!Simple layer manager toolbar for animation tool.
+    """Simple layer manager toolbar for animation tool.
     Allows to add space-time dataset or series of maps.
     """
     def __init__(self, parent, lmgrStyle):

Modified: grass/trunk/gui/wxpython/animation/utils.py
===================================================================
--- grass/trunk/gui/wxpython/animation/utils.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/animation/utils.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package animation.utils
 
 @brief Miscellaneous functions and enum classes
@@ -56,7 +56,7 @@
 
 
 def validateTimeseriesName(timeseries, etype='strds'):
-    """!Checks if space time dataset exists and completes missing mapset.
+    """Checks if space time dataset exists and completes missing mapset.
 
     Raises GException if dataset doesn't exist.
     """
@@ -78,7 +78,7 @@
 
 
 def validateMapNames(names, etype):
-    """!Checks if maps exist and completes missing mapset.
+    """Checks if maps exist and completes missing mapset.
 
     Input is list of map names.
     Raises GException if map doesn't exist.
@@ -105,7 +105,7 @@
 
 
 def getRegisteredMaps(timeseries, etype):
-    """!Returns list of maps registered in dataset.
+    """Returns list of maps registered in dataset.
     Can throw ScriptError if the dataset doesn't exist.
     """
     timeseriesMaps = []
@@ -120,7 +120,7 @@
 
 
 def getNameAndLayer(name):
-    """!Checks whether map name contains layer
+    """Checks whether map name contains layer
     and returns map name with mapset (when there was mapset)
     and layer (can be None).
 
@@ -142,12 +142,12 @@
 
 
 def checkSeriesCompatibility(mapSeriesList=None, timeseriesList=None):
-    """!Checks whether time series (map series and stds) are compatible,
-        which means they have equal number of maps ad times (in case of stds).
-        This is needed within layer list, not within the entire animation tool.
-        Throws GException if these are incompatible.
+    """Checks whether time series (map series and stds) are compatible,
+    which means they have equal number of maps ad times (in case of stds).
+    This is needed within layer list, not within the entire animation tool.
+    Throws GException if these are incompatible.
 
-        @return number of maps for animation
+    :return: number of maps for animation
     """
     timeseriesInfo = {'count': set(), 'temporalType': set(), 'mapType': set(),
                       'mapTimes': set()}
@@ -211,18 +211,16 @@
 
 
 def ComputeScaledRect(sourceSize, destSize):
-    """!Fits source rectangle into destination rectangle
+    """Fits source rectangle into destination rectangle
     by scaling and centering.
 
-    @code
 
-    >>> ComputeScaledRect(sourceSize = (10, 40), destSize = (100, 50))
-    {'height': 50, 'scale': 1.25, 'width': 13, 'x': 44, 'y': 0}
+        >>> ComputeScaledRect(sourceSize = (10, 40), destSize = (100, 50))
+        {'height': 50, 'scale': 1.25, 'width': 13, 'x': 44, 'y': 0}
 
-    @endcode
 
-    @param sourceSize size of source rectangle
-    @param destSize size of destination rectangle
+    :param sourceSize: size of source rectangle
+    :param destSize: size of destination rectangle
     """
     ratio1 = destSize[0] / float(sourceSize[0])
     ratio2 = destSize[1] / float(sourceSize[1])
@@ -243,7 +241,7 @@
 
 
 def RenderText(text, font):
-    """!Renderes text with given font to bitmap."""
+    """Renderes text with given font to bitmap."""
     dc = wx.MemoryDC()
     dc.SetFont(font)
     w, h = dc.GetTextExtent(text)
@@ -260,14 +258,14 @@
 
 
 def WxImageToPil(image):
-    """!Converts wx.Image to PIL image"""
+    """Converts wx.Image to PIL image"""
     pilImage = Image.new('RGB', (image.GetWidth(), image.GetHeight()))
     pilImage.fromstring(image.GetData())
     return pilImage
 
 
 def HashCmd(cmd, region):
-    """!Returns a hash from command given as a list and a region as a dict."""
+    """Returns a hash from command given as a list and a region as a dict."""
     name = '_'.join(cmd)
     if region:
         name += str(sorted(region.items()))
@@ -275,7 +273,7 @@
 
 
 def HashCmds(cmds, region):
-    """!Returns a hash from list of commands and regions as dicts."""
+    """Returns a hash from list of commands and regions as dicts."""
     name = ';'.join([item for sublist in cmds for item in sublist])
     if region:
         name += str(sorted(region.items()))
@@ -283,20 +281,20 @@
 
 
 def GetFileFromCmd(dirname, cmd, region, extension='ppm'):
-    """!Returns file path created as a hash from command and region."""
+    """Returns file path created as a hash from command and region."""
     return os.path.join(dirname, HashCmd(cmd, region) + '.' + extension)
 
 
 def GetFileFromCmds(dirname, cmds, region, extension='ppm'):
-    """!Returns file path created as a hash from list of commands and regions."""
+    """Returns file path created as a hash from list of commands and regions."""
     return os.path.join(dirname, HashCmds(cmds, region) + '.' + extension)
 
 
 def layerListToCmdsMatrix(layerList):
-    """!Goes thru layerList and create matrix of commands
+    """Goes thru layerList and create matrix of commands
     for the composition of map series.:
 
-    @returns matrix of cmds for composition
+    :return: matrix of cmds for composition
     """
     count = 0
     for layer in layerList:
@@ -332,7 +330,7 @@
 
 
 def sampleCmdMatrixAndCreateNames(cmdMatrix, sampledSeries, regions):
-    """!Applies information from temporal sampling
+    """Applies information from temporal sampling
     to the command matrix."""
     namesList = []
     j = -1
@@ -350,7 +348,7 @@
 
 
 def getCpuCount():
-    """!Returns number of available cpus.
+    """Returns number of available cpus.
     If fails, default (4) is returned.
     """
     try:
@@ -360,11 +358,11 @@
 
 
 def interpolate(start, end, count):
-    """!Interpolates values between start and end.
+    """Interpolates values between start and end.
 
-    @param start start value (float)
-    @param end end value (float)
-    @param count total number of values including start and end
+    :param start: start value (float)
+    :param end: end value (float)
+    :param count: total number of values including start and end
 
     >>> interpolate(0, 10, 5)
     [0, 2.5, 5.0, 7.5, 10]

Modified: grass/trunk/gui/wxpython/core/debug.py
===================================================================
--- grass/trunk/gui/wxpython/core/debug.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/debug.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package core.debug
 
 @brief wxGUI debugging
@@ -25,11 +25,10 @@
 import grass.script as grass
 
 class DebugMsg:
-    """!wxGUI debugging
+    """wxGUI debugging
     
-    @code
-    g.gisenv set=WX_DEBUG=[0-5]
-    @endcode
+        g.gisenv set=WX_DEBUG=[0-5]
+
     """
     def __init__(self):
         # default level
@@ -38,16 +37,16 @@
         self.SetLevel()
 
     def SetLevel(self):
-        """!Initialize gui debug level
+        """Initialize gui debug level
         """
         self.debuglevel = int(grass.gisenv().get('WX_DEBUG', 0))
         
     def msg(self, level, message, *args):
-        """!Print debug message
+        """Print debug message
 
-        @param level debug level (0-5)
-        @param message message to be printed
-        @param *args formatting params
+        :param level: debug level (0-5)
+        :param message: message to be printed
+        :param *args: formatting params
         """
         # self.SetLevel()
         if self.debuglevel > 0 and level > 0 and level <= self.debuglevel:
@@ -60,7 +59,7 @@
             sys.stderr.flush() # force flush (required for MS Windows)
         
     def GetLevel(self):
-        """!Return current GUI debug level"""
+        """Return current GUI debug level"""
         return self.debuglevel
 
 # Debug instance

Modified: grass/trunk/gui/wxpython/core/gcmd.py
===================================================================
--- grass/trunk/gui/wxpython/core/gcmd.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/gcmd.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package core.gcmd
 
 @brief wxGUI command interface
@@ -61,7 +61,7 @@
     _ = null_gettext
 
 def GetRealCmd(cmd):
-    """!Return real command name - only for MS Windows
+    """Return real command name - only for MS Windows
     """
     if sys.platform == 'win32':
         for ext in globalvar.grassScripts.keys():
@@ -71,11 +71,11 @@
     return cmd
 
 def DecodeString(string):
-    """!Decode string using system encoding
+    """Decode string using system encoding
     
-    @param string string to be decoded
+    :param string: string to be decoded
     
-    @return decoded string
+    :return: decoded string
     """
     if not string:
         return string
@@ -87,11 +87,11 @@
     return string
 
 def EncodeString(string):
-    """!Return encoded string using system locales
+    """Return encoded string using system locales
     
-    @param string string to be encoded
+    :param string: string to be encoded
     
-    @return encoded string
+    :return: encoded string
     """
     if not string:
         return string
@@ -104,12 +104,12 @@
 
 class GError:
     def __init__(self, message, parent = None, caption = None, showTraceback = True):
-        """!Show error message window
+        """Show error message window
 
-        @param message error message
-        @param parent centre window on parent if given
-        @param caption window caption (if not given "Error")
-        @param showTraceback True to show also Python traceback
+        :param message: error message
+        :param parent: centre window on parent if given
+        :param caption: window caption (if not given "Error")
+        :param showTraceback: True to show also Python traceback
         """
         if not caption:
             caption = _('Error')
@@ -164,7 +164,7 @@
         return self.value
 
 class Popen(subprocess.Popen):
-    """!Subclass subprocess.Popen"""
+    """Subclass subprocess.Popen"""
     def __init__(self, args, **kwargs):
         if subprocess.mswindows:
             args = map(EncodeString, args)
@@ -221,7 +221,7 @@
         setattr(self, which, None)
 
     def kill(self):
-        """!Try to kill running process"""
+        """Try to kill running process"""
         if subprocess.mswindows:
             import win32api
             handle = win32api.OpenProcess(1, 0, self.pid)
@@ -346,13 +346,12 @@
         data = buffer(data, sent)
 
 class Command:
-    """!Run command in separate thread. Used for commands launched
+    """Run command in separate thread. Used for commands launched
     on the background.
 
     If stdout/err is redirected, write() method is required for the
     given classes.
 
-    @code
         cmd = Command(cmd=['d.rast', 'elevation.dem'], verbose=3, wait=True)
 
         if cmd.returncode == None:
@@ -361,21 +360,20 @@
             print 'SUCCESS'
         else:
             print 'FAILURE (%d)' % cmd.returncode
-    @endcode
     """
     def __init__ (self, cmd, stdin = None,
                   verbose = None, wait = True, rerr = False,
                   stdout = None, stderr = None):
         """
-        @param cmd     command given as list
-        @param stdin   standard input stream
-        @param verbose verbose level [0, 3] (--q, --v)
-        @param wait    wait for child execution terminated
-        @param rerr    error handling (when GException raised).
-        True for redirection to stderr, False for GUI dialog,
-        None for no operation (quiet mode)
-        @param stdout  redirect standard output or None
-        @param stderr  redirect standard error output or None
+        :param cmd: command given as list
+        :param stdin: standard input stream
+        :param verbose: verbose level [0, 3] (--q, --v)
+        :param wait: wait for child execution terminated
+        :param rerr: error handling (when GException raised).
+                     True for redirection to stderr, False for GUI
+                     dialog, None for no operation (quiet mode)
+        :param stdout:  redirect standard output or None
+        :param stderr:  redirect standard error output or None
         """
         Debug.msg(1, "gcmd.Command(): %s" % ' '.join(cmd))
         self.cmd = cmd
@@ -443,9 +441,9 @@
             del os.environ["GRASS_VERBOSE"]
             
     def __ReadOutput(self, stream):
-        """!Read stream and return list of lines
+        """Read stream and return list of lines
 
-        @param stream stream to be read
+        :param stream: stream to be read
         """
         lineList = []
 
@@ -462,14 +460,14 @@
         return lineList
                     
     def __ReadErrOutput(self):
-        """!Read standard error output and return list of lines"""
+        """Read standard error output and return list of lines"""
         return self.__ReadOutput(self.cmdThread.module.stderr)
 
     def __ProcessStdErr(self):
         """
         Read messages/warnings/errors from stderr
 
-        @return list of (type, message)
+        :return: list of (type, message)
         """
         if self.stderr is None:
             lines = self.__ReadErrOutput()
@@ -502,7 +500,7 @@
         return msg
 
     def __GetError(self):
-        """!Get error message or ''"""
+        """Get error message or ''"""
         if not self.cmdThread.module:
             return _("Unable to exectute command: '%s'") % ' '.join(self.cmd)
         
@@ -515,16 +513,16 @@
         return ''
     
 class CommandThread(Thread):
-    """!Create separate thread for command. Used for commands launched
+    """Create separate thread for command. Used for commands launched
     on the background."""
     def __init__ (self, cmd, env = None, stdin = None,
                   stdout = sys.stdout, stderr = sys.stderr):
         """
-        @param cmd command (given as list)
-        @param env environmental variables
-        @param stdin standard input stream 
-        @param stdout redirect standard output or None
-        @param stderr redirect standard error output or None
+        :param cmd: command (given as list)
+        :param env: environmental variables
+        :param stdin: standard input stream 
+        :param stdout: redirect standard output or None
+        :param stderr: redirect standard error output or None
         """
         Thread.__init__(self)
         
@@ -553,7 +551,7 @@
             del os.environ["GRASS_MESSAGE_FORMAT"]
         
     def run(self):
-        """!Run command"""
+        """Run command"""
         if len(self.cmd) == 0:
             return
 
@@ -598,7 +596,7 @@
         self._redirect_stream()
         
     def _redirect_stream(self):
-        """!Redirect stream"""
+        """Redirect stream"""
         if self.stdout:
             # make module stdout/stderr non-blocking
             out_fileno = self.module.stdout.fileno()
@@ -639,11 +637,11 @@
                 self.error = line
             
     def abort(self):
-        """!Abort running process, used by main thread to signal an abort"""
+        """Abort running process, used by main thread to signal an abort"""
         self._want_abort = True
     
 def _formatMsg(text):
-    """!Format error messages for dialogs
+    """Format error messages for dialogs
     """
     message = ''
     for line in text.splitlines():
@@ -662,25 +660,26 @@
     
     return message
 
-def RunCommand(prog, flags = "", overwrite = False, quiet = False, verbose = False,
-               parent = None, read = False, parse = None, stdin = None, getErrorMsg = False, **kwargs):
-    """!Run GRASS command
+def RunCommand(prog, flags = "", overwrite = False, quiet = False,
+               verbose = False, parent = None, read = False,
+               parse = None, stdin = None, getErrorMsg = False, **kwargs):
+    """Run GRASS command
 
-    @param prog program to run
-    @param flags flags given as a string
-    @param overwrite, quiet, verbose flags
-    @param parent parent window for error messages
-    @param read fetch stdout
-    @param parse fn to parse stdout (e.g. grass.parse_key_val) or None
-    @param stdin stdin or None
-    @param getErrorMsg get error messages on failure
-    @param kwargs program parameters
+    :param prog: program to run
+    :param flags: flags given as a string
+    :param overwrite, quiet, verbose: flags
+    :param parent: parent window for error messages
+    :param read: fetch stdout
+    :param parse: fn to parse stdout (e.g. grass.parse_key_val) or None
+    :param stdin: stdin or None
+    :param getErrorMsg: get error messages on failure
+    :param kwargs: program parameters
     
-    @return returncode (read == False and getErrorMsg == False)
-    @return returncode, messages (read == False and getErrorMsg == True)
-    @return stdout (read == True and getErrorMsg == False)
-    @return returncode, stdout, messages (read == True and getErrorMsg == True)
-    @return stdout, stderr
+    :return: returncode (read == False and getErrorMsg == False)
+    :return: returncode, messages (read == False and getErrorMsg == True)
+    :return: stdout (read == True and getErrorMsg == False)
+    :return: returncode, stdout, messages (read == True and getErrorMsg == True)
+    :return: stdout, stderr
     """
     cmdString = ' '.join(grass.make_command(prog, flags, overwrite,
                                             quiet, verbose, **kwargs))
@@ -757,11 +756,11 @@
     return stdout, _formatMsg(stderr)
 
 def GetDefaultEncoding(forceUTF8 = False):
-    """!Get default system encoding
+    """Get default system encoding
     
-    @param forceUTF8 force 'UTF-8' if encoding is not defined
+    :param bool forceUTF8: force 'UTF-8' if encoding is not defined
 
-    @return system encoding (can be None)
+    :return: system encoding (can be None)
     """
     enc = locale.getdefaultlocale()[1]
     if forceUTF8 and (enc is None or enc == 'UTF8'):

Modified: grass/trunk/gui/wxpython/core/gconsole.py
===================================================================
--- grass/trunk/gui/wxpython/core/gconsole.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/gconsole.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package core.gconsole
 
 @brief Command output widgets
@@ -55,19 +55,19 @@
 
 
 def GrassCmd(cmd, env=None, stdout=None, stderr=None):
-    """!Return GRASS command thread"""
+    """Return GRASS command thread"""
     return CommandThread(cmd, env=env,
                          stdout=stdout, stderr=stderr)
 
 
 class CmdThread(threading.Thread):
-    """!Thread for GRASS commands"""
+    """Thread for GRASS commands"""
     requestId = 0
 
     def __init__(self, receiver, requestQ=None, resultQ=None, **kwds):
-        """!
-        @param receiver event receiver (used in PostEvent)
         """
+        :param receiver: event receiver (used in PostEvent)
+        """
         threading.Thread.__init__(self, **kwds)
 
         if requestQ is None:
@@ -90,12 +90,12 @@
         self.start()
 
     def RunCmd(self, *args, **kwds):
-        """!Run command in queue
+        """Run command in queue
 
-        @param args unnamed command arguments
-        @param kwds named command arguments
+        :param args: unnamed command arguments
+        :param kwds: named command arguments
 
-        @return request id in queue
+        :return: request id in queue
         """
         CmdThread.requestId += 1
 
@@ -105,11 +105,11 @@
         return CmdThread.requestId
 
     def GetId(self):
-         """!Get id for next command"""
-         return CmdThread.requestId + 1
+        """Get id for next command"""
+        return CmdThread.requestId + 1
 
     def SetId(self, id):
-        """!Set starting id"""
+        """Set starting id"""
         CmdThread.requestId = id
 
     def run(self):
@@ -208,7 +208,7 @@
                 wx.PostEvent(self.receiver, event)
 
     def abort(self, abortall=True):
-        """!Abort command(s)"""
+        """Abort command(s)"""
         if abortall:
             self._want_abort_all = True
         if self.requestCmd is not None:
@@ -217,7 +217,7 @@
             self._want_abort_all = False
 
 class GStdout:
-    """!GConsole standard output
+    """GConsole standard output
 
     Based on FrameOutErr.py
 
@@ -228,9 +228,9 @@
     Licence:   GPL
     """
     def __init__(self, receiver):
-        """!
-        @param receiver event receiver (used in PostEvent)
         """
+        :param receiver: event receiver (used in PostEvent)
+        """
         self.receiver = receiver
 
     def flush(self):
@@ -250,7 +250,7 @@
 
 
 class GStderr:
-    """!GConsole standard error output
+    """GConsole standard error output
 
     Based on FrameOutErr.py
 
@@ -261,9 +261,9 @@
     Licence:   GPL
     """
     def __init__(self, receiver):
-        """!
-        @param receiver event receiver (used in PostEvent)
         """
+        :param receiver: event receiver (used in PostEvent)
+        """
         self.receiver = receiver
         self.type = ''
         self.message = ''
@@ -331,15 +331,16 @@
 
 
 class GConsole(wx.EvtHandler):
-    """!
     """
+    """
     def __init__(self, guiparent=None, giface=None, ignoredCmdPattern=None):
-        """!
-        @param guiparent parent window for created GUI objects
-        @param lmgr layer manager window (TODO: replace by giface)
-        @param ignoredCmdPattern regular expression specifying commads
-        to be ignored (e.g. @c '^d\..*' for display commands)
         """
+        :param guiparent: parent window for created GUI objects
+        :param lmgr: layer manager window (TODO: replace by giface)
+        :param ignoredCmdPattern: regular expression specifying commads
+                                  to be ignored (e.g. @c '^d\..*' for
+                                  display commands)
+        """
         wx.EvtHandler.__init__(self)
 
         # Signal when some map is created or updated by a module.
@@ -378,7 +379,7 @@
         self.cmdThread = CmdThread(self, self.requestQ, self.resultQ)
 
     def Redirect(self):
-        """!Redirect stdout/stderr
+        """Redirect stdout/stderr
         """
         if Debug.GetLevel() == 0 and int(grass.gisenv().get('DEBUG', 0)) == 0:
             # don't redirect when debugging is enabled
@@ -395,54 +396,56 @@
 
     def WriteLog(self, text, style=None, wrap=None,
                  notification=Notification.HIGHLIGHT):
-        """!Generic method for writing log message in
+        """Generic method for writing log message in
         given style
 
-        @param text text line
-        @param notification form of notification
+        :param text: text line
+        :param notification: form of notification
         """
         self.writeLog.emit(text=text, wrap=wrap,
                           notification=notification)
 
     def WriteCmdLog(self, text, pid=None, notification=Notification.MAKE_VISIBLE):
-        """!Write message in selected style
+        """Write message in selected style
 
-        @param text message to be printed
-        @param pid process pid or None
-        @param notification form of notification
+        :param text: message to be printed
+        :param pid: process pid or None
+        :param notification: form of notification
         """
         self.writeCmdLog.emit(text=text, pid=pid,
                               notification=notification)
 
     def WriteWarning(self, text):
-        """!Write message in warning style"""
+        """Write message in warning style"""
         self.writeWarning.emit(text=text)
 
     def WriteError(self, text):
-        """!Write message in error style"""
+        """Write message in error style"""
         self.writeError.emit(text=text)
 
     def RunCmd(self, command, compReg=True, skipInterface=False,
                onDone=None, onPrepare=None, userData=None, notification=Notification.MAKE_VISIBLE):
-        """!Run command typed into console command prompt (GPrompt).
+        """Run command typed into console command prompt (GPrompt).
 
-        @todo Document the other event.
-        @todo Solve problem with the other event
-        (now uses gOutputText event but there is no text,
-        use onPrepare handler instead?)
+        .. todo::
+            Document the other event.
+        .. todo::
+            Solve problem with the other event (now uses gOutputText
+            event but there is no text, use onPrepare handler instead?)
 
         Posts event EVT_IGNORED_CMD_RUN when command which should be ignored
         (according to ignoredCmdPattern) is run.
         For example, see layer manager which handles d.* on its own.
 
-        @param command command given as a list (produced e.g. by utils.split())
-        @param compReg True use computation region
-        @param notification form of notification
-        @param skipInterface True to do not launch GRASS interface
-        parser when command has no arguments given
-        @param onDone function to be called when command is finished
-        @param onPrepare function to be called before command is launched
-        @param userData data defined for the command
+        :param command: command given as a list (produced e.g. by utils.split())
+        :param compReg: True use computation region
+        :param notification: form of notification
+        :param bool skipInterface: True to do not launch GRASS interface
+                                   parser when command has no arguments
+                                   given
+        :param onDone: function to be called when command is finished
+        :param onPrepare: function to be called before command is launched
+        :param userData: data defined for the command
         """
         if len(command) == 0:
             Debug.msg(2, "GPrompt:RunCmd(): empty command")
@@ -567,11 +570,12 @@
             self.cmdOutputTimer.Start(50)
 
     def GetLog(self, err=False):
-        """!Get widget used for logging
+        """Get widget used for logging
 
-        @todo what's this?
+        .. todo::
+           what's this?
 
-        @param err True to get stderr widget
+        :param bool err: True to get stderr widget
         """
         if err:
             return self.cmdStdErr
@@ -579,22 +583,22 @@
         return self.cmdStdOut
 
     def GetCmd(self):
-        """!Get running command or None"""
+        """Get running command or None"""
         return self.requestQ.get()
 
     def OnCmdAbort(self, event):
-        """!Abort running command"""
+        """Abort running command"""
         self.cmdThread.abort()
         event.Skip()
 
     def OnCmdRun(self, event):
-        """!Run command"""
+        """Run command"""
         self.WriteCmdLog('(%s)\n%s' % (str(time.ctime()), ' '.join(event.cmd)),
                          notification=event.notification)
         event.Skip()
 
     def OnCmdDone(self, event):
-        """!Command done (or aborted)
+        """Command done (or aborted)
 
         Sends signal mapCreated if map is recognized in output
         parameters or for specific modules (as r.colors).
@@ -667,9 +671,9 @@
         wx.GetApp().ProcessPendingEvents()
 
     def UpdateHistoryFile(self, command):
-        """!Update history file
+        """Update history file
         
-        @param command the command given as a string
+        :param command: the command given as a string
         """
         env = grass.gisenv()
         try:

Modified: grass/trunk/gui/wxpython/core/giface.py
===================================================================
--- grass/trunk/gui/wxpython/core/giface.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/giface.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package core.giface
 
 @brief GRASS interface for standalone application (without layer manager)
@@ -27,7 +27,7 @@
 
 
 class Notification:
-    """!Enum class for notifications suggestions.
+    """Enum class for notifications suggestions.
 
     Can be used for log messages, commands, warnings, errors.
     The value is the suggestion how user should be notified
@@ -40,76 +40,83 @@
 
 
 class Layer(object):
-    """!Layer is generaly usable layer object.
+    """Layer is generaly usable layer object.
 
-    @note Currently without specifying the interface.
-    Current implementations only provides all attributes of existing layer
-    as used in lmgr.
+    .. note::
+        Currently without specifying the interface.
+        Current implementations only provides all attributes of existing
+        layer as used in lmgr.
     """
     pass
 
 
 class LayerList(object):
     def GetSelectedLayers(self, checkedOnly=True):
-        """!Returns list of selected layers.
+        """Returns list of selected layers.
 
-        @note Usage of checked and selected is still subject to change.
-        Checked layers should be showed. Selected are for analyses.
-        However, this may be the same for some implementations
-        (e.g. it d.mon has all layers checked and selected).
+        .. note::
+            Usage of checked and selected is still subject to change.
+            Checked layers should be showed. Selected are for analyses.
+            However, this may be the same for some implementations
+            (e.g. it d.mon has all layers checked and selected).
         """
         raise NotImplementedError()
 
     def GetSelectedLayer(self, checkedOnly=False):
-        """!Returns selected layer or None when there is no selected layer.
+        """Returns selected layer or None when there is no selected layer.
 
-        @note Parameter checkedOnly is here False by default. This might change
-        if we find the right way of handling unchecked layers.
+        .. note::
+            Parameter checkedOnly is here False by default. This might
+            change if we find the right way of handling unchecked layers.
         """
         raise NotImplementedError()
 
     def AddLayer(self, ltype, name=None, checked=None,
                  opacity=1.0, cmd=None):
-        """!Adds a new layer to the layer list.
+        """Adds a new layer to the layer list.
 
         Launches property dialog if needed (raster, vector, etc.)
 
-        @param ltype layer type (raster, vector, 3d-raster, ...)
-        @param name layer name
-        @param checked if True layer is checked
-        @param opacity layer opacity level
-        @param cmd command (given as a list)
+        :param ltype: layer type (raster, vector, 3d-raster, ...)
+        :param name: layer name
+        :param checked: if True layer is checked
+        :param opacity: layer opacity level
+        :param cmd: command (given as a list)
         """
         raise NotImplementedError()
 
     def GetLayersByName(self, name):
-        """!Returns list of layers with a given name.
+        """Returns list of layers with a given name.
 
-        @param name fully qualified map name
+        :param name: fully qualified map name
 
-        @todo if common usage is just to check the presence of layer,
-        intoroduce a new method ContainsLayerByName(name)
+        .. todo::
+            if common usage is just to check the presence of layer,
+            intoroduce a new method ContainsLayerByName(name)
         """
         raise NotImplementedError()
 
     def GetLayerByData(self, key, value):
-        """!Returns layer with specified.
+        """Returns layer with specified.
 
-        @note Returns only one layer. This might change.
+        .. note::
+            Returns only one layer. This might change.
 
-        @warning Avoid using this method, it might be removed in the future.
+        .. warning::
+            Avoid using this method, it might be removed in the future.
         """
         raise NotImplementedError()
 
 
 class GrassInterface:
-    """!GrassInterface provides the functionality which should be available
+    """GrassInterface provides the functionality which should be available
     to every GUI component.
 
-    @note The GrassInterface process is not finished.
+    .. note::
+        The GrassInterface process is not finished.
     """
     def RunCmd(self, *args, **kwargs):
-        """!Executes a command.
+        """Executes a command.
         """
         raise NotImplementedError()
 
@@ -119,70 +126,76 @@
         raise NotImplementedError()
 
     def WriteLog(self, text, wrap=None, notification=Notification.HIGHLIGHT):
-        """!Writes log message.
+        """Writes log message.
         """
         raise NotImplementedError()
 
     def WriteCmdLog(self, text, pid=None, notification=Notification.MAKE_VISIBLE):
-        """!Writes message related to start or end of the command.
+        """Writes message related to start or end of the command.
         """
         raise NotImplementedError()
 
     def WriteWarning(self, text):
-        """!Writes warning message for the user.
+        """Writes warning message for the user.
         """
         raise NotImplementedError()
 
     def WriteError(self, text):
-        """!Writes error message for the user."""
+        """Writes error message for the user."""
         raise NotImplementedError()
 
     def GetLayerTree(self):
-        """!Returns LayerManager's tree GUI object.
-        @note Will be removed from the interface.
+        """Returns LayerManager's tree GUI object.
+        .. note::
+            Will be removed from the interface.
         """
         raise NotImplementedError()
 
     def GetLayerList(self):
-        """!Returns a layer management object.
+        """Returns a layer management object.
         """
         raise NotImplementedError()
 
     def GetMapDisplay(self):
-        """!Returns current map display.
+        """Returns current map display.
 
-        @note For layer related tasks use GetLayerList().
+        .. note::
+            For layer related tasks use GetLayerList().
 
-        @return MapFrame instance
-        @return None when no mapdisplay open
+        :return: MapFrame instance
+        :return: None when no mapdisplay open
         """
         raise NotImplementedError()
 
     def GetAllMapDisplays(self):
-        """!Get list of all map displays.
+        """Get list of all map displays.
 
-        @note Might be removed from the interface.
+        .. note::
+            Might be removed from the interface.
 
-        @return list of MapFrame instances
+        :return: list of MapFrame instances
         """
         raise NotImplementedError()
 
     def GetMapWindow(self):
-        """!Returns current map window.
-        @note For layer related tasks use GetLayerList().
+        """Returns current map window.
+
+        .. note::
+            For layer related tasks use GetLayerList().
         """
         raise NotImplementedError()
 
     def GetProgress(self):
-        """!Returns object which shows the progress.
+        """Returns object which shows the progress.
 
-        @note Some implementations may not implement this method.
+        .. note::
+            Some implementations may not implement this method.
         """
         raise NotImplementedError()
 
 
 class StandaloneGrassInterface():
-    """!@implements GrassInterface"""
+    """@implements GrassInterface"""
     def __init__(self):
 
         # Signal when some map is created or updated by a module.
@@ -206,7 +219,7 @@
         self._gconsole.writeError.connect(self.WriteError)
 
     def _onCmdOutput(self, event):
-        """!Print command output"""
+        """Print command output"""
         message = event.text
         style = event.type
 
@@ -219,7 +232,7 @@
         event.Skip()
 
     def _onCmdProgress(self, event):
-        """!Update progress message info"""
+        """Update progress message info"""
         grass.percent(event.value, 100, 1)
         event.Skip()
 
@@ -260,12 +273,12 @@
         return None
 
     def GetMapDisplay(self):
-        """!Get current map display.
+        """Get current map display.
         """
         return None
 
     def GetAllMapDisplays(self):
-        """!Get list of all map displays.
+        """Get list of all map displays.
         """
         return []
 

Modified: grass/trunk/gui/wxpython/core/globalvar.py
===================================================================
--- grass/trunk/gui/wxpython/core/globalvar.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/globalvar.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package core.globalvar
 
 @brief Global variables used by wxGUI
@@ -42,7 +42,7 @@
 from grass.script.core import get_commands
 
 def CheckWxVersion(version = [2, 8, 11, 0]):
-    """!Check wx version"""
+    """Check wx version"""
     ver = wx.version().split(' ')[0]
     if map(int, ver.split('.')) < version:
         return False
@@ -50,7 +50,7 @@
     return True
 
 def CheckForWx():
-    """!Try to import wx module and check its version"""
+    """Try to import wx module and check its version"""
     if 'wx' in sys.modules.keys():
         return
 
@@ -91,7 +91,7 @@
 # temporal query layer (removed on re-render action)
 QUERYLAYER = 'qlayer'
 
-"""!Style definition for FlatNotebook pages"""
+"""Style definition for FlatNotebook pages"""
 FNPageStyle = FN.FNB_VC8 | \
     FN.FNB_BACKGROUND_GRADIENT | \
     FN.FNB_NODRAG | \
@@ -104,7 +104,7 @@
 
 FNPageColor = wx.Colour(125,200,175)
 
-"""!Dialog widget dimension"""
+"""Dialog widget dimension"""
 DIALOG_SPIN_SIZE = (150, -1)
 DIALOG_COMBOBOX_SIZE = (300, -1)
 DIALOG_GSELECT_SIZE = (400, -1)
@@ -137,10 +137,10 @@
 
 
 def UpdateGRASSAddOnCommands(eList = None):
-    """!Update list of available GRASS AddOns commands to use when
+    """Update list of available GRASS AddOns commands to use when
     parsing string from the command line
 
-    @param eList list of AddOns commands to remove
+    :param eList: list of AddOns commands to remove
     """
     global grassCmd, grassScripts
 

Modified: grass/trunk/gui/wxpython/core/layerlist.py
===================================================================
--- grass/trunk/gui/wxpython/core/layerlist.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/layerlist.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-"""!
+"""
 @package core.layerlist
 
 @brief Non GUI classes for layer management (so far used for class simplelmgr only)
@@ -21,7 +21,7 @@
 
 
 class LayerList(object):
-    """!Non GUI class managing list of layers.
+    """Non GUI class managing list of layers.
 
     It provides API for handling layers. In the future,
     a non GUI class (e.g. named LayerTree) which includes this API,
@@ -31,9 +31,9 @@
         self._list = []
 
     def GetSelectedLayers(self, activeOnly=True):
-        """!Returns list of selected layers.
+        """Returns list of selected layers.
 
-        @param activeOnly return only active layers
+        :param bool activeOnly: return only active layers
         """
         layers = []
         for layer in self._list:
@@ -45,9 +45,9 @@
         return layers
 
     def GetSelectedLayer(self, activeOnly=False):
-        """!Returns selected layer or None when there is no selected layer.
+        """Returns selected layer or None when there is no selected layer.
 
-        @param activeOnly return only active layers
+        :param bool activeOnly: return only active layers
         """
         layers = self.GetSelectedLayers(activeOnly)
         if layers:
@@ -55,13 +55,13 @@
         return None
 
     def GetActiveLayers(self):
-        """!Returns list of active layers."""
+        """Returns list of active layers."""
         return [layer for layer in self._list if layer.IsActive()]
 
     def GetLayersByTypes(self, mapTypes):
-        """!Returns layers by types.
+        """Returns layers by types.
 
-        @param mapTypes list of types
+        :param mapTypes: list of types
         """
         layers = []
         for layer in self._list:
@@ -71,16 +71,16 @@
 
     def AddNewLayer(self, name, mapType, cmd, active=True, hidden=False,
                     opacity=1, label=None, pos=0):
-        """!Creates new layer and adds it to the list (insert to the first position).
+        """Creates new layer and adds it to the list (insert to the first position).
 
-        @param ltype layer type (raster, vector, 3d-raster, ...)
-        @param cmd command (given as a list)
-        @param active if True layer is active
-        @param hidden if True layer is hidden
-        @param opacity layer opacity level (0 - 100)
-        @param name layer name (set automatically from cmd)
-        @param label layer label (set automatically from name)
-        @param pos add layer to position
+        :param ltype: layer type (raster, vector, 3d-raster, ...)
+        :param cmd: command (given as a list)
+        :param active: if True layer is active
+        :param hidden: if True layer is hidden
+        :param opacity: layer opacity level (0 - 100)
+        :param name: layer name (set automatically from cmd)
+        :param label: layer label (set automatically from name)
+        :param pos: add layer to position
         """
         layer = Layer()
         layer.hidden = hidden
@@ -96,41 +96,43 @@
         return layer
 
     def AddLayer(self, layer):
-        """!Adds a layer to the layer list.
+        """Adds a layer to the layer list.
         """
         self._list.insert(0, layer)
 
     def InsertLayer(self, index, layer):
-        """!Adds a layer to the layer list.
+        """Adds a layer to the layer list.
         """
         self._list.insert(index, layer)
 
     def RemoveLayer(self, layer):
-        """!Removes layer."""
+        """Removes layer."""
         self._list.remove(layer)
 
     def GetLayerByData(self, key, value):
-        """!Returns layer with specified.
+        """Returns layer with specified.
 
-        @note Returns only one layer. This might change.
+        .. note::
+            Returns only one layer. This might change.
 
-        @warning Avoid using this method, it might be removed in the future.
+        .. warning::
+            Avoid using this method, it might be removed in the future.
         """
         raise NotImplementedError()
 
     def GetLayerIndex(self, layer):
-        """!Get index of layer."""
+        """Get index of layer."""
         return self._list.index(layer)
 
     def MoveLayerUp(self, layer):
-        """!Moves layer up (1 step)."""
+        """Moves layer up (1 step)."""
         idx = self._list.index(layer)
         if idx > 0:
             lr = self._list.pop(idx)
             self._list.insert(idx - 1, lr)
 
     def MoveLayerDown(self, layer):
-        """!Moves layer down (1 step)."""
+        """Moves layer down (1 step)."""
         idx = self._list.index(layer)
         if idx < len(self._list) - 1:
             lr = self._list.pop(idx)
@@ -154,28 +156,28 @@
 
 
 class Layer(object):
-    """!Object representing layer.
+    """Object representing layer.
 
     Properties of the object are checked during setting.
     Map types can be extended if needed.
 
-    >>> layer = Layer()
-    >>> layer.selected = True
-    >>> layer.IsSelected()
-    True
-    >>> layer.opacity = 0.1
-    Traceback (most recent call last):
-    ...
-    ValueError: Opacity must be an integer between 0 and 100, not 0.1.
-    >>> layer.name = 'blablabla'
-    Traceback (most recent call last):
-    ...
-    ValueError: To set layer name, the type of layer must be specified.
-    >>> layer.mapType = 'rast'
-    >>> layer.name = 'blablabla'
-    Traceback (most recent call last):
-    ...
-    ValueError: Map <blablabla> not found.
+        >>> layer = Layer()
+        >>> layer.selected = True
+        >>> layer.IsSelected()
+        True
+        >>> layer.opacity = 0.1
+        Traceback (most recent call last):
+        ...
+        ValueError: Opacity must be an integer between 0 and 100, not 0.1.
+        >>> layer.name = 'blablabla'
+        Traceback (most recent call last):
+        ...
+        ValueError: To set layer name, the type of layer must be specified.
+        >>> layer.mapType = 'rast'
+        >>> layer.name = 'blablabla'
+        Traceback (most recent call last):
+        ...
+        ValueError: Map <blablabla> not found.
     """
     def __init__(self):
         self._mapType = None
@@ -199,7 +201,7 @@
         return self._name
 
     def SetName(self, name):
-        """!Sets name of the layer.
+        """Sets name of the layer.
 
         It checks the name of the layer by g.findfile
         (raises ValueError if map does not exist).
@@ -242,9 +244,9 @@
         return self._mapType
 
     def SetMapType(self, mapType):
-        """!Sets map type of the layer.
+        """Sets map type of the layer.
 
-        @param mapType can be 'rast', 'vect', 'rast3'
+        :param mapType: can be 'rast', 'vect', 'rast3'
         """
         if mapType not in self._mapTypes:
             raise ValueError("Wrong map type used: {mtype}".format(mtype=mapType))
@@ -254,16 +256,16 @@
     mapType = property(fget=GetMapType, fset=SetMapType)
 
     def GetOpacity(self):
-        """!Returns opacity value.
+        """Returns opacity value.
 
-        @return opacity as float between 0 and 1
+        :return: opacity as float between 0 and 1
         """
         return self._opacity
 
     def SetOpacity(self, opacity):
-        """!Sets opacity of the layer.
+        """Sets opacity of the layer.
 
-        @param opacity float between 0 and 1
+        :param float opacity: value between 0 and 1
         """
         if not (0 <= opacity <= 1):
             raise ValueError("Opacity value must be between 0 and 1, not {op}.".format(op=opacity))
@@ -283,7 +285,7 @@
         return self._active
 
     def Activate(self, active=True):
-        """!Sets if layer is active (checked)."""
+        """Sets if layer is active (checked)."""
         self._active = active
 
     active = property(fget=IsActive, fset=Activate)
@@ -292,30 +294,30 @@
         return self._hidden
 
     def Hide(self, hide=True):
-        """!Sets if layer is hidden."""
+        """Sets if layer is hidden."""
         self._hidden = hide
 
     hidden = property(fget=IsHidden, fset=Hide)
 
 
 class LayerListToRendererConverter:
-    """!Help class for converting LayerList layers into renderer list (Map)"""
+    """Help class for converting LayerList layers into renderer list (Map)"""
     def __init__(self, renderer):
-        """!
+        """
 
-        @param layerList instance of LayerList
-        @param renderer instance of Map
+        :param layerList: instance of LayerList
+        :param renderer: instance of Map
         """
         self._renderer = renderer
 
     def _getRendererLayer(self, index):
-        """!Returns corresponding layer of renderer."""
+        """Returns corresponding layer of renderer."""
         rLayers = self._renderer.GetListOfLayers()
         index = len(rLayers) - index - 1
         return rLayers[index]
 
     def ConvertAll(self, layerList):
-        """!Removes all layers in Map and adds new layers form layerList.
+        """Removes all layers in Map and adds new layers form layerList.
         It's not meant for continuous update because everything is rerendered.
         """
         self._renderer.DeleteAllLayers()
@@ -323,22 +325,22 @@
             self.AddLayer(index=-1, layer=layer)
 
     def ChangeLayerOpacity(self, index, layer):
-        """!Changes layer opacity in renderer."""
+        """Changes layer opacity in renderer."""
         rLayer = self._getRendererLayer(index)
         self._renderer.ChangeLayer(rLayer, opacity=layer.opacity)
 
     def ChangeLayerCmd(self, index, layer):
-        """!Changes layer cmd in renderer."""
+        """Changes layer cmd in renderer."""
         rLayer = self._getRendererLayer(index)
         self._renderer.ChangeLayer(rLayer, command=layer.cmd)
 
     def ChangeLayerActive(self, index, layer):
-        """!Changes layer active state in renderer."""
+        """Changes layer active state in renderer."""
         rLayer = self._getRendererLayer(index)
         self._renderer.ChangeLayer(rLayer, active=layer.active)
 
     def MoveLayerUp(self, index):
-        """!Moves layer up in renderer."""
+        """Moves layer up in renderer."""
         rLayers = self._renderer.GetListOfLayers()
         index = len(rLayers) - index - 1
         rLayer = rLayers.pop(index)
@@ -346,7 +348,7 @@
         self._renderer.SetLayers(rLayers)
 
     def MoveLayerDown(self, index):
-        """!Moves layer down in renderer."""
+        """Moves layer down in renderer."""
         rLayers = self._renderer.GetListOfLayers()
         index = len(rLayers) - index - 1
         rLayer = rLayers.pop(index)
@@ -354,7 +356,7 @@
         self._renderer.SetLayers(rLayers)
 
     def AddLayer(self, index, layer):
-        """!Adds layer to renderer (prepends)."""
+        """Adds layer to renderer (prepends)."""
         mapType = None
         if layer.mapType == 'rast':
             mapType = 'raster'
@@ -370,5 +372,5 @@
                                 render=True, pos=-1)
 
     def RemoveLayer(self, index):
-        """!Removes layer from renderer."""
+        """Removes layer from renderer."""
         self._renderer.DeleteLayer(self._getRendererLayer(index))

Modified: grass/trunk/gui/wxpython/core/menutree.py
===================================================================
--- grass/trunk/gui/wxpython/core/menutree.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/menutree.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package core.menutree
 
 @brief Creates tree structure for wxGUI menus (former menudata.py)
@@ -54,7 +54,7 @@
 
 # TODO: change the system to remove strange derived classes
 class MenuTreeModelBuilder:
-    """!Abstract menu data class"""
+    """Abstract menu data class"""
     def __init__(self, filename, expandAddons=True):
 
         self.menustyle = UserSettings.Get(group = 'appearance',
@@ -150,9 +150,9 @@
             printTree(node=child, fh=fh)
 
     def PrintStrings(self, fh):
-        """!Print menu strings to file (used for localization)
+        """Print menu strings to file (used for localization)
 
-        @param fh file descriptor
+        :param fh: file descriptor
         """
         className = str(self.__class__).split('.', 1)[1]
         fh.write('menustrings_%s = [\n' % className)

Modified: grass/trunk/gui/wxpython/core/render.py
===================================================================
--- grass/trunk/gui/wxpython/core/render.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/render.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,12 +1,15 @@
-"""!
+"""
 @package core.render
 
 @brief Rendering map layers and overlays into map composition image.
 
- at todo Implement RenderManager also for other layers (see WMS
-implementation for details)
+.. todo::
+    Implement RenderManager also for other layers (see WMS
+    implementation for details)
 
- at todo Render classes should not care about updating statusbar (change emiting events).
+.. todo::
+    Render classes should not care about updating statusbar (change
+    emiting events).
 
 Classes:
  - render::Layer
@@ -48,7 +51,7 @@
 USE_GPNMCOMP = True
 
 class Layer(object):
-    """!Virtual class which stores information about layers (map layers and
+    """Virtual class which stores information about layers (map layers and
     overlays) of the map composition.
     
     - For map layer use MapLayer class.
@@ -56,18 +59,19 @@
     """
     def __init__(self, ltype, cmd, Map, name = None,
                  active = True, hidden = False, opacity = 1.0):
-        """!Create new instance
+        """Create new instance
         
-        @todo pass cmd as tuple instead of list
+        .. todo::
+            pass cmd as tuple instead of list
         
-        @param ltype layer type ('raster', 'vector', 'overlay', 'command', etc.)
-        @param cmd GRASS command to render layer,
-        given as list, e.g. ['d.rast', 'map=elevation at PERMANENT']
-        @param Map render.Map instance
-        @param name layer name, e.g. 'elevation at PERMANENT' (for layer tree)
-        @param active layer is active, will be rendered only if True
-        @param hidden layer is hidden, won't be listed in Layer Manager if True
-        @param opacity layer opacity <0;1>
+        :param ltype: layer type ('raster', 'vector', 'overlay', 'command', etc.)
+        :param cmd: GRASS command to render layer, given as list,
+                    e.g. ['d.rast', 'map=elevation at PERMANENT']
+        :param map: render.Map instance
+        :param name: layer name, e.g. 'elevation at PERMANENT' (for layer tree)
+        :param active: layer is active, will be rendered only if True
+        :param hidden: layer is hidden, won't be listed in Layer Manager if True
+        :param float opacity: layer opacity <0;1>
         """
         
         # generated file for each layer
@@ -114,10 +118,10 @@
                    (self.name, self.GetCmd(string = True)))
         
     def Render(self):
-        """!Render layer to image
+        """Render layer to image
         
-        @return rendered image filename
-        @return None on error or if cmdfile is defined
+        :return: rendered image filename
+        :return: None on error or if cmdfile is defined
         """
         if not self.cmd:
             return None
@@ -172,8 +176,8 @@
         return self.mapfile
     
     def _runCommand(self, cmd):
-        """!Run command to render data
-        """ 
+        """Run command to render data
+        """
         if self.type == 'wms':
             ret = 0
             msg = ''
@@ -188,11 +192,11 @@
         return ret, msg
     
     def GetCmd(self, string = False):
-        """!Get GRASS command as list of string.
+        """Get GRASS command as list of string.
         
-        @param string get command as string if True otherwise as list
+        :param string: get command as string if True otherwise as list
         
-        @return command list/string
+        :return: command list/string
         """
         if string:
             if self.type == 'command':
@@ -207,11 +211,11 @@
             return self.cmd
 
     def GetType(self):
-        """!Get map layer type"""
+        """Get map layer type"""
         return self.type
     
     def GetElement(self):
-        """!Get map element type"""
+        """Get map element type"""
         if self.type == 'raster':
             return 'cell'
         return self.type
@@ -220,18 +224,19 @@
         """
         Get layer opacity level
         
-        @return opacity level (<0, 1>)
+        :return: opacity level (<0, 1>)
         """
         return self.opacity
 
     def GetName(self, fullyQualified = True):
-        """!Get map layer name
+        """Get map layer name
 
-        @param fullyQualified True to return fully qualified name as a
-        string 'name at mapset' otherwise directory { 'name', 'mapset' }
-        is returned
+        :param bool fullyQualified: True to return fully qualified name
+                                    as a string 'name at mapset' otherwise
+                                    directory { 'name', 'mapset' } is
+                                    returned
 
-        @return string / directory
+        :return: string / directory
         """
         if fullyQualified:
             return self.name
@@ -244,15 +249,15 @@
                          'mapset' : '' }
         
     def IsActive(self):
-        """!Check if layer is activated for rendering"""
+        """Check if layer is activated for rendering"""
         return self.active
 
     def IsHidden(self):
-        """!Check if layer is hidden"""
+        """Check if layer is hidden"""
         return self.hidden
     
     def SetType(self, ltype):
-        """!Set layer type"""
+        """Set layer type"""
         if ltype not in utils.command2ltype.values() + ['overlay', 'command']:
             raise GException(_("Unsupported map layer type '%s'") % ltype)
         
@@ -266,19 +271,19 @@
         self.type = ltype
 
     def SetName(self, name):
-        """!Set layer name"""
+        """Set layer name"""
         self.name = name
         
     def SetActive(self, enable = True):
-        """!Active or deactive layer"""
+        """Active or deactive layer"""
         self.active = bool(enable)
 
     def SetHidden(self, enable = False):
-        """!Hide or show map layer in Layer Manager"""
+        """Hide or show map layer in Layer Manager"""
         self.hidden = bool(enable)
 
     def SetOpacity(self, value):
-        """!Set opacity value"""
+        """Set opacity value"""
         if value < 0:
             value = 0.
         elif value > 1:
@@ -287,7 +292,7 @@
         self.opacity = float(value)
         
     def SetCmd(self, cmd):
-        """!Set new command for layer"""
+        """Set new command for layer"""
         if self.type == 'command':
             self.cmd = []
             for c in cmd:
@@ -300,49 +305,50 @@
         self.forceRender = True
 
     def SetEnvironment(self, environ):
-        """!Sets environment for rendering."""
+        """Sets environment for rendering."""
         self.environ = environ
 
     def IsDownloading(self):
-        """!Is data downloading from web server e. g. wms"""
+        """Is data downloading from web server e. g. wms"""
         if self.renderMgr is None:
             return False
         else:
             return self.renderMgr.IsDownloading()
 
     def AbortThread(self):
-        """!Abort running thread e. g. downloading data"""
+        """Abort running thread e. g. downloading data"""
         if self.renderMgr is None:
             return
         else:
             self.renderMgr.Abort()
 
     def GetRenderMgr(self):
-        """!Get render manager """
+        """Get render manager """
         return self.renderMgr
 
 class MapLayer(Layer):
     def __init__(self, ltype, cmd, Map, name = None,
                  active = True, hidden = False, opacity = 1.0): 
-        """!Represents map layer in the map canvas
+        """Represents map layer in the map canvas
         
-        @param ltype layer type ('raster', 'vector', 'command', etc.)
-        @param cmd GRASS command to render layer,
-        given as list, e.g. ['d.rast', 'map=elevation at PERMANENT']
-        @param Map render.Map instance
-        @param name layer name, e.g. 'elevation at PERMANENT' (for layer tree) or None
-        @param active layer is active, will be rendered only if True
-        @param hidden layer is hidden, won't be listed in Layer Manager if True
-        @param opacity layer opacity <0;1>
+        :param ltype: layer type ('raster', 'vector', 'command', etc.)
+        :param cmd: GRASS command to render layer,
+                    given as list, e.g. ['d.rast',
+                    'map=elevation at PERMANENT']
+        :param map: render.Map instance
+        :param name: layer name, e.g. 'elevation at PERMANENT' (for layer tree) or None
+        :param active: layer is active, will be rendered only if True
+        :param hidden: layer is hidden, won't be listed in Layer Manager if True
+        :param opacity: layer opacity <0;1>
         """
         Layer.__init__(self, ltype, cmd, Map, name,
                        active, hidden, opacity)
         
     def GetMapset(self):
-        """!Get mapset of map layer
+        """Get mapset of map layer
         
-        @return mapset name
-        @return '' on error (no name given)
+        :return: mapset name
+        :return: '' on error (no name given)
         """
         if not self.name:
             return ''
@@ -355,16 +361,17 @@
 class Overlay(Layer):
     def __init__(self, id, ltype, cmd, Map,
                  active = True, hidden = True, opacity = 1.0):
-        """!Represents overlay displayed in map canvas
+        """Represents overlay displayed in map canvas
         
-        @param id overlay id (for PseudoDC)
-        @param type overlay type ('barscale', 'legend', etc.)
-        @param cmd GRASS command to render overlay,
-        given as list, e.g. ['d.legend', 'rast=elevation at PERMANENT']
-        @param Map render.Map instance
-        @param active layer is active, will be rendered only if True
-        @param hidden layer is hidden, won't be listed in Layer Manager if True
-        @param opacity layer opacity <0;1>
+        :param id: overlay id (for PseudoDC)
+        :param type: overlay type ('barscale', 'legend', etc.)
+        :param cmd: GRASS command to render overlay,
+                    given as list, e.g. ['d.legend',
+                    'rast=elevation at PERMANENT']
+        :param map: render.Map instance
+        :param active: layer is active, will be rendered only if True
+        :param hidden: layer is hidden, won't be listed in Layer Manager if True
+        :param opacity: layer opacity <0;1>
         """
         Layer.__init__(self, 'overlay', cmd, Map, ltype,
                        active, hidden, opacity)
@@ -372,9 +379,9 @@
         
 class Map(object):
     def __init__(self, gisrc = None):
-        """!Map composition (stack of map layers and overlays)
+        """Map composition (stack of map layers and overlays)
         
-        @param gisrc alternative gisrc (used eg. by georectifier)
+        :param gisrc: alternative gisrc (used eg. by georectifier)
         """
         # region/extent settigns
         self.wind      = dict() # WIND settings (wind file)
@@ -419,11 +426,11 @@
         self.updateProgress = Signal('Map.updateProgress')
 
     def GetProjInfo(self):
-        """!Get projection info"""
+        """Get projection info"""
         return self.projinfo
     
     def _projInfo(self):
-        """!Return region projection and map units information
+        """Return region projection and map units information
         """
         projinfo = dict()
         if not grass.find_program('g.proj', '--help'):
@@ -451,7 +458,7 @@
         return projinfo
     
     def GetWindow(self):
-        """!Read WIND file and set up self.wind dictionary"""
+        """Read WIND file and set up self.wind dictionary"""
         # FIXME: duplicated region WIND == g.region (at least some values)
         env = grass.gisenv()
         filename = os.path.join (env['GISDBASE'],
@@ -479,7 +486,7 @@
         return self.wind
         
     def AdjustRegion(self):
-        """!Adjusts display resolution to match monitor size in
+        """Adjusts display resolution to match monitor size in
         pixels. Maintains constant display resolution, not related to
         computational region. Do NOT use the display resolution to set
         computational resolution. Set computational resolution through
@@ -499,7 +506,7 @@
         return self.region
 
     def AlignResolution(self):
-        """!Sets display extents to even multiple of current
+        """Sets display extents to even multiple of current
         resolution defined in WIND file from SW corner. This must be
         done manually as using the -a flag can produce incorrect
         extents.
@@ -532,7 +539,7 @@
         return new
 
     def AlignExtentFromDisplay(self):
-        """!Align region extent based on display size from center
+        """Align region extent based on display size from center
         point"""
         # calculate new bounding box based on center of display
         if self.region["ewres"] > self.region["nsres"]:
@@ -558,9 +565,9 @@
             self.region['s'] = max(self.region['s'], -90.0)
         
     def ChangeMapSize(self, size):
-        """!Change size of rendered map.
+        """Change size of rendered map.
         
-        @param width,height map size given as tuple
+        :param size: map size given as tuple
         """
         try:
             self.width  = int(size[0])
@@ -578,24 +585,24 @@
     def GetRegion(self, rast=None, zoom=False, vect=None, rast3d=None, regionName=None,
                   n=None, s=None, e=None, w=None, default=False,
                   update=False, add3d=False):
-        """!Get region settings (g.region -upgc)
+        """Get region settings (g.region -upgc)
         
         Optionally extent, raster or vector map layer can be given.
         
-        @param rast list of raster maps
-        @param zoom zoom to raster map (ignore NULLs)
-        @param vect list of vector maps
-        @param rast3d 3d raster map (not list, no support of multiple 3d rasters in g.region)
-        @param regionName  named region or None
-        @param n,s,e,w force extent
-        @param default force default region settings
-        @param update if True update current display region settings
-        @param add3d add 3d region settings
+        :param rast: list of raster maps
+        :param zoom: zoom to raster map (ignore NULLs)
+        :param vect: list of vector maps
+        :param rast3d: 3d raster map (not list, no support of multiple 3d rasters in g.region)
+        :param regionName:  named region or None
+        :param n,s,e,w: force extent
+        :param default: force default region settings
+        :param update: if True update current display region settings
+        :param add3d: add 3d region settings
         
-        @return region settings as dictionary, e.g. {
+        :return: region settings as dictionary, e.g. {
         'n':'4928010', 's':'4913700', 'w':'589980',...}
         
-        @see GetCurrentRegion()
+        :func:`GetCurrentRegion()`
         """
         region = {}
 
@@ -675,21 +682,21 @@
         return region
 
     def GetCurrentRegion(self):
-        """!Get current display region settings
+        """Get current display region settings
         
-        @see GetRegion()
+        :func:`GetRegion()`
         """
         return self.region
 
     def SetRegion(self, windres = False, windres3 = False):
-        """!Render string for GRASS_REGION env. variable, so that the
+        """Render string for GRASS_REGION env. variable, so that the
         images will be rendered from desired zoom level.
         
-        @param windres uses resolution from WIND file rather than
-        display (for modules that require set resolution like
-        d.rast.num)
+        :param windres: uses resolution from WIND file rather than
+                        display (for modules that require set resolution
+                        like d.rast.num)
 
-        @return String usable for GRASS_REGION variable or None
+        :return: String usable for GRASS_REGION variable or None
         """
         grass_region = ""
         
@@ -778,16 +785,16 @@
     
     def GetListOfLayers(self, ltype = None, mapset = None, name = None,
                         active = None, hidden = None):
-        """!Returns list of layers of selected properties or list of
+        """Returns list of layers of selected properties or list of
         all layers.
 
-        @param ltype layer type, e.g. raster/vector/wms/overlay (value or tuple of values)
-        @param mapset all layers from given mapset (only for maplayers)
-        @param name all layers with given name
-        @param active only layers with 'active' attribute set to True or False
-        @param hidden only layers with 'hidden' attribute set to True or False
+        :param ltype: layer type, e.g. raster/vector/wms/overlay (value or tuple of values)
+        :param mapset: all layers from given mapset (only for maplayers)
+        :param name: all layers with given name
+        :param active: only layers with 'active' attribute set to True or False
+        :param hidden: only layers with 'hidden' attribute set to True or False
         
-        @return list of selected layers
+        :return: list of selected layers
         """
         selected = []
         
@@ -845,12 +852,12 @@
         return selected
 
     def _renderLayers(self, env, force = False, overlaysOnly = False):
-        """!Render all map layers into files
+        """Render all map layers into files
 
-        @param force True to force rendering
-        @param overlaysOnly True to render only overlays
+        :param bool force: True to force rendering
+        :param bool overlaysOnly: True to render only overlays
 
-        @return list of maps, masks and opacities
+        :return: list of maps, masks and opacities
         """
         maps = list()
         masks = list()
@@ -897,23 +904,24 @@
         return maps, masks, opacities
         
     def GetMapsMasksAndOpacities(self, force, windres, env):
-        """!
+        """
         Used by Render function.
         
-        @return maps, masks, opacities
+        :return: maps, masks, opacities
         """
         return self._renderLayers(force=force, env=env)
     
     def Render(self, force = False, windres = False):
-        """!Creates final image composite
+        """Creates final image composite
         
         This function can conditionaly use high-level tools, which
         should be avaliable in wxPython library
         
-        @param force force rendering
-        @param windres use region resolution (True) otherwise display resolution
+        :param force: force rendering
+        :param windres: use region resolution (True) otherwise display
+                        resolution
         
-        @return name of file with rendered image or None
+        :return: name of file with rendered image or None
         """
         wx.BeginBusyCursor()
         env = os.environ.copy()
@@ -979,19 +987,19 @@
     def AddLayer(self, ltype, command, name = None,
                  active = True, hidden = False, opacity = 1.0, render = False,
                  pos = -1):
-        """!Adds generic map layer to list of layers
+        """Adds generic map layer to list of layers
         
-        @param ltype layer type ('raster', 'vector', etc.)
-        @param command  GRASS command given as list
-        @param name layer name
-        @param active layer render only if True
-        @param hidden layer not displayed in layer tree if True
-        @param opacity opacity level range from 0(transparent) - 1(not transparent)
-        @param render render an image if True
-        @param pos position in layer list (-1 for append)
+        :param ltype: layer type ('raster', 'vector', etc.)
+        :param command:  GRASS command given as list
+        :param name: layer name
+        :param active: layer render only if True
+        :param hidden: layer not displayed in layer tree if True
+        :param opacity: opacity level range from 0(transparent) - 1(not transparent)
+        :param render: render an image if True
+        :param pos: position in layer list (-1 for append)
         
-        @return new layer on success
-        @return None on failure
+        :return: new layer on success
+        :return: None on failure
         """
         wx.BeginBusyCursor()
         # opacity must be <0;1>
@@ -1023,21 +1031,21 @@
         return layer
 
     def DeleteAllLayers(self, overlay = False):
-        """!Delete all layers 
+        """Delete all layers 
 
-        @param overlay True to delete also overlayes
+        :param overlay: True to delete also overlayes
         """
         self.layers = []
         if overlay:
             self.overlays = []
         
     def DeleteLayer(self, layer, overlay = False):
-        """!Removes layer from list of layers
+        """Removes layer from list of layers
         
-        @param layer layer instance in layer tree
-        @param overlay delete overlay (use self.DeleteOverlay() instead)
+        :param layer: layer instance in layer tree
+        :param overlay: delete overlay (use self.DeleteOverlay() instead)
 
-        @return removed layer on success or None
+        :return: removed layer on success or None
         """
         Debug.msg (3, "Map.DeleteLayer(): name=%s" % layer.name)
         
@@ -1074,16 +1082,16 @@
         Debug.msg(5, "Map.SetLayers(): layers=%s" % (layerNameList))
 
     def ChangeLayer(self, layer, render = False, **kargs):
-        """!Change map layer properties
+        """Change map layer properties
 
-        @param layer map layer instance
-        @param ltype layer type ('raster', 'vector', etc.)
-        @param command  GRASS command given as list
-        @param name layer name
-        @param active layer render only if True
-        @param hidden layer not displayed in layer tree if True
-        @param opacity opacity level range from 0(transparent) - 1(not transparent)
-        @param render render an image if True
+        :param layer: map layer instance
+        :param ltype: layer type ('raster', 'vector', etc.)
+        :param command:  GRASS command given as list
+        :param name: layer name
+        :param active: layer render only if True
+        :param hidden: layer not displayed in layer tree if True
+        :param opacity: opacity level range from 0(transparent) - 1(not transparent)
+        :param render: render an image if True
         """
         Debug.msg (3, "Map.ChangeLayer(): layer=%s" % layer.name)
         
@@ -1112,10 +1120,10 @@
         return layer
 
     def ChangeOpacity(self, layer, opacity):
-        """!Changes opacity value of map layer
+        """Changes opacity value of map layer
 
-        @param layer layer instance in layer tree
-        @param opacity opacity level <0;1>
+        :param layer: layer instance in layer tree
+        :param opacity: opacity level <0;1>
         """
         # opacity must be <0;1>
         if opacity < 0: opacity = 0
@@ -1126,10 +1134,10 @@
                    (layer.name, layer.opacity))
 
     def ChangeLayerActive(self, layer, active):
-        """!Enable or disable map layer
+        """Enable or disable map layer
         
-        @param layer layer instance in layer tree
-        @param active to be rendered (True)
+        :param layer: layer instance in layer tree
+        :param active: to be rendered (True)
         """
         layer.active = active
         
@@ -1137,25 +1145,27 @@
                    (layer.name, layer.active))
 
     def ChangeLayerName (self, layer, name):
-        """!Change name of the layer
+        """Change name of the layer
         
-        @param layer layer instance in layer tree
-        @param name  layer name to set up
+        :param layer: layer instance in layer tree
+        :param name:  layer name to set up
         """
         Debug.msg (3, "Map.ChangeLayerName(): from=%s to=%s" % \
                    (layer.name, name))
         layer.name =  name
 
     def RemoveLayer(self, name = None, id = None):
-        """!Removes layer from layer list
+        """Removes layer from layer list
         
         Layer is defined by name at mapset or id.
         
-        @param name layer name (must be unique)
-        @param id layer index in layer list    def __init__(self, targetFile, region, bandsNum, gdalDriver, fillValue = None):
+        :param name: layer name (must be unique)
+        :param id: layer index in layer list def __init__(self,
+                   targetFile, region, bandsNum, gdalDriver,
+                   fillValue = None):
 
-        @return removed layer on success
-        @return None on failure
+        :return: removed layer on success
+        :return: None on failure
         """
         # delete by name
         if name:
@@ -1174,13 +1184,13 @@
         return None
 
     def GetLayerIndex(self, layer, overlay = False):
-        """!Get index of layer in layer list.
+        """Get index of layer in layer list.
         
-        @param layer layer instace in layer tree
-        @param overlay use list of overlays instead
+        :param layer: layer instace in layer tree
+        :param overlay: use list of overlays instead
         
-        @return layer index
-        @return -1 if layer not found
+        :return: layer index
+        :return: -1 if layer not found
         """
         if overlay:
             list = self.overlays
@@ -1194,18 +1204,18 @@
 
     def AddOverlay(self, id, ltype, command,
                    active = True, hidden = True, opacity = 1.0, render = False):
-        """!Adds overlay (grid, barscale, legend, etc.) to list of
+        """Adds overlay (grid, barscale, legend, etc.) to list of
         overlays
         
-        @param id overlay id (PseudoDC)
-        @param ltype overlay type (barscale, legend)
-        @param command GRASS command to render overlay
-        @param active overlay activated (True) or disabled (False)
-        @param hidden overlay is not shown in layer tree (if True)
-        @param render render an image (if True)
+        :param id: overlay id (PseudoDC)
+        :param ltype: overlay type (barscale, legend)
+        :param command: GRASS command to render overlay
+        :param active: overlay activated (True) or disabled (False)
+        :param hidden: overlay is not shown in layer tree (if True)
+        :param render: render an image (if True)
         
-        @return new layer on success
-        @return None on failure
+        :return: new layer on success
+        :return: None on failure
         """
         Debug.msg (2, "Map.AddOverlay(): cmd=%s, render=%d" % (command, render))
         overlay = Overlay(id = id, ltype = ltype, cmd = command, Map = self,
@@ -1221,18 +1231,18 @@
         return self.overlays[-1]
 
     def ChangeOverlay(self, id, render = False, **kargs):
-        """!Change overlay properities
+        """Change overlay properities
         
         Add new overlay if overlay with 'id' doesn't exist.
         
-        @param id overlay id (PseudoDC)
-        @param ltype overlay ltype (barscale, legend)
-        @param command GRASS command to render overlay
-        @param active overlay activated (True) or disabled (False)
-        @param hidden overlay is not shown in layer tree (if True)
-        @param render render an image (if True)
+        :param id: overlay id (PseudoDC)
+        :param ltype: overlay ltype (barscale, legend)
+        :param command: GRASS command to render overlay
+        :param active: overlay activated (True) or disabled (False)
+        :param hidden: overlay is not shown in layer tree (if True)
+        :param render: render an image (if True)
         
-        @return new layer on success
+        :return: new layer on success
         """
         overlay = self.GetOverlay(id, list = False)
         if  overlay is None:
@@ -1260,15 +1270,15 @@
         return overlay
 
     def GetOverlay(self, id, list = False):
-        """!Return overlay(s) with 'id'
+        """Return overlay(s) with 'id'
         
-        @param id overlay id
-        @param list return list of overlays of True
+        :param id: overlay id
+        :param list: return list of overlays of True
         otherwise suppose 'id' to be unique
         
-        @return list of overlays (list=True)
-        @return overlay (list=False)
-        @return None (list=False) if no overlay or more overlays found
+        :return: list of overlays (list=True)
+        :return: overlay (list=False)
+        :return: None (list=False) if no overlay or more overlays found
         """
         ovl = []
         for overlay in self.overlays:
@@ -1284,11 +1294,11 @@
         return ovl
 
     def DeleteOverlay(self, overlay):
-        """!Delete overlay
+        """Delete overlay
         
-        @param overlay overlay layer
+        :param overlay: overlay layer
         
-        @return removed overlay on success or None
+        :return: removed overlay on success or None
         """
         return self.DeleteLayer(overlay, overlay = True)
 
@@ -1301,7 +1311,7 @@
             llist.remove(layer)
         
     def Clean(self):
-        """!Clean layer stack - go trough all layers and remove them
+        """Clean layer stack - go trough all layers and remove them
         from layer list.
 
         Removes also mapfile and maskfile.
@@ -1310,22 +1320,22 @@
         self._clean(self.overlays)
         
     def ReverseListOfLayers(self):
-        """!Reverse list of layers"""
+        """Reverse list of layers"""
         return self.layers.reverse()
 
     def RenderOverlays(self, force):
-        """!Render overlays only (for nviz)"""
+        """Render overlays only (for nviz)"""
         for layer in self.overlays:
             if force or layer.forceRender:
                 layer.Render()
 
     def AbortAllThreads(self):
-        """!Abort all layers threads e. g. donwloading data"""
+        """Abort all layers threads e. g. donwloading data"""
         for l in self.layers + self.overlays:
             l.AbortThread()
 
     def ReportProgress(self, layer):
-        """!Calculates progress in rendering/downloading
+        """Calculates progress in rendering/downloading
         and emits signal to inform progress bar about progress.
         """
         if self.progressInfo is None or layer is None:

Modified: grass/trunk/gui/wxpython/core/settings.py
===================================================================
--- grass/trunk/gui/wxpython/core/settings.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/settings.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package core.settings
 
 @brief Default GUI settings
@@ -29,7 +29,7 @@
 from core.utils import GetSettingsPath, PathJoin, rgb2str, _
 
 class Settings:
-    """!Generic class where to store settings"""
+    """Generic class where to store settings"""
     def __init__(self):
         # settings file
         self.filePath = os.path.join(GetSettingsPath(), 'wx')
@@ -51,7 +51,7 @@
         self._internalSettings() # -> self.internalSettings
 
     def _generateLocale(self):
-        """!Generate locales
+        """Generate locales
         """
         try:
             self.locs = os.listdir(os.path.join(os.environ['GISBASE'], 'locale'))
@@ -66,7 +66,7 @@
         return 'system'
         
     def _defaultSettings(self):
-        """!Define default settings
+        """Define default settings
         """
         try:
             projFile = PathJoin(os.environ["GRASS_PROJSHARE"], 'epsg')
@@ -826,7 +826,7 @@
             self.defaultSettings['general']['defWindowPos']['enabled'] = False
 
     def _internalSettings(self):
-        """!Define internal settings (based on user settings)
+        """Define internal settings (based on user settings)
         """
         self.internalSettings = {}
         for group in self.userSettings.keys():
@@ -919,7 +919,7 @@
                                                                           _("circle"))
 
     def ReadSettingsFile(self, settings = None):
-        """!Reads settings file (mapset, location, gisdbase)"""
+        """Reads settings file (mapset, location, gisdbase)"""
         if settings is None:
             settings = self.userSettings
         
@@ -934,10 +934,10 @@
             os.environ["GRASS_ENCODING"] = enc
         
     def _readFile(self, filename, settings = None):
-        """!Read settings from file to dict
+        """Read settings from file to dict
 
-        @param filename settings file path
-        @param settings dict where to store settings (None for self.userSettings)
+        :param filename: settings file path
+        :param settings: dict where to store settings (None for self.userSettings)
         """
         if settings is None:
             settings = self.userSettings
@@ -982,7 +982,7 @@
         fd.close()
         
     def SaveToFile(self, settings = None):
-        """!Save settings to the file"""
+        """Save settings to the file"""
         if settings is None:
             settings = self.userSettings
         
@@ -1034,7 +1034,7 @@
         return self.filePath
         
     def _parseValue(self, value, read = False):
-        """!Parse value to be store in settings file"""
+        """Parse value to be store in settings file"""
         if read: # -> read settings (cast values)
             if value == 'True':
                 value = True
@@ -1064,16 +1064,16 @@
         return value
 
     def Get(self, group, key = None, subkey = None, internal = False):
-        """!Get value by key/subkey
+        """Get value by key/subkey
 
         Raise KeyError if key is not found
         
-        @param group settings group
-        @param key (value, None)
-        @param subkey (value, list or None)
-        @param internal use internal settings instead
+        :param group: settings group
+        :param key: (value, None)
+        :param subkey: (value, list or None)
+        :param internal: use internal settings instead
 
-        @return value
+        :return: value
         """
         if internal is True:
             settings = self.internalSettings
@@ -1098,15 +1098,15 @@
                 (group, key, subkey)
         
     def Set(self, group, value, key = None, subkey = None, internal = False):
-        """!Set value of key/subkey
+        """Set value of key/subkey
         
         Raise KeyError if group/key is not found
         
-        @param group settings group
-        @param key key (value, None)
-        @param subkey subkey (value, list or None)
-        @param value value
-        @param internal use internal settings instead
+        :param group: settings group
+        :param key: key (value, None)
+        :param subkey: subkey (value, list or None)
+        :param value: value
+        :param internal: use internal settings instead
         """
         if internal is True:
             settings = self.internalSettings
@@ -1129,16 +1129,16 @@
             raise GException("%s '%s:%s:%s'" % (_("Unable to set "), group, key, subkey))
         
     def Append(self, dict, group, key, subkey, value, overwrite = True):
-        """!Set value of key/subkey
+        """Set value of key/subkey
 
         Create group/key/subkey if not exists
         
-        @param dict settings dictionary to use
-        @param group settings group
-        @param key key
-        @param subkey subkey (value or list)
-        @param value value
-        @param overwrite True to overwrite existing value
+        :param dict: settings dictionary to use
+        :param group: settings group
+        :param key: key
+        :param subkey: subkey (value or list)
+        :param value: value
+        :param overwrite: True to overwrite existing value
         """
 
         hasValue = True
@@ -1176,13 +1176,13 @@
                     ' (' + group + ':' + key + ':' + subkey + ')'
         
     def GetDefaultSettings(self):
-        """!Get default user settings"""
+        """Get default user settings"""
         return self.defaultSettings
 
     def Reset(self, key = None):
-        """!Reset to default settings
+        """Reset to default settings
 
-        @param key key in settings dict (None for all keys)
+        :param key: key in settings dict (None for all keys)
         """
         if not key:
             self.userSettings = copy.deepcopy(self.defaultSettings)

Modified: grass/trunk/gui/wxpython/core/toolboxes.py
===================================================================
--- grass/trunk/gui/wxpython/core/toolboxes.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/toolboxes.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package core.toolboxes
 
 @brief Functions for modifying menu from default/user toolboxes specified in XML files
@@ -55,7 +55,7 @@
 
 
 def toolboxesOutdated():
-    """!Removes auto-generated menudata.xml
+    """Removes auto-generated menudata.xml
     to let gui regenerate it next time it starts."""
     path = os.path.join(GetSettingsPath(), 'toolboxes', 'menudata.xml')
     if os.path.exists(path):
@@ -63,11 +63,11 @@
 
 
 def getMenudataFile(userRootFile, newFile, fallback):
-    """!Returns path to XML file for building menu or another tree.
+    """Returns path to XML file for building menu or another tree.
 
-    Creates toolbox directory where user defined toolboxes should be located.
-    Checks whether it is needed to create new XML file (user changed toolboxes)
-    or the already generated file could be used.
+    Creates toolbox directory where user defined toolboxes should be
+    located. Checks whether it is needed to create new XML file (user
+    changed toolboxes) or the already generated file could be used.
     If something goes wrong during building or user doesn't modify menu,
     default file (from distribution) is returned.
     """
@@ -146,7 +146,7 @@
 
 
 def _setupToolboxes():
-    """!Create 'toolboxes' directory if doesn't exist."""
+    """Create 'toolboxes' directory if doesn't exist."""
     basePath = GetSettingsPath()
     path = os.path.join(basePath, 'toolboxes')
     if not os.path.exists(basePath):
@@ -158,7 +158,7 @@
 
 
 def _createPath(path):
-    """!Creates path (for toolboxes) if it doesn't exist'"""
+    """Creates path (for toolboxes) if it doesn't exist'"""
     if not os.path.exists(path):
         try:
             os.mkdir(path)
@@ -172,15 +172,15 @@
 
 
 def createTree(distributionRootFile, userRootFile, userDefined=True):
-    """!Creates XML file with data for menu.
+    """Creates XML file with data for menu.
 
     Parses toolboxes files from distribution and from users,
     puts them together, adds metadata to modules and convert
     tree to previous format used for loading menu.
 
-    @param userDefined use toolboxes defined by user or not (during compilation)
+    :param userDefined: use toolboxes defined by user or not (during compilation)
 
-    @return ElementTree instance
+    :return: ElementTree instance
     """
     if userDefined and userRootFile:
         mainMenu = etree.parse(userRootFile)
@@ -206,15 +206,15 @@
 
 def toolboxes2menudata(mainMenu, toolboxes, userToolboxes,
                        wxguiItems, moduleItems):
-    """!Creates XML file with data for menu.
+    """Creates XML file with data for menu.
 
     Parses toolboxes files from distribution and from users,
     puts them together, adds metadata to modules and convert
     tree to previous format used for loading menu.
 
-    @param userDefined use toolboxes defined by user or not (during compilation)
+    :param userDefined: use toolboxes defined by user or not (during compilation)
 
-    @return ElementTree instance
+    :return: ElementTree instance
     """
     root = mainMenu.getroot()
 
@@ -248,7 +248,7 @@
 
 
 def _indent(elem, level=0):
-    """!Helper function to fix indentation of XML files."""
+    """Helper function to fix indentation of XML files."""
     i = "\n" + level * "  "
     if len(elem):
         if not elem.text or not elem.text.strip():
@@ -265,7 +265,7 @@
 
 
 def expandAddons(tree):
-    """!Expands addons element.
+    """Expands addons element.
     """
     root = tree.getroot()
     _expandAddonsItem(root)
@@ -276,12 +276,12 @@
 
 
 def _expandToolboxes(node, toolboxes):
-    """!Expands tree with toolboxes.
+    """Expands tree with toolboxes.
 
     Function is called recursively.
 
-    @param node tree node where to look for subtoolboxes to be expanded
-    @param toolboxes tree of toolboxes to be used for expansion
+    :param node: tree node where to look for subtoolboxes to be expanded
+    :param toolboxes: tree of toolboxes to be used for expansion
 
     >>> menu = etree.fromstring('''
     ... <toolbox name="Raster">
@@ -361,7 +361,7 @@
 
 
 def _expandUserToolboxesItem(node, toolboxes):
-    """!Expand tag 'user-toolboxes-list'.
+    """Expand tag 'user-toolboxes-list'.
 
     Include all user toolboxes.
 
@@ -387,7 +387,7 @@
 
 
 def _removeUserToolboxesItem(root):
-    """!Removes tag 'user-toolboxes-list' if there are no user toolboxes.
+    """Removes tag 'user-toolboxes-list' if there are no user toolboxes.
 
     >>> tree = etree.fromstring('<toolbox><items><user-toolboxes-list/></items></toolbox>')
     >>> _removeUserToolboxesItem(tree)
@@ -417,10 +417,11 @@
 
 
 def _expandAddonsItem(node):
-    """!Expands addons element with currently installed addons.
+    """Expands addons element with currently installed addons.
 
-    Note: there is no mechanism yet to tell the gui to rebuild the menudata.xml
-    file when new addons are added/removed.
+    .. note::
+        there is no mechanism yet to tell the gui to rebuild the
+        menudata.xml file when new addons are added/removed.
     """
     # no addonsTag -> do nothing
     addonsTags = node.findall('.//addons')
@@ -456,7 +457,7 @@
 
 
 def _expandItems(node, items, itemTag):
-    """!Expand items from file
+    """Expand items from file
 
     >>> tree = etree.fromstring('<items><module-item name="g.region"></module-item></items>')
     >>> items = etree.fromstring('<module-items><module-item name="g.region"><module>g.region</module><description>GRASS region management</description></module-item></module-items>')
@@ -486,7 +487,7 @@
 
 
 def _expandRuntimeModules(node):
-    """!Add information to modules (desc, keywords)
+    """Add information to modules (desc, keywords)
     by running them with --interface-description.
 
     >>> tree = etree.fromstring('<items>'
@@ -518,7 +519,7 @@
 
 
 def _escapeXML(text):
-    """!Helper function for correct escaping characters for XML.
+    """Helper function for correct escaping characters for XML.
 
     Duplicate function in core/toolboxes and probably also in man compilation
     and some existing Python package.
@@ -530,10 +531,10 @@
 
 
 def _loadMetadata(module):
-    """!Load metadata to modules.
+    """Load metadata to modules.
 
-    @param module module name
-    @return (description, keywords as a list)
+    :param module: module name
+    :return: (description, keywords as a list)
     """
     try:
         task = gtask.parse_interface(module)
@@ -545,7 +546,7 @@
 
 
 def _addHandlers(node):
-    """!Add missing handlers to modules"""
+    """Add missing handlers to modules"""
     for n in node.findall('.//module-item'):
         if n.find('handler') is None:
             handlerNode = etree.SubElement(parent=n, tag='handler')
@@ -559,7 +560,7 @@
 
 
 def _convertTag(node, old, new):
-    """!Converts tag name.
+    """Converts tag name.
 
     >>> tree = etree.fromstring('<toolboxes><toolbox><items><module-item/></items></toolbox></toolboxes>')
     >>> _convertTag(tree, 'toolbox', 'menu')
@@ -586,7 +587,7 @@
 
 
 def _convertTree(root):
-    """!Converts tree to be the form readable by core/menutree.py.
+    """Converts tree to be the form readable by core/menutree.py.
 
     >>> tree = etree.fromstring('<toolbox name="MainMenu"><label>Main menu</label><items><toolbox><label>Raster</label><items><module-item name="g.region"><module>g.region</module></module-item></items></toolbox></items></toolbox>')
     >>> _convertTree(tree)
@@ -614,12 +615,12 @@
 
 
 def _getXMLString(root):
-    """!Converts XML tree to string
+    """Converts XML tree to string
 
     Since it is usually requier, this function adds a comment (about
     autogenerated file) to XML file.
 
-    @return XML as string
+    :return: XML as string
     """
     xml = etree.tostring(root, encoding='UTF-8')
     return xml.replace("<?xml version='1.0' encoding='UTF-8'?>\n",
@@ -633,20 +634,21 @@
     When using gettext with dynamically defined underscore function
     (`_("For translation")`), doctest does not work properly.
 
-    One option is to use `import as` instead of dynamically defined underscore
-    function but this requires change all modules which are used by tested
-    module.
+    One option is to use `import as` instead of dynamically defined
+    underscore function but this requires change all modules which are
+    used by tested module.
 
-    The second option is to define dummy underscore function and one other
-    function which creates the right environment to satisfy all. This is done
-    by this function. Moreover, `sys.displayhook` and also
+    The second option is to define dummy underscore function and one
+    other function which creates the right environment to satisfy all.
+    This is done by this function. Moreover, `sys.displayhook` and also
     `sys.__displayhook__` needs to be redefined too (the later one probably
     should not be newer redefined but some cases just requires that).
 
-    GRASS specific note is that wxGUI switched to use imported underscore
-    function for translation. However, GRASS Python libraries still uses the
-    dynamically defined underscore function, so this workaround function is
-    still needed when you import something from GRASS Python libraries.
+    GRASS specific note is that wxGUI switched to use imported
+    underscore function for translation. However, GRASS Python libraries
+    still uses the dynamically defined underscore function, so this
+    workaround function is still needed when you import something from
+    GRASS Python libraries.
     """
     def new_displayhook(string):
         """A replacement for default `sys.displayhook`"""
@@ -667,7 +669,7 @@
 def doc_test():
     """Tests the module using doctest
 
-    @return a number of failed tests
+    :return: a number of failed tests
     """
     import doctest
     do_doctest_gettext_workaround()
@@ -675,8 +677,8 @@
 
 
 def module_test():
-    """Tests the module using test files included in the current directory and
-    in files from distribution.
+    """Tests the module using test files included in the current
+    directory and in files from distribution.
     """
     toolboxesFile   = os.path.join(WXGUIDIR, 'xml', 'toolboxes.xml')
     userToolboxesFile = 'test.toolboxes_user_toolboxes.xml'

Modified: grass/trunk/gui/wxpython/core/treemodel.py
===================================================================
--- grass/trunk/gui/wxpython/core/treemodel.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/treemodel.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package core.treemodel
 
 @brief tree structure model (used for menu, search tree)
@@ -18,7 +18,7 @@
 
 
 class TreeModel(object):
-    """!Class represents a tree structure with hidden root.
+    """Class represents a tree structure with hidden root.
     
     TreeModel is used together with TreeView class to display results in GUI.
     The functionality is not complete, only needed methods are implemented.
@@ -53,9 +53,9 @@
         * xxx : 1
     """
     def __init__(self, nodeClass):
-        """!Constructor creates root node.
+        """Constructor creates root node.
 
-        @param nodeClass class which is used for creating nodes
+        :param nodeClass: class which is used for creating nodes
         """
         self._root = nodeClass('root')
         self.nodeClass = nodeClass
@@ -65,13 +65,13 @@
         return self._root
 
     def AppendNode(self, parent, label, data=None):
-        """!Create node and append it to parent node.
+        """Create node and append it to parent node.
         
-        @param parent parent node of the new node
-        @param label node label
-        @param data optional node data
+        :param parent: parent node of the new node
+        :param label: node label
+        :param data: optional node data
         
-        @return new node
+        :return: new node
         """
         node = self.nodeClass(label=label, data=data)
         parent.children.append(node)
@@ -79,30 +79,30 @@
         return node
 
     def SearchNodes(self, **kwargs):
-        """!Search nodes according to specified attributes."""
+        """Search nodes according to specified attributes."""
         nodes = []
         self._searchNodes(node=self.root, foundNodes=nodes, **kwargs)
         return nodes
         
     def _searchNodes(self, node, foundNodes, **kwargs):
-        """!Helper method for searching nodes."""
+        """Helper method for searching nodes."""
         if node.match(**kwargs):
             foundNodes.append(node)
         for child in node.children:
             self._searchNodes(node=child, foundNodes=foundNodes, **kwargs)
 
     def GetNodeByIndex(self, index):
-        """!Method used for communication between view (VirtualTree) and model.
+        """Method used for communication between view (VirtualTree) and model.
 
-        @param index index of node, as defined in VirtualTree doc
-        (e.g. root ~ [], second node of a first node ~ [0, 1])
+        :param index: index of node, as defined in VirtualTree doc
+                      (e.g. root ~ [], second node of a first node ~ [0, 1])
         """
         if len(index) == 0:
             return self.root
         return self._getNode(self.root, index)
         
     def GetIndexOfNode(self, node):
-        """!Method used for communication between view (VirtualTree) and model."""
+        """Method used for communication between view (VirtualTree) and model."""
         index = []
         return self._getIndex(node, index)
         
@@ -115,7 +115,7 @@
         
         
     def GetChildrenByIndex(self, index):
-        """!Method used for communication between view (VirtualTree) and model."""
+        """Method used for communication between view (VirtualTree) and model."""
         if len(index) == 0:
             return self.root.children
         node = self._getNode(self.root, index)
@@ -128,12 +128,12 @@
             return self._getNode(node.children[index[0]], index[1:])
 
     def RemoveNode(self, node):
-        """!Removes node."""
+        """Removes node."""
         if node.parent:
             node.parent.children.remove(node)
 
     def __str__(self):
-        """!Print tree."""
+        """Print tree."""
         text = []
         for child in self.root.children:
             child.nprint(text)
@@ -141,12 +141,12 @@
 
 
 class DictNode(object):
-    """!Node which has data in a form of dictionary."""
+    """Node which has data in a form of dictionary."""
     def __init__(self, label, data=None):
-        """!Create node.
+        """Create node.
 
-        @param label node label (displayed in GUI)
-        @param data data as dictionary or None
+        :param label: node label (displayed in GUI)
+        :param data: data as dictionary or None
         """
 
         self.label = label
@@ -174,10 +174,10 @@
                 child.nprint(text, indent + 2)
 
     def match(self, key, value):
-        """!Method used for searching according to given parameters.
+        """Method used for searching according to given parameters.
 
-        @param value dictionary value to be matched
-        @param key data dictionary key
+        :param value: dictionary value to be matched
+        :param key: data dictionary key
         """
         if key in self.data and self.data[key] == value:
             return True
@@ -185,12 +185,12 @@
 
 
 class ModuleNode(DictNode):
-    """!Node representing module."""
+    """Node representing module."""
     def __init__(self, label, data=None):
         super(ModuleNode, self).__init__(label=label, data=data)
 
     def match(self, key, value):
-        """!Method used for searching according to command,
+        """Method used for searching according to command,
         keywords or description."""
         if not self.data:
             return False

Modified: grass/trunk/gui/wxpython/core/units.py
===================================================================
--- grass/trunk/gui/wxpython/core/units.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/units.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,16 +1,15 @@
-"""!
+"""
 @package core.units
 
 @brief Units management
 
- at todo Probably will be replaced by Python ctypes fns in the near
-future(?)
+.. todo::
+    Probably will be replaced by Python ctypes fns in the near future(?)
 
 Usage:
- at code
-from core.units import Units
- at endcode
 
+    from core.units import Units
+
 Classes:
  - units::BaseUnits
 
@@ -46,11 +45,11 @@
                              4 : { 'key' : 'ht', 'label' : _('hectares') } }
 
     def GetUnitsList(self, type):
-        """!Get list of units (their labels)
+        """Get list of units (their labels)
         
-        @param type units type ('length' or 'area')
+        :param type: units type ('length' or 'area')
         
-        @return list of units labels
+        :return: list of units labels
         """
         result = list()
         try:
@@ -64,20 +63,20 @@
         return result
 
     def GetUnitsKey(self, type, index):
-        """!Get units key based on index
+        """Get units key based on index
         
-        @param type units type ('length' or 'area')
-        @param index units index
+        :param type: units type ('length' or 'area')
+        :param index: units index
         """
         return self._units[type][index]['key']
 
     def GetUnitsIndex(self, type, key):
-        """!Get units index based on key
+        """Get units index based on key
         
-        @param type units type ('length' or 'area')
-        @param key units key, e.g. 'me' for meters
+        :param type: units type ('length' or 'area')
+        :param key: units key, e.g. 'me' for meters
 
-        @return index
+        :return: index
         """
         for k, u in self._units[type].iteritems():
             if u['key'] == key:
@@ -87,13 +86,13 @@
 Units = BaseUnits()
 
 def ConvertValue(value, type, units):
-    """!Convert value from map units to given units
+    """Convert value from map units to given units
 
     Inspired by vector/v.to.db/units.c
 
-    @param value value to be converted
-    @param type units type ('length', 'area')
-    @param unit  destination units
+    :param value: value to be converted
+    :param type: units type ('length', 'area')
+    :param unit: destination units
     """
     # get map units
     # TODO
@@ -126,11 +125,10 @@
 
 
 def formatDist(distance, mapunits):
-        """!Formats length numbers and units in a nice way.
+        """Formats length numbers and units in a nice way.
 
         Formats length numbers and units as a function of length.
 
-        @code
         >>> formatDist(20.56915, 'metres')
         (20.57, 'm')
         >>> formatDist(6983.4591, 'metres')
@@ -146,13 +144,11 @@
         >>> formatDist(82.146, 'unknown')
         (82.15, 'meters')
 
-        @endcode
-
         Accepted map units are 'meters', 'metres', 'feet', 'degree'. Any
         other units will be considered as meters (output 'meters').
 
-        @param distance map units
-        @param mapunits map units
+        :param distance: map units
+        :param mapunits: map units
 
         From code by Hamish Bowman Grass Development Team 2006.
         """
@@ -206,7 +202,7 @@
 def doc_test():
     """Tests the module using doctest
 
-    @return a number of failed tests
+    :return: a number of failed tests
     """
     import doctest
     from core.utils import do_doctest_gettext_workaround

Modified: grass/trunk/gui/wxpython/core/utils.py
===================================================================
--- grass/trunk/gui/wxpython/core/utils.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/utils.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package core.utils
 
 @brief Misc utilities for wxGUI
@@ -39,24 +39,25 @@
     _ = null_gettext
 
 def normalize_whitespace(text):
-    """!Remove redundant whitespace from a string"""
+    """Remove redundant whitespace from a string"""
     return string.join(string.split(text), ' ')
 
 def split(s):
-    """!Platform spefic shlex.split"""
+    """Platform spefic shlex.split"""
     if sys.platform == "win32":
         return shlex.split(s.replace('\\', r'\\'))
     else:
         return shlex.split(s)
 
 def GetTempfile(pref=None):
-    """!Creates GRASS temporary file using defined prefix.
+    """Creates GRASS temporary file using defined prefix.
 
-    @todo Fix path on MS Windows/MSYS
+    .. todo::
+        Fix path on MS Windows/MSYS
 
-    @param pref prefer the given path
+    :param pref: prefer the given path
 
-    @return Path to file name (string) or None
+    :return: Path to file name (string) or None
     """
     ret = RunCommand('g.tempfile',
                      read = True,
@@ -79,17 +80,18 @@
 
 def GetLayerNameFromCmd(dcmd, fullyQualified = False, param = None,
                         layerType = None):
-    """!Get map name from GRASS command
+    """Get map name from GRASS command
     
     Parameter dcmd can be modified when first parameter is not
     defined.
     
-    @param dcmd GRASS command (given as list)
-    @param fullyQualified change map name to be fully qualified
-    @param param params directory
-    @param layerType check also layer type ('raster', 'vector', '3d-raster', ...)
+    :param dcmd: GRASS command (given as list)
+    :param fullyQualified: change map name to be fully qualified
+    :param param: params directory
+    :param str layerType: check also layer type ('raster', 'vector',
+                          '3d-raster', ...)
     
-    @return tuple (name, found)
+    :return: tuple (name, found)
     """
     mapname = ''
     found   = True
@@ -185,9 +187,10 @@
     return mapname, found
 
 def GetValidLayerName(name):
-    """!Make layer name SQL compliant, based on G_str_to_sql()
+    """Make layer name SQL compliant, based on G_str_to_sql()
     
-    @todo: Better use directly Ctypes to reuse venerable libgis C fns...
+    .. todo::
+        Better use directly Ctypes to reuse venerable libgis C fns...
     """
     retName = str(name).strip()
     
@@ -217,14 +220,14 @@
     return retName
 
 def ListOfCatsToRange(cats):
-    """!Convert list of category number to range(s)
+    """Convert list of category number to range(s)
 
     Used for example for d.vect cats=[range]
 
-    @param cats category list
+    :param cats: category list
 
-    @return category range string
-    @return '' on error
+    :return: category range string
+    :return: '' on error
     """
 
     catstr = ''
@@ -255,12 +258,12 @@
     return catstr.strip(',')
 
 def ListOfMapsets(get = 'ordered'):
-    """!Get list of available/accessible mapsets
+    """Get list of available/accessible mapsets
 
-    @param get method ('all', 'accessible', 'ordered')
+    :param str get: method ('all', 'accessible', 'ordered')
     
-    @return list of mapsets
-    @return None on error
+    :return: list of mapsets
+    :return: None on error
     """
     mapsets = []
     
@@ -297,11 +300,11 @@
     return mapsets
 
 def ListSortLower(list):
-    """!Sort list items (not case-sensitive)"""
+    """Sort list items (not case-sensitive)"""
     list.sort(cmp=lambda x, y: cmp(x.lower(), y.lower()))
 
 def GetVectorNumberOfLayers(vector):
-    """!Get list of all vector layers"""
+    """Get list of all vector layers"""
     layers = list()
     if not vector:
         return layers
@@ -331,16 +334,16 @@
     return layers
 
 def Deg2DMS(lon, lat, string = True, hemisphere = True, precision = 3):
-    """!Convert deg value to dms string
+    """Convert deg value to dms string
 
-    @param lon longitude (x)
-    @param lat latitude (y)
-    @param string True to return string otherwise tuple
-    @param hemisphere print hemisphere
-    @param precision seconds precision
+    :param lon: longitude (x)
+    :param lat: latitude (y)
+    :param string: True to return string otherwise tuple
+    :param hemisphere: print hemisphere
+    :param precision: seconds precision
     
-    @return DMS string or tuple of values
-    @return empty string on error
+    :return: DMS string or tuple of values
+    :return: empty string on error
     """
     try:
         flat = float(lat)
@@ -385,13 +388,13 @@
     return (slon + hlon, slat + hlat)
 
 def DMS2Deg(lon, lat):
-    """!Convert dms value to deg
+    """Convert dms value to deg
 
-    @param lon longitude (x)
-    @param lat latitude (y)
+    :param lon: longitude (x)
+    :param lat: latitude (y)
     
-    @return tuple of converted values
-    @return ValueError on error
+    :return: tuple of converted values
+    :return: ValueError on error
     """
     x = __ll_parts(lon, reverse = True)
     y = __ll_parts(lat, reverse = True)
@@ -399,14 +402,14 @@
     return (x, y)
 
 def __ll_parts(value, reverse = False, precision = 3):
-    """!Converts deg to d:m:s string
+    """Converts deg to d:m:s string
 
-    @param value value to be converted
-    @param reverse True to convert from d:m:s to deg
-    @param precision seconds precision (ignored if reverse is True)
+    :param value: value to be converted
+    :param reverse: True to convert from d:m:s to deg
+    :param precision: seconds precision (ignored if reverse is True)
     
-    @return converted value (string/float)
-    @return ValueError on error (reverse == True)
+    :return: converted value (string/float)
+    :return: ValueError on error (reverse == True)
     """
     if not reverse:
         if value == 0.0:
@@ -463,20 +466,20 @@
         return coef * (float(d) + fm + fs)
     
 def GetCmdString(cmd):
-    """!Get GRASS command as string.
+    """Get GRASS command as string.
     
-    @param cmd GRASS command given as tuple
+    :param cmd: GRASS command given as tuple
     
-    @return command string
+    :return: command string
     """
     return ' '.join(CmdTupleToList(cmd))
 
 def CmdTupleToList(cmd):
-    """!Convert command tuple to list.
+    """Convert command tuple to list.
     
-    @param cmd GRASS command given as tuple
+    :param cmd: GRASS command given as tuple
     
-    @return command in list
+    :return: command in list
     """
     cmdList = []
     if not cmd:
@@ -499,7 +502,7 @@
     return cmdList
 
 def CmdToTuple(cmd):
-    """!Convert command list to tuple for gcmd.RunCommand()"""
+    """Convert command list to tuple for gcmd.RunCommand()"""
     if len(cmd) < 1:
         return None
     
@@ -523,7 +526,7 @@
     return (cmd[0], dcmd)
 
 def PathJoin(*args):
-    """!Check path created by os.path.join"""
+    """Check path created by os.path.join"""
     path = os.path.join(*args)
     if platform.system() == 'Windows' and \
             '/' in path:
@@ -532,12 +535,12 @@
     return path
 
 def ReadEpsgCodes(path):
-    """!Read EPSG code from the file
+    """Read EPSG code from the file
 
-    @param path full path to the file with EPSG codes
+    :param path: full path to the file with EPSG codes
 
-    @return dictionary of EPSG code
-    @return string on error
+    :return: dictionary of EPSG code
+    :return: string on error
     """
     epsgCodeDict = dict()
     try:
@@ -572,13 +575,13 @@
     return epsgCodeDict
 
 def ReprojectCoordinates(coord, projOut, projIn = None, flags = ''):
-    """!Reproject coordinates
+    """Reproject coordinates
 
-    @param coord coordinates given as tuple
-    @param projOut output projection
-    @param projIn input projection (use location projection settings)
+    :param coord: coordinates given as tuple
+    :param projOut: output projection
+    :param projIn: input projection (use location projection settings)
 
-    @return reprojected coordinates (returned as tuple)
+    :return: reprojected coordinates (returned as tuple)
     """
     coors = RunCommand('m.proj',
                        flags = flags,
@@ -607,11 +610,11 @@
     return (None, None)
 
 def GetListOfLocations(dbase):
-    """!Get list of GRASS locations in given dbase
+    """Get list of GRASS locations in given dbase
 
-    @param dbase GRASS database path
+    :param dbase: GRASS database path
 
-    @return list of locations (sorted)
+    :return: list of locations (sorted)
     """
     listOfLocations = list()
 
@@ -630,13 +633,13 @@
     return listOfLocations
 
 def GetListOfMapsets(dbase, location, selectable = False):
-    """!Get list of mapsets in given GRASS location
+    """Get list of mapsets in given GRASS location
 
-    @param dbase      GRASS database path
-    @param location   GRASS location
-    @param selectable True to get list of selectable mapsets, otherwise all
+    :param dbase: GRASS database path
+    :param location: GRASS location
+    :param selectable: True to get list of selectable mapsets, otherwise all
 
-    @return list of mapsets - sorted (PERMANENT first)
+    :return: list of mapsets - sorted (PERMANENT first)
     """
     listOfMapsets = list()
     
@@ -662,7 +665,7 @@
     return listOfMapsets
 
 def GetColorTables():
-    """!Get list of color tables"""
+    """Get list of color tables"""
     ret = RunCommand('r.colors',
                      read = True,
                      flags = 'l')
@@ -672,7 +675,7 @@
     return ret.splitlines()
 
 def _getGDALFormats():
-    """!Get dictionary of avaialble GDAL drivers"""
+    """Get dictionary of avaialble GDAL drivers"""
     try:
         ret = grass.read_command('r.in.gdal',
                                  quiet = True,
@@ -683,7 +686,7 @@
     return _parseFormats(ret), _parseFormats(ret, writableOnly = True)
 
 def _getOGRFormats():
-    """!Get dictionary of avaialble OGR drivers"""
+    """Get dictionary of avaialble OGR drivers"""
     try:
         ret = grass.read_command('v.in.ogr',
                                  quiet = True,
@@ -694,7 +697,7 @@
     return _parseFormats(ret), _parseFormats(ret, writableOnly = True)
 
 def _parseFormats(output, writableOnly = False):
-    """!Parse r.in.gdal/v.in.ogr -f output"""
+    """Parse r.in.gdal/v.in.ogr -f output"""
     formats = { 'file'     : list(),
                 'database' : list(),
                 'protocol' : list()
@@ -742,7 +745,7 @@
 formats = None
 
 def GetFormats(writableOnly = False):
-    """!Get GDAL/OGR formats"""
+    """Get GDAL/OGR formats"""
     global formats
     if not formats:
         gdalAll, gdalWritable = _getGDALFormats()
@@ -833,7 +836,7 @@
 
 
 def GetSettingsPath():
-    """!Get full path to the settings directory
+    """Get full path to the settings directory
     """
     try:
         verFd = open(os.path.join(globalvar.ETCDIR, "VERSIONNUMBER"))
@@ -850,14 +853,14 @@
     return os.path.join(os.getenv('HOME'), '.grass%d' % version)
 
 def StoreEnvVariable(key, value = None, envFile = None):
-    """!Store environmental variable
+    """Store environmental variable
 
     If value is not given (is None) then environmental variable is
     unset.
     
-    @param key env key
-    @param value env value
-    @param envFile path to the environmental file (None for default location)
+    :param key: env key
+    :param value: env value
+    :param envFile: path to the environmental file (None for default location)
     """
     windows = sys.platform == 'win32'
     if not envFile:
@@ -919,10 +922,10 @@
     fd.close()
 
 def SetAddOnPath(addonPath = None, key = 'PATH'):
-    """!Set default AddOn path
+    """Set default AddOn path
 
-    @param addonPath path to addons (None for default)
-    @param key env key - 'PATH' or 'BASE'
+    :param addonPath: path to addons (None for default)
+    :param key: env key - 'PATH' or 'BASE'
     """
     gVersion = grass.version()['version'].split('.', 1)[0]
     # update env file
@@ -1010,14 +1013,14 @@
 
 
 def GetGEventAttribsForHandler(method, event):
-    """!Get attributes from event, which can be used by handler method. 
+    """Get attributes from event, which can be used by handler method. 
 
     Be aware of event class attributes.
 
-    @param method - handler method (including self arg)
-    @param event - event
+    :param method: handler method (including self arg)
+    :param event: event
 
-    @return (valid kwargs for method, 
+    :return: (valid kwargs for method, 
              list of method's args without default value 
              which were not found among event attributes)
     """
@@ -1044,13 +1047,14 @@
     return kwargs, missing_args
 
 def GuiModuleMain(mainfn):
-    """!Main function for g.gui.* modules
+    """Main function for g.gui.* modules
     
     Note: os.fork() is supported only on Unix platforms
     
-    @todo: Replace os.fork() by multiprocessing (?)
+    .. todo::
+        Replace os.fork() by multiprocessing (?)
     
-    @param module's main function
+    :param mainfn: main function
     """
     if sys.platform != 'win32':
         # launch GUI in the background
@@ -1074,7 +1078,7 @@
         mainfn()
 
 def PilImageToWxImage(pilImage, copyAlpha = True):
-    """!Convert PIL image to wx.Image
+    """Convert PIL image to wx.Image
     
     Based on http://wiki.wxpython.org/WorkingWithImages
     """
@@ -1099,12 +1103,12 @@
 
 
 def autoCropImageFromFile(filename):
-    """!Loads image from file and crops it automatically.
+    """Loads image from file and crops it automatically.
 
     If PIL is not installed, it does not crop it.
 
-    @param filename path to file
-    @return wx.Image instance
+    :param filename: path to file
+    :return: wx.Image instance
     """
     try:
         from PIL import Image
@@ -1118,12 +1122,11 @@
 
 
 def isInRegion(regionA, regionB):
-    """!Tests if 'regionA' is inside of 'regionB'.
+    """Tests if 'regionA' is inside of 'regionB'.
 
     For example, region A is a display region and region B is some reference
     region, e.g., a computational region.
 
-    @code
     >>> displayRegion = {'n': 223900, 's': 217190, 'w': 630780, 'e': 640690}
     >>> compRegion = {'n': 228500, 's': 215000, 'w': 630000, 'e': 645000}
     >>> isInRegion(displayRegion, compRegion)
@@ -1132,13 +1135,11 @@
     >>> isInRegion(displayRegion, compRegion)
     False
 
-    @endcode
+    :param regionA: input region A as dictionary
+    :param regionB: input region B as dictionary
 
-    @param regionA input region A as dictionary
-    @param regionB input region B as dictionary
-
-    @return True if region A is inside of region B
-    @return False othewise
+    :return: True if region A is inside of region B
+    :return: False othewise
     """
     if regionA['s'] >= regionB['s'] and \
             regionA['n'] <= regionB['n'] and \
@@ -1178,7 +1179,7 @@
 def doc_test():
     """Tests the module using doctest
 
-    @return a number of failed tests
+    :return: a number of failed tests
     """
     import doctest
     do_doctest_gettext_workaround()

Modified: grass/trunk/gui/wxpython/core/workspace.py
===================================================================
--- grass/trunk/gui/wxpython/core/workspace.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/workspace.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package core.workspace
 
 @brief Open/save workspace definition file
@@ -30,7 +30,7 @@
 
 class ProcessWorkspaceFile:
     def __init__(self, tree):
-        """!A ElementTree handler for the GXW XML file, as defined in
+        """A ElementTree handler for the GXW XML file, as defined in
         grass-gxw.dtd.
         """
         self.tree = tree
@@ -66,9 +66,9 @@
             self.nvizDefault = None
         
     def __filterValue(self, value):
-        """!Filter value
+        """Filter value
         
-        @param value
+        :param value:
         """
         value = value.replace('<', '<')
         value = value.replace('>', '>')
@@ -76,7 +76,7 @@
         return value
 
     def __getNodeText(self, node, tag, default = ''):
-        """!Get node text"""
+        """Get node text"""
         p = node.find(tag)
         if p is not None:
             # if empty text is inside tag,
@@ -89,7 +89,7 @@
         return default
     
     def __processFile(self):
-        """!Process workspace file"""
+        """Process workspace file"""
         #
         # layer manager
         #
@@ -164,10 +164,10 @@
             self.__processNvizState(display)
 
     def __processLayers(self, node, inGroup = -1):
-        """!Process layers/groups of selected display
+        """Process layers/groups of selected display
         
-        @param node display tree node
-        @param inGroup in group -> index of group item otherwise -1
+        :param node: display tree node
+        :param inGroup: in group -> index of group item otherwise -1
         """
         for item in node.getchildren():
             if item.tag == 'group':
@@ -204,9 +204,9 @@
                         "nviz"     : nviz } )
             
     def __processLayer(self, layer):
-        """!Process layer item
+        """Process layer item
 
-        @param layer tree node
+        :param layer: tree node
         """
         cmd = list()
         
@@ -255,9 +255,9 @@
         return (cmd, selected, vdigit, nviz)
 
     def __processLayerVdigit(self, node_vdigit):
-        """!Process vector digitizer layer settings
+        """Process vector digitizer layer settings
 
-        @param node_vdigit vdigit node
+        :param node_vdigit: vdigit node
         """
         # init nviz layer properties
         vdigit = dict()
@@ -273,9 +273,9 @@
         return vdigit
     
     def __processLayerNviz(self, node_nviz):
-        """!Process 3D layer settings
+        """Process 3D layer settings
 
-        @param node_nviz nviz node
+        :param node_nviz: nviz node
         """
         # init nviz layer properties
         nviz = {}
@@ -302,10 +302,10 @@
         return nviz
 
     def __processLayerNvizSurface(self, nvizData, nodeSurface):
-        """!Process 3D layer settings - surface
+        """Process 3D layer settings - surface
 
-        @param nodeData nviz data dict
-        @param nodeSurface nviz surface node
+        :param nodeData: nviz data dict
+        :param nodeSurface: nviz surface node
         """
         # attributes
         for attrb in nodeSurface.findall('attribute'):
@@ -366,10 +366,10 @@
                 dc[coor] = value
 
     def __processLayerNvizVolume(self, nvizData, nodeVolume):
-        """!Process 3D layer settings - volume
+        """Process 3D layer settings - volume
 
-        @param nodeData nviz data dict
-        @param nodeVolume nviz volume node
+        :param nodeData: nviz data dict
+        :param nodeVolume: nviz volume node
         """
         # attributes
         for attrb in nodeVolume.findall('attribute'):
@@ -468,10 +468,10 @@
                 dc[coor] = value
 
     def __processLayerNvizVectorPoints(self, nvizData, nodePoints):
-        """!Process 3D layer settings - vector points
+        """Process 3D layer settings - vector points
 
-        @param nodeData nviz data dict
-        @param nodeVector nviz vector points node
+        :param nodeData: nviz data dict
+        :param nodeVector: nviz vector points node
         """
         marker = str(nodePoints.get('marker', ''))
         markerId = list(UserSettings.Get(group='nviz', key='vector',
@@ -523,10 +523,10 @@
                 thematic[use] = int(node_thematic.get(use, '0'))
 
     def __processLayerNvizVectorLines(self, nvizData, nodeLines):
-        """!Process 3D layer settings - vector lines
+        """Process 3D layer settings - vector lines
 
-        @param nodeData nviz data dict
-        @param nodeVector nviz vector lines node
+        :param nodeData: nviz data dict
+        :param nodeVector: nviz vector lines node
         """
         node_mode = nodeLines.find('mode')
         if node_mode is not None:
@@ -569,7 +569,7 @@
                 thematic[use] = int(node_thematic.get(use, '0'))
 
     def __processLayerNvizNode(self, node, tag, cast, dc = None):
-        """!Process given tag nviz/vector"""
+        """Process given tag nviz/vector"""
         node_tag = node.find(tag)
         if node_tag is not None:
             if node_tag.find('value') is not None:
@@ -589,7 +589,7 @@
                 return value
     
     def __processNvizState(self, node):
-        """!Process tag nviz_state"""
+        """Process tag nviz_state"""
         node_state = node.find('nviz_state')
         if node_state is None:
             return
@@ -687,7 +687,7 @@
         self.nviz_state['constants'] = constants    
 
 class WriteWorkspaceFile(object):
-    """!Generic class for writing workspace file"""
+    """Generic class for writing workspace file"""
     def __init__(self, lmgr, file):
         self.file =  file
         self.lmgr = lmgr
@@ -791,14 +791,14 @@
         file.write('%s</gxw>\n' % (' ' * self.indent))
 
     def __filterValue(self, value):
-        """!Make value XML-valid"""
+        """Make value XML-valid"""
         value = value.replace('<', '<')
         value = value.replace('>', '>')
         
         return value
     
     def __writeLayer(self, mapTree, item):
-        """!Write bunch of layers to GRASS Workspace XML file"""
+        """Write bunch of layers to GRASS Workspace XML file"""
         self.indent += 4
         itemSelected = mapTree.GetSelections()
         while item and item.IsOk():
@@ -889,9 +889,9 @@
         self.indent -= 4
         
     def __writeNvizSurface(self, data):
-        """!Save Nviz raster layer properties to workspace
+        """Save Nviz raster layer properties to workspace
 
-        @param data Nviz layer properties
+        :param data: Nviz layer properties
         """
         if 'object' not in data: # skip disabled
             return
@@ -962,9 +962,9 @@
         self.indent -= 4
 
     def __writeNvizVolume(self, data):
-        """!Save Nviz volume layer properties to workspace
+        """Save Nviz volume layer properties to workspace
 
-        @param data Nviz layer properties
+        :param data: Nviz layer properties
         """
         if 'object' not in data:  # skip disabled
             return
@@ -1090,9 +1090,9 @@
         self.indent -= 4
 
     def __writeNvizVector(self, data):
-        """!Save Nviz vector layer properties (lines/points) to workspace
+        """Save Nviz vector layer properties (lines/points) to workspace
 
-        @param data Nviz layer properties
+        :param data: Nviz layer properties
         """
         self.indent += 4
         for attrb in data.iterkeys():
@@ -1156,11 +1156,11 @@
         self.indent -= 4
 
     def __writeNvizState(self, view, iview, light, constants):
-        """"!Save Nviz properties (view, light) to workspace
+        """"Save Nviz properties (view, light) to workspace
 
-        @param view Nviz view properties
-        @param iview Nviz internal view properties
-        @param light Nviz light properties
+        :param view: Nviz view properties
+        :param iview: Nviz internal view properties
+        :param light: Nviz light properties
         """
         self.indent += 4
         self.file.write('%s<nviz_state>\n' % (' ' * self.indent))
@@ -1268,11 +1268,11 @@
         self.indent -= 4
     
     def __writeTagWithValue(self, tag, data, format = 'd'):
-        """!Helper function for writing pair tag
+        """Helper function for writing pair tag
         
-        @param tag written tag
-        @param data written data
-        @param format conversion type
+        :param tag: written tag
+        :param data: written data
+        :param format: conversion type
         """
         self.file.write('%s<%s>\n' % (' ' * self.indent, tag))
         self.indent += 4
@@ -1283,7 +1283,7 @@
         
 class ProcessGrcFile(object):
     def __init__(self, filename):
-        """!Process GRC file"""
+        """Process GRC file"""
         self.filename = filename
 
         # elements
@@ -1299,11 +1299,11 @@
         self.num_error = 0
 
     def read(self, parent):
-        """!Read GRC file
+        """Read GRC file
 
-        @param parent parent window
+        :param parent: parent window
 
-        @return list of map layers
+        :return: list of map layers
         """
         try:
             file = open(self.filename, "r")
@@ -1333,7 +1333,7 @@
         return self.layers
 
     def process_line(self, line, line_id):
-        """!Process line definition"""
+        """Process line definition"""
         element = self._get_element(line)
         if element == 'Group':
             self.groupName = self._get_value(line)
@@ -1544,24 +1544,24 @@
             self.num_error += 1
 
     def _get_value(self, line):
-        """!Get value of element"""
+        """Get value of element"""
         try:
             return line.strip(' ').split(' ')[1].strip(' ')
         except:
             return ''
 
     def _get_element(self, line):
-        """!Get element tag"""
+        """Get element tag"""
         return line.strip(' ').split(' ')[0].strip(' ')
 
     def _get_cmd_param_index(self, cmd, name):
-        """!Get index of parameter in cmd list
+        """Get index of parameter in cmd list
 
-        @param cmd cmd list
-        @param name parameter name
+        :param cmd: cmd list
+        :param name: parameter name
 
-        @return index
-        @return -1 if not found
+        :return: index
+        :return: -1 if not found
         """
         i = 0
         for param in cmd:
@@ -1576,7 +1576,7 @@
         return -1
 
     def _color_name_to_rgb(self, value):
-        """!Convert color name (#) to rgb values"""
+        """Convert color name (#) to rgb values"""
         col = wx.NamedColour(value)
         return str(col.Red()) + ':' + \
             str(col.Green()) + ':' + \

Modified: grass/trunk/gui/wxpython/core/ws.py
===================================================================
--- grass/trunk/gui/wxpython/core/ws.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/core/ws.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package core.ws
 
 @brief Fetching and preparation of web service data for rendering.
@@ -41,7 +41,7 @@
 
 
 class RenderWMSMgr(wx.EvtHandler):
-    """!Fetch and prepare WMS data for rendering.
+    """Fetch and prepare WMS data for rendering.
     """
     def __init__(self, layer, mapfile, maskfile):
         if not haveGdal:
@@ -77,10 +77,11 @@
         grass.try_remove(self.tempMap)
 
     def Render(self, cmd, env):
-        """!If it is needed, download missing WMS data.
+        """If it is needed, download missing WMS data.
 
-        @todo lmgr deletes mapfile and maskfile when order of layers
-        was changed (drag and drop) - if deleted, fetch data again
+        .. todo::
+            lmgr deletes mapfile and maskfile when order of layers
+            was changed (drag and drop) - if deleted, fetch data again
         """
         if not haveGdal:
             return
@@ -135,7 +136,7 @@
             self.thread.RunCmd(cmdList, env=env, stderr=self.cmdStdErr)
 
     def OnCmdOutput(self, event):
-        """!Print cmd output according to debug level.
+        """Print cmd output according to debug level.
         """
         if Debug.GetLevel() == 0:
             if event.type == 'error':
@@ -145,7 +146,7 @@
             Debug.msg(1, event.text)
 
     def OnDataFetched(self, event):
-        """!Fetch data
+        """Fetch data
         """
         if event.pid != self.currentPid:
             return
@@ -172,7 +173,7 @@
         self.dataFetched.emit()
 
     def _getRegionDict(self, env):
-        """!Parse string from GRASS_REGION env variable into dict.
+        """Parse string from GRASS_REGION env variable into dict.
         """
         region = {}
         parsedRegion = env["GRASS_REGION"].split(';')
@@ -192,7 +193,7 @@
         return region
 
     def _createRegionStr(self, region):
-        """!Create string for GRASS_REGION env variable from  dict created by _getRegionDict.
+        """Create string for GRASS_REGION env variable from  dict created by _getRegionDict.
         """
         regionStr = ''
         for k, v in region.iteritems():
@@ -204,12 +205,12 @@
         return regionStr
 
     def IsDownloading(self):
-        """!Is it downloading any data from WMS server? 
+        """Is it downloading any data from WMS server? 
         """
         return self.downloading
 
     def _fitAspect(self, region, size):
-        """!Compute region parameters to have direction independent resolution.
+        """Compute region parameters to have direction independent resolution.
         """
         if region['n-s resol'] > region['e-w resol']:
             delta = region['n-s resol'] * size['cols'] / 2
@@ -230,18 +231,18 @@
             region['n-s resol'] = region['e-w resol']
 
     def Abort(self):
-        """!Abort process"""
+        """Abort process"""
         self.updateMap = False
         self.thread.abort(abortall = True)        
 
 
 class GDALRasterMerger:
-    """!Merge rasters.
+    """Merge rasters.
 
         Based on gdal_merge.py utility.
     """
     def __init__(self, targetFile, region, bandsNum, gdalDriver, fillValue = None):
-        """!Create raster for merging.
+        """Create raster for merging.
         """
         self.gdalDrvType = gdalDriver
 
@@ -261,7 +262,7 @@
                 self.tDataset.GetRasterBand(iBand).Fill(fillValue)
 
     def AddRasterBands(self, sourceFile, sTBands):
-        """!Add raster bands from sourceFile into the merging raster.
+        """Add raster bands from sourceFile into the merging raster.
         """
         sDataset = gdal.Open(sourceFile, gdal.GA_ReadOnly) 
         if sDataset is None:
@@ -329,7 +330,7 @@
         return ulx, uly, lrx, lry 
 
     def SetGeorefAndProj(self):
-        """!Set georeference and projection to target file
+        """Set georeference and projection to target file
         """
         projection = grass.read_command('g.proj', 
                                         flags = 'wf')

Modified: grass/trunk/gui/wxpython/dbmgr/base.py
===================================================================
--- grass/trunk/gui/wxpython/dbmgr/base.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/dbmgr/base.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package dbmgr.base
 
 @brief GRASS Attribute Table Manager base classes
@@ -15,7 +15,8 @@
  - base::LayerListCtrl
  - base::LayerBook
 
- at todo Implement giface class
+.. todo::
+    Implement giface class
 
 (C) 2007-2014 by the GRASS Development Team
 
@@ -51,21 +52,21 @@
 from core.settings    import UserSettings
 
 class Log:
-    """!The log output SQL is redirected to the status bar of the
+    """The log output SQL is redirected to the status bar of the
     containing frame.
     """
     def __init__(self, parent):
         self.parent = parent
 
     def write(self, text_string):
-        """!Update status bar"""
+        """Update status bar"""
         if self.parent:
             self.parent.SetStatusText(text_string.strip())
 
 class VirtualAttributeList(wx.ListCtrl,
                            listmix.ListCtrlAutoWidthMixin,
                            listmix.ColumnSorterMixin):
-    """!Support virtual list class for Attribute Table Manager (browse page)
+    """Support virtual list class for Attribute Table Manager (browse page)
     """
     def __init__(self, parent, log, dbMgrData, layer, pages):
         # initialize variables
@@ -121,7 +122,7 @@
         self.Bind(wx.EVT_LIST_COL_RIGHT_CLICK, self.OnColumnMenu)     
         
     def Update(self, mapDBInfo = None):
-        """!Update list according new mapDBInfo description"""
+        """Update list according new mapDBInfo description"""
         if mapDBInfo:
             self.mapDBInfo = mapDBInfo
             self.LoadData(self.layer)
@@ -129,15 +130,15 @@
             self.LoadData(self.layer, **self.sqlFilter)
 
     def LoadData(self, layer, columns = None, where = None, sql = None):
-        """!Load data into list
+        """Load data into list
 
-        @param layer layer number
-        @param columns list of columns for output (-> v.db.select)
-        @param where where statement (-> v.db.select)
-        @param sql full sql statement (-> db.select)
+        :param layer: layer number
+        :param columns: list of columns for output (-> v.db.select)
+        :param where: where statement (-> v.db.select)
+        :param sql: full sql statement (-> db.select)
         
-        @return id of key column 
-        @return -1 if key column is not displayed
+        :return: id of key column 
+        :return: -1 if key column is not displayed
         """
         self.log.write(_("Loading data..."))
         
@@ -278,7 +279,7 @@
         return keyId
     
     def AddDataRow(self, i, record, columns, keyId):
-        """!Add row to the data list"""
+        """Add row to the data list"""
         self.itemDataMap[i] = []
         keyColumn = self.mapDBInfo.layers[self.layer]['key']
         j = 0
@@ -324,7 +325,7 @@
             self.itemCatsMap[i] = cat
         
     def OnItemSelected(self, event):
-        """!Item selected. Add item to selected cats..."""
+        """Item selected. Add item to selected cats..."""
         #         cat = int(self.GetItemText(event.m_itemIndex))
         #         if cat not in self.selectedCats:
         #             self.selectedCats.append(cat)
@@ -333,7 +334,7 @@
         event.Skip()
 
     def OnItemDeselected(self, event):
-        """!Item deselected. Remove item from selected cats..."""
+        """Item deselected. Remove item from selected cats..."""
         #         cat = int(self.GetItemText(event.m_itemIndex))
         #         if cat in self.selectedCats:
         #             self.selectedCats.remove(cat)
@@ -342,7 +343,7 @@
         event.Skip()
 
     def GetSelectedItems(self):
-        """!Return list of selected items (category numbers)"""
+        """Return list of selected items (category numbers)"""
         cats = []
         item = self.GetFirstSelected()
         while item != -1:
@@ -352,7 +353,7 @@
         return cats
 
     def GetItems(self):
-        """!Return list of items (category numbers)"""
+        """Return list of items (category numbers)"""
         cats = []
         for item in range(self.GetItemCount()):
             cats.append(self.GetItemText(item))
@@ -360,29 +361,29 @@
         return cats
 
     def GetColumnText(self, index, col):
-        """!Return column text"""
+        """Return column text"""
         item = self.GetItem(index, col)
         return item.GetText()
 
     def GetListCtrl(self):
-        """!Returt list"""
+        """Returt list"""
         return self
 
     def OnGetItemText(self, item, col):
-        """!Get item text"""
+        """Get item text"""
         index = self.itemIndexMap[item]
         s = self.itemDataMap[index][col]
         return s
 
     def OnGetItemAttr(self, item):
-        """!Get item attributes"""
+        """Get item attributes"""
         if ( item % 2) == 0:
             return self.attr2
         else:
             return self.attr1
 
     def OnColumnMenu(self, event):
-        """!Column heading right mouse button -> pop-up menu"""
+        """Column heading right mouse button -> pop-up menu"""
         self._col = event.GetColumn()
         
         popupMenu = wx.Menu()
@@ -451,7 +452,7 @@
         popupMenu.Destroy()
 
     def OnColumnSort(self, event):
-        """!Column heading left mouse button -> sorting"""
+        """Column heading left mouse button -> sorting"""
         self._col = event.GetColumn()
         
         self.ColumnSort()
@@ -459,17 +460,17 @@
         event.Skip()
 
     def OnColumnSortAsc(self, event):
-        """!Sort values of selected column (ascending)"""
+        """Sort values of selected column (ascending)"""
         self.SortListItems(col = self._col, ascending = True)
         event.Skip()
 
     def OnColumnSortDesc(self, event):
-        """!Sort values of selected column (descending)"""
+        """Sort values of selected column (descending)"""
         self.SortListItems(col = self._col, ascending = False)
         event.Skip()
         
     def OnColumnCompute(self, event):
-        """!Compute values of selected column"""
+        """Compute values of selected column"""
         id = event.GetId()
         
         option = None
@@ -505,7 +506,7 @@
         self.LoadData(self.layer)
         
     def ColumnSort(self):
-        """!Sort values of selected column (self._col)"""
+        """Sort values of selected column (self._col)"""
         # remove duplicated arrow symbol from column header
         # FIXME: should be done automatically
         info = wx.ListItem()
@@ -516,7 +517,7 @@
             self.SetColumn(column, info)
         
     def OnFiledCalculator(self, event):
-        """!Calls SQLBuilderUpdate instance"""
+        """Calls SQLBuilderUpdate instance"""
         if not self.fieldCalc:
             self.fieldCalc = SQLBuilderUpdate(parent = self, id = wx.ID_ANY,
                                               vectmap = self.dbMgrData['vectName'],
@@ -527,7 +528,7 @@
             self.fieldCalc.Raise()
 
     def OnAddColumn(self, event):
-        """!Add column into table"""
+        """Add column into table"""
         table = self.dbMgrData['mapDBInfo'].layers[self.layer]['table']
         dlg = AddColumnDialog(parent = self, title = _('Add column to table <%s>') % table)
         if not dlg:
@@ -540,7 +541,7 @@
         dlg.Destroy()
 
     def SortItems(self, sorter = cmp):
-        """!Sort items"""
+        """Sort items"""
         items = list(self.itemDataMap.keys())
         items.sort(self.Sorter)
         self.itemIndexMap = items
@@ -574,11 +575,11 @@
             return -cmpVal
 
     def GetSortImages(self):
-        """!Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py"""
+        """Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py"""
         return (self.sm_dn, self.sm_up)
 
     def IsEmpty(self):
-        """!Check if list if empty"""
+        """Check if list if empty"""
         if self.columns:
             return False
         
@@ -589,15 +590,15 @@
                  vectorName = None, item = None, giface = None,
                  statusbar = None, 
                  **kwargs):
-        """!Base class, which enables usage of separate pages of Attribute Table Manager 
+        """Base class, which enables usage of separate pages of Attribute Table Manager 
 
-        @param id window id
-        @param mapdisplay MapFrame instance
-        @param vetorName name of vector map
-        @param item item from Layer Tree
-        @param log log window
-        @param statusbar widget with statusbar 
-        @param kwagrs other wx.Frame's arguments
+        :param id: window id
+        :param mapdisplay: MapFrame instance
+        :param vectorName: name of vector map
+        :param item: item from Layer Tree
+        :param log: log window
+        :param statusbar: widget with statusbar 
+        :param kwagrs: other wx.Frame's arguments
         """
 
         # stores all data, which are shared by pages
@@ -646,7 +647,7 @@
                      }
 
     def ChangeVectorMap(self, vectorName):
-        """!Change of vector map
+        """Change of vector map
 
         Does not import layers of new vector map into pages.
         For the import use methods addLayer in DbMgrBrowsePage and DbMgrTablesPage
@@ -674,13 +675,15 @@
             self.pages['manageLayer'].UpdatePage()       
 
     def CreateDbMgrPage(self, parent, pageName, onlyLayer = -1):
-        """!Creates chosen page
+        """Creates chosen page
 
-        @param pageName can be 'browse' or 'manageTable' or 'manageLayer' which corresponds with pages in 
-                        Attribute Table Manager
-        @return created instance of page - if the page has been already created returns the previously created instance
-        @return None  if wrong identifier was passed
-        """         
+        :param pageName: can be 'browse' or 'manageTable' or
+                         'manageLayer' which corresponds with pages in
+                         Attribute Table Manager
+        :return: created instance of page, if the page has been already
+                 created returns the previously created instance
+        :return: None  if wrong identifier was passed
+        """       
         if pageName == 'browse':
             if not self.pages['browse']:
                 self.pages[pageName] = DbMgrBrowsePage(parent = parent, parentDbMgrBase = self,
@@ -698,7 +701,7 @@
         return None
 
     def UpdateDialog(self, layer):
-        """!Updates dialog layout for given layer"""
+        """Updates dialog layout for given layer"""
         # delete page
         if layer in self.dbMgrData['mapDBInfo'].layers.keys():
             # delete page
@@ -730,19 +733,19 @@
             self.pages['manageLayer'].UpdatePage()
     
     def GetVectorName(self):
-        """!Get vector name"""
+        """Get vector name"""
         return self.dbMgrData['vectName']
 
     def GetVectorLayers(self):
-        """!Get layers of vector map which have table"""
+        """Get layers of vector map which have table"""
         return self.dbMgrData['mapDBInfo'].layers.keys()
 
 class DbMgrNotebookBase(FN.FlatNotebook):
     def __init__(self, parent, parentDbMgrBase):
-        """!Base class for notebook with attribute tables in tabs
+        """Base class for notebook with attribute tables in tabs
 
-        @param parent GUI parent
-        @param parentDbMgrBase instance of DbMgrBase class
+        :param parent: GUI parent
+        :param parentDbMgrBase: instance of DbMgrBase class
         """
 
         self.parent = parent
@@ -785,7 +788,7 @@
         self.Bind(FN.EVT_FLATNOTEBOOK_PAGE_CHANGED, self.OnLayerPageChanged)
 
     def OnLayerPageChanged(self, event):
-        """!Layer tab changed"""
+        """Layer tab changed"""
 
         # because of SQL Query notebook  
         if event.GetEventObject() != self:
@@ -812,9 +815,10 @@
             self.dbMgrData['mapDBInfo'].GetColumns(table)
 
     def ApplyCommands(self, listOfCommands, listOfSQLStatements):
-        """!Apply changes
+        """Apply changes
 
-        @todo: this part should be _completely_ redesigned
+        .. todo::
+            this part should be _completely_ redesigned
         """
         # perform GRASS commands (e.g. v.db.addcolumn)
         wx.BeginBusyCursor()
@@ -870,7 +874,7 @@
         wx.EndBusyCursor()        
 
     def DeletePage(self, layer):
-        """!Removes layer page"""
+        """Removes layer page"""
         if layer not in self.layers:
             return False
 
@@ -887,14 +891,14 @@
         return True
 
     def DeleteAllPages(self):
-        """!Removes all layer pages"""
+        """Removes all layer pages"""
         FN.FlatNotebook.DeleteAllPages(self)
         self.layerPage = {}
         self.layers = []
         self.selLayer = None
 
     def AddColumn(self, name, ctype, length):
-        """!Add new column to the table"""
+        """Add new column to the table"""
         table = self.dbMgrData['mapDBInfo'].layers[self.selLayer]['table']
         
         if not name:
@@ -931,16 +935,17 @@
         return True
 
     def GetAddedLayers(self):
-        """!Get list of added layers"""
+        """Get list of added layers"""
         return self.layers[:]
 
 class DbMgrBrowsePage(DbMgrNotebookBase):
     def __init__(self, parent, parentDbMgrBase, onlyLayer = -1):
-        """!Browse page class
+        """Browse page class
 
-        @param parent GUI parent
-        @param parentDbMgrBase instance of DbMgrBase class
-        @param onlyLayer create only tab of given layer, if -1 creates tabs of all layers 
+        :param parent: GUI parent
+        :param parentDbMgrBase: instance of DbMgrBase class
+        :param onlyLayer: create only tab of given layer, if -1 creates
+                          tabs of all layers 
         """
 
         DbMgrNotebookBase.__init__(self, parent = parent, 
@@ -967,13 +972,14 @@
         self.builder = None
 
     def AddLayer(self, layer, pos = -1):
-        """!Adds tab which represents table and enables browse it
+        """Adds tab which represents table and enables browse it
 
-        @param layer vector map layer conntected to table
-        @param pos position of tab, if -1 it is added to end
+        :param layer: vector map layer conntected to table
+        :param pos: position of tab, if -1 it is added to end
 
-        @return True if layer was added 
-        @return False if layer was not added - layer has been already added or has empty table or does not exist 
+        :return: True if layer was added 
+        :return: False if layer was not added - layer has been already
+                 added or has empty table or does not exist 
         """
         if layer in self.layers or \
             layer not in self.parentDbMgrBase.GetVectorLayers():
@@ -1152,11 +1158,11 @@
         return True
 
     def OnSqlQuerySizeWrap(self, layer):
-        """!Helper function"""
+        """Helper function"""
         return lambda event : self.OnSqlQuerySize(event, layer)  
 
     def OnSqlQuerySize(self, event, layer):
-        """!Adapts SQL Query Simple tab on current width"""
+        """Adapts SQL Query Simple tab on current width"""
 
         sqlNtb = event.GetEventObject()
         if not self.sqlBestSize:
@@ -1189,13 +1195,13 @@
         event.Skip()
 
     def OnDataItemActivated(self, event):
-        """!Item activated, highlight selected item"""
+        """Item activated, highlight selected item"""
         self.OnDataDrawSelected(event)
 
         event.Skip()
 
     def OnDataRightUp(self, event):
-        """!Table description area, context menu"""
+        """Table description area, context menu"""
         if not hasattr(self, "popupDataID1"):
             self.popupDataID1 = wx.NewId()
             self.popupDataID2 = wx.NewId()
@@ -1263,7 +1269,7 @@
                            tlist.GetItemCount())
 
     def OnDataItemEdit(self, event):
-        """!Edit selected record of the attribute table"""
+        """Edit selected record of the attribute table"""
         tlist      = self.FindWindowById(self.layerPage[self.selLayer]['data'])
         item      = tlist.GetFirstSelected()
         if item == -1:
@@ -1360,7 +1366,7 @@
             tlist.Update()
         
     def OnDataItemAdd(self, event):
-        """!Add new record to the attribute table"""
+        """Add new record to the attribute table"""
         tlist      = self.FindWindowById(self.layerPage[self.selLayer]['data'])
         table     = self.dbMgrData['mapDBInfo'].layers[self.selLayer]['table']
         keyColumn = self.dbMgrData['mapDBInfo'].layers[self.selLayer]['key']
@@ -1478,7 +1484,7 @@
 
         
     def OnDataItemDelete(self, event):
-        """!Delete selected item(s) from the tlist (layer/category pair)"""
+        """Delete selected item(s) from the tlist (layer/category pair)"""
         dlist = self.FindWindowById(self.layerPage[self.selLayer]['data'])
         item = dlist.GetFirstSelected()
         
@@ -1542,7 +1548,7 @@
         return True
 
     def OnDataItemDeleteAll(self, event):
-        """!Delete all items from the list"""
+        """Delete all items from the list"""
         dlist = self.FindWindowById(self.layerPage[self.selLayer]['data'])
         if UserSettings.Get(group = 'atm', key = 'askOnDeleteRec', subkey = 'enabled'):
             deleteDialog = wx.MessageBox(parent = self,
@@ -1567,7 +1573,7 @@
         event.Skip()
 
     def _drawSelected(self, zoom, selectedOnly=True):
-        """!Highlight selected features"""
+        """Highlight selected features"""
         if not self.map or not self.mapdisplay:
             return
         
@@ -1648,9 +1654,9 @@
             self.mapdisplay.MapWindow.UpdateMap(render = False, renderVector = True)
         
     def AddQueryMapLayer(self, selectedOnly = True):
-        """!Redraw a map
+        """Redraw a map
 
-        Return True if map has been redrawn, False if no map is given
+        :return: True if map has been redrawn, False if no map is given
         """
         tlist = self.FindWindowById(self.layerPage[self.selLayer]['data'])
         if selectedOnly:
@@ -1671,12 +1677,12 @@
         return self.qlayer
 
     def OnDataReload(self, event):
-        """!Reload tlist of records"""
+        """Reload tlist of records"""
         self.OnApplySqlStatement(None)
         self.listOfSQLStatements = []
 
     def OnDataSelectAll(self, event):
-        """!Select all items"""
+        """Select all items"""
         tlist = self.FindWindowById(self.layerPage[self.selLayer]['data'])
         item = -1
 
@@ -1689,7 +1695,7 @@
         event.Skip()
 
     def OnDataSelectNone(self, event):
-        """!Deselect items"""
+        """Deselect items"""
         tlist = self.FindWindowById(self.layerPage[self.selLayer]['data'])
         item = -1
 
@@ -1703,7 +1709,7 @@
 
 
     def OnDataDrawSelected(self, event):
-        """!Reload table description"""
+        """Reload table description"""
         self._drawSelected(zoom = False)
         event.Skip()
 
@@ -1712,7 +1718,7 @@
         event.Skip()
  
     def OnExtractSelected(self, event):
-        """!Extract vector objects selected in attribute browse window
+        """Extract vector objects selected in attribute browse window
         to new vector map
         """
         tlist = self.FindWindowById(self.layerPage[self.selLayer]['data'])
@@ -1746,7 +1752,7 @@
             dlg.Destroy()
             
     def OnDeleteSelected(self, event):
-        """!Delete vector objects selected in attribute browse window
+        """Delete vector objects selected in attribute browse window
         (attribures and geometry)
         """
         tlist = self.FindWindowById(self.layerPage[self.selLayer]['data'])
@@ -1782,7 +1788,7 @@
             self.mapdisplay.MapWindow.UpdateMap(render = True, renderVector = True)
      
     def OnApplySqlStatement(self, event):
-        """!Apply simple/advanced sql statement"""
+        """Apply simple/advanced sql statement"""
         keyColumn = -1 # index of key column
         listWin = self.FindWindowById(self.layerPage[self.selLayer]['data'])
         sql = None
@@ -1859,7 +1865,7 @@
                 self.mapdisplay.MapWindow.UpdateMap(render=False) # TODO: replace by signals
 
     def OnBuilder(self,event):
-        """!SQL Builder button pressed -> show the SQLBuilder dialog"""
+        """SQL Builder button pressed -> show the SQLBuilder dialog"""
         if not self.builder:
             self.builder = SQLBuilderSelect(parent = self, id = wx.ID_ANY, 
                                             vectmap = self.dbMgrData['vectName'],
@@ -1883,10 +1889,10 @@
             self.builder = None
 
     def ValidateSelectStatement(self, statement):
-        """!Validate SQL select statement
+        """Validate SQL select statement
 
-        @return (columns, where)
-        @return None on error
+        :return: (columns, where)
+        :return: None on error
         """
         if statement[0:7].lower() != 'select ':
             return None
@@ -1922,15 +1928,15 @@
         return (cols, where)
 
     def LoadData(self, layer, columns = None, where = None, sql = None):
-        """!Load data into list
+        """Load data into list
 
-        @param layer layer number
-        @param columns list of columns for output
-        @param where where statement
-        @param sql full sql statement
+        :param int layer: layer number
+        :param list columns: list of columns for output
+        :param str where: where statement
+        :param str sql: full sql statement
 
-        @return id of key column 
-        @return -1 if key column is not displayed
+        :return: id of key column 
+        :return: -1 if key column is not displayed
         """
         listWin = self.FindWindowById(self.layerPage[layer]['data'])
         return listWin.LoadData(layer, columns, where, sql)
@@ -1943,11 +1949,12 @@
 
 class DbMgrTablesPage(DbMgrNotebookBase):   
     def __init__(self, parent, parentDbMgrBase, onlyLayer = -1):
-        """!Page for managing tables
+        """Page for managing tables
 
-        @param parent GUI parent
-        @param parentDbMgrBase instance of DbMgrBase class
-        @param onlyLayer create only tab of given layer, if -1 creates tabs of all layers 
+        :param parent: GUI parent
+        :param parentDbMgrBase: instance of DbMgrBase class
+        :param onlyLayer: create only tab of given layer, if -1
+                          creates tabs of all layers 
         """
 
         DbMgrNotebookBase.__init__(self, parent = parent,
@@ -1963,13 +1970,13 @@
             self.selLayer = self.layers[0]
 
     def AddLayer(self, layer, pos = -1):
-        """!Adds tab which represents table 
+        """Adds tab which represents table 
 
-        @param layer vector map layer connected to table
-        @param pos position of tab, if -1 it is added to end
+        :param layer: vector map layer connected to table
+        :param pos: position of tab, if -1 it is added to end
 
-        @return True if layer was added 
-        @return False if layer was not added - layer has been already added or does not exist 
+        :return: True if layer was added 
+        :return: False if layer was not added - layer has been already added or does not exist 
         """
         if layer in self.layers or \
             layer not in self.parentDbMgrBase.GetVectorLayers():
@@ -2138,7 +2145,7 @@
         return True
 
     def _createTableDesc(self, parent, table):
-        """!Create list with table description"""
+        """Create list with table description"""
         tlist = TableListCtrl(parent = parent, id = wx.ID_ANY,
                              table = self.dbMgrData['mapDBInfo'].tables[table],
                              columns = self.dbMgrData['mapDBInfo'].GetColumns(table))
@@ -2150,7 +2157,7 @@
         return tlist
 
     def OnTableChangeType(self, event):
-        """!Data type for new column changed. Enable or disable
+        """Data type for new column changed. Enable or disable
         data length widget"""
         win = self.FindWindowById(self.layerPage[self.selLayer]['addColLength'])
         if event.GetString() == "varchar":
@@ -2159,7 +2166,7 @@
             win.Enable(False)
 
     def OnTableRenameColumnName(self, event):
-        """!Editing column name to be added to the table"""
+        """Editing column name to be added to the table"""
         btn  = self.FindWindowById(self.layerPage[self.selLayer]['renameColButton'])
         col  = self.FindWindowById(self.layerPage[self.selLayer]['renameCol'])
         colTo = self.FindWindowById(self.layerPage[self.selLayer]['renameColTo'])
@@ -2171,7 +2178,7 @@
         event.Skip()
 
     def OnTableAddColumnName(self, event):
-        """!Editing column name to be added to the table"""
+        """Editing column name to be added to the table"""
         btn = self.FindWindowById(self.layerPage[self.selLayer]['addColButton'])
         if len(event.GetString()) > 0:
             btn.Enable(True)
@@ -2181,7 +2188,7 @@
         event.Skip()
 
     def OnTableItemChange(self, event):
-        """!Rename column in the table"""
+        """Rename column in the table"""
         tlist   = self.FindWindowById(self.layerPage[self.selLayer]['tableData'])
         name   = self.FindWindowById(self.layerPage[self.selLayer]['renameCol']).GetValue()
         nameTo = self.FindWindowById(self.layerPage[self.selLayer]['renameColTo']).GetValue()
@@ -2230,7 +2237,7 @@
         event.Skip()
 
     def OnTableRightUp(self, event):
-        """!Table description area, context menu"""
+        """Table description area, context menu"""
         if not hasattr(self, "popupTableID"):
             self.popupTableID1 = wx.NewId()
             self.popupTableID2 = wx.NewId()
@@ -2256,7 +2263,7 @@
         menu.Destroy()
 
     def OnTableItemDelete(self, event):
-        """!Delete selected item(s) from the list"""
+        """Delete selected item(s) from the list"""
         tlist = self.FindWindowById(self.layerPage[self.selLayer]['tableData'])
         
         item = tlist.GetFirstSelected()
@@ -2301,7 +2308,7 @@
         event.Skip()
 
     def OnTableItemDeleteAll(self, event):
-        """!Delete all items from the list"""
+        """Delete all items from the list"""
         table     = self.dbMgrData['mapDBInfo'].layers[self.selLayer]['table']
         cols      = self.dbMgrData['mapDBInfo'].GetColumns(table)
         keyColumn = self.dbMgrData['mapDBInfo'].layers[self.selLayer]['key']
@@ -2337,12 +2344,12 @@
         event.Skip()
 
     def OnTableReload(self, event = None):
-        """!Reload table description"""
+        """Reload table description"""
         self.FindWindowById(self.layerPage[self.selLayer]['tableData']).Populate(update = True)
         self.listOfCommands = []
 
     def OnTableItemAdd(self, event):
-        """!Add new column to the table"""
+        """Add new column to the table"""
         name = self.FindWindowById(self.layerPage[self.selLayer]['addColName']).GetValue()
                 
         ctype = self.FindWindowById(self.layerPage[self.selLayer]['addColType']). \
@@ -2383,7 +2390,7 @@
 
 class DbMgrLayersPage(wx.Panel):
     def __init__(self, parent, parentDbMgrBase):
-        """!Create layer manage page"""
+        """Create layer manage page"""
         self.parentDbMgrBase = parentDbMgrBase
         self.dbMgrData = self.parentDbMgrBase.dbMgrData
 
@@ -2445,7 +2452,7 @@
         self.SetSizer(panelSizer)
 
     def _createLayerDesc(self, parent):
-        """!Create list of linked layers"""
+        """Create list of linked layers"""
         tlist = LayerListCtrl(parent = parent, id = wx.ID_ANY,
                              layers = self.dbMgrData['mapDBInfo'].layers)
         
@@ -2488,13 +2495,13 @@
         self.manageLayerBook.OnChangeLayer(event = None)
 
     def OnLayerRightUp(self, event):
-        """!Layer description area, context menu"""
+        """Layer description area, context menu"""
         pass
 
 class TableListCtrl(wx.ListCtrl,
                     listmix.ListCtrlAutoWidthMixin):
     #                    listmix.TextEditMixin):
-    """!Table description list"""
+    """Table description list"""
 
     def __init__(self, parent, id, table, columns, pos = wx.DefaultPosition,
                  size = wx.DefaultSize):
@@ -2510,12 +2517,12 @@
         # listmix.TextEditMixin.__init__(self)
 
     def Update(self, table, columns):
-        """!Update column description"""
+        """Update column description"""
         self.table   = table
         self.columns = columns
 
     def Populate(self, update = False):
-        """!Populate the list"""
+        """Populate the list"""
         itemData = {} # requested by sorter
 
         if not update:
@@ -2549,7 +2556,7 @@
                     listmix.ListCtrlAutoWidthMixin):
                     # listmix.ColumnSorterMixin):
                     # listmix.TextEditMixin):
-    """!Layer description list"""
+    """Layer description list"""
 
     def __init__(self, parent, id, layers,
                  pos = wx.DefaultPosition,
@@ -2565,11 +2572,11 @@
         # listmix.TextEditMixin.__init__(self)
 
     def Update(self, layers):
-        """!Update description"""
+        """Update description"""
         self.layers = layers
 
     def Populate(self, update = False):
-        """!Populate the list"""
+        """Populate the list"""
         itemData = {} # requested by sorter
 
         if not update:
@@ -2611,7 +2618,7 @@
         return itemData
 
 class LayerBook(wx.Notebook):
-    """!Manage layers (add, delete, modify)"""
+    """Manage layers (add, delete, modify)"""
     def __init__(self, parent, id,
                  parentDialog,
                  style = wx.BK_DEFAULT):
@@ -2667,7 +2674,7 @@
         self._createModifyPage()
 
     def _createAddPage(self):
-        """!Add new layer"""
+        """Add new layer"""
         self.addPanel = wx.Panel(parent = self, id = wx.ID_ANY)
         self.AddPage(page = self.addPanel, text = _("Add layer"))
         
@@ -2861,7 +2868,7 @@
         pageSizer.Fit(self.addPanel)
         
     def _createDeletePage(self):
-        """!Delete layer"""
+        """Delete layer"""
         self.deletePanel = wx.Panel(parent = self, id = wx.ID_ANY)
         self.AddPage(page = self.deletePanel, text = _("Remove layer"))
 
@@ -2928,7 +2935,7 @@
         self.deletePanel.SetSizer(pageSizer)
 
     def _createModifyPage(self):
-        """!Modify layer"""
+        """Modify layer"""
         self.modifyPanel = wx.Panel(parent = self, id = wx.ID_ANY)
         self.AddPage(page = self.modifyPanel, text = _("Modify layer"))
 
@@ -3038,7 +3045,7 @@
         self.modifyPanel.SetSizer(pageSizer)
 
     def _getTables(self, driver, database):
-        """!Get list of tables for given driver and database"""
+        """Get list of tables for given driver and database"""
         tables = []
 
         ret = RunCommand('db.tables',
@@ -3061,7 +3068,7 @@
         return tables
 
     def _getColumns(self, driver, database, table):
-        """!Get list of column of given table"""
+        """Get list of column of given table"""
         columns = []
 
         ret = RunCommand('db.columns',
@@ -3081,7 +3088,7 @@
         return columns
 
     def OnDriverChanged(self, event):
-        """!Driver selection changed, update list of tables"""
+        """Driver selection changed, update list of tables"""
         driver = event.GetString()
         database = self.addLayerWidgets['database'][1].GetValue()
 
@@ -3098,11 +3105,11 @@
         event.Skip()
 
     def OnDatabaseChanged(self, event):
-        """!Database selection changed, update list of tables"""
+        """Database selection changed, update list of tables"""
         event.Skip()
 
     def OnTableChanged(self, event):
-        """!Table name changed, update list of columns"""
+        """Table name changed, update list of columns"""
         driver   = self.addLayerWidgets['driver'][1].GetStringSelection()
         database = self.addLayerWidgets['database'][1].GetValue()
         table    = event.GetString()
@@ -3115,7 +3122,7 @@
         event.Skip()
 
     def OnSetDefault(self, event):
-        """!Set default values"""
+        """Set default values"""
         driver   = self.addLayerWidgets['driver'][1]
         database = self.addLayerWidgets['database'][1]
         table    = self.addLayerWidgets['table'][1]
@@ -3139,7 +3146,7 @@
         event.Skip()
 
     def OnCreateTable(self, event):
-        """!Create new table (name and key column given)"""
+        """Create new table (name and key column given)"""
         driver   = self.addLayerWidgets['driver'][1].GetStringSelection()
         database = self.addLayerWidgets['database'][1].GetValue()
         table    = self.tableWidgets['table'][1].GetValue()
@@ -3181,7 +3188,7 @@
         event.Skip()
 
     def OnAddLayer(self, event):
-        """!Add new layer to vector map"""
+        """Add new layer to vector map"""
         layer    = int(self.addLayerWidgets['layer'][1].GetValue())
         layerWin = self.addLayerWidgets['layer'][1]
         driver   = self.addLayerWidgets['driver'][1].GetStringSelection()
@@ -3234,7 +3241,7 @@
                 self.modifyLayerWidgets[label][1].Enable()
             
     def OnDeleteLayer(self, event):
-        """!Delete layer"""
+        """Delete layer"""
         try:
             layer = int(self.deleteLayer.GetValue())
         except:
@@ -3280,7 +3287,7 @@
         event.Skip()
 
     def OnChangeLayer(self, event):
-        """!Layer number of layer to be deleted is changed"""
+        """Layer number of layer to be deleted is changed"""
         try:
             layer = int(event.GetString())
         except:
@@ -3306,7 +3313,7 @@
             event.Skip()
 
     def OnModifyLayer(self, event):
-        """!Modify layer connection settings"""
+        """Modify layer connection settings"""
 
         layer = int(self.modifyLayerWidgets['layer'][1].GetStringSelection())
 

Modified: grass/trunk/gui/wxpython/dbmgr/dialogs.py
===================================================================
--- grass/trunk/gui/wxpython/dbmgr/dialogs.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/dbmgr/dialogs.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package dbmgr.dialogs
 
 @brief DBM-related dialogs
@@ -37,21 +37,21 @@
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER,
                  pos = wx.DefaultPosition,
                  action = "add", ignoreError = False):
-        """!Standard dialog used to add/update/display attributes linked
+        """Standard dialog used to add/update/display attributes linked
         to the vector map.
         
         Attribute data can be selected based on layer and category number
         or coordinates.
         
-        @param parent
-        @param map vector map
-        @param query query coordinates and distance (used for v.edit)
-        @param cats {layer: cats}
-        @param line feature id (requested for cats)
-        @param style
-        @param pos
-        @param action (add, update, display)
-        @param ignoreError True to ignore errors
+        :param parent:
+        :param map: vector map
+        :param query: query coordinates and distance (used for v.edit)
+        :param cats: {layer: cats}
+        :param line: feature id (requested for cats)
+        :param style:
+        :param pos:
+        :param action: (add, update, display)
+        :param ignoreError: True to ignore errors
         """
         self.parent = parent # mapdisplay.BufferedWindow
         self.map    = map
@@ -175,19 +175,19 @@
             ### self.mapDBInfo = None
         
     def OnSQLStatement(self, event):
-        """!Update SQL statement"""
+        """Update SQL statement"""
         pass
 
     def IsFound(self):
-        """!Check for status
+        """Check for status
 
-        @return True on attributes found
-        @return False attributes not found
+        :return: True on attributes found
+        :return: False attributes not found
         """
         return bool(self.mapDBInfo and self.notebook.GetPageCount() > 0)
     
     def GetSQLString(self, updateValues = False):
-        """!Create SQL statement string based on self.sqlStatement
+        """Create SQL statement string based on self.sqlStatement
 
         Show error message when invalid values are entered.
         
@@ -279,7 +279,7 @@
         return sqlCommands
 
     def OnReset(self, event = None):
-        """!Reset form"""
+        """Reset form"""
         for layer in self.mapDBInfo.layers.keys():
             table = self.mapDBInfo.layers[layer]["table"]
             key = self.mapDBInfo.layers[layer]["key"]
@@ -299,7 +299,7 @@
                         self.FindWindowById(id).SetValue(str(value))
 
     def OnClose(self, event):
-        """!Closes dialog and removes query layer.
+        """Closes dialog and removes query layer.
         """
         frame = self.parent.parent
         frame.dialogs['attributes'] = None
@@ -314,7 +314,7 @@
         self.Destroy()
 
     def OnSubmit(self, event):
-        """!Submit records"""
+        """Submit records"""
         layer = 1
         close = True
         enc = UserSettings.Get(group = 'atm', key = 'encoding', subkey = 'value')
@@ -348,9 +348,9 @@
         self.UpdateDialog(cats = self.cats, fid = self.fid)
         
     def GetCats(self):
-        """!Get id of selected vector object or 'None' if nothing selected
+        """Get id of selected vector object or 'None' if nothing selected
 
-        @param id if true return ids otherwise cats
+        :param id: if true return ids otherwise cats
         """
         if self.fid < 0:
             return None
@@ -358,21 +358,21 @@
         return self.cats[self.fid]
 
     def GetFid(self):
-        """!Get selected feature id"""
+        """Get selected feature id"""
         return self.fid
     
     def UpdateDialog(self, map = None, query = None, cats = None, fid = -1,
                      action = None):
-        """!Update dialog
+        """Update dialog
         
-        @param map name of vector map
-        @param query
-        @param cats
-        @param fid feature id
-        @param action add, update, display or None
+        :param map: name of vector map
+        :param query:
+        :param cats:
+        :param fid: feature id
+        :param action: add, update, display or None
         
-        @return True if updated
-        @return False
+        :return: True if updated
+        :return: False
         """
         if action:
             self.action = action
@@ -555,10 +555,10 @@
         return True
 
     def SetColumnValue(self, layer, column, value):
-        """!Set attrbute value
+        """Set attrbute value
 
-        @param column column name
-        @param value value
+        :param column: column name
+        :param value: value
         """
         table = self.mapDBInfo.GetTable(layer)
         columns = self.mapDBInfo.GetTableDesc(table)
@@ -571,11 +571,11 @@
 class ModifyTableRecord(wx.Dialog):
     def __init__(self, parent, title, data, keyEditable = (-1, True),
                  id = wx.ID_ANY, style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER):
-        """!Dialog for inserting/updating table record
+        """Dialog for inserting/updating table record
         
-        @param data a list: [(column, value)]
-        @param KeyEditable (id, editable?) indicates if textarea for key column
-        is editable(True) or not
+        :param data: a list: [(column, value)]
+        :param keyEditable: (id, editable?) indicates if textarea for
+                            key column is editable(True) or not
         """
         # parent -> VDigitWindow
         wx.Dialog.__init__(self, parent, id, title, style = style)
@@ -637,7 +637,7 @@
         self._layout()
         
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         sizer = wx.BoxSizer(wx.VERTICAL)
         
         # data area
@@ -690,7 +690,7 @@
         self.Layout()
         
     def GetValues(self, columns = None):
-        """!Return list of values (casted to string).
+        """Return list of values (casted to string).
         
         If columns is given (list), return only values of given columns.
         """
@@ -710,7 +710,7 @@
 class AddColumnDialog(wx.Dialog):
     def __init__(self, parent, title, id = wx.ID_ANY,
                  style = wx.DEFAULT_DIALOG_STYLE  | wx.RESIZE_BORDER):
-        """!Dialog for adding column into table
+        """Dialog for adding column into table
         """
         wx.Dialog.__init__(self, parent, id, title, style = style)
         
@@ -784,7 +784,7 @@
         self.Fit()
 
     def GetData(self):
-        """!Get inserted data from dialog's widgets"""
+        """Get inserted data from dialog's widgets"""
         values = {}
         values['name'] = self.data['addColName'].GetValue()
         values['ctype'] = self.data['addColType'].GetStringSelection()
@@ -793,7 +793,7 @@
         return values
   
     def OnTableChangeType(self, event):
-        """!Data type for new column changed. Enable or disable
+        """Data type for new column changed. Enable or disable
         data length widget"""
         if event.GetString() == "varchar":
             self.data['addColLength'].Enable(True)

Modified: grass/trunk/gui/wxpython/dbmgr/manager.py
===================================================================
--- grass/trunk/gui/wxpython/dbmgr/manager.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/dbmgr/manager.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package dbmgr.manager
 
 @brief GRASS Attribute Table Manager
@@ -41,16 +41,16 @@
     def __init__(self, parent, id = wx.ID_ANY,
                  title = None, vectorName = None, item = None, log = None,
                  selection = None, **kwargs):
-        """!GRASS Attribute Table Manager window
+        """GRASS Attribute Table Manager window
 
-        @param parent parent window
-        @param 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
+        :param parent: parent window
+        :param id: window id
+        :param title: window title or None for default title
+        :param vectorName: 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.parent = parent
         try:
@@ -136,7 +136,7 @@
         self.SetMinSize(self.GetSize())
     
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         # frame body
         mainSizer = wx.BoxSizer(wx.VERTICAL)
 
@@ -156,7 +156,7 @@
         self.Layout()
   
     def OnCloseWindow(self, event):
-        """!Cancel button pressed"""
+        """Cancel button pressed"""
         if self.parent and self.parent.GetName() == 'LayerManager':
             # deregister ATM
             self.parent.dialogs['atm'].remove(self)
@@ -172,7 +172,7 @@
             self.pages['browse'].OnDataReload(event) # TODO replace by signal
         
     def OnPageChanged(self, event):
-        """!On page in ATM is changed"""
+        """On page in ATM is changed"""
         try:
             if self.pages["browse"]:
                 selPage = self.pages["browse"].selLayer
@@ -199,7 +199,7 @@
         pass
 
     def UpdateDialog(self, layer):
-        """!Updates dialog layout for given layer"""
+        """Updates dialog layout for given layer"""
         DbMgrBase.UpdateDialog(self, layer = layer)
         # set current page selection
         self.notebook.SetSelectionByName('layers') 

Modified: grass/trunk/gui/wxpython/dbmgr/sqlbuilder.py
===================================================================
--- grass/trunk/gui/wxpython/dbmgr/sqlbuilder.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/dbmgr/sqlbuilder.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package dbmgr.sqlbuilder
 
 @brief GRASS SQL Select/Update Builder
@@ -39,7 +39,7 @@
 import grass.script as grass
 
 class SQLBuilder(wx.Frame):
-    """!SQLBuider class
+    """SQLBuider class
     Base class for classes, which builds SQL statements.
     """
     def __init__(self, parent, title, vectmap, modeChoices, id = wx.ID_ANY,
@@ -73,7 +73,7 @@
         self._doLayout(modeChoices)
 
     def _doLayout(self, modeChoices):
-        """!Do dialog layout"""
+        """Do dialog layout"""
         
         self.pagesizer = wx.BoxSizer(wx.VERTICAL)
 
@@ -281,7 +281,7 @@
         self.CenterOnParent()
    
     def OnUniqueValues(self, event, justsample = False):
-        """!Get unique values"""
+        """Get unique values"""
         vals = []
         try:
             idx = self.list_columns.GetSelections()[0]
@@ -313,11 +313,11 @@
             i += 1
         
     def OnSampleValues(self, event):
-        """!Get sample values"""
+        """Get sample values"""
         self.OnUniqueValues(None, True)
 
     def OnAddColumn(self, event):
-        """!Add column name to the query"""
+        """Add column name to the query"""
         idx = self.list_columns.GetSelections()
         for i in idx:
             column = self.list_columns.GetString(i)
@@ -328,7 +328,7 @@
             self.btn_unique.Enable(True)
         
     def OnAddValue(self, event):
-        """!Add value"""
+        """Add value"""
         selection = self.list_values.GetSelections()
         if not selection:
             event.Skip()
@@ -364,7 +364,7 @@
             self.list_values.SetSelection(found)
             
     def OnAddMark(self, event):
-        """!Add mark"""
+        """Add mark"""
         mark = None
         if self.btn_logicpanel and \
            self.btn_logicpanel.IsShown():
@@ -381,7 +381,7 @@
         self._add(element = 'mark', value = mark)
 
     def GetSQLStatement(self):
-        """!Return SQL statement"""
+        """Return SQL statement"""
         return self.text_sql.GetValue().strip().replace("\n"," ")
         
     def OnClose(self, event):
@@ -389,7 +389,7 @@
         event.Skip()
  
 class SQLBuilderSelect(SQLBuilder):
-    """!Class for building SELECT SQL statement"""
+    """Class for building SELECT SQL statement"""
     def __init__(self, parent, vectmap, id = wx.ID_ANY,
                  layer = 1, evtHandler = None):
 
@@ -407,7 +407,7 @@
 
 
     def _doLayout(self, modeChoices):
-        """!Do dialog layout"""
+        """Do dialog layout"""
 
         SQLBuilder._doLayout(self, modeChoices)
 
@@ -437,11 +437,11 @@
         event.Skip()
 
     def OnClear(self, event):
-        """!Clear button pressed"""
+        """Clear button pressed"""
         self.text_sql.SetValue("SELECT * FROM %s" % self.tablename)
 
     def OnMode(self, event):
-        """!Adjusts builder for chosen mode"""
+        """Adjusts builder for chosen mode"""
         if self.mode.GetSelection() == 0:
             self.valuespanel.Hide()
             self.btn_logicpanel.Hide()
@@ -458,7 +458,7 @@
             self.btn_verify.Enable(False)
             
     def OnVerify(self, event):
-        """!Verify button pressed"""
+        """Verify button pressed"""
         ret, msg = RunCommand('db.select',
                               getErrorMsg = True,
                               table = self.tablename,
@@ -475,9 +475,9 @@
             self.statusbar.SetStatusText(_("SQL statement is valid"), 0)
 
     def _add(self, element, value):
-        """!Add element to the query
+        """Add element to the query
 
-        @param element element to add (column, value)
+        :param element: element to add (column, value)
         """
         sqlstr = self.text_sql.GetValue()
         curspos = self.text_sql.GetInsertionPoint()
@@ -521,18 +521,18 @@
         self.text_sql.SetInsertionPoint(curspos)
 
     def CloseOnApply(self):
-        """!Return True if the dialog will be close on apply"""
+        """Return True if the dialog will be close on apply"""
         return self.close_onapply.IsChecked()
 
     def OnClose(self, event):
-        """!Close button pressed"""
+        """Close button pressed"""
         if self.evtHandler:
             self.evtHandler(event = 'close')
     
         SQLBuilder.OnClose(self, event)
 
 class SQLBuilderUpdate(SQLBuilder):
-    """!Class for building UPDATE SQL statement"""
+    """Class for building UPDATE SQL statement"""
     def __init__(self, parent, vectmap, id = wx.ID_ANY,
                  layer = 1, column = None):
 
@@ -554,7 +554,7 @@
             self.sqlApplied.connect(parent.Update)
 
     def _doLayout(self, modeChoices):
-        """!Do dialog layout"""
+        """Do dialog layout"""
 
         SQLBuilder._doLayout(self, modeChoices)
 
@@ -638,11 +638,11 @@
         self.sqlApplied.emit()
 
     def OnClear(self, event):
-        """!Clear button pressed"""
+        """Clear button pressed"""
         self.text_sql.SetValue(self.initText)
 
     def OnMode(self, event):
-        """!Adjusts builder for chosen mode"""
+        """Adjusts builder for chosen mode"""
         if self.mode.GetSelection() == 0:
             self.valuespanel.Hide()
             self.btn_logicpanel.Hide()
@@ -662,7 +662,7 @@
 
 
     def OnAddFunc(self, event):
-        """!Add function to the query"""
+        """Add function to the query"""
 
         if self.driver == 'dbf':
             GMessage(parent = self,
@@ -676,9 +676,9 @@
         
 
     def _add(self, element, value):
-        """!Add element to the query
+        """Add element to the query
 
-        @param element element to add (column, value)
+        :param element: element to add (column, value)
         """
         sqlstr = self.text_sql.GetValue()
         curspos = self.text_sql.GetInsertionPoint()

Modified: grass/trunk/gui/wxpython/dbmgr/vinfo.py
===================================================================
--- grass/trunk/gui/wxpython/dbmgr/vinfo.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/dbmgr/vinfo.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -26,11 +26,11 @@
 import grass.script as grass
 
 def GetUnicodeValue(value):
-    """!Get unicode value
+    """Get unicode value
 
-    @param value value to be recoded
+    :param value: value to be recoded
 
-    @return unicode value
+    :return: unicode value
     """
     if type(value) == types.UnicodeType:
         return value
@@ -44,7 +44,7 @@
     return unicode(str(value), enc, errors = 'replace')
 
 def CreateDbInfoDesc(panel, mapDBInfo, layer):
-    """!Create database connection information content"""
+    """Create database connection information content"""
     infoFlexSizer = wx.FlexGridSizer (cols = 2, hgap = 1, vgap = 1)
     infoFlexSizer.AddGrowableCol(1)
     
@@ -68,13 +68,13 @@
     return infoFlexSizer
         
 class VectorDBInfo(VectorDBInfoBase):
-    """!Class providing information about attribute tables
+    """Class providing information about attribute tables
     linked to the vector map"""
     def __init__(self, map):
         VectorDBInfoBase.__init__(self, map)
         
     def GetColumns(self, table):
-        """!Return list of columns names (based on their index)"""
+        """Return list of columns names (based on their index)"""
         try:
             names = [''] * len(self.tables[table].keys())
         except KeyError:
@@ -86,7 +86,7 @@
         return names
 
     def SelectByPoint(self, queryCoords, qdist):
-        """!Get attributes by coordinates (all available layers)
+        """Get attributes by coordinates (all available layers)
 
         Return line id or None if no line is found"""
         line = None
@@ -130,7 +130,7 @@
         return ret
     
     def SelectFromTable(self, layer, cols = '*', where = None):
-        """!Select records from the table
+        """Select records from the table
 
         Return number of selected records, -1 on error
         """

Added: grass/trunk/gui/wxpython/docs/wxgui_sphinx/Makefile
===================================================================
--- grass/trunk/gui/wxpython/docs/wxgui_sphinx/Makefile	                        (rev 0)
+++ grass/trunk/gui/wxpython/docs/wxgui_sphinx/Makefile	2014-06-13 09:32:40 UTC (rev 60817)
@@ -0,0 +1,101 @@
+# Makefile for Sphinx documentation
+#
+MODULE_TOPDIR=../../../..
+include $(MODULE_TOPDIR)/include/Make/Vars.make
+include $(MODULE_TOPDIR)/include/Make/Rules.make
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+
+PAPER         =
+BUILDDIR      = _build
+BUILDDIR_HTML = $(HTMLDIR)/wxgui
+
+MYGISBASE = $(GISBASE)
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
+
+.DEFAULT_GOAL := help
+
+ifneq (@(type sphinx-apidoc2 > /dev/null),)
+SPHINXAPIDOC   = sphinx-apidoc2
+endif
+ifneq (@(type sphinx-apidoc > /dev/null),)
+SPHINXAPIDOC   = sphinx-apidoc
+endif
+
+ifneq (@(type sphinx-build2 > /dev/null),)
+SPHINXBUILD   = sphinx-build2
+endif
+ifneq (@(type sphinx-build > /dev/null),)
+SPHINXBUILD   = sphinx-build
+endif
+
+
+wxguihelp:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html       to make standalone HTML files"
+	@echo "  dirhtml    to make HTML files named index.html in directories"
+	@echo "  singlehtml to make a single large HTML file"
+	@echo "  epub       to make an epub"
+	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+	@echo "  man        to make manual pages"
+	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+wxguiclean:
+	-rm -rf $(BUILDDIR)/*
+	-rm -f _templates/layout.html
+
+wxguiapidoc:
+	$(call run_grass, $(SPHINXAPIDOC) -T -f -o . ../../)
+	
+wxguihtml:
+	$(call run_grass,$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR_HTML))
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR_HTML)"
+
+wxguidirhtml:
+	$(call run_grass,$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR_HTML))
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR_HTML)"
+
+wxguisinglehtml:
+	$(call run_grass,$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR_HTML))
+	@echo
+	@echo "Build finished. The HTML page is in $(BUILDDIR_HTML)"
+
+wxguiepub:
+	$(call run_grass,$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub)
+	@echo
+	@echo "Build finished. The epub file is in $(BUILDDIR)/epub/"
+
+wxguilatex:
+	$(call run_grass,$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex)
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make' in that directory to run these through (pdf)latex" \
+	      "(use \`make latexpdf' here to do that automatically)."
+
+wxguilatexpdf:
+	$(call run_grass,$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex)
+	@echo "Running LaTeX files through pdflatex..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex/"
+
+wxguiman:
+	$(call run_grass,$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(MANDIR))
+	@echo
+	@echo "Build finished. The manual pages are in $(MANDIR)/"
+
+wxguidoctest:
+	$(call run_grass,$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest)
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."

Added: grass/trunk/gui/wxpython/docs/wxgui_sphinx/_static/pygrass.css
===================================================================
--- grass/trunk/gui/wxpython/docs/wxgui_sphinx/_static/pygrass.css	                        (rev 0)
+++ grass/trunk/gui/wxpython/docs/wxgui_sphinx/_static/pygrass.css	2014-06-13 09:32:40 UTC (rev 60817)
@@ -0,0 +1,74 @@
+/* GRASS documentation site style sheet
+ *
+ * send improvements to GRASS Developers list
+ * 
+ *  (eg how to reach the same result on netscape, mozilla konqueror?)
+ *
+ * Fonts:
+ *	http://www.w3.org/TR/REC-CSS2/fonts.html
+ * Tables:
+ *	http://www.w3.org/TR/REC-CSS2/tables.html
+ */
+
+body{
+    background: white;
+    color: black;
+    font-family: arial,sans-serif;
+    width: 99%;
+    margin: 8px;
+}
+
+hr.header {
+    height: 3px;
+    color: gray;
+    background-color: gray;
+    width: 100%;
+}
+
+h1{
+    background-color: transparent;
+    color: rgb(25%, 60%, 25%);
+    font-family: arial,sans-serif;
+    font-weight: bold;
+    font-size: x-large;
+}
+
+h2{
+    background-color: transparent;
+    color: rgb(25%, 60%, 25%);
+    font-family: arial,sans-serif;
+    font-weight: bold;
+    font-size: large;
+}
+
+h3{
+    background-color: transparent;
+    color: rgb(25%, 60%, 25%);
+    font-family: arial,sans-serif;
+    font-weight: bold;
+    font-size: large;
+}
+
+h4{
+    background-color: transparent;
+    color: rgb(25%, 60%, 25%);
+    font-family: arial,sans-serif;
+    font-weight: bold;
+    font-size: medium;
+}
+
+table.border {
+    border-collapse:collapse;
+}
+
+table.border td {
+    border: 1px solid rgb(25%, 60%, 25%);
+}
+
+td {
+    padding: 5px;
+}
+
+div.related {
+    background-color: transparent;
+}

Added: grass/trunk/gui/wxpython/docs/wxgui_sphinx/_templates/layout.html.template
===================================================================
--- grass/trunk/gui/wxpython/docs/wxgui_sphinx/_templates/layout.html.template	                        (rev 0)
+++ grass/trunk/gui/wxpython/docs/wxgui_sphinx/_templates/layout.html.template	2014-06-13 09:32:40 UTC (rev 60817)
@@ -0,0 +1,9 @@
+{% extends "!layout.html" %}
+{% block extrahead %}
+<link rel="stylesheet" href="{{ pathto('_static/pygrass.css', 1) }}" type="text/css" />
+{% endblock %}
+
+{% block header %}
+<img src="../grass_logo.png" alt="GRASS GIS logo">
+<hr class="header">
+{% endblock %}
\ No newline at end of file

Added: grass/trunk/gui/wxpython/docs/wxgui_sphinx/conf.py
===================================================================
--- grass/trunk/gui/wxpython/docs/wxgui_sphinx/conf.py	                        (rev 0)
+++ grass/trunk/gui/wxpython/docs/wxgui_sphinx/conf.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -0,0 +1,358 @@
+# -*- coding: utf-8 -*-
+#
+# wxGUI documentation build configuration file, created by
+# sphinx-quickstart on Tue Jun  3 09:20:51 2014.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+from datetime import date
+import string
+from shutil import copy
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+if not os.getenv('GISBASE'):
+    sys.exit("GISBASE not defined")
+sys.path.insert(0, os.path.abspath(os.path.join(os.environ['GISBASE'], 'etc', 'python', 'grass')))
+
+from grass.script import core
+
+footer_tmpl = string.Template(\
+r"""
+{% block footer %}<hr class="header">
+<p><a href="../index.html">Help Index</a> | <a href="../topics.html">Topics Index</a> | <a href="../keywords.html">Keywords Index</a> | <a href="../full_index.html">Full Index</a></p>
+<p>© 2003-${year} <a href="http://grass.osgeo.org">GRASS Development Team</a>, GRASS GIS ${grass_version} Reference Manual</p>
+{% endblock %}
+""")
+
+grass_version = core.version()['version']
+today = date.today()
+
+copy("_templates/layout.html.template", "_templates/layout.html")
+with open("_templates/layout.html", "a+b") as f:
+    f.write(footer_tmpl.substitute(grass_version=grass_version, year=today.year))
+    f.close()
+
+# -- General configuration -----------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+    'sphinx.ext.autodoc',
+    'sphinx.ext.doctest',
+    'sphinx.ext.todo',
+    'sphinx.ext.coverage',
+    'sphinx.ext.mathjax',
+    'sphinx.ext.ifconfig',
+    'sphinx.ext.viewcode',
+]
+todo_include_todos = True
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'wxGUI'
+copyright = u'2014, GRASS Development Team'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+#version = '0.1'
+# The full version, including alpha/beta/rc tags.
+#release = '0.1'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+language = 'python'
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all
+# documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+# If true, keep warnings as "system message" paragraphs in the built documents.
+#keep_warnings = False
+
+
+# -- Options for HTML output ----------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+html_theme = 'traditional'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# Add any extra paths that contain custom files (such as robots.txt or
+# .htaccess) here, relative to this directory. These files are copied
+# directly to the root of the documentation.
+#html_extra_path = []
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+html_sidebars = {"**":["localtoc.html",'relations.html','searchbox.html']}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'wxGUIdoc'
+
+
+# -- Options for LaTeX output ---------------------------------------------
+
+latex_elements = {
+# The paper size ('letterpaper' or 'a4paper').
+'papersize': 'a4paper',
+
+# The font size ('10pt', '11pt' or '12pt').
+'pointsize': '10pt',
+
+# Additional stuff for the LaTeX preamble.
+#'preamble': '',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+#  author, documentclass [howto, manual, or own class]).
+latex_documents = [
+  ('index', 'wxGUI.tex', u'wxGUI Documentation',
+   u'GRASS Development Team', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output ---------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    ('index', 'wxgui', u'wxGUI Documentation',
+     [u'GRASS Development Team'], 1)
+]
+
+# If true, show URL addresses after external links.
+#man_show_urls = False
+
+
+# -- Options for Texinfo output -------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+  ('index', 'wxGUI', u'wxGUI Documentation',
+   u'GRASS Development Team', 'wxGUI', 'One line description of project.',
+   'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+#texinfo_appendices = []
+
+# If false, no module index is generated.
+#texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#texinfo_show_urls = 'footnote'
+
+# If true, do not generate a @detailmenu in the "Top" node's menu.
+#texinfo_no_detailmenu = False
+
+
+# -- Options for Epub output ----------------------------------------------
+
+# Bibliographic Dublin Core info.
+epub_title = u'wxGUI'
+epub_author = u'GRASS Development Team'
+epub_publisher = u'GRASS Development Team'
+epub_copyright = u'2014, GRASS Development Team'
+
+# The basename for the epub file. It defaults to the project name.
+#epub_basename = u'wxGUI'
+
+# The HTML theme for the epub output. Since the default themes are not optimized
+# for small screen space, using the same theme for HTML and epub output is
+# usually not wise. This defaults to 'epub', a theme designed to save visual
+# space.
+#epub_theme = 'epub'
+
+# The language of the text. It defaults to the language option
+# or en if the language is not set.
+#epub_language = ''
+
+# The scheme of the identifier. Typical schemes are ISBN or URL.
+#epub_scheme = ''
+
+# The unique identifier of the text. This can be a ISBN number
+# or the project homepage.
+#epub_identifier = ''
+
+# A unique identification for the text.
+#epub_uid = ''
+
+# A tuple containing the cover image and cover page html template filenames.
+#epub_cover = ()
+
+# A sequence of (type, uri, title) tuples for the guide element of content.opf.
+#epub_guide = ()
+
+# HTML files that should be inserted before the pages created by sphinx.
+# The format is a list of tuples containing the path and title.
+#epub_pre_files = []
+
+# HTML files shat should be inserted after the pages created by sphinx.
+# The format is a list of tuples containing the path and title.
+#epub_post_files = []
+
+# A list of files that should not be packed into the epub file.
+epub_exclude_files = ['search.html']
+
+# The depth of the table of contents in toc.ncx.
+#epub_tocdepth = 3
+
+# Allow duplicate toc entries.
+#epub_tocdup = True
+
+# Choose between 'default' and 'includehidden'.
+#epub_tocscope = 'default'
+
+# Fix unsupported image types using the PIL.
+#epub_fix_images = False
+
+# Scale large images.
+#epub_max_image_width = 0
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#epub_show_urls = 'inline'
+
+# If false, no index is generated.
+#epub_use_index = True

Added: grass/trunk/gui/wxpython/docs/wxgui_sphinx/index.rst
===================================================================
--- grass/trunk/gui/wxpython/docs/wxgui_sphinx/index.rst	                        (rev 0)
+++ grass/trunk/gui/wxpython/docs/wxgui_sphinx/index.rst	2014-06-13 09:32:40 UTC (rev 60817)
@@ -0,0 +1,22 @@
+.. wxGUI documentation master file, created by
+   sphinx-quickstart on Tue Jun  3 09:20:51 2014.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+wxGUI documentation
+=================================
+
+.. toctree::
+  :maxdepth: 2
+
+  wxgui_libraries
+  wxgui_tools
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+

Added: grass/trunk/gui/wxpython/docs/wxgui_sphinx/make.bat
===================================================================
--- grass/trunk/gui/wxpython/docs/wxgui_sphinx/make.bat	                        (rev 0)
+++ grass/trunk/gui/wxpython/docs/wxgui_sphinx/make.bat	2014-06-13 09:32:40 UTC (rev 60817)
@@ -0,0 +1,242 @@
+ at ECHO OFF
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+	set SPHINXBUILD=sphinx-build
+)
+set BUILDDIR=_build
+set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
+set I18NSPHINXOPTS=%SPHINXOPTS% .
+if NOT "%PAPER%" == "" (
+	set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
+	set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
+)
+
+if "%1" == "" goto help
+
+if "%1" == "help" (
+	:help
+	echo.Please use `make ^<target^>` where ^<target^> is one of
+	echo.  html       to make standalone HTML files
+	echo.  dirhtml    to make HTML files named index.html in directories
+	echo.  singlehtml to make a single large HTML file
+	echo.  pickle     to make pickle files
+	echo.  json       to make JSON files
+	echo.  htmlhelp   to make HTML files and a HTML help project
+	echo.  qthelp     to make HTML files and a qthelp project
+	echo.  devhelp    to make HTML files and a Devhelp project
+	echo.  epub       to make an epub
+	echo.  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter
+	echo.  text       to make text files
+	echo.  man        to make manual pages
+	echo.  texinfo    to make Texinfo files
+	echo.  gettext    to make PO message catalogs
+	echo.  changes    to make an overview over all changed/added/deprecated items
+	echo.  xml        to make Docutils-native XML files
+	echo.  pseudoxml  to make pseudoxml-XML files for display purposes
+	echo.  linkcheck  to check all external links for integrity
+	echo.  doctest    to run all doctests embedded in the documentation if enabled
+	goto end
+)
+
+if "%1" == "clean" (
+	for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
+	del /q /s %BUILDDIR%\*
+	goto end
+)
+
+
+%SPHINXBUILD% 2> nul
+if errorlevel 9009 (
+	echo.
+	echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
+	echo.installed, then set the SPHINXBUILD environment variable to point
+	echo.to the full path of the 'sphinx-build' executable. Alternatively you
+	echo.may add the Sphinx directory to PATH.
+	echo.
+	echo.If you don't have Sphinx installed, grab it from
+	echo.http://sphinx-doc.org/
+	exit /b 1
+)
+
+if "%1" == "html" (
+	%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The HTML pages are in %BUILDDIR%/html.
+	goto end
+)
+
+if "%1" == "dirhtml" (
+	%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
+	goto end
+)
+
+if "%1" == "singlehtml" (
+	%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
+	goto end
+)
+
+if "%1" == "pickle" (
+	%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; now you can process the pickle files.
+	goto end
+)
+
+if "%1" == "json" (
+	%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; now you can process the JSON files.
+	goto end
+)
+
+if "%1" == "htmlhelp" (
+	%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; now you can run HTML Help Workshop with the ^
+.hhp project file in %BUILDDIR%/htmlhelp.
+	goto end
+)
+
+if "%1" == "qthelp" (
+	%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; now you can run "qcollectiongenerator" with the ^
+.qhcp project file in %BUILDDIR%/qthelp, like this:
+	echo.^> qcollectiongenerator %BUILDDIR%\qthelp\wxGUI.qhcp
+	echo.To view the help file:
+	echo.^> assistant -collectionFile %BUILDDIR%\qthelp\wxGUI.ghc
+	goto end
+)
+
+if "%1" == "devhelp" (
+	%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished.
+	goto end
+)
+
+if "%1" == "epub" (
+	%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The epub file is in %BUILDDIR%/epub.
+	goto end
+)
+
+if "%1" == "latex" (
+	%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
+	goto end
+)
+
+if "%1" == "latexpdf" (
+	%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
+	cd %BUILDDIR%/latex
+	make all-pdf
+	cd %BUILDDIR%/..
+	echo.
+	echo.Build finished; the PDF files are in %BUILDDIR%/latex.
+	goto end
+)
+
+if "%1" == "latexpdfja" (
+	%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
+	cd %BUILDDIR%/latex
+	make all-pdf-ja
+	cd %BUILDDIR%/..
+	echo.
+	echo.Build finished; the PDF files are in %BUILDDIR%/latex.
+	goto end
+)
+
+if "%1" == "text" (
+	%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The text files are in %BUILDDIR%/text.
+	goto end
+)
+
+if "%1" == "man" (
+	%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The manual pages are in %BUILDDIR%/man.
+	goto end
+)
+
+if "%1" == "texinfo" (
+	%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
+	goto end
+)
+
+if "%1" == "gettext" (
+	%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
+	goto end
+)
+
+if "%1" == "changes" (
+	%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.The overview file is in %BUILDDIR%/changes.
+	goto end
+)
+
+if "%1" == "linkcheck" (
+	%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Link check complete; look for any errors in the above output ^
+or in %BUILDDIR%/linkcheck/output.txt.
+	goto end
+)
+
+if "%1" == "doctest" (
+	%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Testing of doctests in the sources finished, look at the ^
+results in %BUILDDIR%/doctest/output.txt.
+	goto end
+)
+
+if "%1" == "xml" (
+	%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The XML files are in %BUILDDIR%/xml.
+	goto end
+)
+
+if "%1" == "pseudoxml" (
+	%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
+	goto end
+)
+
+:end

Added: grass/trunk/gui/wxpython/docs/wxgui_sphinx/wxgui_libraries.rst
===================================================================
--- grass/trunk/gui/wxpython/docs/wxgui_sphinx/wxgui_libraries.rst	                        (rev 0)
+++ grass/trunk/gui/wxpython/docs/wxgui_sphinx/wxgui_libraries.rst	2014-06-13 09:32:40 UTC (rev 60817)
@@ -0,0 +1,23 @@
+Libraries
+==================
+
+.. toctree::
+  :maxdepth: 2
+
+  core
+  gis_set
+  gis_set_error
+  gui_core
+  icons
+  iscatt
+  lmgr
+  location_wizard
+  mapdisp
+  mapwin
+  menustrings
+  modules
+  nviz
+  vnet
+  web_services
+  wxgui
+  wxplot
\ No newline at end of file

Added: grass/trunk/gui/wxpython/docs/wxgui_sphinx/wxgui_tools.rst
===================================================================
--- grass/trunk/gui/wxpython/docs/wxgui_sphinx/wxgui_tools.rst	                        (rev 0)
+++ grass/trunk/gui/wxpython/docs/wxgui_sphinx/wxgui_tools.rst	2014-06-13 09:32:40 UTC (rev 60817)
@@ -0,0 +1,16 @@
+Tools
+===========
+
+.. toctree::
+  :maxdepth: 2
+
+  animation
+  dbmgr
+  gcp
+  gmodeler
+  iclass
+  mapswipe
+  psmap
+  rlisetup
+  timeline
+  vdigit
\ No newline at end of file

Modified: grass/trunk/gui/wxpython/gcp/g.gui.gcp.py
===================================================================
--- grass/trunk/gui/wxpython/gcp/g.gui.gcp.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gcp/g.gui.gcp.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -44,9 +44,10 @@
 from gcp.manager import GCPWizard
 
 def main():
-    """!Sets the GRASS display driver
+    """Sets the GRASS display driver
 
-    @todo use command line options as an alternative to wizard
+    .. todo::
+        use command line options as an alternative to wizard
     """
     driver = UserSettings.Get(group='display', key='driver', subkey='type')
     if driver == 'png':

Modified: grass/trunk/gui/wxpython/gcp/manager.py
===================================================================
--- grass/trunk/gui/wxpython/gcp/manager.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gcp/manager.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gcp.manager
 
 @brief Georectification module for GRASS GIS. Includes ground control
@@ -240,14 +240,14 @@
             self.Cleanup()
                             
     def SetSrcEnv(self, location, mapset):
-        """!Create environment to use for location and mapset
+        """Create environment to use for location and mapset
         that are the source of the file(s) to georectify
 
-        @param location source location
-        @param mapset source mapset
+        :param location: source location
+        :param mapset: source mapset
 
-        @return False on error
-        @return True on success
+        :return: False on error
+        :return: True on success
         """
         
         self.newlocation = location
@@ -293,13 +293,13 @@
         return True
         
     def OnGLMFocus(self, event):
-        """!Layer Manager focus"""
+        """Layer Manager focus"""
         # self.SwitchEnv('target')
         
         event.Skip()
 
     def Cleanup(self):
-        """!Return to current location and mapset"""
+        """Return to current location and mapset"""
         # here was also the cleaning of gcpmanagement from layer manager
         # which is no longer needed
 
@@ -363,7 +363,7 @@
         # self.Bind(wx.EVT_CLOSE, self.parent.Cleanup)
 
     def OnMaptype(self,event):
-        """!Change map type"""
+        """Change map type"""
         global maptype
 
         if event.GetInt() == 0:
@@ -372,7 +372,7 @@
             maptype = 'vector'
         
     def OnLocation(self, event):
-        """!Sets source location for map(s) to georectify"""
+        """Sets source location for map(s) to georectify"""
         self.xylocation = event.GetString()
         
         #create a list of valid mapsets
@@ -394,7 +394,7 @@
             wx.FindWindowById(wx.ID_FORWARD).Enable(True)
 
     def OnMapset(self, event):
-        """!Sets source mapset for map(s) to georectify"""
+        """Sets source mapset for map(s) to georectify"""
         if self.xylocation == '':
             GMessage(_('You must select a valid location '
                        'before selecting a mapset'),
@@ -500,7 +500,7 @@
         self.xygroup = event.GetString()
         
     def OnMkGroup(self, event):
-        """!Create new group in source location/mapset"""
+        """Create new group in source location/mapset"""
         dlg = GroupDialog(parent = self, defaultGroup = self.xygroup)
         dlg.DisableSubgroupEdit()
         dlg.ShowModal()
@@ -515,7 +515,7 @@
         self.Update()
         
     def OnVGroup(self, event):
-        """!Add vector maps to group"""
+        """Add vector maps to group"""
         dlg = VectGroup(parent = self,
                         id = wx.ID_ANY,
                         grassdb = self.grassdatabase,
@@ -659,7 +659,7 @@
         self.Bind(wx.EVT_CLOSE, self.parent.Cleanup)
 
     def OnSrcSelection(self, event):
-        """!Source map to display selected"""
+        """Source map to display selected"""
         global src_map
         global maptype
 
@@ -684,13 +684,13 @@
             pass
 
     def OnTgtRastSelection(self, event):
-        """!Source map to display selected"""
+        """Source map to display selected"""
         global tgt_map
 
         tgt_map['raster'] = self.tgtrastselection.GetValue()
 
     def OnTgtVectSelection(self,event):
-        """!Source map to display selected"""
+        """Source map to display selected"""
         global tgt_map
 
         tgt_map['vector'] = self.tgtvectselection.GetValue()
@@ -779,7 +779,7 @@
             wx.FindWindowById(wx.ID_FORWARD).Enable(True)
 
 class GCP(MapFrame, ColumnSorterMixin):
-    """!
+    """
     Manages ground control points for georectifying. Calculates RMS statistics.
     Calls i.rectify or v.rectify to georectify map.
     """
@@ -956,13 +956,13 @@
         self.SetSettings()
 
     def __del__(self):
-        """!Disable GCP manager mode"""
+        """Disable GCP manager mode"""
         # leaving the method here but was used only to delete gcpmanagement
         # from layer manager which is now not needed
         pass
         
     def CreateGCPList(self):
-        """!Create GCP List Control"""
+        """Create GCP List Control"""
 
         return GCPList(parent=self, gcp=self)
 
@@ -1089,7 +1089,7 @@
         self.mapcoordlist[key] = [key, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
 
     def SetSettings(self):
-        """!Sets settings for drawing of GCP's.
+        """Sets settings for drawing of GCP's.
         """
         self.highest_only = UserSettings.Get(group='gcpman', key='rms', subkey='highestonly')
         self.show_unused =  UserSettings.Get(group='gcpman', key='symbol', subkey='unused')
@@ -1122,7 +1122,7 @@
         self.pointsToDrawTgt.SetPropertyVal("text", copy(textProp))
         
     def SetGCPSatus(self, item, itemIndex):
-        """!Before GCP is drawn, decides it's colour and whether it
+        """Before GCP is drawn, decides it's colour and whether it
         will be drawed.
         """
         key = self.list.GetItemData(itemIndex)
@@ -1155,7 +1155,7 @@
         item.SetPropertyVal('penName', wxPen)
 
     def SetGCPData(self, coordtype, coord, mapdisp=None, confirm=False):
-        """!Inserts coordinates from file, mouse click on map, or
+        """Inserts coordinates from file, mouse click on map, or
         after editing into selected item of GCP list and checks it for
         use.
         """
@@ -1211,7 +1211,7 @@
         # self.list.ResizeColumns()
         
     def SaveGCPs(self, event):
-        """!Make a POINTS file or save GCP coordinates to existing
+        """Make a POINTS file or save GCP coordinates to existing
         POINTS file
         """
         self.GCPcount = 0
@@ -1313,7 +1313,7 @@
             self.RMSError(self.xygroup, self.gr_order)
 
     def ReloadGCPs(self, event):
-        """!Reload data from file"""
+        """Reload data from file"""
 
         # use backup
         shutil.copy(self.file['points_bak'], self.file['points'])
@@ -1472,7 +1472,7 @@
         self.grwiz.SwitchEnv('target')
 
     def OnGeorectDone(self, **kargs):
-        """!Print final message"""
+        """Print final message"""
         global maptype
         if maptype == 'raster':
             return
@@ -1488,7 +1488,7 @@
 
          
     def OnSettings(self, event):
-        """!GCP Manager settings"""
+        """GCP Manager settings"""
         dlg = GrSettingsDialog(parent=self, giface=self._giface,
                                id=wx.ID_ANY, title=_('GCP Manager settings'))
 
@@ -1499,7 +1499,7 @@
 
     def UpdateColours(self, srcrender=False, srcrenderVector=False,
                             tgtrender=False, tgtrenderVector=False):
-        """!update colours"""
+        """update colours"""
         highest_fwd_err = 0.0
         self.highest_key = 0
         highest_idx = 0
@@ -1533,7 +1533,7 @@
             targetMapWin.UpdateMap(render=tgtrender, renderVector=tgtrenderVector)
 
     def OnQuit(self, event):
-        """!Quit georectifier"""
+        """Quit georectifier"""
         ret = wx.MessageBox(parent=self,
                       caption=_("Quit GCP Manager"),
                       message=_('Save ground control points?'),
@@ -1768,7 +1768,7 @@
         return newreg
 
     def OnHelp(self, event):
-        """!Show GCP Manager manual page"""
+        """Show GCP Manager manual page"""
         self._giface.Help(entry='wxGUI.gcp')
 
     def OnUpdateActive(self, event):
@@ -1795,7 +1795,7 @@
         self.StatusbarUpdate()
 
     def AdjustMap(self, newreg):
-        """!Adjust map window to new extents
+        """Adjust map window to new extents
         """
 
         # adjust map window
@@ -1834,7 +1834,7 @@
         self.StatusbarUpdate()
 
     def OnZoomToSource(self, event):
-        """!Set target map window to match extents of source map window
+        """Set target map window to match extents of source map window
         """
 
         if not self.MapWindow == self.TgtMapWindow:
@@ -1848,7 +1848,7 @@
             self.AdjustMap(newreg)
 
     def OnZoomToTarget(self, event):
-        """!Set source map window to match extents of target map window
+        """Set source map window to match extents of target map window
         """
 
         if not self.MapWindow == self.SrcMapWindow:
@@ -1862,7 +1862,7 @@
             self.AdjustMap(newreg)
 
     def OnZoomMenuGCP(self, event):
-        """!Popup Zoom menu
+        """Popup Zoom menu
         """
         point = wx.GetMousePosition()
         zoommenu = wx.Menu()
@@ -1882,14 +1882,14 @@
         zoommenu.Destroy()
         
     def OnSize(self, event):
-        """!Adjust Map Windows after GCP Map Display has been resized
+        """Adjust Map Windows after GCP Map Display has been resized
         """
         # re-render image on idle
         self.resize = time.clock()
         super(MapFrame, self).OnSize(event)
 
     def OnIdle(self, event):
-        """!GCP Map Display resized, adjust Map Windows
+        """GCP Map Display resized, adjust Map Windows
         """
         if self.GetMapToolbar():
             if self.resize and self.resize + 0.2 < time.clock():
@@ -1974,7 +1974,7 @@
                 idx_col += 1
 
     def LoadData(self):
-        """!Load data into list"""
+        """Load data into list"""
         self.DeleteAllItems()
 
         self.render = False
@@ -1998,7 +1998,7 @@
         self.EnsureVisible(self.selected)
 
     def OnCheckItem(self, index, flag):
-        """!Item is checked/unchecked"""
+        """Item is checked/unchecked"""
 
         if self.render:
             # redraw points
@@ -2039,7 +2039,7 @@
         return self.selected
 
     def DeleteGCPItem(self):
-        """!Deletes selected item in GCP list.
+        """Deletes selected item in GCP list.
         """
         if self.selected == wx.NOT_FOUND:
             return
@@ -2057,7 +2057,7 @@
         return key
         
     def ResizeColumns(self):
-        """!Resize columns"""
+        """Resize columns"""
         minWidth = [90, 120]
         for i in range(self.GetColumnCount()):
             self.SetColumnWidth(i, wx.LIST_AUTOSIZE)
@@ -2068,11 +2068,11 @@
         self.SendSizeEvent()
 
     def GetSelected(self):
-        """!Get index of selected item"""
+        """Get index of selected item"""
         return self.selected
 
     def OnItemSelected(self, event):
-        """!Item selected
+        """Item selected
         """
         if self.render and self.selected != event.GetIndex():
             self.selected = event.GetIndex()
@@ -2130,7 +2130,7 @@
                     self.gcp.UpdateColours()
                     
     def OnColClick(self, event):
-        """!ListCtrl forgets selected item..."""
+        """ListCtrl forgets selected item..."""
         self.selected = self.FindItemData(-1, self.selectedkey)
         self.SetItemState(self.selected,
                           wx.LIST_STATE_SELECTED,
@@ -2139,9 +2139,10 @@
         event.Skip()
 
 class VectGroup(wx.Dialog):
-    """!Dialog to create a vector group (VREF file) for georectifying
+    """Dialog to create a vector group (VREF file) for georectifying
 
-    @todo Replace by g.group
+    .. todo::
+        Replace by g.group
     """
     def __init__(self, parent, id, grassdb, location, mapset, group,
                  style=wx.DEFAULT_DIALOG_STYLE):
@@ -2251,7 +2252,7 @@
         self.Layout()
         
     def MakeVGroup(self):
-        """!Create VREF file"""
+        """Create VREF file"""
         vgrouplist = []
         for item in range(self.listMap.GetCount()):
             if not self.listMap.IsChecked(item):
@@ -2269,7 +2270,7 @@
     def __init__(self, parent, data, gcpno, id=wx.ID_ANY,
                  title=_("Edit GCP"),
                  style=wx.DEFAULT_DIALOG_STYLE):
-        """!Dialog for editing GPC and map coordinates in list control"""
+        """Dialog for editing GPC and map coordinates in list control"""
 
         wx.Dialog.__init__(self, parent, id, title=title, style=style)
 
@@ -2345,7 +2346,7 @@
         sizer.Fit(self)
 
     def GetValues(self, columns=None):
-        """!Return list of values (as strings).
+        """Return list of values (as strings).
         """
         valuelist = []
         try:
@@ -2426,7 +2427,7 @@
         mainSizer.Fit(self)
         
     def __CreateSymbologyPage(self, notebook):
-        """!Create notebook page with symbology settings"""
+        """Create notebook page with symbology settings"""
 
         panel = wx.Panel(parent=notebook, id=wx.ID_ANY)
         notebook.AddPage(page=panel, text=_("Symbology"))
@@ -2626,7 +2627,7 @@
         return panel
 
     def __CreateRectificationPage(self, notebook):
-        """!Create notebook page with symbology settings"""
+        """Create notebook page with symbology settings"""
 
         panel = wx.Panel(parent=notebook, id=wx.ID_ANY)
         notebook.AddPage(page=panel, text=_("Rectification"))
@@ -2680,7 +2681,7 @@
         return panel
 
     def OnHighlight(self, event):
-        """!Checkbox 'highlighthighest' checked/unchecked"""
+        """Checkbox 'highlighthighest' checked/unchecked"""
         if self.highlighthighest.IsChecked():
             self.parent.highest_only = True
             self.rmsWin.Disable()
@@ -2689,7 +2690,7 @@
             self.rmsWin.Enable()
 
     def OnSDFactor(self,event):
-        """!New factor for RMS threshold = M + SD * factor"""
+        """New factor for RMS threshold = M + SD * factor"""
         try:
             self.sdfactor = float(self.rmsWin.GetValue())
         except ValueError:
@@ -2703,7 +2704,7 @@
                              'Too many points might be highlighted'))
         
     def OnSrcSelection(self,event):
-        """!Source map to display selected"""
+        """Source map to display selected"""
         global src_map
 
         tmp_map = self.srcselection.GetValue()
@@ -2712,13 +2713,13 @@
             self.new_src_map = tmp_map
 
     def OnTgtRastSelection(self,event):
-        """!Target map to display selected"""
+        """Target map to display selected"""
         global tgt_map
 
         self.new_tgt_map['raster'] = self.tgtrastselection.GetValue()
 
     def OnTgtVectSelection(self,event):
-        """!Target map to display selected"""
+        """Target map to display selected"""
         global tgt_map
 
         self.new_tgt_map['vector'] = self.tgtvectselection.GetValue()
@@ -2840,7 +2841,7 @@
         self.parent.SetSettings()        
 
     def OnSave(self, event):
-        """!Button 'Save' pressed"""
+        """Button 'Save' pressed"""
         self.UpdateSettings()
         fileSettings = {}
         UserSettings.ReadSettingsFile(settings=fileSettings)
@@ -2850,10 +2851,10 @@
         #self.Close()
 
     def OnApply(self, event):
-        """!Button 'Apply' pressed"""
+        """Button 'Apply' pressed"""
         self.UpdateSettings()
         #self.Close()
 
     def OnClose(self, event):
-        """!Button 'Cancel' pressed"""
+        """Button 'Cancel' pressed"""
         self.Close()

Modified: grass/trunk/gui/wxpython/gcp/mapdisplay.py
===================================================================
--- grass/trunk/gui/wxpython/gcp/mapdisplay.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gcp/mapdisplay.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gcp.mapdisplay
 
 @brief Display to manage ground control points with two toolbars, one
@@ -41,22 +41,22 @@
 cmdfilename = None
 
 class MapFrame(SingleMapFrame):
-    """!Main frame for map display window. Drawing takes place in
+    """Main frame for map display window. Drawing takes place in
     child double buffered drawing window.
     """
     def __init__(self, parent, giface,
                  title=_("GRASS GIS Manage Ground Control Points"),
                  toolbars=["gcpdisp"], Map=None, auimgr=None,
                  name='GCPMapWindow', **kwargs):
-        """!Main map display window with toolbars, statusbar and
+        """Main map display window with toolbars, statusbar and
         DrawWindow
 
-        @param giface GRASS interface instance
-        @param title window title
-        @param toolbars array of activated toolbars, e.g. ['map', 'digit']
-        @param Map instance of render.Map
-        @param auimgs AUI manager
-        @param kwargs wx.Frame attribures
+        :param giface: GRASS interface instance
+        :param title: window title
+        :param toolbars: array of activated toolbars, e.g. ['map', 'digit']
+        :param map: instance of render.Map
+        :param auimgs: AUI manager
+        :param kwargs: wx.Frame attribures
         """
         
         SingleMapFrame.__init__(self, parent = parent, giface = giface, title = title,
@@ -230,7 +230,7 @@
         mapWindow.mouseMoving.connect(self.CoordinatesChanged)
 
     def AddToolbar(self, name):
-        """!Add defined toolbar to the window
+        """Add defined toolbar to the window
         
         Currently known toolbars are:
          - 'map'     - basic map toolbar
@@ -302,12 +302,12 @@
         event.Skip()
 
     def OnDraw(self, event):
-        """!Re-display current map composition
+        """Re-display current map composition
         """
         self.MapWindow.UpdateMap(render = False)
         
     def OnRender(self, event):
-        """!Re-render map composition (each map layer)
+        """Re-render map composition (each map layer)
         """
         # FIXME: remove qlayer code or use RemoveQueryLayer() now in mapdisp.frame
         # delete tmp map layers (queries)
@@ -323,8 +323,8 @@
         self.StatusbarUpdate()
 
     def OnPointer(self, event):
-        """!Pointer button clicked
-        """        
+        """Pointer button clicked
+        """      
         self.SrcMapWindow.SetModePointer()
         self.TgtMapWindow.SetModePointer()
         # change the default cursor
@@ -360,7 +360,7 @@
         win.EraseMap()
 
     def SaveToFile(self, event):
-        """!Save map to image
+        """Save map to image
         """
         img = self.MapWindow.img
         if not img:
@@ -427,30 +427,30 @@
         printmenu.Destroy()
 
     def OnZoomToRaster(self, event):
-        """!
+        """
         Set display extents to match selected raster map (ignore NULLs)
         """
         self.MapWindow.ZoomToMap(ignoreNulls = True)
         
     def OnZoomToSaved(self, event):
-        """!Set display geometry to match extents in
+        """Set display geometry to match extents in
         saved region file
         """
         self.MapWindow.SetRegion(zoomOnly=True)
         
     def OnDisplayToWind(self, event):
-        """!Set computational region (WIND file) to match display
+        """Set computational region (WIND file) to match display
         extents
         """
         self.MapWindow.DisplayToWind()
  
     def SaveDisplayRegion(self, event):
-        """!Save display extents to named region file.
+        """Save display extents to named region file.
         """
         self.MapWindow.SaveDisplayRegion()
         
     def OnZoomMenu(self, event):
-        """!Popup Zoom menu
+        """Popup Zoom menu
         """
         point = wx.GetMousePosition()
         zoommenu = wx.Menu()
@@ -483,14 +483,14 @@
         
         
     def IsStandalone(self):
-        """!Check if Map display is standalone"""
+        """Check if Map display is standalone"""
         # we do not know and we do not care, so always False
         return True
     
     def GetLayerManager(self):
-        """!Get reference to Layer Manager
+        """Get reference to Layer Manager
 
-        @return always None
+        :return: always None
         """
         return None
 
@@ -504,7 +504,7 @@
         return self.show_target
         
     def GetMapToolbar(self):
-        """!Returns toolbar with zooming tools"""
+        """Returns toolbar with zooming tools"""
         return self.toolbars['gcpdisp']
 
     def _setActiveMapWindow(self, mapWindow):

Modified: grass/trunk/gui/wxpython/gcp/statusbar.py
===================================================================
--- grass/trunk/gui/wxpython/gcp/statusbar.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gcp/statusbar.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gcp.statusbar
 
 @brief Classes for statusbar management in GCP Manager
@@ -25,7 +25,7 @@
 
 
 class SbGoToGCP(SbItem):
-    """!SpinCtrl to select GCP to focus on
+    """SpinCtrl to select GCP to focus on
 
     Requires MapFrame.GetSrcWindow, MapFrame.GetTgtWindow,
     MapFrame.GetListCtrl, MapFrame.GetMapCoordList.
@@ -43,7 +43,7 @@
         self.widget.Bind(wx.EVT_SPINCTRL, self.OnGoToGCP)
 
     def OnGoToGCP(self, event):
-        """!Zooms to given GCP."""
+        """Zooms to given GCP."""
         gcpNumber = self.GetValue()
         mapCoords = self.mapFrame.GetMapCoordList()
 
@@ -108,7 +108,7 @@
 
 
 class SbRMSError(SbTextItem):
-    """!Shows RMS error.
+    """Shows RMS error.
 
     Requires MapFrame.GetFwdError, MapFrame.GetBkwError.
     """

Modified: grass/trunk/gui/wxpython/gcp/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/gcp/toolbars.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gcp/toolbars.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gcp.toolbars
 
 @brief Georectification module - toolbars
@@ -27,9 +27,9 @@
 
 
 class GCPManToolbar(BaseToolbar):
-    """!Toolbar for managing ground control points
+    """Toolbar for managing ground control points
 
-    @param parent reference to GCP widget
+    :param parent: reference to GCP widget
     """
     def __init__(self, parent):
         BaseToolbar.__init__(self, parent)
@@ -76,10 +76,10 @@
                                     )
     
 class GCPDisplayToolbar(BaseToolbar):
-    """!GCP Display toolbar
+    """GCP Display toolbar
     """
     def __init__(self, parent, toolSwitcher):
-        """!GCP Display toolbar constructor
+        """GCP Display toolbar constructor
         """
         BaseToolbar.__init__(self, parent, toolSwitcher)
         
@@ -106,7 +106,7 @@
         self.EnableTool(self.zoomback, False)
         
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         icons = {
             'gcpSet'    : MetaIcon(img = 'gcp-create',
                                    label = _('Update GCP coordinates'),

Modified: grass/trunk/gui/wxpython/gis_set.py
===================================================================
--- grass/trunk/gui/wxpython/gis_set.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gis_set.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gis_set
 
 GRASS start-up screen.
@@ -46,7 +46,7 @@
 sys.stderr = codecs.getwriter('utf8')(sys.stderr)
 
 class GRASSStartup(wx.Frame):
-    """!GRASS start-up screen"""
+    """GRASS start-up screen"""
     def __init__(self, parent = None, id = wx.ID_ANY, style = wx.DEFAULT_FRAME_STYLE):
 
         #
@@ -203,7 +203,7 @@
         self.Bind(wx.EVT_CLOSE,               self.OnCloseWindow)
         
     def _set_properties(self):
-        """!Set frame properties"""
+        """Set frame properties"""
         self.SetTitle(_("Welcome to GRASS GIS"))
         self.SetIcon(wx.Icon(os.path.join(globalvar.ICONDIR, "grass.ico"),
                              wx.BITMAP_TYPE_ICO))
@@ -394,7 +394,7 @@
         self.Layout()
 
     def _readGisRC(self):
-        """!Read variables from $HOME/.grass7/rc file
+        """Read variables from $HOME/.grass7/rc file
         """
         grassrc = {}
         
@@ -438,7 +438,7 @@
         self.lmessage.SetLabel("")
 
     def GetRCValue(self, value):
-        """!Return GRASS variable (read from GISRC)
+        """Return GRASS variable (read from GISRC)
         """
         if self.grassrc.has_key(value):
             return self.grassrc[value]
@@ -446,7 +446,7 @@
             return None
         
     def OnWizard(self, event):
-        """!Location wizard started"""
+        """Location wizard started"""
         from location_wizard.wizard import LocationWizard
         gWizard = LocationWizard(parent = self,
                                  grassdatabase = self.tgisdbase.GetValue())
@@ -487,7 +487,7 @@
                 self.CreateNewMapset(mapsetName)
 
     def SetDefaultRegion(self, location):
-        """!Asks to set default region."""
+        """Asks to set default region."""
         caption = _("Location <%s> created") % location
         message = _("Do you want to set the default "
                     "region extents and resolution now?")
@@ -507,7 +507,7 @@
             dlg.Destroy()
 
     def ImportFile(self, filePath):
-        """!Tries to import file as vector or raster.
+        """Tries to import file as vector or raster.
 
         If successfull sets default region from imported map.
         """
@@ -545,7 +545,7 @@
                 RunCommand('g.region', flags = 's', parent = self, **args)
         
     def OnManageLoc(self, event):
-        """!Location management choice control handler
+        """Location management choice control handler
         """
         sel = event.GetSelection()
         if sel ==  0:
@@ -560,7 +560,7 @@
         event.Skip()
         
     def RenameMapset(self):
-        """!Rename selected mapset
+        """Rename selected mapset
         """
         location = self.listOfLocations[self.lblocations.GetSelection()]
         mapset   = self.listOfMapsets[self.lbmapsets.GetSelection()]
@@ -602,7 +602,7 @@
         dlg.Destroy()
 
     def RenameLocation(self):
-        """!Rename selected location
+        """Rename selected location
         """
         location = self.listOfLocations[self.lblocations.GetSelection()]
 
@@ -639,7 +639,7 @@
         dlg.Destroy()
 
     def DeleteMapset(self):
-        """!Delete selected mapset
+        """Delete selected mapset
         """
         location = self.listOfLocations[self.lblocations.GetSelection()]
         mapset   = self.listOfMapsets[self.lbmapsets.GetSelection()]
@@ -694,7 +694,7 @@
         dlg.Destroy()
 
     def UpdateLocations(self, dbase):
-        """!Update list of locations"""
+        """Update list of locations"""
         try:
             self.listOfLocations = GetListOfLocations(dbase)
         except UnicodeEncodeError:
@@ -716,7 +716,7 @@
         return self.listOfLocations
 
     def UpdateMapsets(self, location):
-        """!Update list of mapsets"""
+        """Update list of mapsets"""
         self.FormerMapsetSelection = wx.NOT_FOUND # for non-selectable item
         
         self.listOfMapsetsSelectable = list()
@@ -761,7 +761,7 @@
         return self.listOfMapsets
 
     def OnSelectLocation(self, event):
-        """!Location selected"""
+        """Location selected"""
         if event:
             self.lblocations.SetSelection(event.GetIndex())
             
@@ -803,7 +803,7 @@
             self.manageloc.Enable(False)
         
     def OnSelectMapset(self, event):
-        """!Mapset selected"""
+        """Mapset selected"""
         self.lbmapsets.SetSelection(event.GetIndex())
 
         if event.GetText() not in self.listOfMapsetsSelectable:
@@ -813,7 +813,7 @@
             event.Skip()
 
     def OnSetDatabase(self, event):
-        """!Database set"""
+        """Database set"""
         gisdbase = self.tgisdbase.GetValue()
         self._hideMessage()
         if not os.path.exists(gisdbase):
@@ -843,7 +843,7 @@
         dlg.Destroy()
 
     def OnCreateMapset(self, event):
-        """!Create new mapset"""
+        """Create new mapset"""
         dlg = TextEntryDialog(parent = self,
                               message = _('Enter name for new mapset:'),
                               caption = _('Create new mapset'),
@@ -949,7 +949,7 @@
                    set = "MAPSET=%s" % mapset)
 
     def _getDefaultMapsetName(self):
-        """!Returns default name for mapset."""
+        """Returns default name for mapset."""
         try:
             defaultName = getpass.getuser()
             defaultName.encode('ascii') # raise error if not ascii (not valid mapset name)
@@ -974,7 +974,7 @@
         RunCommand('g.manual', entry = 'helptext')
 
     def OnCloseWindow(self, event):
-        """!Close window event"""
+        """Close window event"""
         event.Skip()
         sys.exit(2)
 
@@ -986,7 +986,7 @@
 
 
 class GListBox(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin):
-    """!Use wx.ListCtrl instead of wx.ListBox, different style for
+    """Use wx.ListCtrl instead of wx.ListBox, different style for
     non-selectable items (e.g. mapsets with denied permission)"""
     def __init__(self, parent, id, size,
                  choices, disabled = []):
@@ -1003,10 +1003,10 @@
         self._LoadData(choices, disabled)
         
     def _LoadData(self, choices, disabled = []):
-        """!Load data into list
+        """Load data into list
         
-        @param choices list of item
-        @param disabled list of indeces of non-selectable items
+        :param choices: list of item
+        :param disabled: list of indeces of non-selectable items
         """
         idx = 0
         for item in choices:
@@ -1035,7 +1035,7 @@
         return self.selected
         
 class StartUp(wx.App):
-    """!Start-up application"""
+    """Start-up application"""
 
     def OnInit(self):
         if not globalvar.CheckWxVersion([2, 9]):

Modified: grass/trunk/gui/wxpython/gis_set_error.py
===================================================================
--- grass/trunk/gui/wxpython/gis_set_error.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gis_set_error.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+""" 
 @package gis_set_error
 
 GRASS start-up screen error message.

Modified: grass/trunk/gui/wxpython/gmodeler/dialogs.py
===================================================================
--- grass/trunk/gui/wxpython/gmodeler/dialogs.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gmodeler/dialogs.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gmodeler.dialogs
 
 @brief wxGUI Graphical Modeler - dialogs
@@ -43,7 +43,7 @@
 from grass.script import task as gtask
 
 class ModelDataDialog(SimpleDialog):
-    """!Data item properties dialog"""
+    """Data item properties dialog"""
     def __init__(self, parent, shape, title = _("Data properties")):
         self.parent = parent
         self.shape = shape
@@ -83,7 +83,7 @@
         return label, etype
     
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         if self.etype:
             self.dataSizer.Add(item = wx.StaticText(parent = self.panel, id = wx.ID_ANY,
                                                     label = _("Type of element:")),
@@ -100,18 +100,18 @@
         self.sizer.Fit(self)
 
     def GetType(self):
-        """!Get element type"""
+        """Get element type"""
         if not self.etype:
             return
         return self.element.tcp.GetType()
 
     def OnType(self, event):
-        """!Select element type"""
+        """Select element type"""
         evalue = self.typeSelect.GetValue(event.GetString())
         self.element.SetType(evalue)
 
     def OnOK(self, event):
-        """!Ok pressed"""
+        """Ok pressed"""
         self.shape.SetValue(self.element.GetValue())
         if self.etype:
             elem = self.GetType()
@@ -130,7 +130,7 @@
             self.Destroy()
     
     def OnCancel(self, event):
-        """!Cancel pressed"""
+        """Cancel pressed"""
         self.shape.SetPropDialog(None)
         if self.IsModal():
             event.Skip()
@@ -140,12 +140,12 @@
 class ModelSearchDialog(wx.Dialog):
     def __init__(self, parent, title = _("Add GRASS command to the model"),
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, **kwargs):
-        """!Graphical modeler module search window
+        """Graphical modeler module search window
         
-        @param parent parent window
-        @param id window id
-        @param title window title
-        @param kwargs wx.Dialogs' arguments
+        :param parent: parent window
+        :param id: window id
+        :param title: window title
+        :param kwargs: wx.Dialogs' arguments
         """
         self.parent = parent
         
@@ -226,7 +226,7 @@
         self.Layout()
 
     def GetPanel(self):
-        """!Get dialog panel"""
+        """Get dialog panel"""
         return self.panel
 
     def _getCmd(self):
@@ -241,11 +241,11 @@
         return cmd
 
     def GetCmd(self):
-        """!Get command"""
+        """Get command"""
         return self._command
 
     def GetLabel(self):
-        """!Get label and comment"""
+        """Get label and comment"""
         return self.label.GetValue(), self.comment.GetValue()
     
     def ValidateCmd(self, cmd):
@@ -263,13 +263,13 @@
         return True
 
     def OnCommand(self, cmd):
-        """!Command in prompt confirmed"""
+        """Command in prompt confirmed"""
         if self.ValidateCmd(cmd):
             self._command = cmd
             self.EndModal(wx.ID_OK)
 
     def OnOk(self, event):
-        """!Button 'OK' pressed"""
+        """Button 'OK' pressed"""
         cmd = self._getCmd()
         if self.ValidateCmd(cmd):
             self._command = cmd
@@ -280,7 +280,7 @@
         self.Hide()
         
     def Reset(self):
-        """!Reset dialog"""
+        """Reset dialog"""
         self.search.Reset()
         self.label.SetValue('')
         self.comment.SetValue('')
@@ -288,7 +288,7 @@
         self.cmd_prompt.SetFocus()
 
 class ModelRelationDialog(wx.Dialog):
-    """!Relation properties dialog"""
+    """Relation properties dialog"""
     def __init__(self, parent, shape, id = wx.ID_ANY, title = _("Relation properties"),
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, **kwargs):
         self.parent = parent
@@ -372,7 +372,7 @@
                       border = 5)
             
     def _getOptions(self):
-        """!Get relevant options"""
+        """Get relevant options"""
         items = []
         fromShape = self.shape.GetFrom()
         if not isinstance(fromShape, ModelData):
@@ -402,22 +402,22 @@
         return items
     
     def GetOption(self):
-        """!Get selected option"""
+        """Get selected option"""
         return self.option.GetStringSelection()
     
     def IsValid(self):
-        """!Check if relation is valid"""
+        """Check if relation is valid"""
         return self.valid
     
     def OnOption(self, event):
-        """!Set option"""
+        """Set option"""
         if event.GetString():
             self.btnOk.Enable()
         else:
             self.btnOk.Enable(False)
 
 class ModelItemDialog(wx.Dialog):
-    """!Abstract item properties dialog"""
+    """Abstract item properties dialog"""
     def __init__(self, parent, shape, title, id = wx.ID_ANY,
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, **kwargs):
         self.parent = parent
@@ -445,15 +445,15 @@
         self.btnOk.SetDefault()
         
     def _layout(self):
-        """!Do layout (virtual method)"""
+        """Do layout (virtual method)"""
         pass
     
     def GetCondition(self):
-        """!Get loop condition"""
+        """Get loop condition"""
         return self.condText.GetValue()
 
 class ModelLoopDialog(ModelItemDialog):
-    """!Loop properties dialog"""
+    """Loop properties dialog"""
     def __init__(self, parent, shape, id = wx.ID_ANY, title = _("Loop properties"),
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, **kwargs):
         ModelItemDialog.__init__(self, parent, shape, title,
@@ -472,7 +472,7 @@
         self.SetSize((500, 400))
         
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         sizer = wx.BoxSizer(wx.VERTICAL)
         
         condSizer = wx.StaticBoxSizer(self.condBox, wx.HORIZONTAL)
@@ -503,11 +503,11 @@
         self.Layout()
         
     def GetItems(self):
-        """!Get list of selected actions"""
+        """Get list of selected actions"""
         return self.itemList.GetItems()
 
     def OnSeries(self, event):
-        """!Define map series as condition"""
+        """Define map series as condition"""
         dialog = MapLayersDialogForModeler(parent = self, title = _("Define series of maps"))
         if dialog.ShowModal() != wx.ID_OK:
             dialog.Destroy()
@@ -522,7 +522,7 @@
         dialog.Destroy()
 
 class ModelConditionDialog(ModelItemDialog):
-    """!Condition properties dialog"""
+    """Condition properties dialog"""
     def __init__(self, parent, shape, id = wx.ID_ANY, title = _("If-else properties"),
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, **kwargs):
         ModelItemDialog.__init__(self, parent, shape, title,
@@ -547,7 +547,7 @@
         self.SetSize((500, 400))
         
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         sizer = wx.BoxSizer(wx.VERTICAL)
         
         condSizer = wx.StaticBoxSizer(self.condBox, wx.VERTICAL)
@@ -581,7 +581,7 @@
         self.Layout()
 
     def OnCheckItemIf(self, index, flag):
-        """!Item in if-block checked/unchecked"""
+        """Item in if-block checked/unchecked"""
         if flag is False:
             return
         
@@ -590,7 +590,7 @@
             self.itemListElse.CheckItemById(aId, False)
             
     def OnCheckItemElse(self, index, flag):
-        """!Item in else-block checked/unchecked"""
+        """Item in else-block checked/unchecked"""
         if flag is False:
             return
         
@@ -599,7 +599,7 @@
             self.itemListIf.CheckItemById(aId, False)
         
     def GetItems(self):
-        """!Get items"""
+        """Get items"""
         return { 'if'   : self.itemListIf.GetItems(),
                  'else' : self.itemListElse.GetItems() }
 
@@ -609,7 +609,7 @@
     def __init__(self, parent, columns, frame, id = wx.ID_ANY, columnsNotEditable = [],
                  style = wx.LC_REPORT | wx.BORDER_NONE |
                  wx.LC_HRULES | wx.LC_VRULES, **kwargs):
-        """!List of model variables"""
+        """List of model variables"""
         self.parent = parent
         self.columns = columns
         self.shape = None
@@ -636,7 +636,7 @@
         self.Bind(wx.EVT_RIGHT_UP, self.OnRightUp)            #wxGTK
                 
     def OnBeginEdit(self, event):
-        """!Editing of item started"""
+        """Editing of item started"""
         if self.columnNotEditable and event.m_col in self.columnNotEditable:
             event.Veto()
             self.SetItemState(event.m_itemIndex,
@@ -645,30 +645,30 @@
             event.Allow()
 
     def OnEndEdit(self, event):
-        """!Finish editing of item"""
+        """Finish editing of item"""
         pass
     
     def GetListCtrl(self):
-        """!Used by ColumnSorterMixin"""
+        """Used by ColumnSorterMixin"""
         return self
     
     def OnColClick(self, event):
-        """!Click on column header (order by)"""
+        """Click on column header (order by)"""
         event.Skip()
 
 class VariableListCtrl(ModelListCtrl):
     def __init__(self, parent, columns, **kwargs):
-        """!List of model variables"""
+        """List of model variables"""
         ModelListCtrl.__init__(self, parent, columns, **kwargs)
 
         self.SetColumnWidth(2, 200) # default value
 
     def GetData(self):
-        """!Get list data"""
+        """Get list data"""
         return self.itemDataMap
     
     def Populate(self, data):
-        """!Populate the list"""
+        """Populate the list"""
         self.itemDataMap = dict()
         i = 0
         for name, values in data.iteritems():
@@ -690,10 +690,10 @@
             i += 1
         
     def Append(self, name, vtype, value, desc):
-        """!Append new item to the list
+        """Append new item to the list
 
-        @return None on success
-        @return error string
+        :return: None on success
+        :return: error string
         """
         for iname, ivtype, ivalue, idesc in self.itemDataMap.itervalues():
             if iname == name:
@@ -713,7 +713,7 @@
         return None
 
     def OnRemove(self, event):
-        """!Remove selected variable(s) from the model"""
+        """Remove selected variable(s) from the model"""
         item = self.GetFirstSelected()
         while item != -1:
             self.DeleteItem(item)
@@ -724,7 +724,7 @@
         event.Skip()
         
     def OnRemoveAll(self, event):
-        """!Remove all variable(s) from the model"""
+        """Remove all variable(s) from the model"""
         dlg = wx.MessageBox(parent=self,
                             message=_("Do you want to delete all variables from "
                                       "the model?"),
@@ -739,7 +739,7 @@
         self.parent.UpdateModelVariables()
         
     def OnEndEdit(self, event):
-        """!Finish editing of item"""
+        """Finish editing of item"""
         itemIndex = event.GetIndex()
         columnIndex = event.GetColumn()
         nameOld = self.GetItem(itemIndex, 0).GetText()
@@ -752,11 +752,11 @@
         self.parent.UpdateModelVariables()
 
     def OnReload(self, event):
-        """!Reload list of variables"""
+        """Reload list of variables"""
         self.Populate(self.parent.parent.GetModel().GetVariables())
 
     def OnRightUp(self, event):
-        """!Mouse right button up"""
+        """Mouse right button up"""
         if not hasattr(self, "popupID1"):
             self.popupID1 = wx.NewId()
             self.popupID2 = wx.NewId()
@@ -781,7 +781,7 @@
 
 class ItemListCtrl(ModelListCtrl):
     def __init__(self, parent, columns, frame, disablePopup = False, **kwargs):
-        """!List of model actions"""
+        """List of model actions"""
         self.disablePopup = disablePopup
 
         ModelListCtrl.__init__(self, parent, columns, frame, **kwargs)
@@ -792,11 +792,11 @@
         self.SetColumnWidth(2, 65)
         
     def GetData(self):
-        """!Get list data"""
+        """Get list data"""
         return self.itemDataMap
     
     def Populate(self, data):
-        """!Populate the list"""
+        """Populate the list"""
         self.itemDataMap = dict()
         self.itemIdMap = list()
         
@@ -864,7 +864,7 @@
                 i += 1
                 
     def OnRemove(self, event):
-        """!Remove selected action(s) from the model"""
+        """Remove selected action(s) from the model"""
         model = self.frame.GetModel()
         canvas = self.frame.GetCanvas()
         
@@ -888,7 +888,7 @@
         event.Skip()
     
     def OnEndEdit(self, event):
-        """!Finish editing of item"""
+        """Finish editing of item"""
         itemIndex = event.GetIndex()
         columnIndex = event.GetColumn()
         self.itemDataMap[itemIndex][columnIndex] = event.GetText()
@@ -901,11 +901,11 @@
         self.frame.ModelChanged()
 
     def OnReload(self, event = None):
-        """!Reload list of actions"""
+        """Reload list of actions"""
         self.Populate(self.frame.GetModel().GetItems(objType=ModelAction))
 
     def OnRightUp(self, event):
-        """!Mouse right button up"""
+        """Mouse right button up"""
         if self.disablePopup:
             return
         
@@ -928,10 +928,10 @@
         menu.Destroy()
     
     def MoveItems(self, items, up):
-        """!Move items in the list
+        """Move items in the list
 
-        @param items list of items to move
-        @param up True to move up otherwise down
+        :param items: list of items to move
+        :param up: True to move up otherwise down
         """
         if len(items) < 1:
             return
@@ -980,11 +980,11 @@
         self.shape  = shape
         
     def OnBeginEdit(self, event):
-        """!Disable editing"""
+        """Disable editing"""
         event.Veto()
         
     def OnCheckItem(self, index, flag):
-        """!Item checked/unchecked"""
+        """Item checked/unchecked"""
         name = self.GetLabel()
         if name == 'IfBlockList' and self.window:
             self.window.OnCheckItemIf(index, flag)
@@ -992,7 +992,7 @@
             self.window.OnCheckItemElse(index, flag)
         
     def GetItems(self):
-        """!Get list of selected actions"""
+        """Get list of selected actions"""
         ids = { 'checked'   : list(),
                 'unchecked' : list() }
         
@@ -1006,7 +1006,7 @@
         return ids
 
     def CheckItemById(self, aId, flag):
-        """!Check/uncheck given item by id"""
+        """Check/uncheck given item by id"""
         for i in range(self.GetItemCount()):
             iId = int(self.GetItem(i, 0).GetText())
             if iId == aId:

Modified: grass/trunk/gui/wxpython/gmodeler/frame.py
===================================================================
--- grass/trunk/gui/wxpython/gmodeler/frame.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gmodeler/frame.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gmodeler.frame
 
 @brief wxGUI Graphical Modeler for creating, editing, and managing models
@@ -60,13 +60,13 @@
 class ModelFrame(wx.Frame):
     def __init__(self, parent, giface, id = wx.ID_ANY,
                  title = _("GRASS GIS Graphical Modeler"), **kwargs):
-        """!Graphical modeler main window
+        """Graphical modeler main window
         
-        @param parent parent window
-        @param id window id
-        @param title window title
+        :param parent: parent window
+        :param id: window id
+        :param title: window title
 
-        @param kwargs wx.Frames' arguments
+        :param kwargs: wx.Frames' arguments
         """
         self.parent = parent
         self._giface = giface
@@ -143,7 +143,7 @@
             self.goutput.SetSashPosition(int(self.GetSize()[1] * .75))
         
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         sizer = wx.BoxSizer(wx.VERTICAL)
 
         sizer.Add(item = self.notebook, proportion = 1,
@@ -156,7 +156,7 @@
         self.Layout()
 
     def _addEvent(self, item):
-        """!Add event to item"""
+        """Add event to item"""
         evthandler = ModelEvtHandler(self.statusbar,
                                      self)
         evthandler.SetShape(item)
@@ -164,19 +164,19 @@
         item.SetEventHandler(evthandler)
 
     def _randomShift(self):
-        """!Returns random value to shift layout"""
+        """Returns random value to shift layout"""
         return random.randint(-self.randomness, self.randomness)
 
     def GetCanvas(self):
-        """!Get canvas"""
+        """Get canvas"""
         return self.canvas
     
     def GetModel(self):
-        """!Get model"""
+        """Get model"""
         return self.model
     
     def ModelChanged(self, changed = True):
-        """!Update window title"""
+        """Update window title"""
         self.modelChanged = changed
         
         if self.modelFile:
@@ -188,7 +188,7 @@
             self.SetTitle(self.baseTitle)
 
     def OnPageChanged(self, event):
-        """!Page in notebook changed"""
+        """Page in notebook changed"""
         page = event.GetSelection()
         if page == self.notebook.GetPageIndexByName('python'):
             if self.pythonPanel.IsEmpty():
@@ -202,22 +202,22 @@
         event.Skip()
 
     def OnVariables(self, event):
-        """!Switch to variables page"""
+        """Switch to variables page"""
         self.notebook.SetSelectionByName('variables')
         
     def OnRemoveItem(self, event):
-        """!Remove shape
+        """Remove shape
         """
         self.GetCanvas().RemoveSelected()
         
     def OnCanvasRefresh(self, event):
-        """!Refresh canvas"""
+        """Refresh canvas"""
         self.SetStatusText(_("Redrawing model..."), 0)
         self.GetCanvas().Refresh()
         self.SetStatusText("", 0)
 
     def OnCmdRun(self, event):
-        """!Run command"""
+        """Run command"""
         try:
             action = self.GetModel().GetItems()[event.pid]
             if hasattr(action, "task"):
@@ -226,7 +226,7 @@
             pass
         
     def OnCmdPrepare(self, event):
-        """!Prepare for running command"""
+        """Prepare for running command"""
         if not event.userData:
             return
         
@@ -234,7 +234,7 @@
                         params = event.userData['params'])
         
     def OnCmdDone(self, event):
-        """!Command done (or aborted)"""
+        """Command done (or aborted)"""
         self.goutput.GetProgressBar().SetValue(0)
         try:
             action = self.GetModel().GetItems()[event.pid]
@@ -244,7 +244,7 @@
             pass
 
     def OnCloseWindow(self, event):
-        """!Close window"""
+        """Close window"""
         if self.modelChanged and \
                 UserSettings.Get(group='manager', key='askOnQuit', subkey='enabled'):
             if self.modelFile:
@@ -273,12 +273,12 @@
         self.Destroy()
 
     def OnSize(self, event):
-        """!Window resized, save to the model"""
+        """Window resized, save to the model"""
         self.ModelChanged()
         event.Skip()
         
     def OnPreferences(self, event):
-        """!Open preferences dialog"""
+        """Open preferences dialog"""
         dlg = PreferencesDialog(parent = self, giface = self._giface)
         dlg.CenterOnParent()
         
@@ -286,11 +286,11 @@
         self.canvas.Refresh()
         
     def OnHelp(self, event):
-        """!Show help"""
+        """Show help"""
         self._giface.Help(entry = 'wxGUI.gmodeler')
 
     def OnModelProperties(self, event):
-        """!Model properties dialog"""
+        """Model properties dialog"""
         dlg = PropertiesDialog(parent = self)
         dlg.CentreOnParent()
         properties = self.model.GetProperties()
@@ -305,7 +305,7 @@
         dlg.Destroy()
         
     def OnDeleteData(self, event):
-        """!Delete intermediate data"""
+        """Delete intermediate data"""
         rast, vect, rast3d, msg = self.model.GetIntermediateData()
         
         if not rast and not vect and not rast3d:
@@ -336,7 +336,7 @@
         dlg.Destroy()
                 
     def OnModelNew(self, event):
-        """!Create new model"""
+        """Create new model"""
         Debug.msg(4, "ModelFrame.OnModelNew():")
         
         # ask user to save current model
@@ -372,9 +372,9 @@
         self.SetTitle(self.baseTitle)
         
     def GetModelFile(self, ext=True):
-        """!Get model file
+        """Get model file
 
-        @param ext False to avoid extension
+        :param bool ext: False to avoid extension
         """
         if not self.modelFile:
             return ''
@@ -383,7 +383,7 @@
         return os.path.splitext(self.modelFile)[0]
     
     def OnModelOpen(self, event):
-        """!Load model from file"""
+        """Load model from file"""
         filename = ''
         dlg = wx.FileDialog(parent = self, message=_("Choose model file"),
                             defaultDir = os.getcwd(),
@@ -408,7 +408,7 @@
                                  'actions' : self.model.GetNumItems(actionOnly = True) }, 0)
         
     def OnModelSave(self, event = None):
-        """!Save model to file"""
+        """Save model to file"""
         if self.modelFile and self.modelChanged:
             dlg = wx.MessageDialog(self, message=_("Model file <%s> already exists. "
                                                    "Do you want to overwrite this file?") % \
@@ -426,7 +426,7 @@
             self.OnModelSaveAs(None)
         
     def OnModelSaveAs(self, event):
-        """!Create model to file as"""
+        """Create model to file as"""
         filename = ''
         dlg = wx.FileDialog(parent = self,
                             message = _("Choose file to save current model"),
@@ -463,7 +463,7 @@
         self.SetStatusText(_('File <%s> saved') % self.modelFile, 0)
 
     def OnModelClose(self, event = None):
-        """!Close model file"""
+        """Close model file"""
         Debug.msg(4, "ModelFrame.OnModelClose(): file=%s" % self.modelFile)
         # ask user to save current model
         if self.modelFile and self.modelChanged:
@@ -494,13 +494,14 @@
         self.canvas.Refresh()
         
     def OnRunModel(self, event):
-        """!Run entire model"""
+        """Run entire model"""
         self.model.Run(self._gconsole, self.OnDone, parent = self)
         
     def OnDone(self, cmd, returncode):
-        """!Computation finished
+        """Computation finished
 
-        @todo: not called -- must be fixed
+        .. todo::
+            not called -- must be fixed
         """
         self.SetStatusText('', 0)
         # restore original files
@@ -518,7 +519,7 @@
             del self.model.fileInput
         
     def OnValidateModel(self, event, showMsg = True):
-        """!Validate entire model"""
+        """Validate entire model"""
         if self.model.GetNumItems() < 1:
             GMessage(parent = self, 
                      message = _('Model is empty. Nothing to validate.'))
@@ -537,7 +538,7 @@
                      message = _('Model is valid.'))
     
     def OnExportImage(self, event):
-        """!Export model to image (default image)
+        """Export model to image (default image)
         """
         xminImg = 0
         xmaxImg = 0
@@ -600,20 +601,21 @@
         dlg.Destroy()
         
     def OnExportPython(self, event = None, text = None):
-        """!Export model to Python script"""
+        """Export model to Python script"""
         filename = self.pythonPanel.SaveAs(force = True)
         self.SetStatusText(_("Model exported to <%s>") % filename)
 
     def OnDefineRelation(self, event):
-        """!Define relation between data and action items"""
+        """Define relation between data and action items"""
         self.canvas.SetCursor(self.cursors["cross"])
         self.defineRelation = { 'from' : None,
                                 'to'   : None }
         
     def OnDefineLoop(self, event):
-        """!Define new loop in the model
+        """Define new loop in the model
 
-        @todo: move to ModelCanvas?
+        .. todo::
+            move to ModelCanvas?
         """
         self.ModelChanged()
         
@@ -629,9 +631,10 @@
         self.canvas.Refresh()
         
     def OnDefineCondition(self, event):
-        """!Define new condition in the model
+        """Define new condition in the model
 
-        @todo: move to ModelCanvas?
+        .. todo::
+            move to ModelCanvas?
         """
         self.ModelChanged()
         
@@ -647,7 +650,7 @@
         self.canvas.Refresh()
     
     def OnAddAction(self, event):
-        """!Add action to model"""
+        """Add action to model"""
         if self.searchDialog is None:
             self.searchDialog = ModelSearchDialog(self)
             self.searchDialog.CentreOnParent()
@@ -703,7 +706,7 @@
             win.Raise()
         
     def OnAddData(self, event):
-        """!Add data item to model
+        """Add data item to model
         """
         # add action to canvas
         width, height = self.canvas.GetSize()
@@ -730,7 +733,7 @@
         self.canvas.Refresh()
 
     def OnAddComment(self, event):
-        """!Add comment to the model"""
+        """Add comment to the model"""
         dlg = wx.TextEntryDialog(parent = self, message = _("Comment:"), caption = _("Add comment"),
                                  style = wx.OK | wx.CANCEL | wx.CENTRE | wx.TE_MULTILINE)
         if dlg.ShowModal() == wx.ID_OK:
@@ -756,7 +759,7 @@
         event.Skip()
 
     def _switchPage(self, notification):
-        """!Manages @c 'output' notebook page according to event notification."""
+        """Manages @c 'output' notebook page according to event notification."""
         if notification == Notification.HIGHLIGHT:
             self.notebook.HighlightPageByName('output')
         if notification == Notification.MAKE_VISIBLE:
@@ -767,11 +770,11 @@
             self.Raise()
 
     def OnAbout(self, event):
-        """!Display About window"""
+        """Display About window"""
         ShowAboutDialog(prgName=_('wxGUI Graphical Modeler'), startYear='2010')
         
     def GetOptData(self, dcmd, layer, params, propwin):
-        """!Process action data"""
+        """Process action data"""
         if params: # add data items
             width, height = self.canvas.GetSize()
             x = width/2 - 200 + self._randomShift()
@@ -830,9 +833,9 @@
         self.SetStatusText(layer.GetLog(), 0)
         
     def AddLine(self, rel):
-        """!Add connection between model objects
+        """Add connection between model objects
         
-        @param rel relation
+        :param rel: relation
         """
         fromShape = rel.GetFrom()
         toShape   = rel.GetTo()
@@ -857,7 +860,7 @@
         rel.Show(True)
         
     def LoadModelFile(self, filename):
-        """!Load model definition stored in GRASS Model XML file (gxm)
+        """Load model definition stored in GRASS Model XML file (gxm)
         """
         try:
             self.model.LoadModel(filename)
@@ -927,10 +930,10 @@
         self.canvas.Refresh(True)
         
     def WriteModelFile(self, filename):
-        """!Save model to model file, recover original file on error.
+        """Save model to model file, recover original file on error.
         
-        @return True on success
-        @return False on failure
+        :return: True on success
+        :return: False on failure
         """
         self.ModelChanged(False)
         tmpfile = tempfile.TemporaryFile(mode='w+b')
@@ -958,7 +961,7 @@
         return True
     
     def DefineLoop(self, loop):
-        """!Define loop with given list of items"""
+        """Define loop with given list of items"""
         parent = loop
         items = loop.GetItems(self.GetModel().GetItems())
         if not items:
@@ -1002,7 +1005,7 @@
         self.canvas.Refresh()
 
     def DefineCondition(self, condition):
-        """!Define if-else statement with given list of items"""
+        """Define if-else statement with given list of items"""
         items = condition.GetItems(self.model.GetItems(objType=ModelAction))
         if not items['if'] and not items['else']:
             return
@@ -1034,7 +1037,7 @@
         self.canvas.Refresh()
         
 class ModelCanvas(ogl.ShapeCanvas):
-    """!Canvas where model is drawn"""
+    """Canvas where model is drawn"""
     def __init__(self, parent):
         self.parent = parent
         ogl.OGLInitialize()
@@ -1050,7 +1053,7 @@
         self.Bind(wx.EVT_LEFT_DOWN,  self.OnLeftDown)
 
     def OnKeyUp(self, event):
-        """!Key pressed"""
+        """Key pressed"""
         kc = event.GetKeyCode()
         if kc == wx.WXK_DELETE:
             self.RemoveSelected()
@@ -1060,7 +1063,7 @@
         evt.Skip()
 
     def RemoveSelected(self):
-        """!Remove selected shapes"""
+        """Remove selected shapes"""
         self.parent.ModelChanged()
         
         diagram = self.GetDiagram()
@@ -1068,7 +1071,7 @@
         self.RemoveShapes(shapes)
 
     def RemoveShapes(self, shapes):
-        """!Removes shapes"""
+        """Removes shapes"""
         self.parent.ModelChanged()
         diagram = self.GetDiagram()
         for shape in shapes:
@@ -1086,9 +1089,9 @@
         self.Refresh()
         
     def GetNewShapePos(self):
-        """!Determine optimal position for newly added object
+        """Determine optimal position for newly added object
 
-        @return x,y
+        :return: x,y
         """
         xNew, yNew = map(lambda x: x / 2, self.GetSize())
         diagram = self.GetDiagram()
@@ -1102,7 +1105,7 @@
         return xNew, yNew
 
     def GetShapesSelected(self):
-        """!Get list of selected shapes"""
+        """Get list of selected shapes"""
         selected = list()
         diagram = self.GetDiagram()
         for shape in diagram.GetShapeList():
@@ -1112,7 +1115,7 @@
         return selected
 
 class ModelEvtHandler(ogl.ShapeEvtHandler):
-    """!Model event handler class"""
+    """Model event handler class"""
     def __init__(self, log, frame):
         ogl.ShapeEvtHandler.__init__(self)
         self.log = log
@@ -1120,7 +1123,7 @@
         self.x = self.y = None
         
     def OnLeftClick(self, x, y, keys = 0, attachment = 0):
-        """!Left mouse button pressed -> select item & update statusbar"""
+        """Left mouse button pressed -> select item & update statusbar"""
         shape = self.GetShape()
         canvas = shape.GetCanvas()
         dc = wx.ClientDC(canvas)
@@ -1163,11 +1166,11 @@
             self.log.SetStatusText('', 0)
         
     def OnLeftDoubleClick(self, x, y, keys = 0, attachment = 0):
-        """!Left mouse button pressed (double-click) -> show properties"""
+        """Left mouse button pressed (double-click) -> show properties"""
         self.OnProperties()
         
     def OnProperties(self, event = None):
-        """!Show properties dialog"""
+        """Show properties dialog"""
         self.frame.ModelChanged()
         shape = self.GetShape()
         if isinstance(shape, ModelAction):
@@ -1230,13 +1233,13 @@
             dlg.Destroy()
                    
     def OnBeginDragLeft(self, x, y, keys = 0, attachment = 0):
-        """!Drag shape (begining)"""
+        """Drag shape (begining)"""
         self.frame.ModelChanged()
         if self._previousHandler:
             self._previousHandler.OnBeginDragLeft(x, y, keys, attachment)
         
     def OnEndDragLeft(self, x, y, keys = 0, attachment = 0):
-        """!Drag shape (end)"""
+        """Drag shape (end)"""
         if self._previousHandler:
             self._previousHandler.OnEndDragLeft(x, y, keys, attachment)
         
@@ -1257,13 +1260,13 @@
         canvas.Refresh()
 
     def OnEndSize(self, x, y):
-        """!Resize shape"""
+        """Resize shape"""
         self.frame.ModelChanged()
         if self._previousHandler:
             self._previousHandler.OnEndSize(x, y)
         
     def OnRightClick(self, x, y, keys = 0, attachment = 0):
-        """!Right click -> pop-up menu"""
+        """Right click -> pop-up menu"""
         if not hasattr (self, "popupID"):
             self.popupID = dict()
             for key in ('remove', 'enable', 'addPoint',
@@ -1327,11 +1330,11 @@
         popupMenu.Destroy()
 
     def OnDisable(self, event):
-        """!Disable action"""
+        """Disable action"""
         self._onEnable(False)
         
     def OnEnable(self, event):
-        """!Disable action"""
+        """Disable action"""
         self._onEnable(True)
         
     def _onEnable(self, enable):
@@ -1386,7 +1389,7 @@
         canvas.Refresh(False)
         
     def OnAddPoint(self, event):
-        """!Add control point"""
+        """Add control point"""
         shape = self.GetShape()
         shape.InsertLineControlPoint(point = wx.RealPoint(self.x, self.y))
         shape.ResetShapes()
@@ -1395,7 +1398,7 @@
         self.frame.canvas.Refresh()
         
     def OnRemovePoint(self, event):
-        """!Remove control point"""
+        """Remove control point"""
         shape = self.GetShape()
         shape.DeleteLineControlPoint()
         shape.Select(False)
@@ -1404,14 +1407,14 @@
         self.frame.canvas.Refresh()
         
     def OnIntermediate(self, event):
-        """!Mark data as intermediate"""
+        """Mark data as intermediate"""
         self.frame.ModelChanged()
         shape = self.GetShape()
         shape.SetIntermediate(event.IsChecked())
         self.frame.canvas.Refresh()
 
     def OnRemove(self, event):
-        """!Remove shape
+        """Remove shape
         """
         self.frame.GetCanvas().RemoveShapes([self.GetShape()])
         self.frame.itemPanel.Update()
@@ -1419,7 +1422,7 @@
 class VariablePanel(wx.Panel):
     def __init__(self, parent, id = wx.ID_ANY,
                  **kwargs):
-        """!Manage model variables panel
+        """Manage model variables panel
         """
         self.parent = parent
         
@@ -1465,7 +1468,7 @@
         self._layout()
 
     def _layout(self):
-        """!Layout dialog"""
+        """Layout dialog"""
         listSizer = wx.StaticBoxSizer(self.listBox, wx.VERTICAL)
         listSizer.Add(item = self.list, proportion = 1,
                       flag = wx.EXPAND)
@@ -1516,14 +1519,14 @@
         mainSizer.Fit(self)
         
     def OnText(self, event):
-        """!Text entered"""
+        """Text entered"""
         if self.name.GetValue():
             self.btnAdd.Enable()
         else:
             self.btnAdd.Enable(False)
     
     def OnAdd(self, event):
-        """!Add new variable to the list"""
+        """Add new variable to the list"""
         msg = self.list.Append(self.name.GetValue(),
                                self.type.GetStringSelection(),
                                self.value.GetValue(),
@@ -1541,7 +1544,7 @@
             self.UpdateModelVariables()
         
     def UpdateModelVariables(self):
-        """!Update model variables"""
+        """Update model variables"""
         variables = dict()
         for values in self.list.GetData().itervalues():
             name = values[0]
@@ -1555,18 +1558,18 @@
         self.parent.ModelChanged()
 
     def Update(self):
-        """!Reload list of variables"""
+        """Reload list of variables"""
         self.list.OnReload(None)
         
     def Reset(self):
-        """!Remove all variables"""
+        """Remove all variables"""
         self.list.DeleteAllItems()
         self.parent.GetModel().SetVariables([])
         
 class ItemPanel(wx.Panel):
     def __init__(self, parent, id = wx.ID_ANY,
                  **kwargs):
-        """!Manage model items
+        """Manage model items
         """
         self.parent = parent
         
@@ -1590,7 +1593,7 @@
         self._layout()
 
     def _layout(self):
-        """!Layout dialog"""
+        """Layout dialog"""
         listSizer = wx.StaticBoxSizer(self.listBox, wx.VERTICAL)
         listSizer.Add(item = self.list, proportion = 1,
                       flag = wx.EXPAND)
@@ -1610,11 +1613,11 @@
         mainSizer.Fit(self)
         
     def Update(self):
-        """!Reload list of variables"""
+        """Reload list of variables"""
         self.list.OnReload(None)
 
     def _getSelectedItems(self):
-        """!Get list of selected items, indeces start at 0"""
+        """Get list of selected items, indeces start at 0"""
         items = []
         current = -1
         while True:
@@ -1630,7 +1633,7 @@
         return items
     
     def OnMoveItemsUp(self, event):
-        """!Item moved up, update action ids"""
+        """Item moved up, update action ids"""
         items = self._getSelectedItems()
         if not items:
             return
@@ -1639,7 +1642,7 @@
         self.parent.ModelChanged()
 
     def OnMoveItemsDown(self, event):
-        """!Item moved up, update action ids"""
+        """Item moved up, update action ids"""
         items = self._getSelectedItems()
         if not items:
             return
@@ -1650,7 +1653,7 @@
 class PythonPanel(wx.Panel):
     def __init__(self, parent, id = wx.ID_ANY,
                  **kwargs):
-        """!Model as python script
+        """Model as python script
         """
         self.parent = parent
         
@@ -1701,7 +1704,7 @@
         self.SetSizer(sizer)
 
     def OnRun(self, event):
-        """!Run Python script"""
+        """Run Python script"""
         self.filename = grass.tempfile()
         try:
             fd = open(self.filename, "w")
@@ -1720,14 +1723,14 @@
         event.Skip()
 
     def OnDone(self, cmd, returncode):
-        """!Python script finished"""
+        """Python script finished"""
         grass.try_remove(self.filename)
         self.filename = None
         
     def SaveAs(self, force = False):
-        """!Save python script to file
+        """Save python script to file
 
-        @return filename
+        :return: filename
         """
         filename = ''
         dlg = wx.FileDialog(parent = self,
@@ -1773,15 +1776,15 @@
         return filename
     
     def OnSaveAs(self, event):
-        """!Save python script to file"""
+        """Save python script to file"""
         self.SaveAs(force = False)
         event.Skip()
         
     def RefreshScript(self):
-        """!Refresh Python script
+        """Refresh Python script
 
-        @return True on refresh
-        @return False script hasn't been updated
+        :return: True on refresh
+        :return: False script hasn't been updated
         """
         if self.body.modified:
             dlg = wx.MessageDialog(self,
@@ -1807,15 +1810,15 @@
         return True
     
     def OnRefresh(self, event):
-        """!Refresh Python script"""
+        """Refresh Python script"""
         if self.RefreshScript():
             self.parent.SetStatusText(_('Python script is up-to-date'), 0)
         event.Skip()
         
     def IsModified(self):
-        """!Check if python script has been modified"""
+        """Check if python script has been modified"""
         return self.body.modified
     
     def IsEmpty(self):
-        """!Check if python script is empty"""
+        """Check if python script is empty"""
         return len(self.body.GetText()) == 0

Modified: grass/trunk/gui/wxpython/gmodeler/giface.py
===================================================================
--- grass/trunk/gui/wxpython/gmodeler/giface.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gmodeler/giface.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gmodeler.giface
 
 @brief wxGUI Graphical Modeler GRASS interface
@@ -17,7 +17,7 @@
 from grass.pydispatch.signal import Signal
 
 class GraphicalModelerGrassInterface():
-    """!@implements core::giface::GrassInterface"""
+    """@implements core::giface::GrassInterface"""
     def __init__(self, model):
         self._model = model
     
@@ -31,5 +31,8 @@
         return self._model.GetMaps(prompt)
 
     def GetMapDisplay(self):
-        """@todo: implement connection with mapdisplay"""
+        """
+        ..todo::
+            implement connection with mapdisplay
+        """
         return None

Modified: grass/trunk/gui/wxpython/gmodeler/menudata.py
===================================================================
--- grass/trunk/gui/wxpython/gmodeler/menudata.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gmodeler/menudata.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gmodeler.menudata
 
 @brief wxGUI Graphical Modeler - menu data

Modified: grass/trunk/gui/wxpython/gmodeler/model.py
===================================================================
--- grass/trunk/gui/wxpython/gmodeler/model.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gmodeler/model.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gmodeler.model
 
 @brief wxGUI Graphical Modeler (base classes & read/write)
@@ -55,7 +55,7 @@
 from grass.script import task as gtask
 
 class Model(object):
-    """!Class representing the model"""
+    """Class representing the model"""
     def __init__(self, canvas = None):
         self.items   = list() # list of ordered items (action/loop/condition)
         
@@ -70,13 +70,13 @@
         self.canvas  = canvas
         
     def GetCanvas(self):
-        """!Get canvas or None"""
+        """Get canvas or None"""
         return self.canvas
 
     def GetItems(self, objType = None):
-        """!Get list of model items
+        """Get list of model items
 
-        @param objType Object type to filter model objects
+        :param objType: Object type to filter model objects
         """
         if not objType:
             return self.items
@@ -89,12 +89,12 @@
         return result
     
     def GetItem(self, aId, objType=None):
-        """!Get item of given id
+        """Get item of given id
 
-        @param aId item id
+        :param aId: item id
         
-        @return Model* instance
-        @return None if no item found
+        :return: Model* instance
+        :return: None if no item found
         """
         ilist = self.GetItems(objType)
         for item in ilist:
@@ -104,11 +104,11 @@
         return None
 
     def GetItemIndex(self, item):
-        """!Return list index of given item"""
+        """Return list index of given item"""
         return self.items.index(item)
     
     def GetNumItems(self, actionOnly = False):
-        """!Get number of items"""
+        """Get number of items"""
         if actionOnly:
             return len(self.GetItems(objType = ModelAction))
         
@@ -157,9 +157,9 @@
             iId += 1
         
     def GetNextId(self):
-        """!Get next id (data ignored)
+        """Get next id (data ignored)
 
-        @return next id to be used (default: 1)
+        :return: next id to be used (default: 1)
         """
         if len(self.items) < 1:
             return 1
@@ -171,28 +171,28 @@
         return 1
 
     def GetProperties(self):
-        """!Get model properties"""
+        """Get model properties"""
         return self.properties
 
     def GetVariables(self, params = False):
-        """!Get model variables"""
+        """Get model variables"""
         if params:
             return self.variablesParams
         
         return self.variables
     
     def SetVariables(self, data):
-        """!Set model variables"""
+        """Set model variables"""
         self.variables = data
     
     def Reset(self):
-        """!Reset model"""
+        """Reset model"""
         self.items = list()
 
     def RemoveItem(self, item):
-        """!Remove item from model
+        """Remove item from model
         
-        @return list of related items to remove/update
+        :return: list of related items to remove/update
         """
         relList = list()
         upList = list()
@@ -225,7 +225,7 @@
         return relList, upList
     
     def FindAction(self, aId):
-        """!Find action by id"""
+        """Find action by id"""
         alist = self.GetItems(objType = ModelAction)
         for action in alist:
             if action.GetId() == aId:
@@ -234,9 +234,9 @@
         return None
 
     def GetMaps(self, prompt):
-        """!Get list of maps of selected type
+        """Get list of maps of selected type
 
-        @param promt to filter maps"""
+        :param prompt: to filter maps"""
         maps = list()
         for data in self.GetData():
             if prompt == data.GetPrompt():
@@ -248,7 +248,7 @@
         return maps
 
     def GetData(self):
-        """!Get list of data items"""
+        """Get list of data items"""
         result = list()
         dataItems = self.GetItems(objType = ModelData)
         
@@ -267,13 +267,13 @@
         return result
 
     def FindData(self, value, prompt):
-        """!Find data item in the model
+        """Find data item in the model
 
-        @param value value
-        @param prompt prompt
+        :param value: value
+        :param prompt: prompt
 
-        @return ModelData instance
-        @return None if not found
+        :return: ModelData instance
+        :return: None if not found
         """
         for data in self.GetData():
             if data.GetValue() == value and \
@@ -283,9 +283,10 @@
         return None
                 
     def LoadModel(self, filename):
-        """!Load model definition stored in GRASS Model XML file (gxm)
+        """Load model definition stored in GRASS Model XML file (gxm)
         
-        @todo Validate against DTD
+        .. todo::
+             Validate against DTD
         
         Raise exception on error.
         """
@@ -412,7 +413,7 @@
             self.AddItem(commentItem, pos = commentItem.GetId()-1)
         
     def AddItem(self, newItem, pos = -1):
-        """!Add item to the list"""
+        """Add item to the list"""
         if pos != -1:
             self.items.insert(pos, newItem)
         else:
@@ -430,7 +431,7 @@
         return True
     
     def Validate(self):
-        """!Validate model, return None if model is valid otherwise
+        """Validate model, return None if model is valid otherwise
         error string"""
         errList = list()
 
@@ -464,11 +465,11 @@
         return errList
 
     def _substituteFile(self, item, params = None, checkOnly = False):
-        """!Subsitute variables in command file inputs
+        """Subsitute variables in command file inputs
 
-        @param checkOnly tuble - True to check variable, don't touch files
+        :param bool checkOnly: tuble - True to check variable, don't touch files
         
-        @return list of undefined variables
+        :return: list of undefined variables
         """
         errList = list()
         
@@ -537,14 +538,14 @@
         self._substituteFile(item, params, checkOnly = False)
 
     def RunAction(self, item, params, log, onDone, onPrepare = None, statusbar = None):
-        """!Run given action
+        """Run given action
 
-        @param item action item
-        @param params parameters dict
-        @param log logging window
-        @param onDone on-done method
-        @param onPrepare on-prepare method
-        @param statusbar wx.StatusBar instance or None
+        :param item: action item
+        :param params: parameters dict
+        :param log: logging window
+        :param onDone: on-done method
+        :param onPrepare: on-prepare method
+        :param statusbar: wx.StatusBar instance or None
         """
         name = item.GetLabel()
         if name in params:
@@ -563,11 +564,11 @@
             item.SetParams(paramsOrig)
 
     def Run(self, log, onDone, parent = None):
-        """!Run model
+        """Run model
 
-        @param log logging window (see gconsole.GConsole)
-        @param onDone on-done method
-        @param parent window for messages or None
+        :param log: logging window (see gconsole.GConsole)
+        :param onDone: on-done method
+        :param parent: window for messages or None
         """
         if self.GetNumItems() < 1:
             GMessage(parent = parent,
@@ -704,7 +705,7 @@
                     p['value'] = ''
         
     def DeleteIntermediateData(self, log):
-        """!Detele intermediate data"""
+        """Detele intermediate data"""
         rast, vect, rast3d, msg = self.GetIntermediateData()
         
         if rast:
@@ -715,7 +716,7 @@
             log.RunCmd(['g.remove', 'vect=%s' %','.join(vect)])
         
     def GetIntermediateData(self):
-        """!Get info about intermediate data"""
+        """Get info about intermediate data"""
         rast = list()
         rast3d = list()
         vect = list()
@@ -745,19 +746,19 @@
         return rast, vect, rast3d, msg
 
     def Update(self):
-        """!Update model"""
+        """Update model"""
         for item in self.items:
             item.Update()
         
     def IsParameterized(self):
-        """!Return True if model is parameterized"""
+        """Return True if model is parameterized"""
         if self.Parameterize():
             return True
         
         return False
     
     def Parameterize(self):
-        """!Return parameterized options"""
+        """Return parameterized options"""
         result = dict()
         idx = 0
         if self.variables:
@@ -840,19 +841,19 @@
         pass
 
     def GetLabel(self):
-        """!Get label"""
+        """Get label"""
         return self.label
 
     def SetLabel(self, label=''):
-        """!Set label"""
+        """Set label"""
         self.label = label
         
     def GetId(self):
-        """!Get id"""
+        """Get id"""
         return self.id
 
     def SetId(self, newId):
-        """!Set id"""
+        """Set id"""
         if self.inBlock:
             for loop in self.inBlock:
                 # update block item
@@ -862,14 +863,14 @@
 
 
     def AddRelation(self, rel):
-        """!Record new relation
+        """Record new relation
         """
         self.rels.append(rel)
 
     def GetRelations(self, fdir = None):
-        """!Get list of relations
+        """Get list of relations
         
-        @param fdir True for 'from'
+        :param bool fdir: True for 'from'
         """
         if fdir is None:
             return self.rels
@@ -886,11 +887,11 @@
         return result
     
     def IsEnabled(self):
-        """!Get True if action is enabled, otherwise False"""
+        """Get True if action is enabled, otherwise False"""
         return self.isEnabled
     
     def Enable(self, enabled = True):
-        """!Enable/disable action"""
+        """Enable/disable action"""
         self.isEnabled = enabled
         self.Update()
 
@@ -898,35 +899,35 @@
         pass
 
     def SetBlock(self, item):
-        """!Add object to the block (loop/condition)
+        """Add object to the block (loop/condition)
 
-        @param item reference to ModelLoop or ModelCondition which
-        defines loops/condition
+        :param item: reference to ModelLoop or ModelCondition which
+                     defines loops/condition
         """
         if item not in self.inBlock:
             self.inBlock.append(item)
         
     def UnSetBlock(self, item):
-        """!Remove object from the block (loop/consition)
+        """Remove object from the block (loop/consition)
 
-        @param item reference to ModelLoop or ModelCondition which
-        defines loops/codition
+        :param item: reference to ModelLoop or ModelCondition which
+                     defines loops/codition
         """
         if item in self.inBlock:
             self.inBlock.remove(item)
         
     def GetBlock(self):
-        """!Get list of related ModelObject(s) which defines block
+        """Get list of related ModelObject(s) which defines block
         (loop/condition)
 
-        @return list of ModelObjects
+        :return: list of ModelObjects
         """
         return self.inBlock
     
     def GetBlockId(self):
-        """!Get list of related ids which defines block
+        """Get list of related ids which defines block
 
-        @return list of ids
+        :return: list of ids
         """
         ret = list()
         for mo in self.inBlock:
@@ -935,7 +936,7 @@
         return ret
     
 class ModelAction(ModelObject, ogl.DividedShape):
-    """!Action class (GRASS module)"""
+    """Action class (GRASS module)"""
     def __init__(self, parent, x, y, id = -1, cmd = None, task = None,
                  width = None, height = None, label = None, comment = ''):
         ModelObject.__init__(self, id, label)
@@ -989,7 +990,7 @@
             self.SetValid(self.task.get_options())
         
     def _setBrush(self, running = False):
-        """!Set brush"""
+        """Set brush"""
         if running:
             color = UserSettings.Get(group='modeler', key='action',
                                      subkey=('color', 'running'))
@@ -1007,7 +1008,7 @@
         self.SetBrush(wx.Brush(wxColor))
         
     def _setPen(self):
-        """!Set pen"""
+        """Set pen"""
         if self.isParameterized:
             width = int(UserSettings.Get(group='modeler', key='action',
                                          subkey=('width', 'parameterized')))
@@ -1040,9 +1041,9 @@
         self.GetCanvas().Refresh()
 
     def SetLabel(self, label=None):
-        """!Set label
+        """Set label
 
-        @param label if None use command string instead
+        :param label: if None use command string instead
         """
         if label:
             self.label = label 
@@ -1060,7 +1061,7 @@
         self.ReformatRegions()
 
     def SetComment(self, comment):
-        """!Set comment"""
+        """Set comment"""
         if self.regionComment is None:
             self.regionComment = ogl.ShapeRegion()
             self.regionComment.SetFormatMode(ogl.FORMAT_CENTRE_HORIZ)
@@ -1076,24 +1077,24 @@
         self.ReformatRegions()
 
     def GetComment(self):
-        """!Get comment"""
+        """Get comment"""
         return self.comment
 
     def SetProperties(self, params, propwin):
-        """!Record properties dialog"""
+        """Record properties dialog"""
         self.task.params = params['params']
         self.task.flags  = params['flags']
         self.propWin = propwin
 
     def GetPropDialog(self):
-        """!Get properties dialog"""
+        """Get properties dialog"""
         return self.propWin
 
     def GetLog(self, string = True, substitute = None):
-        """!Get logging info
+        """Get logging info
 
-        @param string True to get cmd as a string otherwise a list
-        @param substitute dictionary of parameter to substitute or None
+        :param string: True to get cmd as a string otherwise a list
+        :param substitute: dictionary of parameter to substitute or None
         """
         cmd = self.task.get_cmd(ignoreErrors = True, ignoreRequired = True,
                                 ignoreDefault = False)
@@ -1141,7 +1142,7 @@
         return cmd
     
     def GetLabel(self):
-        """!Get name"""
+        """Get name"""
         if self.label:
             return self.label
         
@@ -1152,23 +1153,23 @@
         return _('unknown')
 
     def GetParams(self, dcopy = False):
-        """!Get dictionary of parameters"""
+        """Get dictionary of parameters"""
         if dcopy:
             return copy.deepcopy(self.task.get_options())
         
         return self.task.get_options()
 
     def GetTask(self):
-        """!Get grassTask instance"""
+        """Get grassTask instance"""
         return self.task
     
     def SetParams(self, params):
-        """!Set dictionary of parameters"""
+        """Set dictionary of parameters"""
         self.task.params = params['params']
         self.task.flags  = params['flags']
         
     def MergeParams(self, params):
-        """!Merge dictionary of parameters"""
+        """Merge dictionary of parameters"""
         if 'flags' in params:
             for f in params['flags']:
                 self.task.set_flag(f['name'],
@@ -1179,9 +1180,9 @@
                                     p.get('value', ''))
         
     def SetValid(self, options):
-        """!Set validity for action
+        """Set validity for action
         
-        @param options dictionary with flags and params (gtask)
+        :param options: dictionary with flags and params (gtask)
         """
         self.isValid = True
         self.isParameterized = False
@@ -1204,15 +1205,15 @@
             self._setPen()
         
     def IsValid(self):
-        """!Check validity (all required parameters set)"""
+        """Check validity (all required parameters set)"""
         return self.isValid
     
     def IsParameterized(self):
-        """!Check if action is parameterized"""
+        """Check if action is parameterized"""
         return self.isParameterized
     
     def FindData(self, name):
-        """!Find data item by name"""
+        """Find data item by name"""
         for rel in self.GetRelations():
             data = rel.GetData()
             if name == rel.GetLabel() and name in data.GetLabel():
@@ -1221,7 +1222,7 @@
         return None
 
     def Update(self, running = False):
-        """!Update action"""
+        """Update action"""
         if running:
             self._setBrush(running = True)
         else:
@@ -1229,7 +1230,7 @@
         self._setPen()
 
     def OnDraw(self, dc):
-        """!Draw action in canvas"""
+        """Draw action in canvas"""
         self._setBrush()
         self._setPen()
         ogl.RectangleShape.Recentre(self, dc) # re-center text
@@ -1239,12 +1240,12 @@
     def __init__(self, parent, x, y, value = '', prompt = '', width = None, height = None):
         """Data item class
         
-        @param parent window parent
-        @param x, y   position of the shape
-        @param fname, tname list of parameter names from / to
-        @param value  value
-        @param prompt type of GIS element
-        @param width,height dimension of the shape
+        :param parent: window parent
+        :param x, y: position of the shape
+        :param fname, tname: list of parameter names from / to
+        :param value: value
+        :param prompt: type of GIS element
+        :param width, height: dimension of the shape
         """
         ModelObject.__init__(self)
         
@@ -1269,11 +1270,11 @@
             self.SetLabel()
             
     def IsIntermediate(self):
-        """!Checks if data item is intermediate"""
+        """Checks if data item is intermediate"""
         return self.intermediate
     
     def SetIntermediate(self, im):
-        """!Set intermediate flag"""
+        """Set intermediate flag"""
         self.intermediate = im
   
     def OnDraw(self, dc):
@@ -1282,7 +1283,7 @@
         ogl.EllipseShape.OnDraw(self, dc)
         
     def GetLog(self, string = True):
-        """!Get logging info"""
+        """Get logging info"""
         name = list()
         for rel in self.GetRelations():
             name.append(rel.GetLabel())
@@ -1292,7 +1293,7 @@
             return self.value + ' (' + self.prompt + ')'
 
     def GetLabel(self):
-        """!Get list of names"""
+        """Get list of names"""
         name = list()
         for rel in self.GetRelations():
             name.append(rel.GetLabel())
@@ -1300,24 +1301,24 @@
         return name
     
     def GetPrompt(self):
-        """!Get prompt"""
+        """Get prompt"""
         return self.prompt
 
     def SetPrompt(self, prompt):
-        """!Set prompt
+        """Set prompt
         
-        @param prompt
+        :param prompt:
         """
         self.prompt = prompt
         
     def GetValue(self):
-        """!Get value"""
+        """Get value"""
         return self.value
 
     def SetValue(self, value):
-        """!Set value
+        """Set value
 
-        @param value
+        :param value:
         """
         self.value = value
         self.SetLabel()
@@ -1333,15 +1334,15 @@
                 action.SetParams(params = task.get_options())
         
     def GetPropDialog(self):
-        """!Get properties dialog"""
+        """Get properties dialog"""
         return self.propWin
 
     def SetPropDialog(self, win):
-        """!Get properties dialog"""
+        """Get properties dialog"""
         self.propWin = win
 
     def _setBrush(self):
-        """!Set brush"""
+        """Set brush"""
         if self.prompt == 'raster':
             color = UserSettings.Get(group = 'modeler', key = 'data',
                                      subkey = ('color', 'raster'))
@@ -1358,7 +1359,7 @@
         self.SetBrush(wx.Brush(wxColor))
         
     def _setPen(self):
-        """!Set pen"""
+        """Set pen"""
         isParameterized = False
         for rel in self.GetRelations('from'):
             if rel.GetTo().IsParameterized():
@@ -1385,7 +1386,7 @@
         self.SetPen(pen)
         
     def SetLabel(self):
-        """!Update text"""
+        """Update text"""
         self.ClearText()
         name = []
         for rel in self.GetRelations():
@@ -1397,13 +1398,13 @@
             self.AddText(_('<not defined>'))
         
     def Update(self):
-        """!Update action"""
+        """Update action"""
         self._setBrush()
         self._setPen()
         self.SetLabel()
 
 class ModelRelation(ogl.LineShape):
-    """!Data - action relation"""
+    """Data - action relation"""
     def __init__(self, parent, fromShape, toShape, param = ''):
         self.fromShape = fromShape
         self.toShape   = toShape
@@ -1422,18 +1423,18 @@
             self.toShape.rels.remove(self)
 
     def GetFrom(self):
-        """!Get id of 'from' shape"""
+        """Get id of 'from' shape"""
         return self.fromShape
     
     def GetTo(self):
-        """!Get id of 'to' shape"""
+        """Get id of 'to' shape"""
         return self.toShape
     
     def GetData(self):
-        """!Get related ModelData instance
+        """Get related ModelData instance
 
-        @return ModelData instance
-        @return None if not found
+        :return: ModelData instance
+        :return: None if not found
         """
         if isinstance(self.fromShape, ModelData):
             return self.fromShape
@@ -1443,30 +1444,30 @@
         return None
     
     def GetLabel(self):
-        """!Get parameter name"""
+        """Get parameter name"""
         return self.param
     
     def ResetShapes(self):
-        """!Reset related objects"""
+        """Reset related objects"""
         self.fromShape.ResetControlPoints()
         self.toShape.ResetControlPoints()
         self.ResetControlPoints()
         
     def SetControlPoints(self, points):
-        """!Set control points"""
+        """Set control points"""
         self._points = points
         
     def GetControlPoints(self):
-        """!Get list of control points"""
+        """Get list of control points"""
         return self._points
     
     def _setPen(self):
-        """!Set pen"""
+        """Set pen"""
         pen = wx.Pen(wx.BLACK, 1, wx.SOLID)
         self.SetPen(pen)
         
     def OnDraw(self, dc):
-        """!Draw relation"""
+        """Draw relation"""
         self._setPen()
         ogl.LineShape.OnDraw(self, dc)
     
@@ -1475,12 +1476,12 @@
 
 class ModelItem(ModelObject):
     def __init__(self, parent, x, y, id = -1, width = None, height = None, label = '', items = []):
-        """!Abstract class for loops and conditions"""
+        """Abstract class for loops and conditions"""
         ModelObject.__init__(self, id, label)
         self.parent  = parent
 
     def _setPen(self):
-        """!Set pen"""
+        """Set pen"""
         if self.isEnabled:
             style = wx.SOLID
         else:
@@ -1490,34 +1491,34 @@
         self.SetPen(pen)
 
     def SetId(self, id):
-        """!Set loop id"""
+        """Set loop id"""
         self.id = id
 
     def SetLabel(self, label=''):
-        """!Set loop text (condition)"""
+        """Set loop text (condition)"""
         if label:
             self.label = label
         self.ClearText()
         self.AddText('(' + str(self.id) + ') ' + self.label)
 
     def GetLog(self):
-        """!Get log info"""
+        """Get log info"""
         if self.label:
             return _("Condition: ") + self.label
         else:
             return _("Condition: not defined")
 
     def AddRelation(self, rel):
-        """!Record relation"""
+        """Record relation"""
         self.rels.append(rel)
         
     def Clear(self):
-        """!Clear object, remove rels"""
+        """Clear object, remove rels"""
         self.rels = list()
    
 class ModelLoop(ModelItem, ogl.RectangleShape):
     def __init__(self, parent, x, y, id=-1, idx=-1, width = None, height = None, label = '', items = []):
-        """!Defines a loop"""
+        """Defines a loop"""
         ModelItem.__init__(self, parent, x, y, id, width, height, label, items)
         self.itemIds = list() # unordered        
 
@@ -1538,7 +1539,7 @@
             self.SetLabel(label)
 
     def _setBrush(self):
-        """!Set brush"""
+        """Set brush"""
         if not self.isEnabled:
             color = UserSettings.Get(group='modeler', key='disabled',
                                      subkey='color')
@@ -1550,7 +1551,7 @@
         self.SetBrush(wx.Brush(wxColor))
 
     def Enable(self, enabled = True):
-        """!Enable/disable action"""
+        """Enable/disable action"""
         for idx in self.itemIds:
             item = self.parent.FindAction(idx)
             if item:
@@ -1564,7 +1565,7 @@
         self._setBrush()
 
     def GetItems(self, items):
-        """!Get sorted items by id"""
+        """Get sorted items by id"""
         result = list()
         for item in items:
             if item.GetId() in self.itemIds:
@@ -1573,17 +1574,17 @@
         return result
 
     def SetItems(self, items):
-        """!Set items (id)"""
+        """Set items (id)"""
         self.itemIds = items
 
     def UpdateItem(self, oldId, newId):
-        """!Update item in the list"""
+        """Update item in the list"""
         idx = self.itemIds.index(oldId)
         if idx != -1:
             self.itemIds[idx] = newId
         
     def OnDraw(self, dc):
-        """!Draw loop in canvas"""
+        """Draw loop in canvas"""
         self._setBrush()
         ogl.RectangleShape.Recentre(self, dc) # re-center text
         ogl.RectangleShape.OnDraw(self, dc)
@@ -1591,7 +1592,7 @@
 class ModelCondition(ModelItem, ogl.PolygonShape):
     def __init__(self, parent, x, y, id = -1, width = None, height = None, label = '',
                  items = { 'if' : [], 'else' : [] }):
-        """!Defines a if-else condition"""
+        """Defines a if-else condition"""
         ModelItem.__init__(self, parent, x, y, id, width, height, label, items)
         self.itemIds = {'if' : [], 'else': []}
         
@@ -1623,19 +1624,19 @@
                 self.AddText('(' + str(self.id) + ')')
 
     def GetLabel(self):
-        """!Get name"""
+        """Get name"""
         return _("if-else")
 
     def GetWidth(self):
-        """!Get object width"""
+        """Get object width"""
         return self.width
 
     def GetHeight(self):
-        """!Get object height"""
+        """Get object height"""
         return self.height
 
     def GetItems(self, items):
-        """!Get sorted items by id"""
+        """Get sorted items by id"""
         result = {'if' : [], 'else': []}
         for item in items:
             if item.GetId() in self.itemIds['if']:
@@ -1646,17 +1647,17 @@
         return result
 
     def SetItems(self, items, branch = 'if'):
-        """!Set items (id)
+        """Set items (id)
 
-        @param items list of items
-        @param branch 'if' / 'else'
+        :param items: list of items
+        :param branch: 'if' / 'else'
         """
         if branch in ['if', 'else']:
             self.itemIds[branch] = items
 
 class ModelComment(ModelObject, ogl.RectangleShape):
     def __init__(self, parent, x, y, id = -1, width = None, height = None, label = ''):
-        """!Defines a model comment"""
+        """Defines a model comment"""
         ModelObject.__init__(self, id, label)
 
         if not width:
@@ -1677,21 +1678,21 @@
             self.SetLabel(label)
 
     def _setBrush(self, running = False):
-        """!Set brush"""
+        """Set brush"""
         color = UserSettings.Get(group='modeler', key='comment',
                                      subkey='color')
         wxColor = wx.Colour(color[0], color[1], color[2])
         self.SetBrush(wx.Brush(wxColor))
 
     def _setPen(self):
-        """!Set pen"""
+        """Set pen"""
         pen = wx.Pen(wx.BLACK, 1, wx.DOT)
         self.SetPen(pen)
 
     def SetLabel(self, label=None):
-        """!Set label
+        """Set label
 
-        @param label if None use command string instead
+        :param label: if None use command string instead
         """
         if label:
             self.label = label 
@@ -1712,9 +1713,9 @@
         self.GetCanvas().Refresh()
 
 class ProcessModelFile:
-    """!Process GRASS model file (gxm)"""
+    """Process GRASS model file (gxm)"""
     def __init__(self, tree):
-        """!A ElementTree handler for the GXM XML file, as defined in
+        """A ElementTree handler for the GXM XML file, as defined in
         grass-gxm.dtd.
         """
         self.tree = tree
@@ -1736,9 +1737,9 @@
         self._processData()
         
     def _filterValue(self, value):
-        """!Filter value
+        """Filter value
         
-        @param value
+        :param value:
         """
         value = value.replace('<', '<')
         value = value.replace('>', '>')
@@ -1746,7 +1747,7 @@
         return value
         
     def _getNodeText(self, node, tag, default = ''):
-        """!Get node text"""
+        """Get node text"""
         p = node.find(tag)
         if p is not None:
             if p.text:
@@ -1757,7 +1758,7 @@
         return default
     
     def _processWindow(self):
-        """!Process window properties"""
+        """Process window properties"""
         node = self.root.find('window')
         if node is None:
             self.pos = self.size = None
@@ -1766,7 +1767,7 @@
         self.pos, self.size = self._getDim(node)
         
     def _processProperties(self):
-        """!Process model properties"""
+        """Process model properties"""
         node = self.root.find('properties')
         if node is None:
             return
@@ -1779,7 +1780,7 @@
                 self.properties['overwrite'] = True
         
     def _processProperty(self, pnode, name):
-        """!Process given property"""
+        """Process given property"""
         node = pnode.find(name)
         if node is not None:
             self.properties[name] = node.text
@@ -1787,7 +1788,7 @@
             self.properties[name] = ''
 
     def _processVariables(self):
-        """!Process model variables"""
+        """Process model variables"""
         vnode = self.root.find('variables')
         if vnode is None:
             return
@@ -1800,21 +1801,21 @@
                 self._processVariable(node, name, key)
         
     def _processVariable(self, pnode, name, key):
-        """!Process given variable"""
+        """Process given variable"""
         node = pnode.find(key)
         if node is not None:
             if node.text:
                 self.variables[name][key] = node.text
 
     def _processItems(self):
-        """!Process model items (actions, loops, conditions)"""
+        """Process model items (actions, loops, conditions)"""
         self._processActions()
         self._processLoops()
         self._processConditions()
         self._processComments()
 
     def _processActions(self):
-        """!Process model file"""
+        """Process model file"""
         for action in self.root.findall('action'):
             pos, size = self._getDim(action)
             disabled  = False
@@ -1844,7 +1845,7 @@
                                   'comment'  : commentString})
 
     def _getDim(self, node):
-        """!Get position and size of shape"""
+        """Get position and size of shape"""
         pos = size = None
         posAttr = node.get('pos', None)
         if posAttr:
@@ -1865,7 +1866,7 @@
         return pos, size        
     
     def _processData(self):
-        """!Process model file"""
+        """Process model file"""
         for data in self.root.findall('data'):
             pos, size = self._getDim(data)
             param = data.find('data-parameter')
@@ -1900,10 +1901,10 @@
                                'rels' : rels })
         
     def _processTask(self, node):
-        """!Process task
+        """Process task
 
-        @return grassTask instance
-        @return None on error
+        :return: grassTask instance
+        :return: None on error
         """
         cmd = list()
         parameterized = list()
@@ -1946,7 +1947,7 @@
         return task
 
     def _processLoops(self):
-        """!Process model loops"""
+        """Process model loops"""
         for node in self.root.findall('loop'):
             pos, size = self._getDim(node)
             text = self._filterValue(self._getNodeText(node, 'condition')).strip()
@@ -1964,7 +1965,7 @@
                                 'items'   : aid })
         
     def _processConditions(self):
-        """!Process model conditions"""
+        """Process model conditions"""
         for node in self.root.findall('if-else'):
             pos, size = self._getDim(node)
             text = self._filterValue(self._getNodeText(node, 'condition')).strip()
@@ -1987,7 +1988,7 @@
                                      'items'   : aid })
 
     def _processComments(self):
-        """!Process model comments"""
+        """Process model comments"""
         for node in self.root.findall('comment'):
             pos, size = self._getDim(node)
             text = self._filterValue(node.text)
@@ -1999,7 +2000,7 @@
                                    'text'    : text })
         
 class WriteModelFile:
-    """!Generic class for writing model file"""
+    """Generic class for writing model file"""
     def __init__(self, fd, model):
         self.fd         = fd
         self.model      = model
@@ -2027,28 +2028,28 @@
         self._footer()
 
     def _filterValue(self, value):
-        """!Escapes value to be stored in XML.
+        """Escapes value to be stored in XML.
 
-        @param value string to be escaped as XML
-        @returns a XML-valid string
+        :param value: string to be escaped as XML
+        :return: a XML-valid string
         """
         value = saxutils.escape(value)
         return value
         
     def _header(self):
-        """!Write header"""
+        """Write header"""
         self.fd.write('<?xml version="1.0" encoding="%s"?>\n' % GetDefaultEncoding(forceUTF8 = True))
         self.fd.write('<!DOCTYPE gxm SYSTEM "grass-gxm.dtd">\n')
         self.fd.write('%s<gxm>\n' % (' ' * self.indent))
         self.indent += 4
                 
     def _footer(self):
-        """!Write footer"""
+        """Write footer"""
         self.indent -= 4
         self.fd.write('%s</gxm>\n' % (' ' * self.indent))
 
     def _window(self):
-        """!Write window properties"""
+        """Write window properties"""
         canvas = self.model.GetCanvas()
         if canvas is None:
             return
@@ -2059,7 +2060,7 @@
                           (' ' * self.indent, pos[0], pos[1], size[0], size[1]))
         
     def _properties(self):
-        """!Write model properties"""
+        """Write model properties"""
         self.fd.write('%s<properties>\n' % (' ' * self.indent))
         self.indent += 4
         if self.properties['name']:
@@ -2078,7 +2079,7 @@
         self.fd.write('%s</properties>\n' % (' ' * self.indent))
 
     def _variables(self):
-        """!Write model variables"""
+        """Write model variables"""
         if not self.variables:
             return
         self.fd.write('%s<variables>\n' % (' ' * self.indent))
@@ -2099,7 +2100,7 @@
         self.fd.write('%s</variables>\n' % (' ' * self.indent))
         
     def _items(self):
-        """!Write actions/loops/conditions"""
+        """Write actions/loops/conditions"""
         for item in self.items:
             if isinstance(item, ModelAction):
                 self._action(item)
@@ -2111,7 +2112,7 @@
                 self._comment(item)
         
     def _action(self, action):
-        """!Write actions"""
+        """Write actions"""
         self.fd.write('%s<action id="%d" name="%s" pos="%d,%d" size="%d,%d">\n' % \
                           (' ' * self.indent, action.GetId(), EncodeString(action.GetLabel()), action.GetX(), action.GetY(),
                            action.GetWidth(), action.GetHeight()))
@@ -2156,7 +2157,7 @@
         self.fd.write('%s</action>\n' % (' ' * self.indent))
                 
     def _data(self, dataList):
-        """!Write data"""
+        """Write data"""
         for data in dataList:
             self.fd.write('%s<data pos="%d,%d" size="%d,%d">\n' % \
                               (' ' * self.indent, data.GetX(), data.GetY(),
@@ -2198,7 +2199,7 @@
             self.fd.write('%s</data>\n' % (' ' * self.indent))
 
     def _loop(self, loop):
-        """!Write loops"""
+        """Write loops"""
         self.fd.write('%s<loop id="%d" pos="%d,%d" size="%d,%d">\n' % \
                           (' ' * self.indent, loop.GetId(), loop.GetX(), loop.GetY(),
                            loop.GetWidth(), loop.GetHeight()))
@@ -2214,7 +2215,7 @@
         self.fd.write('%s</loop>\n' % (' ' * self.indent))
 
     def _condition(self, condition):
-        """!Write conditions"""
+        """Write conditions"""
         bbox = condition.GetBoundingBoxMin()
         self.fd.write('%s<if-else id="%d" pos="%d,%d" size="%d,%d">\n' % \
                           (' ' * self.indent, condition.GetId(), condition.GetX(), condition.GetY(),
@@ -2240,16 +2241,16 @@
         self.fd.write('%s</if-else>\n' % (' ' * self.indent))
 
     def _comment(self, comment):
-        """!Write comment"""
+        """Write comment"""
         self.fd.write('%s<comment id="%d" pos="%d,%d" size="%d,%d">%s</comment>\n' % \
                           (' ' * self.indent, comment.GetId(), comment.GetX(), comment.GetY(),
                            comment.GetWidth(), comment.GetHeight(), EncodeString(comment.GetLabel())))
         
 class WritePythonFile:
     def __init__(self, fd, model):
-        """!Class for exporting model to Python script
+        """Class for exporting model to Python script
 
-        @param fd file desciptor
+        :param fd: file descriptor
         """
         self.fd     = fd
         self.model  = model
@@ -2272,7 +2273,7 @@
         return ''
 
     def _writePython(self):
-        """!Write model to file"""
+        """Write model to file"""
         properties = self.model.GetProperties()
         
         # header
@@ -2290,7 +2291,7 @@
 # DATE:         %s
 #
 #%s
-""" % ('#' * 77,
+"""% ('#' * 77,
        EncodeString(properties['name']),
        EncodeString(properties['author']),
        EncodeString('\n# '.join(properties['description'].splitlines())),
@@ -2303,7 +2304,7 @@
 #%%module
 #%% description: %s
 #%%end
-""" % (EncodeString(' '.join(properties['description'].splitlines()))))
+"""% (EncodeString(' '.join(properties['description'].splitlines()))))
 
         variables = self.model.GetVariables()
         for key, data in variables.iteritems():
@@ -2314,7 +2315,7 @@
 #%% key: %s
 #%% description: %s
 #%% required: yes
-""" % (otype, key, data['description']))
+"""% (otype, key, data['description']))
             if 'value' in data:
                 self.fd.write("#%% answer: %s\n" % data['value'])
             self.fd.write("#% end\n")
@@ -2337,19 +2338,19 @@
 """)
         if rast:
             self.fd.write(
-r"""    run_command('g.remove',
+r"""  run_command('g.remove',
                       rast=%s)
-""" % ','.join(map(lambda x: "'" + x + "'", rast)))
+"""% ','.join(map(lambda x: "'" + x + "'", rast)))
         if vect:
             self.fd.write(
-r"""    run_command('g.remove',
+r"""  run_command('g.remove',
                       vect = %s)
-""" % ','.join(map(lambda x: "'" + x + "'", vect)))
+"""% ','.join(map(lambda x: "'" + x + "'", vect)))
         if rast3d:
             self.fd.write(
-r"""    run_command('g.remove',
+r"""  run_command('g.remove',
                       rast3d = %s)
-""" % ','.join(map(lambda x: "'" + x + "'", rast3d)))
+"""% ','.join(map(lambda x: "'" + x + "'", rast3d)))
         if not rast and not vect and not rast3d:
             self.fd.write('    pass\n')
         
@@ -2368,7 +2369,7 @@
 """)
         
     def _writePythonItem(self, item, ignoreBlock = True, variables = {}):
-        """!Write model object to Python file"""
+        """Write model object to Python file"""
         if isinstance(item, ModelAction):
             if ignoreBlock and item.GetBlockId(): # ignore items in loops of conditions
                 return
@@ -2417,7 +2418,7 @@
             self._writePythonComment(item)
         
     def _writePythonAction(self, item, variables = {}):
-        """!Write model action to Python file"""
+        """Write model action to Python file"""
         task = GUI(show = None).ParseCommand(cmd = item.GetLog(string = False))
         strcmd = "%srun_command(" % (' ' * self.indent)
         self.fd.write(strcmd + self._getPythonActionCmd(task, len(strcmd), variables) + '\n')
@@ -2469,18 +2470,18 @@
         return ret
 
     def _writePythonComment(self, item):
-        """!Write model comment to Python file"""
+        """Write model comment to Python file"""
         for line in item.GetLabel().splitlines():
             self.fd.write('#' + line + '\n')
 
     def _substituteVariable(self, string, variable, data):
-        """!Substitute variable in the string
+        """Substitute variable in the string
 
-        @param string string to be modified
-        @param variable variable to be substituted
-        @param data data related to the variable
+        :param string: string to be modified
+        :param variable: variable to be substituted
+        :param data: data related to the variable
         
-        @return modified string
+        :return: modified string
         """
         result = ''
         ss = re.split("\w*(%"+variable+")w*", string)
@@ -2509,7 +2510,7 @@
 class ModelParamDialog(wx.Dialog):
     def __init__(self, parent, params, id = wx.ID_ANY, title = _("Model parameters"),
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, **kwargs):
-        """!Model parameters dialog
+        """Model parameters dialog
         """
         self.parent = parent
         self.params = params
@@ -2568,7 +2569,7 @@
         mainSizer.Fit(self)
         
     def _createPages(self):
-        """!Create for each parameterized module its own page"""
+        """Create for each parameterized module its own page"""
         nameOrdered = [''] * len(self.params.keys())
         for name, params in self.params.iteritems():
             nameOrdered[params['idx']] = name
@@ -2582,7 +2583,7 @@
         return panel
     
     def _createPage(self, name, params):
-        """!Define notebook page"""
+        """Define notebook page"""
         if name in globalvar.grassCmd:
             task = gtask.grassTask(name)
         else:
@@ -2597,7 +2598,7 @@
         return panel
 
     def GetErrors(self):
-        """!Check for errors, get list of messages"""
+        """Check for errors, get list of messages"""
         errList = list()
         for task in self.tasks:
             errList += task.get_cmd_error()
@@ -2605,7 +2606,7 @@
         return errList
 
     def DeleteIntermediateData(self):
-        """!Check if to detele intermediate data"""
+        """Check if to detele intermediate data"""
         if self.interData.IsShown() and self.interData.IsChecked():
             return True
         

Modified: grass/trunk/gui/wxpython/gmodeler/preferences.py
===================================================================
--- grass/trunk/gui/wxpython/gmodeler/preferences.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gmodeler/preferences.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gmodeler.preferences
 
 @brief wxGUI Graphical Modeler - preferences
@@ -24,7 +24,7 @@
 from core.utils import _
 
 class PreferencesDialog(PreferencesBaseDialog):
-    """!User preferences dialog"""
+    """User preferences dialog"""
     def __init__(self, parent, giface, settings = UserSettings,
                  title = _("Modeler settings")):
         
@@ -42,7 +42,7 @@
         self.SetSize(self.size)
 
     def _createGeneralPage(self, notebook):
-        """!Create notebook page for action settings"""
+        """Create notebook page for action settings"""
         panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
         notebook.AddPage(page = panel, text = _("General"))
         
@@ -80,7 +80,7 @@
         return panel
 
     def _createActionPage(self, notebook):
-        """!Create notebook page for action settings"""
+        """Create notebook page for action settings"""
         panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
         notebook.AddPage(page = panel, text = _("Command"))
         
@@ -199,7 +199,7 @@
         return panel
 
     def _createDataPage(self, notebook):
-        """!Create notebook page for data settings"""
+        """Create notebook page for data settings"""
         panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
         notebook.AddPage(page = panel, text = _("Data"))
         
@@ -318,7 +318,7 @@
         return panel
 
     def _createLoopPage(self, notebook):
-        """!Create notebook page for loop settings"""
+        """Create notebook page for loop settings"""
         panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
         notebook.AddPage(page = panel, text = _("Loop"))
         
@@ -403,7 +403,7 @@
         return panel
 
     def _createCommentPage(self, notebook):
-        """!Create notebook page for comment settings"""
+        """Create notebook page for comment settings"""
         panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
         notebook.AddPage(page = panel, text = _("Comment"))
         
@@ -488,21 +488,21 @@
         return panel
 
     def OnApply(self, event):
-        """!Button 'Apply' pressed"""
+        """Button 'Apply' pressed"""
         PreferencesBaseDialog.OnApply(self, event)
         
         self.parent.GetModel().Update()
         self.parent.GetCanvas().Refresh()
 
     def OnSave(self, event):
-        """!Button 'Save' pressed"""
+        """Button 'Save' pressed"""
         PreferencesBaseDialog.OnSave(self, event)
         
         self.parent.GetModel().Update()
         self.parent.GetCanvas().Refresh()
 
 class PropertiesDialog(wx.Dialog):
-    """!Model properties dialog
+    """Model properties dialog
     """
     def __init__(self, parent, id = wx.ID_ANY,
                  title = _('Model properties'),
@@ -600,14 +600,14 @@
         self.Hide()
         
     def GetValues(self):
-        """!Get values"""
+        """Get values"""
         return { 'name'        : self.name.GetValue(),
                  'description' : self.desc.GetValue(),
                  'author'      : self.author.GetValue(),
                  'overwrite'   : self.overwrite.IsChecked() }
     
     def Init(self, prop):
-        """!Initialize dialog"""
+        """Initialize dialog"""
         self.name.SetValue(prop['name'])
         self.desc.SetValue(prop['description'])
         self.author.SetValue(prop['author'])

Modified: grass/trunk/gui/wxpython/gmodeler/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/gmodeler/toolbars.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gmodeler/toolbars.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gmodeler.toolbars
 
 @brief wxGUI Graphical Modeler toolbars classes
@@ -26,7 +26,7 @@
 from icons.icon        import MetaIcon
 
 class ModelerToolbar(BaseToolbar):
-    """!Graphical modeler toolbaro (see gmodeler.py)
+    """Graphical modeler toolbaro (see gmodeler.py)
     """
     def __init__(self, parent):
         BaseToolbar.__init__(self, parent)
@@ -37,7 +37,7 @@
         self.Realize()
         
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         icons = {
             'new'        : MetaIcon(img = 'create',
                                     label = _('Create new model (Ctrl+N)')),

Modified: grass/trunk/gui/wxpython/gui_core/dialogs.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/dialogs.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/dialogs.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gui_core.dialogs
 
 @brief Various dialogs used in wxGUI.
@@ -59,10 +59,10 @@
     def __init__(self, parent, title, id = wx.ID_ANY,
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER,
                  **kwargs):
-        """!General dialog to choose given element (location, mapset, vector map, etc.)
+        """General dialog to choose given element (location, mapset, vector map, etc.)
         
-        @param parent window
-        @param title window title
+        :param parent: window
+        :param title: window title
         """
         wx.Dialog.__init__(self, parent, id, title, style = style, **kwargs)
         self.SetExtraStyle(wx.WS_EX_VALIDATE_RECURSIVELY)
@@ -76,7 +76,7 @@
         self.warning = _("Required item is not set.")
 
     def __layout(self):
-        """!Do layout"""
+        """Do layout"""
         self.sizer = wx.BoxSizer(wx.VERTICAL)
         
         self.dataSizer = wx.BoxSizer(wx.VERTICAL)
@@ -102,7 +102,7 @@
 
 
 class LocationDialog(SimpleDialog):
-    """!Dialog used to select location"""
+    """Dialog used to select location"""
     def __init__(self, parent, title = _("Select GRASS location and mapset")):
         SimpleDialog.__init__(self, parent, title)
 
@@ -120,7 +120,7 @@
         self.SetMinSize(self.GetSize())
 
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         self.dataSizer.Add(item = wx.StaticText(parent = self.panel, id = wx.ID_ANY,
                                                 label = _("Name of GRASS location:")),
                            proportion = 0, flag = wx.ALL, border = 1)
@@ -138,7 +138,7 @@
         self.sizer.Fit(self)
 
     def OnLocation(self, event):
-        """!Select mapset given location name"""
+        """Select mapset given location name"""
         location = event.GetString()
         
         if location:
@@ -148,11 +148,11 @@
             mapset = self.element2.GetStringSelection()
 
     def GetValues(self):
-        """!Get location, mapset"""
+        """Get location, mapset"""
         return (self.element1.GetValue(), self.element2.GetValue())
     
 class MapsetDialog(SimpleDialog):
-    """!Dialog used to select mapset"""
+    """Dialog used to select mapset"""
     def __init__(self, parent, title = _("Select mapset in GRASS location"),
                  location = None):
         SimpleDialog.__init__(self, parent, title)
@@ -173,7 +173,7 @@
         self.SetMinSize(self.GetSize())
 
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         self.dataSizer.Add(item = wx.StaticText(parent = self.panel, id = wx.ID_ANY,
                                                 label = _("Name of mapset:")),
                            proportion = 0, flag = wx.ALL, border = 1)
@@ -187,13 +187,13 @@
 
 class VectorDialog(SimpleDialog):
     def __init__(self, parent, title = _("Select vector map"), layerTree = None):
-        """!Dialog for selecting existing vector map
+        """Dialog for selecting existing vector map
 
-        @param parent parent window
-        @param title window title
-        @param layerTree show only vector maps in given layer tree if not None
+        :param parent: parent window
+        :param title: window title
+        :param layerTree: show only vector maps in given layer tree if not None
         
-        @return dialog instance
+        :return: dialog instance
         """
         SimpleDialog.__init__(self, parent, title)
         
@@ -206,7 +206,7 @@
         wx.CallAfter(self._layout)
         
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         self.dataSizer.Add(item = wx.StaticText(parent = self.panel, id = wx.ID_ANY,
                                                 label = _("Name of vector map:")),
                            proportion = 0, flag = wx.ALL, border = 1)
@@ -217,9 +217,9 @@
         self.sizer.Fit(self)
 
     def GetName(self, full = False):
-        """!Get name of vector map to be created
+        """Get name of vector map to be created
 
-        @param full True to get fully qualified name
+        :param full: True to get fully qualified name
         """
         name = self.element.GetValue()
         if full:
@@ -233,15 +233,15 @@
 class NewVectorDialog(VectorDialog):
     def __init__(self, parent, title = _("Create new vector map"),
                  disableAdd = False, disableTable = False, showType = False):
-        """!Dialog for creating new vector map
+        """Dialog for creating new vector map
 
-        @param parent parent window
-        @param title window title
-        @param disableAdd disable 'add layer' checkbox
-        @param disableTable disable 'create table' checkbox
-        @param showType True to show feature type selector (used for creating new empty OGR layers)
+        :param parent: parent window
+        :param title: window title
+        :param disableAdd: disable 'add layer' checkbox
+        :param disableTable: disable 'create table' checkbox
+        :param showType: True to show feature type selector (used for creating new empty OGR layers)
         
-        @return dialog instance
+        :return: dialog instance
         """
         VectorDialog.__init__(self, parent, title)
         
@@ -284,7 +284,7 @@
             self.keycol.Enable(event.IsChecked())
         
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         self.dataSizer.Add(item = wx.StaticText(parent = self.panel, id = wx.ID_ANY,
                                                 label = _("Name for new vector map:")),
                            proportion = 0, flag = wx.ALL, border = 1)
@@ -319,18 +319,18 @@
         self.SetMinSize(self.GetSize())
 
     def GetKey(self):
-        """!Get key column name"""
+        """Get key column name"""
         if self.keycol:
             return self.keycol.GetValue()
         return UserSettings.Get(group = 'atm', key = 'keycolumn', subkey = 'value')
     
     def IsChecked(self, key):
-        """!Get dialog properties
+        """Get dialog properties
 
-        @param key window key ('add', 'table')
+        :param key: window key ('add', 'table')
 
-        @return True/False
-        @return None on error
+        :return: True/False
+        :return: None on error
         """
         if key == 'add':
             return self.addbox.IsChecked()
@@ -340,10 +340,10 @@
         return None
     
     def GetFeatureType(self):
-        """!Get feature type for OGR
+        """Get feature type for OGR
 
-        @return feature type as string
-        @return None for native format
+        :return: feature type as string
+        :return: None for native format
         """
         if self.ftype:
             return self.ftype.GetType()
@@ -353,17 +353,17 @@
 def CreateNewVector(parent, cmd, title = _('Create new vector map'),
                     exceptMap=None, giface=None,
                     disableAdd = False, disableTable = False):
-    """!Create new vector map layer
+    """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
+    :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
+    :return: dialog instance
+    :return: None on error
     """
     vExternalOut = grass.parse_command('v.external.out', flags = 'g')
     isNative = vExternalOut['format'] == 'native'
@@ -484,9 +484,9 @@
 class SavedRegion(wx.Dialog):
     def __init__(self, parent, title, id = wx.ID_ANY, loadsave = 'load',
                  **kwargs):
-        """!Loading or saving of display extents to saved region file
+        """Loading or saving of display extents to saved region file
 
-        @param loadsave load or save region?
+        :param loadsave: load or save region?
         """
         wx.Dialog.__init__(self, parent, id, title, **kwargs)
         
@@ -538,12 +538,12 @@
         self.wind = event.GetString()
 
     def GetName(self):
-        """!Return region name"""
+        """Return region name"""
         return self.wind
 
 
 class GroupDialog(wx.Dialog):
-    """!Dialog for creating/editing groups"""
+    """Dialog for creating/editing groups"""
     def __init__(self, parent = None, defaultGroup = None,  defaultSubgroup = None, 
                  title = _("Create or edit imagery groups"),
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, **kwargs):
@@ -863,8 +863,10 @@
         self.dataChanged = val
 
     def DisableSubgroupEdit(self):
-        """!Disable editation of subgroups in the dialog 
-        @todo used by gcp manager, maybe the gcp m should also support subgroups,
+        """Disable editation of subgroups in the dialog 
+        
+        .. todo::
+            used by gcp manager, maybe the gcp m should also support subgroups
         """
         self.edit_subg = False
         self.subg_panel.Hide()
@@ -905,7 +907,7 @@
         self.Layout()
 
     def OnAddLayer(self, event):
-        """!Add new layer to listbox"""
+        """Add new layer to listbox"""
         dlg = MapLayersDialogForGroups(parent = self, title = _("Add selected map layers into group"))
         
         if dlg.ShowModal() != wx.ID_OK:
@@ -921,7 +923,7 @@
             
 
     def OnRemoveLayer(self, event):
-        """!Remove layer from listbox"""
+        """Remove layer from listbox"""
         while self.gLayerBox.GetSelections():
             sel = self.gLayerBox.GetSelections()[0]
             m = self.gLayerBox.GetString(sel)
@@ -930,7 +932,7 @@
             self.dataChanged = True
                 
     def GetLayers(self):
-        """!Get layers"""
+        """Get layers"""
         if self.edit_subg:
             layers = []
             for maps, sel in self.subgmaps.iteritems():
@@ -942,12 +944,12 @@
         return layers
         
     def OnGroupSelected(self, event):
-        """!Text changed in group selector"""
+        """Text changed in group selector"""
         # callAfter must be called to close popup before other actions
         wx.CallAfter(self.GroupSelected)
 
     def GroupSelected(self):
-        """!Group was selected, check if changes were apllied"""
+        """Group was selected, check if changes were apllied"""
         self._checkChange()
         group, s = self.GetSelectedGroup()
         maps = list()
@@ -984,7 +986,7 @@
         self._checkSubGSellAll()
 
     def SubGroupSelected(self):
-        """!Subgroup was selected, check if changes were apllied"""
+        """Subgroup was selected, check if changes were apllied"""
         self._checkChange()
 
         subgroup = self.subGroupSelect.GetValue().strip()
@@ -1018,7 +1020,7 @@
         self.ClearNotification()
 
     def _filter(self, data):
-        """!Apply filter for strings in data list"""
+        """Apply filter for strings in data list"""
         flt_data = []
         if len(self.flt_pattern) == 0:
             flt_data = data[:]
@@ -1064,11 +1066,11 @@
         self.dataChanged = False
 
     def ShowGroupLayers(self, mapList):
-        """!Show map layers in currently selected group"""
+        """Show map layers in currently selected group"""
         self.gLayerBox.Set(mapList)
                 
     def EditGroup(self, group, subgroup=None):
-        """!Edit selected group"""
+        """Edit selected group"""
         layersNew = self.GetLayers()
         layersOld = self.GetGroupLayers(group, subgroup)
         
@@ -1105,7 +1107,7 @@
         return ret
         
     def CreateNewGroup(self, group, subgroup):
-        """!Create new group"""
+        """Create new group"""
         layers = self.GetLayers()
         if not layers:
             GMessage(parent = self,
@@ -1126,16 +1128,16 @@
         return ret
 
     def GetExistGroups(self):
-        """!Returns existing groups in current mapset"""
+        """Returns existing groups in current mapset"""
         return grass.list_grouped('group')[grass.gisenv()['MAPSET']]
 
     def GetExistSubgroups(self, group):
-        """!Returns existing subgroups in a group"""
+        """Returns existing subgroups in a group"""
         return RunCommand('i.group', group=group,
                            read=True, flags='sg').splitlines()
         
     def ShowResult(self, group, returnCode, create):
-        """!Show if operation was successfull."""
+        """Show if operation was successfull."""
         group += '@' + grass.gisenv()['MAPSET']
         if returnCode is None:
             label = _("No changes to apply in group <%s>.") % group
@@ -1154,7 +1156,7 @@
         wx.FutureCall(4000, self.ClearNotification)
         
     def GetSelectedGroup(self):
-        """!Return currently selected group (without mapset)"""
+        """Return currently selected group (without mapset)"""
         g = self.groupSelect.GetValue().split('@')[0]
         if self.edit_subg:
             s = self.subGroupSelect.GetValue() 
@@ -1163,7 +1165,7 @@
         return g, s
 
     def GetGroupLayers(self, group, subgroup=None):
-        """!Get layers in group"""
+        """Get layers in group"""
         kwargs = dict()
         kwargs['group'] = group
         if subgroup:
@@ -1178,11 +1180,11 @@
         return res.splitlines()
     
     def ClearNotification(self):
-        """!Clear notification string"""
+        """Clear notification string"""
         self.infoLabel.SetLabel("")
        
     def ApplyChanges(self):
-        """!Create or edit group"""
+        """Create or edit group"""
         group = self.currentGroup
         if not group:
             GMessage(parent = self,
@@ -1214,22 +1216,22 @@
         return True
         
     def OnApply(self, event):
-        """!Apply changes"""
+        """Apply changes"""
         self.ApplyChanges()
         
     def OnOk(self, event):
-        """!Apply changes and close dialog"""
+        """Apply changes and close dialog"""
         if self.ApplyChanges():
             self.OnClose(event)
         
     def OnClose(self, event):
-        """!Close dialog"""
+        """Close dialog"""
         if not self.IsModal():
             self.Destroy()
         event.Skip()
         
 class MapLayersDialogBase(wx.Dialog):
-    """!Base dialog for selecting map layers (raster, vector).
+    """Base dialog for selecting map layers (raster, vector).
 
     There are 3 subclasses: MapLayersDialogForGroups, MapLayersDialogForModeler,
     MapLayersDialog. Base class contains core functionality.
@@ -1280,19 +1282,19 @@
         self.SetMinSize(self.GetSize())
 
     def _modelerDSeries(self):
-        """!Method used only by MapLayersDialogForModeler,
+        """Method used only by MapLayersDialogForModeler,
         for other subclasses does nothing.
         """
         pass
 
     def _addApplyButton(self):
-        """!Method used only by MapLayersDialog,
+        """Method used only by MapLayersDialog,
         for other subclasses does nothing.
         """
         pass
 
     def _fullyQualifiedNames(self):
-        """!Adds CheckBox which determines is fully qualified names are retuned.
+        """Adds CheckBox which determines is fully qualified names are retuned.
         """
         self.fullyQualified = wx.CheckBox(parent = self, id = wx.ID_ANY,
                                            label = _("Use fully-qualified map names"))
@@ -1304,7 +1306,7 @@
         return self.fullyQualified.IsChecked()
 
     def _layerTypes(self):
-        """!Determines which layer types can be chosen.
+        """Determines which layer types can be chosen.
 
          Valid values:
          - raster
@@ -1314,7 +1316,7 @@
         return [_('raster'), _('3D raster'), _('vector')]
 
     def _selectAll(self):
-        """!Check all layers by default"""
+        """Check all layers by default"""
         return True
 
     def _createDialogBody(self):
@@ -1394,10 +1396,10 @@
         return bodySizer
 
     def LoadMapLayers(self, type, mapset):
-        """!Load list of map layers
+        """Load list of map layers
 
-        @param type layer type ('raster' or 'vector')
-        @param mapset mapset name
+        :param str type: layer type ('raster' or 'vector')
+        :param str mapset: mapset name
         """
         self.map_layers = grass.mlist_grouped(type = type)[mapset]
         self.layers.Set(self.map_layers)
@@ -1408,7 +1410,7 @@
             self.layers.Check(item, check = self._selectAll())
         
     def OnChangeParams(self, event):
-        """!Filter parameters changed by user"""
+        """Filter parameters changed by user"""
         # update list of layer to be loaded
         self.LoadMapLayers(self.GetLayerType(cmd = True),
                            self.mapset.GetStringSelection())
@@ -1416,7 +1418,7 @@
         event.Skip()
         
     def OnMenu(self, event):
-        """!Table description area, context menu"""
+        """Table description area, context menu"""
         if not hasattr(self, "popupID1"):
             self.popupDataID1 = wx.NewId()
             self.popupDataID2 = wx.NewId()
@@ -1436,12 +1438,12 @@
         menu.Destroy()
 
     def OnSelectAll(self, event):
-        """!Select all map layer from list"""
+        """Select all map layer from list"""
         for item in range(self.layers.GetCount()):
             self.layers.Check(item, True)
         
     def OnSelectInvert(self, event):
-        """!Invert current selection"""
+        """Invert current selection"""
         for item in range(self.layers.GetCount()):
             if self.layers.IsChecked(item):
                 self.layers.Check(item, False)
@@ -1449,12 +1451,12 @@
                 self.layers.Check(item, True)
         
     def OnDeselectAll(self, event):
-        """!Select all map layer from list"""
+        """Select all map layer from list"""
         for item in range(self.layers.GetCount()):
             self.layers.Check(item, False)
         
     def OnFilter(self, event):
-        """!Apply filter for map names"""
+        """Apply filter for map names"""
         if len(event.GetString()) == 0:
             self.layers.Set(self.map_layers) 
             return 
@@ -1473,7 +1475,7 @@
         event.Skip()
         
     def OnToggle(self, event):
-        """!Select toggle (check or uncheck all layers)"""
+        """Select toggle (check or uncheck all layers)"""
         check = event.Checked()
         for item in range(self.layers.GetCount()):
             self.layers.Check(item, check)
@@ -1481,7 +1483,7 @@
         event.Skip()
         
     def GetMapLayers(self):
-        """!Return list of checked map layers"""
+        """Return list of checked map layers"""
         layerNames = []
         for indx in self.layers.GetSelections():
             # layers.append(self.layers.GetStringSelec(indx))
@@ -1499,9 +1501,9 @@
         return layerNames
     
     def GetLayerType(self, cmd = False):
-        """!Get selected layer type
+        """Get selected layer type
 
-        @param cmd True for g.mlist
+        :param bool cmd: True for g.mlist
         """
         if not cmd:
             return self.layerType.GetStringSelection()
@@ -1517,7 +1519,7 @@
         return ltype
 
 class MapLayersDialog(MapLayersDialogBase):
-    """!Subclass of MapLayersDialogBase used in Layer Manager. 
+    """Subclass of MapLayersDialogBase used in Layer Manager. 
 
     Contains apply button, which sends wxApplyMapLayers event.
     """
@@ -1534,7 +1536,7 @@
                                        ltype = self.GetLayerType(cmd = True))
 
 class MapLayersDialogForGroups(MapLayersDialogBase):
-    """!Subclass of MapLayersDialogBase used for specyfying maps in an imagery group. 
+    """Subclass of MapLayersDialogBase used for specyfying maps in an imagery group. 
 
     Shows only raster maps.
     """
@@ -1545,7 +1547,7 @@
         return [_('raster'),]
 
     def _selectAll(self):
-        """!Could be overriden"""
+        """Could be overriden"""
         return False
 
     def _fullyQualifiedNames(self):
@@ -1556,7 +1558,7 @@
 
 
 class MapLayersDialogForModeler(MapLayersDialogBase):
-    """!Subclass of MapLayersDialogBase used in Modeler. 
+    """Subclass of MapLayersDialogBase used in Modeler. 
     """
     def __init__(self, parent, title, **kwargs):
         MapLayersDialogBase.__init__(self, parent = parent, title = title, **kwargs)
@@ -1569,9 +1571,9 @@
                            flag = wx.EXPAND | wx.LEFT | wx.RIGHT, border = 5)
 
     def GetDSeries(self):
-        """!Used by modeler only
+        """Used by modeler only
 
-        @return g.mlist command
+        :return: g.mlist command
         """
         if not self.dseries or not self.dseries.IsChecked():
             return ''
@@ -1586,7 +1588,7 @@
 
     
 class ImportDialog(wx.Dialog):
-    """!Dialog for bulk import of various data (base class)"""
+    """Dialog for bulk import of various data (base class)"""
     def __init__(self, parent, giface, itype,
                  id = wx.ID_ANY, title = _("Multiple import"),
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER):
@@ -1673,7 +1675,7 @@
         self.Bind(wx.EVT_CLOSE, lambda evt: self.Destroy())
 
     def doLayout(self):
-        """!Do layout"""
+        """Do layout"""
         dialogSizer = wx.BoxSizer(wx.VERTICAL)
         
         # dsn input
@@ -1738,19 +1740,19 @@
         self.Layout()
 
     def _getCommand(self):
-        """!Get command"""
+        """Get command"""
         return ''
     
     def OnClose(self, event = None):
-        """!Close dialog"""
+        """Close dialog"""
         self.Close()
 
     def OnRun(self, event):
-        """!Import/Link data (each layes as separate vector map)"""
+        """Import/Link data (each layes as separate vector map)"""
         pass
 
     def AddLayers(self, returncode, cmd = None):
-        """!Add imported/linked layers into layer tree"""
+        """Add imported/linked layers into layer tree"""
         if not self.add.IsChecked() or returncode != 0:
             return
 
@@ -1788,26 +1790,28 @@
         self._giface.GetMapWindow().ZoomToMap()
 
     def OnAbort(self, event):
-        """!Abort running import
+        """Abort running import
 
-        @todo not yet implemented
+        .. todo::
+            not yet implemented
         """
         pass
 
     def OnCmdDone(self, cmd, returncode):
-        """!Do what has to be done after importing"""
+        """Do what has to be done after importing"""
         pass
 
 
 class GdalImportDialog(ImportDialog):
     def __init__(self, parent, giface, ogr = False, link = False):
-        """!Dialog for bulk import of various raster/vector data
+        """Dialog for bulk import of various raster/vector data
 
-        @todo Split into GdalImportDialog and OgrImportDialog
+        .. todo::
+            Split into GdalImportDialog and OgrImportDialog
 
-        @param parent parent window
-        @param ogr True for OGR (vector) otherwise GDAL (raster)
-        @param link True for linking data otherwise importing data
+        :param parent: parent window
+        :param ogr: True for OGR (vector) otherwise GDAL (raster)
+        :param link: True for linking data otherwise importing data
         """
         self._giface = giface
         self.link = link
@@ -1850,7 +1854,7 @@
         self.doLayout()
 
     def OnRun(self, event):
-        """!Import/Link data (each layes as separate vector map)"""
+        """Import/Link data (each layes as separate vector map)"""
         self.commandId = -1
         data = self.list.GetLayers()
         if not data:
@@ -1914,7 +1918,7 @@
             self._giface.RunCmd(cmd, onDone=self.OnCmdDone)
 
     def OnCmdDone(self, cmd, returncode):
-        """!Load layers and close if required"""
+        """Load layers and close if required"""
         if not hasattr(self, 'AddLayers'):
             return
 
@@ -1927,7 +1931,7 @@
             self.Close()
 
     def _getCommand(self):
-        """!Get command"""
+        """Get command"""
         if self.link:
             if self.ogr:
                 return 'v.external'
@@ -1944,15 +1948,16 @@
 class GdalOutputDialog(wx.Dialog):
     def __init__(self, parent, id = wx.ID_ANY, ogr = False,
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, *kwargs):
-        """!Dialog for setting output format for rasters/vectors
+        """Dialog for setting output format for rasters/vectors
 
-        @todo Split into GdalOutputDialog and OgrOutputDialog
+        .. todo::
+            Split into GdalOutputDialog and OgrOutputDialog
 
-        @param parent parent window
-        @param id window id
-        @param ogr True for OGR (vector) otherwise GDAL (raster)
-        @param style window style
-        @param *kwargs other wx.Dialog's arguments
+        :param parent: parent window
+        :param id: window id
+        :param ogr: True for OGR (vector) otherwise GDAL (raster)
+        :param style: window style
+        :param *kwargs: other wx.Dialog's arguments
         """
         self.parent = parent # GMFrame 
         self.ogr = ogr
@@ -2030,7 +2035,7 @@
         self.Close()
         
 class DxfImportDialog(ImportDialog):
-    """!Dialog for bulk import of DXF layers""" 
+    """Dialog for bulk import of DXF layers"""
     def __init__(self, parent, giface):
         ImportDialog.__init__(self, parent, giface=giface, itype='dxf',
                               title = _("Import DXF layers"))
@@ -2050,11 +2055,11 @@
         self.doLayout()
 
     def _getCommand(self):
-        """!Get command"""
+        """Get command"""
         return 'v.in.dxf'
     
     def OnRun(self, event):
-        """!Import/Link data (each layes as separate vector map)"""
+        """Import/Link data (each layes as separate vector map)"""
         data = self.list.GetLayers()
         if not data:
             GMessage(_("No layers selected."), parent=self)
@@ -2083,7 +2088,7 @@
             self._giface.RunCmd(cmd, onDone=self.OnCmdDone)
 
     def OnCmdDone(self, cmd, returncode):
-        """!Load layers and close if required"""
+        """Load layers and close if required"""
         if not hasattr(self, 'AddLayers'):
             return
 
@@ -2093,7 +2098,7 @@
             self.Close()
 
     def OnSetDsn(self, event):
-        """!Input DXF file defined, update list of layer widget"""
+        """Input DXF file defined, update list of layer widget"""
         path = event.GetString()
         if not path:
             return 
@@ -2119,7 +2124,7 @@
 
 
 class LayersList(GListCtrl, listmix.TextEditMixin):
-    """!List of layers to be imported (dxf, shp...)"""
+    """List of layers to be imported (dxf, shp...)"""
     def __init__(self, parent, columns, log = None):
         GListCtrl.__init__(self, parent)
         
@@ -2140,7 +2145,7 @@
             self.SetColumnWidth(col = i, width = width[i])
         
     def LoadData(self, data = None):
-        """!Load data into list"""
+        """Load data into list"""
         self.DeleteAllItems()
         if data is None:
             return
@@ -2155,7 +2160,7 @@
             self.CheckItem(index, True)
         
     def OnLeftDown(self, event):
-        """!Allow editing only output name
+        """Allow editing only output name
         
         Code taken from TextEditMixin class.
         """
@@ -2175,7 +2180,7 @@
             event.Skip()
         
     def GetLayers(self):
-        """!Get list of layers (layer name, output name)"""
+        """Get list of layers (layer name, output name)"""
         data = []
         item = -1
         while True:
@@ -2191,7 +2196,7 @@
         return data
 
 class SetOpacityDialog(wx.Dialog):
-    """!Set opacity of map layers.
+    """Set opacity of map layers.
     Dialog expects opacity between 0 and 1 and returns this range, too.    
     """
     def __init__(self, parent, id = wx.ID_ANY, title = _("Set Map Layer Opacity"),
@@ -2260,7 +2265,7 @@
         self.Layout()
 
     def GetOpacity(self):
-        """!Button 'OK' pressed"""
+        """Button 'OK' pressed"""
         # return opacity value
         opacity = float(self.value.GetValue()) / 100
         return opacity
@@ -2270,7 +2275,7 @@
 
 
 def GetImageHandlers(image):
-    """!Get list of supported image handlers"""
+    """Get list of supported image handlers"""
     lext = list()
     ltype = list()
     for h in image.GetHandlers():
@@ -2317,7 +2322,7 @@
     return filetype, ltype
 
 class ImageSizeDialog(wx.Dialog):
-    """!Set size for saved graphic file"""
+    """Set size for saved graphic file"""
     def __init__(self, parent, id = wx.ID_ANY, title = _("Set image size"),
                  style = wx.DEFAULT_DIALOG_STYLE, **kwargs):
         self.parent = parent
@@ -2359,7 +2364,7 @@
         self.SetSize(self.GetBestSize())
         
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         sizer = wx.BoxSizer(wx.VERTICAL)
         
         # body
@@ -2397,11 +2402,11 @@
         self.Layout()
     
     def GetValues(self):
-        """!Get width/height values"""
+        """Get width/height values"""
         return self.width.GetValue(), self.height.GetValue()
     
     def OnTemplate(self, event):
-        """!Template selected"""
+        """Template selected"""
         sel = event.GetString()
         if not sel:
             width, height = self.parent.GetWindow().GetClientSize()
@@ -2414,7 +2419,7 @@
     def __init__(self, parent, id = wx.ID_ANY,
                  title = _("GRASS GIS SQL Query Utility"),
                  *kwargs):
-        """!SQL Query Utility window
+        """SQL Query Utility window
         """
         self.parent = parent
 
@@ -2437,7 +2442,7 @@
         self.SetSize(wx.Size(500, 200))
         
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         sizer = wx.BoxSizer(wx.VERTICAL)
         
         sqlSizer = wx.StaticBoxSizer(self.sqlBox, wx.HORIZONTAL)
@@ -2459,24 +2464,24 @@
         self.Layout()
 
     def OnCloseWindow(self, event):
-        """!Close window
+        """Close window
         """
         self.Close()
 
 class SymbolDialog(wx.Dialog):
-    """!Dialog for GRASS symbols selection.
+    """Dialog for GRASS symbols selection.
     
     Dialog is called in gui_core::forms module.
     """
     def __init__(self, parent, symbolPath, currentSymbol = None, title = _("Symbols")):
-        """!Dialog constructor.
+        """Dialog constructor.
         
         It is assumed that symbolPath contains folders with symbols.
         
-        @param parent dialog parent
-        @param symbolPath absolute path to symbols
-        @param currentSymbol currently selected symbol (e.g. 'basic/x')
-        @param title dialog title
+        :param parent: dialog parent
+        :param symbolPath: absolute path to symbols
+        :param currentSymbol: currently selected symbol (e.g. 'basic/x')
+        :param title: dialog title
         """
         wx.Dialog.__init__(self, parent = parent, title = title, id = wx.ID_ANY)
         
@@ -2556,7 +2561,7 @@
         self.OnFolderSelect(None)
         
     def _createSymbolPanels(self, parent):
-        """!Creates multiple panels with symbols.
+        """Creates multiple panels with symbols.
         
         Panels are shown/hidden according to selected folder."""
         folders = os.listdir(self.symbolPath)
@@ -2592,7 +2597,7 @@
         return sorted(imageList)
             
     def OnFolderSelect(self, event):
-        """!Selected folder with symbols changed."""
+        """Selected folder with symbols changed."""
         idx = self.folderChoice.GetSelection()
         for i in range(len(self.panels)):
             sizer = self.panels[i].GetContainingSizer()
@@ -2607,7 +2612,7 @@
             self.infoLabel.SetLabel('')
         
     def SelectionChanged(self, name, doubleClick):
-        """!Selected symbol changed."""
+        """Selected symbol changed."""
         if doubleClick:
             self.EndModal(wx.ID_OK)
         # deselect all
@@ -2624,19 +2629,19 @@
         self.infoLabel.SetLabel(name)
         
     def GetSelectedSymbolName(self):
-        """!Returns currently selected symbol name (e.g. 'basic/x').
-        """ 
+        """Returns currently selected symbol name (e.g. 'basic/x').
+        """
         # separator must be '/' and not dependent on OS
         return self.selectedDir + '/' + self.selected
 
     def GetSelectedSymbolPath(self):
-        """!Returns currently selected symbol full path.
+        """Returns currently selected symbol full path.
         """
         return os.path.join(self.symbolPath, self.selectedDir, self.selected)
 
 
 class TextEntryDialog(wx.Dialog):
-    """!Simple dialog with text field. 
+    """Simple dialog with text field. 
 
     It differs from wx.TextEntryDialog because it allows adding validator.
     """
@@ -2668,17 +2673,17 @@
 
 
 class HyperlinkDialog(wx.Dialog):
-    """!Dialog for displaying message with hyperlink."""
+    """Dialog for displaying message with hyperlink."""
     def __init__(self, parent, title, message, hyperlink,
                 hyperlinkLabel=None, style=wx.OK):
-        """!Constructor
+        """Constructor
 
-        @param parent gui parent         
-        @param title dialog title
-        @param message message
-        @param hyperlink url
-        @param hyperlinkLabel label shown instead of url
-        @param style button style
+        :param parent: gui parent         
+        :param title: dialog title
+        :param message: message
+        :param hyperlink: url
+        :param hyperlinkLabel: label shown instead of url
+        :param style: button style
         """
         wx.Dialog.__init__(self, parent=parent, id=wx.ID_ANY, title=title,
                            style=wx.DEFAULT_DIALOG_STYLE)

Modified: grass/trunk/gui/wxpython/gui_core/forms.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/forms.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/forms.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -29,8 +29,8 @@
 make it callable by gui.  Method added to automatically re-run with
 pythonw on a Mac.
 
- at todo
- - verify option value types
+.. todo::
+    verify option value types
 
 Copyright(C) 2000-2013 by the GRASS Development Team
 
@@ -97,7 +97,7 @@
 wxUpdateDialog, EVT_DIALOG_UPDATE = NewEvent()
 
 
-"""!Hide some options in the GUI"""
+"""Hide some options in the GUI"""
 #_blackList = { 'enabled' : False,
 #               'items'   : { 'r.buffer' : {'params' : ['input', 'output'],
 #                                           'flags' : ['z', 'overwrite']}}}
@@ -106,7 +106,7 @@
 
 
 def text_beautify(someString , width = 70):
-    """!Make really long texts shorter, clean up whitespace and remove
+    """Make really long texts shorter, clean up whitespace and remove
     trailing punctuation.
     """
     if width > 0:
@@ -117,11 +117,11 @@
         return escape_ampersand(string.strip(utils.normalize_whitespace(someString), ".,;:"))
     
 def escape_ampersand(text):
-    """!Escapes ampersands with additional ampersand for GUI"""
+    """Escapes ampersands with additional ampersand for GUI"""
     return string.replace(text, "&", "&&")
 
 class UpdateThread(Thread):
-    """!Update dialog widgets in the thread"""
+    """Update dialog widgets in the thread"""
     def __init__(self, parent, event, eventId, task):
         Thread.__init__(self)
         
@@ -334,7 +334,7 @@
     return UpdateThread(parent, event, eventId, task)
 
 class UpdateQThread(Thread):
-    """!Update dialog widgets in the thread"""
+    """Update dialog widgets in the thread"""
     requestId = 0
     def __init__(self, parent, requestQ, resultQ, **kwds):
         Thread.__init__(self, **kwds)
@@ -368,7 +368,7 @@
                 wx.PostEvent(self.parent, event)
 
 class TaskFrame(wx.Frame):
-    """!This is the Frame containing the dialog for options input.
+    """This is the Frame containing the dialog for options input.
 
     The dialog is organized in a notebook according to the guisections
     defined by each GRASS command.
@@ -611,16 +611,16 @@
             self.goutput.SetSashPosition(int(self.GetSize()[1] * .75))
         
     def updateValuesHook(self, event = None):
-        """!Update status bar data"""
+        """Update status bar data"""
         self.SetStatusText(' '.join(self.notebookpanel.createCmd(ignoreErrors = True)))
         if event:
             event.Skip()
 
     def OnDone(self, cmd, returncode):
-        """!This function is launched from OnRun() when command is
+        """This function is launched from OnRun() when command is
         finished
 
-        @param returncode command's return code (0 for success)
+        :param returncode: command's return code (0 for success)
         """
 
         if hasattr(self, "btn_cancel"):
@@ -644,10 +644,10 @@
             wx.FutureCall(2000, self.Close)
 
     def OnMapCreated(self, name, ltype):
-        """!Map created or changed
+        """Map created or changed
 
-        @param name map name
-        @param ltype layer type (prompt value)
+        :param name: map name
+        :param ltype: layer type (prompt value)
         """
         if hasattr(self, "addbox") and self.addbox.IsChecked():
             add = True
@@ -658,13 +658,13 @@
             self._giface.mapCreated.emit(name=name, ltype=ltype, add=add)
     
     def OnOK(self, event):
-        """!OK button pressed"""
+        """OK button pressed"""
         cmd = self.OnApply(event)
         if cmd is not None and self.get_dcmd is not None:
             self.OnCancel(event)
 
     def OnApply(self, event):
-        """!Apply the command"""
+        """Apply the command"""
         if self._giface and hasattr(self._giface, "_model"):
             cmd = self.createCmd(ignoreErrors = True, ignoreRequired = True)
         else:
@@ -681,7 +681,7 @@
         return cmd
 
     def OnRun(self, event):
-        """!Run the command"""
+        """Run the command"""
         cmd = self.createCmd()
         
         if not cmd or len(cmd) < 1:
@@ -716,13 +716,13 @@
             btn.Enable(False)
         
     def OnAbort(self, event):
-        """!Abort running command"""
+        """Abort running command"""
         from core.gconsole import wxCmdAbort
         event = wxCmdAbort(aborted = True)
         wx.PostEvent(self._gconsole, event)
 
     def OnCopy(self, event):
-        """!Copy the command"""
+        """Copy the command"""
         cmddata = wx.TextDataObject()
         # list -> string
         cmdlist = self.createCmd(ignoreErrors = True)
@@ -741,7 +741,7 @@
                                     (cmdstring))
 
     def OnCancel(self, event):
-        """!Cancel button pressed"""
+        """Cancel button pressed"""
         self.MakeModal(False)
         self.dialogClosing.emit()
         if self.get_dcmd and \
@@ -762,7 +762,7 @@
             self.Destroy()
 
     def OnHelp(self, event):
-        """!Show manual page (switch to the 'Manual' notebook page)"""
+        """Show manual page (switch to the 'Manual' notebook page)"""
         if self.notebookpanel.notebook.GetPageIndexByName('manual') > -1:
             self.notebookpanel.notebook.SetSelectionByName('manual')
             self.notebookpanel.OnPageChange(None)
@@ -771,12 +771,12 @@
             event.Skip()
         
     def createCmd(self, ignoreErrors = False, ignoreRequired = False):
-        """!Create command string (python list)"""
+        """Create command string (python list)"""
         return self.notebookpanel.createCmd(ignoreErrors = ignoreErrors,
                                             ignoreRequired = ignoreRequired)
 
 class CmdPanel(wx.Panel):
-    """!A panel containing a notebook dividing in tabs the different
+    """A panel containing a notebook dividing in tabs the different
     guisections of the GRASS cmd.
     """
     def __init__(self, parent, giface, task, id = wx.ID_ANY, frame = None, *args, **kwargs):
@@ -1812,16 +1812,16 @@
         self.Bind(EVT_DIALOG_UPDATE, self.OnUpdateDialog)
 
     def _getValue(self, p):
-        """!Get value or default value of given parameter
+        """Get value or default value of given parameter
 
-        @param p parameter directory
+        :param p: parameter directory
         """
         if p.get('value', '') !=  '':
             return p['value']
         return p.get('default', '')
         
     def OnFileLoad(self, event):
-        """!Load file to interactive input"""
+        """Load file to interactive input"""
         me = event.GetId()
         win = dict()
         for p in self.task.params:
@@ -1855,7 +1855,7 @@
         win['text'].SetValue(data)
         
     def OnFileSave(self, event):
-        """!Save interactive input to the file"""
+        """Save interactive input to the file"""
         wId = event.GetId()
         win = {}
         for p in self.task.params:
@@ -1916,7 +1916,7 @@
             win.SetValue('')
         
     def OnVectorFormat(self, event):
-        """!Change vector format (native / ogr).
+        """Change vector format (native / ogr).
 
         Currently unused.        
         """
@@ -1982,7 +1982,7 @@
         self.parent.updateValuesHook()
         
     def OnVerbosity(self, event):
-        """!Verbosity level changed"""
+        """Verbosity level changed"""
         verbose = self.FindWindowById(self.task.get_flag('verbose')['wxId'][0])
         quiet = self.FindWindowById(self.task.get_flag('quiet')['wxId'][0])
         if event.IsChecked():
@@ -2025,7 +2025,7 @@
         event.Skip()
 
     def _switchPage(self, notification):
-        """!Manages @c 'output' notebook page according to event notification."""
+        """Manages @c 'output' notebook page according to event notification."""
         if notification == Notification.HIGHLIGHT:
             self.notebook.HighlightPageByName('output')
         if notification == Notification.MAKE_VISIBLE:
@@ -2069,7 +2069,7 @@
         self.OnUpdateValues()
 
     def OnUpdateValues(self, event = None):
-        """!If we were part of a richer interface, report back the
+        """If we were part of a richer interface, report back the
         current command being built.
 
         This method should be set by the parent of this panel if
@@ -2079,7 +2079,7 @@
         pass
 
     def OnCheckBoxMulti(self, event):
-        """!Fill the values as a ','-separated string according to
+        """Fill the values as a ','-separated string according to
         current status of the checkboxes.
         """
         me = event.GetId()
@@ -2112,7 +2112,7 @@
         self.OnUpdateValues()
 
     def OnSetValue(self, event):
-        """!Retrieve the widget value and set the task value field
+        """Retrieve the widget value and set the task value field
         accordingly.
 
         Use for widgets that have a proper GetValue() method, i.e. not
@@ -2148,7 +2148,7 @@
         event.Skip()
         
     def OnSetSymbol(self, event):
-        """!Shows dialog for symbol selection"""
+        """Shows dialog for symbol selection"""
         myId = event.GetId()
         
         for p in self.task.params:
@@ -2171,9 +2171,10 @@
                 dlg.Destroy()
 
     def OnTimelineTool(self, event):
-        """!Show Timeline Tool with dataset(s) from gselect.
+        """Show Timeline Tool with dataset(s) from gselect.
 
-        TODO: update from gselect automatically        
+        .. todo::
+            update from gselect automatically        
         """
         myId = event.GetId()
 
@@ -2188,7 +2189,7 @@
                 frame.run(parent=self, datasets=datasets)
 
     def OnUpdateSelection(self, event):
-        """!Update dialog (layers, tables, columns, etc.)
+        """Update dialog (layers, tables, columns, etc.)
         """
         if not hasattr(self.parent, "updateThread"):
             if event:
@@ -2208,11 +2209,11 @@
                                             self.task)
             
     def createCmd(self, ignoreErrors = False, ignoreRequired = False):
-        """!Produce a command line string (list) or feeding into GRASS.
+        """Produce a command line string (list) or feeding into GRASS.
 
-        @param ignoreErrors True then it will return whatever has been
-        built so far, even though it would not be a correct command
-        for GRASS
+        :param ignoreErrors: True then it will return whatever has been
+                             built so far, even though it would not be
+                             a correct command for GRASS
         """
         try:
             cmd = self.task.get_cmd(ignoreErrors = ignoreErrors,
@@ -2255,7 +2256,7 @@
 class GUI:
     def __init__(self, parent = None, giface = None, show = True, modal = False,
                  centreOnParent = False, checkError = False):
-        """!Parses GRASS commands when module is imported and used from
+        """Parses GRASS commands when module is imported and used from
         Layer Manager.
         """
         self.parent = parent
@@ -2275,11 +2276,11 @@
             _blackList['enabled'] = False
         
     def GetCmd(self):
-        """!Get validated command"""
+        """Get validated command"""
         return self.cmd
     
     def ParseCommand(self, cmd, completed = None):
-        """!Parse command
+        """Parse command
         
         Note: cmd is given as list
         
@@ -2396,12 +2397,12 @@
             return self.grass_task
     
     def GetCommandInputMapParamKey(self, cmd):
-        """!Get parameter key for input raster/vector map
+        """Get parameter key for input raster/vector map
         
-        @param cmd module name
+        :param cmd: module name
         
-        @return parameter key
-        @return None on failure
+        :return: parameter key
+        :return: None on failure
         """
         # parse the interface decription
         if not self.grass_task:
@@ -2420,7 +2421,7 @@
         return None
 
 class GrassGUIApp(wx.App):
-    """!Stand-alone GRASS command GUI
+    """Stand-alone GRASS command GUI
     """
     def __init__(self, grass_task):
         self.grass_task = grass_task

Modified: grass/trunk/gui/wxpython/gui_core/ghelp.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/ghelp.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/ghelp.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gui_core.ghelp
 
 @brief Help/about window, menu tree, search module tree
@@ -41,7 +41,7 @@
 
 
 class AboutWindow(wx.Frame):
-    """!Create custom About Window
+    """Create custom About Window
     """
     def __init__(self, parent, size = (770, 460), 
                  title = _('About GRASS GIS'), **kwargs):
@@ -93,7 +93,7 @@
         self.Layout()
         
     def _pageInfo(self):
-        """!Info page"""
+        """Info page"""
         # get version and web site
         vInfo = grass.version()
         if not vInfo:
@@ -566,15 +566,16 @@
         return self.statswin
     
     def OnCloseWindow(self, event):
-        """!Close window"""
+        """Close window"""
         self.Close()
 
 class HelpFrame(wx.Dialog):
-    """!GRASS Quickstart help window
+    """GRASS Quickstart help window
 
     As a base class wx.Dialog is used, because of not working
     close button with wx.Frame when dialog is called from wizard.
-    If parent is None, application TopLevelWindow is used (wxPython standard behaviour).
+    If parent is None, application TopLevelWindow is used (wxPython
+    standard behaviour).
 
     Currently not used (was in location wizard before)
     due to unsolved problems - window sometimes does not respond.
@@ -596,7 +597,7 @@
         self.Layout()
 
 class HelpWindow(HtmlWindow):
-    """!This panel holds the text from GRASS docs.
+    """This panel holds the text from GRASS docs.
     
     GISBASE must be set in the environment to find the html docs dir.
     The SYNOPSIS section is skipped, since this Panel is supposed to
@@ -604,7 +605,7 @@
     """
     def __init__(self, parent, command, text, skipDescription,
                  **kwargs):
-        """!If command is given, the corresponding HTML help
+        """If command is given, the corresponding HTML help
         file will be presented, with all links pointing to absolute
         paths of local files.
 
@@ -654,7 +655,7 @@
         super(HelpWindow, self).OnLinkClicked(linkinfo)
         
     def fillContentsFromFile(self, htmlFile, skipDescription = True):
-        """!Load content from file.
+        """Load content from file.
         
         Currently not used.        
         """
@@ -709,7 +710,7 @@
         self._layout()
 
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         sizer = wx.BoxSizer(wx.VERTICAL)
         btnSizer = wx.BoxSizer(wx.HORIZONTAL)
         
@@ -728,14 +729,14 @@
         sizer.Fit(self)
 
     def LoadPage(self, path = None):
-        """!Load page"""
+        """Load page"""
         if not path:
             path = self.GetFile()
         self.content.history.append(path)
         self.content.LoadPage(path)
         
     def GetFile(self):
-        """!Get HTML file"""
+        """Get HTML file"""
         fMan = os.path.join(self.content.fspath, self.command + ".html")
         if os.path.isfile(fMan):
             return fMan
@@ -753,7 +754,7 @@
         return self.content.loaded
 
     def OnHistory(self):
-        """!Update buttons"""
+        """Update buttons"""
         nH = len(self.content.history)
         iH = self.content.historyIdx
         if iH == nH - 1:
@@ -786,10 +787,10 @@
         event.Skip()
 
 def ShowAboutDialog(prgName, startYear):
-    """!Displays About window.
+    """Displays About window.
 
-    @param prgName name of the program
-    @param startYear the first year of existence of the program
+    :param prgName: name of the program
+    :param startYear: the first year of existence of the program
     """
     info = wx.AboutDialogInfo()
     

Modified: grass/trunk/gui/wxpython/gui_core/goutput.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/goutput.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/goutput.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gui_core.goutput
 
 @brief Command output widgets
@@ -43,22 +43,22 @@
 
 
 class GConsoleWindow(wx.SplitterWindow):
-    """!Create and manage output console for commands run by GUI.
+    """Create and manage output console for commands run by GUI.
     """
     def __init__(self, parent, gconsole, menuModel = None, margin = False,
                  style = wx.TAB_TRAVERSAL | wx.FULL_REPAINT_ON_RESIZE,
                  gcstyle = GC_EMPTY,
                  **kwargs):
-        """!
-        @param parent gui parent
-        @param gconsole console logic
-        @param menuModel tree model of modules (from menu)
-        @param margin use margin in output pane (GStc)
-        @param style wx.SplitterWindow style
-        @param gcstyle GConsole style
-        (GC_EMPTY, GC_PROMPT to show command prompt,
-        GC_SEARCH to show search widget)
         """
+        :param parent: gui parent
+        :param gconsole: console logic
+        :param menuModel: tree model of modules (from menu)
+        :param margin: use margin in output pane (GStc)
+        :param style: wx.SplitterWindow style
+        :param gcstyle: GConsole style
+                        (GC_EMPTY, GC_PROMPT to show command prompt,
+                        GC_SEARCH to show search widget)
+        """
         wx.SplitterWindow.__init__(self, parent, id = wx.ID_ANY, style = style, **kwargs)
         self.SetName("GConsole")
         
@@ -162,7 +162,7 @@
         self._layout()
         
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         self.outputSizer = wx.BoxSizer(wx.VERTICAL)
         progressSizer = wx.BoxSizer(wx.HORIZONTAL)
         btnSizer = wx.BoxSizer(wx.HORIZONTAL)
@@ -251,7 +251,7 @@
         self.Layout()
 
     def MakeSearchPaneContent(self, pane, model):
-        """!Create search pane"""
+        """Create search pane"""
         border = wx.BoxSizer(wx.VERTICAL)
         
         self.search = SearchModuleWidget(parent = pane,
@@ -266,7 +266,7 @@
         border.Fit(pane)
         
     def OnSearchPaneChanged(self, event):
-        """!Collapse search module box"""
+        """Collapse search module box"""
         if self.searchPane.IsExpanded():
             self.searchPane.SetLabel(self.infoCollapseLabelCol)
         else:
@@ -276,11 +276,11 @@
         self.panelOutput.SendSizeEvent()
         
     def GetPanel(self, prompt = True):
-        """!Get panel
+        """Get panel
 
-        @param prompt get prompt / output panel
+        :param prompt: get prompt / output panel
 
-        @return wx.Panel reference
+        :return: wx.Panel reference
         """
         if prompt:
             return self.panelPrompt
@@ -289,15 +289,15 @@
 
     def WriteLog(self, text, style=None, wrap=None,
                  notification=Notification.HIGHLIGHT):
-        """!Generic method for writing log message in 
+        """Generic method for writing log message in 
         given style. 
 
         Emits contentChanged signal.
 
-        @param line text line
-        @param style text style (see GStc)
-        @param stdout write to stdout or stderr
-        @param notification form of notification
+        :param line: text line
+        :param style: text style (see GStc)
+        :param stdout: write to stdout or stderr
+        :param notification: form of notification
         """
 
         self.cmdOutput.SetStyle()
@@ -332,37 +332,37 @@
         self.contentChanged.emit(notification=notification)
         
     def WriteCmdLog(self, text, pid=None, notification=Notification.MAKE_VISIBLE):
-        """!Write message in selected style
+        """Write message in selected style
         
-        @param text message to be printed
-        @param pid process pid or None
-        @param switchPage True to switch page
+        :param text: message to be printed
+        :param pid: process pid or None
+        :param switchPage: True to switch page
         """
         if pid:
             text = '(' + str(pid) + ') ' + text
         self.WriteLog(text, style=self.cmdOutput.StyleCommand, notification=notification)
 
     def WriteWarning(self, text):
-        """!Write message in warning style"""
+        """Write message in warning style"""
         self.WriteLog(text, style=self.cmdOutput.StyleWarning, notification=Notification.MAKE_VISIBLE)
 
     def WriteError(self, text):
-        """!Write message in error style"""
+        """Write message in error style"""
         self.WriteLog(text, style=self.cmdOutput.StyleError, notification=Notification.MAKE_VISIBLE)
 
     def OnOutputClear(self, event):
-        """!Clear content of output window"""
+        """Clear content of output window"""
         self.cmdOutput.SetReadOnly(False)
         self.cmdOutput.ClearAll()
         self.cmdOutput.SetReadOnly(True)
         self.progressbar.SetValue(0)
 
     def GetProgressBar(self):
-        """!Return progress bar widget"""
+        """Return progress bar widget"""
         return self.progressbar
 
     def OnOutputSave(self, event):
-        """!Save (selected) text from output window to the file"""
+        """Save (selected) text from output window to the file"""
         text = self.cmdOutput.GetSelectedText()
         if not text:
             text = self.cmdOutput.GetText()
@@ -395,10 +395,10 @@
         dlg.Destroy()
 
     def SetCopyingOfSelectedText(self, copy):
-        """!Enable or disable copying of selected text in to clipboard.
+        """Enable or disable copying of selected text in to clipboard.
         Effects prompt and output.
         
-        @param copy True for enable, False for disable
+        :param bool copy: True for enable, False for disable
         """
         if copy:
             self.cmdPrompt.Bind(stc.EVT_STC_PAINTED, self.cmdPrompt.OnTextSelectionChanged)
@@ -408,7 +408,7 @@
             self.cmdOutput.Unbind(stc.EVT_STC_PAINTED)
 
     def OnCmdOutput(self, event):
-        """!Prints command output.
+        """Prints command output.
 
         Emits contentChanged signal.
         """
@@ -423,7 +423,7 @@
             self.contentChanged.emit(notification=Notification.HIGHLIGHT)
 
     def OnCmdProgress(self, event):
-        """!Update progress message info"""
+        """Update progress message info"""
         self.progressbar.SetValue(event.value)
         event.Skip()
 
@@ -449,7 +449,7 @@
         del self.cmdFileProtocol
         
     def OnCmdProtocol(self, event = None):
-        """!Save commands into file"""
+        """Save commands into file"""
         if not event.IsChecked():
             # stop capturing commands, save list of commands to the
             # protocol file
@@ -473,13 +473,13 @@
         event.Skip()
 
     def OnCmdRun(self, event):
-        """!Run command"""
+        """Run command"""
         self.outputSizer.Show(self.panelProgress)
         self.outputSizer.Layout()
         event.Skip()
 
     def OnCmdDone(self, event):
-        """!Command done (or aborted)
+        """Command done (or aborted)
         """
         self.progressbar.SetValue(0) # reset progress bar on '0%'
         wx.CallLater(100, self._hideProgress)
@@ -490,16 +490,16 @@
         self.outputSizer.Layout()
 
     def ResetFocus(self):
-        """!Reset focus"""
+        """Reset focus"""
         self.cmdPrompt.SetFocus()
         
     def GetPrompt(self):
-        """!Get prompt"""
+        """Get prompt"""
         return self.cmdPrompt
 
 
 class GStc(stc.StyledTextCtrl):
-    """!Styled text control for GRASS stdout and stderr.
+    """Styled text control for GRASS stdout and stderr.
 
     Based on FrameOutErr.py
 
@@ -508,7 +508,7 @@
     Author:    Jean-Michel Fauth, Switzerland
     Copyright: (c) 2005-2007 Jean-Michel Fauth
     Licence:   GPL
-    """    
+    """  
     def __init__(self, parent, id, margin = False, wrap = None):
         stc.StyledTextCtrl.__init__(self, parent, id)
         self.parent = parent
@@ -551,14 +551,14 @@
         self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy)
         
     def OnTextSelectionChanged(self, event):
-        """!Copy selected text to clipboard and skip event.
+        """Copy selected text to clipboard and skip event.
         The same function is in TextCtrlAutoComplete class (prompt.py).
         """
         wx.CallAfter(self.Copy)
         event.Skip()
         
     def SetStyle(self):
-        """!Set styles for styled text output windows with type face 
+        """Set styles for styled text output windows with type face 
         and point size selected by user (Courier New 10 is default)"""
         
         typeface = UserSettings.Get(group = 'appearance', key = 'outputfont', subkey = 'type')   
@@ -600,14 +600,14 @@
         self.StyleSetSpec(self.StyleUnknown, self.StyleUnknownSpec)        
 
     def OnDestroy(self, evt):
-        """!The clipboard contents can be preserved after
+        """The clipboard contents can be preserved after
         the app has exited"""
         
         wx.TheClipboard.Flush()
         evt.Skip()
 
     def AddTextWrapped(self, txt, wrap = None):
-        """!Add string to text area.
+        """Add string to text area.
 
         String is wrapped and linesep is also added to the end
         of the string"""
@@ -649,12 +649,13 @@
         self.SetReadOnly(True)
 
     def AddStyledMessage(self, message, style = None):
-        """!Add message to text area.
+        """Add message to text area.
 
         Handles messages with progress percentages.
 
-        @param message message to be added
-        @param style style of message, allowed values: 'message', 'warning', 'error' or None
+        :param message: message to be added
+        :param style: style of message, allowed values: 'message',
+                      'warning', 'error' or None
         """
         # message prefix
         if style == 'warning':
@@ -710,7 +711,7 @@
 
 
 class GConsoleFrame(wx.Frame):
-    """!Standalone GConsole for testing only"""
+    """Standalone GConsole for testing only"""
     def __init__(self, parent, id = wx.ID_ANY, title = "GConsole Test Frame",
                  style = wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL, **kwargs):
         wx.Frame.__init__(self, parent = parent, id = id, title = title, style = style)

Modified: grass/trunk/gui/wxpython/gui_core/gselect.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/gselect.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/gselect.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gui_core.gselect
 
 @brief Custom control that selects elements
@@ -75,22 +75,22 @@
                  mapsets = None, updateOnPopup = True, onPopup = None,
                  fullyQualified = True, extraItems = {}, layerTree = None,
                  validator = wx.DefaultValidator):
-        """!Custom control to create a ComboBox with a tree control to
+        """Custom control to create a ComboBox with a tree control to
         display and select GIS elements within acessible mapsets.
         Elements can be selected with mouse. Can allow multiple
         selections, when argument <em>multiple</em> is True. Multiple
         selections are separated by commas.
 
-        @param type type of GIS elements ('raster, 'vector', ...)
-        @param multiple True for multiple input
-        @param nmaps number of maps to be entered
-        @param mapsets force list of mapsets (otherwise search path)
-        @param updateOnPopup True for updating list of elements on popup
-        @param onPopup function to be called on Popup
-        @param fullyQualified True to provide fully qualified names (map at mapset)
-        @param extraItems extra items to add (given as dictionary) - see gmodeler for usage
-        @param layerTree show only elements from given layer tree if not None
-        @param validator validator for TextCtrl
+        :param type: type of GIS elements ('raster, 'vector', ...)
+        :param multiple: True for multiple input
+        :param nmaps: number of maps to be entered
+        :param mapsets: force list of mapsets (otherwise search path)
+        :param updateOnPopup: True for updating list of elements on popup
+        :param onPopup: function to be called on Popup
+        :param fullyQualified: True to provide fully qualified names (map at mapset)
+        :param extraItems: extra items to add (given as dictionary) - see gmodeler for usage
+        :param layerTree: show only elements from given layer tree if not None
+        :param validator: validator for TextCtrl
         """
         wx.combo.ComboCtrl.__init__(self, parent=parent, id=id, size=size, validator=validator)
         self.GetChildren()[0].SetName("Select")
@@ -107,7 +107,7 @@
         self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
 
     def OnKeyDown(self, event):
-        """!Open popup and send key events to the tree."""
+        """Open popup and send key events to the tree."""
         if self.IsPopupShown():
             self.tcp.OnKeyDown(event)
         else:
@@ -116,22 +116,22 @@
             event.Skip()
 
     def SetElementList(self, type, mapsets = None):
-        """!Set element list
+        """Set element list
 
-        @param type GIS element type
-        @param mapsets list of acceptable mapsets (None for all in search path)
+        :param type: GIS element type
+        :param mapsets: list of acceptable mapsets (None for all in search path)
         """
         self.tcp.SetData(type = type, mapsets = mapsets)
         
     def GetElementList(self):
-        """!Load elements"""
+        """Load elements"""
         self.tcp.GetElementList()
     
     def SetType(self, etype, multiple = False, nmaps = 1,
                 mapsets = None, updateOnPopup = True, onPopup = None):
-        """!Param set element type for widget
+        """Param set element type for widget
 
-        @param etype element type, see gselect.ElementSelect
+        :param etype: element type, see gselect.ElementSelect
         """
         self.tcp.SetData(type = etype, mapsets = mapsets,
                          multiple = multiple, nmaps = nmaps,
@@ -139,11 +139,11 @@
         
 class VectorSelect(Select):
     def __init__(self, parent, ftype, **kwargs):
-        """!Custom to create a ComboBox with a tree control to display and
+        """Custom to create a ComboBox with a tree control to display and
         select vector maps. You can filter the vector maps. If you
         don't need this feature use Select class instead
         
-        @param ftype filter vector maps based on feature type
+        :param ftype: filter vector maps based on feature type
         """
         Select.__init__(self, parent = parent, id = wx.ID_ANY,
                         type = 'vector', **kwargs)
@@ -154,7 +154,7 @@
         self.tcp.SetFilter(self._isElement)
         
     def _isElement(self, vectorName):
-        """!Check if element should be filtered out"""
+        """Check if element should be filtered out"""
         try:
             if int(grass.vector_info_topo(vectorName)[self.ftype]) < 1:
                 return False
@@ -164,11 +164,12 @@
         return True
 
 class ListCtrlComboPopup(wx.combo.ComboPopup):
-    """!Create a list ComboBox using TreeCtrl with hidden root.
+    """Create a list ComboBox using TreeCtrl with hidden root.
 
-    @todo: use event.EventObject instead of hardcoding (see forms.py)
+    .. todo::
+        use event.EventObject instead of hardcoding (see forms.py)
     https://groups.google.com/forum/#!topic/wxpython-users/pRz6bi0k0XY
-    """    
+    """  
     # overridden ComboPopup methods
     def Init(self):
         self.value = []            # for multiple is False ->
@@ -202,7 +203,7 @@
         return self.seltree
 
     def GetStringValue(self):
-        """!Get value as a string separated by commas
+        """Get value as a string separated by commas
         """
         return ','.join(self.value)
 
@@ -217,7 +218,7 @@
             self.value = winValue.split(',')
 
     def OnPopup(self, force = False):
-        """!Limited only for first selected
+        """Limited only for first selected
         """
         if not force and not self.updateOnPopup:
             return
@@ -231,13 +232,13 @@
             self.seltree.SelectItem(match)
 
     def GetAdjustedSize(self, minWidth, prefHeight, maxHeight):
-        """!Reads UserSettings to get height (which was 200 in old implementation).
+        """Reads UserSettings to get height (which was 200 in old implementation).
         """
         height = UserSettings.Get(group = 'appearance', key = 'gSelectPopupHeight', subkey = 'value')
         return wx.Size(minWidth, min(height, maxHeight))
 
     def FindItem(self, parentItem, text, startLetters = False):
-        """!Finds item with given name or starting with given text
+        """Finds item with given name or starting with given text
         """
         startletters = startLetters
         item, cookie = self.seltree.GetFirstChild(parentItem)
@@ -267,7 +268,7 @@
             self.seltree.AppendItem(root, text = item)
         
     def OnKeyUp(self, event):
-        """!Enable to select items using keyboard
+        """Enable to select items using keyboard
         """
         item = self.seltree.GetSelection()
         if event.GetKeyCode() == wx.WXK_DOWN:
@@ -292,7 +293,7 @@
             self.Dismiss()
 
     def OnMotion(self, evt):
-        """!Have the selection follow the mouse, like in a real combobox
+        """Have the selection follow the mouse, like in a real combobox
         """
         item, flags = self.seltree.HitTest(evt.GetPosition())
         if item and flags & wx.TREE_HITTEST_ONITEMLABEL:
@@ -301,7 +302,7 @@
         evt.Skip()
 
     def OnLeftDown(self, evt):
-        """!Do the combobox selection
+        """Do the combobox selection
         """
         if self.curitem is None:
             return
@@ -317,7 +318,7 @@
         evt.Skip()
 
     def SetData(self, **kargs):
-        """!Set object properties"""
+        """Set object properties"""
         if 'multiple' in kargs:
             self.multiple = kargs['multiple']
         if 'onPopup' in kargs:
@@ -331,11 +332,11 @@
                 self.filterItems.append(layer.GetName())
         
     def DeleteAllItems(self):
-        """!Delete all items in popup"""
+        """Delete all items in popup"""
         self.seltree.DeleteAllItems()
 
 class TreeCtrlComboPopup(ListCtrlComboPopup):
-    """!Create a tree ComboBox for selecting maps and other GIS elements
+    """Create a tree ComboBox for selecting maps and other GIS elements
     in accessible mapsets within the current location
     """
     # overridden ComboPopup methods
@@ -353,11 +354,11 @@
         self.tgis_error = False
     
     def SetFilter(self, filter):
-        """!Set filter for GIS elements, see e.g. VectorSelect"""
+        """Set filter for GIS elements, see e.g. VectorSelect"""
         self.filterElements = filter
     
     def OnPopup(self, force = False):
-        """!Limited only for first selected"""
+        """Limited only for first selected"""
         if not force and not self.updateOnPopup:
             return
         if self.onPopup:
@@ -371,7 +372,7 @@
         ListCtrlComboPopup.OnPopup(self, force)
       
     def GetElementList(self, elements = None, exclude = False):
-        """!Get filtered list of GIS elements in accessible mapsets
+        """Get filtered list of GIS elements in accessible mapsets
         and display as tree with all relevant elements displayed
         beneath each mapset branch
         """
@@ -391,13 +392,13 @@
                 pass
                     
     def _getElementList(self, element, mapsets = None, elements = None, exclude = False):
-        """!Get list of GIS elements in accessible mapsets and display as tree
+        """Get list of GIS elements in accessible mapsets and display as tree
         with all relevant elements displayed beneath each mapset branch
 
-        @param element GIS element
-        @param mapsets list of acceptable mapsets (None for all mapsets in search path)
-        @param elements list of forced GIS elements
-        @param exclude True to exclude, False for forcing the list (elements)
+        :param element: GIS element
+        :param mapsets: list of acceptable mapsets (None for all mapsets in search path)
+        :param elements: list of forced GIS elements
+        :param exclude: True to exclude, False for forcing the list (elements)
         """
         # get current mapset
         curr_mapset = grass.gisenv()['MAPSET']
@@ -546,13 +547,13 @@
     
     # helpers
     def _addItems(self, elist, elements, mapset, exclude, node):
-        """!Helper function for adding multiple items (maps, stds).
+        """Helper function for adding multiple items (maps, stds).
 
-        @param elist list of map/stds names
-        @param elements list of forced elements
-        @param mapset mapset name
-        @param exclude True to exclude, False for forcing the list
-        @param node parent node
+        :param list elist: list of map/stds names
+        :param list elements: list of forced elements
+        :param str mapset:  mapset name
+        :param exclude: True to exclude, False for forcing the list
+        :param node: parent node
         """
         elist.sort()
         for elem in elist:
@@ -585,7 +586,7 @@
         return item
 
     def OnKeyDown(self, event):
-        """!Enables to select items using keyboard"""
+        """Enables to select items using keyboard"""
         
         item = self.seltree.GetSelection()
         if event.GetKeyCode() == wx.WXK_DOWN:
@@ -651,7 +652,7 @@
             self.Dismiss()
     
     def OnLeftDown(self, evt):
-        """!Do the combobox selection
+        """Do the combobox selection
         """
         item, flags = self.seltree.HitTest(evt.GetPosition())
         if item and flags & wx.TREE_HITTEST_ONITEMLABEL:
@@ -681,7 +682,7 @@
         evt.Skip()
 
     def SetData(self, **kargs):
-        """!Set object properties"""
+        """Set object properties"""
         ListCtrlComboPopup.SetData(self, **kargs)
         if 'type' in kargs:
             self.type = kargs['type']
@@ -706,12 +707,12 @@
             self.extraItems = kargs['extraItems']
         
     def GetType(self):
-        """!Get element type
+        """Get element type
         """
         return self.type
 
 class VectorDBInfo:
-    """!Class providing information about attribute tables
+    """Class providing information about attribute tables
     linked to a vector map"""
     def __init__(self, map):
         self.map = map
@@ -727,7 +728,7 @@
         self._DescribeTables() # -> self.tables
 
     def _CheckDBConnection(self):
-        """!Check DB connection"""
+        """Check DB connection"""
         nuldev = file(os.devnull, 'w+')
         self.layers = grass.vector_db(map = self.map, stderr = nuldev)
         nuldev.close()
@@ -735,7 +736,7 @@
         return bool(len(self.layers.keys()) > 0)
         
     def _DescribeTables(self):
-        """!Describe linked tables"""
+        """Describe linked tables"""
         for layer in self.layers.keys():
             # determine column names and types
             table = self.layers[layer]["table"]
@@ -777,7 +778,7 @@
         return True
     
     def Reset(self):
-        """!Reset"""
+        """Reset"""
         for layer in self.layers:
             table = self.layers[layer]["table"] # get table desc
             for name in self.tables[table].keys():
@@ -785,36 +786,36 @@
                 self.tables[table][name]['ids']    = []
     
     def GetName(self):
-        """!Get vector name"""
+        """Get vector name"""
         return self.map
     
     def GetKeyColumn(self, layer):
-        """!Get key column of given layer
+        """Get key column of given layer
         
-        @param layer vector layer number
+        :param layer: vector layer number
         """
         return str(self.layers[layer]['key'])
     
     def GetTable(self, layer):
-        """!Get table name of given layer
+        """Get table name of given layer
         
-        @param layer vector layer number
+        :param layer: vector layer number
         """
         return self.layers[layer]['table']
     
     def GetDbSettings(self, layer):
-        """!Get database settins
+        """Get database settins
 
-        @param layer layer number
+        :param layer: layer number
         
-        @return (driver, database)
+        :return: (driver, database)
         """
         return self.layers[layer]['driver'], self.layers[layer]['database']
     
     def GetTableDesc(self, table):
-        """!Get table columns
+        """Get table columns
 
-        @param table table name
+        :param table: table name
         """
         return self.tables[table]
 
@@ -822,10 +823,10 @@
     def __init__(self, parent, id = wx.ID_ANY,
                  size = globalvar.DIALOG_COMBOBOX_SIZE,
                  vector = None, dsn = None, choices = [], all = False, default = None):
-        """!Creates combo box for selecting vector map layer names
+        """Creates combo box for selecting vector map layer names
 
-        @param vector vector map name (native or connected via v.external)
-        @param dsn    OGR data source name
+        :param str vector: vector map name (native or connected via v.external)
+        :param str dsn: OGR data source name
         """
         super(LayerSelect, self).__init__(parent, id, size = size, choices = choices)
 
@@ -839,10 +840,10 @@
         self.InsertLayers(vector = vector, dsn = dsn)
         
     def InsertLayers(self, vector = None, dsn = None):
-        """!Insert layers for a vector into the layer combobox
+        """Insert layers for a vector into the layer combobox
 
-        @param vector vector map name (native or connected via v.external)
-        @param dsn    OGR data source name
+        :param str vector: vector map name (native or connected via v.external)
+        :param str dsn: OGR data source name
         """
         layers = list()
 
@@ -877,7 +878,7 @@
             self.SetValue(self.default)
 
 class DriverSelect(wx.ComboBox):
-    """!Creates combo box for selecting database driver.
+    """Creates combo box for selecting database driver.
     """
     def __init__(self, parent, choices, value,
                  id=wx.ID_ANY, pos=wx.DefaultPosition,
@@ -891,7 +892,7 @@
         self.SetStringSelection(value)
 
 class DatabaseSelect(wx.TextCtrl):
-    """!Creates combo box for selecting database driver.
+    """Creates combo box for selecting database driver.
     """
     def __init__(self, parent, value = '', id = wx.ID_ANY, 
                  size = globalvar.DIALOG_TEXTCTRL_SIZE, **kargs):
@@ -899,7 +900,7 @@
         self.SetName("DatabaseSelect")
     
 class TableSelect(wx.ComboBox):
-    """!Creates combo box for selecting attribute tables from the database
+    """Creates combo box for selecting attribute tables from the database
     """
     def __init__(self, parent,
                  id = wx.ID_ANY, value = '', 
@@ -912,7 +913,7 @@
             self.InsertTables()
                 
     def InsertTables(self, driver = None, database = None):
-        """!Insert attribute tables into combobox"""
+        """Insert attribute tables into combobox"""
         items = []
 
         if not driver or not database:
@@ -935,18 +936,18 @@
         self.SetValue('')
 
 class ColumnSelect(wx.combo.ComboCtrl):
-    """!Creates combo box for selecting columns in the attribute table
+    """Creates combo box for selecting columns in the attribute table
     for a vector map.
 
-    @param parent window parent
-    @param id window id
-    @param value default value
-    @param size window size
-    @param vector vector map name
-    @param layer layer number
-    @param multiple - True if it is possible to add multiple columns
-    @param param parameters list (see menuform.py)
-    @param **kwags wx.ComboBox parameters
+    :param parent: window parent
+    :param id: window id
+    :param value: default value
+    :param size: window size
+    :param str vector: vector map name
+    :param layer: layer number
+    :param multiple: - True if it is possible to add multiple columns
+    :param param: parameters list (see menuform.py)
+    :param **kwags: wx.ComboBox parameters
     """
     def __init__(self, parent, id = wx.ID_ANY, value = '', 
                  size = globalvar.DIALOG_COMBOBOX_SIZE,
@@ -972,7 +973,7 @@
         return self.columns
 
     def OnKeyUp(self, event):
-        """!Shows popupwindow if down arrow key is released"""
+        """Shows popupwindow if down arrow key is released"""
         if event.GetKeyCode() == wx.WXK_DOWN and not self.IsPopupShown():
             self.ShowPopup() 
         else:
@@ -983,13 +984,13 @@
         self.SetValue('')
 
     def InsertColumns(self, vector, layer, excludeKey = False, excludeCols = None, type = None, dbInfo = None):
-        """!Insert columns for a vector attribute table into the columns combobox
+        """Insert columns for a vector attribute table into the columns combobox
 
-        @param vector vector name
-        @param layer vector layer number
-        @param excludeKey exclude key column from the list?
-        @param excludeCols list of columns to be removed from the list
-        @param type only columns of given type (given as list)
+        :param str vector: vector name
+        :param int layer: vector layer number
+        :param excludeKey: exclude key column from the list?
+        :param excludeCols: list of columns to be removed from the list
+        :param type: only columns of given type (given as list)
         """
         if not dbInfo:
             dbInfo = VectorDBInfo(vector)
@@ -1035,11 +1036,11 @@
                 self.SetValue(value)
         
     def InsertTableColumns(self, table, driver=None, database=None):
-        """!Insert table columns
+        """Insert table columns
 
-        @param table table name
-        @param driver driver name
-        @param database database name
+        :param str table: table name
+        :param str driver: driver name
+        :param str database: database name
         """
         self.columns[:] = []
         
@@ -1064,7 +1065,7 @@
                 self.SetValue(value)
 
 class DbaseSelect(wx.lib.filebrowsebutton.DirBrowseButton):
-    """!Widget for selecting GRASS Database"""
+    """Widget for selecting GRASS Database"""
     def __init__(self, parent, **kwargs):
         super(DbaseSelect, self).__init__(parent, id = wx.ID_ANY,
                                           size = globalvar.DIALOG_GSELECT_SIZE, labelText = '',
@@ -1074,7 +1075,7 @@
                                           **kwargs)
         
 class LocationSelect(wx.ComboBox):
-    """!Widget for selecting GRASS location"""
+    """Widget for selecting GRASS location"""
     def __init__(self, parent, id = wx.ID_ANY, size = globalvar.DIALOG_COMBOBOX_SIZE, 
                  gisdbase = None, **kwargs):
         super(LocationSelect, self).__init__(parent, id, size = size, 
@@ -1089,9 +1090,9 @@
         self.SetItems(GetListOfLocations(self.gisdbase))
 
     def UpdateItems(self, dbase):
-        """!Update list of locations
+        """Update list of locations
 
-        @param dbase path to GIS database
+        :param str dbase: path to GIS database
         """
         self.gisdbase = dbase
         if dbase:
@@ -1100,7 +1101,7 @@
             self.SetItems([])
         
 class MapsetSelect(wx.combo.ComboCtrl):
-    """!Widget for selecting GRASS mapset"""
+    """Widget for selecting GRASS mapset"""
     def __init__(self, parent, id = wx.ID_ANY, size = globalvar.DIALOG_COMBOBOX_SIZE, 
                  gisdbase = None, location = None, setItems = True,
                  searchPath = False, new = False, skipCurrent = False, multiple = False, **kwargs):
@@ -1132,10 +1133,11 @@
             self.tcp.SetItems(self._getMapsets())
         
     def UpdateItems(self, location, dbase = None):
-        """!Update list of mapsets for given location
+        """Update list of mapsets for given location
 
-        @param dbase path to GIS database (None to use currently selected)
-        @param location name of location
+        :param str dbase: path to GIS database (None to use currently
+                          selected)
+        :param str location: name of location
         """
         if dbase:
             self.gisdbase = dbase
@@ -1166,32 +1168,32 @@
         return mlist
 
     def GetStringSelection(self):
-        """!For backward compatibility. MapsetSelect changed to allow
+        """For backward compatibility. MapsetSelect changed to allow
         multiple selection, this required to change super-class from
         wx.ComboBox to wx.combo.ComboCtrl"""
         return self.GetValue()
 
     def SetStringSelection(self, text):
-        """!For backward compatibility. MapsetSelect changed to allow
+        """For backward compatibility. MapsetSelect changed to allow
         multiple selection, this required to change super-class from
         wx.ComboBox to wx.combo.ComboCtrl"""
         return self.SetValue(text)
 
     def SetSelection(self, sel=0):
-        """!For backward compatibility. MapsetSelect changed to allow
+        """For backward compatibility. MapsetSelect changed to allow
         multiple selection, this required to change super-class from
         wx.ComboBox to wx.combo.ComboCtrl"""
         self.SetValue('') # TODO: implement SetSelection()
 
     def SetItems(self, items):
-        """!For backward compatibility. MapsetSelect changed to allow
+        """For backward compatibility. MapsetSelect changed to allow
         multiple selection, this required to change super-class from
         wx.ComboBox to wx.combo.ComboCtrl"""
         self.tcp.DeleteAllItems()
         self.tcp.SetItems(items)
 
 class SubGroupSelect(wx.ComboBox):
-    """!Widget for selecting subgroups"""
+    """Widget for selecting subgroups"""
     def __init__(self, parent, id = wx.ID_ANY, size = globalvar.DIALOG_GSELECT_SIZE, 
                  **kwargs):
         super(SubGroupSelect, self).__init__(parent, id, size = size, 
@@ -1199,7 +1201,7 @@
         self.SetName("SubGroupSelect")
 
     def Insert(self, group):
-        """!Insert subgroups for defined group"""
+        """Insert subgroups for defined group"""
         if not group:
             return
         gisenv = grass.gisenv()
@@ -1220,11 +1222,11 @@
     def __init__(self, parent, srcType, ogr=False,
                  size=globalvar.DIALOG_SPIN_SIZE, 
                  **kwargs):
-        """!Widget for selecting external (GDAL/OGR) format
+        """Widget for selecting external (GDAL/OGR) format
 
-        @param parent parent window
-        @param srcType source type ('file', 'database', 'protocol')
-        @param ogr True for OGR otherwise GDAL
+        :param parent: parent window
+        :param srcType: source type ('file', 'database', 'protocol')
+        :param ogr: True for OGR otherwise GDAL
         """
         super(FormatSelect, self).__init__(parent, id=wx.ID_ANY, size=size, 
                                            **kwargs)
@@ -1241,7 +1243,7 @@
         self.SetItems(formats)
         
     def GetExtension(self, name):
-        """!Get file extension by format name"""
+        """Get file extension by format name"""
         formatToExt = dict()
         formatToExt.update(rasterFormatExtension)
         formatToExt.update(vectorFormatExtension)
@@ -1254,16 +1256,17 @@
 class GdalSelect(wx.Panel):
     def __init__(self, parent, panel, ogr=False, link=False, dest=False, 
                  exclude=None):
-        """!Widget for selecting GDAL/OGR datasource, format
+        """Widget for selecting GDAL/OGR datasource, format
         
-        @todo Split into GdalSelect and OgrSelect and optionally to
-        GdalSelectOutput, OgrSelectOutput
+        .. todo::
+             Split into GdalSelect and OgrSelect and optionally to
+             GdalSelectOutput, OgrSelectOutput
         
-        @param parent parent window
-        @param ogr    use OGR selector instead of GDAL
-        @param dest   True for output (destination)
-        @param default deafult type (ignored when dest == True)
-        @param exclude list of types to be excluded
+        :param parent: parent window
+        :param bool ogr: use OGR selector instead of GDAL
+        :param bool dest: True for output (destination)
+        :param default: default type (ignored when dest == True)
+        :param exclude: list of types to be excluded
         """
         self.parent = parent
         self.ogr = ogr
@@ -1489,7 +1492,7 @@
             wx.CallAfter(self._postInit, sourceType, current)
 
     def _postInit(self, sourceType, data):
-        """!Fill in default values."""
+        """Fill in default values."""
         format = data.get('format', '')
         pg = 'conninfo' in data.keys()
         if pg:
@@ -1531,7 +1534,7 @@
                 self.dbWidgets[name].SetValue(dsn)
 
     def _layout(self):
-        """!Layout"""
+        """Layout"""
         mainSizer = wx.BoxSizer(wx.VERTICAL)
 
         self.changingSizer = wx.StaticBoxSizer(self.inputBox, wx.VERTICAL)
@@ -1703,7 +1706,7 @@
         mainSizer.Fit(self)
 
     def _getExtension(self, name):
-        """!Get file extension by format name"""
+        """Get file extension by format name"""
         formatToExt = dict()
         formatToExt.update(rasterFormatExtension)
         formatToExt.update(vectorFormatExtension)
@@ -1711,7 +1714,7 @@
         return formatToExt.get(name, '')        
 
     def SetSourceType(self, sourceType):
-        """!Set source type (db, file, dir, ...).
+        """Set source type (db, file, dir, ...).
         Does not switch radioboxes."""
         self._sourceType = sourceType
         self.changingSizer.Show(item=self.filePanel, show=(sourceType == 'file'))
@@ -1740,7 +1743,7 @@
             self._reloadLayers()
 
     def OnSettingsChanged(self, data):
-        """!User changed setting"""
+        """User changed setting"""
         # data list: [type, dsn, format, options]
         if len(data) == 3:
             data.append('')
@@ -1780,7 +1783,7 @@
             self._reloadLayers()
 
     def OnSettingsSaving(self, name):
-        """!Saving data"""
+        """Saving data"""
         if not self.GetDsn():
             GMessage(parent = self,
                      message = _("No data source defined, settings are not saved."))
@@ -1791,20 +1794,20 @@
         self.settsManager.SaveSettings(name)
 
     def _getExtPatternGlob(self, ext):
-        """!Get pattern for case-insensitive globing"""
+        """Get pattern for case-insensitive globing"""
         pattern = '*.'
         for c in ext:
             pattern += '[%s%s]' % (c.lower(), c.upper())
         return pattern
 
     def _getCurrentDbWidgetName(self):
-        """!Returns active dns database widget name."""
+        """Returns active dns database widget name."""
         for widget in ('browse', 'dirbrowse', 'text', 'choice'):
             if self.dbWidgets[widget].IsShown():
                 return widget
 
     def GetDsn(self):
-        """!Get datasource name
+        """Get datasource name
         """
         if self._sourceType == 'db':
             if self.dbWidgets['format'].GetStringSelection() in ('PostgreSQL',
@@ -1843,7 +1846,7 @@
         return dsn
 
     def SetDatabase(self, db):
-        """!Update database panel."""
+        """Update database panel."""
         sizer = self.dbPanel.GetSizer()
         showBrowse = db in ('SQLite', 'Rasterlite')
         showDirbrowse = db in ('FileGDB')
@@ -1888,14 +1891,14 @@
         sizer.Layout()
 
     def OnUpdate(self, event):
-        """!Update required - load layers."""
+        """Update required - load layers."""
         if not self.dest:
             self._reloadLayers()
 
         event.Skip()
 
     def _reloadLayers(self):
-        """!Reload list of layers"""
+        """Reload list of layers"""
         dsn = self.GetDsn()
         if not dsn:
             return
@@ -1952,16 +1955,16 @@
             self._reloadLayers()
 
     def SetExtension(self, name):
-        """!Extension changed"""
+        """Extension changed"""
         ext = self._getExtension(name)
         self.dirWidgets['extension'].SetValue(ext)
 
     def GetType(self):
-        """!Get source type"""
+        """Get source type"""
         return self._sourceType
 
     def GetFormat(self):
-        """!Get format as string"""
+        """Get format as string"""
         if self._sourceType == 'dir':
             format = self.dirWidgets['format'].GetStringSelection()
         elif self._sourceType == 'pro':
@@ -1974,11 +1977,11 @@
         return format.replace(' ', '_')
 
     def GetFormatExt(self):
-        """!Get format extension"""
+        """Get format extension"""
         return self._getExtension(self.GetFormat())
 
     def GetOptions(self):
-        """!Get creation options"""
+        """Get creation options"""
         if self._sourceType == 'file':
             options = self.fileWidgets['options'].GetValue()
         elif self._sourceType == 'dir':
@@ -1995,7 +1998,7 @@
         return options.strip()
 
     def OnHelp(self, event):
-        """!Show related manual page"""
+        """Show related manual page"""
         cmd = ''
         if self.dest:
             if self.ogr:
@@ -2017,7 +2020,7 @@
         RunCommand('g.manual', entry = cmd)
 
 class ProjSelect(wx.ComboBox):
-    """!Widget for selecting input raster/vector map used by
+    """Widget for selecting input raster/vector map used by
     r.proj/v.proj modules."""
     def __init__(self, parent, isRaster, id = wx.ID_ANY, size = globalvar.DIALOG_COMBOBOX_SIZE,
                  **kwargs):
@@ -2027,7 +2030,7 @@
         self.isRaster = isRaster
         
     def UpdateItems(self, dbase, location, mapset):
-        """!Update list of maps
+        """Update list of maps
         
         """
         if not dbase:
@@ -2062,9 +2065,9 @@
 class ElementSelect(wx.Choice):
     def __init__(self, parent, id = wx.ID_ANY, size = globalvar.DIALOG_COMBOBOX_SIZE, 
                  **kwargs):
-        """!Widget for selecting GIS element
+        """Widget for selecting GIS element
         
-        @param parent parent window
+        :param parent: parent window
         """
         super(ElementSelect, self).__init__(parent, id, size = size, 
                                             **kwargs)
@@ -2078,9 +2081,9 @@
         self.SetItems(self.valuesDesc)
 
     def GetValue(self, name):
-        """!Translate value
+        """Translate value
 
-        @param name element name
+        :param name: element name
         """
         idx = self.valuesDesc.index(name)
         if idx > -1:
@@ -2089,10 +2092,10 @@
 
 class OgrTypeSelect(wx.Panel):
     def __init__(self, parent, panel, **kwargs):
-        """!Widget to choose OGR feature type
+        """Widget to choose OGR feature type
 
-        @param parent parent window
-        @param panel wx.Panel instance used as parent window
+        :param parent: parent window
+        :param panel: wx.Panel instance used as parent window
         """
         wx.Panel.__init__(self, parent = panel, id = wx.ID_ANY)
         
@@ -2102,7 +2105,7 @@
         self._layout()
 
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         sizer = wx.BoxSizer(wx.HORIZONTAL)
         sizer.Add(item = wx.StaticText(parent = self,
                                        id = wx.ID_ANY,
@@ -2118,9 +2121,9 @@
         sizer.Fit(self)
 
     def GetType(self):
-        """!Get selected type as string
+        """Get selected type as string
 
-        @return feature type as string
+        :return: feature type as string
         """
         sel = self.ftype.GetSelection()
         if sel == 0:
@@ -2132,11 +2135,11 @@
 
 class CoordinatesSelect(wx.Panel):
     def __init__(self, parent, giface, multiple = False, **kwargs):
-        """!Widget to get coordinates from map window  by mouse click
+        """Widget to get coordinates from map window  by mouse click
         
-        @param parent parent window
-        @param giface GRASS interface
-        @param multiple - True if it is possible to insert more coordinates
+        :param parent: parent window
+        :param giface: GRASS interface
+        :param multiple: - True if it is possible to insert more coordinates
         """
         self._giface = giface
         self.multiple = multiple
@@ -2174,7 +2177,7 @@
         self.SetSizer(self.dialogSizer)
         
     def _onClick(self, event):
-        """!Button for interacitve inserting of coordinates clicked"""
+        """Button for interacitve inserting of coordinates clicked"""
 
         self.mapWin = self._giface.GetMapWindow()
         if self.buttonInsCoords.GetToggle() and self.mapWin:
@@ -2199,7 +2202,7 @@
             self.drawMapWin.UnregisterGraphicsToDraw(self.pointsToDraw)
 
     def _draw(self, delay):
-        """!Draws points representing inserted coordinates in mapwindow."""
+        """Draws points representing inserted coordinates in mapwindow."""
         if self.drawMapWin != self.mapWin:
             self.drawCleanUp()
             if self.mapWin:
@@ -2220,9 +2223,9 @@
                 self._giface.updateMap.emit(render=False, renderVector=False, delay=delay)
 
     def _getCoords(self):
-        """!Get list of coordinates.
+        """Get list of coordinates.
 
-        @return None if values are not valid 
+        :return: None if values are not valid 
         """
         if self.coordsField.GetValidator().Validate():
             return self.coordsField.GetValue().split(',')
@@ -2230,7 +2233,7 @@
         return None
 
     def _onMapClickHandler(self, event):
-        """!Gets coordinates from mapwindow"""
+        """Gets coordinates from mapwindow"""
         if event == "unregistered":
             return
         
@@ -2248,7 +2251,7 @@
         self._draw(delay=0)
 
     def OnClose(self):
-        """!Unregistrates _onMapClickHandler from mapWin"""
+        """Unregistrates _onMapClickHandler from mapWin"""
         self.drawCleanUp()
         self._giface.updateMap.emit(render=False, renderVector=False)
  
@@ -2262,11 +2265,11 @@
                                                     self._onMapClickHandler)
 
     def GetTextWin(self):
-        """!Get TextCtrl widget"""
+        """Get TextCtrl widget"""
         return self.coordsField
 
 class SignatureSelect(wx.ComboBox):
-    """!Widget for selecting signatures"""
+    """Widget for selecting signatures"""
     def __init__(self, parent, element, id = wx.ID_ANY, size = globalvar.DIALOG_GSELECT_SIZE, 
                  **kwargs):
         super(SignatureSelect, self).__init__(parent, id, size = size, 
@@ -2275,10 +2278,10 @@
         self.SetName("SignatureSelect")
 
     def Insert(self, group, subgroup = None):
-        """!Insert signatures for defined group/subgroup
+        """Insert signatures for defined group/subgroup
 
-        @param group group name (can be fully-qualified)
-        @param subgroup non fully-qualified name of subgroup
+        :param group: group name (can be fully-qualified)
+        :param subgroup: non fully-qualified name of subgroup
         """
         if not group:
             return
@@ -2304,7 +2307,7 @@
         self.SetValue('')
 
 class SeparatorSelect(wx.ComboBox):
-    """!Widget for selecting seperator"""
+    """Widget for selecting seperator"""
     def __init__(self, parent, id = wx.ID_ANY, size = globalvar.DIALOG_GSELECT_SIZE, 
                  **kwargs):
         super(SeparatorSelect, self).__init__(parent, id, size = size, 

Modified: grass/trunk/gui/wxpython/gui_core/mapdisp.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/mapdisp.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/mapdisp.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gui_core.mapdisp
 
 @brief Base classes for Map display window
@@ -34,7 +34,7 @@
 
 
 class MapFrameBase(wx.Frame):
-    """!Base class for map display window
+    """Base class for map display window
     
     Derived class must use (create and initialize) \c statusbarManager
     or override
@@ -59,18 +59,19 @@
     def __init__(self, parent = None, id = wx.ID_ANY, title = None,
                  style = wx.DEFAULT_FRAME_STYLE,
                  auimgr = None, name = None, **kwargs):
-        """!
+        """
 
-        @warning Use \a auimgr parameter only if you know what you are doing.
+        .. warning::
+            Use \a auimgr parameter only if you know what you are doing.
         
-        @param parent gui parent
-        @param id wx id
-        @param title window title
-        @param style \c wx.Frame style
-        @param toolbars array of activated toolbars, e.g. ['map', 'digit']
-        @param auimgr AUI manager (if \c None, wx.aui.AuiManager is used)
-        @param name frame name
-        @param kwargs arguments passed to \c wx.Frame
+        :param parent: gui parent
+        :param id: wx id
+        :param title: window title
+        :param style: \c wx.Frame style
+        :param toolbars: array of activated toolbars, e.g. ['map', 'digit']
+        :param auimgr: AUI manager (if \c None, wx.aui.AuiManager is used)
+        :param name: frame name
+        :param kwargs: arguments passed to \c wx.Frame
         """
         
         self.parent     = parent
@@ -101,7 +102,7 @@
         self._toolSwitcher.toggleToolChanged.connect(self._onToggleTool)
 
     def _initMap(self, Map):
-        """!Initialize map display, set dimensions and map region
+        """Initialize map display, set dimensions and map region
         """
         if not grass.find_program('g.region', '--help'):
             sys.exit(_("GRASS module '%s' not found. Unable to start map "
@@ -116,7 +117,7 @@
         self.GetWindow().UnregisterAllHandlers()
 
     def OnSize(self, event):
-        """!Adjust statusbar on changing size"""
+        """Adjust statusbar on changing size"""
         # reposition checkbox in statusbar
         self.StatusbarReposition()
         
@@ -127,22 +128,25 @@
         return self._toolSwitcher
 
     def SetProperty(self, name, value):
-        """!Sets property"""
+        """Sets property"""
         self.statusbarManager.SetProperty(name, value)
         
     def GetProperty(self, name):
-        """!Returns property"""
+        """Returns property"""
         return self.statusbarManager.GetProperty(name)
         
     def HasProperty(self, name):
-        """!Checks whether object has property"""
+        """Checks whether object has property"""
         return self.statusbarManager.HasProperty(name)
     
     def GetPPM(self):
-        """! Get pixel per meter
+        """Get pixel per meter
         
-        @todo now computed every time, is it necessary?
-        @todo enable user to specify ppm (and store it in UserSettings)
+        .. todo::
+            now computed every time, is it necessary?
+        
+        .. todo::
+            enable user to specify ppm (and store it in UserSettings)
         """
         # TODO: need to be fixed...
         ### screen X region problem
@@ -169,10 +173,10 @@
         return ppm
     
     def SetMapScale(self, value, map = None):
-        """! Set current map scale
+        """Set current map scale
         
-        @param value scale value (n if scale is 1:n)
-        @param map Map instance (if none self.Map is used)
+        :param value: scale value (n if scale is 1:n)
+        :param map: Map instance (if none self.Map is used)
         """
         if not map:
             map = self.Map
@@ -190,9 +194,9 @@
                                    region['e'], region['w'])
     
     def GetMapScale(self, map = None):
-        """! Get current map scale
+        """Get current map scale
         
-        @param map Map instance (if none self.Map is used)
+        :param map: Map instance (if none self.Map is used)
         """
         if not map:
             map = self.GetMap()
@@ -216,30 +220,30 @@
         return scale
         
     def GetProgressBar(self):
-        """!Returns progress bar
+        """Returns progress bar
         
         Progress bar can be used by other classes.
         """
         return self.statusbarManager.GetProgressBar()
         
     def GetMap(self):
-        """!Returns current map (renderer) instance"""
+        """Returns current map (renderer) instance"""
         raise NotImplementedError("GetMap")
 
     def GetWindow(self):
-        """!Returns current map window"""
+        """Returns current map window"""
         raise NotImplementedError("GetWindow")
 
     def GetWindows(self):
-        """!Returns list of map windows"""
+        """Returns list of map windows"""
         raise NotImplementedError("GetWindows")
         
     def GetMapToolbar(self):
-        """!Returns toolbar with zooming tools"""
+        """Returns toolbar with zooming tools"""
         raise NotImplementedError("GetMapToolbar")
        
     def GetToolbar(self, name):
-        """!Returns toolbar if exists else None.
+        """Returns toolbar if exists else None.
         
         Toolbars dictionary contains currently used toolbars only.
         """
@@ -249,12 +253,12 @@
         return None
        
     def StatusbarUpdate(self):
-        """!Update statusbar content"""
+        """Update statusbar content"""
         Debug.msg(5, "MapFrameBase.StatusbarUpdate()")
         self.statusbarManager.Update()
         
     def IsAutoRendered(self):
-        """!Check if auto-rendering is enabled"""
+        """Check if auto-rendering is enabled"""
         # TODO: this is now not the right place to access this attribute
         # TODO: add mapWindowProperties to init parameters
         # and pass the right object in the init of derived class?
@@ -262,7 +266,7 @@
         return self.mapWindowProperties.autoRender
         
     def CoordinatesChanged(self):
-        """!Shows current coordinates on statusbar.
+        """Shows current coordinates on statusbar.
         """
         # assuming that the first mode is coordinates
         # probably shold not be here but good solution is not available now
@@ -270,39 +274,39 @@
             self.statusbarManager.ShowItem('coordinates')
         
     def StatusbarReposition(self):
-        """!Reposition items in statusbar"""
+        """Reposition items in statusbar"""
         self.statusbarManager.Reposition()
         
     def StatusbarEnableLongHelp(self, enable = True):
-        """!Enable/disable toolbars long help"""
+        """Enable/disable toolbars long help"""
         for toolbar in self.toolbars.itervalues():
             toolbar.EnableLongHelp(enable)
         
     def IsStandalone(self):
-        """!Check if map frame is standalone"""
+        """Check if map frame is standalone"""
         raise NotImplementedError("IsStandalone")
    
     def OnRender(self, event):
-        """!Re-render map composition (each map layer)
+        """Re-render map composition (each map layer)
         """
         raise NotImplementedError("OnRender")
         
     def OnDraw(self, event):
-        """!Re-display current map composition
+        """Re-display current map composition
         """
         self.MapWindow.UpdateMap(render = False)
         
     def OnErase(self, event):
-        """!Erase the canvas
+        """Erase the canvas
         """
         self.MapWindow.EraseMap()
         
     def OnZoomIn(self, event):
-        """!Zoom in the map."""
+        """Zoom in the map."""
         self.MapWindow.SetModeZoomIn()
         
     def OnZoomOut(self, event):
-        """!Zoom out the map."""
+        """Zoom out the map."""
         self.MapWindow.SetModeZoomOut()
 
     def _setUpMapWindow(self, mapWindow):
@@ -317,40 +321,40 @@
         mapWindow.mouseMoving.connect(self.CoordinatesChanged)
 
     def OnPointer(self, event):
-        """!Sets mouse mode to pointer."""
+        """Sets mouse mode to pointer."""
         self.MapWindow.SetModePointer()
 
     def OnPan(self, event):
-        """!Panning, set mouse to drag
+        """Panning, set mouse to drag
         """
         self.MapWindow.SetModePan()
 
     def OnZoomBack(self, event):
-        """!Zoom last (previously stored position)
+        """Zoom last (previously stored position)
         """
         self.MapWindow.ZoomBack()
         
     def OnZoomToMap(self, event):
-        """!
+        """
         Set display extents to match selected raster (including NULLs)
         or vector map.
         """
         self.MapWindow.ZoomToMap(layers = self.Map.GetListOfLayers())
     
     def OnZoomToWind(self, event):
-        """!Set display geometry to match computational region
+        """Set display geometry to match computational region
         settings (set with g.region)
         """
         self.MapWindow.ZoomToWind()
         
     def OnZoomToDefault(self, event):
-        """!Set display geometry to match default region settings
+        """Set display geometry to match default region settings
         """
         self.MapWindow.ZoomToDefault()
 
 
 class SingleMapFrame(MapFrameBase):
-    """! Frame with one map window.
+    """Frame with one map window.
     
     It is base class for frames which needs only one map.
     
@@ -364,15 +368,15 @@
                  style = wx.DEFAULT_FRAME_STYLE,
                  Map = None,
                  auimgr = None, name = None, **kwargs):
-        """!
+        """
         
-        @param parent gui parent
-        @param id wx id
-        @param title window title
-        @param style \c wx.Frame style
-        @param Map instance of render.Map
-        @param name frame name
-        @param kwargs arguments passed to MapFrameBase
+        :param parent: gui parent
+        :param id: wx id
+        :param title: window title
+        :param style: \c wx.Frame style
+        :param map: instance of render.Map
+        :param name: frame name
+        :param kwargs: arguments passed to MapFrameBase
         """
 
         MapFrameBase.__init__(self, parent = parent, id = id, title = title,
@@ -387,19 +391,19 @@
         self._initMap(Map = self.Map)
         
     def GetMap(self):
-        """!Returns map (renderer) instance"""
+        """Returns map (renderer) instance"""
         return self.Map
 
     def GetWindow(self):
-        """!Returns map window"""
+        """Returns map window"""
         return self.MapWindow
         
     def GetWindows(self):
-        """!Returns list of map windows"""
+        """Returns list of map windows"""
         return [self.MapWindow]
 
     def OnRender(self, event):
-        """!Re-render map composition (each map layer)
+        """Re-render map composition (each map layer)
         """
         self.GetWindow().UpdateMap(render = True, renderVector = True)
         
@@ -408,7 +412,7 @@
         
 
 class DoubleMapFrame(MapFrameBase):
-    """! Frame with two map windows.
+    """Frame with two map windows.
     
     It is base class for frames which needs two maps.
     There is no primary and secondary map. Both maps are equal.
@@ -423,25 +427,26 @@
     @note To access maps use getters only
     (when using class or when writing class itself).
     
-    @todo Use it in GCP manager
-    (probably changes to both DoubleMapFrame and GCP MapFrame will be neccessary).
+    .. todo:
+        Use it in GCP manager (probably changes to both DoubleMapFrame
+        and GCP MapFrame will be neccessary).
     """
     def __init__(self, parent = None, id = wx.ID_ANY, title = None,
                  style = wx.DEFAULT_FRAME_STYLE,
                  firstMap = None, secondMap = None,
                  auimgr = None, name = None, **kwargs):
-        """!
+        """
         
         \a firstMap is set as active (by assign it to \c self.Map).
         Derived class should assging to \c self.MapWindow to make one
         map window current by dafault.
         
-        @param parent gui parent
-        @param id wx id
-        @param title window title
-        @param style \c wx.Frame style
-        @param name frame name
-        @param kwargs arguments passed to MapFrameBase
+        :param parent: gui parent
+        :param id: wx id
+        :param title: window title
+        :param style: \c wx.Frame style
+        :param name: frame name
+        :param kwargs: arguments passed to MapFrameBase
         """
         
         MapFrameBase.__init__(self, parent = parent, id = id, title = title,
@@ -468,25 +473,25 @@
         self.GetSecondWindow().UnregisterAllHandlers()
 
     def GetFirstMap(self):
-        """!Returns first Map instance
+        """Returns first Map instance
         """
         return self.firstMap
         
     def GetSecondMap(self):
-        """!Returns second Map instance
+        """Returns second Map instance
         """
         return self.secondMap
         
     def GetFirstWindow(self):
-        """!Get first map window"""
+        """Get first map window"""
         return self.firstMapWindow
     
     def GetSecondWindow(self):
-        """!Get second map window"""
+        """Get second map window"""
         return self.secondMapWindow
     
     def GetMap(self):
-        """!Returns current map (renderer) instance
+        """Returns current map (renderer) instance
         
         @note Use this method to access current map renderer.
         (It is not guarented that current map will be stored in
@@ -495,18 +500,18 @@
         return self.Map
     
     def GetWindow(self):
-        """!Returns current map window
+        """Returns current map window
         
-        @see GetMap()
+        :func:`GetMap()`
         """
         return self.MapWindow
     
     def GetWindows(self):
-        """!Return list of all windows"""
+        """Return list of all windows"""
         return [self.firstMapWindow, self.secondMapWindow]
     
     def ActivateFirstMap(self, event = None):
-        """!Make first Map and MapWindow active and (un)bind regions of the two Maps."""
+        """Make first Map and MapWindow active and (un)bind regions of the two Maps."""
         if self.MapWindow == self.firstMapWindow:
             return
 
@@ -520,7 +525,7 @@
             self.secondMapWindow.zoomChanged.disconnect(self.OnZoomChangedSecondMap)
 
     def ActivateSecondMap(self, event = None):
-        """!Make second Map and MapWindow active and (un)bind regions of the two Maps."""
+        """Make second Map and MapWindow active and (un)bind regions of the two Maps."""
         if self.MapWindow == self.secondMapWindow:
             return        
 
@@ -533,7 +538,7 @@
             self.firstMapWindow.zoomChanged.disconnect(self.OnZoomChangedFirstMap)
 
     def SetBindRegions(self, on):
-        """!Set or unset binding display regions."""
+        """Set or unset binding display regions."""
         self._bindRegions = on
 
         if on:
@@ -548,7 +553,7 @@
                 self.secondMapWindow.zoomChanged.disconnect(self.OnZoomChangedSecondMap)
 
     def OnZoomChangedFirstMap(self):
-        """!Display region of the first window (Map) changed.
+        """Display region of the first window (Map) changed.
 
         Synchronize the region of the second map and re-render it.
         This is the default implementation which can be overridden.
@@ -558,7 +563,7 @@
         self.Render(mapToRender = self.GetSecondWindow())
 
     def OnZoomChangedSecondMap(self):
-        """!Display region of the second window (Map) changed.
+        """Display region of the second window (Map) changed.
 
         Synchronize the region of the second map and re-render it.
         This is the default implementation which can be overridden.
@@ -568,38 +573,38 @@
         self.Render(mapToRender = self.GetFirstWindow())
 
     def OnZoomIn(self, event):
-        """!Zoom in the map."""
+        """Zoom in the map."""
         self.GetFirstWindow().SetModeZoomIn()
         self.GetSecondWindow().SetModeZoomIn()
 
     def OnZoomOut(self, event):
-        """!Zoom out the map."""
+        """Zoom out the map."""
         self.GetFirstWindow().SetModeZoomOut()
         self.GetSecondWindow().SetModeZoomOut()
         
     def OnPan(self, event):
-        """!Panning, set mouse to pan"""
+        """Panning, set mouse to pan"""
         self.GetFirstWindow().SetModePan()
         self.GetSecondWindow().SetModePan()
 
     def OnPointer(self, event):
-        """!Set pointer mode (dragging overlays)"""
+        """Set pointer mode (dragging overlays)"""
         self.GetFirstWindow().SetModePointer()
         self.GetSecondWindow().SetModePointer()
 
     def OnQuery(self, event):
-        """!Set query mode"""
+        """Set query mode"""
         self.GetFirstWindow().SetModeQuery()
         self.GetSecondWindow().SetModeQuery()
 
     def OnRender(self, event):
-        """!Re-render map composition (each map layer)
+        """Re-render map composition (each map layer)
         """
         self.Render(mapToRender = self.GetFirstWindow())
         self.Render(mapToRender = self.GetSecondWindow())
     
     def Render(self, mapToRender):
-        """!Re-render map composition"""
+        """Re-render map composition"""
         mapToRender.UpdateMap(render = True,
                               renderVector = mapToRender == self.GetFirstWindow())
         
@@ -607,23 +612,23 @@
         self.StatusbarUpdate()
         
     def OnErase(self, event):
-        """!Erase the canvas
+        """Erase the canvas
         """
         self.Erase(mapToErase = self.GetFirstWindow())
         self.Erase(mapToErase = self.GetSecondWindow())
         
     def Erase(self, mapToErase):
-        """!Erase the canvas
+        """Erase the canvas
         """
         mapToErase.EraseMap()
         
     def OnDraw(self, event):
-        """!Re-display current map composition
+        """Re-display current map composition
         """
         self.Draw(mapToDraw = self.GetFirstWindow())
         self.Draw(mapToDraw = self.GetSecondWindow())
         
     def Draw(self, mapToDraw):
-        """!Re-display current map composition
+        """Re-display current map composition
         """
         mapToDraw.UpdateMap(render = False)

Modified: grass/trunk/gui/wxpython/gui_core/menu.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/menu.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/menu.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gui_core.menu
 
 @brief Menu classes for wxGUI
@@ -33,7 +33,7 @@
 
 class Menu(wx.MenuBar):
     def __init__(self, parent, model):
-        """!Creates menubar"""
+        """Creates menubar"""
         wx.MenuBar.__init__(self)
         self.parent = parent
         self.model = model
@@ -44,7 +44,7 @@
             self.Append(self._createMenu(child), child.label)
         
     def _createMenu(self, node):
-        """!Creates menu"""
+        """Creates menu"""
         menu = wx.Menu()
         for child in node.children:
             if child.children:
@@ -63,7 +63,7 @@
 
     def _createMenuItem(self, menu, label, description, handler, command, keywords,
                         shortcut = '', icon = '', wxId = wx.ID_ANY, kind = wx.ITEM_NORMAL):
-        """!Creates menu items
+        """Creates menu items
         There are three menu styles (menu item text styles).
         1 -- label only, 2 -- label and cmd name, 3 -- cmd name only
         """
@@ -100,13 +100,13 @@
         self.parent.Bind(wx.EVT_MENU, rhandler, menuItem)
         
     def GetData(self):
-        """!Get menu data"""
+        """Get menu data"""
         return self.model
     
     def GetCmd(self):
-        """!Get dictionary of commands (key is id)
+        """Get dictionary of commands (key is id)
 
-        @return dictionary of commands
+        :return: dictionary of commands
         """
         return self.menucmd
         
@@ -125,10 +125,10 @@
         event.Skip()
 
 class SearchModuleWindow(wx.Panel):
-    """!Menu tree and search widget for searching modules.
+    """Menu tree and search widget for searching modules.
     
-        Signal:
-            showNotification - attribute 'message'
+    Signal:
+        showNotification - attribute 'message'
     """
     def __init__(self, parent, model, id = wx.ID_ANY, **kwargs):
         self.parent = parent # LayerManager
@@ -170,7 +170,7 @@
         self._search.SetFocus()
         
     def _layout(self):
-        """!Do dialog layout"""
+        """Do dialog layout"""
         sizer = wx.BoxSizer(wx.VERTICAL)
         
         # body
@@ -204,9 +204,9 @@
         self.Layout()
         
     def Run(self, module=None):
-        """!Run selected command.
+        """Run selected command.
         
-        @param module module (represented by tree node)
+        :param module: module (represented by tree node)
         """
         if module is None:
             if not self._tree.GetSelected():
@@ -225,13 +225,13 @@
             eval(handler)(event=None)
 
     def OnKeyUp(self, event):
-        """!Key or key combination pressed"""
+        """Key or key combination pressed"""
         if event.ControlDown() and \
                 event.GetKeyCode() in (wx.WXK_RETURN, wx.WXK_NUMPAD_ENTER):
             self.Run()
         
     def OnItemSelected(self, node):
-        """!Item selected"""      
+        """Item selected"""    
         data = node.data
         if not data or 'command' not in data:
             return

Modified: grass/trunk/gui/wxpython/gui_core/preferences.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/preferences.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/preferences.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gui_core.preferences
 
 @brief User preferences dialog
@@ -53,7 +53,7 @@
 from core.debug       import Debug
 
 class PreferencesBaseDialog(wx.Dialog):
-    """!Base preferences dialog"""
+    """Base preferences dialog"""
     def __init__(self, parent, giface, settings, title = _("User settings"),
                  size = (500, 475),
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER):
@@ -99,7 +99,7 @@
         self._layout()
         
     def _layout(self):
-        """!Layout window"""
+        """Layout window"""
         # sizers
         btnSizer = wx.BoxSizer(wx.HORIZONTAL)
         btnSizer.Add(item = self.btnDefault, proportion = 1,
@@ -121,7 +121,7 @@
         mainSizer.Fit(self)
         
     def OnDefault(self, event):
-        """!Button 'Set to default' pressed"""
+        """Button 'Set to default' pressed"""
         self.settings.userSettings = copy.deepcopy(self.settings.defaultSettings)
         
         # update widgets
@@ -146,7 +146,7 @@
                 value = win.SetValue(value)
         
     def OnApply(self, event):
-        """!Button 'Apply' pressed
+        """Button 'Apply' pressed
         Emits signal settingsChanged.
         """
         if self._updateSettings():
@@ -158,11 +158,11 @@
         self.Hide()
         
     def OnCancel(self, event):
-        """!Button 'Cancel' pressed"""
+        """Button 'Cancel' pressed"""
         self.Close()
     
     def OnSave(self, event):
-        """!Button 'Save' pressed
+        """Button 'Save' pressed
         Emits signal settingsChanged.
         """
         if self._updateSettings():
@@ -181,7 +181,7 @@
             self.Close()
 
     def _updateSettings(self):
-        """!Update user settings"""
+        """Update user settings"""
         for item in self.winId.keys():
             try:
                 group, key, subkey = item.split(':')
@@ -221,7 +221,7 @@
 
 
 class PreferencesDialog(PreferencesBaseDialog):
-    """!User preferences dialog"""
+    """User preferences dialog"""
     def __init__(self, parent, giface, title = _("GUI Settings"),
                  settings = UserSettings):
         PreferencesBaseDialog.__init__(self, parent = parent, giface = giface, title = title,
@@ -240,7 +240,7 @@
         self.SetSize(self.size)
         
     def _createGeneralPage(self, notebook):
-        """!Create notebook page for general settings"""
+        """Create notebook page for general settings"""
         panel = SP.ScrolledPanel(parent = notebook, id = wx.ID_ANY)
         panel.SetupScrolling(scroll_x = False, scroll_y = True)
         notebook.AddPage(page = panel, text = _("General"))
@@ -366,7 +366,7 @@
         return panel
 
     def _createAppearancePage(self, notebook):
-        """!Create notebook page for display settings"""
+        """Create notebook page for display settings"""
         panel = SP.ScrolledPanel(parent = notebook, id = wx.ID_ANY)
         panel.SetupScrolling(scroll_x = False, scroll_y = True)
         notebook.AddPage(page = panel, text = _("Appearance"))
@@ -563,7 +563,7 @@
         return panel
     
     def _createDisplayPage(self, notebook):
-        """!Create notebook page for display settings"""
+        """Create notebook page for display settings"""
    
         panel = SP.ScrolledPanel(parent = notebook, id = wx.ID_ANY)
         panel.SetupScrolling(scroll_x = False, scroll_y = True)
@@ -796,7 +796,7 @@
         return panel
 
     def _createCmdPage(self, notebook):
-        """!Create notebook page for commad dialog settings"""
+        """Create notebook page for commad dialog settings"""
         panel = SP.ScrolledPanel(parent = notebook, id = wx.ID_ANY)
         panel.SetupScrolling(scroll_x = False, scroll_y = True)
         notebook.AddPage(page = panel, text = _("Modules"))
@@ -876,7 +876,7 @@
         return panel
 
     def _createLayersPage(self, notebook):
-        """!Create notebook page for layer settings"""
+        """Create notebook page for layer settings"""
         panel = SP.ScrolledPanel(parent = notebook, id = wx.ID_ANY)
         panel.SetupScrolling(scroll_x = False, scroll_y = True)
         notebook.AddPage(page = panel, text = _("Layers"))
@@ -1047,7 +1047,7 @@
         return panel
 
     def _createAttributeManagerPage(self, notebook):
-        """!Create notebook page for 'Attribute Table Manager' settings"""
+        """Create notebook page for 'Attribute Table Manager' settings"""
         panel = SP.ScrolledPanel(parent = notebook, id = wx.ID_ANY)
         panel.SetupScrolling(scroll_x = False, scroll_y = True)
         notebook.AddPage(page = panel, text = _("Attributes"))
@@ -1186,7 +1186,7 @@
         return panel
 
     def _createProjectionPage(self, notebook):
-        """!Create notebook page for workspace settings"""
+        """Create notebook page for workspace settings"""
         panel = SP.ScrolledPanel(parent = notebook, id = wx.ID_ANY)
         panel.SetupScrolling(scroll_x = False, scroll_y = True)
         notebook.AddPage(page = panel, text = _("Projection"))
@@ -1364,7 +1364,7 @@
         return True
 
     def OnCheckColorTable(self, event):
-        """!Set/unset default color table"""
+        """Set/unset default color table"""
         win = self.FindWindowById(self.winId['rasterLayer:colorTable:selection'])
         if event.IsChecked():
             win.Enable()
@@ -1372,7 +1372,7 @@
             win.Enable(False)
         
     def OnLoadEpsgCodes(self, event):
-        """!Load EPSG codes from the file"""
+        """Load EPSG codes from the file"""
         win = self.FindWindowById(self.winId['projection:statusbar:projFile'])
         path = win.GetValue()
         wx.BeginBusyCursor()
@@ -1405,7 +1405,7 @@
             win.SetValue(self.epsgCodeDict[code][1].replace('<>', '').strip())
     
     def OnSetEpsgCode(self, event):
-        """!EPSG code selected"""
+        """EPSG code selected"""
         winCode = self.FindWindowById(event.GetId())
         win = self.FindWindowById(self.winId['projection:statusbar:proj4'])
         if not self.epsgCodeDict:
@@ -1492,7 +1492,7 @@
         event.Skip()
 
     def OnSetSymbol(self, event):
-        """!Opens symbol dialog"""
+        """Opens symbol dialog"""
         winId = self.winId['vectorLayer:point:symbol']
         label = self.FindWindowById(winId)
         bb = self.FindWindowByName('symbolButton')
@@ -1504,7 +1504,7 @@
             bb.SetBitmapLabel(wx.Bitmap(img + '.png'))
 
     def OnEnableWheelZoom(self, event):
-        """!Enable/disable wheel zoom mode control"""
+        """Enable/disable wheel zoom mode control"""
         choiceId = self.winId['display:mouseWheelZoom:selection']
         choice = self.FindWindowById(choiceId)
         if choice.GetSelection() == 2:
@@ -1647,7 +1647,8 @@
     
     def GetFonts(self):
         """
-        parses fonts directory or fretypecap file to get a list of fonts for the listbox
+        parses fonts directory or fretypecap file to get a list of fonts
+        for the listbox
         """
         fontlist = []
         ret = RunCommand('d.font',
@@ -1667,7 +1668,7 @@
         return fontlist
 
 class MapsetAccess(wx.Dialog):
-    """!Controls setting options and displaying/hiding map overlay
+    """Controls setting options and displaying/hiding map overlay
     decorations
     """
     def __init__(self, parent, id = wx.ID_ANY,
@@ -1732,7 +1733,7 @@
         self.SetMinSize(size)
         
     def GetMapsets(self):
-        """!Get list of checked mapsets"""
+        """Get list of checked mapsets"""
         ms = []
         i = 0
         for mset in self.all_mapsets_ordered:
@@ -1743,7 +1744,7 @@
         return ms
 
 class CheckListMapset(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.CheckListCtrlMixin):
-    """!List of mapset/owner/group"""
+    """List of mapset/owner/group"""
     def __init__(self, parent, log = None):
         self.parent = parent
         
@@ -1756,7 +1757,7 @@
         listmix.ListCtrlAutoWidthMixin.__init__(self)
 
     def LoadData(self):
-        """!Load data into list"""
+        """Load data into list"""
         self.InsertColumn(0, _('Mapset'))
         self.InsertColumn(1, _('Owner'))
         ### self.InsertColumn(2, _('Group'))
@@ -1781,7 +1782,7 @@
         ### self.SetColumnWidth(col = 1, width = wx.LIST_AUTOSIZE)
         
     def OnCheckItem(self, index, flag):
-        """!Mapset checked/unchecked"""
+        """Mapset checked/unchecked"""
         mapset = self.parent.all_mapsets_ordered[index]
         if mapset == self.parent.curr_mapset:
             self.CheckItem(index, True)

Modified: grass/trunk/gui/wxpython/gui_core/prompt.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/prompt.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/prompt.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gui_core.prompt
 
 @brief wxGUI command prompt
@@ -37,7 +37,7 @@
 
 
 class GPrompt(object):
-    """!Abstract class for interactive wxGUI prompt
+    """Abstract class for interactive wxGUI prompt
     
     Signal promptRunCmd - emitted to run command from prompt
                         - attribute 'cmd'
@@ -70,7 +70,7 @@
         self.commands = list()
         
     def _readHistory(self):
-        """!Get list of commands from history file"""
+        """Get list of commands from history file"""
         hist = list()
         env = grass.gisenv()
         try:
@@ -91,7 +91,7 @@
         return hist
 
     def _getListOfMaps(self):
-        """!Get list of maps"""
+        """Get list of maps"""
         result = dict()
         result['raster'] = grass.list_strings('rast')
         result['vector'] = grass.list_strings('vect')
@@ -99,9 +99,9 @@
         return result
     
     def _runCmd(self, cmdString):
-        """!Run command
+        """Run command
         
-        @param cmdString command to run (given as a string)
+        :param str cmdString: command to run
         """
         if not cmdString:
             return
@@ -123,16 +123,16 @@
         self.ShowStatusText('')
         
     def GetCommands(self):
-        """!Get list of launched commands"""
+        """Get list of launched commands"""
         return self.commands
     
     def ClearCommands(self):
-        """!Clear list of commands"""
+        """Clear list of commands"""
         del self.commands[:]
 
 
 class GPromptSTC(GPrompt, wx.stc.StyledTextCtrl):
-    """!Styled wxGUI prompt with autocomplete and calltips"""    
+    """Styled wxGUI prompt with autocomplete and calltips"""  
     def __init__(self, parent, menuModel, margin = False):
         GPrompt.__init__(self, parent = parent, menuModel = menuModel)
         wx.stc.StyledTextCtrl.__init__(self, self.panel, id = wx.ID_ANY)
@@ -186,14 +186,14 @@
         self.commandSelected = Signal('GPromptSTC.commandSelected')
         
     def OnTextSelectionChanged(self, event):
-        """!Copy selected text to clipboard and skip event.
+        """Copy selected text to clipboard and skip event.
         The same function is in GStc class (goutput.py).
         """
         wx.CallAfter(self.Copy)
         event.Skip()
         
     def OnItemChanged(self, event):
-        """!Change text in statusbar 
+        """Change text in statusbar 
         if the item selection in the auto-completion list is changed"""
         # list of commands
         if self.toComplete['entity'] == 'command':
@@ -234,7 +234,7 @@
             self.ShowStatusText('')
             
     def OnItemSelected(self, event):
-        """!Item selected from the list"""
+        """Item selected from the list"""
         lastWord = self.GetWordLeft()
         # to insert selection correctly if selected word partly matches written text
         match = difflib.SequenceMatcher(None, event.GetText(), lastWord)
@@ -264,7 +264,7 @@
                 self.cmdDesc = None
 
     def OnKillFocus(self, event):
-        """!Hides autocomplete"""
+        """Hides autocomplete"""
         # hide autocomplete
         if self.AutoCompActive():
             self.AutoCompCancel()
@@ -279,9 +279,9 @@
         self.SetFocus()
 
     def UpdateCmdHistory(self, cmd):
-        """!Update command history
+        """Update command history
         
-        @param cmd command given as a string
+        :param cmd: command given as a string
         """
         # add command to history    
         self.cmdbuffer.append(cmd)
@@ -292,7 +292,7 @@
         self.cmdindex = len(self.cmdbuffer)
         
     def EntityToComplete(self):
-        """!Determines which part of command (flags, parameters) should
+        """Determines which part of command (flags, parameters) should
         be completed at current cursor position"""
         entry = self.GetTextLeft()
         toComplete = dict(cmd=None, entity=None)
@@ -347,11 +347,11 @@
         return toComplete
     
     def GetWordLeft(self, withDelimiter = False, ignoredDelimiter = None):
-        """!Get word left from current cursor position. The beginning
+        """Get word left from current cursor position. The beginning
         of the word is given by space or chars: .,-= 
         
-        @param withDelimiter returns the word with the initial delimeter
-        @param ignoredDelimiter finds the word ignoring certain delimeter
+        :param withDelimiter: returns the word with the initial delimeter
+        :param ignoredDelimiter: finds the word ignoring certain delimeter
         """
         textLeft = self.GetTextLeft()
         
@@ -368,13 +368,13 @@
         return min(parts, key=lambda x: len(x))
          
     def ShowList(self):
-        """!Show sorted auto-completion list if it is not empty"""
+        """Show sorted auto-completion list if it is not empty"""
         if len(self.autoCompList) > 0:
             self.autoCompList.sort()
             self.AutoCompShow(lenEntered = 0, itemList = ' '.join(self.autoCompList))    
 
     def OnKeyPressed(self, event):
-        """!Key pressed capture special treatment for tabulator to show help"""
+        """Key pressed capture special treatment for tabulator to show help"""
         pos = self.GetCurrentPos()
         if event.GetKeyCode() == wx.WXK_TAB:
             # show GRASS command calltips (to hide press 'ESC')
@@ -431,9 +431,10 @@
             event.Skip()
 
     def OnChar(self, event):
-        """!Key char capture for autocompletion, calltips, and command history
+        """Key char capture for autocompletion, calltips, and command history
 
-        @todo event.ControlDown() for manual autocomplete
+        .. todo::
+            event.ControlDown() for manual autocomplete
         """
         # keycodes used: "." = 46, "=" = 61, "-" = 45 
         pos = self.GetCurrentPos()
@@ -581,11 +582,11 @@
             event.Skip()
 
     def ShowStatusText(self, text):
-        """!Requests showing of notification, e.g. showing in a statusbar."""
+        """Requests showing of notification, e.g. showing in a statusbar."""
         self.showNotification.emit(message=text)
         
     def GetTextLeft(self):
-        """!Returns all text left of the caret"""
+        """Returns all text left of the caret"""
         pos = self.GetCurrentPos()
         self.HomeExtend()
         entry = self.GetSelectedText()
@@ -594,12 +595,12 @@
         return entry
     
     def OnDestroy(self, event):
-        """!The clipboard contents can be preserved after
+        """The clipboard contents can be preserved after
         the app has exited"""
         wx.TheClipboard.Flush()
         event.Skip()
 
     def OnCmdErase(self, event):
-        """!Erase command prompt"""
+        """Erase command prompt"""
         self.Home()
         self.DelLineRight()

Modified: grass/trunk/gui/wxpython/gui_core/pystc.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/pystc.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/pystc.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gui_core.pystc
 
 @brief Python styled text control widget
@@ -23,11 +23,11 @@
 
 
 class PyStc(stc.StyledTextCtrl):
-    """!Styled Python output (see gmodeler::frame::PythonPanel for
+    """Styled Python output (see gmodeler::frame::PythonPanel for
     usage)
 
     Based on StyledTextCtrl_2 from wxPython demo
-    """    
+    """  
     def __init__(self, parent, id = wx.ID_ANY, statusbar = None):
         stc.StyledTextCtrl.__init__(self, parent, id)
         
@@ -126,9 +126,10 @@
         self.SetCaretForeground("BLUE")
         
     def OnKeyPressed(self, event):
-        """!Key pressed
+        """Key pressed
         
-        @todo implement code completion (see wxPython demo)
+        .. todo::
+            implement code completion (see wxPython demo)
         """
         if not self.modified:
             self.modified = True

Modified: grass/trunk/gui/wxpython/gui_core/query.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/query.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/query.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gui_core.query
 
 @brief wxGUI query dialog
@@ -91,7 +91,7 @@
         self._copyText(text)
 
     def ShowContextMenu(self, node):
-        """!Show context menu.
+        """Show context menu.
         
         Menu for copying distinguishes single and multiple selection.
         """
@@ -134,9 +134,9 @@
             self.Unbind(wx.EVT_MENU, id=id)
 
     def _onRedirect(self, redirect):
-        """!Emits instructions to redirect query results.
+        """Emits instructions to redirect query results.
         
-        @param redirect True to start redirecting, False to stop        
+        :param redirect: True to start redirecting, False to stop        
         """
         if redirect:
             self.redirectOutput.emit(output=_("Query results:"), style='cmd')
@@ -157,7 +157,7 @@
         return label
 
     def _copyText(self, text):
-        """!Helper function for copying"""
+        """Helper function for copying"""
         if wx.TheClipboard.Open():
             do = wx.TextDataObject()
             do.SetText(text)
@@ -172,12 +172,12 @@
 
 
 def QueryTreeBuilder(data, column):
-    """!Builds tree model from query results.
+    """Builds tree model from query results.
     
-    @param data query results as a dictionary
-    @param column column name
+    :param data: query results as a dictionary
+    :param column: column name
     
-    @returns tree model
+    :return: tree model
     """
     def addNode(parent, data, model):
         for k, v in data.iteritems():
@@ -196,10 +196,10 @@
 
 
 def printResults(model, valueCol):
-    """!Print all results to string.
+    """Print all results to string.
     
-    @param model results tree model
-    @param valueCol column name with value to be printed
+    :param model: results tree model
+    :param valueCol: column name with value to be printed
     """
     def printTree(node, textList, valueCol, indent=0):
         if node.data.get(valueCol, '') or node.children:
@@ -214,7 +214,7 @@
 
 
 def PrepareQueryResults(coordinates, result):
-    """!Prepare query results as a Query dialog input.
+    """Prepare query results as a Query dialog input.
 
     Adds coordinates, improves vector results tree structure.
     """

Modified: grass/trunk/gui/wxpython/gui_core/simplelmgr.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/simplelmgr.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/simplelmgr.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-"""!
+"""
 @package gui_core.simplelmgr
 
 @brief GUI class for simple layer management.
@@ -42,7 +42,7 @@
 
 
 class SimpleLayerManager(wx.Panel):
-    """!Simple layer manager class provides similar functionality to
+    """Simple layer manager class provides similar functionality to
     Layertree, but it's just list, not tree."""
     def __init__(self, parent, layerList,
                  lmgrStyle=SIMPLE_LMGR_RASTER | SIMPLE_LMGR_VECTOR | SIMPLE_LMGR_TB_LEFT,
@@ -110,7 +110,7 @@
         self._auimgr.Update()
 
     def _selectionChanged(self):
-        """!Selection was changed externally,
+        """Selection was changed externally,
         updates selection info in layers."""
         if self._blockSelectionChanged:
             return
@@ -119,7 +119,7 @@
             layer.Select(i in selected)
 
     def OnContextMenu(self, event):
-        """!Show context menu.
+        """Show context menu.
 
         So far offers only copying layer list to clipboard
         """
@@ -144,7 +144,7 @@
         event.Skip()
 
     def _copyText(self, text):
-        """!Helper function for copying
+        """Helper function for copying
 
         TODO: move to utils?        
         """
@@ -155,7 +155,7 @@
             wx.TheClipboard.Close()
 
     def OnLayerChecked(self, event):
-        """!Layer was (un)checked, update layer's info."""
+        """Layer was (un)checked, update layer's info."""
         checkedIdxs = self._checkList.GetChecked()
         for i, layer in enumerate(self._layerList):
             if i in checkedIdxs and not layer.IsActive():
@@ -168,7 +168,7 @@
         event.Skip()
 
     def OnAddRaster(self, event):
-        """!Opens d.rast dialog and adds layer.
+        """Opens d.rast dialog and adds layer.
         Dummy layer is added first."""
         cmd = ['d.rast']
         layer = self.AddRaster(name='', cmd=cmd, hidden=True, dialog=None)
@@ -177,7 +177,7 @@
         event.Skip()
 
     def OnAddVector(self, event):
-        """!Opens d.vect dialog and adds layer.
+        """Opens d.vect dialog and adds layer.
         Dummy layer is added first."""
         cmd = ['d.vect']
 
@@ -187,7 +187,7 @@
         event.Skip()
 
     def OnAddRast3d(self, event):
-        """!Opens d.rast3d dialog and adds layer.
+        """Opens d.rast3d dialog and adds layer.
         Dummy layer is added first."""
         cmd = ['d.rast3d']
         layer = self.AddRast3d(name='', cmd=cmd, hidden=True, dialog=None)
@@ -196,7 +196,7 @@
         event.Skip()
 
     def OnAddRGB(self, event):
-        """!Opens d.rgb dialog and adds layer.
+        """Opens d.rgb dialog and adds layer.
         Dummy layer is added first."""
         cmd = ['d.rgb']
         layer = self.AddRGB(name='', cmd=cmd, hidden=True, dialog=None)
@@ -205,7 +205,7 @@
         event.Skip()
 
     def OnRemove(self, event):
-        """!Removes selected layers from list."""
+        """Removes selected layers from list."""
         layers = self._layerList.GetSelectedLayers(activeOnly=False)
         for layer in layers:
             self.layerRemoved.emit(index=self._layerList.GetLayerIndex(layer), layer=layer)
@@ -215,7 +215,7 @@
         event.Skip()
 
     def OnLayerUp(self, event):
-        """!Moves selected layers one step up.
+        """Moves selected layers one step up.
 
         Note: not completely correct for multiple layers."""
         layers = self._layerList.GetSelectedLayers()
@@ -231,7 +231,7 @@
         event.Skip()
 
     def OnLayerDown(self, event):
-        """!Moves selected layers one step down.
+        """Moves selected layers one step down.
 
         Note: not completely correct for multiple layers."""
         layers = self._layerList.GetSelectedLayers()
@@ -255,13 +255,13 @@
         event.Skip()
 
     def _layerChangeProperties(self, layer):
-        """!Opens new module dialog or recycles it."""
+        """Opens new module dialog or recycles it."""
         GUI(parent=self, giface=None,
             modal=self._modal).ParseCommand(cmd=layer.cmd,
                                             completed=(self.GetOptData, layer, ''))
 
     def OnLayerChangeOpacity(self, event):
-        """!Opacity of a layer is changing."""
+        """Opacity of a layer is changing."""
         layers = self._layerList.GetSelectedLayers()
         if not layers or len(layers) > 1:
             return
@@ -278,14 +278,14 @@
         event.Skip()
 
     def _setLayerOpacity(self, layer, value):
-        """!Sets layer's opacity.'"""
+        """Sets layer's opacity.'"""
         layer.opacity = value 
         self._update()
         self.opacityChanged.emit(index=self._layerList.GetLayerIndex(layer), layer=layer)
         self.anyChange.emit()
 
     def _update(self):
-        """!Updates checklistbox according to layerList structure."""
+        """Updates checklistbox according to layerList structure."""
         items = []
         active = []
         selected = []
@@ -315,7 +315,7 @@
                 self._checkList.Deselect(i)
 
     def GetOptData(self, dcmd, layer, params, propwin):
-        """!Handler for module dialogs."""
+        """Handler for module dialogs."""
         if dcmd:
             layer.cmd = dcmd
             layer.selected = True
@@ -340,35 +340,35 @@
             self.anyChange.emit()
 
     def AddRaster(self, name, cmd, hidden, dialog):
-        """!Ads new raster layer."""
+        """Ads new raster layer."""
         layer = self._layerList.AddNewLayer(name=name, mapType='rast',
                                             active=True,
                                             cmd=cmd, hidden=hidden)
         return layer
 
     def AddRast3d(self, name, cmd, hidden, dialog):
-        """!Ads new raster3d layer."""
+        """Ads new raster3d layer."""
         layer = self._layerList.AddNewLayer(name=name, mapType='rast3d',
                                             active=True,
                                             cmd=cmd, hidden=hidden)
         return layer
 
     def AddVector(self, name, cmd, hidden, dialog):
-        """!Ads new vector layer."""
+        """Ads new vector layer."""
         layer = self._layerList.AddNewLayer(name=name, mapType='vect',
                                             active=True,
                                             cmd=cmd, hidden=hidden)
         return layer
 
     def AddRGB(self, name, cmd, hidden, dialog):
-        """!Ads new vector layer."""
+        """Ads new vector layer."""
         layer = self._layerList.AddNewLayer(name=name, mapType='rgb',
                                             active=True,
                                             cmd=cmd, hidden=hidden)
         return layer
 
     def GetLayerInfo(self, layer, key):
-        """!Just for compatibility, should be removed in the future"""
+        """Just for compatibility, should be removed in the future"""
         value = getattr(layer, key)
         # hack to return empty list, required in OnCancel in forms
         # not sure why it should be empty
@@ -377,18 +377,18 @@
         return value
 
     def Delete(self, layer):
-        """!Just for compatibility, should be removed in the future"""
+        """Just for compatibility, should be removed in the future"""
         self._layerList.RemoveLayer(layer)
 
 
 class SimpleLmgrToolbar(BaseToolbar):
-    """!Toolbar of simple layer manager.
+    """Toolbar of simple layer manager.
 
     Style of the toolbar can be changed (horizontal,
     vertical, which map types to include).
     """
     def __init__(self, parent, lmgrStyle):
-        """!Toolbar constructor
+        """Toolbar constructor
         """
         self._style = lmgrStyle
         if lmgrStyle & (SIMPLE_LMGR_TB_LEFT | SIMPLE_LMGR_TB_RIGHT):
@@ -403,7 +403,7 @@
         self.Realize()
 
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         data = [('edit', icons['edit'],
                  self.parent.OnLayerChangeProperties),
                  ('remove', icons['remove'],

Modified: grass/trunk/gui/wxpython/gui_core/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/toolbars.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/toolbars.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gui_core.toolbars
 
 @brief Base classes toolbar widgets
@@ -85,11 +85,11 @@
     }
     
 class BaseToolbar(wx.ToolBar):
-    """!Abstract toolbar class.
+    """Abstract toolbar class.
     
     Following code shows how to create new basic toolbar:
 
-    @code
+    
         class MyToolbar(BaseToolbar):
             def __init__(self, parent):
                 BaseToolbar.__init__(self, parent)
@@ -100,7 +100,7 @@
                 return self._getToolbarData((("help", Icons["help"],
                                               self.parent.OnHelp),
                                               ))
-    @endcode
+    
     """
     def __init__(self, parent, toolSwitcher=None, style=wx.NO_BORDER|wx.TB_HORIZONTAL):
         self.parent = parent
@@ -115,7 +115,7 @@
         self.handlers = {}
         
     def InitToolbar(self, toolData):
-        """!Initialize toolbar, add tools to the toolbar
+        """Initialize toolbar, add tools to the toolbar
         """
         for tool in toolData:
             self.CreateTool(*tool)
@@ -123,15 +123,15 @@
         self._data = toolData
         
     def _toolbarData(self):
-        """!Toolbar data (virtual)"""
+        """Toolbar data (virtual)"""
         return None
     
     def CreateTool(self, label, bitmap, kind,
                    shortHelp, longHelp, handler, pos = -1):
-        """!Add tool to the toolbar
+        """Add tool to the toolbar
         
-        @param pos if -1 add tool, if > 0 insert at given pos
-        @return id of tool
+        :param pos: if -1 add tool, if > 0 insert at given pos
+        :return: id of tool
         """
         bmpDisabled = wx.NullBitmap
         tool = -1
@@ -156,9 +156,9 @@
         return tool
 
     def EnableLongHelp(self, enable = True):
-        """!Enable/disable long help
+        """Enable/disable long help
         
-        @param enable True for enable otherwise disable
+        :param enable: True for enable otherwise disable
         """
         for tool in self._data:
             if tool[0] == '': # separator
@@ -170,7 +170,7 @@
                 self.SetToolLongHelp(vars(self)[tool[0]], "")
         
     def OnTool(self, event):
-        """!Tool selected
+        """Tool selected
         """
         if self.toolSwitcher:
             Debug.msg(3, "BaseToolbar.OnTool(): id = %s" % event.GetId())
@@ -184,23 +184,24 @@
         self.handlers[id](event=None)
 
     def SelectDefault(self):
-        """!Select default tool"""
+        """Select default tool"""
         self.SelectTool(self._default)
         
     def FixSize(self, width):
-        """!Fix toolbar width on Windows
+        """Fix toolbar width on Windows
             
-        @todo Determine why combobox causes problems here
+        .. todo::
+            Determine why combobox causes problems here
         """
         if platform.system() == 'Windows':
             size = self.GetBestSize()
             self.SetSize((size[0] + width, size[1]))
 
     def Enable(self, tool, enable = True):
-        """!Enable/Disable defined tool
+        """Enable/Disable defined tool
         
-        @param tool name
-        @param enable True to enable otherwise disable tool
+        :param tool: name
+        :param enable: True to enable otherwise disable tool
         """
         try:
             id = getattr(self, tool)
@@ -213,9 +214,9 @@
         self.EnableTool(id, enable)
 
     def EnableAll(self, enable = True):
-        """!Enable/Disable all tools
+        """Enable/Disable all tools
         
-        @param enable True to enable otherwise disable tool
+        :param enable: True to enable otherwise disable tool
         """
         for item in self._toolbarData():
             if not item[0]:
@@ -223,7 +224,7 @@
             self.Enable(item[0], enable)
         
     def _getToolbarData(self, data):
-        """!Define tool
+        """Define tool
         """
         retData = list()
         for args in data:
@@ -231,7 +232,7 @@
         return retData
 
     def _defineTool(self, name = None, icon = None, handler = None, item = wx.ITEM_NORMAL, pos = -1):
-        """!Define tool
+        """Define tool
         """
         if name:
             return (name, icon.GetBitmap(),
@@ -240,7 +241,7 @@
         return ("", "", "", "", "", "") # separator
 
     def _onMenu(self, data):
-        """!Toolbar pop-up menu"""
+        """Toolbar pop-up menu"""
         menu = wx.Menu()
         
         for icon, handler in data:
@@ -253,7 +254,7 @@
         menu.Destroy()
 
     def CreateSelectionButton(self, tooltip = _("Select graphics tool")):
-        """!Add button to toolbar for selection of graphics drawing mode.
+        """Add button to toolbar for selection of graphics drawing mode.
 
         Button must be custom (not toolbar tool) to set smaller width.
         """
@@ -269,7 +270,7 @@
         return button
 
 class ToolSwitcher:
-    """!Class handling switching tools in toolbar and custom toggle buttons."""
+    """Class handling switching tools in toolbar and custom toggle buttons."""
     def __init__(self):
         self._groups = defaultdict(lambda: defaultdict(list))
         self._toolsGroups = defaultdict(list)
@@ -278,29 +279,29 @@
         self.toggleToolChanged = Signal('ToolSwitcher.toggleToolChanged')
 
     def AddToolToGroup(self, group, toolbar, tool):
-        """!Adds tool from toolbar to group of exclusive tools.
+        """Adds tool from toolbar to group of exclusive tools.
         
-        @param group name of group (e.g. 'mouseUse')
-        @param toolbar instance of toolbar
-        @param tool id of a tool from the toolbar
+        :param group: name of group (e.g. 'mouseUse')
+        :param toolbar: instance of toolbar
+        :param tool: id of a tool from the toolbar
         """
         self._groups[group][toolbar].append(tool)
         self._toolsGroups[tool].append(group)
         
     def AddCustomToolToGroup(self, group, btnId, toggleHandler):
-        """!Adds custom tool from to group of exclusive tools (some toggle button).
+        """Adds custom tool from to group of exclusive tools (some toggle button).
         
-        @param group name of group (e.g. 'mouseUse')
-        @param btnId id of a tool (typically button)
-        @param toggleHandler handler to be called to switch the button
+        :param group: name of group (e.g. 'mouseUse')
+        :param btnId: id of a tool (typically button)
+        :param toggleHandler: handler to be called to switch the button
         """
         self._groups[group]['custom'].append((btnId, toggleHandler))
         self._toolsGroups[btnId].append(group)
        
     def RemoveCustomToolFromGroup(self, tool):
-        """!Removes custom tool from group.
+        """Removes custom tool from group.
 
-        @param tool id of the button
+        :param tool: id of the button
         """
         if not tool in self._toolsGroups:
             return
@@ -310,13 +311,13 @@
                 in self._groups[group]['custom'] if bid != tool]
         
     def RemoveToolbarFromGroup(self, group, toolbar):
-        """!Removes toolbar from group.
+        """Removes toolbar from group.
         
         Before toolbar is destroyed, it must be removed from group, too.
         Otherwise we can expect some DeadObject errors.
         
-        @param group name of group (e.g. 'mouseUse')
-        @param toolbar instance of toolbar
+        :param group: name of group (e.g. 'mouseUse')
+        :param toolbar: instance of toolbar
         """
         for tb in self._groups[group]:
             if tb == toolbar:
@@ -324,9 +325,9 @@
                 break
 
     def ToolChanged(self, tool):
-        """!When any tool/button is pressed, other tools from group must be unchecked.
+        """When any tool/button is pressed, other tools from group must be unchecked.
         
-        @param tool id of a tool/button
+        :param tool: id of a tool/button
         """
         for group in self._toolsGroups[tool]:
             for tb in self._groups[group]:

Modified: grass/trunk/gui/wxpython/gui_core/treeview.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/treeview.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/treeview.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gui_core.treeview
 
 @brief tree view for dislaying tree model (used for search tree)
@@ -32,7 +32,7 @@
 
 
 class AbstractTreeViewMixin(VirtualTree):
-    """!Abstract tree view class for displaying tree model.
+    """Abstract tree view class for displaying tree model.
 
     Concrete implementation must inherit both this mixin class and a wx tree widget.
     More functionality and signals can be added if needed.
@@ -58,18 +58,18 @@
                                            self._emitSignal(evt.GetItem(), self.contextMenu))
 
     def SetModel(self, model):
-        """!Set tree model and refresh.
+        """Set tree model and refresh.
         
-        @param model tree model        
+        :param model: tree model        
         """
         self._model = model
         self.RefreshItems()
 
     def OnGetItemText(self, index, column=0):
-        """!Overridden method necessary to communicate with tree model.
+        """Overridden method necessary to communicate with tree model.
 
-        @param index index as explained in VirtualTree doc
-        @param column column index if applicable
+        :param index: index as explained in VirtualTree doc
+        :param column: column index if applicable
         """
         node = self._model.GetNodeByIndex(index)
         # remove & because of & needed in menu (&Files)
@@ -77,13 +77,13 @@
         return label
 
     def OnGetChildrenCount(self, index):
-        """!Overridden method necessary to communicate with tree model."""
+        """Overridden method necessary to communicate with tree model."""
         return len(self._model.GetChildrenByIndex(index))
 
     def GetSelected(self):
-        """!Get currently selected items.
+        """Get currently selected items.
 
-        @return list of nodes representing selected items (can be empty)
+        :return: list of nodes representing selected items (can be empty)
         """
         selected = []
         for sel in self.GetSelections():
@@ -92,10 +92,10 @@
         return selected
 
     def Select(self, node, select=True):
-        """!Select items.
+        """Select items.
 
-        @param node node representing item
-        @param select True/False to select/deselect
+        :param node: node representing item
+        :param select: True/False to select/deselect
         """
         index = self._model.GetIndexOfNode(node)
         for i in range(len(index))[1:]:
@@ -106,10 +106,10 @@
         self.SelectItem(item, select)
 
     def _emitSignal(self, item, signal):
-        """!Helper method for emitting signals.
+        """Helper method for emitting signals.
 
-        @param item tree item
-        @param signal signal to be emitted
+        :param item: tree item
+        :param signal: signal to be emitted
         """
         if not item or not item.IsOk():
             return
@@ -119,13 +119,13 @@
 
 
 class TreeView(AbstractTreeViewMixin, wx.TreeCtrl):
-    """!Tree view class inheriting from wx.TreeCtrl"""
+    """Tree view class inheriting from wx.TreeCtrl"""
     def __init__(self, model, parent, *args, **kw):
         super(TreeView, self).__init__(parent=parent, model=model, *args, **kw)
         self.RefreshItems()
 
 class CTreeView(AbstractTreeViewMixin, CT.CustomTreeCtrl):
-    """!Tree view class inheriting from wx.TreeCtrl"""
+    """Tree view class inheriting from wx.TreeCtrl"""
     def __init__(self, model, parent, **kw):
         if hasAgw:
             style = 'agwStyle'
@@ -152,10 +152,10 @@
         self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnRightClick)
 
     def OnGetItemText(self, index, column=0):
-        """!Overridden method necessary to communicate with tree model.
+        """Overridden method necessary to communicate with tree model.
 
-        @param index index as explained in VirtualTree doc
-        @param column column index if applicable
+        :param index: index as explained in VirtualTree doc
+        :param column: column index if applicable
         """
         node = self._model.GetNodeByIndex(index)
         # remove & because of & needed in menu (&Files)
@@ -166,7 +166,7 @@
             return label
 
     def OnRightClick(self, event):
-        """!Select item on right click.
+        """Select item on right click.
         
         With multiple selection we don't want to deselect all items        
         """
@@ -176,7 +176,7 @@
         event.Skip()
 
 class TreeFrame(wx.Frame):
-    """!Frame for testing purposes only."""
+    """Frame for testing purposes only."""
     def __init__(self, model=None):
         wx.Frame.__init__(self, None, title='Test tree')
 

Modified: grass/trunk/gui/wxpython/gui_core/widgets.py
===================================================================
--- grass/trunk/gui/wxpython/gui_core/widgets.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/gui_core/widgets.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package gui_core.widgets
 
 @brief Core GUI widgets
@@ -65,7 +65,7 @@
 
 
 class NotebookController:
-    """!Provides handling of notebook page names.
+    """Provides handling of notebook page names.
 
     Translates page names to page indices.
     Class is aggregated in notebook subclasses.
@@ -74,9 +74,9 @@
     and other methods can be delegated by @c __getattr__.
     """
     def __init__(self, classObject, widget):
-        """!        
-        @param classObject notebook class name (object, i.e. FlatNotebook)
-        @param widget notebook instance
+        """       
+        :param classObject: notebook class name (object, i.e. FlatNotebook)
+        :param widget: notebook instance
         """
         self.notebookPages = {}
         self.classObject = classObject
@@ -85,11 +85,11 @@
         self.BindPageChanged()
 
     def BindPageChanged(self):
-        """!Binds page changed event."""
+        """Binds page changed event."""
         self.widget.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnRemoveHighlight)
 
     def AddPage(self, **kwargs):
-        """!Add a new page
+        """Add a new page
         """
         if 'name' in kwargs:
             self.notebookPages[kwargs['name']] = kwargs['page']
@@ -98,7 +98,7 @@
         self.classObject.AddPage(self.widget, **kwargs)
 
     def InsertPage(self, **kwargs):
-        """!Insert a new page
+        """Insert a new page
         """
         if 'name' in kwargs:
             self.notebookPages[kwargs['name']] = kwargs['page']
@@ -106,10 +106,10 @@
         self.classObject.InsertPage(self.widget, **kwargs)
 
     def DeletePage(self, page):
-        """!Delete page
+        """Delete page
 
-        @param page name
-        @return True if page was deleted, False if not exists
+        :param page: name
+        :return: True if page was deleted, False if not exists
         """
         delPageIndex = self.GetPageIndexByName(page)
         if delPageIndex != -1:
@@ -121,10 +121,10 @@
             return False
 
     def RemovePage(self, page):
-        """!Delete page without deleting the associated window.
+        """Delete page without deleting the associated window.
 
-        @param page name
-        @return True if page was deleted, False if not exists
+        :param page: name
+        :return: True if page was deleted, False if not exists
         """
         delPageIndex = self.GetPageIndexByName(page)
         if delPageIndex != -1:
@@ -136,9 +136,9 @@
             return False
 
     def SetSelectionByName(self, page):
-        """!Set active notebook page.
+        """Set active notebook page.
 
-        @param page name, eg. 'layers', 'output', 'search', 'pyshell', 'nviz'
+        :param page: name, eg. 'layers', 'output', 'search', 'pyshell', 'nviz'
         (depends on concrete notebook instance)
         """
         idx = self.GetPageIndexByName(page)
@@ -148,15 +148,15 @@
             self.RemoveHighlight(idx)
 
     def OnRemoveHighlight(self, event):
-        """!Highlighted tab name should be removed."""
+        """Highlighted tab name should be removed."""
         page = event.GetSelection()
         self.RemoveHighlight(page)
         event.Skip()
 
     def RemoveHighlight(self, page):
-        """!Removes highlight string from notebook tab name if necessary.
+        """Removes highlight string from notebook tab name if necessary.
 
-        @param page index
+        :param page: index
         """
         text = self.classObject.GetPageText(self.widget, page)
         if text.endswith(self.highlightedTextEnd):
@@ -164,9 +164,9 @@
             self.classObject.SetPageText(self.widget, page, text)
 
     def GetPageIndexByName(self, page):
-        """!Get notebook page index
+        """Get notebook page index
         
-        @param page name
+        :param page: name
         """
         if page not in self.notebookPages:
             return -1
@@ -187,17 +187,17 @@
             self.classObject.SetPageText(self.widget, index, text)
 
     def SetPageImage(self, page, index):
-        """!Sets image index for page
+        """Sets image index for page
 
-        @param page page name
-        @param index image index (in wx.ImageList)
+        :param page: page name
+        :param index: image index (in wx.ImageList)
         """
         pageIndex = self.GetPageIndexByName(page)
         self.classObject.SetPageImage(self.widget, pageIndex, index)
 
 
 class FlatNotebookController(NotebookController):
-    """!Controller specialized for FN.FlatNotebook subclasses"""
+    """Controller specialized for FN.FlatNotebook subclasses"""
     def __init__(self, classObject, widget):
         NotebookController.__init__(self, classObject, widget)
 
@@ -205,9 +205,9 @@
         self.widget.Bind(FN.EVT_FLATNOTEBOOK_PAGE_CHANGED, self.OnRemoveHighlight)
 
     def GetPageIndexByName(self, page):
-        """!Get notebook page index
+        """Get notebook page index
         
-        @param page name
+        :param page: name
         """
         if page not in self.notebookPages:
             return -1
@@ -216,7 +216,7 @@
 
 
 class GNotebook(FN.FlatNotebook):
-    """!Generic notebook widget.
+    """Generic notebook widget.
 
     Enables advanced style settings.
     Problems with hidden tabs and does not respect system colors (native look).
@@ -230,30 +230,30 @@
         self.controller = FlatNotebookController(classObject = FN.FlatNotebook, widget = self)
 
     def AddPage(self, **kwargs):
-        """! @copydoc NotebookController::AddPage()"""
+        """@copydoc NotebookController::AddPage()"""
         self.controller.AddPage(**kwargs)
 
     def InsertPage(self, **kwargs):
-        """! @copydoc NotebookController::InsertPage()"""
+        """@copydoc NotebookController::InsertPage()"""
         self.controller.InsertPage(**kwargs)
 
     def DeletePage(self, page):
-        """! @copydoc NotebookController::DeletePage()"""
+        """@copydoc NotebookController::DeletePage()"""
         return self.controller.DeletePage(page)
 
     def RemovePage(self, page):
-        """! @copydoc NotebookController::RemovePage()"""
+        """@copydoc NotebookController::RemovePage()"""
         return self.controller.RemovePage(page)
 
     def SetPageImage(self, page, index):
-        """!Does nothing because we don't want images for this style"""
+        """Does nothing because we don't want images for this style"""
         pass
 
     def __getattr__(self, name):
         return getattr(self.controller, name)
 
 class FormNotebook(wx.Notebook):
-    """!Notebook widget.
+    """Notebook widget.
 
     Respects native look.
     """
@@ -262,23 +262,23 @@
         self.controller = NotebookController(classObject = wx.Notebook, widget = self)
 
     def AddPage(self, **kwargs):
-        """!@copydoc NotebookController::AddPage()"""
+        """@copydoc NotebookController::AddPage()"""
         self.controller.AddPage(**kwargs)
 
     def InsertPage(self, **kwargs):
-        """! @copydoc NotebookController::InsertPage()"""
+        """@copydoc NotebookController::InsertPage()"""
         self.controller.InsertPage(**kwargs)
 
     def DeletePage(self, page):
-        """ @copydoc NotebookController::DeletePage()"""
+        """@copydoc NotebookController::DeletePage()"""
         return self.controller.DeletePage(page)
 
     def RemovePage(self, page):
-        """ @copydoc NotebookController::RemovePage()"""
+        """@copydoc NotebookController::RemovePage()"""
         return self.controller.RemovePage(page)
 
     def SetPageImage(self, page, index):
-        """! @copydoc NotebookController::SetPageImage()"""
+        """@copydoc NotebookController::SetPageImage()"""
         return self.controller.SetPageImage(page, index)
 
     def __getattr__(self, name):
@@ -286,7 +286,7 @@
 
 
 class FormListbook(wx.Listbook):
-    """!Notebook widget.
+    """Notebook widget.
 
     Respects native look.
     """
@@ -295,23 +295,23 @@
         self.controller = NotebookController(classObject = wx.Listbook, widget = self)
             
     def AddPage(self, **kwargs):
-        """!@copydoc NotebookController::AddPage()"""
+        """@copydoc NotebookController::AddPage()"""
         self.controller.AddPage(**kwargs)
 
     def InsertPage(self, **kwargs):
-        """! @copydoc NotebookController::InsertPage()"""
+        """@copydoc NotebookController::InsertPage()"""
         self.controller.InsertPage(**kwargs)
 
     def DeletePage(self, page):
-        """ @copydoc NotebookController::DeletePage()"""
+        """@copydoc NotebookController::DeletePage()"""
         return self.controller.DeletePage(page)
 
     def RemovePage(self, page):
-        """ @copydoc NotebookController::RemovePage()"""
+        """@copydoc NotebookController::RemovePage()"""
         return self.controller.RemovePage(page)
 
     def SetPageImage(self, page, index):
-        """! @copydoc NotebookController::SetPageImage()"""
+        """@copydoc NotebookController::SetPageImage()"""
         return self.controller.SetPageImage(page, index)
 
     def __getattr__(self, name):
@@ -319,7 +319,7 @@
 
 
 class ScrolledPanel(SP.ScrolledPanel):
-    """!Custom ScrolledPanel to avoid strange behaviour concerning focus"""
+    """Custom ScrolledPanel to avoid strange behaviour concerning focus"""
     def __init__(self, parent, style = wx.TAB_TRAVERSAL):
         SP.ScrolledPanel.__init__(self, parent = parent, id = wx.ID_ANY, style = style)
 
@@ -327,7 +327,7 @@
         pass
         
 class NumTextCtrl(wx.TextCtrl):
-    """!Class derived from wx.TextCtrl for numerical values only"""
+    """Class derived from wx.TextCtrl for numerical values only"""
     def __init__(self, parent,  **kwargs):
 ##        self.precision = kwargs.pop('prec')
         wx.TextCtrl.__init__(self, parent = parent,
@@ -351,7 +351,7 @@
         pass
    
 class FloatSlider(wx.Slider):
-    """!Class derived from wx.Slider for floats"""
+    """Class derived from wx.Slider for floats"""
     def __init__(self, **kwargs):
         Debug.msg(1, "FloatSlider.__init__()")
         wx.Slider.__init__(self, **kwargs)
@@ -391,13 +391,13 @@
         
         
 class SymbolButton(BitmapTextButton):
-    """!Button with symbol and label."""
+    """Button with symbol and label."""
     def __init__(self, parent, usage, label, **kwargs):
-        """!Constructor
+        """Constructor
         
-        @param parent parent (usually wx.Panel)
-        @param usage determines usage and picture
-        @param label displayed label
+        :param parent: parent (usually wx.Panel)
+        :param usage: determines usage and picture
+        :param label: displayed label
         """
         size = (15, 15)
         buffer = wx.EmptyBitmap(*size)
@@ -424,30 +424,30 @@
         dc.SelectObject(wx.NullBitmap)
         
     def DrawRecord(self, dc, size):
-        """!Draw record symbol"""
+        """Draw record symbol"""
         dc.SetBrush(wx.Brush(wx.Colour(255, 0, 0)))
         dc.DrawCircle(size[0]/2, size[1] / 2, size[0] / 2)
         
     def DrawStop(self, dc, size):
-        """!Draw stop symbol"""
+        """Draw stop symbol"""
         dc.SetBrush(wx.Brush(wx.Colour(50, 50, 50)))
         dc.DrawRectangle(0, 0, size[0], size[1])
         
     def DrawPlay(self, dc, size):
-        """!Draw play symbol"""
+        """Draw play symbol"""
         dc.SetBrush(wx.Brush(wx.Colour(0, 255, 0)))
         points = (wx.Point(0, 0), wx.Point(0, size[1]), wx.Point(size[0], size[1] / 2))
         dc.DrawPolygon(points)
         
     def DrawPause(self, dc, size):
-        """!Draw pause symbol"""
+        """Draw pause symbol"""
         dc.SetBrush(wx.Brush(wx.Colour(50, 50, 50)))
         dc.DrawRectangle(0, 0, 2 * size[0] / 5, size[1])
         dc.DrawRectangle(3 * size[0] / 5, 0, 2 * size[0] / 5, size[1])
 
 
 class StaticWrapText(GenStaticText):
-    """!A Static Text widget that wraps its text to fit parents width,
+    """A Static Text widget that wraps its text to fit parents width,
     enlarging its height if necessary."""
 
     def __init__(self, parent, id=wx.ID_ANY, label='', margin=0, *args, **kwds):
@@ -458,7 +458,7 @@
         self.Bind(wx.EVT_SIZE, self.OnSize)
 
     def DoGetBestSize(self):
-        """!Overriden method which reports widget's best size."""
+        """Overriden method which reports widget's best size."""
         if not self.init:
             self._updateLabel()
             self.init = True
@@ -474,7 +474,7 @@
         event.Skip()
 
     def _updateLabel(self):
-        """!Calculates size of wrapped label"""
+        """Calculates size of wrapped label"""
         parent = self.GetParent()
         newLabel = wordwrap(text=self._initialLabel, width=parent.GetSize()[0],
                             dc=wx.ClientDC(parent), breakLongWords=True, margin=self._margin)
@@ -492,7 +492,7 @@
         self.Bind(wx.EVT_TEXT, self.OnText) 
 
     def OnText(self, event):
-        """!Do validation"""
+        """Do validation"""
         self.Validate()
         
         event.Skip()
@@ -535,7 +535,7 @@
         return True # Prevent wxDialog from complaining.
 
 class CoordinatesValidator(BaseValidator):
-    """!Validator for coordinates input (list of floats separated by comma)"""
+    """Validator for coordinates input (list of floats separated by comma)"""
 
     def __init__(self):
         BaseValidator.__init__(self)
@@ -563,31 +563,31 @@
         return True
 
     def Clone(self):
-        """!Clone validator"""
+        """Clone validator"""
         return CoordinatesValidator()
 
 class IntegerValidator(BaseValidator):
-    """!Validator for floating-point input"""
+    """Validator for floating-point input"""
     def __init__(self):
         BaseValidator.__init__(self)
         self.type = int
         
     def Clone(self):
-        """!Clone validator"""
+        """Clone validator"""
         return IntegerValidator()
 
 class FloatValidator(BaseValidator):
-    """!Validator for floating-point input"""
+    """Validator for floating-point input"""
     def __init__(self):
         BaseValidator.__init__(self)
         self.type = float
         
     def Clone(self):
-        """!Clone validator"""
+        """Clone validator"""
         return FloatValidator()
 
 class NTCValidator(wx.PyValidator):
-    """!validates input in textctrls, taken from wxpython demo"""
+    """validates input in textctrls, taken from wxpython demo"""
     def __init__(self, flag = None):
         wx.PyValidator.__init__(self)
         self.flag = flag
@@ -611,24 +611,24 @@
         return  
 
 class SimpleValidator(wx.PyValidator):
-    """ This validator is used to ensure that the user has entered something
+    """This validator is used to ensure that the user has entered something
         into the text object editor dialog's text field.
     """
     def __init__(self, callback):
-        """ Standard constructor.
+        """Standard constructor.
         """
         wx.PyValidator.__init__(self)
         self.callback = callback
 
     def Clone(self):
-        """ Standard cloner.
+        """Standard cloner.
 
         Note that every validator must implement the Clone() method.
         """
         return SimpleValidator(self.callback)
 
     def Validate(self, win):
-        """ Validate the contents of the given text control.
+        """Validate the contents of the given text control.
         """
         ctrl = self.GetWindow()
         text = ctrl.GetValue()
@@ -639,46 +639,48 @@
             return True
 
     def TransferToWindow(self):
-        """ Transfer data from validator to window.
+        """Transfer data from validator to window.
 
-        The default implementation returns False, indicating that an error
-        occurred.  We simply return True, as we don't do any data transfer.
+        The default implementation returns False, indicating that an
+        error occurred.  We simply return True, as we don't do any data
+        transfer.
         """
         return True # Prevent wxDialog from complaining.
 
 
     def TransferFromWindow(self):
-        """ Transfer data from window to validator.
+        """Transfer data from window to validator.
 
-            The default implementation returns False, indicating that an error
-            occurred.  We simply return True, as we don't do any data transfer.
+        The default implementation returns False, indicating that an
+        error occurred.  We simply return True, as we don't do any data
+        transfer.
         """
         return True # Prevent wxDialog from complaining.
 
 
 class GenericValidator(wx.PyValidator):
-    """ This validator checks condition and calls callback
+    """This validator checks condition and calls callback
     in case the condition is not fulfilled.
     """
     def __init__(self, condition, callback):
-        """ Standard constructor.
+        """Standard constructor.
 
-        @param condition function which accepts string value and returns T/F
-        @param callback function which is called when condition is not fulfilled
+        :param condition: function which accepts string value and returns T/F
+        :param callback: function which is called when condition is not fulfilled
         """
         wx.PyValidator.__init__(self)
         self._condition = condition
         self._callback = callback
 
     def Clone(self):
-        """ Standard cloner.
+        """Standard cloner.
 
         Note that every validator must implement the Clone() method.
         """
         return GenericValidator(self._condition, self._callback)
 
     def Validate(self, win):
-        """ Validate the contents of the given text control.
+        """Validate the contents of the given text control.
         """
         ctrl = self.GetWindow()
         text = ctrl.GetValue()
@@ -689,32 +691,32 @@
             return True
 
     def TransferToWindow(self):
-        """ Transfer data from validator to window.
+        """Transfer data from validator to window.
         """
         return True # Prevent wxDialog from complaining.
 
 
     def TransferFromWindow(self):
-        """ Transfer data from window to validator.
+        """Transfer data from window to validator.
         """
         return True # Prevent wxDialog from complaining.
 
 
 class SingleSymbolPanel(wx.Panel):
-    """!Panel for displaying one symbol.
+    """Panel for displaying one symbol.
     
     Changes background when selected. Assumes that parent will catch
     events emitted on mouse click. Used in gui_core::dialog::SymbolDialog.
     """
     def __init__(self, parent, symbolPath):
-        """!Panel constructor
+        """Panel constructor
         
         Signal symbolSelectionChanged - symbol selected
                                       - attribute 'name' (symbol name)
                                       - attribute 'doubleClick' (underlying cause)
 
-        @param parent parent (gui_core::dialog::SymbolDialog)
-        @param symbolPath absolute path to symbol
+        :param parent: parent (gui_core::dialog::SymbolDialog)
+        :param symbolPath: absolute path to symbol
         """
         self.symbolSelectionChanged = Signal('SingleSymbolPanel.symbolSelectionChanged')
 
@@ -739,7 +741,7 @@
         self.sBmp.Bind(wx.EVT_LEFT_DCLICK, self.OnDoubleClick)
         
     def OnLeftDown(self, event):
-        """!Panel selected, background changes"""
+        """Panel selected, background changes"""
         self.selected = True
         self.SetBackgroundColour(self.selectColor)
         self.Refresh()
@@ -751,19 +753,19 @@
         self.symbolSelectionChanged.emit(name=self.GetName(), doubleClick=True)
         
     def Deselect(self):
-        """!Panel deselected, background changes back to default"""
+        """Panel deselected, background changes back to default"""
         self.selected = False
         self.SetBackgroundColour(self.deselectColor)
         self.Refresh()
         
     def Select(self):
-        """!Select panel, no event emitted"""
+        """Select panel, no event emitted"""
         self.selected = True
         self.SetBackgroundColour(self.selectColor)
         self.Refresh()
         
 class GListCtrl(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.CheckListCtrlMixin):
-    """!Generic ListCtrl with popup menu to select/deselect all
+    """Generic ListCtrl with popup menu to select/deselect all
     items"""
     def __init__(self, parent):
         self.parent = parent
@@ -779,11 +781,11 @@
         self.Bind(wx.EVT_RIGHT_UP,            self.OnPopupMenu) #wxGTK
 
     def LoadData(self):
-        """!Load data into list"""
+        """Load data into list"""
         pass
 
     def OnPopupMenu(self, event):
-        """!Show popup menu"""
+        """Show popup menu"""
         if self.GetItemCount() < 1:
             return
         
@@ -803,7 +805,7 @@
         menu.Destroy()
 
     def OnSelectAll(self, event):
-        """!Select all items"""
+        """Select all items"""
         item = -1
         
         while True:
@@ -815,7 +817,7 @@
         event.Skip()
         
     def OnSelectNone(self, event):
-        """!Deselect items"""
+        """Deselect items"""
         item = -1
         
         while True:
@@ -828,7 +830,7 @@
 
 
 class SearchModuleWidget(wx.Panel):
-    """!Search module widget (used e.g. in SearchModuleWindow)
+    """Search module widget (used e.g. in SearchModuleWindow)
         
     Signals:
         moduleSelected - attribute 'name' is module name
@@ -877,7 +879,7 @@
         self._layout()
 
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         sizer = wx.BoxSizer(wx.HORIZONTAL)
         boxSizer = wx.BoxSizer(wx.VERTICAL)
 
@@ -901,7 +903,7 @@
         sizer.Fit(self)
 
     def OnKeyUp(self, event):
-        """!Key or key combination pressed"""
+        """Key or key combination pressed"""
         if event.GetKeyCode() in (wx.WXK_RETURN, wx.WXK_NUMPAD_ENTER) and not event.ControlDown():
             if self._results:
                 self._resultIndex += 1
@@ -911,7 +913,7 @@
         event.Skip()
 
     def OnSearchModule(self, event):
-        """!Search module by keywords or description"""
+        """Search module by keywords or description"""
         value = self._search.GetValue()
         if len(value) <= 2:
             if len(value) == 0: # reset
@@ -935,10 +937,10 @@
         event.Skip()
 
     def _searchModule(self, keys, value):
-        """!Search modules by keys
+        """Search modules by keys
 
-        @param keys list of keys
-        @param value patter to match
+        :param keys: list of keys
+        :param value: patter to match
         """
         nodes = set()
         for key in keys:
@@ -954,7 +956,7 @@
         return commands
         
     def OnSelectModule(self, event):
-        """!Module selected from choice, update command prompt"""
+        """Module selected from choice, update command prompt"""
         cmd  = self._searchChoice.GetStringSelection()
         self.moduleSelected.emit(name = cmd)
 
@@ -965,13 +967,13 @@
                     break
 
     def Reset(self):
-        """!Reset widget"""
+        """Reset widget"""
         self._search.SetValue('')
         if self._showTip:
             self._searchTip.SetLabel('')
 
 class ManageSettingsWidget(wx.Panel):
-    """!Widget which allows loading and saving settings into file."""
+    """Widget which allows loading and saving settings into file."""
     def __init__(self, parent, settingsFile):
         """
         Signals:
@@ -983,7 +985,7 @@
                            - attribute 'settings' is dict with loaded settings
                              {nameofsetting : settingdata, ....}
 
-        @param settingsFile - path to file, where settings will be saved and loaded from
+        :param settingsFile: path to file, where settings will be saved and loaded from
         """
         self.settingsFile = settingsFile
 
@@ -1038,7 +1040,7 @@
                           border = 5)
 
     def OnSettingsChanged(self, event):
-        """!Load named settings"""
+        """Load named settings"""
         name = event.GetString()
         if name not in self._settings:
             GError(parent = self,
@@ -1049,11 +1051,11 @@
         self.settingsChanged.emit(data=data)
 
     def GetSettings(self):
-        """!Load named settings"""
+        """Load named settings"""
         return self._settings.copy()
        
     def OnSettingsSave(self, event):
-        """!Save settings"""
+        """Save settings"""
         dlg = wx.TextEntryDialog(parent = self,
                                  message = _("Name:"),
                                  caption = _("Save settings"))
@@ -1086,35 +1088,35 @@
         self.data_to_save = []
  
     def _saveSettings(self):
-        """!Save settings and reload if successful"""
+        """Save settings and reload if successful"""
         if self._writeSettings() == 0:
             self._settings = self._loadSettings()
 
     def SetDataToSave(self, data):
-        """!Set data for setting, which will be saved.
+        """Set data for setting, which will be saved.
 
-        @param data - list of strings, which will be saved
+        :param data: - list of strings, which will be saved
         """
         self.data_to_save = data
 
     def SetSettings(self, settings):
-        """!Set settings
+        """Set settings
 
-        @param settings - dict with all settigs {nameofsetting : settingdata, ....}
+        :param settings: - dict with all settigs {nameofsetting : settingdata, ....}
         """
         self._settings = settings
         self._saveSettings()
 
     def AddSettings(self, settings):
-        """!Add settings
+        """Add settings
 
-        @param settings - dict with all settigs {nameofsetting : settingdata, ....}
+        :param settings: - dict with all settigs {nameofsetting : settingdata, ....}
         """
         self._settings = dict(self._settings.items() + settings.items())
         self._saveSettings()
 
     def OnSettingsDelete(self, event):
-        """!Save settings
+        """Save settings
         """
         name = self.settingsChoice.GetStringSelection()
         if not name:
@@ -1127,10 +1129,10 @@
             self._settings = self._loadSettings()
         
     def _writeSettings(self):
-        """!Save settings into the file
+        """Save settings into the file
 
-        @return 0 on success
-        @return -1 on failure
+        :return: 0 on success
+        :return: -1 on failure
         """
         try:
             fd = open(self.settingsFile, 'w')
@@ -1160,12 +1162,12 @@
         return 0
 
     def _loadSettings(self):
-        """!Load settings from the file
+        """Load settings from the file
 
         The file is defined by self.SettingsFile.
         
-        @return parsed dict
-        @return empty dict on error
+        :return: parsed dict
+        :return: empty dict on error
         """
 
         data = dict()
@@ -1200,8 +1202,8 @@
 
         The file is defined by self.SettingsFile.
         
-        @return parsed dict
-        @return empty dict on error
+        :return: parsed dict
+        :return: empty dict on error
         """
         data = dict()
         
@@ -1247,12 +1249,12 @@
         return data
 
     def _loadSettings_v1(self, fd_lines):
-        """!Load settings from the file in format version 1.0 (backward compatibility)
+        """Load settings from the file in format version 1.0 (backward compatibility)
 
         The file is defined by self.SettingsFile.
         
-        @return parsed dict
-        @return empty dict on error
+        :return: parsed dict
+        :return: empty dict on error
         """
         data = dict()
       
@@ -1270,12 +1272,12 @@
         return data
 
 class PictureComboBox(wx.combo.OwnerDrawnComboBox):
-    """!Abstract class of ComboBox with pictures.
+    """Abstract class of ComboBox with pictures.
     
         Derived class has to specify has to specify _getPath method.
     """
     def OnDrawItem(self, dc, rect, item, flags):
-        """!Overridden from OwnerDrawnComboBox.
+        """Overridden from OwnerDrawnComboBox.
         
         Called to draw each item in the list.
         """
@@ -1298,16 +1300,16 @@
                     (r.y + 0) + (r.height - dc.GetCharHeight()) / 2)
 
     def OnMeasureItem(self, item):
-        """!Overridden from OwnerDrawnComboBox, should return the height.
+        """Overridden from OwnerDrawnComboBox, should return the height.
 
         Needed to display an item in the popup, or -1 for default.
         """
         return 24
 
     def GetPictureBitmap(self, name):
-        """!Returns bitmap for given picture name.
+        """Returns bitmap for given picture name.
         
-        @param colorTable name of color table        
+        :param str colorTable: name of color table        
         """
         if not hasattr(self, 'bitmaps'):
             self.bitmaps = {}
@@ -1324,7 +1326,7 @@
 
 
 class ColorTablesComboBox(PictureComboBox):
-    """!ComboBox with drawn color tables (created by thumbnails.py).
+    """ComboBox with drawn color tables (created by thumbnails.py).
 
     Used in r(3).colors dialog."""
     def _getPath(self, name):
@@ -1332,13 +1334,13 @@
 
 
 class BarscalesComboBox(PictureComboBox):
-    """!ComboBox with barscales for d.barscale."""
+    """ComboBox with barscales for d.barscale."""
     def _getPath(self, name):
         return os.path.join(os.getenv("GISBASE"), "docs", "html", "barscales", name + '.png')
 
 
 class NArrowsComboBox(PictureComboBox):
-    """!ComboBox with north arrows for d.barscale."""
+    """ComboBox with north arrows for d.barscale."""
     def _getPath(self, name):
         path = os.path.join(os.getenv("GISBASE"), "etc", "gui", "images",
                                       'symbols', 'n_arrows')

Modified: grass/trunk/gui/wxpython/iclass/dialogs.py
===================================================================
--- grass/trunk/gui/wxpython/iclass/dialogs.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/iclass/dialogs.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package iclass.dialogs
 
 @brief wxIClass dialogs
@@ -37,15 +37,15 @@
 import grass.script as grass
 
 class IClassGroupDialog(SimpleDialog):
-    """!Dialog for imagery group selection"""
+    """Dialog for imagery group selection"""
     def __init__(self, parent, group = None, subgroup = None, 
                  title = _("Select imagery group"), id = wx.ID_ANY):
-        """!
+        """
         Does post init and layout.
         
-        @param gui parent
-        @param title dialog window title
-        @param id wx id
+        :param parent: gui parent
+        :param title: dialog window title
+        :param id: wx id
         """
         SimpleDialog.__init__(self, parent, title)
         
@@ -80,7 +80,7 @@
         self.SetMinSize(self.GetSize())
 
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         self.dataSizer.Add(wx.StaticText(self.panel, id = wx.ID_ANY,
                                          label = _("Name of imagery group:")),
                                          proportion = 0, 
@@ -123,7 +123,7 @@
         self.Layout()
 
     def GetData(self):
-        """!Returns selected group and subgroup"""
+        """Returns selected group and subgroup"""
 
         if self.use_subg:
             ret = (self.groupSelect.GetValue(), self.subGroupSelect.GetValue())
@@ -133,7 +133,7 @@
         return ret
         
     def OnEditGroup(self, event):
-        """!Launch edit group dialog"""
+        """Launch edit group dialog"""
         g, s = self.GetData()
         dlg = GroupDialog(parent=self, defaultGroup=g, defaultSubgroup=s)
 
@@ -150,11 +150,11 @@
         self.subGroupSelect.Insert(group)
 
     def GetSelectedGroup(self):
-        """!Return currently selected group (without mapset)"""
+        """Return currently selected group (without mapset)"""
         return self.groupSelect.GetValue().split('@')[0]
 
     def GetGroupBandsErr(self, parent):
-        """!Get list of raster bands which are in the soubgroup of group with both having same name.
+        """Get list of raster bands which are in the soubgroup of group with both having same name.
            If the group does not exists or it does not contain any bands in subgoup with same name, 
            error dialog is shown.
         """
@@ -191,7 +191,7 @@
         return bands
 
     def GetGroupBands(self, group, subgroup):
-        """!Get list of raster bands which are in the soubgroup of group with both having same name."""
+        """Get list of raster bands which are in the soubgroup of group with both having same name."""
 
         kwargs = {}
         if subgroup:
@@ -212,13 +212,13 @@
                            read=True, flags='sg').splitlines()
 
 class IClassMapDialog(SimpleDialog):
-    """!Dialog for adding raster/vector map"""
+    """Dialog for adding raster/vector map"""
     def __init__(self, parent, title, element):
-        """!
+        """
         
-        @param parent gui parent
-        @param title dialog title
-        @param element element type ('raster', 'vector')
+        :param parent: gui parent
+        :param title: dialog title
+        :param element: element type ('raster', 'vector')
         """
         
         SimpleDialog.__init__(self, parent, title = title)
@@ -234,7 +234,7 @@
         self.SetMinSize(self.GetSize())
 
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         if self.elementType == 'raster':
             label = _("Name of raster map:")
         elif self.elementType == 'vector':
@@ -249,22 +249,22 @@
         self.sizer.Fit(self)
 
     def GetMap(self):
-        """!Returns selected raster/vector map"""
+        """Returns selected raster/vector map"""
         return self.element.GetValue()
 
 
 class IClassCategoryManagerDialog(wx.Dialog):
-    """!Dialog for managing categories (classes).
+    """Dialog for managing categories (classes).
     
     Alows adding, deleting class and changing its name and color.
     """
     def __init__(self, parent, title = _("Class manager"), id = wx.ID_ANY):
-        """!
+        """
         Does post init and layout.
         
-        @param gui parent
-        @param title dialog window title
-        @param id wx id
+        :param parent: gui parent
+        :param title: dialog window title
+        :param id: wx id
         """
         wx.Dialog.__init__(self, parent = parent, title = title, id = id)
         
@@ -330,27 +330,28 @@
         #event.Skip()
         
     def GetListCtrl(self):
-        """!Returns list widget"""
+        """Returns list widget"""
         return self.catList
         
 class CategoryListCtrl(wx.ListCtrl,
                        listmix.ListCtrlAutoWidthMixin,
                        listmix.TextEditMixin):
-    """! Widget for controling list of classes (categories).
+    """Widget for controling list of classes (categories).
     
     CategoryListCtrl updates choice in mapwindow and removes raster map
     when deleting class (category).
     It uses virtual data in the terms of @c wx.ListCtrl.
     
-    @todo delete vector features after deleting class
+    .. todo::
+        delete vector features after deleting class
     """
     def __init__(self, parent, mapwindow, stats_data, id = wx.ID_ANY):
-        """!
-        @param parent gui parent
-        @param mapwindow mapwindow instance with iclass toolbar and remove raster method
-        @param stats_data StatisticsData instance (defined in statistics.py)
-        @param id wx id
         """
+        :param parent: gui parent
+        :param mapwindow: mapwindow instance with iclass toolbar and remove raster method
+        :param stats_data: StatisticsData instance (defined in statistics.py)
+        :param id: wx id
+        """
         wx.ListCtrl.__init__(self, parent, id,
                              style = wx.LC_REPORT|wx.LC_VIRTUAL|wx.LC_HRULES|wx.LC_VRULES)
         self.columns = ((_('Class name'), 'name'),
@@ -409,7 +410,7 @@
         self.SetColumnWidth(1, 100)
         
     def AddCategory(self, cat, name, color):
-        """!Add category record (used when importing areas)"""
+        """Add category record (used when importing areas)"""
 
         self.stats_data.AddStatistics(cat, name, color)
         self.SetItemCount(len(self.stats_data.GetCategories()))
@@ -473,7 +474,7 @@
         event.Skip()
         
     def OnCategorySelected(self, event):
-        """!Highlight selected areas"""
+        """Highlight selected areas"""
         indexList = self.GetSelectedIndices()
         sel_cats = []
         cats = self.stats_data.GetCategories()
@@ -485,7 +486,7 @@
             event.Skip()
         
     def OnClassRightUp(self, event):
-        """!Show context menu on right click"""
+        """Show context menu on right click"""
         item, flags = self.HitTest((event.GetX(), event.GetY()))
         if item != wx.NOT_FOUND and flags & wx.LIST_HITTEST_ONITEM:
             self.rightClickedItemIdx = item
@@ -502,12 +503,12 @@
         menu.Destroy()
     
     def OnZoomToAreasByCat(self, event):
-        """!Zoom to areas of given category"""
+        """Zoom to areas of given category"""
         cat = self.stats_data.GetCategories()[self.rightClickedItemIdx]
         self.mapWindow.ZoomToAreasByCat(cat)
         
     def DeselectAll(self):
-        """!Deselect all items"""
+        """Deselect all items"""
         indexList = self.GetSelectedIndices()
         for i in indexList:
             self.Select(i, on = 0)
@@ -527,7 +528,7 @@
         return None
 
     def OnGetItemAttr(self, item):
-        """!Set correct class color for a item"""
+        """Set correct class color for a item"""
         back_c = wx.Colour(*map(int, self.OnGetItemText(item, 1).split(':')))
         text_c = wx.Colour(*ContrastColor(back_c))
 
@@ -536,10 +537,11 @@
         return self.l
     
 def ContrastColor(color):
-    """!Decides which value shoud have text to be contrast with backgroud color 
+    """Decides which value shoud have text to be contrast with backgroud color 
         (bright bg -> black, dark bg -> white)
 
-    @todo could be useful by other apps, consider moving it into gui_core 
+    .. todo::
+        could be useful by other apps, consider moving it into gui_core 
     """
     #gacek, http://stackoverflow.com/questions/1855884/determine-font-color-based-on-background-color
     a = 1 - ( 0.299 * color[0] + 0.587 * color[1] + 0.114 * color[2])/255;
@@ -556,12 +558,12 @@
                  file = None, title = _("Save signature file"), id = wx.ID_ANY,
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER,
                  **kwargs):
-        """!Dialog for saving signature file
+        """Dialog for saving signature file
         
-        @param parent window
-        @param group group name
-        @param file signature file name
-        @param title window title
+        :param parent: window
+        :param group: group name
+        :param file: signature file name
+        :param title: window title
         """
         wx.Dialog.__init__(self, parent, id, title, style = style, **kwargs)
         
@@ -590,7 +592,7 @@
         self.OnTextChanged(None)
         
     def OnTextChanged(self, event):
-        """!Name for signature file given"""
+        """Name for signature file given"""
         file = self.fileNameCtrl.GetValue()
         if len(file) > 0:
             self.btnOK.Enable(True)
@@ -604,7 +606,7 @@
         self.pathPanel.Scroll(*bestSize)
         
     def __layout(self):
-        """!Do layout"""
+        """Do layout"""
         sizer = wx.BoxSizer(wx.VERTICAL)
         
         dataSizer = wx.BoxSizer(wx.VERTICAL)
@@ -651,9 +653,9 @@
         self.SetMinSize(self.GetSize())
         
     def GetFileName(self, fullPath = False):
-        """!Returns signature file name
+        """Returns signature file name
         
-        @param fullPath return full path of sig. file
+        :param fullPath: return full path of sig. file
         """
         if fullPath:
             return os.path.join(self.baseFilePath, self.fileNameCtrl.GetValue())
@@ -664,11 +666,11 @@
     def __init__(self, parent, vectorName = None, title = _("Export training areas"), id = wx.ID_ANY,
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER,
                  **kwargs):
-        """!Dialog for export of training areas to vector layer
+        """Dialog for export of training areas to vector layer
         
-        @param parent window
-        @param vectorName name of vector layer for export
-        @param title window title
+        :param parent: window
+        :param vectorName: name of vector layer for export
+        :param title: window title
         """
         wx.Dialog.__init__(self, parent, id, title, style = style, **kwargs)
         
@@ -688,7 +690,7 @@
         wx.CallAfter(self.vectorNameCtrl.SetFocus)
 
     def OnTextChanged(self, event):
-        """!Name of new vector map given.
+        """Name of new vector map given.
         
         Enable/diable OK button.
         """
@@ -699,7 +701,7 @@
             self.btnOK.Enable(False)
         
     def __layout(self):
-        """!Do layout"""
+        """Do layout"""
         sizer = wx.BoxSizer(wx.VERTICAL)
         
         dataSizer = wx.BoxSizer(wx.VERTICAL)
@@ -741,15 +743,15 @@
         self.SetMinSize(self.GetSize())
         
     def GetVectorName(self):
-        """!Returns vector name"""
+        """Returns vector name"""
         return self.vectorNameCtrl.GetValue()
         
     def WithTable(self):
-        """!Returns true if attribute table should be exported too"""
+        """Returns true if attribute table should be exported too"""
         return self.withTableCtrl.IsChecked()
         
     def OnOK(self, event):
-        """!Checks if map exists and can be overwritten."""
+        """Checks if map exists and can be overwritten."""
         overwrite = UserSettings.Get(group = 'cmd', key = 'overwrite', subkey = 'enabled')
         vName = self.GetVectorName()
         res = grass.find_file(vName, element = 'vector')

Modified: grass/trunk/gui/wxpython/iclass/digit.py
===================================================================
--- grass/trunk/gui/wxpython/iclass/digit.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/iclass/digit.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package iclass.digit
 
 @brief wxIClass digitizer classes
@@ -33,14 +33,14 @@
 import grass.script as grass
 
 class IClassVDigitWindow(VDigitWindow):
-    """! Class similar to VDigitWindow but specialized for wxIClass."""
+    """Class similar to VDigitWindow but specialized for wxIClass."""
     def __init__(self, parent, giface, map, properties):
-        """!
+        """
         
         @a parent should has toolbar providing current class (category).
         
-        @param parent gui parent
-        @param map map renderer instance
+        :param parent: gui parent
+        :param map: map renderer instance
         """
         VDigitWindow.__init__(self, parent=parent, giface=giface,
                               Map=map, properties=properties)
@@ -89,7 +89,7 @@
         self.parent.UpdateChangeState(changes = True)
         
     def GetCurrentCategory(self):
-        """!Returns current category (class).
+        """Returns current category (class).
         
         Category should be assigned to new features (areas).
         It is taken from parent's toolbar.
@@ -97,12 +97,12 @@
         return self.parent.GetToolbar("iClass").GetSelectedCategoryIdx()
 
     def GetCategoryColor(self, cat):
-        """!Get color associated with given category"""
+        """Get color associated with given category"""
         r, g, b = map(int, self.parent.GetClassColor(cat).split(':'))
         return wx.Colour(r, g, b)
         
 class IClassVDigit(IVDigit):
-    """! Class similar to IVDigit but specialized for wxIClass."""
+    """Class similar to IVDigit but specialized for wxIClass."""
     def __init__(self, mapwindow):
         IVDigit.__init__(self, mapwindow, driver = IClassDisplayDriver)
         self._settings['closeBoundary'] = True # snap to the first node
@@ -115,23 +115,23 @@
         return cat
         
     def DeleteAreasByCat(self, cats):
-        """!Delete areas (centroid+boundaries) by categories
+        """Delete areas (centroid+boundaries) by categories
 
-        @param cats list of categories
+        :param cats: list of categories
         """
         for cat in cats:
             Vedit_delete_areas_cat(self.poMapInfo, 1, cat)
        
     def CopyMap(self, name, tmp = False):
-        """!Make a copy of open vector map
+        """Make a copy of open vector map
 
         Note: Attributes are not copied
         
-        @param name name for a copy
-        @param tmp True for temporary map
+        :param name: name for a copy
+        :param tmp: True for temporary map
 
-        @return number of copied features
-        @return -1 on error
+        :return: number of copied features
+        :return: -1 on error
         """
         if not self.poMapInfo:
             # nothing to copy
@@ -164,22 +164,23 @@
         return ret
 
     def GetMapInfo(self):
-        """!Returns Map_info() struct of open vector map"""
+        """Returns Map_info() struct of open vector map"""
         return self.poMapInfo
 
 class IClassDisplayDriver(DisplayDriver):
-    """! Class similar to DisplayDriver but specialized for wxIClass
+    """Class similar to DisplayDriver but specialized for wxIClass
 
-    @todo needs refactoring (glog, gprogress)
+    .. todo::
+        needs refactoring (glog, gprogress)
     """
     def __init__(self, device, deviceTmp, mapObj, window, glog, gprogress):
         DisplayDriver.__init__(self, device, deviceTmp, mapObj, window, glog, gprogress)
         self._cat = -1
         
     def _drawObject(self, robj):
-        """!Draw given object to the device
+        """Draw given object to the device
 
-        @param robj object to draw
+        :param robj: object to draw
         """
         if robj.type == TYPE_AREA:
             self._cat = Vect_get_area_cat(self.poMapInfo, robj.fid, 1)
@@ -188,11 +189,11 @@
         DisplayDriver._drawObject(self, robj)
         
     def _definePen(self, rtype):
-        """!Define pen/brush based on rendered object)
+        """Define pen/brush based on rendered object)
 
-        @param rtype type of the object
+        :param rtype: type of the object
 
-        @return pen, brush
+        :return: pen, brush
         """
         pen, brush = DisplayDriver._definePen(self, rtype)
         if self._cat > 0 and rtype == TYPE_AREA:
@@ -201,7 +202,7 @@
         return pen, brush
 
     def CloseMap(self):
-        """!Close training areas map - be quiet"""
+        """Close training areas map - be quiet"""
         verbosity = G_verbose()
         G_set_verbose(0)
         DisplayDriver.CloseMap(self)

Modified: grass/trunk/gui/wxpython/iclass/frame.py
===================================================================
--- grass/trunk/gui/wxpython/iclass/frame.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/iclass/frame.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package iclass.frame
 
 @brief wxIClass frame with toolbar for digitizing training areas and
@@ -63,7 +63,7 @@
 from grass.pydispatch.signal import Signal
 
 class IClassMapFrame(DoubleMapFrame):
-    """! wxIClass main frame
+    """wxIClass main frame
     
     It has two map windows one for digitizing training areas and one for
     result preview.
@@ -75,12 +75,12 @@
     def __init__(self, parent = None, giface = None, title = _("GRASS GIS Supervised Classification Tool"),
                  toolbars = ["iClassMisc", "iClassMap", "vdigit", "iClass"],
                  size = (875, 600), name = 'IClassWindow', **kwargs):
-        """!
-        @param parent (no parent is expected)
-        @param title window title
-        @param toolbars dictionary of active toolbars (defalult value represents all toolbars)
-        @param size default size
         """
+        :param parent: (no parent is expected)
+        :param title: window title
+        :param toolbars: dictionary of active toolbars (defalult value represents all toolbars)
+        :param size: default size
+        """
         DoubleMapFrame.__init__(self, parent = parent, title = title,
                                 name = name,
                                 firstMap = Map(), secondMap = Map(),
@@ -208,7 +208,7 @@
         self.Destroy()
         
     def __del__(self):
-        """! Frees C structs and removes vector map and all raster maps."""
+        """Frees C structs and removes vector map and all raster maps."""
         I_free_signatures(self.signatures)
         I_free_group_ref(self.refer)
         for st in self.cStatisticsDict.values():
@@ -219,21 +219,21 @@
             self.RemoveTempRaster(self.stats_data.GetStatistics(i).rasterName)
             
     def OnHelp(self, event):
-        """!Show help page"""
+        """Show help page"""
         self._giface.Help(entry = 'wxGUI.iclass')
         
     def _getTempVectorName(self):
-        """!Return new name for temporary vector map (training areas)"""
+        """Return new name for temporary vector map (training areas)"""
         vectorPath = grass.tempfile(create = False)
         
         return 'trAreas' + os.path.basename(vectorPath).replace('.','')
 
     def SetGroup(self, group, subgroup):
-        """!Set group and subgroup manually"""
+        """Set group and subgroup manually"""
         self.g = {'group' : group, 'subgroup' : subgroup}
 
     def CreateTempVector(self):
-        """!Create temporary vector map for training areas"""
+        """Create temporary vector map for training areas"""
         vectorName = self._getTempVectorName()
         
         env = os.environ.copy()
@@ -251,7 +251,7 @@
         return vectorName
     
     def RemoveTempVector(self):
-        """!Removes temporary vector map with training areas"""
+        """Removes temporary vector map with training areas"""
         ret = RunCommand(prog = 'g.remove',
                          parent = self,
                          vect = self.trainingAreaVector)
@@ -260,7 +260,7 @@
         return True
         
     def RemoveTempRaster(self, raster):
-        """!Removes temporary raster maps"""
+        """Removes temporary raster maps"""
         self.GetFirstMap().Clean()
         self.GetSecondMap().Clean()
         ret = RunCommand(prog = 'g.remove',
@@ -271,7 +271,7 @@
         return True
 
     def AddToolbar(self, name):
-        """!Add defined toolbar to the window
+        """Add defined toolbar to the window
         
         Currently known toolbars are:
          - 'iClassMap'          - basic map toolbar
@@ -335,7 +335,7 @@
                               BestSize((self.toolbars[name].GetBestSize())))
                               
     def _addPanes(self):
-        """!Add mapwindows and toolbars to aui manager"""
+        """Add mapwindows and toolbars to aui manager"""
         if sys.platform == 'win32':
             self._addPaneMapWindow(name = 'training')
             self._addPaneToolbar(name = 'iClassTrainingMapManager')
@@ -382,13 +382,14 @@
                           Center().Layer(0))
         
     def IsStandalone(self):
-        """!Check if Map display is standalone"""
+        """Check if Map display is standalone"""
         return True
 
     def OnUpdateActive(self, event):
-        """!
-        @todo move to DoubleMapFrame?
         """
+        .. todo::
+            move to DoubleMapFrame?
+        """
         if self.GetMapToolbar().GetActiveMap() == 0:
             self.MapWindow = self.firstMapWindow
             self.Map = self.firstMap
@@ -402,9 +403,10 @@
             self.MapWindow.SetFocus()
 
     def UpdateActive(self, win):
-        """!
-        @todo move to DoubleMapFrame?
         """
+        .. todo::
+            move to DoubleMapFrame?
+        """
         mapTb = self.GetMapToolbar()
         # optionally disable tool zoomback tool
         mapTb.Enable('zoomBack', enable = (len(self.MapWindow.zoomhistory) > 1))
@@ -422,22 +424,22 @@
         self.GetMapToolbar().Enable('zoomBack', enable=(len(self.MapWindow.zoomhistory) > 1))
 
     def GetMapToolbar(self):
-        """!Returns toolbar with zooming tools"""
+        """Returns toolbar with zooming tools"""
         return self.toolbars['iClassMap']
 
     def GetClassColor(self, cat):
-        """!Get class color as string
+        """Get class color as string
 
-        @param cat class category
+        :param cat: class category
         
-        @return 'R:G:B'
+        :return: 'R:G:B'
         """
         if cat in self.stats_data.GetCategories():
             return self.stats_data.GetStatistics(cat).color
         return '0:0:0'
         
     def OnZoomMenu(self, event):
-        """!Popup Zoom menu """
+        """Popup Zoom menu """
         zoommenu = wx.Menu()
         # Add items to the menu
 
@@ -465,7 +467,7 @@
         zoommenu.Destroy()
         
     def OnZoomToTraining(self, event):
-        """!Set preview display to match extents of training display """
+        """Set preview display to match extents of training display """
 
         if not self.MapWindow == self.GetSecondWindow():
             self.MapWindow = self.GetSecondWindow()
@@ -478,7 +480,7 @@
         self.Render(self.GetSecondWindow())
         
     def OnZoomToPreview(self, event):
-        """!Set preview display to match extents of training display """
+        """Set preview display to match extents of training display """
 
         if not self.MapWindow == self.GetFirstWindow():
             self.MapWindow = self.GetFirstWindow()
@@ -491,7 +493,7 @@
         self.Render(self.GetFirstWindow())
         
     def AddBands(self):
-        """!Add imagery group"""
+        """Add imagery group"""
         dlg = IClassGroupDialog(self, group=self.g['group'])
         
         while True:
@@ -511,7 +513,7 @@
         dlg.Destroy()
 
     def OnImportAreas(self, event):
-        """!Import training areas"""
+        """Import training areas"""
         # check if we have any changes
         if self.GetAreasCount() or self.stats_data.GetCategories():
             qdlg = wx.MessageDialog(parent = self,
@@ -532,11 +534,11 @@
         dlg.Destroy()
         
     def _checkImportedTopo(self, vector):
-        """!Check if imported vector map has areas
+        """Check if imported vector map has areas
         
-        @param vector vector map name
+        :param str vector: vector map name
         
-        @return warning message (empty if topology is ok)
+        :return: warning message (empty if topology is ok)
         """
         topo = grass.vector_info_topo(map = vector)
         
@@ -550,11 +552,11 @@
         return warning
             
     def ImportAreas(self, vector):
-        """!Import training areas.
+        """Import training areas.
         
         If table connected, try load certain columns to class manager
         
-        @param vector vector map name
+        :param str vector: vector map name
         """
         warning = self._checkImportedTopo(vector)
         if warning:
@@ -611,7 +613,7 @@
         return True
         
     def ImportClasses(self, vector):
-        """!If imported map has table, try to import certain columns to class manager"""
+        """If imported map has table, try to import certain columns to class manager"""
         # check connection
         dbInfo = VectorDBInfo(vector)
         connected = (len(dbInfo.layers.keys()) > 0)
@@ -674,7 +676,7 @@
                 listCtrl.AddCategory(cat = int(record[0]), name = record[1], color = record[2])
             
     def OnExportAreas(self, event):
-        """!Export training areas"""
+        """Export training areas"""
         if self.GetAreasCount() == 0:
             GMessage(parent = self, message = _("No training areas to export."))
             return
@@ -693,10 +695,10 @@
                               self.exportVector), parent = self)
                     
     def ExportAreas(self, vectorName, withTable):
-        """!Export training areas to new vector map (with attribute table).
+        """Export training areas to new vector map (with attribute table).
         
-        @param vectorName name of exported vector map
-        @param withTable true if attribute table is required
+        :param str vectorName: name of exported vector map
+        :param bool withTable: true if attribute table is required
         """
         wx.BeginBusyCursor()
         wx.Yield()
@@ -770,13 +772,13 @@
         return True
     
     def _runDBUpdate(self, tmpFile, table, column, value, cat):
-        """!Helper function for UPDATE statement
+        """Helper function for UPDATE statement
         
-        @param tmpFile file where to write UPDATE statements
-        @param table table name
-        @param column name of updated column
-        @param value new value
-        @param cat which category to update
+        :param tmpFile: file where to write UPDATE statements
+        :param table: table name
+        :param column: name of updated column
+        :param value: new value
+        :param cat: which category to update
         """
         if type(value) == (types.IntType, types.FloatType):
             tmpFile.write("UPDATE %s SET %s = %d WHERE cat = %d\n" %
@@ -786,7 +788,7 @@
                           (table, column, value, cat))
         
     def OnCategoryManager(self, event):
-        """!Show category management dialog"""
+        """Show category management dialog"""
         if self.dialogs['classManager'] is None:
             dlg = IClassCategoryManagerDialog(self)
             dlg.CenterOnParent()
@@ -797,7 +799,7 @@
                 self.dialogs['classManager'].Show()
         
     def CategoryChanged(self, currentCat):
-        """!Updates everything which depends on current category.
+        """Updates everything which depends on current category.
         
         Updates number of stddev, histograms, layer in preview display. 
         """
@@ -817,20 +819,20 @@
         self.categoryChanged.emit(cat = currentCat)
         
     def DeleteAreas(self, cats):
-        """!Removes all training areas of given categories
+        """Removes all training areas of given categories
         
-        @param cats list of categories to be deleted
+        :param cats: list of categories to be deleted
         """
         self.firstMapWindow.GetDigit().DeleteAreasByCat(cats)
         self.firstMapWindow.UpdateMap(render=False, renderVector=True)
         
     def HighlightCategory(self, cats):
-        """!Highlight araes given by category"""
+        """Highlight araes given by category"""
         self.firstMapWindow.GetDigit().GetDisplay().SetSelected(cats, layer = 1)
         self.firstMapWindow.UpdateMap(render=False, renderVector=True)
         
     def ZoomToAreasByCat(self, cat):
-        """!Zoom to areas given by category"""
+        """Zoom to areas given by category"""
         n, s, w, e = self.GetFirstWindow().GetDigit().GetDisplay().GetRegionSelected()
         self.GetFirstMap().GetRegion(n = n, s = s, w = w, e = e, update = True)
         self.GetFirstMap().AdjustRegion()
@@ -839,12 +841,12 @@
         self.GetFirstWindow().UpdateMap(render = True, renderVector = True)
         
     def UpdateRasterName(self, newName, cat):
-        """!Update alias of raster map when category name is changed"""
+        """Update alias of raster map when category name is changed"""
         origName = self.stats_data.GetStatistics(cat).rasterName
         self.previewMapManager.SetAlias(origName, self._addSuffix(newName))
         
     def StddevChanged(self, cat, nstd):
-        """!Standard deviation multiplier changed, rerender map, histograms"""
+        """Standard deviation multiplier changed, rerender map, histograms"""
         stat = self.stats_data.GetStatistics(cat)
         stat.SetStatistics({"nstd" : nstd})
         
@@ -863,13 +865,13 @@
         self.plotPanel.StddevChanged()
         
     def UpdateChangeState(self, changes):
-        """!Informs if any important changes happened
+        """Informs if any important changes happened
         since last analysis computation.
         """
         self.changes = changes
         
     def AddRasterMap(self, name, firstMap = True, secondMap = True):
-        """!Add raster map to Map"""
+        """Add raster map to Map"""
         cmdlist = ['d.rast', 'map=%s' % name]
         if firstMap:
             self.GetFirstMap().AddLayer(ltype='raster', command=cmdlist, active=True,
@@ -881,7 +883,7 @@
             self.Render(self.GetSecondWindow())
            
     def AddTrainingAreaMap(self):
-        """!Add vector map with training areas to Map (training
+        """Add vector map with training areas to Map (training
         sub-display)"""
         vname = self.CreateTempVector()
         if vname:
@@ -900,14 +902,14 @@
         self.Render(self.GetFirstWindow())
         
     def OnRunAnalysis(self, event):
-        """!Run analysis and update plots"""
+        """Run analysis and update plots"""
         if self.RunAnalysis():
             currentCat = self.GetCurrentCategoryIdx()
             self.plotPanel.UpdatePlots(group = self.g['group'], subgroup = self.g['subgroup'], 
                                        currentCat = currentCat, stats_data = self.stats_data)
         
     def RunAnalysis(self):
-        """!Run analysis
+        """Run analysis
         
         Calls C functions to compute all statistics and creates raster maps.
         Signatures are created but signature file is not.
@@ -977,7 +979,7 @@
         return '_'.join((name, suffix))
 
     def OnSaveSigFile(self, event):
-        """!Asks for signature file name and saves it."""
+        """Asks for signature file name and saves it."""
         if not self.g['group']:
             GMessage(parent = self, message = _("No imagery group selected."))
             return
@@ -1018,7 +1020,7 @@
         dlg.Destroy()
         
     def InitStatistics(self):
-        """!Initialize variables and c structures neccessary for
+        """Initialize variables and c structures neccessary for
         computing statistics.
         """
         self.g = {'group' : None, 'subgroup' : None}
@@ -1037,16 +1039,16 @@
         I_init_group_ref(self.refer) # must be freed on exit
         
     def WriteSignatures(self, signatures, group, subgroup, filename):
-        """!Writes current signatures to signature file
+        """Writes current signatures to signature file
         
-        @param signatures signature (c structure)
-        @param group imagery group
-        @param filename signature file name
+        :param signatures: signature (c structure)
+        :param group: imagery group
+        :param filename: signature file name
         """
         I_iclass_write_signatures(signatures, group, subgroup, filename)
                                         
     def CheckInput(self, group, vector):
-        """!Check if input is valid"""
+        """Check if input is valid"""
         # check if group is ok
         #TODO check subgroup
         if not group:
@@ -1091,7 +1093,7 @@
         return True
         
     def GetAreasCount(self):
-        """!Returns number of not dead areas"""
+        """Returns number of not dead areas"""
         count = 0
         numAreas = Vect_get_num_areas(self.poMapInfo)
         for i in range(numAreas):
@@ -1100,9 +1102,10 @@
         return count
         
     def GetGroupLayers(self, group, subgroup=None):
-        """!Get layers in subgroup (expecting same name for group and subgroup)
+        """Get layers in subgroup (expecting same name for group and subgroup)
     
-        @todo consider moving this function to core module for convenient
+        .. todo::
+            consider moving this function to core module for convenient
         """
         kwargs = {}
         if subgroup:
@@ -1118,61 +1121,62 @@
         return []
     
     def ConvertToNull(self, name):
-        """! Sets value which represents null values for given raster map.
+        """Sets value which represents null values for given raster map.
         
-        @param name raster map name
+        :param name: raster map name
         """
         RunCommand('r.null',
                    map = name,
                    setnull = 0)
                      
     def GetCurrentCategoryIdx(self):
-        """!Returns current category number"""
+        """Returns current category number"""
         return self.toolbars['iClass'].GetSelectedCategoryIdx()
         
     def OnZoomIn(self, event):
-        """!Enable zooming for plots"""
+        """Enable zooming for plots"""
         super(IClassMapFrame, self).OnZoomIn(event)
         self.plotPanel.EnableZoom(type = 1)
         
     def OnZoomOut(self, event):
-        """!Enable zooming for plots"""
+        """Enable zooming for plots"""
         super(IClassMapFrame, self).OnZoomOut(event)
         self.plotPanel.EnableZoom(type = -1)
         
     def OnPan(self, event):
-        """!Enable panning for plots"""
+        """Enable panning for plots"""
         super(IClassMapFrame, self).OnPan(event)
         self.plotPanel.EnablePan()
         
     def OnPointer(self, event):
-        """!Set pointer mode.
+        """Set pointer mode.
 
-        @todo: pointers need refactoring
+        .. todo::
+            pointers need refactoring
         """
         self.GetFirstWindow().SetModePointer()
         self.GetSecondWindow().SetModePointer()
 
     def GetMapManagers(self):
-      """!Get map managers of wxIClass 
+        """Get map managers of wxIClass
 
-      @return trainingMapManager, previewMapManager 
-      """
-      return self.trainingMapManager, self.previewMapManager
+        :return: trainingMapManager, previewMapManager 
+        """
+        return self.trainingMapManager, self.previewMapManager
 
 class MapManager:
-    """! Class for managing map renderer.
+    """Class for managing map renderer.
     
     It is connected with iClassMapManagerToolbar.
     """
     def __init__(self, frame, mapWindow, Map):
-        """!
+        """
         
         It is expected that \a mapWindow is conected with \a Map.
         
-        @param frame application main window
-        @param mapWindow map window instance
-        @param Map map renderer instance
+        :param frame: application main window
+        :param mapWindow: map window instance
+        :param map: map renderer instance
         """
         self.map = Map
         self.frame = frame
@@ -1186,10 +1190,10 @@
         self.toolbar = toolbar
         
     def AddLayer(self, name, alias = None, resultsLayer = False):
-        """!Adds layer to Map and update toolbar 
+        """Adds layer to Map and update toolbar 
         
-        @param name layer (raster) name
-        @param resultsLayer True if layer is temp. raster showing the results of computation
+        :param str name: layer (raster) name
+        :param str resultsLayer: True if layer is temp. raster showing the results of computation
         """
         if (resultsLayer and
             name in [l.GetName() for l in self.map.GetListOfLayers(name = name)]):
@@ -1211,9 +1215,9 @@
         self.toolbar.choice.SetSelection(0)
         
     def AddLayerRGB(self, cmd):
-        """!Adds RGB layer and update toolbar.
+        """Adds RGB layer and update toolbar.
 
-        @param cmd d.rgb command as a list
+        :param cmd: d.rgb command as a list
         """
         name = []
         for param in cmd:
@@ -1228,9 +1232,9 @@
         self.toolbar.choice.SetSelection(0)
 
     def RemoveTemporaryLayer(self, name):
-        """!Removes temporary layer (if exists) from Map and and updates toolbar.
+        """Removes temporary layer (if exists) from Map and and updates toolbar.
         
-        @param name real name of layer
+        :param name: real name of layer
         """
         # check if layer is loaded
         layers = self.map.GetListOfLayers(ltype = 'raster')
@@ -1260,11 +1264,13 @@
         self.frame.Render(self.mapWindow)
     
     def Render(self):
-        """@todo giface shoud be used instead of this method"""
+        """
+        .. todo::
+            giface shoud be used instead of this method"""
         self.frame.Render(self.mapWindow)
 
     def RemoveLayer(self, name, idx):
-        """!Removes layer from Map and update toolbar"""
+        """Removes layer from Map and update toolbar"""
         name = self.layerName[name]
         self.map.RemoveLayer(name = name)
         del self.layerName[name]
@@ -1275,7 +1281,7 @@
         self.frame.Render(self.mapWindow)
             
     def SelectLayer(self, name):
-        """!Moves selected layer to top"""
+        """Moves selected layer to top"""
         layers = self.map.GetListOfLayers(ltype = 'rgb') + \
                  self.map.GetListOfLayers(ltype = 'raster')
         idx = None
@@ -1298,7 +1304,7 @@
             self.frame.Render(self.mapWindow)
         
     def SetOpacity(self, name):
-        """!Sets opacity of layers."""
+        """Sets opacity of layers."""
         name = self.layerName[name]
         layers = self.map.GetListOfLayers(name = name)
         if not layers:
@@ -1320,7 +1326,7 @@
         self.frame.Render(self.mapWindow)
                 
     def GetAlias(self, name):
-        """!Returns alias for layer"""
+        """Returns alias for layer"""
         name =  [k for k, v in self.layerName.iteritems() if v == name]
         if name:
             return name[0]

Modified: grass/trunk/gui/wxpython/iclass/plots.py
===================================================================
--- grass/trunk/gui/wxpython/iclass/plots.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/iclass/plots.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package iclass.plots
 
 @brief wxIClass plots (histograms, coincidence plots).
@@ -22,7 +22,7 @@
 from core.gcmd import GError
 
 class PlotPanel(scrolled.ScrolledPanel):
-    """!Panel for drawing multiple plots.
+    """Panel for drawing multiple plots.
     
     There are three types of plots: histograms, coincidence plots and scatter plots.
     Histograms show frequency of cell category values in training areas
@@ -70,7 +70,7 @@
         self.plotSwitch.Bind(wx.EVT_CHOICE, self.OnPlotTypeSelected)
     
     def _createScatterPlotPanel(self):
-        """!Init interactive scatter plot tool
+        """Init interactive scatter plot tool
         """
         try:
             from iscatt.frame import IClassIScattPanel
@@ -86,7 +86,7 @@
             self.iscatt_panel = None
 
     def OnPlotTypeSelected(self, event):
-        """!Plot type selected"""
+        """Plot type selected"""
 
         if self.plotSwitch.GetSelection() in [0, 1]:
             self.SetupScrolling(scroll_x = False, scroll_y = True)
@@ -119,7 +119,7 @@
         self.Layout()
 
     def StddevChanged(self):
-        """!Standard deviation multiplier changed, redraw histograms"""
+        """Standard deviation multiplier changed, redraw histograms"""
         if self.plotSwitch.GetSelection() == 0:
             stat = self.stats_data.GetStatistics(self.currentCat)
             self.UpdateRanges(stat)
@@ -135,25 +135,25 @@
             canvas.SetEnableDrag(enable)
             
     def DestroyPlots(self):
-        """!Destroy all plot canvases"""
+        """Destroy all plot canvases"""
         for panel in self.canvasList:
             panel.Destroy()
             
         self.canvasList = []
 
     def ClearPlots(self):
-        """!Clears plot canvases"""
+        """Clears plot canvases"""
         for bandIdx in range(len(self.bandList)):
             self.canvasList[bandIdx].Clear()
             
     def Reset(self):
-        """!Reset plots (when new map imported)"""
+        """Reset plots (when new map imported)"""
         self.currentCat = None
         self.ClearPlots()
         # bands are still the same
         
     def CreatePlotCanvases(self):
-        """!Create plot canvases according to the number of bands"""
+        """Create plot canvases according to the number of bands"""
         for band in self.bandList:
             canvas = plot.PlotCanvas(self.canvasPanel)
             canvas.SetMinSize((-1, 140))
@@ -167,12 +167,12 @@
         self.Layout()
         
     def UpdatePlots(self, group, subgroup, currentCat, stats_data):
-        """!Update plots after new analysis
+        """Update plots after new analysis
         
-        @param group imagery group
-        @param subgroup imagery group
-        @param currentCat currently selected category (class)
-        @param stats_data StatisticsData instance (defined in statistics.py)
+        :param group: imagery group
+        :param subgroup: imagery group
+        :param currentCat: currently selected category (class)
+        :param stats_data: StatisticsData instance (defined in statistics.py)
         """
         self.stats_data = stats_data
         self.currentCat = currentCat
@@ -192,7 +192,7 @@
         self.currentCat = cat
     
     def DrawCoincidencePlots(self):
-        """!Draw coincidence plots"""
+        """Draw coincidence plots"""
         for bandIdx in range(len(self.bandList)):
             self.canvasList[bandIdx].SetYSpec(type = 'none')
             lines = []
@@ -217,11 +217,11 @@
             self.canvasList[bandIdx].Draw(plotGraph)
         
     def DrawCoincidenceLine(self, level, color, bandValues):
-        """!Draw line between band min and max values
+        """Draw line between band min and max values
         
-        @param level y coordinate of line
-        @param color class color
-        @param bandValues BandStatistics instance
+        :param level: y coordinate of line
+        :param color: class color
+        :param bandValues: BandStatistics instance
         """
         minim = bandValues.min
         maxim = bandValues.max
@@ -230,14 +230,14 @@
         return plot.PolyLine(points, colour = color, width = 4)
         
     def DrawInvisibleLine(self, level):
-        """!Draw white line to achieve better margins"""
+        """Draw white line to achieve better margins"""
         points = [(100, level), (101, level)]
         return plot.PolyLine(points, colour = wx.WHITE, width = 1)
         
     def DrawHistograms(self, statistics):
-        """!Draw histograms for one class
+        """Draw histograms for one class
         
-        @param statistics statistics for one class
+        :param statistics: statistics for one class
         """
         self.histogramLines = []
         for bandIdx in range(len(self.bandList)):
@@ -308,9 +308,9 @@
         return plot.PolyLine(points, colour = wx.BLACK, width = 1)
          
     def UpdateRanges(self, statistics):
-        """!Redraw ranges lines in histograms when std dev multiplier changes
+        """Redraw ranges lines in histograms when std dev multiplier changes
         
-        @param statistics python Statistics instance
+        :param statistics: python Statistics instance
         """
         for bandIdx in range(len(self.bandList)):
             self.canvasList[bandIdx].Clear()

Modified: grass/trunk/gui/wxpython/iclass/statistics.py
===================================================================
--- grass/trunk/gui/wxpython/iclass/statistics.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/iclass/statistics.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package iclass.statistics
 
 @brief wxIClass classes for storing statistics about cells in training areas.
@@ -31,8 +31,8 @@
 from grass.pydispatch.signal import Signal
 
 class StatisticsData:
-    """!Stores all statistics.
-    """ 
+    """Stores all statistics.
+    """
     def __init__(self):
         self.statisticsDict = {}
         self.statisticsList = []
@@ -73,7 +73,7 @@
         self.allStatisticsDeleted.emit()
 
 class Statistics:
-    """! Statistis conected to one class (category).
+    """Statistis conected to one class (category).
     
     It is Python counterpart of similar C structure.
     But it adds some attributes or features used in wxIClass.
@@ -99,12 +99,13 @@
         return self.ready
         
     def SetBaseStatistics(self, cat, name, color):
-        """! Sets basic (non-statistical) values.
+        """Sets basic (non-statistical) values.
         
-        @todo Later self.name is changed but self.rasterName is not.
-        self.rasterName should not be set by user. It can remains the same.
-        But it should be done more explicitly.
-        Currently it looks like unintentional feature or bug.
+        .. todo::
+            Later self.name is changed but self.rasterName is not. 
+            self.rasterName should not be set by user. It can remains
+            the same. But it should be done more explicitly. Currently
+            it looks like unintentional feature or bug.
         """
         self.category = cat
         self.name = name
@@ -115,11 +116,11 @@
         self.rasterName = name + '_' + os.path.basename(rasterPath)
         
     def SetFromcStatistics(self, cStatistics):
-        """! Sets all statistical values.
+        """Sets all statistical values.
         
         Copies all statistic values from \a cStattistics.
         
-        @param cStatistics pointer to C statistics structure
+        :param cStatistics: pointer to C statistics structure
         """
         cat = c_int()
 
@@ -157,9 +158,9 @@
         self.SetBandStatistics(cStatistics)
 
     def SetBandStatistics(self, cStatistics):
-        """! Sets all band statistics.
+        """Sets all band statistics.
         
-        @param cStatistics pointer to C statistics structure
+        :param cStatistics: pointer to C statistics structure
         """
         self.bands = []
         for i in range(self.nbands):
@@ -175,9 +176,9 @@
         self.statisticsSet.emit(stats = stats)
 
 class BandStatistics:
-    """! Statistis conected to one band within class (category).
+    """Statistis conected to one band within class (category).
     
-    @see Statistics
+    :class:`Statistics`
     """
     def __init__(self):
         self.min = self.max = None
@@ -188,10 +189,10 @@
         
         
     def SetFromcStatistics(self, cStatistics, index):
-        """! Sets statistics for one band by given index.
+        """Sets statistics for one band by given index.
         
-        @param cStatistics pointer to C statistics structure
-        @param index index of band in C statistics structure
+        :param cStatistics: pointer to C statistics structure
+        :param index: index of band in C statistics structure
         """
         min, max = c_int(), c_int()
         I_iclass_statistics_get_min(cStatistics, index, byref(min))

Modified: grass/trunk/gui/wxpython/iclass/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/iclass/toolbars.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/iclass/toolbars.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package iclass.toolbars
 
 @brief wxIClass toolbars and icons.
@@ -50,10 +50,10 @@
         }
         
 class IClassMapToolbar(BaseToolbar):
-    """!IClass Map toolbar
+    """IClass Map toolbar
     """
     def __init__(self, parent, toolSwitcher):
-        """!IClass Map toolbar constructor
+        """IClass Map toolbar constructor
         """
         BaseToolbar.__init__(self, parent, toolSwitcher)
         
@@ -79,19 +79,19 @@
         self.EnableTool(self.zoomBack, False)
         
     def GetActiveMapTool(self):
-        """!Return widget for selecting active maps"""
+        """Return widget for selecting active maps"""
         return self.togglemap
         
     def GetActiveMap(self):
-        """!Get currently selected map"""
+        """Get currently selected map"""
         return self.togglemap.GetSelection()
         
     def SetActiveMap(self, index):
-        """!Set currently selected map"""
+        """Set currently selected map"""
         return self.togglemap.SetSelection(index)
         
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         icons = BaseIcons
         return self._getToolbarData((("displaymap", icons["display"],
                                       self.parent.OnDraw),
@@ -120,10 +120,10 @@
                                       self.parent.OnZoomToMap)
                                     ))
 class IClassToolbar(BaseToolbar):
-    """!IClass toolbar
+    """IClass toolbar
     """
     def __init__(self, parent, stats_data):
-        """!IClass toolbar constructor
+        """IClass toolbar constructor
         """
         self.stats_data = stats_data
 
@@ -157,7 +157,7 @@
         self.Realize()
         
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         icons = iClassIcons
         return self._getToolbarData((("selectGroup", icons['selectGroup'],
                                       lambda event : self.parent.AddBands()),
@@ -281,10 +281,10 @@
         # don't forget to update maps, histo, ...
         
 class IClassMapManagerToolbar(BaseToolbar):
-    """!IClass toolbar
+    """IClass toolbar
     """
     def __init__(self, parent, mapManager):
-        """!IClass toolbar constructor
+        """IClass toolbar constructor
         """
         BaseToolbar.__init__(self, parent)
         
@@ -300,7 +300,7 @@
         self.Realize()
         
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         return self._getToolbarData((("addRast", BaseIcons['addRast'],
                                       self.OnAddRast),
                                      ('addRgb', iClassIcons['addRgb'],
@@ -347,10 +347,10 @@
         self.mapManager.SetOpacity(name = layer)
 
 class IClassMiscToolbar(BaseToolbar):
-    """!IClass toolbar
+    """IClass toolbar
     """
     def __init__(self, parent):
-        """!IClass toolbar constructor
+        """IClass toolbar constructor
         """
         BaseToolbar.__init__(self, parent)
         
@@ -359,7 +359,7 @@
         self.Realize()
         
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         icons = BaseIcons
         return self._getToolbarData((("help", icons['help'],
                                       self.parent.OnHelp),

Modified: grass/trunk/gui/wxpython/icons/icon.py
===================================================================
--- grass/trunk/gui/wxpython/icons/icon.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/icons/icon.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package icons.icon
 
 @brief Icon metadata
@@ -51,7 +51,7 @@
     sys.exit(_("Unable to load icon theme. Reason: %s. Quiting wxGUI...") % e)
     
 class MetaIcon:
-    """!Handle icon metadata (image path, tooltip, ...)
+    """Handle icon metadata (image path, tooltip, ...)
     """
     def __init__(self, img, label = None, desc = None):
         self.imagepath = iconSet.get(img, wx.ART_MISSING_IMAGE)
@@ -99,12 +99,12 @@
         return os.path.basename(self.imagepath)
 
     def SetLabel(self, label = None, desc = None):
-        """!Set label/description for icon
+        """Set label/description for icon
 
-        @param label icon label (None for no change)
-        @param desc icon description (None for no change)
+        :param label: icon label (None for no change)
+        :param desc: icon description (None for no change)
         
-        @return copy of original object
+        :return: copy of original object
         """
         cobj = copy.copy(self)
         if label:

Modified: grass/trunk/gui/wxpython/iscatt/controllers.py
===================================================================
--- grass/trunk/gui/wxpython/iscatt/controllers.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/iscatt/controllers.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package iscatt.controllers
 
 @brief Controller layer wx.iscatt.
@@ -43,7 +43,7 @@
 from grass.pydispatch.signal import Signal
 
 class ScattsManager:
-    """!Main controller
+    """Main controller
     """
     def __init__(self, guiparent, giface, iclass_mapwin = None):
         self.giface = giface
@@ -113,7 +113,7 @@
         self.plots.clear()
     
     def _initSettings(self):
-        """!Initialization of settings (if not already defined)
+        """Initialization of settings (if not already defined)
         """
         # initializes default settings
         initSettings = [
@@ -448,9 +448,10 @@
         return self.cats_mgr
 
 class PlotsRenderingManager:
-    """!Manages rendering of scatter plot.
+    """Manages rendering of scatter plot.
 
-    @todo still space for optimalization
+    .. todo::
+        still space for optimalization
     """
     def __init__(self, scatt_mgr, cats_mgr, core):
         self.scatt_mgr = scatt_mgr
@@ -589,7 +590,7 @@
                                 subkey="show_ellips")
 
 class CategoriesManager:
-    """!Manages categories list of scatter plot.
+    """Manages categories list of scatter plot.
     """
     def __init__(self, scatt_mgr, core):
 
@@ -767,7 +768,8 @@
 
 
 class IMapWinDigitConnection:
-    """!Manage communication of the scatter plot with digitizer in mapwindow (does not work).
+    """Manage communication of the scatter plot with digitizer in
+    mapwindow (does not work).
     """
     def Update(self):
         pass
@@ -776,7 +778,8 @@
         pass
 
 class IClassDigitConnection:
-    """!Manages communication of the scatter plot with digitizer in wx.iclass.
+    """Manages communication of the scatter plot with digitizer in
+    wx.iclass.
     """
     def __init__(self, scatt_mgr, mapWin, scatt_rast_updater):
         self.mapWin = mapWin
@@ -877,7 +880,7 @@
         self.scatt_mgr.render_mgr.RenderScattPlts()
 
 class IMapDispConnection:
-    """!Manage comunication of the scatter plot with mapdisplay in mapwindow.
+    """Manage comunication of the scatter plot with mapdisplay in mapwindow.
     """
     def __init__(self, scatt_mgr, cats_mgr, giface):
         self.scatt_mgr = scatt_mgr
@@ -960,7 +963,7 @@
             self.giface.updateMap.emit()
 
 class IClassConnection:
-    """!Manage comunication of the scatter plot with mapdisplay in wx.iclass.
+    """Manage comunication of the scatter plot with mapdisplay in wx.iclass.
     """
     def __init__(self, scatt_mgr, iclass_frame, cats_mgr):
         self.iclass_frame = iclass_frame
@@ -1114,7 +1117,7 @@
 
 #TODO it uses also BufferedMapWindow class -> move to core?
 class gThread(threading.Thread, wx.EvtHandler):
-    """!Thread for scatter plot backend"""
+    """Thread for scatter plot backend"""
     requestId = 0
 
     def __init__(self, requestQ=None, resultQ=None, **kwds):
@@ -1139,15 +1142,15 @@
         self.start()
 
     def Run(self, *args, **kwds):
-        """!Run command in queue
+        """Run command in queue
 
-        @param args unnamed command arguments
-        @param kwds named command arguments,
-               keyword 'callable' represents function to be run,
-               keyword 'ondone' represents function to be 
-                       called after the callable is done
+        :param args: unnamed command arguments
+        :param kwds: named command arguments, keyword 'callable'
+                     represents function to be run, keyword 'ondone'
+                     represents function to be called after the
+                     callable is done
 
-        @return request id in queue
+        :return: request id in queue
         """
         gThread.requestId += 1
         self.requestQ.put((gThread.requestId, args, kwds))
@@ -1155,11 +1158,11 @@
         return gThread.requestId
 
     def GetId(self):
-         """!Get id for next command"""
+         """Get id for next command"""
          return gThread.requestId + 1
 
     def SetId(self, id):
-        """!Set starting id"""
+        """Set starting id"""
         gThread.requestId = id
 
     def run(self):
@@ -1206,5 +1209,5 @@
             event.ondone(event)
 
     def Terminate(self):
-        """!Abort command(s)"""
+        """Abort command(s)"""
         self.terminate = True

Modified: grass/trunk/gui/wxpython/iscatt/core_c.py
===================================================================
--- grass/trunk/gui/wxpython/iscatt/core_c.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/iscatt/core_c.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package iscatt.core_c
 
 @brief Wrappers for scatter plot C backend.

Modified: grass/trunk/gui/wxpython/iscatt/dialogs.py
===================================================================
--- grass/trunk/gui/wxpython/iscatt/dialogs.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/iscatt/dialogs.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package iscatt.dialogs
 
 @brief Dialogs widgets.
@@ -138,7 +138,7 @@
         event.Skip()
 
     def _addSelectSizer(self, title, sel): 
-        """!Helper layout function.
+        """Helper layout function.
         """
         selSizer = wx.BoxSizer(orient = wx.VERTICAL)
 
@@ -156,26 +156,26 @@
         return selSizer
 
     def GetBands(self):
-        """!Get layers"""
+        """Get layers"""
         return self.sel_bands_ids
 
     def OnClose(self, event):
-        """!Close dialog
+        """Close dialog
         """
         if not self.IsModal():
             self.Destroy()
         event.Skip()
 
     def OnRemoveLayer(self, event):
-        """!Remove layer from listbox"""
+        """Remove layer from listbox"""
         while self.scattsBox.GetSelections():
             sel = self.scattsBox.GetSelections()[0]
             self.scattsBox.Delete(sel)
             self.sel_bands_ids.pop(sel)
 
     def OnAdd(self, event):
-        """!
         """
+        """
         b_x = self.band_1_ch.GetSelection()
         b_y = self.band_2_ch.GetSelection()
 
@@ -209,11 +209,11 @@
     def __init__(self, parent, title, rasterName = None, id = wx.ID_ANY,
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER,
                  **kwargs):
-        """!Dialog for export of category raster.
+        """Dialog for export of category raster.
         
-        @param parent window
-        @param rasterName name of vector layer for export
-        @param title window title
+        :param parent: window
+        :param str rasterName name of vector layer for export
+        :param title: window title
         """
         wx.Dialog.__init__(self, parent, id, title, style = style, **kwargs)
         
@@ -233,7 +233,7 @@
         wx.CallAfter(self.vectorNameCtrl.SetFocus)
 
     def OnTextChanged(self, event):
-        """!Name of new vector map given.
+        """Name of new vector map given.
         
         Enable/diable OK button.
         """
@@ -244,7 +244,7 @@
             self.btnOK.Enable(False)
         
     def __layout(self):
-        """!Do layout"""
+        """Do layout"""
         sizer = wx.BoxSizer(wx.VERTICAL)
         
         dataSizer = wx.BoxSizer(wx.VERTICAL)
@@ -279,11 +279,11 @@
         self.SetMinSize(self.GetSize())
         
     def GetRasterName(self):
-        """!Returns vector name"""
+        """Returns vector name"""
         return self.vectorNameCtrl.GetValue()
 
     def OnOK(self, event):
-        """!Checks if map exists and can be overwritten."""
+        """Checks if map exists and can be overwritten."""
         overwrite = UserSettings.Get(group = 'cmd', key = 'overwrite', subkey = 'enabled')
         rast_name = self.GetRasterName()
         res = grass.find_file(rast_name, element = 'cell')
@@ -302,7 +302,7 @@
 class SettingsDialog(wx.Dialog):
     def __init__(self, parent, id, title, scatt_mgr, pos=wx.DefaultPosition, size=wx.DefaultSize,
                  style=wx.DEFAULT_DIALOG_STYLE):
-        """!Settings dialog"""
+        """Settings dialog"""
         wx.Dialog.__init__(self, parent, id, title, pos, size, style)
 
         self.scatt_mgr = scatt_mgr
@@ -417,7 +417,7 @@
         sizer.Fit(self)
      
     def OnSave(self, event):
-        """!Button 'Save' pressed"""
+        """Button 'Save' pressed"""
         self.UpdateSettings()
 
         fileSettings = {}
@@ -461,12 +461,12 @@
             self.scatt_mgr.SettingsUpdated(chanaged_setts)
 
     def OnApply(self, event):
-        """!Button 'Apply' pressed"""
+        """Button 'Apply' pressed"""
         self.UpdateSettings()
         #self.Close()
 
     def OnClose(self, event):
-        """!Button 'Cancel' pressed"""
+        """Button 'Cancel' pressed"""
         self.Close()
 
 class ManageBusyCursorMixin:

Modified: grass/trunk/gui/wxpython/iscatt/frame.py
===================================================================
--- grass/trunk/gui/wxpython/iscatt/frame.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/iscatt/frame.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package iscatt.frame
 
 @brief Main scatter plot widgets.
@@ -295,7 +295,7 @@
         self.SetupScrolling()
 
     def OnClose(self, event):
-        """!Close dialog"""
+        """Close dialog"""
         #TODO
         print "closed"
         self.scatt_mgr.CleanUp()
@@ -478,7 +478,7 @@
         return indices        
 
     def DeselectAll(self):
-        """!Deselect all items"""
+        """Deselect all items"""
         indexList = self.GetSelectedIndices()
         for i in indexList:
             self.Select(i, on = 0)
@@ -514,7 +514,7 @@
         return self.l
 
     def OnCategoryRightUp(self, event):
-        """!Show context menu on right click"""
+        """Show context menu on right click"""
         item, flags = self.HitTest((event.GetX(), event.GetY()))
         if item != wx.NOT_FOUND and flags & wx.LIST_HITTEST_ONITEM:
             self.rightClickedItemIdx = item
@@ -589,7 +589,7 @@
         menu.Destroy()
 
     def OnExportCatRast(self, event):
-        """!Export training areas"""
+        """Export training areas"""
         #TODO
         #   GMessage(parent=self, message=_("No class raster to export."))
         #    return
@@ -625,7 +625,7 @@
         self.RefreshItems(0, len(self.cats_mgr.GetCategories()))
 
     def OnSetColor(self, event):
-        """!Popup opacity level indicator"""
+        """Popup opacity level indicator"""
         cat_idx = self.rightClickedItemIdx
         cat_id = self.cats_mgr.GetCategories()[cat_idx]
 
@@ -646,7 +646,7 @@
         dlg.Destroy()
 
     def OnPopupOpacityLevel(self, event):
-        """!Popup opacity level indicator"""
+        """Popup opacity level indicator"""
 
         cat_id = self.cats_mgr.GetCategories()[self.rightClickedItemIdx]
         cat_attrs = self.cats_mgr.GetCategoryAttrs(cat_id)

Modified: grass/trunk/gui/wxpython/iscatt/iscatt_core.py
===================================================================
--- grass/trunk/gui/wxpython/iscatt/iscatt_core.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/iscatt/iscatt_core.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package iscatt.iscatt_core
 
 @brief Non GUI functions.
@@ -44,7 +44,7 @@
 WARN_NCELLS = 12000 * 12000
 
 class Core:
-    """!Represents scatter plot backend.
+    """Represents scatter plot backend.
     """
     def __init__(self):
         
@@ -211,7 +211,7 @@
         return val
 
 class CatRastUpdater:
-    """!Update backend data structures according to selected areas in mapwindow.
+    """Update backend data structures according to selected areas in mapwindow.
     """
     def __init__(self, scatts_dt, an_data, core):
         self.scatts_dt = scatts_dt
@@ -367,7 +367,7 @@
         return {"GRASS_REGION" :  grass.region_env(**new_r)}
 
 class AnalyzedData:
-    """!Represents analyzed data (bands, region).
+    """Represents analyzed data (bands, region).
     """
     def __init__(self):
         
@@ -408,7 +408,7 @@
         return self.bands_info[band]
 
 class ScattPlotsCondsData:
-    """!Data structure for selected areas in scatter plot(condtions).
+    """Data structure for selected areas in scatter plot(condtions).
     """
     def __init__(self, an_data):
 
@@ -557,7 +557,7 @@
 
                    
 class ScattPlotsData(ScattPlotsCondsData):
-    """!Data structure for computed points (classes) in scatter plots.\
+    """Data structure for computed points (classes) in scatter plots.\
     """
     def __init__(self, an_data):
 
@@ -774,7 +774,7 @@
 """
 
 def idScattToidBands(scatt_id, n_bands):
-    """!Get bands ids from scatter plot id.""" 
+    """Get bands ids from scatter plot id."""
     n_b1 = n_bands - 1
 
     band_1 = (int) ((2 * n_b1 + 1 - sqrt(((2 * n_b1 + 1) * (2 * n_b1 + 1) - 8 * scatt_id))) / 2)
@@ -784,7 +784,7 @@
     return band_1, band_2
 
 def idBandsToidScatt(band_1_id, band_2_id, n_bands):
-    """!Get scatter plot id from band ids."""
+    """Get scatter plot id from band ids."""
     if band_2_id <  band_1_id:
         tmp = band_1_id
         band_1_id = band_2_id
@@ -851,4 +851,4 @@
         raster_info[k] = v
 
     raster_info['range'] = raster_info['max'] - raster_info['min'] + 1
-    return raster_info
\ No newline at end of file
+    return raster_info

Modified: grass/trunk/gui/wxpython/iscatt/plots.py
===================================================================
--- grass/trunk/gui/wxpython/iscatt/plots.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/iscatt/plots.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package iscatt.plots
 
 @brief Ploting widgets.
@@ -200,7 +200,7 @@
         self.main_sizer.Fit(self)
     
     def Plot(self, cats_order, scatts, ellipses, styles):
-        """ Redraws the figure
+        """Redraws the figure
         """
 
         callafter_list = []
@@ -899,7 +899,7 @@
         return self._full_res
 
     def _scale_to_res(self):
-        """ Change self._A and _extent to render an image whose
+        """Change self._A and _extent to render an image whose
         resolution is matched to the eventual rendering."""
 
         ax = self.axes
@@ -945,7 +945,7 @@
     """Similar to matplotlib's imshow command, but produces a ModestImage
 
     Unlike matplotlib version, must explicitly specify axes
-    Author: Chris Beaumont <beaumont at hawaii.edu>
+    @author: Chris Beaumont <beaumont at hawaii.edu>
     """
 
     if not axes._hold:

Modified: grass/trunk/gui/wxpython/iscatt/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/iscatt/toolbars.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/iscatt/toolbars.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package iscatt.toolbars
 
 @brief Scatter plot - toolbars
@@ -23,7 +23,7 @@
 from iscatt.dialogs import SettingsDialog
 
 class MainToolbar(BaseToolbar):
-    """!Main toolbar
+    """Main toolbar
     """
     def __init__(self, parent, scatt_mgr, opt_tools=None):
         BaseToolbar.__init__(self, parent)
@@ -142,7 +142,7 @@
                        entry = 'wxGUI.iscatt')
 
 class EditingToolbar(BaseToolbar):
-    """!Main toolbar
+    """Main toolbar
     """
     def __init__(self, parent, scatt_mgr):
         BaseToolbar.__init__(self, parent)
@@ -155,7 +155,7 @@
         self.scatt_mgr.modeSet.connect(self.ModeSet)
 
     def _toolbarData(self):
-        """!Toolbar data
+        """Toolbar data
         """
         self.icons = {
             'sel_add'         : MetaIcon(img = 'layer-add',
@@ -236,7 +236,7 @@
         return vars(self)[toolName]
 
 class CategoryToolbar(BaseToolbar):
-    """!Main toolbar
+    """Main toolbar
     """
     def __init__(self, parent, scatt_mgr, cats_list):
         BaseToolbar.__init__(self, parent)
@@ -250,7 +250,7 @@
         self.Realize()
 
     def _toolbarData(self):
-        """!Toolbar data
+        """Toolbar data
         """
         self.icons = {
             'add_class'     : MetaIcon(img = 'layer-add',
@@ -264,4 +264,4 @@
                                      lambda event: self.cats_mgr.AddCategory()),
                                      ("remove_class", self.icons['remove_class'],
                                      lambda event: self.cats_list.DeleteCategory()),
-                                    ))
\ No newline at end of file
+                                    ))

Modified: grass/trunk/gui/wxpython/lmgr/frame.py
===================================================================
--- grass/trunk/gui/wxpython/lmgr/frame.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/lmgr/frame.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-"""!
+"""
 @package lmgr::frame
 
 @brief Layer Manager - main menu, layer management toolbar, notebook
@@ -78,7 +78,7 @@
 from rlisetup.frame        import RLiSetupFrame
 
 class GMFrame(wx.Frame):
-    """!Layer Manager frame with notebook widget for controlling GRASS
+    """Layer Manager frame with notebook widget for controlling GRASS
     GIS. Includes command console page for typing GRASS (and other)
     commands, tree widget page for managing map layers.
     """
@@ -239,20 +239,20 @@
         wx.CallAfter(self.Raise)
 
     def _setTitle(self):
-        """!Set frame title"""
+        """Set frame title"""
         if self.workspaceFile:
             self.SetTitle(self.baseTitle + " - " +  os.path.splitext(os.path.basename(self.workspaceFile))[0])
         else:
             self.SetTitle(self.baseTitle)
         
     def _createMenuBar(self):
-        """!Creates menu bar"""
+        """Creates menu bar"""
         self.menubar = Menu(parent=self, model=self._menuTreeBuilder.GetModel(separators=True))
         self.SetMenuBar(self.menubar)
         self.menucmd = self.menubar.GetCmd()
         
     def _createTabMenu(self):
-        """!Creates context menu for display tabs.
+        """Creates context menu for display tabs.
         
         Used to rename display.
         """
@@ -268,13 +268,13 @@
         self.goutput.SetCopyingOfSelectedText(copy)
     
     def IsPaneShown(self, name):
-        """!Check if pane (toolbar, ...) of given name is currently shown"""
+        """Check if pane (toolbar, ...) of given name is currently shown"""
         if self._auimgr.GetPane(name).IsOk():
             return self._auimgr.GetPane(name).IsShown()
         return False
     
     def _createNoteBook(self):
-        """!Creates notebook widgets"""
+        """Creates notebook widgets"""
         self.notebook = GNotebook(parent = self, style = globalvar.FNPageDStyle)
         # create displays notebook widget and add it to main notebook page
         cbStyle = globalvar.FNPageStyle
@@ -332,9 +332,10 @@
         return self.notebook
             
     def AddNvizTools(self, firstTime):
-        """!Add nviz notebook page
+        """Add nviz notebook page
 
-        @param firstTime if a mapdisplay is starting 3D mode for the first time
+        :param firstTime: if a mapdisplay is starting 3D mode for the
+                          first time
         """
         Debug.msg(5, "GMFrame.AddNvizTools()")
         if not haveNviz:
@@ -362,7 +363,7 @@
                 self.nviz.UpdatePage(page)
 
     def RemoveNvizTools(self):
-        """!Remove nviz notebook page"""
+        """Remove nviz notebook page"""
         # if more mapwindow3D were possible, check here if nb page should be removed
         self.notebook.SetSelectionByName('layers')
         self.notebook.DeletePage('nviz')
@@ -374,7 +375,7 @@
         self._auimgr.Update()
     
     def WorkspaceChanged(self):
-        """!Update window title"""
+        """Update window title"""
         if not self.workspaceChanged:
             self.workspaceChanged = True
         
@@ -382,7 +383,7 @@
             self._setTitle()
         
     def OnLocationWizard(self, event):
-        """!Launch location wizard"""
+        """Launch location wizard"""
         from location_wizard.wizard import LocationWizard
         from location_wizard.dialogs import RegionDef
         
@@ -432,7 +433,7 @@
                     dlg.Destroy()
         
     def OnSettingsChanged(self):
-        """!Here can be functions which have to be called
+        """Here can be functions which have to be called
         after receiving settingsChanged signal. 
         Now only set copying of selected text to clipboard (in goutput).
         """
@@ -440,19 +441,19 @@
         self._setCopyingOfSelectedText()
         
     def OnGCPManager(self, event=None, cmd=None):
-        """!Launch georectifier module. See OnIClass documentation.
+        """Launch georectifier module. See OnIClass documentation.
         """
         GCPWizard(self, self._giface)
 
     def OnGModeler(self, event=None, cmd=None):
-        """!Launch Graphical Modeler. See OnIClass documentation."""
+        """Launch Graphical Modeler. See OnIClass documentation."""
         win = ModelFrame(parent = self, giface = self._giface)
         win.CentreOnScreen()
         
         win.Show()
         
     def OnPsMap(self, event=None, cmd=None):
-        """!Launch Cartographic Composer. See OnIClass documentation.
+        """Launch Cartographic Composer. See OnIClass documentation.
         """
         win = PsMapFrame(parent = self)
         win.CentreOnScreen()
@@ -460,7 +461,7 @@
         win.Show()
 
     def OnMapSwipe(self, event=None, cmd=None):
-        """!Launch Map Swipe. See OnIClass documentation."""
+        """Launch Map Swipe. See OnIClass documentation."""
         win = SwipeMapFrame(parent=self, giface=self._giface)
 
         rasters = []
@@ -481,7 +482,7 @@
         win.Show()
 
     def OnRLiSetup(self, event=None, cmd=None):
-        """!Launch r.li Setup. See OnIClass documentation."""
+        """Launch r.li Setup. See OnIClass documentation."""
         win = RLiSetupFrame(parent = self)
         win.CentreOnScreen()
         
@@ -495,7 +496,7 @@
         self.SetStatusText('')
         
     def OnRunModel(self, event):
-        """!Run model"""
+        """Run model"""
         filename = ''
         dlg = wx.FileDialog(parent = self, message =_("Choose model to run"),
                             defaultDir = os.getcwd(),
@@ -514,7 +515,7 @@
         dlg.Destroy()
         
     def OnMapsets(self, event):
-        """!Launch mapset access dialog
+        """Launch mapset access dialog
         """
         dlg = MapsetAccess(parent = self, id = wx.ID_ANY)
         dlg.CenterOnScreen()
@@ -527,7 +528,7 @@
                        operation = 'set')
         
     def OnCBPageChanged(self, event):
-        """!Page in notebook (display) changed"""
+        """Page in notebook (display) changed"""
         self.currentPage    = self.notebookLayers.GetCurrentPage()
         self.currentPageNum = self.notebookLayers.GetSelection()
         try:
@@ -539,7 +540,7 @@
         event.Skip()
 
     def OnPageChanged(self, event):
-        """!Page in notebook changed"""
+        """Page in notebook changed"""
         page = event.GetSelection()
         if page == self.notebook.GetPageIndexByName('output'):
             wx.CallAfter(self.goutput.ResetFocus)
@@ -548,7 +549,7 @@
         event.Skip()
 
     def OnCBPageClosed(self, event):
-        """!Page of notebook closed
+        """Page of notebook closed
         Also close associated map display
         """
         if UserSettings.Get(group = 'manager', key = 'askOnQuit', subkey = 'enabled'):
@@ -592,7 +593,7 @@
         event.Skip()
 
     def _switchPage(self, notification):
-        """!Manages @c 'output' notebook page according to event notification."""
+        """Manages @c 'output' notebook page according to event notification."""
         if notification == Notification.HIGHLIGHT:
             self.notebook.HighlightPageByName('output')
         if notification == Notification.MAKE_VISIBLE:
@@ -603,7 +604,7 @@
             self.Raise()
 
     def RunSpecialCmd(self, command):
-        """!Run command from command line, check for GUI wrappers"""
+        """Run command from command line, check for GUI wrappers"""
         if re.compile('^d\..*').search(command[0]):
             self.RunDisplayCmd(command)
         elif re.compile('r[3]?\.mapcalc').search(command[0]):
@@ -629,9 +630,9 @@
                              ' not supported.' % ' '.join(command))
 
     def RunDisplayCmd(self, command):
-        """!Handles display commands.
+        """Handles display commands.
 
-        @param command command in a list
+        :param command: command in a list
         """
         if not self.currentPage:
             self.NewDisplay(show = True)
@@ -669,27 +670,27 @@
                                          lcmd = command)
 
     def GetLayerNotebook(self):
-        """!Get Layers Notebook"""
+        """Get Layers Notebook"""
         return self.notebookLayers
     
     def GetLayerTree(self):
-        """!Get current layer tree
+        """Get current layer tree
 
-        @return LayerTree instance
-        @return None no layer tree selected
+        :return: LayerTree instance
+        :return: None no layer tree selected
         """
         if self.currentPage:
             return self.currentPage.maptree
         return None
     
     def GetMapDisplay(self, onlyCurrent = True):
-        """!Get current map display
+        """Get current map display
 
-        @param onlyCurrent True to return only active mapdisplay
-                           False for list of all mapdisplays
+        :param bool onlyCurrent: True to return only active mapdisplay
+                                 False for list of all mapdisplays
 
-        @return MapFrame instance (or list)
-        @return None no mapdisplay selected
+        :return: MapFrame instance (or list)
+        :return: None no mapdisplay selected
         """
         if onlyCurrent:
             if self.currentPage:
@@ -704,20 +705,20 @@
             return mlist
 
     def GetLogWindow(self):
-        """!Gets console for command output and messages"""
+        """Gets console for command output and messages"""
         return self._gconsole
     
     def GetToolbar(self, name):
-        """!Returns toolbar if exists else None"""
+        """Returns toolbar if exists else None"""
         if name in self.toolbars:
             return self.toolbars[name]
         
         return None
         
     def GetMenuCmd(self, event):
-        """!Get GRASS command from menu item
+        """Get GRASS command from menu item
 
-        Return command as a list"""
+        :return: command as a list"""
         layer = None
         if event:
             cmd = self.menucmd[event.GetId()]
@@ -751,13 +752,13 @@
         return cmdlist
 
     def RunMenuCmd(self, event = None, cmd = []):
-        """!Run command selected from menu"""
+        """Run command selected from menu"""
         if event:       
             cmd = self.GetMenuCmd(event)
         self._gconsole.RunCmd(cmd)
 
     def OnMenuCmd(self, event = None, cmd = []):
-        """!Parse command selected from menu"""
+        """Parse command selected from menu"""
         if event:       
             cmd = self.GetMenuCmd(event)
         GUI(parent=self, giface=self._giface).ParseCommand(cmd)
@@ -770,7 +771,7 @@
             self.NewDisplay(show = True).OnVNet(event)
         
     def OnVDigit(self, event):
-        """!Start vector digitizer
+        """Start vector digitizer
         """
         if not self.currentPage:
             self.MsgNoLayerSelected()
@@ -818,7 +819,7 @@
         tree.OnStartEditing(None) # TODO: change to signal
         
     def OnRunScript(self, event):
-        """!Run user-defined script"""
+        """Run user-defined script"""
         # open dialog and choose script file
         dlg = wx.FileDialog(parent = self, message = _("Choose script file to run"),
                             defaultDir = os.getcwd(),
@@ -903,7 +904,7 @@
                          { 'loc' : location, 'mapset' : mapset })
         
     def OnCreateMapset(self, event):
-        """!Create new mapset"""
+        """Create new mapset"""
         dlg = wx.TextEntryDialog(parent = self,
                                  message = _('Enter name for new mapset:'),
                                  caption = _('Create new mapset'))
@@ -948,10 +949,10 @@
                     dispId += 1 
         
     def OnChangeCWD(self, event=None, cmd=None):
-        """!Change current working directory
+        """Change current working directory
 
-        @param event to be able to serve as a handler of wx event
-        @param command cd command as a list (must start with 'cd')
+        :param event: to be able to serve as a handler of wx event
+        :param cmd: command as a list (must start with 'cd')
         """
         # local functions
         def write_beginning(directory):
@@ -996,11 +997,11 @@
                 write_end()
 
     def GetCwdPath(self):
-        """!Get current working directory or None"""
+        """Get current working directory or None"""
         return self.cwdPath
     
     def OnNewVector(self, event):
-        """!Create new vector map layer"""
+        """Create new vector map layer"""
         dlg = CreateNewVector(self, giface=self._giface,
                               cmd=(('v.edit',
                                     {'tool': 'create'},
@@ -1018,7 +1019,7 @@
         dlg.Destroy()
         
     def OnSystemInfo(self, event):
-        """!Print system information"""
+        """Print system information"""
         vInfo = grass.version()
         if not vInfo:
             sys.stderr.write(_("Unable to get GRASS version\n"))
@@ -1058,13 +1059,13 @@
         self._gconsole.WriteCmdLog(' ')
     
     def OnAboutGRASS(self, event):
-        """!Display 'About GRASS' dialog"""
+        """Display 'About GRASS' dialog"""
         win = AboutWindow(self)
         win.CentreOnScreen()
         win.Show(True)  
 
     def _popupMenu(self, data):
-        """!Create popup menu
+        """Create popup menu
         """
         menu = wx.Menu()
         
@@ -1082,7 +1083,7 @@
         menu.Destroy()
 
     def OnImportMenu(self, event):
-        """!Import maps menu (import, link)
+        """Import maps menu (import, link)
         """
         self._popupMenu((('rastImport',    self.OnImportGdalLayers),
                          ('rastLink',      self.OnLinkGdalLayers),
@@ -1093,7 +1094,7 @@
                          ('vectOut',       self.OnVectorOutputFormat)))
         
     def OnWorkspaceNew(self, event = None):
-        """!Create new workspace file
+        """Create new workspace file
 
         Erase current workspace settings first
         """
@@ -1137,7 +1138,7 @@
         self._setTitle()
         
     def OnWorkspaceOpen(self, event = None):
-        """!Open file with workspace definition"""
+        """Open file with workspace definition"""
         dlg = wx.FileDialog(parent = self, message = _("Choose workspace file"),
                             defaultDir = os.getcwd(), wildcard = _("GRASS Workspace File (*.gxw)|*.gxw"))
 
@@ -1159,12 +1160,13 @@
         self._setTitle()
 
     def LoadWorkspaceFile(self, filename):
-        """!Load layer tree definition stored in GRASS Workspace XML file (gxw)
+        """Load layer tree definition stored in GRASS Workspace XML file (gxw)
 
-        @todo Validate against DTD
+        .. todo::
+            Validate against DTD
         
-        @return True on success
-        @return False on error
+        :return: True on success
+        :return: False on error
         """
         # parse workspace file
         try:
@@ -1288,7 +1290,7 @@
         return True
     
     def OnWorkspaceLoadGrcFile(self, event):
-        """!Load map layers from GRC file (Tcl/Tk GUI) into map layer tree"""
+        """Load map layers from GRC file (Tcl/Tk GUI) into map layer tree"""
         dlg = wx.FileDialog(parent = self, message = _("Choose GRC file to load"),
                             defaultDir = os.getcwd(), wildcard = _("Old GRASS Workspace File (*.grc)|*.grc"))
 
@@ -1326,7 +1328,7 @@
             maptree.Map.ReverseListOfLayers()
 
     def OnWorkspaceSaveAs(self, event = None):
-        """!Save workspace definition to selected file"""
+        """Save workspace definition to selected file"""
         dlg = wx.FileDialog(parent = self, message = _("Choose file to save current workspace"),
                             defaultDir = os.getcwd(), wildcard = _("GRASS Workspace File (*.gxw)|*.gxw"), style = wx.FD_SAVE)
 
@@ -1356,7 +1358,7 @@
         self._setTitle()
 
     def OnWorkspaceSave(self, event = None):
-        """!Save file with workspace definition"""
+        """Save file with workspace definition"""
         if self.workspaceFile:
             dlg = wx.MessageDialog(self, message = _("Workspace file <%s> already exists. "
                                                    "Do you want to overwrite this file?") % \
@@ -1373,9 +1375,9 @@
             self.OnWorkspaceSaveAs()
 
     def SaveToWorkspaceFile(self, filename):
-        """!Save layer tree layout to workspace file
+        """Save layer tree layout to workspace file
         
-        Return True on success, False on error
+        :return: True on success, False on error
         """
         tmpfile = tempfile.TemporaryFile(mode = 'w+b')
         try:
@@ -1401,7 +1403,7 @@
         return True
     
     def OnWorkspaceClose(self, event = None):
-        """!Close file with workspace definition
+        """Close file with workspace definition
         
         If workspace has been modified ask user to save the changes.
         """
@@ -1415,19 +1417,19 @@
         self.currentPage = None
         
     def OnDisplayClose(self, event = None):
-        """!Close current map display window
+        """Close current map display window
         """
         if self.currentPage and self.GetMapDisplay():
             self.GetMapDisplay().OnCloseWindow(event)
         
     def OnDisplayCloseAll(self, event = None):
-        """!Close all open map display windows
+        """Close all open map display windows
         """
         for display in self.GetMapDisplay(onlyCurrent = False):
             display.OnCloseWindow(event)
         
     def OnRenameDisplay(self, event):
-        """!Change Map Display name"""
+        """Change Map Display name"""
         name = self.notebookLayers.GetPageText(self.currentPageNum)
         dlg = wx.TextEntryDialog(self, message = _("Enter new name:"),
                                  caption = _("Rename Map Display"), defaultValue = name)
@@ -1442,14 +1444,14 @@
         dlg.Destroy()
         
     def OnRasterRules(self, event):
-        """!Launches dialog for raster color rules
+        """Launches dialog for raster color rules
         """
         ctable = RasterColorTable(self, layerTree = self.GetLayerTree())
         ctable.Show()
         ctable.CentreOnScreen()
 
     def OnVectorRules(self, event):
-        """!Launches dialog for vector color rules
+        """Launches dialog for vector color rules
         """
         ctable = VectorColorTable(self, layerTree = self.GetLayerTree(),
                                   attributeType = 'color')
@@ -1457,26 +1459,26 @@
         ctable.CentreOnScreen()
         
     def OnEditImageryGroups(self, event, cmd = None):
-        """!Show dialog for creating and editing groups.
+        """Show dialog for creating and editing groups.
         """
         dlg = GroupDialog(self)
         dlg.CentreOnScreen()
         dlg.Show()
         
     def OnInstallExtension(self, event):
-        """!Install extension from GRASS Addons SVN repository"""
+        """Install extension from GRASS Addons SVN repository"""
         win = InstallExtensionWindow(self, giface=self._giface, size = (650, 550))
         win.CentreOnScreen()
         win.Show()
         
     def OnManageExtension(self, event):
-        """!Uninstall extension"""
+        """Uninstall extension"""
         win = ManageExtensionWindow(self, size = (650, 300))
         win.CentreOnScreen()
         win.Show()
 
     def OnPreferences(self, event):
-        """!General GUI preferences/settings
+        """General GUI preferences/settings
         """
         if not self.dialogs['preferences']:
             dlg = PreferencesDialog(parent = self, giface = self._giface)
@@ -1488,7 +1490,7 @@
         self.dialogs['preferences'].ShowModal()
         
     def OnNvizPreferences(self, event):
-        """!Show nviz preferences"""
+        """Show nviz preferences"""
         if not self.dialogs['nvizPreferences']:
             dlg = NvizPreferencesDialog(parent = self, giface = self._giface)
             self.dialogs['nvizPreferences'] = dlg
@@ -1497,19 +1499,21 @@
         self.dialogs['nvizPreferences'].Show()
 
     def OnHelp(self, event):
-        """!Show help
+        """Show help
         """
         self._gconsole.RunCmd(['g.manual','-i'])
         
     def OnIClass(self, event=None, cmd=None):
-        """!Start wxIClass tool
+        """Start wxIClass tool
 
         The parameters of all handlers which are associated with module
         and contained in menu/toolboxes must be event and cmd.
-        When called from menu event is always None and cmd is the associated
-        command (list containing a module name and paremeters).
-        @todo This documentation is actually documentation of some component related
-        to gui_core/menu.py file.
+        When called from menu event is always None and cmd is the
+        associated command (list containing a module name and paremeters).
+        
+        .. todo::
+            This documentation is actually documentation of some
+            component related to gui_core/menu.py file.
         """
         from iclass.frame import IClassMapFrame, haveIClass, errMsg
         if not haveIClass:
@@ -1523,7 +1527,7 @@
         win.Show()
 
     def OnAnimationTool(self, event=None, cmd=None):
-        """!Launch Animation tool. See OnIClass documentation.
+        """Launch Animation tool. See OnIClass documentation.
         """
         from animation.frame import AnimationFrame
 
@@ -1549,7 +1553,7 @@
                 frame.SetAnimations([layerList, None, None, None])
 
     def OnHistogram(self, event):
-        """!Init histogram display canvas and tools
+        """Init histogram display canvas and tools
         """
         from modules.histogram import HistogramFrame
         win = HistogramFrame(self, giface=self._giface)
@@ -1560,7 +1564,7 @@
         win.Update()
 
     def OnMapCalculator(self, event, cmd = ''):
-        """!Init map calculator for interactive creation of mapcalc statements
+        """Init map calculator for interactive creation of mapcalc statements
         """
         if event:
             try:
@@ -1575,7 +1579,7 @@
         win.Show()
     
     def OnVectorCleaning(self, event, cmd = ''):
-        """!Init interactive vector cleaning
+        """Init interactive vector cleaning
         """
         from modules.vclean import VectorCleaningFrame
         win = VectorCleaningFrame(parent = self)
@@ -1583,47 +1587,47 @@
         win.Show()
 
     def OnRasterOutputFormat(self, event):
-        """!Set raster output format handler"""
+        """Set raster output format handler"""
         self.OnMenuCmd(cmd = ['r.external.out'])
 
     def OnVectorOutputFormat(self, event):
-        """!Set vector output format handler"""
+        """Set vector output format handler"""
         dlg = GdalOutputDialog(parent = self, ogr = True)
         dlg.CentreOnScreen()
         dlg.Show()
     
     def OnImportDxfFile(self, event, cmd = None):
-        """!Convert multiple DXF layers to GRASS vector map layers"""
+        """Convert multiple DXF layers to GRASS vector map layers"""
         dlg = DxfImportDialog(parent = self, giface = self._giface)
         dlg.CentreOnScreen()
         dlg.Show()
 
     def OnImportGdalLayers(self, event, cmd = None):
-        """!Convert multiple GDAL layers to GRASS raster map layers"""
+        """Convert multiple GDAL layers to GRASS raster map layers"""
         dlg = GdalImportDialog(parent = self, giface = self._giface)
         dlg.CentreOnScreen()
         dlg.Show()
 
     def OnLinkGdalLayers(self, event, cmd = None):
-        """!Link multiple GDAL layers to GRASS raster map layers"""
+        """Link multiple GDAL layers to GRASS raster map layers"""
         dlg = GdalImportDialog(parent = self, giface = self._giface, link = True)
         dlg.CentreOnScreen()
         dlg.Show()
         
     def OnImportOgrLayers(self, event, cmd = None):
-        """!Convert multiple OGR layers to GRASS vector map layers"""
+        """Convert multiple OGR layers to GRASS vector map layers"""
         dlg = GdalImportDialog(parent = self, giface = self._giface, ogr = True)
         dlg.CentreOnScreen()
         dlg.Show()
         
     def OnLinkOgrLayers(self, event, cmd = None):
-        """!Links multiple OGR layers to GRASS vector map layers"""
+        """Links multiple OGR layers to GRASS vector map layers"""
         dlg = GdalImportDialog(parent = self, giface = self._giface, ogr = True, link = True)
         dlg.CentreOnScreen()
         dlg.Show()
         
     def OnAddWS(self, event, cmd = None):
-        """!Add web services layer"""
+        """Add web services layer"""
         from web_services.dialogs import AddWSDialog
         dlg = AddWSDialog(parent = self, giface = self._giface)
         dlg.CentreOnScreen()
@@ -1632,7 +1636,7 @@
         dlg.Show()
 
     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.currentPage:
             self.MsgNoLayerSelected()
@@ -1674,17 +1678,17 @@
         dbmanager.Show()
         
     def OnNewDisplay(self, event = None):
-        """!Create new layer tree and map display instance"""
+        """Create new layer tree and map display instance"""
         self.NewDisplay()
 
     def NewDisplay(self, name = None, show = True):
-        """!Create new layer tree, which will
+        """Create new layer tree, which will
         create an associated map display frame
 
-        @param name name of new map display
-        @param show show map display window if True
+        :param name: name of new map display
+        :param show: show map display window if True
 
-        @return reference to mapdisplay intance
+        :return: reference to mapdisplay intance
         """
         Debug.msg(1, "GMFrame.NewDisplay(): idx=%d" % self.displayIndex)
         
@@ -1751,7 +1755,7 @@
             self.currentPage = self.notebookLayers.GetCurrentPage()
 
     def _onMapDisplayStarting3dMode(self, mapDisplayPage):
-        """!Disables 3D mode for all map displays except for @p mapDisplay"""
+        """Disables 3D mode for all map displays except for @p mapDisplay"""
         # TODO: it should be disabled also for newly created map windows
         # moreover mapdisp.Disable3dMode() does not work properly
         for page in range(0, self.GetLayerNotebook().GetPageCount()):
@@ -1760,7 +1764,7 @@
                 mapdisp.Disable3dMode()
 
     def OnAddMaps(self, event = None):
-        """!Add selected map layers into layer tree"""
+        """Add selected map layers into layer tree"""
         dialog = MapLayersDialog(parent = self, title = _("Add selected map layers into layer tree"))
         dialog.applyAddingMapLayers.connect(self.AddMaps)
         val = dialog.ShowModal()
@@ -1770,12 +1774,12 @@
         dialog.Destroy()
 
     def AddMaps(self, mapLayers, ltype, check = False):
-        """!Add map layers to layer tree.
+        """Add map layers to layer tree.
 
-        @param mapLayers list of map names
-        @param ltype layer type ('rast', 'rast3d', 'vect')
-        @param check @c True if new layers should be checked in layer tree
-        @c False otherwise
+        :param list mapLayers: list of map names
+        :param str ltype: layer type ('rast', 'rast3d', 'vect')
+        :param bool check: True if new layers should be checked in
+                           layer tree False otherwise
         """
         # start new map display if no display is available
         if not self.currentPage:
@@ -1806,14 +1810,14 @@
                                        lgroup = None)
 
     def _updateCurrentMap(self, **kwargs):
-        """!Updates map of the current map window."""
+        """Updates map of the current map window."""
         if kwargs.has_key('delay'):
             self.GetMapDisplay().GetWindow().UpdateMap(delay=kwargs['delay'])
         else:
             self.GetMapDisplay().GetWindow().UpdateMap()
 
     def OnMapCreated(self, name, ltype, add=None):
-        """!Decides wheter the map should be added to layer tree."""
+        """Decides wheter the map should be added to layer tree."""
         if add is None:
             # add new map into layer if globally enabled
             if UserSettings.Get(group = 'cmd',
@@ -1828,7 +1832,7 @@
             display.GetWindow().UpdateMap(render = True)
 
     def AddOrUpdateMap(self, mapName, ltype):
-        """!Add map layer or update"""
+        """Add map layer or update"""
         # start new map display if no display is available
 
         # TODO: standardize type identifiers
@@ -1857,7 +1861,7 @@
                 self.AddMaps([mapName], grassType, check = True)
 
     def OnAddRaster(self, event):
-        """!Add raster map layer"""
+        """Add raster map layer"""
         # start new map display if no display is available
         if not self.currentPage:
             self.NewDisplay(show = True)
@@ -1866,7 +1870,7 @@
         self.GetLayerTree().AddLayer('raster')
         
     def OnAddRasterMisc(self, event):
-        """!Create misc raster popup-menu"""
+        """Create misc raster popup-menu"""
         # start new map display if no display is available
         if not self.currentPage:
             self.NewDisplay(show = True)
@@ -1885,7 +1889,7 @@
         self.GetMapDisplay().Show()
         
     def OnAddVector(self, event):
-        """!Add vector map to the current layer tree"""
+        """Add vector map to the current layer tree"""
         # start new map display if no display is available
         if not self.currentPage:
             self.NewDisplay(show = True)
@@ -1894,7 +1898,7 @@
         self.GetLayerTree().AddLayer('vector')
 
     def OnAddVectorMisc(self, event):
-        """!Create misc vector popup-menu"""
+        """Create misc vector popup-menu"""
         # start new map display if no display is available
         if not self.currentPage:
             self.NewDisplay(show = True)
@@ -1906,17 +1910,17 @@
         self.GetMapDisplay().Show()
 
     def OnAddVectorTheme(self, event):
-        """!Add thematic vector map to the current layer tree"""
+        """Add thematic vector map to the current layer tree"""
         self.notebook.SetSelectionByName('layers')
         self.GetLayerTree().AddLayer('thememap')
 
     def OnAddVectorChart(self, event):
-        """!Add chart vector map to the current layer tree"""
+        """Add chart vector map to the current layer tree"""
         self.notebook.SetSelectionByName('layers')
         self.GetLayerTree().AddLayer('themechart')
 
     def OnAddOverlay(self, event):
-        """!Create decoration overlay menu""" 
+        """Create decoration overlay menu"""
         # start new map display if no display is available
         if not self.currentPage:
             self.NewDisplay(show = True)
@@ -1932,27 +1936,27 @@
         self.GetMapDisplay().Show()
         
     def OnAddRaster3D(self, event):
-        """!Add 3D raster map to the current layer tree"""
+        """Add 3D raster map to the current layer tree"""
         self.notebook.SetSelectionByName('layers')
         self.GetLayerTree().AddLayer('3d-raster')
 
     def OnAddRasterRGB(self, event):
-        """!Add RGB raster map to the current layer tree"""
+        """Add RGB raster map to the current layer tree"""
         self.notebook.SetSelectionByName('layers')
         self.GetLayerTree().AddLayer('rgb')
 
     def OnAddRasterHIS(self, event):
-        """!Add HIS raster map to the current layer tree"""
+        """Add HIS raster map to the current layer tree"""
         self.notebook.SetSelectionByName('layers')
         self.GetLayerTree().AddLayer('his')
 
     def OnAddRasterShaded(self, event):
-        """!Add shaded relief raster map to the current layer tree"""
+        """Add shaded relief raster map to the current layer tree"""
         self.notebook.SetSelectionByName('layers')
         self.GetLayerTree().AddLayer('shaded')
 
     def OnAddRasterArrow(self, event):
-        """!Add flow arrows raster map to the current layer tree"""
+        """Add flow arrows raster map to the current layer tree"""
         self.notebook.SetSelectionByName('layers')
         # here it seems that it should be retrieved from the mapwindow
         mapdisplay = self.GetMapDisplay()
@@ -1966,7 +1970,7 @@
         self.GetLayerTree().AddLayer('rastarrow')
 
     def OnAddRasterNum(self, event):
-        """!Add cell number raster map to the current layer tree"""
+        """Add cell number raster map to the current layer tree"""
         self.notebook.SetSelectionByName('layers')
         mapdisplay = self.GetMapDisplay()
         resolution = mapdisplay.mapWindowProperties.resolution
@@ -1984,7 +1988,7 @@
         self.GetLayerTree().AddLayer('rastnum')
 
     def OnAddCommand(self, event):
-        """!Add command line map layer to the current layer tree"""
+        """Add command line map layer to the current layer tree"""
         # start new map display if no display is available
         if not self.currentPage:
             self.NewDisplay(show = True)
@@ -1996,7 +2000,7 @@
         self.GetMapDisplay().Show()
 
     def OnAddGroup(self, event):
-        """!Add layer group"""
+        """Add layer group"""
         # start new map display if no display is available
         if not self.currentPage:
             self.NewDisplay(show = True)
@@ -2008,22 +2012,22 @@
         self.GetMapDisplay().Show()
 
     def OnAddGrid(self, event):
-        """!Add grid map layer to the current layer tree"""
+        """Add grid map layer to the current layer tree"""
         self.notebook.SetSelectionByName('layers')
         self.GetLayerTree().AddLayer('grid')
 
     def OnAddGeodesic(self, event):
-        """!Add geodesic line map layer to the current layer tree"""
+        """Add geodesic line map layer to the current layer tree"""
         self.notebook.SetSelectionByName('layers')
         self.GetLayerTree().AddLayer('geodesic')
 
     def OnAddRhumb(self, event):
-        """!Add rhumb map layer to the current layer tree"""
+        """Add rhumb map layer to the current layer tree"""
         self.notebook.SetSelectionByName('layers')
         self.GetLayerTree().AddLayer('rhumb')
 
     def OnAddLabels(self, event):
-        """!Add vector labels map layer to the current layer tree"""
+        """Add vector labels map layer to the current layer tree"""
         # start new map display if no display is available
         if not self.currentPage:
             self.NewDisplay(show = True)
@@ -2035,7 +2039,7 @@
         self.GetMapDisplay().Show()
 
     def OnDeleteLayer(self, event):
-        """!Remove selected map layer from the current layer Tree
+        """Remove selected map layer from the current layer Tree
         """
         if not self.currentPage or not self.GetLayerTree().layer_selected:
             self.MsgNoLayerSelected()
@@ -2075,7 +2079,7 @@
             self.GetLayerTree().Delete(layer)
         
     def OnKeyDown(self, event):
-        """!Key pressed"""
+        """Key pressed"""
         kc = event.GetKeyCode()
         
         if event.ControlDown():
@@ -2101,7 +2105,7 @@
         event.Skip()
 
     def OnCloseWindow(self, event):
-        """!Cleanup when wxGUI is quitted"""
+        """Cleanup when wxGUI is quitted"""
         # save command protocol if actived
         if self.goutput.btnCmdProtocol.GetValue():
             self.goutput.CmdProtocolSave()
@@ -2154,17 +2158,17 @@
         self.Destroy()
         
     def MsgNoLayerSelected(self):
-        """!Show dialog message 'No layer selected'"""
+        """Show dialog message 'No layer selected'"""
         wx.MessageBox(parent = self,
                       message = _("No map layer selected. Operation canceled."),
                       caption = _("Message"),
                       style = wx.OK | wx.ICON_INFORMATION | wx.CENTRE)
                       
     def MsgDisplayResolution(self, limitText = None):
-        """!Returns dialog for d.rast.num, d.rast.arrow
+        """Returns dialog for d.rast.num, d.rast.arrow
             when display resolution is not constrained
             
-        @param limitText adds a note about cell limit
+        :param limitText: adds a note about cell limit
         """
         message = _("Display resolution is currently not constrained to "
                     "computational settings. "

Modified: grass/trunk/gui/wxpython/lmgr/giface.py
===================================================================
--- grass/trunk/gui/wxpython/lmgr/giface.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/lmgr/giface.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package lmgr.giface
 
 @brief Layer Manager GRASS interface
@@ -22,9 +22,9 @@
 
 
 class Layer(object):
-    """!@implements core::giface::Layer
+    """@implements core::giface::Layer
 
-    @note Currently implemented without specifying the interface.
+    .. note:: Currently implemented without specifying the interface.
     It only provides all attributes of existing layer as used in lmgr.
     """
     def __init__(self, pydata):
@@ -41,21 +41,21 @@
 
 
 class LayerList(object):
-    """!@implements core.giface.Layer"""
+    """@implements core.giface.Layer"""
     def __init__(self, tree):
         self._tree = tree
 
     def __iter__(self):
-        """!Iterates over the contents of the list."""
+        """Iterates over the contents of the list."""
         for item in self._tree.GetSelectedLayer(multi=True):
             yield Layer(self._tree.GetPyData(item))
 
     def __getitem__(self, index):
-        """!Select a layer from the LayerList using the index."""
+        """Select a layer from the LayerList using the index."""
         return [l for l in self][index]
 
     def __repr__(self):
-        """!Return a representation of the object."""
+        """Return a representation of the object."""
         return "LayerList(%r)" % [layer for layer in self]
 
     def GetSelectedLayers(self, checkedOnly=True):
@@ -69,7 +69,7 @@
 
     # TODO: it is not clear if default of checkedOnly should be False or True
     def GetSelectedLayer(self, checkedOnly=False):
-        """!Returns selected layer or None when there is no selected layer."""
+        """Returns selected layer or None when there is no selected layer."""
         item = self._tree.GetSelectedLayer(multi=False,
                                            checkedOnly=checkedOnly)
         if item is None:
@@ -79,20 +79,20 @@
             return Layer(data)
 
     def GetLayerInfo(self, layer):
-        """!For compatibility only, will be removed."""
+        """For compatibility only, will be removed."""
         return Layer(self._tree.GetPyData(layer))
 
     def AddLayer(self, ltype, name=None, checked=None,
                  opacity=1.0, cmd=None):
-        """!Adds a new layer to the layer list.
+        """Adds a new layer to the layer list.
 
         Launches property dialog if needed (raster, vector, etc.)
 
-        @param ltype layer type (raster, vector, 3d-raster, ...)
-        @param name layer name
-        @param checked if True layer is checked
-        @param opacity layer opacity level
-        @param cmd command (given as a list)
+        :param ltype: layer type (raster, vector, 3d-raster, ...)
+        :param name: layer name
+        :param checked: if True layer is checked
+        :param opacity: layer opacity level
+        :param cmd: command (given as a list)
         """
         self._tree.AddLayer(ltype=ltype, lname=name, lchecked=checked,
                             lopacity=opacity, lcmd=cmd)
@@ -109,7 +109,7 @@
             return layers
 
     def GetLayerByData(self, key, value):
-        """!Returns layer with specified.
+        """Returns layer with specified.
 
         Returns only one layer.
         Avoid using this method, it might be removed in the future.
@@ -125,9 +125,9 @@
 
 
 class LayerManagerGrassInterface(object):
-    """!@implements core::giface::GrassInterface"""
+    """@implements core::giface::GrassInterface"""
     def __init__(self, lmgr):
-        """!Costructor is specific to the current implementation.
+        """Costructor is specific to the current implementation.
 
         Uses Layer Manager object including its private attributes.
         (It encapsulates existing Layer Manager so access to private members
@@ -191,16 +191,16 @@
         self.lmgr.goutput.GetPrompt().UpdateCmdHistory(cmd)
 
 class LayerManagerGrassInterfaceForMapDisplay(object):
-    """!Provides reference only to the given layer list (according to tree),
+    """Provides reference only to the given layer list (according to tree),
         not to the current.
 
         @implements core::giface::GrassInterface
     """
     def __init__(self, giface, tree):
-        """!
-        @param giface original grass interface
-        @param tree tree which will be used instead of the tree from giface
         """
+        :param giface: original grass interface
+        :param tree: tree which will be used instead of the tree from giface
+        """
         self._giface = giface
         self.tree = tree
 

Modified: grass/trunk/gui/wxpython/lmgr/layertree.py
===================================================================
--- grass/trunk/gui/wxpython/lmgr/layertree.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/lmgr/layertree.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package lmgr.layertree
 
 @brief Utility classes for map layer management.
@@ -110,7 +110,7 @@
     }
 
 class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
-    """!Creates layer tree structure
+    """Creates layer tree structure
     """
     def __init__(self, parent, giface,
                  id = wx.ID_ANY, style = wx.SUNKEN_BORDER,
@@ -223,10 +223,10 @@
             self._icon[iconKey] = il.Add(icon)
             
     def _getSelectedLayer(self):
-        """!Get selected layer.
+        """Get selected layer.
 
-        @return None if no layer selected
-        @return first layer (GenericTreeItem instance) of all selected
+        :return: None if no layer selected
+        :return: first layer (GenericTreeItem instance) of all selected
         """
         return self.GetSelectedLayer(multi = False, checkedOnly = False)
 
@@ -234,20 +234,21 @@
     layer_selected = property(fget = _getSelectedLayer)
 
     def GetSelectedLayers(self, checkedOnly = False):
-        """!Get selected layers as a list.
+        """Get selected layers as a list.
 
-        @todo somewhere we have checkedOnly default True and elsewhere False
+        .. todo::
+            somewhere we have checkedOnly default True and elsewhere False
         """
         return self.GetSelectedLayer(multi = True, checkedOnly = checkedOnly)
 
     def GetSelectedLayer(self, multi = False, checkedOnly = False):
-        """!Get selected layer from layer tree.
+        """Get selected layer from layer tree.
         
-        @param multi return multiple selection as a list
-        @param checkedOnly return only the checked layers
+        :param bool multi: return multiple selection as a list
+        :param bool checkedOnly: return only the checked layers
 
-        @return None or [] for multi == True if no layer selected 
-        @return first layer (GenericTreeItem instance) of all selected or a list
+        :return: None or [] for multi == True if no layer selected 
+        :return: first layer (GenericTreeItem instance) of all selected or a list
         """
         ret = []
         layers = self.GetSelections()
@@ -269,9 +270,9 @@
         self.SetItemImage(item, self._icon[iconName])
         
     def _setGradient(self, iType = None):
-        """!Set gradient for items
+        """Set gradient for items
 
-        @param iType bgmap, vdigit or None
+        :param iType: bgmap, vdigit or None
         """
         if iType == 'bgmap':
             self.SetFirstGradientColour(wx.Colour(0, 100, 0))
@@ -300,18 +301,18 @@
         return array
 
     def GetMap(self):
-        """!Get map instace"""
+        """Get map instace"""
         return self.Map
     
     def GetMapDisplay(self):
-        """!Get associated MapFrame"""
+        """Get associated MapFrame"""
         return self.mapdisplay
 
     def GetLayerInfo(self, layer, key = None):
-        """!Get layer info.
+        """Get layer info.
 
-        @param layer GenericTreeItem instance
-        @param key cmd, type, ctrl, label, maplayer, propwin, vdigit, nviz
+        :param layer: GenericTreeItem instance
+        :param key: cmd, type, ctrl, label, maplayer, propwin, vdigit, nviz
          (vdigit, nviz for map layers only)
         """
         if not self.GetPyData(layer):
@@ -321,22 +322,22 @@
         return self.GetPyData(layer)[0]
 
     def SetLayerInfo(self, layer, key, value):
-        """!Set layer info.
+        """Set layer info.
 
-        @param layer GenericTreeItem instance
-        @param key cmd, type, ctrl, label, maplayer, propwin, vdigit, nviz
+        :param layer: GenericTreeItem instance
+        :param key: cmd, type, ctrl, label, maplayer, propwin, vdigit, nviz
          (vdigit, nviz for map layers only)
-        @param value value
+        :param value: value
         """
         info = self.GetPyData(layer)[0]
         info[key] = value
 
     def GetLayerParams(self, layer):
-        """!Get layer command params"""
+        """Get layer command params"""
         return self.GetPyData(layer)[1]
 
     def OnIdle(self, event):
-        """!Only re-order and re-render a composite map image from GRASS during
+        """Only re-order and re-render a composite map image from GRASS during
         idle time instead of multiple times during layer changing.
         """
         # no need to check for digitizer since it is handled internaly
@@ -352,7 +353,7 @@
         event.Skip()
         
     def OnKeyUp(self, event):
-        """!Key pressed"""
+        """Key pressed"""
         key = event.GetKeyCode()
         
         if key == wx.WXK_DELETE and self.lmgr and \
@@ -362,11 +363,11 @@
         event.Skip()
 
     def OnKeyDown(self, event):
-        """!Skip event, otherwise causing error when layertree is empty"""
+        """Skip event, otherwise causing error when layertree is empty"""
         event.Skip()
 
     def OnLayerContextMenu (self, event):
-        """!Contextual menu for item/layer"""
+        """Contextual menu for item/layer"""
         if not self.layer_selected:
             event.Skip()
             return
@@ -622,7 +623,7 @@
         self.popupMenu.Destroy()
 
     def OnSaveWs(self, event):
-        """!Show dialog for saving web service layer into GRASS vector/raster layer"""
+        """Show dialog for saving web service layer into GRASS vector/raster layer"""
         mapLayer = self.GetLayerInfo(self.layer_selected, key = 'maplayer')
         dlg = SaveWMSLayerDialog(parent=self, layer=mapLayer,
                                  giface=self._gifaceForDisplay)
@@ -630,22 +631,24 @@
         dlg.Show()
 
     def OnTopology(self, event):
-        """!Rebuild topology of selected vector map"""
+        """Rebuild topology of selected vector map"""
         mapLayer = self.GetLayerInfo(self.layer_selected, key = 'maplayer')
         cmd = ['v.build',
                'map=%s' % mapLayer.GetName()]
         self._giface.RunCmd(cmd)
 
     def OnSqlQuery(self, event):
-        """!Show SQL query window for PostGIS layers
+        """Show SQL query window for PostGIS layers
         """
         dlg = SqlQueryFrame(parent = self)
         dlg.CentreOnScreen()
         dlg.Show()
         
     def OnMetadata(self, event):
-        """!Print metadata of raster/vector map layer
-        TODO: Dialog to modify metadata
+        """Print metadata of raster/vector map layer
+        
+        .. todo::
+            Dialog to modify metadata
         """
         mapLayer = self.GetLayerInfo(self.layer_selected, key = 'maplayer')
         mltype = self.GetLayerInfo(self.layer_selected,key = 'type')
@@ -662,7 +665,7 @@
         self._giface.RunCmd(cmd)
 
     def OnSetCompRegFromRaster(self, event):
-        """!Set computational region from selected raster map (ignore NULLs)"""
+        """Set computational region from selected raster map (ignore NULLs)"""
         mapLayer = self.GetLayerInfo(self.layer_selected, key = 'maplayer')
         
         cmd = ['g.region',
@@ -676,7 +679,7 @@
         self._giface.GetMapWindow().UpdateMap(render=True)
 
     def OnSetCompRegFromMap(self, event):
-        """!Set computational region from selected raster/vector map
+        """Set computational region from selected raster/vector map
         """
         rast = []
         vect = []
@@ -715,7 +718,7 @@
         self._giface.GetMapWindow().UpdateMap(render=True)
             
     def OnProfile(self, event):
-        """!Plot profile of given raster map layer"""
+        """Plot profile of given raster map layer"""
         mapLayer = self.GetLayerInfo(self.layer_selected, key = 'maplayer')
         if not mapLayer.GetName():
             wx.MessageBox(parent = self,
@@ -726,7 +729,7 @@
         self.mapdisplay.Profile(rasters=[mapLayer.GetName()])
 
     def OnRasterColorTable(self, event):
-        """!Set color table for 2D/3D raster map"""
+        """Set color table for 2D/3D raster map"""
         raster2d = []
         raster3d = []
         for layer in self.GetSelectedLayers():
@@ -743,7 +746,7 @@
                                                                     'map=%s' % ','.join(raster3d)])
             
     def OnVectorColorTable(self, event):
-        """!Set color table for vector map"""
+        """Set color table for vector map"""
         name = self.GetLayerInfo(self.layer_selected, key = 'maplayer').GetName()
         GUI(parent = self, centreOnParent = False).ParseCommand(['v.colors',
                                                                  'map=%s' % name])
@@ -755,7 +758,7 @@
         GError(parent=self, message=message, caption=_("Invalid name"))
 
     def OnCopyMap(self, event):
-        """!Copy selected map into current mapset"""
+        """Copy selected map into current mapset"""
         layer = self.GetSelectedLayer()
         ltype = self.GetLayerInfo(layer, key='type')
         lnameSrc = self.GetLayerInfo(layer, key = 'maplayer').GetName()
@@ -816,7 +819,7 @@
         self.AddLayer(ltype, lname = lnameDst, lcmd = ['d.%s' % key, 'map=%s' % lnameDst])
 
     def OnHistogram(self, event):
-        """!Plot histogram for given raster map layer
+        """Plot histogram for given raster map layer
         """
         rasterList = []
         for layer in self.GetSelectedLayers():
@@ -833,7 +836,7 @@
         win.Show()
                 
     def OnUnivariateStats(self, event):
-        """!Univariate 2D/3D raster statistics"""
+        """Univariate 2D/3D raster statistics"""
         raster2d = []
         raster3d = []
         for layer in self.GetSelectedLayers():
@@ -849,7 +852,7 @@
             self._giface.RunCmd(['r3.univar', 'map=%s' % ','.join(raster3d)])
 
     def OnReportStats(self, event):
-        """!Print 2D statistics"""
+        """Print 2D statistics"""
         rasters = []
         # TODO: Implement self.GetSelectedLayers(ltype='raster')
         for layer in self.GetSelectedLayers():
@@ -860,7 +863,7 @@
             self._giface.RunCmd(['r.report', 'map=%s' % ','.join(rasters), 'units=h,c,p'])
         
     def OnStartEditing(self, event):
-        """!Start editing vector map layer requested by the user
+        """Start editing vector map layer requested by the user
         """
         mapLayer = self.GetLayerInfo(self.layer_selected, key = 'maplayer')
         if not haveVDigit:
@@ -888,7 +891,7 @@
             self.RefreshLine(layerItem)
         
     def OnStopEditing(self, event):
-        """!Stop editing the current vector map layer
+        """Stop editing the current vector map layer
         """
         self.mapdisplay.toolbars['vdigit'].OnExit()
 
@@ -913,11 +916,11 @@
         self.RefreshLine(layerItem)
 
     def OnPopupProperties (self, event):
-        """!Popup properties dialog"""
+        """Popup properties dialog"""
         self.PropertiesDialog(self.layer_selected)
 
     def OnPopupOpacityLevel(self, event):
-        """!Popup opacity level indicator"""
+        """Popup opacity level indicator"""
         if not self.GetLayerInfo(self.layer_selected, key = 'ctrl'):
             return
         
@@ -935,9 +938,10 @@
         dlg.Destroy()
 
     def ChangeLayerOpacity(self, layer, value):
-        """!Change opacity value of layer
-        @param layer layer for which to change (item in layertree)
-        @param value opacity value (float between 0 and 1)
+        """Change opacity value of layer
+
+        :param layer: layer for which to change (item in layertree)
+        :param value: opacity value (float between 0 and 1)
         """
         maplayer = self.GetLayerInfo(layer, key = 'maplayer')
         self.Map.ChangeOpacity(maplayer, value)
@@ -958,9 +962,10 @@
         self.GetMapDisplay().GetWindow().UpdateMap(render = False, renderVector = renderVector)
 
     def OnNvizProperties(self, event):
-        """!Nviz-related properties (raster/vector/volume)
+        """Nviz-related properties (raster/vector/volume)
 
-        @todo vector/volume
+        .. todo::
+            vector/volume
         """
         self.lmgr.notebook.SetSelectionByName('nviz')
         ltype = self.GetLayerInfo(self.layer_selected, key = 'type')
@@ -972,12 +977,12 @@
             self.lmgr.nviz.SetPage('volume')
         
     def OnRenameLayer (self, event):
-        """!Rename layer"""
+        """Rename layer"""
         self.EditLabel(self.layer_selected)
         self.GetEditControl().SetSelection(-1, -1)
         
     def OnRenamed(self, event):
-        """!Layer renamed"""
+        """Layer renamed"""
         if not event.GetLabel():
             event.Skip()
             return
@@ -990,18 +995,18 @@
 
     def AddLayer(self, ltype, lname = None, lchecked = None,
                  lopacity = 1.0, lcmd = None, lgroup = None, lvdigit = None, lnviz = None, multiple = True):
-        """!Add new item to the layer tree, create corresponding MapLayer instance.
+        """Add new item to the layer tree, create corresponding MapLayer instance.
         Launch property dialog if needed (raster, vector, etc.)
 
-        @param ltype layer type (raster, vector, 3d-raster, ...)
-        @param lname layer name
-        @param lchecked if True layer is checked
-        @param lopacity layer opacity level
-        @param lcmd command (given as a list)
-        @param lgroup index of group item (-1 for root) or None
-        @param lvdigit vector digitizer settings (eg. geometry attributes)
-        @param lnviz layer Nviz properties
-        @param multiple True to allow multiple map layers in layer tree
+        :param ltype: layer type (raster, vector, 3d-raster, ...)
+        :param lname: layer name
+        :param lchecked: if True layer is checked
+        :param lopacity: layer opacity level
+        :param lcmd: command (given as a list)
+        :param lgroup: index of group item (-1 for root) or None
+        :param lvdigit: vector digitizer settings (eg. geometry attributes)
+        :param lnviz: layer Nviz properties
+        :param bool multiple: True to allow multiple map layers in layer tree
         """
         if lname and not multiple:
             # check for duplicates
@@ -1174,7 +1179,7 @@
         return layer
 
     def PropertiesDialog(self, layer, show = True):
-        """!Launch the properties dialog"""
+        """Launch the properties dialog"""
         ltype  = self.GetLayerInfo(layer, key = 'type')
         if 'propwin' in self.GetLayerInfo(layer) and \
                 self.GetLayerInfo(layer, key = 'propwin') is not None:
@@ -1220,7 +1225,7 @@
                                                                     completed = (self.GetOptData,layer,params))
         
     def OnActivateLayer(self, event):
-        """!Double click on the layer item.
+        """Double click on the layer item.
         Launch property dialog, or expand/collapse group of items, etc.
         """
         self.lmgr.WorkspaceChanged()
@@ -1235,7 +1240,7 @@
                 self.Expand(layer)
         
     def OnDeleteLayer(self, event):
-        """!Remove selected layer item from the layer tree"""
+        """Remove selected layer item from the layer tree"""
         self.lmgr.WorkspaceChanged()
         item = event.GetItem()
         
@@ -1278,7 +1283,7 @@
         event.Skip()
 
     def OnLayerChecking(self, event):
-        """!Layer checkbox is being checked.
+        """Layer checkbox is being checked.
 
         Continue only if mouse is above checkbox or layer was checked programatically.
         """
@@ -1289,7 +1294,7 @@
             event.Veto()
 
     def OnLayerChecked(self, event):
-        """!Enable/disable data layer"""
+        """Enable/disable data layer"""
         self.lmgr.WorkspaceChanged()
         
         item    = event.GetItem()
@@ -1351,7 +1356,7 @@
         self.Map.SetLayers(self.GetVisibleLayers())
         
     def OnCmdChanged(self, event):
-        """!Change command string"""
+        """Change command string"""
         ctrl = event.GetEventObject().GetId()
         
         # find layer tree item by ctrl
@@ -1367,7 +1372,7 @@
         event.Skip()
 
     def OnMotion(self, event):
-        """!Mouse is moving.
+        """Mouse is moving.
 
         Detects if mouse points at checkbox.
         """
@@ -1382,7 +1387,7 @@
         event.Skip()
         
     def OnChangingSel(self, event):
-        """!Selection is changing.
+        """Selection is changing.
 
         If the user is clicking on checkbox, selection change is vetoed.
         """
@@ -1390,7 +1395,7 @@
             event.Veto()
 
     def OnChangeSel(self, event):
-        """!Selection changed
+        """Selection changed
 
         Preconditions:
             event.GetItem() is a valid layer;
@@ -1495,7 +1500,7 @@
         self.SelectItem(newItem)
         
     def RecreateItem (self, dragItem, dropTarget, parent = None):
-        """!Recreate item (needed for OnEndDrag())
+        """Recreate item (needed for OnEndDrag())
         """
         Debug.msg (4, "LayerTree.RecreateItem(): layer=%s" % \
                    self.GetItemText(dragItem))
@@ -1574,9 +1579,9 @@
         return newItem
 
     def _getLayerName(self, item, lname = ''):
-        """!Get layer name string
+        """Get layer name string
 
-        @param lname optional layer name
+        :param lname: optional layer name
         """
         mapLayer = self.GetLayerInfo(item, key = 'maplayer')
         if not mapLayer:
@@ -1598,7 +1603,7 @@
         return lname
                 
     def GetOptData(self, dcmd, layer, params, propwin):
-        """!Process layer data (when changes in properties dialog are applied)
+        """Process layer data (when changes in properties dialog are applied)
         """
         # set layer text to map name
         if dcmd:
@@ -1699,7 +1704,7 @@
         return layers
 
     def ChangeLayer(self, item):
-        """!Change layer"""
+        """Change layer"""
         type = self.GetLayerInfo(item, key = 'type')
         layerName = None
         
@@ -1743,12 +1748,12 @@
         # self.Map.Clean()
 
     def FindItemByData(self, key, value):
-        """!Find item based on key and value (see PyData[0]).
+        """Find item based on key and value (see PyData[0]).
         
         If key is 'name', finds item(s) of given maplayer name.
         
-        @return item instance
-        @return None not found
+        :return: item instance
+        :return: None not found
         """
         item = self.GetFirstChild(self.root)[0]
         if key == 'name':
@@ -1757,10 +1762,10 @@
             return self.__FindSubItemByData(item, key, value)
 
     def FindItemByIndex(self, index):
-        """!Find item by index (starting at 0)
+        """Find item by index (starting at 0)
 
-        @return item instance
-        @return None not found
+        :return: item instance
+        :return: None not found
         """
         item = self.GetFirstChild(self.root)[0]
         i = 0
@@ -1774,7 +1779,7 @@
         return None
     
     def EnableItemType(self, type, enable = True):
-        """!Enable/disable items in layer tree"""
+        """Enable/disable items in layer tree"""
         item = self.GetFirstChild(self.root)[0]
         while item and item.IsOk():
             mapLayer = self.GetLayerInfo(item, key = 'maplayer')
@@ -1784,7 +1789,7 @@
             item = self.GetNextSibling(item)
         
     def __FindSubItemByData(self, item, key, value):
-        """!Support method for FindItemByData"""
+        """Support method for FindItemByData"""
         while item and item.IsOk():
             itemValue = self.GetLayerInfo(item, key = key)
             
@@ -1800,7 +1805,7 @@
         return None
 
     def __FindSubItemByName(self, item, value):
-        """!Support method for FindItemByData for searching by name"""
+        """Support method for FindItemByData for searching by name"""
         items = []
         while item and item.IsOk():
             try:
@@ -1822,7 +1827,7 @@
         return None
 
     def _createCommandCtrl(self):
-        """!Creates text control for command layer"""
+        """Creates text control for command layer"""
         height = 25
         if sys.platform in ('win32', 'darwin'):
             height = 40

Modified: grass/trunk/gui/wxpython/lmgr/menudata.py
===================================================================
--- grass/trunk/gui/wxpython/lmgr/menudata.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/lmgr/menudata.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package lmgr.menudata
 
 @brief wxGUI Layer Manager - menu data

Modified: grass/trunk/gui/wxpython/lmgr/pyshell.py
===================================================================
--- grass/trunk/gui/wxpython/lmgr/pyshell.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/lmgr/pyshell.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package lmgr.pyshell
 
 @brief wxGUI Interactive Python Shell for Layer Manager
@@ -6,8 +6,9 @@
 Classes:
  - pyshell::PyShellWindow
 
- at todo Run pyshell and evaluate code in a separate instance of python &
-design the widget communicate back and forth with it
+.. todo::
+    Run pyshell and evaluate code in a separate instance of python &
+    design the widget communicate back and forth with it
 
 (C) 2011 by the GRASS Development Team
 
@@ -27,7 +28,7 @@
 from core.utils import _
 
 class PyShellWindow(wx.Panel):
-    """!Python Shell Window"""
+    """Python Shell Window"""
     def __init__(self, parent, id = wx.ID_ANY, **kwargs):
         self.parent = parent # GMFrame
         
@@ -74,10 +75,10 @@
         self.Layout()
 
     def AddLayer(self, name, ltype = 'auto'):
-        """!Add selected map to the layer tree
+        """Add selected map to the layer tree
 
-        @param name name of raster/vector map to be added
-        @param type map type ('raster', 'vector', 'auto' for autodetection)
+        :param name: name of raster/vector map to be added
+        :param type: map type ('raster', 'vector', 'auto' for autodetection)
         """
         fname = None
         if ltype == 'raster' or ltype != 'vector':
@@ -107,7 +108,7 @@
         return _('Vector map <%s> added') % fname
     
     def OnClear(self, event):
-        """!Delete all text from the shell
+        """Delete all text from the shell
         """
         self.shell.clear()
         self.shell.showIntro(self.intro)

Modified: grass/trunk/gui/wxpython/lmgr/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/lmgr/toolbars.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/lmgr/toolbars.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package lmgr.toolbars
 
 @brief wxGUI Layer Manager - toolbars
@@ -28,7 +28,7 @@
 from core.utils import _
 
 class LMWorkspaceToolbar(BaseToolbar):
-    """!Layer Manager `workspace` toolbar
+    """Layer Manager `workspace` toolbar
     """
     def __init__(self, parent):
         BaseToolbar.__init__(self, parent)
@@ -39,7 +39,7 @@
         self.Realize()
 
     def _toolbarData(self):
-        """!Toolbar data
+        """Toolbar data
         """
         icons = {
             'newdisplay'    : MetaIcon(img = 'monitor-create',
@@ -63,7 +63,7 @@
                                      ))
 
 class LMDataToolbar(BaseToolbar):
-    """!Layer Manager `data` toolbar
+    """Layer Manager `data` toolbar
     """
     def __init__(self, parent):
         BaseToolbar.__init__(self, parent)
@@ -74,7 +74,7 @@
         self.Realize()
 
     def _toolbarData(self):
-        """!Toolbar data
+        """Toolbar data
         """
         icons = {
             'addMulti'   : MetaIcon(img = 'layer-open',
@@ -118,7 +118,7 @@
                                      ))
 
 class LMToolsToolbar(BaseToolbar):
-    """!Layer Manager `tools` toolbar
+    """Layer Manager `tools` toolbar
     """
     def __init__(self, parent):
         BaseToolbar.__init__(self, parent)
@@ -129,7 +129,7 @@
         self.Realize()
 
     def _toolbarData(self):
-        """!Toolbar data
+        """Toolbar data
         """
         icons = {
             'import'  : MetaIcon(img = 'layer-import',
@@ -163,7 +163,7 @@
                                      ))
 
 class LMMiscToolbar(BaseToolbar):
-    """!Layer Manager `misc` toolbar
+    """Layer Manager `misc` toolbar
     """
     def __init__(self, parent):
         BaseToolbar.__init__(self, parent)
@@ -174,7 +174,7 @@
         self.Realize()
 
     def _toolbarData(self):
-        """!Toolbar data
+        """Toolbar data
         """
         icons = {
             'settings'   : BaseIcons['settings'].SetLabel(_('GUI settings')),
@@ -188,7 +188,7 @@
                                      ))
 
 class LMVectorToolbar(BaseToolbar):
-    """!Layer Manager `vector` toolbar
+    """Layer Manager `vector` toolbar
     """
     def __init__(self, parent):
         BaseToolbar.__init__(self, parent)
@@ -199,7 +199,7 @@
         self.Realize()
 
     def _toolbarData(self):
-        """!Toolbar data
+        """Toolbar data
         """
         icons = {
             'vdigit'     : MetaIcon(img = 'edit',
@@ -215,7 +215,7 @@
                                      ))
 
 class LMNvizToolbar(BaseToolbar):
-    """!Nviz toolbar
+    """Nviz toolbar
     """
     def __init__(self, parent):
         self.lmgr = parent
@@ -231,7 +231,7 @@
         self.Realize()
         
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         icons = {
             'cmd'    : MetaIcon(img = 'script-save',
                                 label = _('Generate command for m.nviz.image'),
@@ -253,11 +253,11 @@
                                     )
         
     def OnNvizCmd(self, event):
-        """!Show m.nviz.image command"""
+        """Show m.nviz.image command"""
         self.lmgr.GetLayerTree().GetMapDisplay().GetWindow().OnNvizCmd()
         
     def OnHelp(self, event):
-        """!Show 3D view mode help"""
+        """Show 3D view mode help"""
         if not self.lmgr:
             RunCommand('g.manual',
                        entry = 'wxGUI.Nviz')

Modified: grass/trunk/gui/wxpython/location_wizard/base.py
===================================================================
--- grass/trunk/gui/wxpython/location_wizard/base.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/location_wizard/base.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package location_wizard.base
 
 @brief Location wizard - base classes
@@ -19,12 +19,12 @@
 import wx
 
 class BaseClass(wx.Object):
-    """!Base class providing basic methods"""
+    """Base class providing basic methods"""
     def __init__(self):
         pass
 
     def MakeLabel(self, text = "", style = wx.ALIGN_LEFT, parent = None, tooltip = None):
-        """!Make aligned label"""
+        """Make aligned label"""
         if not parent:
             parent = self
         label =  wx.StaticText(parent = parent, id = wx.ID_ANY, label = text,
@@ -34,7 +34,7 @@
         return label
 
     def MakeTextCtrl(self, text = '', size = (100,-1), style = 0, parent = None, tooltip = None):
-        """!Generic text control"""
+        """Generic text control"""
         if not parent:
             parent = self
         textCtrl = wx.TextCtrl(parent = parent, id = wx.ID_ANY, value = text,
@@ -44,7 +44,7 @@
         return textCtrl
 
     def MakeButton(self, text, id = wx.ID_ANY, size = (-1,-1), parent = None, tooltip = None):
-        """!Generic button"""
+        """Generic button"""
         if not parent:
             parent = self
         button = wx.Button(parent = parent, id = id, label = text,

Modified: grass/trunk/gui/wxpython/location_wizard/dialogs.py
===================================================================
--- grass/trunk/gui/wxpython/location_wizard/dialogs.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/location_wizard/dialogs.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package location_wizard.dialogs
 
 @brief Location wizard - dialogs
@@ -30,7 +30,7 @@
 from grass.script import core as grass
 
 class RegionDef(BaseClass, wx.Dialog):
-    """!Page for setting default region extents and resolution
+    """Page for setting default region extents and resolution
     """
     def __init__(self, parent, id = wx.ID_ANY, size = (800, 600),
                  title = _("Set default region extent and resolution"), location = None):
@@ -208,7 +208,7 @@
         wx.CallAfter(self.settings3D.Collapse, True)
     
     def MakeSettings3DPaneContent(self, pane):
-        """!Create 3D region settings pane"""
+        """Create 3D region settings pane"""
         border = wx.BoxSizer(wx.VERTICAL)
         gridSizer = wx.GridBagSizer(vgap = 0, hgap = 0)
 
@@ -285,7 +285,7 @@
         border.Fit(pane)
 
     def OnSettings3DPaneChanged(self, event):
-        """!Collapse 3D settings box"""
+        """Collapse 3D settings box"""
 
         if self.settings3D.IsExpanded():
             self.settings3D.SetLabel(self.infoCollapseLabelCol)
@@ -301,7 +301,7 @@
         self.SendSizeEvent()
 
     def __DoLayout(self, panel):
-        """!Window layout"""
+        """Window layout"""
         frameSizer = wx.BoxSizer(wx.VERTICAL)
         gridSizer = wx.GridBagSizer(vgap = 0, hgap = 0)
         settings3DSizer = wx.BoxSizer(wx.VERTICAL)
@@ -405,7 +405,7 @@
         self.Layout()
 
     def OnValue(self, event):
-        """!Set given value"""
+        """Set given value"""
         try:
             if event.GetId() == self.tnorth.GetId():
                 self.north = float(event.GetString())
@@ -454,7 +454,7 @@
         event.Skip()
 
     def __UpdateInfo(self):
-        """!Update number of rows/cols/cells"""
+        """Update number of rows/cols/cells"""
         self.rows = int((self.north - self.south) / self.nsres)
         self.cols = int((self.east - self.west) / self.ewres)
         self.cells = self.rows * self.cols
@@ -471,7 +471,7 @@
         self.lcells3.SetLabel(_("3D Cells: %d" % self.cells3))
 
     def OnSetButton(self, event = None):
-        """!Set default region"""
+        """Set default region"""
         ret = RunCommand('g.region',
                          flags = 'sgpa',
                          n = self.north,
@@ -490,7 +490,7 @@
         self.Destroy()
 
 class TransList(wx.VListBox):
-    """!Creates a multiline listbox for selecting datum transforms"""
+    """Creates a multiline listbox for selecting datum transforms"""
         
     def OnDrawItem(self, dc, rect, n):
         if self.GetSelection() == n:
@@ -518,7 +518,7 @@
             return transitem
 
 class SelectTransformDialog(wx.Dialog):
-    """!Dialog for selecting datum transformations"""
+    """Dialog for selecting datum transformations"""
     def __init__(self, parent, transforms, title = _("Select datum transformation"),
                  pos = wx.DefaultPosition, size = wx.DefaultSize, 
                  style = wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER):
@@ -603,12 +603,12 @@
         self.Layout()
         
     def ClickTrans(self, event):
-        """!Get the number of the datum transform to use in g.proj"""
+        """Get the number of the datum transform to use in g.proj"""
         self.transnum = event.GetSelection()
         self.transnum = self.transnum - 1
     
     def GetTransform(self):
-        """!Get the number of the datum transform to use in g.proj"""
+        """Get the number of the datum transform to use in g.proj"""
         self.transnum = self.translist.GetSelection()
         self.transnum = self.transnum - 1
         return self.transnum

Modified: grass/trunk/gui/wxpython/location_wizard/wizard.py
===================================================================
--- grass/trunk/gui/wxpython/location_wizard/wizard.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/location_wizard/wizard.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package location_wizard.wizard
 
 @brief Location wizard - creates a new GRASS Location. User can choose
@@ -59,7 +59,7 @@
 global translist
 
 class TitledPage(BaseClass, wiz.WizardPageSimple):
-    """!Class to make wizard pages. Generic methods to make labels,
+    """Class to make wizard pages. Generic methods to make labels,
     text entries, and buttons.
     """
     def __init__(self, parent, title):
@@ -75,7 +75,7 @@
         self.sizer = wx.GridBagSizer(vgap = 0, hgap = 0)
         
     def DoLayout(self):
-        """!Do page layout"""
+        """Do page layout"""
         self.pagesizer.Add(item = self.title, proportion = 0,
                            flag = wx.ALIGN_CENTRE | wx.ALL,
                            border = 5)
@@ -90,7 +90,7 @@
         self.Layout()
 
 class DatabasePage(TitledPage):
-    """!Wizard page for setting GIS data directory and location name"""
+    """Wizard page for setting GIS data directory and location name"""
     def __init__(self, wizard, parent, grassdatabase):
         TitledPage.__init__(self, wizard, _("Define GRASS Database and Location Name"))
 
@@ -163,7 +163,7 @@
         GError(parent=self, message=message, caption=_("Invalid location name"))
 
     def OnChangeName(self, event):
-        """!Name for new location was changed"""
+        """Name for new location was changed"""
         nextButton = wx.FindWindowById(wx.ID_FORWARD)
         if len(event.GetString()) > 0:
             if not nextButton.IsEnabled():
@@ -174,7 +174,7 @@
         event.Skip()
 
     def OnBrowse(self, event):
-        """!Choose GRASS data directory"""
+        """Choose GRASS data directory"""
         dlg = wx.DirDialog(self, _("Choose GRASS data directory:"),
                            os.getcwd(), wx.DD_DEFAULT_STYLE)
         if dlg.ShowModal() == wx.ID_OK:
@@ -208,7 +208,7 @@
             self.locTitle = self.locTitle.split(os.linesep)[0][:255]
             
 class CoordinateSystemPage(TitledPage):
-    """!Wizard page for choosing method for location creation"""
+    """Wizard page for choosing method for location creation"""
     def __init__(self, wizard, parent):
         TitledPage.__init__(self, wizard, _("Choose method for creating a new location"))
         
@@ -302,7 +302,7 @@
             wx.FindWindowById(wx.ID_FORWARD).Enable()
     
     def SetVal(self, event):
-        """!Choose method"""
+        """Choose method"""
         global coordsys
         if event.GetId() == self.radio1.GetId():
             coordsys = "proj"
@@ -330,7 +330,7 @@
             self.parent.sumpage.SetPrev(self.parent.csystemspage)
 
 class ProjectionsPage(TitledPage):
-    """!Wizard page for selecting projection (select coordinate system option)"""
+    """Wizard page for selecting projection (select coordinate system option)"""
     def __init__(self, wizard, parent):
         TitledPage.__init__(self, wizard, _("Choose projection"))
 
@@ -387,7 +387,7 @@
             event.Veto()
 
     def OnText(self, event):
-        """!Projection name changed"""
+        """Projection name changed"""
         self.proj = event.GetString().lower()
         self.p4proj = ''
         nextButton = wx.FindWindowById(wx.ID_FORWARD)
@@ -421,7 +421,7 @@
         event.Skip()
     
     def OnSearch(self, event):
-        """!Search projection by desc"""
+        """Search projection by desc"""
         str = event.GetString()
         try:
             self.proj, self.projdesc = self.projlist.Search(index = [0,1], pattern = event.GetString())
@@ -431,7 +431,7 @@
         event.Skip()
 
     def OnItemSelected(self, event):
-        """!Projection selected"""
+        """Projection selected"""
         index = event.m_itemIndex
 
         # set values
@@ -443,7 +443,7 @@
 class ItemList(wx.ListCtrl,
                listmix.ListCtrlAutoWidthMixin,
                listmix.ColumnSorterMixin):
-    """!Generic list (for projections, ellipsoids, etc.)"""
+    """Generic list (for projections, ellipsoids, etc.)"""
 
     def __init__(self, parent, columns, data = None):
         wx.ListCtrl.__init__(self, parent = parent, id = wx.ID_ANY,
@@ -505,7 +505,7 @@
         self.Bind(wx.EVT_LIST_COL_CLICK, self.OnColumnClick)
 
     def Populate(self, data = None, update = False):
-        """!Populate list"""
+        """Populate list"""
         self.itemDataMap  = {}
         self.itemIndexMap = []
         
@@ -539,7 +539,7 @@
                           caption = _("Error"), style = wx.OK | wx.ICON_ERROR)
 
     def OnColumnClick(self, event):
-        """!Sort by column"""
+        """Sort by column"""
         self._col = event.GetColumn()
 
         # remove duplicated arrow symbol from column header
@@ -554,17 +554,17 @@
         event.Skip()
 
     def GetSortImages(self):
-        """!Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py"""
+        """Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py"""
         return (self.sm_dn, self.sm_up)
 
     def OnGetItemText(self, item, col):
-        """!Get item text"""
+        """Get item text"""
         index = self.itemIndexMap[item]
         s = str(self.itemDataMap[index][col])
         return s
 
     def OnGetItemAttr(self, item):
-        """!Get item attributes"""
+        """Get item attributes"""
         index = self.itemIndexMap[item]
         if ( index % 2) == 0:
             return self.attr2
@@ -572,7 +572,7 @@
             return self.attr1
 
     def SortItems(self, sorter = cmp):
-        """!Sort items"""
+        """Sort items"""
         items = list(self.itemDataMap.keys())
         items.sort(self.Sorter)
         self.itemIndexMap = items
@@ -603,11 +603,11 @@
             return -cmpVal
 
     def GetListCtrl(self):
-        """!Used by listmix.ColumnSorterMixin"""
+        """Used by listmix.ColumnSorterMixin"""
         return self
 
     def Search (self, index, pattern):
-        """!Search projection by description
+        """Search projection by description
         Return first found item or None
         """
         if pattern == '':
@@ -634,7 +634,7 @@
             return []
 
 class ProjParamsPage(TitledPage):
-    """!Wizard page for selecting method of setting coordinate system
+    """Wizard page for selecting method of setting coordinate system
     parameters (select coordinate system option)
     """
     def __init__(self, wizard, parent):
@@ -682,7 +682,7 @@
         self.Bind(wiz.EVT_WIZARD_PAGE_CHANGED, self.OnEnterPage)
         
     def OnParamEntry(self, event):
-        """!Parameter value changed"""
+        """Parameter value changed"""
         id  = event.GetId()
         val = event.GetString()
         
@@ -707,7 +707,7 @@
         event.Skip()
         
     def OnPageChange(self,event=None):
-        """!Go to next page"""
+        """Go to next page"""
         if event.GetDirection():
             self.p4projparams = ''
             for id, param in self.pparam.iteritems():
@@ -726,7 +726,7 @@
                         self.p4projparams += (' +' + param['proj4'] + '=' + str(param['value']))
 
     def OnEnterPage(self,event):
-        """!Page entered"""
+        """Page entered"""
         self.projdesc = self.parent.projections[self.parent.projpage.proj][0]
         if self.prjParamSizer is None:
             # entering page for the first time
@@ -813,7 +813,7 @@
         event.Skip()
 
     def SetVal(self, event):
-        """!Set value"""
+        """Set value"""
         if event.GetId() == self.radio1.GetId():
             self.SetNext(self.parent.datumpage)
             self.parent.sumpage.SetPrev(self.parent.datumpage)
@@ -822,7 +822,7 @@
             self.parent.sumpage.SetPrev(self.parent.ellipsepage)
     
 class DatumPage(TitledPage):
-    """!Wizard page for selecting datum (with associated ellipsoid)
+    """Wizard page for selecting datum (with associated ellipsoid)
     and datum transformation parameters (select coordinate system option)
     """
 
@@ -940,7 +940,7 @@
         event.Skip()
 
     def OnDText(self, event):
-        """!Datum code changed"""
+        """Datum code changed"""
         self.datum = event.GetString()
 
         nextButton = wx.FindWindowById(wx.ID_FORWARD)
@@ -969,7 +969,7 @@
         event.Skip()
 
     def OnDSearch(self, event):
-        """!Search geodetic datum by desc"""
+        """Search geodetic datum by desc"""
         str =  self.searchb.GetValue()
         try:
             self.datum, self.ellipsoid, self.datumdesc = self.datumlist.Search(index = [0,1,2], pattern = str)
@@ -979,7 +979,7 @@
         event.Skip()
 
     def OnDatumSelected(self, event):
-        """!Datum selected"""
+        """Datum selected"""
         index = event.m_itemIndex
         item = event.GetItem()
 
@@ -989,7 +989,7 @@
         event.Skip()
 
 class EllipsePage(TitledPage):
-    """!Wizard page for selecting ellipsoid (select coordinate system option)"""
+    """Wizard page for selecting ellipsoid (select coordinate system option)"""
 
     def __init__(self, wizard, parent):
         TitledPage.__init__(self, wizard, _("Specify ellipsoid"))
@@ -1093,7 +1093,7 @@
 
     #FIXME: index number doesn't translate when you've given a valid name from the other list
     def OnText(self, event):
-        """!Ellipspoid code changed"""
+        """Ellipspoid code changed"""
         self.ellipse = event.GetString()
         nextButton = wx.FindWindowById(wx.ID_FORWARD)
         if len(self.ellipse) == 0 or \
@@ -1114,7 +1114,7 @@
         #print self.ellipse, self.ellipsedesc, self.ellipseparams
 
     def OnSearch(self, event):
-        """!Search ellipsoid by desc"""
+        """Search ellipsoid by desc"""
         try:
             self.ellipse, self.ellipsedesc = \
                 self.ellipselist.Search(index=[0,1], pattern=event.GetString())
@@ -1128,7 +1128,7 @@
         event.Skip()
 
     def OnItemSelected(self,event):
-        """!Ellipsoid selected"""
+        """Ellipsoid selected"""
         index = event.m_itemIndex
         item = event.GetItem()
 
@@ -1138,7 +1138,7 @@
         event.Skip()
 
     def SetVal(self, event):
-        """!Choose table to use"""
+        """Choose table to use"""
         self.ellipselist.DeleteAllItems()
         data = []
         if event.GetId() == self.radio1.GetId():
@@ -1154,7 +1154,7 @@
 
 
 class GeoreferencedFilePage(TitledPage):
-    """!Wizard page for selecting georeferenced file to use
+    """Wizard page for selecting georeferenced file to use
     for setting coordinate system parameters"""
 
     def __init__(self, wizard, parent):
@@ -1203,7 +1203,7 @@
         event.Skip()
 
     def OnText(self, event):
-        """!File changed"""
+        """File changed"""
         self.georeffile = event.GetString()
         nextButton = wx.FindWindowById(wx.ID_FORWARD)
         if len(self.georeffile) > 0 and os.path.isfile(self.georeffile):
@@ -1216,7 +1216,7 @@
         event.Skip()
 
     def OnBrowse(self, event):
-        """!Choose file"""
+        """Choose file"""
         dlg = wx.FileDialog(self,
                             _("Select georeferenced file"),
                             os.getcwd(), "", "*.*", wx.OPEN)
@@ -1228,7 +1228,7 @@
         event.Skip()
 
 class WKTPage(TitledPage):
-    """!Wizard page for selecting WKT file to use
+    """Wizard page for selecting WKT file to use
     for setting coordinate system parameters"""
 
     def __init__(self, wizard, parent):
@@ -1274,7 +1274,7 @@
         event.Skip()
 
     def OnText(self, event):
-        """!File changed"""
+        """File changed"""
         self.wktfile = event.GetString()
         nextButton = wx.FindWindowById(wx.ID_FORWARD)
         if len(self.wktfile) > 0 and os.path.isfile(self.wktfile):
@@ -1287,7 +1287,7 @@
         event.Skip()
 
     def OnBrowse(self, event):
-        """!Choose file"""
+        """Choose file"""
         dlg = wx.FileDialog(parent = self,
                             message = _("Select Well Known Text (WKT) .prj file"),
                             defaultDir = os.getcwd(),
@@ -1302,7 +1302,7 @@
         event.Skip()
 
 class EPSGPage(TitledPage):
-    """!Wizard page for selecting EPSG code for
+    """Wizard page for selecting EPSG code for
     setting coordinate system parameters"""
 
     def __init__(self, wizard, parent):
@@ -1463,7 +1463,7 @@
         event.Skip()
         
     def OnBrowse(self, event):
-        """!Define path for EPSG code file"""
+        """Define path for EPSG code file"""
         path = os.path.dirname(self.tfile.GetValue())
         if not path:
             path = os.getcwd()
@@ -1481,7 +1481,7 @@
         event.Skip()
 
     def OnItemSelected(self, event):
-        """!EPSG code selected from the list"""
+        """EPSG code selected from the list"""
         index = event.m_itemIndex
         item = event.GetItem()
 
@@ -1492,7 +1492,7 @@
         event.Skip()
         
     def OnBrowseCodes(self, event, search = None):
-        """!Browse EPSG codes"""
+        """Browse EPSG codes"""
         self.epsgCodeDict = utils.ReadEpsgCodes(self.tfile.GetValue())
 
         if type(self.epsgCodeDict) != dict:
@@ -1510,7 +1510,7 @@
         self.epsglist.Populate(data, update = True)
         
 class CustomPage(TitledPage):
-    """!Wizard page for entering custom PROJ.4 string
+    """Wizard page for entering custom PROJ.4 string
     for setting coordinate system parameters"""
 
     def __init__(self, wizard, parent):
@@ -1603,7 +1603,7 @@
         self.GetNext().SetPrev(self)
             
     def GetProjstring(self, event):
-        """!Change proj string"""
+        """Change proj string"""
         # TODO: check PROJ.4 syntax
         self.customstring = event.GetString()
         nextButton = wx.FindWindowById(wx.ID_FORWARD)
@@ -1615,7 +1615,7 @@
                 nextButton.Enable()
 
 class SummaryPage(TitledPage):
-    """!Shows summary result of choosing coordinate system parameters
+    """Shows summary result of choosing coordinate system parameters
     prior to creating location"""
     def __init__(self, wizard, parent):
         TitledPage.__init__(self, wizard, _("Summary"))
@@ -1638,7 +1638,7 @@
         self._doLayout()
         
     def _doLayout(self):
-        """!Do page layout"""
+        """Do page layout"""
 
         titleSizer = wx.BoxSizer(wx.VERTICAL)
         titleSizer.Add(item = self.llocTitle, proportion = 1,
@@ -1695,7 +1695,7 @@
         self.sizer.AddGrowableRow(5, 5)
    
     def OnEnterPage(self, event):
-        """!Insert values into text controls for summary of location
+        """Insert values into text controls for summary of location
         creation options
         """
         database = self.parent.startpage.grassdatabase
@@ -1798,7 +1798,7 @@
             event.Skip()
 
 class LocationWizard(wx.Object):
-    """!Start wizard here and finish wizard here
+    """Start wizard here and finish wizard here
     """
     def __init__(self, parent, grassdatabase):
         self.__cleanUp()
@@ -1955,7 +1955,7 @@
         transformlist = list()
 
     def __readData(self):
-        """!Get georeferencing information from tables in $GISBASE/etc/proj"""
+        """Get georeferencing information from tables in $GISBASE/etc/proj"""
 
         # read projection and parameters
         f = open(os.path.join(globalvar.ETCDIR, "proj", "parms.table"), "r")
@@ -2042,10 +2042,10 @@
         f.close()
 
     def OnWizFinished(self):
-        """!Wizard finished, create new location
+        """Wizard finished, create new location
 
-        @return error message on error
-        @return None on success
+        :return: error message on error
+        :return: None on success
         """
         database = self.startpage.grassdatabase
         location = self.startpage.location
@@ -2142,7 +2142,7 @@
         return None
     
     def CreateProj4String(self):
-        """!Constract PROJ.4 string"""
+        """Constract PROJ.4 string"""
         location = self.startpage.location
         proj = self.projpage.p4proj
         projdesc = self.projpage.projdesc

Modified: grass/trunk/gui/wxpython/mapdisp/frame.py
===================================================================
--- grass/trunk/gui/wxpython/mapdisp/frame.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapdisp/frame.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package mapdisp.frame
 
 @brief Map display with toolbar for various display management
@@ -64,24 +64,24 @@
 
 
 class MapFrame(SingleMapFrame):
-    """!Main frame for map display window. Drawing takes place in
+    """Main frame for map display window. Drawing takes place in
     child double buffered drawing window.
     """
     def __init__(self, parent, giface, title = _("GRASS GIS - Map display"),
                  toolbars = ["map"], tree = None, notebook = None, lmgr = None,
                  page = None, Map = Map(), auimgr = None, name = 'MapWindow', **kwargs):
-        """!Main map display window with toolbars, statusbar and
+        """Main map display window with toolbars, statusbar and
         2D map window, 3D map window and digitizer.
         
-        @param toolbars array of activated toolbars, e.g. ['map', 'digit']
-        @param tree reference to layer tree
-        @param notebook control book ID in Layer Manager
-        @param lmgr Layer Manager
-        @param page notebook page with layer tree
-        @param Map instance of render.Map
-        @param auimgs AUI manager
-        @param name frame name
-        @param kwargs wx.Frame attributes
+        :param toolbars: array of activated toolbars, e.g. ['map', 'digit']
+        :param tree: reference to layer tree
+        :param notebook: control book ID in Layer Manager
+        :param lmgr: Layer Manager
+        :param page: notebook page with layer tree
+        :param map: instance of render.Map
+        :param auimgs: AUI manager
+        :param name: frame name
+        :param kwargs: wx.Frame attributes
         """
         SingleMapFrame.__init__(self, parent = parent, title = title,
                               Map = Map, auimgr = auimgr, name = name, **kwargs)
@@ -242,7 +242,7 @@
         return self.MapWindow
 
     def SetTitle(self, displayId = 1):
-        """!Set map display title"""
+        """Set map display title"""
         try:
             grassVersion = grass.version()['version']
         except KeyError:
@@ -258,7 +258,7 @@
         super(MapFrame, self).SetTitle(title)
 
     def _addToolbarVDigit(self):
-        """!Add vector digitizer toolbar
+        """Add vector digitizer toolbar
         """
         from vdigit.main import haveVDigit, VDigit
         
@@ -318,7 +318,7 @@
         self.MapWindow.polypen      = wx.Pen(colour = 'green', width = 2, style = wx.SOLID)
 
     def AddNviz(self):
-        """!Add 3D view mode window
+        """Add 3D view mode window
         """
         from nviz.main import haveNviz, GLWindow, errorMsg
         
@@ -413,7 +413,7 @@
             self.toolbars['map'].combo.Delete(1)
 
     def RemoveNviz(self):
-        """!Restore 2D view"""
+        """Restore 2D view"""
         try:
             self.toolbars['map'].RemoveTool(self.toolbars['map'].rotate)
             self.toolbars['map'].RemoveTool(self.toolbars['map'].flyThrough)
@@ -453,14 +453,14 @@
         self.GetMapToolbar().SelectDefault()
         
     def AddToolbar(self, name, fixed = False):
-        """!Add defined toolbar to the window
+        """Add defined toolbar to the window
 
         Currently recognized toolbars are:
          - 'map'     - basic map toolbar
          - 'vdigit'  - vector digitizer
 
-        @param name toolbar to add
-        @param fixed fixed toolbar
+        :param name: toolbar to add
+        :param fixed: fixed toolbar
         """
         # default toolbar
         if name == "map":
@@ -486,9 +486,10 @@
         self._mgr.Update()
         
     def RemoveToolbar (self, name):
-        """!Removes defined toolbar from the window
+        """Removes defined toolbar from the window
 
-        @todo Only hide, activate by calling AddToolbar()
+        .. todo::
+            Only hide, activate by calling AddToolbar()
         """
         # cannot hide main toolbar
         if name == "map":
@@ -510,19 +511,19 @@
         self._mgr.Update()
     
     def IsPaneShown(self, name):
-        """!Check if pane (toolbar, mapWindow ...) of given name is currently shown"""
+        """Check if pane (toolbar, mapWindow ...) of given name is currently shown"""
         if self._mgr.GetPane(name).IsOk():
             return self._mgr.GetPane(name).IsShown()
         return False
 
     def RemoveQueryLayer(self):
-        """!Removes temporary map layers (queries)"""
+        """Removes temporary map layers (queries)"""
         qlayer = self.GetMap().GetListOfLayers(name = globalvar.QUERYLAYER)
         for layer in qlayer:
             self.GetMap().DeleteLayer(layer)
 
     def OnRender(self, event):
-        """!Re-render map composition (each map layer)
+        """Re-render map composition (each map layer)
         """
         self.RemoveQueryLayer()
         
@@ -538,8 +539,8 @@
         self.StatusbarUpdate()
 
     def OnPointer(self, event):
-        """!Pointer button clicked
-        """        
+        """Pointer button clicked
+        """      
         self.MapWindow.SetModePointer()
 
         if self.GetToolbar('vdigit'):
@@ -547,7 +548,7 @@
             self.toolbars['vdigit'].action['desc']=''
 
     def OnRotate(self, event):
-        """!Rotate 3D view
+        """Rotate 3D view
         """
         self.MapWindow.mouse['use'] = "rotate"
         
@@ -555,7 +556,7 @@
         self.MapWindow.SetNamedCursor('hand')
 
     def OnFlyThrough(self, event):
-        """!Fly-through mode
+        """Fly-through mode
         """
         self.MapWindow.mouse['use'] = "fly"
         
@@ -564,7 +565,7 @@
         self.MapWindow.SetFocus()
 
     def SaveToFile(self, event):
-        """!Save map to image
+        """Save map to image
         """
         filetype, ltype = self._prepareSaveToFile()
         if not ltype:
@@ -604,7 +605,7 @@
         dlg.Destroy()
 
     def DOutFile(self, command):
-        """!Saves map to image by running d.out.file from gui or d.mon.
+        """Saves map to image by running d.out.file from gui or d.mon.
         Command is expected to be validated by parser.        
         """
         filetype, ltype = self._prepareSaveToFile()
@@ -640,7 +641,7 @@
         self.MapWindow.SaveToFile(name, bitmapType, int(width), int(height))
 
     def DOutFileOptData(self, dcmd, layer, params, propwin):
-        """!Dummy function which is called when d.out.file is called
+        """Dummy function which is called when d.out.file is called
         and returns parsed and validated command which is then passed
         to DOutFile method."""
         if not dcmd:
@@ -649,7 +650,7 @@
         self.DOutFile(dcmd)
 
     def _prepareSaveToFile(self):
-        """!Get wildcards and format extensions."""
+        """Get wildcards and format extensions."""
         if self.IsPaneShown('3d'):
             filetype = "TIF file (*.tif)|*.tif|PPM file (*.ppm)|*.ppm"
             ltype = [{ 'ext' : 'tif', 'type' : 'tif' },
@@ -687,7 +688,7 @@
         printmenu.Destroy()
 
     def OnCloseWindow(self, event):
-        """!Window closed.
+        """Window closed.
         Also close associated layer tree page
         """
         Debug.msg(2, "MapFrame.OnCloseWindow(): function starts")
@@ -711,10 +712,9 @@
         Debug.msg(2, "MapFrame.OnCloseWindow(): function ends")
 
     def Query(self, x, y):
-        """!Query selected layers. 
+        """Query selected layers. 
 
-        @param x,y coordinates
-        @param layers selected tree item layers
+        :param x,y: coordinates
         """
         if self._vectQueryLayers or self._rastQueryLayers:
             rast = self._rastQueryLayers
@@ -769,7 +769,7 @@
                 self.QueryMap(east, north, qdist, rast = [], vect = vect)
 
     def SetQueryLayersAndActivate(self, ltype, maps):
-        """!Activate query mode and set layers to query.
+        """Activate query mode and set layers to query.
         This method is used for querying in d.mon using d.what.rast/vect"""
         self.toolbars['map'].SelectTool(self.toolbars['map'].query)
         if ltype == 'vect':
@@ -778,12 +778,12 @@
             self._rastQueryLayers = maps
 
     def QueryMap(self, east, north, qdist, rast, vect):
-        """!Query raster or vector map layers by r/v.what
+        """Query raster or vector map layers by r/v.what
         
-        @param east,north coordinates
-        @param qdist query distance
-        @param rast raster map names
-        @param vect vector map names
+        :param east,north: coordinates
+        :param qdist: query distance
+        :param rast: raster map names
+        :param vect: vector map names
         """
         Debug.msg(1, "QueryMap(): raster=%s vector=%s" % (','.join(rast),
                                                           ','.join(vect)))
@@ -820,14 +820,14 @@
         event.Skip()
 
     def _onRedirectQueryOutput(self, output, style='log'):
-        """!Writes query output into console"""
+        """Writes query output into console"""
         if style == 'log':
             self._giface.WriteLog(output, notification=Notification.MAKE_VISIBLE)
         elif style == 'cmd':
             self._giface.WriteCmdLog(output)
 
     def _queryHighlight(self, vectQuery):
-        """!Highlight category from query."""
+        """Highlight category from query."""
         cats = name = None
         for res in vectQuery:
             cats = {res['Layer']: [res['Category']]}
@@ -860,7 +860,7 @@
             self.MapWindow.UpdateMap(render = False, renderVector = False)
 
     def _QueryMapDone(self):
-        """!Restore settings after querying (restore GRASS_REGION)
+        """Restore settings after querying (restore GRASS_REGION)
         """
         if hasattr(self, "tmpreg"):
             if self.tmpreg:
@@ -874,7 +874,7 @@
             del self.tmpreg
         
     def OnQuery(self, event):
-        """!Query tools menu"""
+        """Query tools menu"""
         self.MapWindow.mouse['use'] = "query"
         self.MapWindow.mouse['box'] = "point"
         self.MapWindow.zoomtype = 0
@@ -883,10 +883,10 @@
         self.MapWindow.SetNamedCursor('cross')
         
     def AddTmpVectorMapLayer(self, name, cats, useId = False, addLayer = True):
-        """!Add temporal vector map layer to map composition
+        """Add temporal vector map layer to map composition
 
-        @param name name of map layer
-        @param useId use feature id instead of category 
+        :param name: name of map layer
+        :param useId: use feature id instead of category 
         """
         # color settings from ATM
         color = UserSettings.Get(group = 'atm', key = 'highlight', subkey = 'color')
@@ -944,9 +944,9 @@
         self._onMeasure(MeasureAreaController)
 
     def _onMeasure(self, controller):
-        """!Starts measurement mode.
+        """Starts measurement mode.
 
-        @param controller measurement class (MeasureDistanceController, MeasureAreaController)
+        :param controller: measurement class (MeasureDistanceController, MeasureAreaController)
         """
         self.measureController = controller(self._giface, mapWindow=self.GetMapWindow())
         # assure that the mode is ended and lines are cleared whenever other tool is selected
@@ -954,7 +954,7 @@
         self.measureController.Start()
 
     def OnProfile(self, event):
-        """!Launch profile tool
+        """Launch profile tool
         """
         rasters = []
         layers = self._giface.GetLayerList().GetSelectedLayers()
@@ -964,7 +964,7 @@
         self.Profile(rasters=rasters)
 
     def Profile(self, rasters=None):
-        """!Launch profile tool"""
+        """Launch profile tool"""
         self.profileController = ProfileController(self._giface,
                                                    mapWindow=self.GetMapWindow())
         win = ProfileFrame(parent=self, rasterList=rasters,
@@ -976,7 +976,7 @@
         win.OnSelectRaster(None)
 
     def OnHistogramPyPlot(self, event):
-        """!Init PyPlot histogram display canvas and tools
+        """Init PyPlot histogram display canvas and tools
         """
         raster = []
 
@@ -989,7 +989,7 @@
         win.Show()
         
     def OnScatterplot(self, event):
-        """!Init PyPlot scatterplot display canvas and tools
+        """Init PyPlot scatterplot display canvas and tools
         """
         raster = []
 
@@ -1006,7 +1006,7 @@
         win.OnSelectRaster(None)
 
     def OnHistogram(self, event):
-        """!Init histogram display canvas and tools
+        """Init histogram display canvas and tools
         """
         win = HistogramFrame(self, giface=self._giface)
         
@@ -1016,9 +1016,9 @@
         win.Update()
 
     def _activateOverlay(self, overlayId):
-        """!Launch decoration dialog according to overlay id.
+        """Launch decoration dialog according to overlay id.
 
-        @param overlayId id of overlay        
+        :param overlayId: id of overlay        
         """
         if overlayId > 100:
             self.OnAddText(None)
@@ -1030,14 +1030,14 @@
             self.AddArrow(showDialog=True)
 
     def _hideOverlay(self, overlayId):
-        """!Hide overlay.
+        """Hide overlay.
 
-        @param overlayId id of overlay        
+        :param overlayId: id of overlay        
         """
         self.decorations[overlayId].Hide()
 
     def AddBarscale(self, cmd=None, showDialog=None):
-        """!Handler for scale bar map decoration menu selection."""
+        """Handler for scale bar map decoration menu selection."""
         if self.IsPaneShown('3d'):
             self.MapWindow3D.SetDrawScalebar((70, 70))
             return
@@ -1076,7 +1076,7 @@
         self.MapWindow.mouse['use'] = 'pointer'
 
     def AddLegend(self, cmd=None, showDialog=None):
-        """!Handler for legend map decoration menu selection."""
+        """Handler for legend map decoration menu selection."""
         if self.legend.IsShown() and showDialog is None:
             self.legend.Hide()
             return
@@ -1123,7 +1123,7 @@
         self.MapWindow.mouse['use'] = 'pointer'
 
     def AddArrow(self, cmd=None, showDialog=None):
-        """!Handler for north arrow menu selection."""
+        """Handler for north arrow menu selection."""
         if self.IsPaneShown('3d'):
             # here was opening of appearance page of nviz notebook
             # but now moved to MapWindow3D where are other problematic nviz calls
@@ -1155,7 +1155,7 @@
         self.MapWindow.mouse['use'] = 'pointer'
 
     def OnAddText(self, event):
-        """!Handler for text decoration menu selection.
+        """Handler for text decoration menu selection.
         """
         if self.MapWindow.dragid > -1:
             id = self.MapWindow.dragid
@@ -1206,7 +1206,7 @@
         self.MapWindow.mouse['use'] = 'pointer'
         
     def GetOptData(self, dcmd, type, params, propwin):
-        """!Callback method for decoration overlay command generated by
+        """Callback method for decoration overlay command generated by
         dialog created in menuform.py
         """
         # Reset comand and rendering options in render.Map. Always render decoration.
@@ -1217,7 +1217,7 @@
         self.propwin[type] = propwin
 
     def OnZoomToMap(self, event):
-        """!Set display extents to match selected raster (including
+        """Set display extents to match selected raster (including
         NULLs) or vector map.
         """
         Debug.msg(3, "MapFrame.OnZoomToMap()")
@@ -1228,44 +1228,44 @@
         self.MapWindow.ZoomToMap(layers = layers)
 
     def OnZoomToRaster(self, event):
-        """!Set display extents to match selected raster map (ignore NULLs)
+        """Set display extents to match selected raster map (ignore NULLs)
         """
         self.MapWindow.ZoomToMap(ignoreNulls = True)
         
     def OnZoomToSaved(self, event):
-        """!Set display geometry to match extents in
+        """Set display geometry to match extents in
         saved region file
         """
         self.MapWindow.SetRegion(zoomOnly=True)
         
     def OnSetDisplayToWind(self, event):
-        """!Set computational region (WIND file) to match display
+        """Set computational region (WIND file) to match display
         extents
         """
         self.MapWindow.DisplayToWind()
 
     def OnSetWindToRegion(self, event):
-        """!Set computational region (WIND file) from named region
+        """Set computational region (WIND file) from named region
         file
         """
         self.MapWindow.SetRegion(zoomOnly=False)
  
     def OnSetExtentToWind(self, event):
-        """!Set compulational region extent interactively"""
+        """Set compulational region extent interactively"""
         self.MapWindow.SetModeDrawRegion()
 
     def OnSaveDisplayRegion(self, event):
-        """!Save display extents to named region file.
+        """Save display extents to named region file.
         """
         self.MapWindow.SaveRegion(display = True)
 
     def OnSaveWindRegion(self, event):
-        """!Save computational region to named region file.
+        """Save computational region to named region file.
         """
         self.MapWindow.SaveRegion(display = False)
         
     def OnZoomMenu(self, event):
-        """!Popup Zoom menu
+        """Popup Zoom menu
         """
         zoommenu = wx.Menu()
         
@@ -1292,7 +1292,7 @@
 
     def SetProperties(self, render = False, mode = 0, showCompExtent = False,
                       constrainRes = False, projection = False, alignExtent = True):
-        """!Set properies of map display window"""
+        """Set properies of map display window"""
         self.mapWindowProperties.autoRender = render
         self.statusbarManager.SetMode(mode)
         self.StatusbarUpdate()
@@ -1302,9 +1302,9 @@
         self.SetProperty('projection', projection)
         
     def IsStandalone(self):
-        """!Check if Map display is standalone
+        """Check if Map display is standalone
 
-        @depreciated
+        .. deprecated::
         """
         # TODO: once it is removed from 2 places in vdigit it can be deleted
         # here and also in base class and other classes in the tree (hopefully)
@@ -1318,12 +1318,12 @@
         return True
     
     def GetLayerManager(self):
-        """!Get reference to Layer Manager
+        """Get reference to Layer Manager
 
-        @return window reference
-        @return None (if standalone)
+        :return: window reference
+        :return: None (if standalone)
 
-        @depreciated
+        .. deprecated::
         """
         Debug.msg(1, "MapFrame.GetLayerManager(): Method GetLayerManager is"
                   "depreciated, use some general approach instead such as"
@@ -1331,11 +1331,11 @@
         return self._layerManager
     
     def GetMapToolbar(self):
-        """!Returns toolbar with zooming tools"""
+        """Returns toolbar with zooming tools"""
         return self.toolbars['map']
 
     def OnVNet(self, event):
-        """!Dialog for v.net* modules 
+        """Dialog for v.net* modules 
         """
         if self.dialogs['vnet']:
             self.dialogs['vnet'].Raise()
@@ -1355,7 +1355,7 @@
         self.GetMapToolbar().SelectDefault()
 
     def _switchMapWindow(self, map_win):
-        """!Notifies activated and disactivated map_wins."""
+        """Notifies activated and disactivated map_wins."""
         self.MapWindow.DisactivateWin()
         map_win.ActivateWin()
 

Modified: grass/trunk/gui/wxpython/mapdisp/gprint.py
===================================================================
--- grass/trunk/gui/wxpython/mapdisp/gprint.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapdisp/gprint.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package mapdisp.gprint
 
 @brief Print context and utility functions for printing

Modified: grass/trunk/gui/wxpython/mapdisp/main.py
===================================================================
--- grass/trunk/gui/wxpython/mapdisp/main.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapdisp/main.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package mapdisp.main
 
 @brief Start Map Display as standalone application
@@ -54,10 +54,10 @@
 
 class DMonMap(Map):
     def __init__(self, giface, cmdfile=None, mapfile=None):
-        """!Map composition (stack of map layers and overlays)
+        """Map composition (stack of map layers and overlays)
 
-        @param cmdline full path to the cmd file (defined by d.mon)
-        @param mapfile full path to the map file (defined by d.mon)
+        :param cmdline: full path to the cmd file (defined by d.mon)
+        :param mapfile: full path to the map file (defined by d.mon)
         """
 
         Map.__init__(self)
@@ -85,7 +85,7 @@
         self.query = Signal('DMonMap.query')
 
     def GetLayersFromCmdFile(self):
-        """!Get list of map layers from cmdfile
+        """Get list of map layers from cmdfile
         """
         if not self.cmdfile:
             return
@@ -204,7 +204,7 @@
         Debug.msg(1, "                            nlayers=%d" % nlayers)
                 
     def Render(self, *args, **kwargs):
-        """!Render layer to image.
+        """Render layer to image.
 
         For input params and returned data see overridden method in Map class.
         """
@@ -213,7 +213,7 @@
         return ret
     
     def AddLayer(self, *args, **kwargs):
-        """!Adds generic map layer to list of layers.
+        """Adds generic map layer to list of layers.
 
         For input params and returned data see overridden method in Map class.
         """
@@ -232,7 +232,7 @@
 
 
 class Layer(object):
-    """!@implements core::giface::Layer"""
+    """@implements core::giface::Layer"""
     def __init__(self, maplayer):
         self._maplayer = maplayer
 
@@ -253,7 +253,7 @@
 
 class LayerList(object):
     def __init__(self, map, giface):
-        """!@implements core::giface::LayerList"""
+        """@implements core::giface::LayerList"""
         self._map = map
         self._giface = giface
 
@@ -267,7 +267,7 @@
         return layers
 
     def GetSelectedLayer(self, checkedOnly=False):
-        """!Returns selected layer or None when there is no selected layer."""
+        """Returns selected layer or None when there is no selected layer."""
         layers = self.GetSelectedLayers()
         if len(layers) > 0:
             return layers[0]
@@ -276,15 +276,15 @@
 
     def AddLayer(self, ltype, name=None, checked=None,
                  opacity=1.0, cmd=None):
-        """!Adds a new layer to the layer list.
+        """Adds a new layer to the layer list.
 
         Launches property dialog if needed (raster, vector, etc.)
 
-        @param ltype layer type (raster, vector, 3d-raster, ...)
-        @param name layer name
-        @param checked if True layer is checked
-        @param opacity layer opacity level
-        @param cmd command (given as a list)
+        :param ltype: layer type (raster, vector, 3d-raster, ...)
+        :param name: layer name
+        :param checked: if True layer is checked
+        :param opacity: layer opacity level
+        :param cmd: command (given as a list)
         """
         self._map.AddLayer(ltype=ltype, command=cmd,
                            name=name, active=True,
@@ -318,7 +318,7 @@
 
 
 class DMonGrassInterface(StandaloneGrassInterface):
-    """!@implements GrassInterface"""
+    """@implements GrassInterface"""
     def __init__(self, mapframe):
         StandaloneGrassInterface.__init__(self)
         self._mapframe = mapframe
@@ -380,7 +380,7 @@
                 grass.try_remove(f)
             
     def watcher(self):
-        """!Redraw, if new layer appears (check's timestamp of
+        """Redraw, if new layer appears (check's timestamp of
         cmdfile)
         """
         try:
@@ -405,7 +405,7 @@
             self.timer.Stop()
 
     def GetMapFrame(self):
-        """!Get Map Frame instance"""
+        """Get Map Frame instance"""
         return self.mapFrm
 
 if __name__ == "__main__":

Modified: grass/trunk/gui/wxpython/mapdisp/statusbar.py
===================================================================
--- grass/trunk/gui/wxpython/mapdisp/statusbar.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapdisp/statusbar.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package mapdisp.statusbar
 
 @brief Classes for statusbar management
@@ -44,7 +44,7 @@
 from grass.pydispatch.signal import Signal
 
 class SbException:
-    """! Exception class used in SbManager and SbItems"""
+    """Exception class used in SbManager and SbItems"""
     def __init__(self, message):
         self.message = message
     def __str__(self):
@@ -52,7 +52,7 @@
 
 
 class SbManager:
-    """!Statusbar manager for wx.Statusbar and SbItems.
+    """Statusbar manager for wx.Statusbar and SbItems.
     
     Statusbar manager manages items added by AddStatusbarItem method.
     Provides progress bar (SbProgress) and choice (wx.Choice).
@@ -63,11 +63,14 @@
     User settings (group = 'display', key = 'statusbarMode', subkey = 'selection')
     are taken into account.
     
-    @todo generalize access to UserSettings (specify group, etc.) 
-    @todo add GetMode method using name instead of index
+    .. todo::
+        generalize access to UserSettings (specify group, etc.) 
+
+    .. todo::
+        add GetMode method using name instead of index
     """
     def __init__(self, mapframe, statusbar):
-        """!Connects manager to statusbar
+        """Connects manager to statusbar
         
         Creates choice and progress bar.
         """
@@ -92,64 +95,66 @@
         self._hiddenItems = {}
     
     def SetProperty(self, name, value):
-        """!Sets property represented by one of contained SbItems
+        """Sets property represented by one of contained SbItems
             
-        @param name name of SbItem (from name attribute)
-        @param value value to be set
+        :param name: name of SbItem (from name attribute)
+        :param value: value to be set
         """
         self.statusbarItems[name].SetValue(value)
         
     def GetProperty(self, name):
-        """!Returns property represented by one of contained SbItems
+        """Returns property represented by one of contained SbItems
         
-        @param name name of SbItem (from name attribute)
+        :param name: name of SbItem (from name attribute)
         """
         return self.statusbarItems[name].GetValue()
         
     def HasProperty(self, name):
-        """!Checks whether property is represented by one of contained SbItems
+        """Checks whether property is represented by one of contained SbItems
         
-        @param name name of SbItem (from name attribute)
+        :param name: name of SbItem (from name attribute)
         
-        @returns True if particular SbItem is contained, False otherwise
+        :return: True if particular SbItem is contained, False otherwise
         """
         if name in self.statusbarItems:
             return True
         return False
     
     def AddStatusbarItem(self, item):
-        """!Adds item to statusbar
+        """Adds item to statusbar
         
         If item position is 0, item is managed by choice.        
         
-        @see AddStatusbarItemsByClass
+        :func:`AddStatusbarItemsByClass`
         """
         self.statusbarItems[item.name] = item
         if item.GetPosition() == 0:
             self.choice.Append(item.label, clientData = item) #attrError?
             
     def AddStatusbarItemsByClass(self, itemClasses, **kwargs):
-        """!Adds items to statusbar
+        """Adds items to statusbar
 
-        @param itemClasses list of classes of items to be add
-        @param kwargs SbItem constructor parameters
+        :param list itemClasses: list of classes of items to be add
+        :param kwargs: SbItem constructor parameters
         
-        @see AddStatusbarItem
+        :func:`AddStatusbarItem`
         """
         for Item in itemClasses:
             item = Item(**kwargs)
             self.AddStatusbarItem(item)
                       
     def HideStatusbarChoiceItemsByClass(self, itemClasses):
-        """!Hides items showed in choice
+        """Hides items showed in choice
         
         Hides items with position 0 (items showed in choice) by removing
         them from choice.
         
-        @param itemClasses list of classes of items to be hided
+        :param itemClasses list of classes of items to be hided
         
-        @see ShowStatusbarChoiceItemsByClass
-        @todo consider adding similar function which would take item names
+        :func:`ShowStatusbarChoiceItemsByClass`
+        
+        .. todo::
+            consider adding similar function which would take item names
         """
         index = []
         for itemClass in itemClasses:
@@ -163,15 +168,15 @@
             self.choice.Delete(i)
         
     def ShowStatusbarChoiceItemsByClass(self, itemClasses):
-        """!Shows items showed in choice
+        """Shows items showed in choice
         
         Shows items with position 0 (items showed in choice) by adding
         them to choice.
         Items are restored in their old positions.
         
-        @param itemClasses list of classes of items to be showed
+        :param itemClasses list of classes of items to be showed
         
-        @see HideStatusbarChoiceItemsByClass
+        :func:`HideStatusbarChoiceItemsByClass`
         """
         # must be sorted to be inserted correctly
         for pos in sorted(self._hiddenItems.keys()):
@@ -180,16 +185,16 @@
                 self.choice.Insert(item.label, pos, item)
         
     def ShowItem(self, itemName):
-        """!Invokes showing of particular item
+        """Invokes showing of particular item
         
-        @see Update
+        :func:`Update`
         """
         if self.statusbarItems[itemName].GetPosition() != 0 or \
            not self.progressbar.IsShown():
             self.statusbarItems[itemName].Show()
         
     def _postInit(self):
-        """!Post-initialization method
+        """Post-initialization method
         
         It sets internal user settings,
         set choice's selection (from user settings) and does reposition.
@@ -211,7 +216,7 @@
         self._postInitialized = True
         
     def Update(self):
-        """!Updates statusbar
+        """Updates statusbar
 
         It always updates mask.
         """
@@ -233,7 +238,7 @@
             item.Update()
         
     def Reposition(self):
-        """!Reposition items in statusbar
+        """Reposition items in statusbar
         
         Set positions to all items managed by statusbar manager.
         It should not be necessary to call it manually.
@@ -274,7 +279,7 @@
             win.SetSize((w, h))
         
     def GetProgressBar(self):
-        """!Returns progress bar"""
+        """Returns progress bar"""
         return self.progressbar
 
     def _progressShown(self):
@@ -286,7 +291,7 @@
         self.choice.GetClientData(self.choice.GetSelection()).Show()
 
     def OnToggleStatus(self, event):
-        """!Toggle status text
+        """Toggle status text
         """
         self.Update()
         if event.GetSelection() == 3: # use something better than magic numbers
@@ -297,7 +302,7 @@
                 self.mapFrame.OnRender(None)
         
     def SetMode(self, modeIndex):
-        """!Sets current mode
+        """Sets current mode
         
         Mode is usually driven by user through choice.
         """
@@ -305,7 +310,7 @@
         self.choice.SetSelection(modeIndex)
     
     def GetMode(self):
-        """!Returns current mode"""
+        """Returns current mode"""
         return self.choice.GetSelection()
 
     def SetProgress(self, range, value, text):
@@ -316,7 +321,7 @@
             self.statusbar.SetStatusText(text)
         
 class SbItem:
-    """!Base class for statusbar items.
+    """Base class for statusbar items.
     
     Each item represents functionality (or action) controlled by statusbar
     and related to MapFrame.
@@ -326,23 +331,25 @@
     Items usually has requirements to MapFrame instance
     (specified as MapFrame.methodname or MapWindow.methodname).
     
-    @todo consider externalizing position (see SbProgress use in SbManager)
+    .. todo::
+        consider externalizing position (see SbProgress use in SbManager)
     """
     def __init__(self, mapframe, statusbar, position = 0):
-        """!
+        """
         
-        @param mapframe instance of class with MapFrame interface
-        @param statusbar statusbar instance (wx.Statusbar)
-        @param position item position in statusbar
+        :param mapframe: instance of class with MapFrame interface
+        :param statusbar: statusbar instance (wx.Statusbar)
+        :param position: item position in statusbar
         
-        @todo rewrite Update also in derived classes to take in account item position
+        .. todo::
+            rewrite Update also in derived classes to take in account item position
         """
         self.mapFrame = mapframe
         self.statusbar = statusbar
         self.position = position
     
     def Show(self):
-        """!Invokes showing of underlying widget.
+        """Invokes showing of underlying widget.
         
         In derived classes it can do what is appropriate for it,
         e.g. showing text on statusbar (only).
@@ -362,28 +369,28 @@
         return self.position
     
     def GetWidget(self):
-        """!Returns underlaying winget.
+        """Returns underlaying winget.
         
-        @return widget or None if doesn't exist
+        :return: widget or None if doesn't exist
         """
         return self.widget
     
     def _update(self, longHelp):
-        """!Default implementation for Update method.
+        """Default implementation for Update method.
         
-        @param longHelp True to enable long help (help from toolbars)
+        :param longHelp: True to enable long help (help from toolbars)
         """
         self.statusbar.SetStatusText("", 0)
         self.Show()
         self.mapFrame.StatusbarEnableLongHelp(longHelp)
         
     def Update(self):
-        """!Called when statusbar action is activated (e.g. through wx.Choice).
+        """Called when statusbar action is activated (e.g. through wx.Choice).
         """
         self._update(longHelp = False)
 
 class SbRender(SbItem):
-    """!Checkbox to enable and disable auto-rendering.
+    """Checkbox to enable and disable auto-rendering.
     
     Requires MapFrame.OnRender method.
     """
@@ -419,7 +426,7 @@
         self.Show()
         
 class SbShowRegion(SbItem):
-    """!Checkbox to enable and disable showing of computational region.
+    """Checkbox to enable and disable showing of computational region.
     
     Requires MapFrame.OnRender, MapFrame.IsAutoRendered, MapFrame.GetWindow.
     """
@@ -452,11 +459,12 @@
         self._properties.showRegionChanged.disconnect(self._setValue)
 
     def OnToggleShowRegion(self, event):
-        """!Shows/Hides extent (comp. region) in map canvas.
+        """Shows/Hides extent (comp. region) in map canvas.
         
         Shows or hides according to checkbox value.
 
-        @todo needs refactoring
+        .. todo::
+            needs refactoring
         """
         self._disconnectShowRegion()
         self._properties.showRegion = self.widget.GetValue()
@@ -473,7 +481,7 @@
         self._connectShowRegion()
 
 class SbAlignExtent(SbItem):
-    """!Checkbox to select zoom behavior.
+    """Checkbox to select zoom behavior.
     
     Used by BufferedWindow (through MapFrame property).
     See tooltip for explanation.
@@ -514,7 +522,7 @@
 
 
 class SbResolution(SbItem):
-    """!Checkbox to select used display resolution.
+    """Checkbox to select used display resolution.
     
     Requires MapFrame.OnRender method. 
     """
@@ -545,7 +553,7 @@
         self._properties.resolutionChanged.disconnect(self._setValue)
 
     def OnToggleUpdateMap(self, event):
-        """!Update display when toggle display mode
+        """Update display when toggle display mode
         """
         self._disconnectResolutionChange()
         self._properties.resolution = self.widget.GetValue()
@@ -556,7 +564,7 @@
 
 
 class SbMapScale(SbItem):
-    """!Editable combobox to get/set current map scale.
+    """Editable combobox to get/set current map scale.
     
     Requires MapFrame.GetMapScale, MapFrame.SetMapScale
     and MapFrame.GetWindow (and GetWindow().UpdateMap()).
@@ -603,7 +611,7 @@
         self.mapFrame.StatusbarEnableLongHelp(False)
 
     def OnChangeMapScale(self, event):
-        """!Map scale changed by user
+        """Map scale changed by user
         """
         scale = event.GetString()
 
@@ -623,7 +631,7 @@
         
         
 class SbGoTo(SbItem):
-    """!Textctrl to set coordinates which to focus on.
+    """Textctrl to set coordinates which to focus on.
     
     Requires MapFrame.GetWindow, MapWindow.GoTo method.
     """
@@ -642,10 +650,10 @@
         self.widget.Bind(wx.EVT_TEXT_ENTER, self.OnGoTo)
     
     def ReprojectENToMap(self, e, n, useDefinedProjection):
-        """!Reproject east, north from user defined projection
+        """Reproject east, north from user defined projection
         
-        @param e,n coordinate (for DMS string, else float or string)
-        @param useDefinedProjection projection defined by user in settings dialog
+        :param e,n: coordinate (for DMS string, else float or string)
+        :param useDefinedProjection: projection defined by user in settings dialog
         
         @throws SbException if useDefinedProjection is True and projection is not defined in UserSettings
         """
@@ -679,7 +687,7 @@
         return e, n
 
     def OnGoTo(self, event):
-        """!Go to position
+        """Go to position
         """
         try:
             e, n = self.GetValue().split(';')
@@ -706,7 +714,7 @@
             self.statusbar.SetStatusText(str(e), 0)
 
     def GetCenterString(self, map):
-        """!Get current map center in appropriate format"""
+        """Get current map center in appropriate format"""
         region = map.GetCurrentRegion()
         precision = int(UserSettings.Get(group = 'projection', key = 'format',
                                          subkey = 'precision'))
@@ -740,7 +748,7 @@
 
 
     def SetCenter(self):
-        """!Set current map center as item value"""
+        """Set current map center as item value"""
         center = self.GetCenterString(self.mapFrame.GetMap())
         self.SetValue(center)
         
@@ -758,7 +766,7 @@
         
 
 class SbProjection(SbItem):
-    """!Checkbox to enable user defined projection (can be set in settings)"""
+    """Checkbox to enable user defined projection (can be set in settings)"""
     def __init__(self, mapframe, statusbar, position = 0):
         SbItem.__init__(self, mapframe, statusbar, position)
         self.name = 'projection'
@@ -796,7 +804,7 @@
         
 
 class SbMask(SbItem):
-    """!StaticText to show whether mask is activated."""
+    """StaticText to show whether mask is activated."""
     def __init__(self, mapframe, statusbar, position = 0):
         SbItem.__init__(self, mapframe, statusbar, position)
         self.name = 'mask'
@@ -813,7 +821,7 @@
             self.Hide()
         
 class SbTextItem(SbItem):
-    """!Base class for items without widgets.
+    """Base class for items without widgets.
     
     Only sets statusbar text.
     """
@@ -841,7 +849,7 @@
         self._update(longHelp = True)
 
 class SbDisplayGeometry(SbTextItem):
-    """!Show current display resolution."""
+    """Show current display resolution."""
     def __init__(self, mapframe, statusbar, position = 0):
         SbTextItem.__init__(self, mapframe, statusbar, position)
         self.name = 'displayGeometry'
@@ -861,7 +869,7 @@
         SbTextItem.Show(self)
 
 class SbCoordinates(SbTextItem):
-    """!Show map coordinates when mouse moves.
+    """Show map coordinates when mouse moves.
     
     Requires MapWindow.GetLastEN method."""
     def __init__(self, mapframe, statusbar, position = 0):
@@ -874,7 +882,8 @@
     def Show(self):
         """Show the last map window coordinates.
 
-        @todo remove last EN call and use coordinates comming from signal
+        .. todo::
+            remove last EN call and use coordinates comming from signal
         """
         precision = int(UserSettings.Get(group = 'projection', key = 'format',
                              subkey = 'precision'))
@@ -908,14 +917,14 @@
         It does not show the changed text immediately, it waits for the Show()
         method to be called.
 
-        @param text string to be shown
+        :param text: string to be shown
         """
         self._additionalInfo = text
 
     def ReprojectENFromMap(self, e, n, useDefinedProjection, precision, format):
-        """!Reproject east, north to user defined projection.
+        """Reproject east, north to user defined projection.
         
-        @param e,n coordinate
+        :param e,n: coordinate
         
         @throws SbException if useDefinedProjection is True and projection is not defined in UserSettings
         """
@@ -943,7 +952,7 @@
                 return "%.*f; %.*f" % (precision, e, precision, n)
         
 class SbRegionExtent(SbTextItem):
-    """!Shows current display region"""
+    """Shows current display region"""
     def __init__(self, mapframe, statusbar, position = 0):
         SbTextItem.__init__(self, mapframe, statusbar, position)
         self.name = 'displayRegion'
@@ -964,13 +973,13 @@
         SbTextItem.Show(self)
     
     def _getRegion(self):
-        """!Get current display region"""
+        """Get current display region"""
         return self.mapFrame.GetMap().GetCurrentRegion() # display region
         
     def _formatRegion(self, w, e, s, n, nsres, ewres, precision = None):
-        """!Format display region string for statusbar
+        """Format display region string for statusbar
 
-        @param nsres,ewres unused
+        :param nsres,ewres: unused
         """
         if precision is not None:
             return "%.*f - %.*f, %.*f - %.*f" % (precision, w, precision, e,
@@ -980,9 +989,10 @@
          
            
     def ReprojectRegionFromMap(self, region, useDefinedProjection, precision, format):
-        """!Reproject region values
+        """Reproject region values
         
-        @todo reorganize this method to remove code useful only for derived class SbCompRegionExtent
+        .. todo::
+            reorganize this method to remove code useful only for derived class SbCompRegionExtent
         """
         if useDefinedProjection:
             settings = UserSettings.Get(group = 'projection', key = 'statusbar', subkey = 'proj4')
@@ -1038,14 +1048,14 @@
                                 
                                 
 class SbCompRegionExtent(SbRegionExtent):
-    """!Shows computational region."""
+    """Shows computational region."""
     def __init__(self, mapframe, statusbar, position = 0):
         SbRegionExtent.__init__(self, mapframe, statusbar, position)
         self.name = 'computationalRegion'
         self.label = _("Computational region")
         
     def _formatRegion(self, w, e, s, n, ewres, nsres, precision = None):
-        """!Format computational region string for statusbar"""
+        """Format computational region string for statusbar"""
         if precision is not None:
             return "%.*f - %.*f, %.*f - %.*f (%.*f, %.*f)" % (precision, w, precision, e,
                                                               precision, s, precision, n,
@@ -1054,12 +1064,12 @@
             return "%s - %s, %s - %s (%s, %s)" % (w, e, s, n, ewres, nsres)
         
     def _getRegion(self):
-        """!Returns computational region."""
+        """Returns computational region."""
         return self.mapFrame.GetMap().GetRegion() # computational region
         
         
 class SbProgress(SbItem):
-    """!General progress bar to show progress.
+    """General progress bar to show progress.
     
     Underlaying widget is wx.Gauge.
     """
@@ -1076,11 +1086,11 @@
         
         
     def GetRange(self):
-        """!Returns progress range."""
+        """Returns progress range."""
         return self.widget.GetRange()
     
     def SetRange(self, range):
-        """!Sets progress range."""
+        """Sets progress range."""
         if range > 0:        
             if self.GetRange() != range:
                 self.widget.SetRange(range)
@@ -1099,12 +1109,12 @@
             self.widget.Hide()
 
     def IsShown(self):
-        """!Is progress bar shown
+        """Is progress bar shown
         """
         return self.widget.IsShown()
 
     def SetValue(self, value):
-        """!Sets value of progressbar."""
+        """Sets value of progressbar."""
         if value > self.GetRange():
             self.Hide()
             return
@@ -1115,9 +1125,9 @@
 
 
     def GetWidget(self):
-        """!Returns underlaying winget.
+        """Returns underlaying winget.
         
-        @return widget or None if doesn't exist
+        :return: widget or None if doesn't exist
         """
         return self.widget
 

Modified: grass/trunk/gui/wxpython/mapdisp/test_mapdisp.py
===================================================================
--- grass/trunk/gui/wxpython/mapdisp/test_mapdisp.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapdisp/test_mapdisp.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -67,7 +67,7 @@
 
 
 class MapdispGrassInterface(StandaloneGrassInterface):
-    """!@implements GrassInterface"""
+    """@implements GrassInterface"""
     def __init__(self, map_):
         StandaloneGrassInterface.__init__(self)
         self._map = map_
@@ -82,7 +82,7 @@
 
 # this is a copy of method from some frame class
 def copyOfInitMap(map_, width, height):
-    """!Initialize map display, set dimensions and map region
+    """Initialize map display, set dimensions and map region
     """
     if not grass.find_program('g.region', '--help'):
         sys.exit(_("GRASS module '%s' not found. Unable to start map "
@@ -269,7 +269,7 @@
 
         
 def main():
-    """!Sets the GRASS display driver
+    """Sets the GRASS display driver
     """
     driver = UserSettings.Get(group='display', key='driver', subkey='type')
     if driver == 'png':

Modified: grass/trunk/gui/wxpython/mapdisp/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/mapdisp/toolbars.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapdisp/toolbars.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package mapdisp.toolbars
 
 @brief Map display frame - toolbars
@@ -66,12 +66,12 @@
     }
 
 class MapToolbar(BaseToolbar):
-    """!Map Display toolbar
+    """Map Display toolbar
     """
     def __init__(self, parent, toolSwitcher):
-        """!Map Display constructor
+        """Map Display constructor
 
-        @param parent reference to MapFrame
+        :param parent: reference to MapFrame
         """
         BaseToolbar.__init__(self, parent=parent, toolSwitcher=toolSwitcher) # MapFrame
         
@@ -136,7 +136,7 @@
         self.FixSize(width = 90)
         
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         return self._getToolbarData((('displayMap', BaseIcons['display'],
                                       self.parent.OnDraw),
                                      ('renderMap', BaseIcons['render'],
@@ -181,9 +181,9 @@
                                      (None, ))
                                     )
     def InsertTool(self, data):
-        """!Insert tool to toolbar
+        """Insert tool to toolbar
         
-        @param data toolbar data"""
+        :param data: toolbar data"""
         data = self._getToolbarData(data)
         for tool in data:
             self.CreateTool(*tool)
@@ -193,16 +193,16 @@
         self.parent._mgr.Update()
         
     def RemoveTool(self, tool):
-        """!Remove tool from toolbar
+        """Remove tool from toolbar
         
-        @param tool tool id"""
+        :param tool: tool id"""
         self.DeleteTool(tool)
         
         self.parent._mgr.GetPane('mapToolbar').BestSize(self.GetBestSize())
         self.parent._mgr.Update()
         
     def ChangeToolsDesc(self, mode2d):
-        """!Change description of zoom tools for 2D/3D view"""
+        """Change description of zoom tools for 2D/3D view"""
         if mode2d:
             icons = BaseIcons
         else:
@@ -215,7 +215,7 @@
                     self._data[i] = tuple(tmp)
         
     def OnSelectTool(self, event):
-        """!Select / enable tool available in tools list
+        """Select / enable tool available in tools list
         """
         tool =  event.GetSelection()
         
@@ -236,7 +236,7 @@
             self.parent.MapWindow.SetFocus()
 
     def OnAnalyze(self, event):
-        """!Analysis tools menu
+        """Analysis tools menu
         """
         self._onMenu(((MapIcons["measureDistance"], self.parent.OnMeasureDistance),
                       (MapIcons["measureArea"], self.parent.OnMeasureArea),
@@ -247,7 +247,7 @@
                       (MapIcons["vnet"],        self.parent.OnVNet)))
         
     def OnDecoration(self, event):
-        """!Decorations overlay menu
+        """Decorations overlay menu
         """
         self._onMenu(((MapIcons["addLegend"], lambda evt: self.parent.AddLegend()),
                       (MapIcons["addBarscale"], lambda evt: self.parent.AddBarscale()),
@@ -263,7 +263,7 @@
             self.parent.RemoveNviz()
         
     def Enable2D(self, enabled):
-        """!Enable/Disable 2D display mode specific tools"""
+        """Enable/Disable 2D display mode specific tools"""
         for tool in (self.zoomMenu,
                      self.analyze,
                      self.printMap):

Modified: grass/trunk/gui/wxpython/mapswipe/dialogs.py
===================================================================
--- grass/trunk/gui/wxpython/mapswipe/dialogs.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapswipe/dialogs.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package mapswipe.dialogs
 
 @brief Dialogs used in Map Swipe
@@ -34,7 +34,7 @@
 
 
 class SwipeMapDialog(wx.Dialog):
-    """!Dialog used to select maps.
+    """Dialog used to select maps.
 
     There are two modes - simple (only two raster maps),
     or two layer lists.
@@ -80,7 +80,7 @@
         self._layout()
 
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         mainSizer = wx.BoxSizer(wx.VERTICAL)
         self._switchSizer = wx.BoxSizer()
         self._switchSizer.Add(self._firstPanel, proportion=1,
@@ -195,7 +195,7 @@
         self.applyChanges.emit()
 
     def GetValues(self):
-        """!Get raster maps"""
+        """Get raster maps"""
         if self.IsSimpleMode():
             return (self._firstRaster.GetValue(), self._secondRaster.GetValue())
         else:
@@ -214,7 +214,7 @@
 
 
 class PreferencesDialog(PreferencesBaseDialog):
-    """!Mapswipe preferences dialog"""
+    """Mapswipe preferences dialog"""
     def __init__(self, parent, giface, title=_("Map Swipe settings"),
                  settings=UserSettings):
         PreferencesBaseDialog.__init__(self, parent=parent, giface=giface, title=title,
@@ -227,7 +227,7 @@
         self.SetSize(self.size)
 
     def _createMirrorModePage(self, notebook):
-        """!Create notebook page for general settings"""
+        """Create notebook page for general settings"""
         panel = SP.ScrolledPanel(parent=notebook)
         panel.SetupScrolling(scroll_x=False, scroll_y=True)
         notebook.AddPage(page=panel, text=_("Mirror mode"))

Modified: grass/trunk/gui/wxpython/mapswipe/frame.py
===================================================================
--- grass/trunk/gui/wxpython/mapswipe/frame.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapswipe/frame.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package mapswipe.frame
 
 @brief Map Swipe Frame
@@ -119,7 +119,7 @@
         wx.CallAfter(self.CallAfterInit)
 
     def TrackCursor(self, event):
-        """!Track cursor in one window and show cross in the other.
+        """Track cursor in one window and show cross in the other.
 
         Only for mirror mode.
         """
@@ -135,14 +135,14 @@
         event.Skip()
 
     def ActivateFirstMap(self, event = None):
-        """!Switch tracking direction"""
+        """Switch tracking direction"""
         super(SwipeMapFrame, self).ActivateFirstMap(event)
 
         self.firstMapWindow.ClearLines()
         self.firstMapWindow.Refresh()
 
     def ActivateSecondMap(self, event = None):
-        """!Switch tracking direction"""
+        """Switch tracking direction"""
         super(SwipeMapFrame, self).ActivateSecondMap(event)
 
         self.secondMapWindow.ClearLines()
@@ -156,7 +156,7 @@
             self.OnSelectLayers(event=None)
         
     def InitStatusbar(self):
-        """!Init statusbar (default items)."""
+        """Init statusbar (default items)."""
         # items for choice
         self.statusbarItems = [sb.SbCoordinates,
                                sb.SbRegionExtent,
@@ -201,7 +201,7 @@
 
 
     def OnSliderPositionChanging(self, event):
-        """!Slider changes its position, sash must be moved too."""
+        """Slider changes its position, sash must be moved too."""
         Debug.msg (5, "SwipeMapFrame.OnSliderPositionChanging()")
 
         self.GetFirstWindow().movingSash = True
@@ -213,21 +213,21 @@
             self.splitter.OnSashChanging(None)
 
     def OnSliderPositionChanged(self, event):
-        """!Slider position changed, sash must be moved too."""
+        """Slider position changed, sash must be moved too."""
         Debug.msg (5, "SwipeMapFrame.OnSliderPositionChanged()")
 
         self.splitter.SetSashPosition(event.GetPosition())
         self.splitter.OnSashChanged(None)
 
     def OnSashChanging(self, event):
-        """!Sash position is changing, slider must be moved too."""
+        """Sash position is changing, slider must be moved too."""
         Debug.msg (5, "SwipeMapFrame.OnSashChanging()")
 
         self.slider.SetValue(self.splitter.GetSashPosition())
         event.Skip()
 
     def OnSashChanged(self, event):
-        """!Sash position changed, slider must be moved too."""
+        """Sash position changed, slider must be moved too."""
         Debug.msg (5, "SwipeMapFrame.OnSashChanged()")
 
         self.OnSashChanging(event)
@@ -253,13 +253,13 @@
             self.resize = False
 
     def OnAutoRenderChanged(self, value):
-        """!Auto rendering state changed."""
+        """Auto rendering state changed."""
         style = self.splitter.GetWindowStyle()
         style ^= wx.SP_LIVE_UPDATE
         self.splitter.SetWindowStyle(style)
 
     def AddToolbar(self, name):
-        """!Add defined toolbar to the window
+        """Add defined toolbar to the window
         
         Currently known toolbars are:
          - 'swipeMap'          - basic map toolbar
@@ -301,7 +301,7 @@
                       BestSize((self.toolbars[name].GetBestSize())))
 
     def _addPanes(self):
-        """!Add splitter window and sliders to aui manager"""
+        """Add splitter window and sliders to aui manager"""
         # splitter window
         self._mgr.AddPane(self.splitter, wx.aui.AuiPaneInfo().
                   Name('splitter').CaptionVisible(False).PaneBorder(True).
@@ -324,7 +324,7 @@
                   Right().Layer(1).BestSize((self.sliderV.GetBestSize())))
 
     def ZoomToMap(self):
-        """!
+        """
         Set display extents to match selected raster (including NULLs)
         or vector map.
         """
@@ -339,7 +339,7 @@
             self.GetSecondWindow().ZoomToMap(layers=layers)
 
     def OnZoomToMap(self, event):
-        """!Zoom to map"""
+        """Zoom to map"""
         self.ZoomToMap()
 
     def OnZoomBack(self, event):
@@ -409,7 +409,7 @@
             self.OnRender(event=None)
 
     def SetFirstRaster(self, name):
-        """!Set raster map to first Map"""
+        """Set raster map to first Map"""
         raster = grass.find_file(name = name, element = 'cell')
         if raster['fullname']:
             self.rasters['first'] = raster['fullname']
@@ -419,7 +419,7 @@
         return False
 
     def SetSecondRaster(self, name):
-        """!Set raster map to second Map"""
+        """Set raster map to second Map"""
         raster = grass.find_file(name = name, element = 'cell')
         if raster['fullname']:
             self.rasters['second'] = raster['fullname']
@@ -429,9 +429,9 @@
         return False
 
     def SetLayer(self, name, mapInstance):
-        """!Sets layer in Map.
+        """Sets layer in Map.
         
-        @param name layer (raster) name
+        :param name: layer (raster) name
         """
         Debug.msg (3, "SwipeMapFrame.SetLayer(): name=%s" % name)
         
@@ -444,7 +444,7 @@
                                         render = True)
 
     def OnSwitchWindows(self, event):
-        """!Switch windows position."""
+        """Switch windows position."""
         Debug.msg(3, "SwipeMapFrame.OnSwitchWindows()")
 
         splitter = self.splitter
@@ -455,11 +455,13 @@
         splitter.OnSashChanged(None)
 
     def _saveToFile(self, fileName, fileType):
-        """!Creates composite image by rendering both images and
+        """Creates composite image by rendering both images and
         pasting them into the new one.
 
-        @todo specify size of the new image (problem is inaccurate scaling)
-        @todo make dividing line width and color optional
+        .. todo::
+            specify size of the new image (problem is inaccurate scaling)
+        .. todo::
+            make dividing line width and color optional
         """
         w1 = self.splitter.GetWindow1()
         w2 = self.splitter.GetWindow2()
@@ -508,7 +510,7 @@
         grass.try_remove(filename2)
 
     def SaveToFile(self, event):
-        """!Save map to image
+        """Save map to image
         """
         img = self.firstMapWindow.img or self.secondMapWindow.img
         if not img:
@@ -541,7 +543,7 @@
         dlg.Destroy()
 
     def OnSwitchOrientation(self, event):
-        """!Switch orientation of the sash."""
+        """Switch orientation of the sash."""
         Debug.msg(3, "SwipeMapFrame.OnSwitchOrientation()")
 
         splitter = self.splitter
@@ -564,16 +566,16 @@
         self.SetRasterNames()
 
     def OnAddText(self, event):
-        """!Double click on text overlay
+        """Double click on text overlay
 
         So far not implemented.
         """
         pass
 
     def SetViewMode(self, mode):
-        """!Sets view mode.
+        """Sets view mode.
 
-        @param mode view mode ('swipe', 'mirror')
+        :param mode: view mode ('swipe', 'mirror')
         """
         if self._mode == mode:
             return
@@ -610,9 +612,9 @@
             self.GetSecondWindow().SetRasterNameText('', 102)
 
     def Query(self, x, y):
-        """!Query active layers from both mapwindows.
+        """Query active layers from both mapwindows.
 
-        @param x,y coordinates
+        :param x,y: coordinates
         """
         rasters = ([layer.GetName() for layer in
                     self.GetFirstMap().GetListOfLayers(ltype='raster', active=True)],
@@ -665,7 +667,7 @@
         event.Skip()
 
     def _QueryMapDone(self):
-        """!Restore settings after querying (restore GRASS_REGION)
+        """Restore settings after querying (restore GRASS_REGION)
         """
         if hasattr(self, "tmpreg"):
             if self.tmpreg:
@@ -679,11 +681,11 @@
             del self.tmpreg
 
     def GetMapToolbar(self):
-        """!Returns toolbar with zooming tools"""
+        """Returns toolbar with zooming tools"""
         return self.toolbars['swipeMap']
 
     def IsStandalone(self):
-        """!Since we do not need layer manager, we are standalone"""
+        """Since we do not need layer manager, we are standalone"""
         return True
 
     def OnHelp(self, event):
@@ -704,7 +706,7 @@
 
 
 class MapSplitter(wx.SplitterWindow):
-    """!Splitter window for displaying two maps"""
+    """Splitter window for displaying two maps"""
     def __init__(self, parent, id):
         wx.SplitterWindow.__init__(self, parent = parent, id = id,
                                    style = wx.SP_LIVE_UPDATE

Modified: grass/trunk/gui/wxpython/mapswipe/mapwindow.py
===================================================================
--- grass/trunk/gui/wxpython/mapswipe/mapwindow.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapswipe/mapwindow.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package swipe.mapwindow
 
 @brief Map Swipe map window.
@@ -32,7 +32,7 @@
 
 
 class SwipeBufferedWindow(BufferedMapWindow):
-    """!A subclass of BufferedWindow class. 
+    """A subclass of BufferedWindow class. 
 
     Enables to draw the image translated.
     Special mouse events with changed coordinates are used.
@@ -50,7 +50,7 @@
         self.lineid = wx.NewId()
 
     def _bindMouseEvents(self):
-        """!Binds wx mouse events and custom mouse events"""
+        """Binds wx mouse events and custom mouse events"""
         wx.EVT_MOUSE_EVENTS(self, self._mouseActions)
         wx.EVT_MOTION(self, self._mouseMotion)
         self.Bind(EVT_MOTION, self.OnMotion)
@@ -58,17 +58,17 @@
         self.Bind(wx.EVT_CONTEXT_MENU, self.OnContextMenu)
 
     def _RaiseMouseEvent(self, Event, EventType):
-         """!This is called in various other places to raise a Mouse Event
-         """
-         Debug.msg(5, "SwipeBufferedWindow._RaiseMouseEvent()")
+        """This is called in various other places to raise a Mouse Event
+        """
+        Debug.msg(5, "SwipeBufferedWindow._RaiseMouseEvent()")
 
         # this computes the new coordinates from the mouse coords.
-         x, y = Event.GetPosition()
-         pt = x - self.GetImageCoords()[0], y - self.GetImageCoords()[1]
-         evt = _MouseEvent(EventType, Event, self.GetId(), pt)
-         self.GetEventHandler().ProcessEvent(evt)
-         # this skip was not in the original code but is needed here
-         Event.Skip()
+        x, y = Event.GetPosition()
+        pt = x - self.GetImageCoords()[0], y - self.GetImageCoords()[1]
+        evt = _MouseEvent(EventType, Event, self.GetId(), pt)
+        self.GetEventHandler().ProcessEvent(evt)
+        # this skip was not in the original code but is needed here
+        Event.Skip()
 
     def _mouseActions(self, event):
         self._RaiseMouseEvent(event, EVT_MY_MOUSE_EVENTS)
@@ -77,7 +77,7 @@
         self._RaiseMouseEvent(event, EVT_MY_MOTION)
 
     def GetClientSize(self):
-        """!Overriden method which returns simulated window size.
+        """Overriden method which returns simulated window size.
         """
         if self._mode == 'swipe':
             return self.specialSize
@@ -85,38 +85,38 @@
             return super(SwipeBufferedWindow, self).GetClientSize()
 
     def SetClientSize(self, size):
-        """!Overriden method which sets simulated window size.
+        """Overriden method which sets simulated window size.
         """
         Debug.msg(3, "SwipeBufferedWindow.SetClientSize(): size = %s" % size)
         self.specialSize = size
 
     def SetMode(self, mode):
-        """!Sets mode of the window.
+        """Sets mode of the window.
 
-        @param mode mode can be 'swipe' or 'mirror'
+        :param mode: mode can be 'swipe' or 'mirror'
         """
         self._mode = mode
 
     def GetImageCoords(self):
-        """!Returns coordinates of rendered image"""
+        """Returns coordinates of rendered image"""
         if self._mode == 'swipe':
             return self.specialCoords
         else:
             return (0, 0)
 
     def SetImageCoords(self, coords):
-        """!Sets coordinates of rendered image"""
+        """Sets coordinates of rendered image"""
         Debug.msg(3, "SwipeBufferedWindow.SetImageCoords(): coords = %s, %s" % (coords[0], coords[1]))
         self.specialCoords = coords
 
     def OnSize(self, event):
-        """!Calls superclass's OnSize method only when needed"""
+        """Calls superclass's OnSize method only when needed"""
         Debug.msg(5, "SwipeBufferedWindow.OnSize()")
         if not self.movingSash:
             super(SwipeBufferedWindow, self).OnSize(event)
 
     def Draw(self, pdc, img = None, drawid = None, pdctype = 'image', coords = [0, 0, 0, 0], pen = None):
-        """!Draws image (map) with translated coordinates.
+        """Draws image (map) with translated coordinates.
         """
         Debug.msg(2, "SwipeBufferedWindow.Draw()")
 
@@ -126,7 +126,7 @@
         return super(SwipeBufferedWindow, self).Draw(pdc, img, drawid, pdctype, coords, pen)
         
     def OnLeftDown(self, event):
-        """!Left mouse button pressed.
+        """Left mouse button pressed.
 
         In case of 'pointer' mode, coordinates must be adjusted.
         """
@@ -146,7 +146,7 @@
             super(SwipeBufferedWindow, self).OnLeftDown(event)
 
     def OnDragging(self, event):
-        """!Mouse dragging - overlay (text) is moving.
+        """Mouse dragging - overlay (text) is moving.
 
         Coordinates must be adjusted.
         """
@@ -158,7 +158,7 @@
             super(SwipeBufferedWindow, self).OnDragging(event)
 
     def TranslateImage(self, dx, dy):
-        """!Translate image and redraw.
+        """Translate image and redraw.
         """
         Debug.msg(5, "SwipeBufferedWindow.TranslateImage(): dx = %s, dy = %s" % (dx, dy))
 
@@ -166,7 +166,7 @@
         self.Refresh()
 
     def SetRasterNameText(self, name, textId):
-        """!Sets text label with map name."""
+        """Sets text label with map name."""
         self.textdict[textId] = {'bbox': wx.Rect(), 'coords': [10, 10],
                                  'font': self.GetFont(), 'color': wx.BLACK,
                                  'background' : wx.LIGHT_GREY,
@@ -174,7 +174,7 @@
                                  'active': True}
 
     def MouseDraw(self, pdc = None, begin = None, end = None):
-        """!Overriden method to recompute coordinates back to original values
+        """Overriden method to recompute coordinates back to original values
         so that e.g. drawing of zoom box is done properly"""
         Debug.msg(5, "SwipeBufferedWindow.MouseDraw()")
 
@@ -184,7 +184,7 @@
         super(SwipeBufferedWindow, self).MouseDraw(pdc, begin, end)
 
     def DrawMouseCursor(self, coords):
-        """!Draw moving cross."""
+        """Draw moving cross."""
         self.pdcTmp.ClearId(self.lineid)
         color = UserSettings.Get(group='mapswipe', key='cursor', subkey='color')
         cursType = UserSettings.Get(group='mapswipe', key='cursor', subkey=['type', 'selection'])
@@ -205,7 +205,7 @@
 
 
 class _MouseEvent(wx.PyCommandEvent):
-    """!
+    """
     This event class takes a regular wxWindows mouse event as a parameter, 
     and wraps it so that there is access to all the original methods. This 
     is similar to subclassing, but you can't subclass a wxWindows event.

Modified: grass/trunk/gui/wxpython/mapswipe/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/mapswipe/toolbars.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapswipe/toolbars.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package swipe.toolbars
 
 @brief Map Swipe toolbars and icons.
@@ -33,10 +33,10 @@
 
 
 class SwipeMapToolbar(BaseToolbar):
-    """!Map toolbar (to control map zoom and rendering)
+    """Map toolbar (to control map zoom and rendering)
     """
     def __init__(self, parent, toolSwitcher):
-        """!Map toolbar constructor
+        """Map toolbar constructor
         """
         BaseToolbar.__init__(self, parent, toolSwitcher)
 
@@ -52,7 +52,7 @@
         self.EnableTool(self.zoomBack, False)
 
     def _toolbarData(self):
-        """!Returns toolbar data (name, icon, handler)"""
+        """Returns toolbar data (name, icon, handler)"""
         # BaseIcons are a set of often used icons. It is possible
         # to reuse icons in ./trunk/gui/icons/grass or add new ones there.
         icons = BaseIcons
@@ -89,17 +89,17 @@
                                      ))
 
     def SetActiveMap(self, index):
-        """!Set currently selected map.
+        """Set currently selected map.
         Unused, needed because of DoubleMapFrame API.
         """
         pass
 
 
 class SwipeMainToolbar(BaseToolbar):
-    """!Toolbar with tools related to application functionality
+    """Toolbar with tools related to application functionality
     """
     def __init__(self, parent):
-        """!Toolbar constructor
+        """Toolbar constructor
         """
         BaseToolbar.__init__(self, parent)
 
@@ -123,7 +123,7 @@
         self.Realize()
 
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         return self._getToolbarData((("addRaster", swipeIcons['addRast'],
                                       self.parent.OnSelectLayers),
                                      (None, ),
@@ -137,7 +137,7 @@
                 self.toggleMode.SetSelection(i)
 
     def OnToolMenu(self, event):
-        """!Menu for additional tools"""
+        """Menu for additional tools"""
         toolMenu = wx.Menu()
 
         for label, itype, handler, desc in (
@@ -159,10 +159,10 @@
 
 
 class SwipeMiscToolbar(BaseToolbar):
-    """!Toolbar with miscellaneous tools related to app
+    """Toolbar with miscellaneous tools related to app
     """
     def __init__(self, parent):
-        """!Toolbar constructor
+        """Toolbar constructor
         """
         BaseToolbar.__init__(self, parent)
 
@@ -171,7 +171,7 @@
         self.Realize()
 
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         return self._getToolbarData((("settings", BaseIcons['settings'],
                                       self.parent.OnPreferences),
                                      ("help", BaseIcons['help'],

Modified: grass/trunk/gui/wxpython/mapwin/analysis.py
===================================================================
--- grass/trunk/gui/wxpython/mapwin/analysis.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapwin/analysis.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-"""!
+"""
 @package mapwin.analysis
 
 @brief Map display controllers for analyses (profiling, measuring)
@@ -31,12 +31,12 @@
 
 
 class AnalysisControllerBase:
-    """!Base class for analysis which require drawing line in map display."""
+    """Base class for analysis which require drawing line in map display."""
     def __init__(self, giface, mapWindow):
-        """!
+        """
 
-        @param giface grass interface
-        @param mapWindow instance of BufferedMapWindow
+        :param giface: grass interface
+        :param mapWindow: instance of BufferedMapWindow
         """
         self._giface = giface
         self._mapWindow = mapWindow
@@ -48,14 +48,14 @@
         self._oldCursor = None
 
     def IsActive(self):
-        """!Returns True if analysis mode is activated."""
+        """Returns True if analysis mode is activated."""
         return bool(self._registeredGraphics)
 
     def _start(self, x, y):
-        """!Handles the actual start of drawing line
+        """Handles the actual start of drawing line
         and adding each new point.
 
-        @param x,y east north coordinates
+        :param x,y: east north coordinates
         """
         if not self._registeredGraphics.GetAllItems():
             item = self._registeredGraphics.AddItem(coords=[[x, y]])
@@ -66,9 +66,9 @@
             self._mapWindow.mouse['begin'] = self._mapWindow.Cell2Pixel(coords)
 
     def _addPoint(self, x, y):
-        """!New point added.
+        """New point added.
 
-        @param x,y east north coordinates
+        :param x,y: east north coordinates
         """
         # add new point and calculate distance
         item = self._registeredGraphics.GetItem(0)
@@ -83,30 +83,30 @@
         self._doAnalysis(coords)
 
     def _doAnalysis(self, coords):
-        """!Perform the required analysis
+        """Perform the required analysis
         (compute distnace, update profile)
 
-        @param coords EN coordinates
+        :param coords: EN coordinates
         """
         raise NotImplementedError()
 
     def _disconnectAll(self):
-        """!Disconnect all mouse signals
+        """Disconnect all mouse signals
         to stop drawing."""
         raise NotImplementedError()
 
     def _connectAll(self):
-        """!Connect all mouse signals to draw."""
+        """Connect all mouse signals to draw."""
         raise NotImplementedError()
 
     def _getPen(self):
-        """!Returns wx.Pen instance."""
+        """Returns wx.Pen instance."""
         raise NotImplementedError()
 
     def Stop(self, restore=True):
-        """!Analysis mode is stopped.
+        """Analysis mode is stopped.
 
-        @param restore if restore previous cursor, mouse['use']
+        :param restore: if restore previous cursor, mouse['use']
         """
         self._mapWindow.ClearLines(pdc=self._mapWindow.pdcTmp)
         self._mapWindow.mouse['end'] = self._mapWindow.mouse['begin']
@@ -123,7 +123,7 @@
             self._mapWindow.mouse['use'] = self._oldMouseUse
 
     def Start(self):
-        """!Init analysis: register graphics to map window,
+        """Init analysis: register graphics to map window,
         connect required mouse signals.
         """
         self._oldMouseUse = self._mapWindow.mouse['use']
@@ -147,7 +147,7 @@
 
 
 class ProfileController(AnalysisControllerBase):
-    """!Class controls profiling in map display.
+    """Class controls profiling in map display.
     It should be used inside ProfileFrame
     """
     def __init__(self, giface, mapWindow):
@@ -157,9 +157,9 @@
         self._graphicsType = 'line'
 
     def _doAnalysis(self, coords):
-        """!Informs profile dialog that profile changed.
+        """Informs profile dialog that profile changed.
 
-        @param coords EN coordinates
+        :param coords: EN coordinates
         """
         self.transectChanged.emit(coords=coords)
 
@@ -181,7 +181,7 @@
 
 
 class MeasureDistanceController(AnalysisControllerBase):
-    """!Class controls measuring distance in map display."""
+    """Class controls measuring distance in map display."""
     def __init__(self, giface, mapWindow):
         AnalysisControllerBase.__init__(self, giface=giface, mapWindow=mapWindow)
 
@@ -191,9 +191,9 @@
         self._graphicsType = 'line'
 
     def _doAnalysis(self, coords):
-        """!New point added.
+        """New point added.
 
-        @param x,y east north coordinates
+        :param x,y: east north coordinates
         """
         self.MeasureDist(coords[-2], coords[-1])
 
@@ -218,7 +218,7 @@
         self._giface.WriteCmdLog(_('Measuring finished'))
 
     def Start(self):
-        """!Init measurement routine that calculates map distance
+        """Init measurement routine that calculates map distance
         along transect drawn on map display
         """
         if self.IsActive():
@@ -252,9 +252,9 @@
                                             'Reason: %s' % e))
 
     def MeasureDist(self, beginpt, endpt):
-        """!Calculate distance and print to output window.
+        """Calculate distance and print to output window.
 
-        @param beginpt,endpt EN coordinates
+        :param beginpt,endpt: EN coordinates
         """
         # move also Distance method?
         dist, (north, east) = self._mapWindow.Distance(beginpt, endpt, screen=False)
@@ -297,15 +297,15 @@
 
 
 class MeasureAreaController(AnalysisControllerBase):
-    """!Class controls measuring area in map display."""
+    """Class controls measuring area in map display."""
     def __init__(self, giface, mapWindow):
         AnalysisControllerBase.__init__(self, giface=giface, mapWindow=mapWindow)
         self._graphicsType = 'polygon'
 
     def _doAnalysis(self, coords):
-        """!New point added.
+        """New point added.
 
-        @param coords east north coordinates as a list
+        :param coords: east north coordinates as a list
         """
         self.MeasureArea(coords)
 
@@ -330,7 +330,7 @@
         self._giface.WriteCmdLog(_('Measuring finished'))
 
     def Start(self):
-        """!Init measurement routine that calculates area of polygon
+        """Init measurement routine that calculates area of polygon
         drawn on map display.
         """
         if self.IsActive():
@@ -344,9 +344,9 @@
         self._giface.WriteCmdLog(_('Measuring area:'))
 
     def MeasureArea(self, coords):
-        """!Calculate area and print to output window.
+        """Calculate area and print to output window.
 
-        @param coords list of E, N coordinates
+        :param coords: list of E, N coordinates
         """
         # TODO: make sure appending first point is needed for m.measure
         coordinates = coords + [coords[0]]

Modified: grass/trunk/gui/wxpython/mapwin/base.py
===================================================================
--- grass/trunk/gui/wxpython/mapwin/base.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapwin/base.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package mapwin.mapwindow
 
 @brief Map display canvas basic functionality - base class and properties.
@@ -94,7 +94,7 @@
 
 
 class MapWindowBase(object):
-    """!Abstract map display window class
+    """Abstract map display window class
     
     Superclass for BufferedWindow class (2D display mode), and GLWindow
     (3D display mode).
@@ -172,7 +172,7 @@
         self.UnregisterAllHandlers()
 
     def InitBinding(self):
-        """!Binds helper functions, which calls all handlers
+        """Binds helper functions, which calls all handlers
            registered to events with the events
         """
         for ev, handlers in self.handlersContainer.iteritems():
@@ -182,7 +182,7 @@
         return lambda event:self.HandlersCaller(event, evHandlers)  
     
     def HandlersCaller(self, event, handlers):
-        """!Hepler function which calls all handlers registered for
+        """Hepler function which calls all handlers registered for
         event
         """
         for handler in handlers:
@@ -197,7 +197,7 @@
         event.Skip() 
 
     def RegisterMouseEventHandler(self, event, handler, cursor = None):
-        """!Binds event handler
+        """Binds event handler
 
         @depreciated This method is depreciated. Use Signals or drawing API instead.
         Signals do not cover all events but new Signals can be added when needed
@@ -233,12 +233,12 @@
 
         Emits mouseHandlerRegistered signal before handler is registered.        
 
-        @param event one of mouse events
-        @param handler function to handle event
-        @param cursor cursor which temporary overrides current cursor
+        :param event: one of mouse events
+        :param handler: function to handle event
+        :param cursor: cursor which temporary overrides current cursor
         
-        @return True if successful
-        @return False if event cannot be bind
+        :return: True if successful
+        :return: False if event cannot be bind
         """
         self.mouseHandlerRegistered.emit()
         # inserts handler into list
@@ -256,7 +256,7 @@
         return True
 
     def UnregisterAllHandlers(self):
-        """!Unregisters all registered handlers 
+        """Unregisters all registered handlers 
 
         @depreciated This method is depreciated. Use Signals or drawing API instead.
 
@@ -275,7 +275,7 @@
                     handlers.remove(handler)
         
     def UnregisterMouseEventHandler(self, event, handler):
-        """!Unbinds event handler for event
+        """Unbinds event handler for event
 
         @depreciated This method is depreciated. Use Signals or drawing API instead.
 
@@ -284,11 +284,11 @@
 
         Emits mouseHandlerUnregistered signal after handler is unregistered.
 
-        @param handler handler to unbind
-        @param event event from which handler will be unbinded
+        :param handler: handler to unbind
+        :param event: event from which handler will be unbinded
         
-        @return True if successful
-        @return False if event cannot be unbind
+        :return: True if successful
+        :return: False if event cannot be unbind
         """
         # removes handler from list 
         for containerEv, handlers in self.handlersContainer.iteritems():
@@ -324,11 +324,12 @@
         raise NotImplementedError()
 
     def OnMotion(self, event):
-        """!Tracks mouse motion and update statusbar
+        """Tracks mouse motion and update statusbar
 
-        @todo remove this method when lastEN is not used
+        .. todo::
+            remove this method when lastEN is not used
 
-        @see GetLastEN
+        :func:`GetLastEN`
         """
         try:
             self.lastEN = self.Pixel2Cell(event.GetPositionTuple())
@@ -338,34 +339,34 @@
         event.Skip()
 
     def GetLastEN(self):
-        """!Returns last coordinates of mouse cursor.
+        """Returns last coordinates of mouse cursor.
 
         @depreciated This method is depreciated. Use Signal with coordinates as parameters.
 
-        @see OnMotion
+        :func:`OnMotion`
         """
         return self.lastEN
 
     def SetNamedCursor(self, cursorName):
-        """!Sets cursor defined by name."""
+        """Sets cursor defined by name."""
         cursor = self._cursors[cursorName]
         self.SetCursor(cursor)
         self._cursor = cursorName
 
     def GetNamedCursor(self):
-        """!Returns current cursor name."""
+        """Returns current cursor name."""
         return self._cursor
 
     cursor = property(fget=GetNamedCursor, fset=SetNamedCursor)
 
     def SetModePointer(self):
-        """!Sets mouse mode to pointer."""
+        """Sets mouse mode to pointer."""
         self.mouse['use'] = 'pointer'
         self.mouse['box'] = 'point'
         self.SetNamedCursor('default')
 
     def SetModePan(self):
-        """!Sets mouse mode to pan."""
+        """Sets mouse mode to pan."""
         self.mouse['use'] = "pan"
         self.mouse['box'] = "box"
         self.zoomtype = 0
@@ -391,16 +392,16 @@
         self.SetNamedCursor('cross')
 
     def SetModeQuery(self):
-        """!Query mode on"""
+        """Query mode on"""
         self.mouse['use'] = "query"
         self.mouse['box'] = "point"
         self.zoomtype = 0
         self.SetNamedCursor('cross')
 
     def DisactivateWin(self):
-        """!Use when the class instance is hidden in MapFrame."""
+        """Use when the class instance is hidden in MapFrame."""
         raise NotImplementedError()
 
     def ActivateWin(self):
-        """!Used when the class instance is activated in MapFrame."""
+        """Used when the class instance is activated in MapFrame."""
         raise NotImplementedError()

Modified: grass/trunk/gui/wxpython/mapwin/buffered.py
===================================================================
--- grass/trunk/gui/wxpython/mapwin/buffered.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapwin/buffered.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package mapwin.mapwindow
 
 @brief Map display canvas - buffered window.
@@ -50,7 +50,7 @@
     haveCtypes = False
 
 class BufferedMapWindow(MapWindowBase, wx.Window):
-    """!A Buffered window class (2D view mode)
+    """A Buffered window class (2D view mode)
 
     Superclass for VDigitWindow (vector digitizer).
     
@@ -62,15 +62,15 @@
     def __init__(self, parent, giface, Map, properties,
                  id=wx.ID_ANY, overlays=None,
                  style = wx.NO_FULL_REPAINT_ON_RESIZE, **kwargs):
-        """!
-        @param parent parent window
-        @param giface grass interface instance
-        @param Map map instance
-        @param properties instance of MapWindowProperties
-        @param id wx window id
-        @param style wx window style
-        @param kwargs keyword arguments passed to MapWindow and wx.Window
         """
+        :param parent: parent window
+        :param giface: grass interface instance
+        :param map: map instance
+        :param properties: instance of MapWindowProperties
+        :param id: wx window id
+        :param style: wx window style
+        :param kwargs: keyword arguments passed to MapWindow and wx.Window
+        """
         MapWindowBase.__init__(self, parent=parent, giface=giface, Map=Map)
         wx.Window.__init__(self, parent=parent, id=id, style=style, **kwargs)
 
@@ -192,15 +192,15 @@
         self.UpdateMap()
 
     def DisactivateWin(self):
-        """!Use when the class instance is hidden in MapFrame."""
+        """Use when the class instance is hidden in MapFrame."""
         self.Map.layerChanged.disconnect(self.OnUpdateMap)
 
     def ActivateWin(self):
-        """!Used when the class instance is activated in MapFrame."""
+        """Used when the class instance is activated in MapFrame."""
         self.Map.layerChanged.connect(self.OnUpdateMap)
 
     def _definePseudoDC(self):
-        """!Define PseudoDC objects to use
+        """Define PseudoDC objects to use
         """
         # create PseudoDC used for background map, map decorations like scales and legends
         self.pdc = wx.PseudoDC()
@@ -217,7 +217,7 @@
         self.Bind(wx.EVT_CONTEXT_MENU, self.OnContextMenu)
 
     def OnContextMenu(self, event):
-        """!Show Map Display context menu"""
+        """Show Map Display context menu"""
         if hasattr(self, "digit"):
             event.Skip()
             return
@@ -250,9 +250,9 @@
         menu.Destroy()
 
     def Draw(self, pdc, img = None, drawid = None, pdctype = 'image', coords = [0, 0, 0, 0], pen = None):
-        """!Draws map and overlay decorations
+        """Draws map and overlay decorations
         """
-        if drawid == None:
+        if drawid is None:
             if pdctype == 'image' and img:
                 drawid = self.imagedict[img]
             elif pdctype == 'clear':
@@ -409,14 +409,14 @@
         return drawid
     
     def TextBounds(self, textinfo, relcoords = False):
-        """!Return text boundary data
+        """Return text boundary data
         
-        @param textinfo text metadata (text, font, color, rotation)
-        @param coords reference point
+        :param textinfo: text metadata (text, font, color, rotation)
+        :param coords: reference point
         
-        @return coords of nonrotated text bbox (TL corner)
-        @return bbox of rotated text bbox (wx.Rect)
-        @return relCoords are text coord inside bbox
+        :return: coords of nonrotated text bbox (TL corner)
+        :return: bbox of rotated text bbox (wx.Rect)
+        :return: relCoords are text coord inside bbox
         """
         if 'rotation' in textinfo:
             rotation = float(textinfo['rotation'])
@@ -463,7 +463,7 @@
             return coords, bbox
 
     def OnPaint(self, event):
-        """!Draw PseudoDC's to buffered paint DC
+        """Draw PseudoDC's to buffered paint DC
         
         If self.redrawAll is False on self.pdcTmp content is re-drawn
         """
@@ -537,13 +537,13 @@
             self.redrawAll = False
         
     def OnSize(self, event):
-        """!Scale map image so that it is the same size as the Window
+        """Scale map image so that it is the same size as the Window
         """
         # re-render image on idle
         self.resize = time.clock()
 
     def OnIdle(self, event):
-        """!Only re-render a composite map image from GRASS during
+        """Only re-render a composite map image from GRASS during
         idle time instead of multiple times during resizing.
         """
         
@@ -581,13 +581,13 @@
         event.Skip()
 
     def SaveToFile(self, FileName, FileType, width, height):
-        """!This draws the pseudo DC to a buffer that can be saved to
+        """This draws the pseudo DC to a buffer that can be saved to
         a file.
         
-        @param FileName file name
-        @param FileType type of bitmap
-        @param width image width
-        @param height image height
+        :param filename: file name
+        :param FileType: type of bitmap
+        :param width: image width
+        :param height: image height
         """
         busy = wx.BusyInfo(message = _("Please wait, exporting image..."),
                            parent = self)
@@ -640,11 +640,11 @@
         self.Refresh()
         
     def GetOverlay(self):
-        """!Converts rendered overlay files to wx.Image
+        """Converts rendered overlay files to wx.Image
         
         Updates self.imagedict
         
-        @return list of images
+        :return: list of images
         """
         imgs = []
         for overlay in self.Map.GetListOfLayers(ltype = "overlay", active = True):
@@ -663,11 +663,11 @@
         return imgs
     
     def GetImage(self):
-        """!Converts redered map files to wx.Image
+        """Converts redered map files to wx.Image
         
         Updates self.imagedict (id=99)
         
-        @return wx.Image instance (map composition)
+        :return: wx.Image instance (map composition)
         """
         imgId = 99
         if self.mapfile and self.Map.mapfile and os.path.isfile(self.Map.mapfile) and \
@@ -691,33 +691,39 @@
         return self.alwaysRender
 
     def UpdateMap(self, render=True, renderVector=True, delay=0.0):
-        """!Updates the canvas anytime there is a change to the
+        """Updates the canvas anytime there is a change to the
         underlaying images or to the geometry of the canvas.
         
         This method should not be called directly.
 
-        @todo change direct calling of UpdateMap method to emitting grass
-        interface updateMap signal
+        .. todo::
+            change direct calling of UpdateMap method to emitting grass
+            interface updateMap signal
 
-        @todo consider using strong/weak signal instead of delay limit in giface
+        .. todo::
+            consider using strong/weak signal instead of delay limit in
+            giface
 
-        @param render re-render map composition
-        @param renderVector re-render vector map layer enabled for editing (used for digitizer)
-        @param delay defines time threshold  in seconds for postponing 
-               rendering to merge more update requests. 
-               If another request comes within the limit, rendering is delayed again.
-               Next delay limit is chosen according to the smallest delay value of all requests 
-               which have come during waiting period.
+        :param render: re-render map composition
+        :param renderVector: re-render vector map layer enabled for editing (used for digitizer)
+        :param delay: defines time threshold  in seconds for postponing 
+                      rendering to merge more update requests. 
 
-               Let say that first UpdateMap request come with 5 second delay limit. 
-               After 4  seconds of waiting another UpdateMap request come 
-               with delay limit of 2.5 seconds. New waiting period is set to 2.5 seconds, 
-               because limit of the second request is the smallest. If no other request comes
-               rendering will be done after 6.5 seconds from the first request.
+        If another request comes within the limit, rendering is delayed
+        again. Next delay limit is chosen according to the smallest
+        delay value of all requests which have come during waiting period.
 
-               Arguments 'render' and 'renderVector' have priority for True. It means that 
-               if more UpdateMap requests come within waiting period and at least one request
-               has argument set for True, map will be updated with the True value of the argument.
+        Let say that first UpdateMap request come with 5 second delay
+        limit. After 4  seconds of waiting another UpdateMap request
+        come with delay limit of 2.5 seconds. New waiting period is set
+        to 2.5 seconds, because limit of the second request is the
+        smallest. If no other request comes rendering will be done
+        after 6.5 seconds from the first request.
+
+        Arguments 'render' and 'renderVector' have priority for True.
+        It means that if more UpdateMap requests come within waiting
+        period and at least one request has argument set for True, map
+        will be updated with the True value of the argument.
         """
 
         if self.timerRunId is None or delay < self.updDelay:
@@ -740,13 +746,13 @@
                                      pid=self.timerRunId)
 
     def _timingFunction(self, pid):
-        """!Timer measuring elapsed time, since last update request.
+        """Timer measuring elapsed time, since last update request.
 
         It terminates, when delay limit is exceeded. 
 
-        @param pid - id which defines whether it is newest timer, or there is another one 
-                     (representing newer Update map request).
-                     If it is not the newest, it is terminated.
+        :param pid: id which defines whether it is newest timer, or
+                    there is another one (representing newer Update map
+                    request). If it is not the newest, it is terminated.
         """
         while True:
             updTime = time.time()
@@ -759,14 +765,14 @@
             self._runUpdateMap()
 
     def _runUpdateMap(self):
-        """!Update map when delay limit is over."""
+        """Update map when delay limit is over."""
         self.timerRunId = None
         self._updateM(self.render, self.renderVector)
         self.render = self.renderVector = False
 
     def _updateM(self, render=True, renderVector=True):
         """
-        @see method UpdateMap for arguments description.
+        :func:`UpdateMap` for arguments description.
         """
         start = time.clock()
         self.resize = False
@@ -882,7 +888,7 @@
         return True
 
     def DrawCompRegionExtent(self):
-        """!Draw computational region extent in the display
+        """Draw computational region extent in the display
         
         Display region is drawn as a blue box inside the computational region,
         computational region inside a display region as a red box).
@@ -909,7 +915,7 @@
             self.DrawLines(pdc=self.pdcDec, polycoords=regionCoords)
 
     def EraseMap(self):
-        """!Erase map canvas
+        """Erase map canvas
         """
         self.Draw(self.pdc, pdctype = 'clear')
         
@@ -922,9 +928,9 @@
         self.Map.AbortAllThreads()
 
     def DragMap(self, moveto):
-        """!Drag the entire map image for panning.
+        """Drag the entire map image for panning.
         
-        @param moveto dx,dy
+        :param moveto: dx,dy
         """
         dc = wx.BufferedDC(wx.ClientDC(self))
         dc.SetBackground(wx.Brush("White"))
@@ -939,9 +945,9 @@
         self.dragimg.EndDrag()
         
     def DragItem(self, id, coords):
-        """!Drag an overlay decoration item
+        """Drag an overlay decoration item
         """
-        if id == 99 or id == '' or id == None: return
+        if id == 99 or id == '' or id is None: return
         Debug.msg (5, "BufferedWindow.DragItem(): id=%d" % id)
         x, y = self.lastpos
         dx = coords[0] - x
@@ -971,7 +977,7 @@
         self.lastpos = (coords[0], coords[1])
                 
     def MouseDraw(self, pdc = None, begin = None, end = None):
-        """!Mouse box or line from 'begin' to 'end'
+        """Mouse box or line from 'begin' to 'end'
         
         If not given from self.mouse['begin'] to self.mouse['end'].
         """
@@ -1022,12 +1028,13 @@
             self.Draw(pdc, drawid = self.lineid, pdctype = 'line', coords = mousecoords)
 
     def DrawLines(self, pdc = None, polycoords = None):
-        """!Draw polyline in PseudoDC
+        """Draw polyline in PseudoDC
         
         Set self.pline to wx.NEW_ID + 1
         
-        polycoords - list of polyline vertices, geographical coordinates
-        (if not given, self.polycoords is used)
+        :param polycoords: list of polyline vertices, geographical
+                           coordinates (if not given, self.polycoords
+                           is used)
         """
         if not pdc:
             pdc = self.pdcTmp
@@ -1052,15 +1059,15 @@
         return -1
 
     def DrawPolylines(self, pdc, coords, pen, drawid=None):
-        """!Draw polyline in PseudoDC.
+        """Draw polyline in PseudoDC.
         
         This is similar to DrawLines but this is used with GraphicsSet,
         coordinates should be always in pixels.
         
-        @param pdc PseudoDC
-        @param coords list of coordinates (pixel coordinates)
-        @param pen pen to be used
-        @param drawid id of the drawn object (used by PseudoDC)
+        :param pdc: PseudoDC
+        :param coords: list of coordinates (pixel coordinates)
+        :param pen: pen to be used
+        :param drawid: id of the drawn object (used by PseudoDC)
         """
         Debug.msg (4, "BufferedWindow.DrawPolylines(): coords=%s" % coords)
         self.lineId = self.Draw(pdc, drawid=None, pdctype='polyline', coords=coords, pen=pen)
@@ -1069,17 +1076,18 @@
 
     def DrawCross(self, pdc, coords, size, rotation = 0, pen = None,
                   text = None, textAlign = 'lr', textOffset = (5, 5), drawid=None):
-        """!Draw cross in PseudoDC
+        """Draw cross in PseudoDC
 
-        @todo implement rotation
+        .. todo::
+            implement rotation
 
-        @param pdc PseudoDC
-        @param coords center coordinates (pixel coordinates)
-        @param rotation rotate symbol
-        @param text draw also text (text, font, color, rotation)
-        @param textAlign alignment (default 'lower-right')
-        @param textOffset offset for text (from center point)
-        @param drawid id of the drawn object (used by PseudoDC)
+        :param pdc: PseudoDC
+        :param coords: center coordinates (pixel coordinates)
+        :param rotation: rotate symbol
+        :param text: draw also text (text, font, color, rotation)
+        :param textAlign: alignment (default 'lower-right')
+        :param textOffset: offset for text (from center point)
+        :param drawid: id of the drawn object (used by PseudoDC)
         """
         Debug.msg(4, "BufferedWindow.DrawCross(): pdc=%s, coords=%s, size=%d" % \
                   (pdc, coords, size))
@@ -1107,13 +1115,13 @@
         return self.lineid
 
     def DrawRectangle(self, pdc, point1, point2, pen, drawid=None):
-        """!Draw rectangle (not filled) in PseudoDC
+        """Draw rectangle (not filled) in PseudoDC
 
-        @param pdc PseudoDC
-        @param point1 top left corner (pixel coordinates)
-        @param point2 bottom right corner (pixel coordinates)
-        @param pen pen
-        @param drawid id of the drawn object (used by PseudoDC)
+        :param pdc: PseudoDC
+        :param point1: top left corner (pixel coordinates)
+        :param point2: bottom right corner (pixel coordinates)
+        :param pen: pen
+        :param drawid: id of the drawn object (used by PseudoDC)
         """
         Debug.msg(4, "BufferedWindow.DrawRectangle(): pdc=%s, point1=%s, point2=%s" % \
                   (pdc, point1, point2))
@@ -1122,13 +1130,13 @@
         return self.lineid
 
     def DrawCircle(self, pdc, coords, radius, pen, drawid=None):
-        """!Draw circle (not filled) in PseudoDC
+        """Draw circle (not filled) in PseudoDC
 
-        @param pdc PseudoDC
-        @param coords center (pixel coordinates)
-        @param radius radius
-        @param pen pen
-        @param drawid id of the drawn object (used by PseudoDC)
+        :param pdc: PseudoDC
+        :param coords: center (pixel coordinates)
+        :param radius: radius
+        :param pen: pen
+        :param drawid: id of the drawn object (used by PseudoDC)
         """
         Debug.msg(4, "BufferedWindow.DrawCircle(): pdc=%s, coords=%s, radius=%s" %
                   (pdc, coords, radius))
@@ -1138,19 +1146,19 @@
         return self.lineid
 
     def DrawPolygon(self, pdc, coords, pen, drawid=None):
-        """!Draws polygon from a list of points (do not append the first point)
+        """Draws polygon from a list of points (do not append the first point)
 
-        @param pdc PseudoDC
-        @param coords list of coordinates (pixel coordinates)
-        @param pen pen
-        @param drawid id of the drawn object (used by PseudoDC)
+        :param pdc: PseudoDC
+        :param coords: list of coordinates (pixel coordinates)
+        :param pen: pen
+        :param drawid: id of the drawn object (used by PseudoDC)
         """
         self.lineid = self.Draw(pdc, drawid=drawid, pdctype='polygon',
                                 coords=coords, pen=pen)
         return self.lineid
 
     def _computeZoomToPointAndRecenter(self, position, zoomtype):
-        """!Computes zoom parameters for recenter mode.
+        """Computes zoom parameters for recenter mode.
 
         Computes begin and end parameters for Zoom() method.
         Used for zooming by single click (not box)
@@ -1169,7 +1177,7 @@
         return begin, end
 
     def MouseActions(self, event):
-        """!Mouse motion and button click notifier
+        """Mouse motion and button click notifier
         """
         if not self.processMouse:
             return
@@ -1220,7 +1228,7 @@
             self.OnMouseMoving(event)
                 
     def OnMouseWheel(self, event):
-        """!Mouse wheel moved
+        """Mouse wheel moved
         """
         zoomBehaviour = UserSettings.Get(group = 'display',
                                          key = 'mouseWheelZoom',
@@ -1262,7 +1270,7 @@
         self.processMouse = True
         
     def OnDragging(self, event):
-        """!Mouse dragging
+        """Mouse dragging
         """
         Debug.msg (5, "BufferedWindow.MouseAction(): Dragging")
         current  = event.GetPositionTuple()[:]
@@ -1301,7 +1309,7 @@
                 self.MouseDraw(pdc = self.pdcTmp)
         
     def OnLeftDown(self, event):
-        """!Left mouse button pressed
+        """Left mouse button pressed
         """
         Debug.msg (5, "BufferedWindow.OnLeftDown(): use=%s" % \
                    self.mouse["use"])
@@ -1335,7 +1343,7 @@
         event.Skip()
         
     def OnLeftUp(self, event):
-        """!Left mouse button released
+        """Left mouse button released
 
         Emits mapQueried signal when mouse use is 'query'.
         """
@@ -1410,7 +1418,7 @@
         self.mouseLeftUp.emit(x=coordinates[0], y=coordinates[1])
 
     def OnButtonDClick(self, event):
-        """!Mouse button double click
+        """Mouse button double click
         """
         Debug.msg (5, "BufferedWindow.OnButtonDClick(): use=%s" % \
                    self.mouse["use"])
@@ -1428,7 +1436,7 @@
         self.mouseDClick.emit(x=coords[0], y=coords[1])
 
     def OnRightDown(self, event):
-        """!Right mouse button pressed
+        """Right mouse button pressed
         """
         Debug.msg (5, "BufferedWindow.OnRightDown(): use=%s" % \
                    self.mouse["use"])
@@ -1439,7 +1447,7 @@
         event.Skip()
         
     def OnRightUp(self, event):
-        """!Right mouse button released
+        """Right mouse button released
         """
         Debug.msg (5, "BufferedWindow.OnRightUp(): use=%s" % \
                    self.mouse["use"])
@@ -1453,7 +1461,7 @@
         event.Skip()
         
     def OnMiddleDown(self, event):
-        """!Middle mouse button pressed
+        """Middle mouse button pressed
         """
         if not event:
             return
@@ -1461,7 +1469,7 @@
         self.mouse['begin'] = event.GetPositionTuple()[:]
         
     def OnMiddleUp(self, event):
-        """!Middle mouse button released
+        """Middle mouse button released
         """
         self.mouse['end'] = event.GetPositionTuple()[:]
         
@@ -1475,7 +1483,7 @@
         self.UpdateMap(render = True)
 
     def OnMouseEnter(self, event):
-        """!Mouse entered window and no mouse buttons were pressed
+        """Mouse entered window and no mouse buttons were pressed
 
         Emits the mouseEntered signal.
         """
@@ -1483,7 +1491,7 @@
         event.Skip()
 
     def OnMouseMoving(self, event):
-        """!Motion event and no mouse buttons were pressed
+        """Motion event and no mouse buttons were pressed
         """
         if self.mouse["use"] == "pointer" and \
                 hasattr(self, "digit"):
@@ -1492,7 +1500,7 @@
         event.Skip()
 
     def OnCopyCoordinates(self, event):
-        """!Copy coordinates to cliboard"""
+        """Copy coordinates to cliboard"""
         e, n = self.GetLastEN()
         if wx.TheClipboard.Open():
             do = wx.TextDataObject()
@@ -1503,7 +1511,7 @@
             wx.TheClipboard.Close()
         
     def ClearLines(self, pdc = None):
-        """!Clears temporary drawn lines from PseudoDC
+        """Clears temporary drawn lines from PseudoDC
         """
         if not pdc:
             pdc = self.pdcTmp
@@ -1525,12 +1533,12 @@
         return True
 
     def Pixel2Cell(self, xyCoords):
-        """!Convert image coordinates to real word coordinates
+        """Convert image coordinates to real word coordinates
         
-        @param x, y image coordinates
+        :param xyCoords: image coordinates
         
-        @return easting, northing
-        @return None on error
+        :return: easting, northing
+        :return: None on error
         """
         try:
             x = int(xyCoords[0])
@@ -1552,7 +1560,7 @@
         return (east, north)
     
     def Cell2Pixel(self, enCoords):
-        """!Convert real word coordinates to image coordinates
+        """Convert real word coordinates to image coordinates
         """
         try:
             east  = float(enCoords[0])
@@ -1574,7 +1582,7 @@
         return (x, y)
 
     def Zoom(self, begin, end, zoomtype):
-        """!Calculates new region while (un)zoom/pan-ing
+        """Calculates new region while (un)zoom/pan-ing
         """
         x1, y1 = begin
         x2, y2 = end
@@ -1643,7 +1651,7 @@
             self.redrawAll = True
         
     def ZoomBack(self):
-        """!Zoom to previous extents in zoomhistory list
+        """Zoom to previous extents in zoomhistory list
 
         Emits zoomChanged signal.
         Emits zoomHistoryUnavailable signal when stack is empty.
@@ -1669,7 +1677,7 @@
         self.zoomChanged.emit()
 
     def ZoomHistory(self, n, s, e, w):
-        """!Manages a list of last 10 zoom extents
+        """Manages a list of last 10 zoom extents
 
         Emits zoomChanged signal.
         Emits zoomHistoryAvailable signal when stack is not empty.
@@ -1679,9 +1687,9 @@
         to make a record in the history. The signal zoomChanged will be
         then emitted automatically.
 
-        @param n,s,e,w north, south, east, west
+        :param n,s,e,w: north, south, east, west
 
-        @return removed history item if exists (or None)
+        :return: removed history item if exists (or None)
         """
         removed = None
         self.zoomhistory.append((n,s,e,w))
@@ -1709,8 +1717,9 @@
     def InitZoomHistory(self):
         """Initializes zoom history.
 
-        @todo First item is handled in some special way. Improve the
-        documentation or fix the code.
+        .. todo::
+            First item is handled in some special way. Improve the
+            documentation or fix the code.
 
         It does not emits any signals.
 
@@ -1727,16 +1736,16 @@
                   (self.zoomhistory))
 
     def ResetZoomHistory(self):
-        """!Reset zoom history"""
+        """Reset zoom history"""
         self.zoomhistory = list()
                 
     def ZoomToMap(self, layers = None, ignoreNulls = False, render = True):
-        """!Set display extents to match selected raster
+        """Set display extents to match selected raster
         or vector map(s).
 
-        @param layers list of layers to be zoom to
-        @param ignoreNulls True to ignore null-values (valid only for rasters)
-        @param render True to re-render display
+        :param layers: list of layers to be zoom to
+        :param ignoreNulls: True to ignore null-values (valid only for rasters)
+        :param render: True to re-render display
         """
         if not layers:
             layers = self._giface.GetLayerList().GetSelectedLayers(checkedOnly=False)
@@ -1782,7 +1791,7 @@
             self.UpdateMap()
 
     def ZoomToWind(self):
-        """!Set display geometry to match computational region
+        """Set display geometry to match computational region
         settings (set with g.region)
         """
         self.Map.region = self.Map.GetRegion()
@@ -1793,7 +1802,7 @@
         self.UpdateMap()
 
     def ZoomToDefault(self):
-        """!Set display geometry to match default region settings
+        """Set display geometry to match default region settings
         """
         self.Map.region = self.Map.GetRegion(default = True)
         self.Map.AdjustRegion() # aling region extent to the display
@@ -1823,7 +1832,7 @@
         self.UpdateMap()
     
     def DisplayToWind(self):
-        """!Set computational region (WIND file) to match display
+        """Set computational region (WIND file) to match display
         extents
         """
         tmpreg = os.getenv("GRASS_REGION")
@@ -1849,10 +1858,10 @@
         self.UpdateMap(render = False)
         
     def SetRegion(self, zoomOnly=True):
-        """!Set display extents/compulational region from named region
+        """Set display extents/compulational region from named region
         file.
 
-        @param zoomOnly zoom to named region only (computational region is not saved)
+        :param zoomOnly: zoom to named region only (computational region is not saved)
         """
         if zoomOnly:
             label = _('Zoom to saved region extents')
@@ -1892,10 +1901,10 @@
         self.UpdateMap()
 
     def SaveRegion(self, display = True):
-        """!Save display extents/compulational region to named region
+        """Save display extents/compulational region to named region
         file.
 
-        @param display True for display extends otherwise computational region
+        :param display: True for display extends otherwise computational region
         """
         if display:
             title = _("Save display extents to region file")
@@ -1925,9 +1934,9 @@
         dlg.Destroy()
 
     def _saveCompRegion(self, name):
-        """!Save region settings to region file
+        """Save region settings to region file
         
-        @param name region name
+        :param name: region name
         """
         RunCommand('g.region',
                    overwrite = True,
@@ -1936,9 +1945,9 @@
                    save = name)
         
     def _saveDisplayRegion(self, name):
-        """!Save display extents to region file
+        """Save display extents to region file
         
-        @param name region name
+        :param name: region name
         """
         new = self.Map.GetCurrentRegion()
         
@@ -1962,13 +1971,13 @@
             os.environ["GRASS_REGION"] = tmpreg
         
     def Distance(self, beginpt, endpt, screen = True):
-        """!Calculates distance
+        """Calculates distance
         
         Ctypes required for LL-locations
         
-        @param beginpt first point
-        @param endpt second point
-        @param screen True for screen coordinates otherwise EN
+        :param beginpt: first point
+        :param endpt: second point
+        :param screen: True for screen coordinates otherwise EN
         """
         if screen:
             e1, n1 = self.Pixel2Cell(beginpt)
@@ -1988,25 +1997,30 @@
         return (dist, (dEast, dNorth))
 
     def GetMap(self):
-        """!Get render.Map() instance"""
+        """Get render.Map() instance"""
         return self.Map
 
     def RegisterGraphicsToDraw(self, graphicsType, setStatusFunc=None, drawFunc=None,
                                mapCoords=True):
-        """! This method registers graphics to draw.
+        """This method registers graphics to draw.
         
-        @param type (string) - graphics type: "point", "line" or "rectangle"
-        @param setStatusFunc (function reference) - function called before drawing each item
-                Status function should be in this form: setStatusFunc(item, itemOrderNum)
-                    item - passes instance of GraphicsSetItem which will be drawn
-                    itemOrderNum - number of item in drawing order (from O)
-                                   Hidden items are also counted in drawing order.
-        @param drawFunc (function reference) - defines own function for drawing
-                            If function is not defined DrawCross method is used for type "point",
-                            DrawLines method for type "line", DrawRectangle for "rectangle".
-        @param mapCoords True if map coordinates should be set by user, otherwise pixels
+        :param type: (string) - graphics type: "point", "line" or "rectangle"
+        :param setStatusFunc: function called before drawing each item
+                              Status function should be in this form:
+                              setStatusFunc(item, itemOrderNum)
+                              item passes instance of GraphicsSetItem
+                                   which will be drawn
+                              itemOrderNum number of item in drawing
+                                            order (from O) 
+                              Hidden items are also counted in drawing order.
+        :type setStatusFunc: function
+        :param drawFunc: defines own function for drawing, if function
+                         is not defined DrawCross method is used for
+                         type "point", DrawLines method for type "line",
+                         DrawRectangle for "rectangle".
+        :param mapCoords: True if map coordinates should be set by user, otherwise pixels
 
-        @return reference to GraphicsSet, which was added.
+        :return: reference to GraphicsSet, which was added.
         """
         item = GraphicsSet(parentMapWin=self, 
                            graphicsType=graphicsType, 
@@ -2018,13 +2032,13 @@
         return item
 
     def UnregisterGraphicsToDraw(self, item):
-        """!Unregisteres GraphicsSet instance
+        """Unregisteres GraphicsSet instance
         
-        @param item (GraphicsSetItem) - item to unregister
+        :param item: (GraphicsSetItem) - item to unregister
         
-        @return True - if item was unregistered
-        @return False - if item was not found
-        """     
+        :return: True - if item was unregistered
+        :return: False - if item was not found
+        """   
         if item in self.graphicsSetList:
             self.graphicsSetList.remove(item)
             return True

Modified: grass/trunk/gui/wxpython/mapwin/decorations.py
===================================================================
--- grass/trunk/gui/wxpython/mapwin/decorations.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapwin/decorations.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package mapwin.decorations
 
 @brief Map display decorations (overlays) - text, barscale and legend
@@ -31,7 +31,7 @@
 
 class OverlayController(object):
 
-    """!Base class for decorations (barscale, legend) controller."""
+    """Base class for decorations (barscale, legend) controller."""
 
     def __init__(self, renderer, giface):
         self._giface = giface
@@ -117,7 +117,7 @@
         return False
 
     def Show(self, show=True):
-        """!Activate or deactivate overlay."""
+        """Activate or deactivate overlay."""
         if show:
             if not self._overlay:
                 self._add()
@@ -134,12 +134,12 @@
         self.overlayChanged.emit()
 
     def GetOptData(self, dcmd, layer, params, propwin):
-        """!Called after options are set through module dialog.
+        """Called after options are set through module dialog.
 
-        @param dcmd resulting command
-        @param layer not used
-        @param params module parameters (not used)
-        @param propwin dialog window
+        :param dcmd: resulting command
+        :param layer: not used
+        :param params: module parameters (not used)
+        :param propwin: dialog window
         """
         if not dcmd:
             return
@@ -160,13 +160,13 @@
                                      render=False)
 
     def CmdIsValid(self):
-        """!If command is valid"""
+        """If command is valid"""
         return True
 
     def GetPlacement(self, screensize):
-        """!Get coordinates where to place overlay in a reasonable way
+        """Get coordinates where to place overlay in a reasonable way
 
-        @param screensize sreen size
+        :param screensize: screen size
         """
         if not hasPIL:
             self._giface.WriteWarning(_("Please install Python Imaging Library (PIL)\n"
@@ -241,7 +241,7 @@
         return False
 
     def ResizeLegend(self, begin, end, screenSize):
-        """!Resize legend according to given bbox coordinates."""
+        """Resize legend according to given bbox coordinates."""
         w = abs(begin[0] - end[0])
         h = abs(begin[1] - end[1])
         if begin[0] < end[0]:
@@ -268,7 +268,7 @@
         self.Show()
 
     def StartResizing(self):
-        """!Tool in toolbar or button itself were pressed"""
+        """Tool in toolbar or button itself were pressed"""
         # prepare for resizing
         window = self._giface.GetMapWindow()
         window.SetNamedCursor('cross')
@@ -409,21 +409,21 @@
         self.Bind(wx.EVT_SPINCTRL,   self.OnRotation,   self.rotation)
 
     def OnRefit(self, event):
-        """!Resize text entry to match text"""
+        """Resize text entry to match text"""
         self.sizer.Fit(self)
 
     def OnText(self, event):
-        """!Change text string"""
+        """Change text string"""
         self.currText = event.GetString()
 
     def OnRotation(self, event):
-        """!Change rotation"""
+        """Change rotation"""
         self.currRot = event.GetInt()
 
         event.Skip()
 
     def OnSelectFont(self, event):
-        """!Change font"""
+        """Change font"""
         data = wx.FontData()
         data.EnableEffects(True)
         data.SetColour(self.currClr)         # set colour
@@ -444,7 +444,7 @@
         dlg.Destroy()
 
     def GetValues(self):
-        """!Get text properties"""
+        """Get text properties"""
         return {'text': self.currText,
                 'font': self.currFont,
                 'color': self.currClr,

Modified: grass/trunk/gui/wxpython/mapwin/graphics.py
===================================================================
--- grass/trunk/gui/wxpython/mapwin/graphics.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/mapwin/graphics.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package mapwin.graphics
 
 @brief Map display canvas - buffered window.
@@ -27,7 +27,7 @@
 
     def __init__(self, parentMapWin, graphicsType,
                  setStatusFunc=None, drawFunc=None, mapCoords=True):
-        """!Class, which contains instances of GraphicsSetItem and
+        """Class, which contains instances of GraphicsSetItem and
             draws them For description of parameters look at method
             RegisterGraphicsToDraw in BufferedWindow class.
         """
@@ -72,9 +72,9 @@
             self.drawFunc = self.parentMapWin.DrawPolygon
 
     def Draw(self, pdc):
-        """!Draws all containing items.
+        """Draws all containing items.
 
-        @param pdc - device context, where items are drawn
+        :param pdc: device context, where items are drawn
         """
         itemOrderNum = 0
         for item in self.itemsList:
@@ -154,23 +154,25 @@
             itemOrderNum += 1
 
     def AddItem(self, coords, penName=None, label=None, hide=False):
-        """!Append item to the list.
+        """Append item to the list.
 
         Added item is put to the last place in drawing order.
         Could be 'point' or 'line' according to graphicsType.
 
-        @param coords - list of east, north coordinates (double) of item
+        :param coords: - list of east, north coordinates (double) of item
                         Example: point: [1023, 122]
                                  line: [[10, 12],[20,40],[23, 2334]]
                                  rectangle: [[10, 12], [33, 45]]
-        @param penName (string) the 'default' pen is used if is not defined
-        @param label (string) label, which will be drawn with point. It is
-        relavant just for 'point' type.
-        @param hide (bool) If it is True, the item is not drawn
-        when self.Draw is called. Hidden items are also counted in drawing
-        order.
-
-        @return (GraphicsSetItem) - added item reference
+        :param penName: the 'default' pen is used if is not defined
+        :type penName: str
+        :param label: label, which will be drawn with point. It is
+                      relavant just for 'point' type.
+        :type label: str
+        :param hide: if it is True, the item is not drawn when self.Draw
+                     is called. Hidden items are also counted in drawing
+                     order.
+        :type hide: bool
+        :return: (GraphicsSetItem) - added item reference
         """
         item = GraphicsSetItem(coords=coords, penName=penName, label=label, hide=hide)
         self.itemsList.append(item)
@@ -178,12 +180,12 @@
         return item
 
     def DeleteItem(self, item):
-        """!Deletes item
+        """Deletes item
 
-        @param item (GraphicsSetItem) - item to remove
+        :param item: (GraphicsSetItem) - item to remove
 
-        @return True if item was removed
-        @return False if item was not found
+        :return: True if item was removed
+        :return: False if item was not found
         """
         try:
             self.itemsList.remove(item)
@@ -193,8 +195,9 @@
         return True
 
     def GetAllItems(self):
-        """!Returns list of all containing instances of GraphicsSetItem, in order
-        as they are drawn. If you want to change order of drawing use: SetItemDrawOrder method.
+        """Returns list of all containing instances of GraphicsSetItem,
+        in order as they are drawn. If you want to change order of
+        drawing use: SetItemDrawOrder method.
         """
         # user can edit objects but not order in list, that is reason,
         # why is returned shallow copy of data list it should be used
@@ -202,12 +205,13 @@
         return copy(self.itemsList)
 
     def GetItem(self, drawNum):
-        """!Get given item from the list.
+        """Get given item from the list.
 
-        @param drawNum (int) - drawing order (index) number of item
+        :param drawNum: drawing order (index) number of item
+        :type drawNum: int
 
-        @return instance of GraphicsSetItem which is drawn in drawNum order
-        @return False if drawNum was out of range
+        :return: instance of GraphicsSetItem which is drawn in drawNum order
+        :return: False if drawNum was out of range
         """
         if drawNum < len(self.itemsList) and drawNum >= 0:
             return self.itemsList[drawNum]
@@ -215,14 +219,15 @@
             return False
 
     def SetPropertyVal(self, propName, propVal):
-        """!Set property value
+        """Set property value
 
-        @param propName (string) - property name: "size", "text"
-                                 - both properties are relevant for "point" type
-        @param propVal - property value to be set
+        :param propName: - property name: "size", "text"
+                         - both properties are relevant for "point" type
+        :type propName: str
+        :param propVal: property value to be set
 
-        @return True - if value was set
-        @return False - if propName is not "size" or "text" or type is "line"
+        :return: True if value was set
+        :return: False if propName is not "size" or "text" or type is "line"
         """
         if propName in self.properties:
             self.properties[propName] = propVal
@@ -231,15 +236,16 @@
         return False
 
     def GetPropertyVal(self, propName):
-        """!Get property value
+        """Get property value
 
         Raises KeyError if propName is not "size" or "text" or type is
         "line"
 
-        @param propName (string) property name: "size", "text"
-                                 both properties are relevant for "point" type
+        :param propName: property name: "size", "text" both properties
+               are relevant for "point" type
+        :type propName: str
 
-        @return value of property
+        :return: value of property
         """
         if propName in self.properties:
             return self.properties[propName]
@@ -247,13 +253,15 @@
         raise KeyError(_("Property does not exist: %s") % (propName))
 
     def AddPen(self, penName, pen):
-        """!Add pen
+        """Add pen
 
-        @param penName (string) - name of added pen
-        @param pen (wx.Pen) - added pen
+        :param penName: name of added pen
+        :type penName: str
+        :param pen: added pen
+        :type pen: Wx.Pen
 
-        @return True - if pen was added
-        @return False - if pen already exists
+        :return: True - if pen was added
+        :return: False - if pen already exists
         """
         if penName in self.pens:
             return False
@@ -262,12 +270,13 @@
         return True
 
     def GetPen(self, penName):
-        """!Get existing pen
+        """Get existing pen
 
-        @param penName (string) - name of pen
+        :param penName: name of pen
+        :type penName: str
 
-        @return wx.Pen reference if is found
-        @return None if penName was not found
+        :return: wx.Pen reference if is found
+        :return: None if penName was not found
         """
         if penName in self.pens:
             return self.pens[penName]
@@ -275,13 +284,14 @@
         return None
 
     def SetItemDrawOrder(self, item, drawNum):
-        """!Set draw order for item
+        """Set draw order for item
 
-        @param item (GraphicsSetItem)
-        @param drawNum (int) - drawing order of item to be set
+        :param item: (GraphicsSetItem)
+        :param drawNum: drawing order of item to be set
+        :type drawNum: int
 
-        @return True - if order was changed
-        @return False - if drawNum is out of range or item was not found
+        :return: True if order was changed
+        :return: False if drawNum is out of range or item was not found
         """
         if drawNum < len(self.itemsList) and drawNum >= 0 and \
                 item in self.itemsList:
@@ -291,12 +301,12 @@
         return False
 
     def GetItemDrawOrder(self, item):
-        """!Get draw order for given item
+        """Get draw order for given item
 
-        @param item (GraphicsSetItem)
+        :param item: (GraphicsSetItem)
 
-        @return (int) - drawing order of item
-        @return None - if item was not found
+        :return: (int) - drawing order of item
+        :return: None - if item was not found
         """
         try:
             return self.itemsList.index(item)
@@ -304,7 +314,7 @@
             return None
 
     def _clearId(self, pdc, drawid):
-        """!Clears old object before drawing new object."""
+        """Clears old object before drawing new object."""
         try:
             pdc.ClearId(drawid)
         except:
@@ -314,19 +324,21 @@
 class GraphicsSetItem:
 
     def __init__(self, coords, penName=None, label=None, hide=False):
-        """!Could be point or line according to graphicsType in
+        """Could be point or line according to graphicsType in
         GraphicsSet class
 
-        @param coords - list of coordinates (double) of item
-                        Example: point: [1023, 122]
-                                 line: [[10, 12],[20,40],[23, 2334]]
-                                 rectangle: [[10, 12], [33, 45]]
-        @param penName (string) if it is not defined 'default' pen is used
-        @param label (string) label, which will be drawn with point. It is
-        relevant just for 'point' type
-        @param hide (bool) if it is True, item is not drawn
-                           Hidden items are also counted in drawing order in
-                           GraphicsSet class.
+        :param coords: list of coordinates (double) of item
+                       Example: point: [1023, 122]
+                                line: [[10, 12],[20,40],[23, 2334]]
+                                rectangle: [[10, 12], [33, 45]]
+        :param penName: if it is not defined 'default' pen is used
+        :type penName: str
+        :param label: label, which will be drawn with point. It is
+                      relevant just for 'point' type
+        :type label: str
+        :param hide: if it is True, item is not drawn Hidden items are
+                     also counted in drawing order in GraphicsSet class.
+        :type hide: bool
         """
         self.coords = coords
 
@@ -336,14 +348,15 @@
         self.id = wx.NewId()
 
     def SetPropertyVal(self, propName, propVal):
-        """!Set property value
+        """Set property value
 
-        @param propName (string) - property name: "penName", "hide" or "label"
-                                 - property "label" is relevant just for 'point' type
-        @param propVal - property value to be set
+        :param propName: - property name: "penName", "hide" or "label"
+                         - property "label" is relevant just for 'point' type
+        :type propName: str
+        :param propVal: property value to be set
 
-        @return True - if value was set
-        @return False - if propName is not "penName", "hide" or "label"
+        :return: True if value was set
+        :return: False if propName is not "penName", "hide" or "label"
         """
         if propName in self.properties:
             self.properties[propName] = propVal
@@ -352,15 +365,16 @@
         return False
 
     def GetPropertyVal(self, propName):
-        """!Get property value
+        """Get property value
 
         Raises KeyError if propName is not "penName", "hide" or
         "label".
 
-        @param propName (string) - property name: "penName", "hide" or "label"
-                                 - property "label" is relevant just for 'point' type
+        :param propName: - property name: "penName", "hide" or "label"
+                         - property "label" is relevant just for 'point' type
+        :type propName: str
 
-        @return value of property
+        :return: value of property
         """
         if propName in self.properties:
             return self.properties[propName]
@@ -368,23 +382,23 @@
         raise KeyError(_("Property does not exist: %s") % (propName))
 
     def SetCoords(self, coords):
-        """!Set coordinates of item
+        """Set coordinates of item
 
-        @param coords - list of east, north coordinates (double) of item
-                        Example: point: [1023, 122]
-                                 line: [[10, 12],[20,40],[23, 2334]]
-                                 rectangle: [[10, 12], [33, 45]]
+        :param coords: list of east, north coordinates (double) of item
+                       Example: point: [1023, 122]
+                                line: [[10, 12],[20,40],[23, 2334]]
+                                rectangle: [[10, 12], [33, 45]]
         """
         self.coords = coords
 
     def GetCoords(self):
-        """!Get item coordinates
+        """Get item coordinates
 
-        @returns coordinates
+        :return: coordinates
         """
         return self.coords
 
     def GetId(self):
-        """!Get item id (drawing id).
+        """Get item id (drawing id).
         """
         return self.id

Modified: grass/trunk/gui/wxpython/modules/colorrules.py
===================================================================
--- grass/trunk/gui/wxpython/modules/colorrules.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/modules/colorrules.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -47,12 +47,12 @@
 
 class RulesPanel:
     def __init__(self, parent, mapType, attributeType, properties, panelWidth = 180):
-        """!Create rules panel
+        """Create rules panel
         
-        @param mapType raster/vector
-        @param attributeType color/size for choosing widget type
-        @param properties properties of classes derived from ColorTable
-        @param panelWidth width of scroll panel"""
+        :param mapType: raster/vector
+        :param attributeType: color/size for choosing widget type
+        :param properties: properties of classes derived from ColorTable
+        :param panelWidth: width of scroll panel"""
         
         self.ruleslines = {}
         self.mapType = mapType
@@ -90,12 +90,12 @@
         self.mainPanel.SetupScrolling()    
     
     def Clear(self):
-        """!Clear and widgets and delete information"""
+        """Clear and widgets and delete information"""
         self.ruleslines.clear()
         self.mainSizer.Clear(deleteWindows=True)
     
     def OnCheckAll(self, event):
-        """!(Un)check all rules"""
+        """(Un)check all rules"""
         check = event.GetInt()
         for child in self.mainPanel.GetChildren():
             if child.GetName() == 'enable':
@@ -104,17 +104,19 @@
                 child.Enable(check)
                 
     def OnClearAll(self, event):
-        """!Delete all widgets in panel"""
+        """Delete all widgets in panel"""
         self.Clear()
         
     def OnAddRules(self, event):
-        """!Add rules button pressed"""
+        """Add rules button pressed"""
         nrules = self.numRules.GetValue()
         self.AddRules(nrules)
         
     def AddRules(self, nrules, start = False):
-        """!Add rules 
-        @param start set widgets (not append)"""
+        """Add rules
+         
+        :param start: set widgets (not append)
+        """
        
         snum = len(self.ruleslines.keys())
         if start:
@@ -168,7 +170,7 @@
         self.mainPanel.SetupScrolling(scroll_x = False)
     
     def OnRuleEnable(self, event):
-        """!Rule enabled/disabled"""
+        """Rule enabled/disabled"""
         id = event.GetId()
         
         if event.IsChecked():
@@ -205,7 +207,7 @@
             del self.ruleslines[id]
         
     def OnRuleColor(self, event):
-        """!Rule color changed"""
+        """Rule color changed"""
         num = event.GetId()
         
         rgba_color = event.GetValue()
@@ -217,14 +219,14 @@
         self.ruleslines[num-2000]['color'] = rgb_string
      
     def OnRuleSize(self, event):
-        """!Rule size changed"""
+        """Rule size changed"""
         num = event.GetId()
         size = event.GetInt()
         
         self.ruleslines[num - 2000][self.attributeType] = size
         
     def OnRuleValue(self, event):
-        """!Rule value changed"""
+        """Rule value changed"""
         num = event.GetId()
         val = event.GetString().strip()
         
@@ -244,11 +246,11 @@
             self.SetVectorRule(num, val)
 
     def SetRasterRule(self, num, val): 
-        """!Set raster rule"""       
+        """Set raster rule"""     
         self.ruleslines[num - 1000]['value'] = val
 
     def SetVectorRule(self, num, val):
-        """!Set vector rule"""
+        """Set vector rule"""
         vals = []
         vals.append(val)
         try:
@@ -258,7 +260,7 @@
         self.ruleslines[num - 1000]['value'] = self.SQLConvert(vals)
             
     def Enable(self, enable = True):
-        """!Enable/Disable all widgets"""
+        """Enable/Disable all widgets"""
         for child in self.mainPanel.GetChildren():
             child.Enable(enable)
         sql = True
@@ -302,7 +304,7 @@
         return True
                 
     def SQLConvert(self, vals):
-        """!Prepare value for SQL query"""
+        """Prepare value for SQL query"""
         if vals[0].isdigit():
             sqlrule = '%s=%s' % (self.properties['sourceColumn'], vals[0])
             if vals[1]:
@@ -316,11 +318,11 @@
     def __init__(self, parent, title, layerTree = None, id = wx.ID_ANY,
                  style = wx.DEFAULT_FRAME_STYLE | wx.RESIZE_BORDER,
                  **kwargs):
-        """!Dialog for interactively entering rules for map management
+        """Dialog for interactively entering rules for map management
         commands
 
-        @param raster True to raster otherwise vector
-        @param nviz True if ColorTable is called from nviz thematic mapping
+        :param raster: True to raster otherwise vector
+        :param nviz: True if ColorTable is called from nviz thematic mapping
         """
         self.parent = parent        # GMFrame ?
         self.layerTree = layerTree  # LayerTree or None
@@ -356,7 +358,7 @@
         self.Bind(wx.EVT_BUTTON, self.OnPreview, self.btnPreview)
         
     def _initLayer(self):
-        """!Set initial layer when opening dialog"""
+        """Set initial layer when opening dialog"""
         # set map layer from layer tree, first selected,
         # if not the right type, than select another
         try:
@@ -375,7 +377,7 @@
             self.inmap = name
     
     def _createMapSelection(self, parent):
-        """!Create map selection part of dialog"""
+        """Create map selection part of dialog"""
         # top controls
         if self.mapType == 'raster':
             maplabel = _('Select raster map:')
@@ -395,7 +397,7 @@
         return inputSizer
     
     def _createFileSelection(self, parent):
-        """!Create file (open/save rules) selection part of dialog"""
+        """Create file (open/save rules) selection part of dialog"""
         inputBox = wx.StaticBox(parent, id = wx.ID_ANY,
                                 label = " %s " % _("Import or export color table:"))
         inputSizer = wx.StaticBoxSizer(inputBox, wx.HORIZONTAL)
@@ -448,7 +450,7 @@
         return inputSizer   
          
     def _createPreview(self, parent):
-        """!Create preview"""
+        """Create preview"""
         # initialize preview display
         self.InitDisplay()
         self.preview = BufferedWindow(parent, id = wx.ID_ANY, size = (400, 300),
@@ -456,7 +458,7 @@
         self.preview.EraseMap()
         
     def _createButtons(self, parent):
-        """!Create buttons for leaving dialog"""
+        """Create buttons for leaving dialog"""
         self.btnHelp    = wx.Button(parent, id = wx.ID_HELP)
         self.btnCancel  = wx.Button(parent, id = wx.ID_CANCEL)
         self.btnApply   = wx.Button(parent, id = wx.ID_APPLY) 
@@ -486,7 +488,7 @@
         return btnSizer
     
     def _createBody(self, parent):
-        """!Create dialog body consisting of rules and preview"""
+        """Create dialog body consisting of rules and preview"""
         bodySizer =  wx.GridBagSizer(hgap = 5, vgap = 5)
         bodySizer.AddGrowableRow(1)
         bodySizer.AddGrowableCol(2)
@@ -536,21 +538,21 @@
         return bodySizer    
         
     def InitDisplay(self):
-        """!Initialize preview display, set dimensions and region
+        """Initialize preview display, set dimensions and region
         """
         self.width = self.Map.width = 400
         self.height = self.Map.height = 300
         self.Map.geom = self.width, self.height
 
     def OnCloseWindow(self, event):
-        """!Window closed
+        """Window closed
         """
         self.OnCancel(event)
           
     def OnApply(self, event):
-        """!Apply selected color table
+        """Apply selected color table
         
-        @return True on success otherwise False
+        :return: True on success otherwise False
         """
         ret = self.CreateColorTable()
         if not ret:
@@ -565,18 +567,18 @@
         return ret
 
     def OnOK(self, event):
-        """!Apply selected color table and close the dialog"""
+        """Apply selected color table and close the dialog"""
         if self.OnApply(event):
             self.OnCancel(event)
     
     def OnCancel(self, event):
-        """!Do not apply any changes, remove associated
+        """Do not apply any changes, remove associated
             rendered images and close the dialog"""
         self.Map.Clean()
         self.Destroy()
         
     def OnSetTable(self, event):
-        """!Load pre-defined color table"""
+        """Load pre-defined color table"""
         ct = self.FindWindowByName("colorTableChoice").GetValue()
         # save original color table
         ctOriginal = RunCommand('r.colors.out', read = True, map = self.inmap, rules = '-')
@@ -593,7 +595,7 @@
         self.ReadColorTable(ctable = ctNew)
 
     def OnSaveRulesFile(self, event):
-        """!Save color table to file"""
+        """Save color table to file"""
         path = event.GetString()
         if not os.path.exists(path):
             return
@@ -613,7 +615,7 @@
         fd.close()            
          
     def OnLoadRulesFile(self, event):
-        """!Load color table from file"""
+        """Load color table from file"""
         path = event.GetString()
         if not os.path.exists(path):
             return
@@ -625,9 +627,9 @@
         fd.close()
         
     def ReadColorTable(self, ctable):
-        """!Read color table
+        """Read color table
         
-        @param table color table in format coming from r.colors.out"""
+        :param table: color table in format coming from r.colors.out"""
         
         rulesNumber = len(ctable.splitlines())
         self.rulesPanel.AddRules(rulesNumber)
@@ -666,13 +668,13 @@
         self.OnPreview(tmp = True)  
          
     def OnLoadDefaultTable(self, event):
-        """!Load internal color table"""
+        """Load internal color table"""
         self.LoadTable()
         
     def LoadTable(self, mapType = 'raster'):
-        """!Load current color table (using `r(v).colors.out`)
+        """Load current color table (using `r(v).colors.out`)
         
-        @param mapType map type (raster or vector)"""
+        :param mapType: map type (raster or vector)"""
         self.rulesPanel.Clear()
         
         if mapType == 'raster':
@@ -700,10 +702,10 @@
         self.ReadColorTable(ctable = ctable)     
     
     def CreateColorTable(self, tmp = False):
-        """!Creates color table
+        """Creates color table
 
-        @return True on success
-        @return False on failure
+        :return: True on success
+        :return: False on failure
         """
         rulestxt = ''
         
@@ -744,7 +746,7 @@
         return True
     
     def DoPreview(self, ltype, cmdlist):
-        """!Update preview (based on computational region)"""
+        """Update preview (based on computational region)"""
         
         if not self.layer:
             self.layer = self.Map.AddLayer(ltype = ltype, name = 'preview', command = cmdlist,
@@ -758,18 +760,18 @@
         self.preview.UpdatePreview()
         
     def RunHelp(self, cmd):
-        """!Show GRASS manual page"""
+        """Show GRASS manual page"""
         RunCommand('g.manual',
                    quiet = True,
                    parent = self,
                    entry = cmd)
 
     def SetMap(self, name):
-        """!Set map name and update dialog"""
+        """Set map name and update dialog"""
         self.selectionInput.SetValue(name)
         
     def _IsNumber(self, s):
-        """!Check if 's' is a number"""
+        """Check if 's' is a number"""
         try:
             float(s)
             return True
@@ -778,7 +780,7 @@
         
 class RasterColorTable(ColorTable):
     def __init__(self, parent, **kwargs):
-        """!Dialog for interactively entering color rules for raster maps"""
+        """Dialog for interactively entering color rules for raster maps"""
 
         self.mapType = 'raster'
         self.attributeType = 'color' 
@@ -800,7 +802,7 @@
         self.SetMinSize((650, 700))
                 
     def _doLayout(self):
-        """!Do main layout"""
+        """Do main layout"""
         sizer = wx.BoxSizer(wx.VERTICAL)
         #
         # map selection
@@ -837,7 +839,7 @@
         self.Layout()
     
     def OnSelectionInput(self, event):
-        """!Raster map selected"""
+        """Raster map selected"""
         if event:
             self.inmap = event.GetString()
         
@@ -885,7 +887,7 @@
             btn.Enable()
         
     def OnPreview(self, tmp = True):
-        """!Update preview (based on computational region)"""
+        """Update preview (based on computational region)"""
         if not self.inmap:
             self.preview.EraseMap()
             return
@@ -926,13 +928,13 @@
                            map = self.inmap)
         
     def OnHelp(self, event):
-        """!Show GRASS manual page"""
+        """Show GRASS manual page"""
         cmd = 'r.colors'
         ColorTable.RunHelp(self, cmd = cmd)
                      
 class VectorColorTable(ColorTable):
     def __init__(self, parent, attributeType, **kwargs):
-        """!Dialog for interactively entering color rules for vector maps"""
+        """Dialog for interactively entering color rules for vector maps"""
         # dialog attributes
         self.mapType = 'vector'
         self.attributeType = attributeType # color, size, width
@@ -986,7 +988,7 @@
         self.Show()
     
     def _createVectorAttrb(self, parent):
-        """!Create part of dialog with layer/column selection"""
+        """Create part of dialog with layer/column selection"""
         inputBox = wx.StaticBox(parent = parent, id = wx.ID_ANY,
                                 label = " %s " % _("Select vector columns"))
         cb_vl_label = wx.StaticText(parent, id = wx.ID_ANY,
@@ -1058,7 +1060,7 @@
         return inputSizer 
        
     def _doLayout(self):
-        """!Do main layout"""
+        """Do main layout"""
         scrollPanel = scrolled.ScrolledPanel(parent = self.panel, id = wx.ID_ANY,
                                              style = wx.TAB_TRAVERSAL)
         scrollPanel.SetupScrolling()
@@ -1125,7 +1127,7 @@
             self.cp.SetLabel(_("Import or export color table"))
         
     def CheckMapset(self):
-        """!Check if current vector is in current mapset"""
+        """Check if current vector is in current mapset"""
         if grass.find_file(name = self.inmap,
                            element = 'vector')['mapset'] == grass.gisenv()['MAPSET']:
             return True
@@ -1147,7 +1149,7 @@
             dlg.Destroy()
   
     def OnCheckColumn(self, event):
-        """!Use color column instead of color table"""
+        """Use color column instead of color table"""
         if self.useColumn.GetValue():
             self.properties['loadColumn'] = self.fromColumn.GetValue()
             self.properties['storeColumn'] = self.toColumn.GetValue()
@@ -1168,12 +1170,12 @@
             self.LoadTable()
             
     def EnableVectorAttributes(self, enable):
-        """!Enable/disable part of dialog connected with db"""
+        """Enable/disable part of dialog connected with db"""
         for child in self.colorColumnSizer.GetChildren():
             child.GetWindow().Enable(enable)
     
     def DisableClearAll(self):
-        """!Enable, disable the whole dialog"""
+        """Enable, disable the whole dialog"""
         self.rulesPanel.Clear()
         self.EnableVectorAttributes(False)
         self.btnPreview.Enable(False)
@@ -1182,7 +1184,7 @@
         self.preview.EraseMap()
         
     def OnSelectionInput(self, event):
-        """!Vector map selected"""
+        """Vector map selected"""
         if event:
             if self.inmap:
                 # switch to another map -> delete temporary column
@@ -1200,7 +1202,7 @@
         self.UpdateDialog()
        
     def UpdateDialog(self):
-        """!Update dialog after map selection"""  
+        """Update dialog after map selection"""
         
         if not self.inmap:
             self.DisableClearAll()
@@ -1262,10 +1264,10 @@
         self.btnApply.Enable(enable)   
     
     def AddTemporaryColumn(self, type):
-        """!Add temporary column to not overwrite the original values,
+        """Add temporary column to not overwrite the original values,
         need to be deleted when closing dialog and unloading map
         
-        @param type type of column (e.g. vachar(11))"""
+        :param type: type of column (e.g. vachar(11))"""
         if not self.CheckMapset():
             return
         # because more than one dialog with the same map can be opened we must test column name and
@@ -1287,7 +1289,7 @@
                          column = '%s %s' % (self.properties['tmpColumn'], type))
         
     def DeleteTemporaryColumn(self):
-        """!Delete temporary column"""
+        """Delete temporary column"""
         if not self.CheckMapset():
             return
         
@@ -1343,7 +1345,7 @@
         self.LoadTable()
     
     def OnAddColumn(self, event):
-        """!Add GRASS(RGB,SIZE,WIDTH) column if it doesn't exist"""
+        """Add GRASS(RGB,SIZE,WIDTH) column if it doesn't exist"""
         if self.columnsProp[self.attributeType]['name'] not in self.fromColumn.GetColumns():
             if self.version7:
                 modul = 'v.db.addcolumn'
@@ -1366,7 +1368,7 @@
                          self.columnsProp[self.attributeType]['name'])
                         
     def CreateAttrTable(self, dcmd, layer, params, propwin):
-        """!Create attribute table"""
+        """Create attribute table"""
         if dcmd:
             cmd = utils.CmdToTuple(dcmd)
             ret = RunCommand(cmd[0], **cmd[1])
@@ -1380,14 +1382,14 @@
         return False    
     
     def LoadTable(self):
-        """!Load table"""
+        """Load table"""
         if self.colorTable:
             ColorTable.LoadTable(self, mapType = 'vector')
         else:
             self.LoadRulesFromColumn()
             
     def LoadRulesFromColumn(self):
-        """!Load current column (GRASSRGB, size column)"""
+        """Load current column (GRASSRGB, size column)"""
         
         self.rulesPanel.Clear()
         if not self.properties['sourceColumn']:
@@ -1484,7 +1486,7 @@
         busy.Destroy()
         
     def SetRangeLabel(self):
-        """!Set labels with info about attribute column range"""
+        """Set labels with info about attribute column range"""
         
         if self.properties['sourceColumn']:
             ctype = self.dbInfo.GetTableDesc(self.properties['table'])[self.properties['sourceColumn']]['ctype']
@@ -1511,24 +1513,24 @@
                 self.cr_label.SetLabel(_("Enter vector attribute values:"))
                 
     def OnFromColSelection(self, event):
-        """!Selection in combobox (for loading values) changed"""
+        """Selection in combobox (for loading values) changed"""
         self.properties['loadColumn'] = event.GetString()
         
         self.LoadTable()
     
     def OnToColSelection(self, event):
-        """!Selection in combobox (for storing values) changed"""
+        """Selection in combobox (for storing values) changed"""
         self.properties['storeColumn'] = event.GetString()
     
     def OnPreview(self, event = None, tmp = True):
-        """!Update preview (based on computational region)"""
+        """Update preview (based on computational region)"""
         if self.colorTable:
             self.OnTablePreview(tmp)
         else:
             self.OnColumnPreview() 
                                  
     def OnTablePreview(self, tmp):
-        """!Update preview (based on computational region)"""
+        """Update preview (based on computational region)"""
         if not self.inmap:
             self.preview.EraseMap()
             return
@@ -1569,7 +1571,7 @@
                            flags = 'r',
                            map = self.inmap)
     def OnColumnPreview(self):
-        """!Update preview (based on computational region)"""
+        """Update preview (based on computational region)"""
         if not self.inmap or not self.properties['tmpColumn']:
             self.preview.EraseMap()
             return
@@ -1590,12 +1592,12 @@
         ColorTable.DoPreview(self, ltype, cmdlist)
         
     def OnHelp(self, event):
-        """!Show GRASS manual page"""
+        """Show GRASS manual page"""
         cmd = 'v.colors'
         ColorTable.RunHelp(self, cmd = cmd)
         
     def UseAttrColumn(self, useAttrColumn):
-        """!Find layers and apply the changes in d.vect command"""
+        """Find layers and apply the changes in d.vect command"""
         layers = self.layerTree.FindItemByData(key = 'name', value = self.inmap)
         if not layers:
             return
@@ -1616,7 +1618,7 @@
             self.layerTree.SetLayerInfo(layer, key = 'cmd', value = cmdlist)
         
     def CreateColorTable(self, tmp = False):
-        """!Create color rules (color table or color column)"""
+        """Create color rules (color table or color column)"""
         if self.colorTable:
             ret = ColorTable.CreateColorTable(self)
         else:
@@ -1628,10 +1630,10 @@
         return ret
         
     def UpdateColorColumn(self, tmp):
-        """!Creates color table
+        """Creates color table
 
-        @return True on success
-        @return False on failure
+        :return: True on success
+        :return: False on failure
         """
         rulestxt = ''
         
@@ -1667,15 +1669,15 @@
         return True
     
     def OnCancel(self, event):
-        """!Do not apply any changes and close the dialog"""
+        """Do not apply any changes and close the dialog"""
         self.DeleteTemporaryColumn()
         self.Map.Clean()
         self.Destroy()
 
     def OnApply(self, event):
-        """!Apply selected color table
+        """Apply selected color table
         
-        @return True on success otherwise False
+        :return: True on success otherwise False
         """
         if self.colorTable:
             self.UseAttrColumn(False)
@@ -1691,23 +1693,23 @@
         
 class ThematicVectorTable(VectorColorTable):
     def __init__(self, parent, vectorType, **kwargs):
-        """!Dialog for interactively entering color/size rules
-            for vector maps for thematic mapping in nviz"""
+        """Dialog for interactively entering color/size rules
+        for vector maps for thematic mapping in nviz"""
         self.vectorType = vectorType
         VectorColorTable.__init__(self, parent = parent, **kwargs)
               
         self.SetTitle(_("Thematic mapping for vector map in 3D view"))       
                     
     def _initLayer(self):
-        """!Set initial layer when opening dialog"""
+        """Set initial layer when opening dialog"""
         self.inmap = self.parent.GetLayerData(nvizType = 'vector', nameOnly = True)
         self.selectionInput.SetValue(self.inmap)
         self.selectionInput.Disable()
         
     def OnApply(self, event):
-        """!Apply selected color table
+        """Apply selected color table
 
-        @return True on success otherwise False
+        :return: True on success otherwise False
         """
         ret = self.CreateColorTable()
         if not ret:
@@ -1745,7 +1747,7 @@
         return ret
            
 class BufferedWindow(wx.Window):
-    """!A Buffered window class"""
+    """A Buffered window class"""
     def __init__(self, parent, id,
                  style = wx.NO_FULL_REPAINT_ON_RESIZE,
                  Map = None, **kwargs):
@@ -1784,7 +1786,7 @@
         self.Map.SetRegion()
 
     def Draw(self, pdc, img = None, pdctype = 'image'):
-        """!Draws preview or clears window"""
+        """Draws preview or clears window"""
         pdc.BeginDrawing()
 
         Debug.msg (3, "BufferedWindow.Draw(): pdctype=%s" % (pdctype))
@@ -1808,7 +1810,7 @@
         self.Refresh()
 
     def OnPaint(self, event):
-        """!Draw pseudo DC to buffer"""
+        """Draw pseudo DC to buffer"""
         self._Buffer = wx.EmptyBitmap(self.Map.width, self.Map.height)
         dc = wx.BufferedPaintDC(self, self._Buffer)
         
@@ -1830,7 +1832,7 @@
         self.pdc.DrawToDCClipped(dc, r)
         
     def OnSize(self, event):
-        """!Init image size to match window size"""
+        """Init image size to match window size"""
         # set size of the input image
         self.Map.width, self.Map.height = self.GetClientSize()
 
@@ -1852,7 +1854,7 @@
         self.resize = True
 
     def OnIdle(self, event):
-        """!Only re-render a preview image from GRASS during
+        """Only re-render a preview image from GRASS during
         idle time instead of multiple times during resizing.
         """
         if self.resize:
@@ -1861,7 +1863,7 @@
         event.Skip()
 
     def GetImage(self):
-        """!Converts files to wx.Image"""
+        """Converts files to wx.Image"""
         if self.Map.mapfile and os.path.isfile(self.Map.mapfile) and \
                 os.path.getsize(self.Map.mapfile):
             img = wx.Image(self.Map.mapfile, wx.BITMAP_TYPE_ANY)
@@ -1871,7 +1873,7 @@
         return img
     
     def UpdatePreview(self, img = None):
-        """!Update canvas if window changes geometry"""
+        """Update canvas if window changes geometry"""
         Debug.msg (2, "BufferedWindow.UpdatePreview(%s): render=%s" % (img, self.render))
         oldfont = ""
         oldencoding = ""
@@ -1899,6 +1901,6 @@
         self.resize = False
         
     def EraseMap(self):
-        """!Erase preview"""
+        """Erase preview"""
         self.Draw(self.pdc, pdctype = 'clear')
     

Modified: grass/trunk/gui/wxpython/modules/extensions.py
===================================================================
--- grass/trunk/gui/wxpython/modules/extensions.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/modules/extensions.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package modules.extensions
 
 @brief GRASS Addons extensions management classes
@@ -116,7 +116,7 @@
         self._layout()
 
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         sizer = wx.BoxSizer(wx.VERTICAL)
         repoSizer = wx.StaticBoxSizer(self.repoBox, wx.VERTICAL)
         repo1Sizer = wx.BoxSizer(wx.HORIZONTAL)
@@ -182,11 +182,11 @@
                                           'svnurl=' + self.repo.GetValue().strip()]
 
     def OnFetch(self, event):
-        """!Fetch list of available extensions"""
+        """Fetch list of available extensions"""
         self._fetch()
 
     def _fetch(self):
-        """!Fetch list of available extensions"""
+        """Fetch list of available extensions"""
         wx.BeginBusyCursor()
         self.SetStatusText(_("Fetching list of modules from GRASS-Addons SVN (be patient)..."), 0)
         try:
@@ -222,7 +222,7 @@
             self.OnInstall(event=None)
         
     def OnInstall(self, event):
-        """!Install selected extension"""
+        """Install selected extension"""
         log = self.parent.GetLogWindow()
         cmd = self._getCmd()
         if cmd:
@@ -247,7 +247,7 @@
         self._giface.Help(entry='g.extension')
 
     def OnItemSelected(self, node):
-        """!Item selected"""
+        """Item selected"""
         data = node.data
         if data is None:
             self.SetStatusText('', 0)
@@ -257,7 +257,7 @@
             self.btnInstall.Enable(True)
 
 class ExtensionTreeModelBuilder:
-    """!Tree model of available extensions."""
+    """Tree model of available extensions."""
     def __init__(self):
         self.mainNodes = dict()
         self.model = TreeModel(ModuleNode)
@@ -272,7 +272,7 @@
         return self.model
 
     def _emptyTree(self):
-        """!Remove modules from tree keeping the main structure"""
+        """Remove modules from tree keeping the main structure"""
         for node in self.mainNodes.values():
             for child in reversed(node.children):
                 self.model.RemoveNode(child)
@@ -298,7 +298,7 @@
         return c
     
     def Load(self, url, full = True):
-        """!Load list of extensions"""
+        """Load list of extensions"""
         self._emptyTree()
         
         if full:
@@ -378,7 +378,7 @@
         self._layout()
         
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         sizer = wx.BoxSizer(wx.VERTICAL)
         
         extSizer = wx.StaticBoxSizer(self.extBox, wx.HORIZONTAL)
@@ -412,7 +412,7 @@
         return eList
 
     def OnUninstall(self, event):
-        """!Uninstall selected extensions"""
+        """Uninstall selected extensions"""
         eList = self._getSelectedExtensions()
         if not eList:
             return
@@ -438,7 +438,7 @@
         toolboxesOutdated()
 
     def OnUpdate(self, event):
-        """!Update selected extensions"""
+        """Update selected extensions"""
         eList = self._getSelectedExtensions()
         if not eList:
             return
@@ -450,7 +450,7 @@
                         'operation=add'])
         
 class CheckListExtension(GListCtrl):
-    """!List of mapset/owner/group"""
+    """List of mapset/owner/group"""
     def __init__(self, parent):
         GListCtrl.__init__(self, parent)
         
@@ -459,7 +459,7 @@
         self.LoadData()
         
     def LoadData(self):
-        """!Load data into list"""
+        """Load data into list"""
         self.DeleteAllItems()
         for ext in RunCommand('g.extension',
                               quiet = True, parent = self, read = True,
@@ -468,7 +468,7 @@
                 self.InsertStringItem(sys.maxint, ext)
 
     def GetExtensions(self):
-        """!Get extensions to be un-installed
+        """Get extensions to be un-installed
         """
         extList = list()
         for i in range(self.GetItemCount()):

Modified: grass/trunk/gui/wxpython/modules/histogram.py
===================================================================
--- grass/trunk/gui/wxpython/modules/histogram.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/modules/histogram.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package modules.histogram
 
 Plotting histogram based on d.histogram
@@ -33,7 +33,7 @@
 from gui_core.toolbars    import BaseToolbar, BaseIcons
 
 class BufferedWindow(wx.Window):
-    """!A Buffered window class.
+    """A Buffered window class.
 
     When the drawing needs to change, you app needs to call the
     UpdateHist() method. Since the drawing is stored in a bitmap, you
@@ -84,7 +84,7 @@
         self.Bind(wx.EVT_ERASE_BACKGROUND, lambda x:None)
         
     def Draw(self, pdc, img = None, drawid = None, pdctype = 'image', coords = [0,0,0,0]):
-        """!Draws histogram or clears window
+        """Draws histogram or clears window
         """
         if drawid == None:
             if pdctype == 'image' :
@@ -120,7 +120,7 @@
         self.Refresh()
         
     def OnPaint(self, event):
-        """!Draw psuedo DC to buffer
+        """Draw psuedo DC to buffer
         """
         dc = wx.BufferedPaintDC(self, self._buffer)
         
@@ -139,7 +139,7 @@
         self.pdc.DrawToDCClipped(dc,r)
         
     def OnSize(self, event):
-        """!Init image size to match window size
+        """Init image size to match window size
         """
         # set size of the input image
         self.Map.width, self.Map.height = self.GetClientSize()
@@ -162,7 +162,7 @@
         self.resize = True
         
     def OnIdle(self, event):
-        """!Only re-render a histogram image from GRASS during idle
+        """Only re-render a histogram image from GRASS during idle
         time instead of multiple times during resizing.
         """
         if self.resize:
@@ -171,7 +171,7 @@
         event.Skip()
         
     def SaveToFile(self, FileName, FileType, width, height):
-        """!This will save the contents of the buffer to the specified
+        """This will save the contents of the buffer to the specified
         file. See the wx.Windows docs for wx.Bitmap::SaveFile for the
         details
         """
@@ -194,7 +194,7 @@
         busy.Destroy()
         
     def GetImage(self):
-        """!Converts files to wx.Image
+        """Converts files to wx.Image
         """
         if self.Map.mapfile and os.path.isfile(self.Map.mapfile) and \
                 os.path.getsize(self.Map.mapfile):
@@ -206,7 +206,7 @@
         return img
     
     def UpdateHist(self, img = None):
-        """!Update canvas if histogram options changes or window
+        """Update canvas if histogram options changes or window
         changes geometry
         """
         Debug.msg (2, "BufferedWindow.UpdateHist(%s): render=%s" % (img, self.render))
@@ -257,12 +257,12 @@
             os.environ["GRASS_ENCODING"] = oldencoding
         
     def EraseMap(self):
-        """!Erase the map display
+        """Erase the map display
         """
         self.Draw(self.pdc, pdctype = 'clear')
         
 class HistogramFrame(wx.Frame):
-    """!Main frame for hisgram display window. Uses d.histogram
+    """Main frame for hisgram display window. Uses d.histogram
     rendered onto canvas
     """
     def __init__(self, parent, giface, id=wx.ID_ANY,
@@ -324,13 +324,13 @@
             wx.CallAfter(self.OnOptions, None)
 
     def InitDisplay(self):
-        """!Initialize histogram display, set dimensions and region
+        """Initialize histogram display, set dimensions and region
         """
         self.width, self.height = self.GetClientSize()
         self.Map.geom = self.width, self.height
         
     def OnOptions(self, event):
-        """!Change histogram settings"""
+        """Change histogram settings"""
         cmd = ['d.histogram']
         if self.mapname != '':
             cmd.append('map=%s' % self.mapname)
@@ -338,7 +338,7 @@
         module.ParseCommand(cmd, completed = (self.GetOptData, None, self.params))
 
     def GetOptData(self, dcmd, layer, params, propwin):
-        """!Callback method for histogram command generated by dialog
+        """Callback method for histogram command generated by dialog
         created in menuform.py
         """
         if dcmd:
@@ -355,7 +355,7 @@
         self.HistWindow.UpdateHist()
         
     def SetHistLayer(self, name, cmd = None):
-        """!Set histogram layer
+        """Set histogram layer
         """
         self.mapname = name
         if not cmd:
@@ -367,7 +367,7 @@
         return self.layer
 
     def SetHistFont(self, event):
-        """!Set font for histogram. If not set, font will be default
+        """Set font for histogram. If not set, font will be default
         display font.
         """
         dlg = DefaultFontDialog(parent = self, id = wx.ID_ANY,
@@ -388,21 +388,21 @@
         self.HistWindow.UpdateHist()
 
     def OnErase(self, event):
-        """!Erase the histogram display
+        """Erase the histogram display
         """
         self.HistWindow.Draw(self.HistWindow.pdc, pdctype = 'clear')
         
     def OnRender(self, event):
-        """!Re-render histogram
+        """Re-render histogram
         """
         self.HistWindow.UpdateHist()
         
     def GetWindow(self):
-        """!Get buffered window"""
+        """Get buffered window"""
         return self.HistWindow
     
     def SaveToFile(self, event):
-        """!Save to file
+        """Save to file
         """
         filetype, ltype = GetImageHandlers(self.HistWindow.img)
         
@@ -441,7 +441,7 @@
         dlg.Destroy()
         
     def PrintMenu(self, event):
-        """!Print options and output menu
+        """Print options and output menu
         """
         point = wx.GetMousePosition()
         printmenu = wx.Menu()
@@ -467,7 +467,7 @@
         self.Close(True)
         
     def OnCloseWindow(self, event):
-        """!Window closed
+        """Window closed
         Also remove associated rendered images
         """
         try:
@@ -478,7 +478,7 @@
         self.Destroy()
         
 class HistogramToolbar(BaseToolbar):
-    """!Histogram toolbar (see histogram.py)
+    """Histogram toolbar (see histogram.py)
     """
     def __init__(self, parent):
         BaseToolbar.__init__(self, parent)
@@ -489,7 +489,7 @@
         self.Realize()
         
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         return self._getToolbarData((('histogram', BaseIcons["histogramD"],
                                       self.parent.OnOptions),
                                      ('render', BaseIcons["display"],

Modified: grass/trunk/gui/wxpython/modules/mcalc_builder.py
===================================================================
--- grass/trunk/gui/wxpython/modules/mcalc_builder.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/modules/mcalc_builder.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package modules::mcalc_builder
 
 @brief Map calculator, GUI wrapper for r.mapcalc
@@ -31,7 +31,7 @@
 from core.settings    import UserSettings
 
 class MapCalcFrame(wx.Frame):
-    """!Mapcalc Frame class. Calculator-style window to create and run
+    """Mapcalc Frame class. Calculator-style window to create and run
     r(3).mapcalc statements.
     """
     def __init__(self, parent, giface, cmd, id = wx.ID_ANY,
@@ -393,7 +393,7 @@
         self.Layout()
         
     def AddMark(self,event):
-        """!Sends operators to insertion method
+        """Sends operators to insertion method
         """
         if event.GetId() == self.btn['compl'].GetId(): mark = "~"
         elif event.GetId() == self.btn['not'].GetId(): mark = "!"
@@ -425,7 +425,7 @@
         
     ### unused
     # def OnSelectTextEvt(self, event):
-    #     """!Checks if user is typing or the event was emited by map selection.
+    #     """Checks if user is typing or the event was emited by map selection.
     #     Prevents from changing focus.
     #     """
     #     item = self.mapselect.GetValue().strip()
@@ -436,7 +436,7 @@
     #     self.lastMapName = item
 
     def OnSelect(self, event):
-        """!Gets raster map or function selection and send it to
+        """Gets raster map or function selection and send it to
         insertion method. 
 
         Checks for characters which can be in raster map name but 
@@ -451,13 +451,13 @@
         win.ChangeValue('') # reset
         
     def OnUpdateStatusBar(self, event):
-        """!Update statusbar text"""
+        """Update statusbar text"""
         command = self._getCommand()
         self.SetStatusText(command)
         event.Skip()
 
     def _getCommand(self):
-        """!Returns entire command as string."""
+        """Returns entire command as string."""
         expr = self.text_mcalc.GetValue().strip().replace("\n", " ")
         cmd = 'r.mapcalc'
         if self.rast3d:
@@ -470,7 +470,7 @@
                                                           overwrite=overwrite)
 
     def _addSomething(self, what):
-        """!Inserts operators, map names, and functions into text area
+        """Inserts operators, map names, and functions into text area
         """
         mcalcstr  = self.text_mcalc.GetValue()
         position  = self.text_mcalc.GetInsertionPoint()
@@ -500,7 +500,7 @@
         self.text_mcalc.SetFocus()
         
     def OnMCalcRun(self,event):
-        """!Builds and runs r.mapcalc statement
+        """Builds and runs r.mapcalc statement
         """
         name = self.newmaptxt.GetValue().strip()
         if not name:
@@ -535,7 +535,7 @@
                        overwrite = overwrite)
         
     def OnDone(self, cmd, returncode):
-        """!Add create map to the layer tree
+        """Add create map to the layer tree
 
         Sends the mapCreated signal from the grass interface.
         """
@@ -548,7 +548,7 @@
         self._giface.mapCreated.emit(name=name, ltype=ltype, add=self.addbox.IsChecked())
 
     def OnSaveExpression(self, event):
-        """!Saves expression to file
+        """Saves expression to file
         """
         mctxt = self.newmaptxt.GetValue() + ' = ' + self.text_mcalc.GetValue() + os.linesep
         
@@ -572,7 +572,7 @@
         dlg.Destroy()
 
     def OnLoadExpression(self, event):
-        """!Load expression from file
+        """Load expression from file
         """
         dlg = wx.FileDialog(parent = self,
                             message = _("Choose a file name to load the expression"),
@@ -613,17 +613,17 @@
             self.SetStatusText(_("'{cmd}' copied to clipboard").format(cmd=command))
 
     def OnClear(self, event):
-        """!Clears text area
+        """Clears text area
         """
         self.text_mcalc.SetValue('')
         
     def OnHelp(self, event):
-        """!Launches r.mapcalc help
+        """Launches r.mapcalc help
         """
         RunCommand('g.manual', parent = self, entry = self.cmd)
         
     def OnClose(self,event):
-        """!Close window"""
+        """Close window"""
         self.Destroy()
 
 if __name__ == "__main__":

Modified: grass/trunk/gui/wxpython/modules/vclean.py
===================================================================
--- grass/trunk/gui/wxpython/modules/vclean.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/modules/vclean.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -31,7 +31,7 @@
     def __init__(self, parent, id=wx.ID_ANY, title=_('Set up vector cleaning tools'),
                  style=wx.DEFAULT_FRAME_STYLE | wx.RESIZE_BORDER,
                  **kwargs):
-        """!
+        """
         Dialog for interactively defining vector cleaning tools
         """
         wx.Frame.__init__(self, parent, id, title, style=style, **kwargs)
@@ -304,7 +304,7 @@
         return ct_panel
 
     def OnAddTool(self, event):
-        """!Add tool button pressed"""
+        """Add tool button pressed"""
         self.AddTool()
 
     def AddTool(self):
@@ -343,7 +343,7 @@
         self.ct_panel.SetupScrolling()
 
     def OnClearTool(self, event):
-        """!Remove tool button pressed"""
+        """Remove tool button pressed"""
         id = self.selected
 
         if id > 0:
@@ -355,7 +355,7 @@
             self.SetStatusText(_("Please select a cleaning tool to remove"))
 
     def OnMoveToolUp(self, event):
-        """!Move up tool button pressed"""
+        """Move up tool button pressed"""
         id = self.selected
 
         if id > 1:
@@ -380,7 +380,7 @@
             self.SetStatusText(_("Please select a cleaning tool to move up"))
 
     def OnMoveToolDown(self, event):
-        """!Move down tool button pressed"""
+        """Move down tool button pressed"""
         id = self.selected
         snum = len(self.toolslines.keys())
 
@@ -406,7 +406,7 @@
             self.SetStatusText(_("Please select a cleaning tool to move down"))
 
     def OnSetTool(self, event):
-        """!Tool was defined"""
+        """Tool was defined"""
         id = event.GetId()
         tool_no = id - 1000
         num = self.FindWindowById(id).GetCurrentSelection()
@@ -417,7 +417,7 @@
         self.SetStatusText(str(tool_no) + '. ' + _("cleaning tool: '%s'") % (self.tool_list[num]))
 
     def OnThreshValue(self, event):
-        """!Threshold value was entered"""
+        """Threshold value was entered"""
         id = event.GetId()
         num = id - 2000
         self.toolslines[num]['thresh'] = self.FindWindowById(id).GetValue()
@@ -428,7 +428,7 @@
                             'thresh': self.toolslines[num]['thresh']})
 
     def OnSelect(self, event):
-        """!Tool was selected"""
+        """Tool was selected"""
         id = event.GetId()
 
         if self.selected > -1 and self.selected != id:
@@ -441,11 +441,11 @@
             self.selected = -1
 
     def OnDone(self, cmd, returncode):
-        """!Command done"""
+        """Command done"""
         self.SetStatusText('')
 
     def OnCleaningRun(self, event):
-        """!Builds options and runs v.clean
+        """Builds options and runs v.clean
         """
         self.GetCmdStrings()
 
@@ -496,14 +496,14 @@
         self.Destroy()
 
     def OnHelp(self, event):
-        """!Show GRASS manual page"""
+        """Show GRASS manual page"""
         RunCommand('g.manual',
                    quiet=True,
                    parent=self,
                    entry=self.cmd)
 
     def OnCopy(self, event):
-        """!Copy the command"""
+        """Copy the command"""
         cmddata = wx.TextDataObject()
         # get tool and thresh strings
         self.GetCmdStrings()

Modified: grass/trunk/gui/wxpython/modules/vkrige.py
===================================================================
--- grass/trunk/gui/wxpython/modules/vkrige.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/modules/vkrige.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -51,7 +51,7 @@
 #@TODO move away functions not regarding the GUI
 
 class KrigingPanel(wx.Panel):
-    """ Main panel. Contains all widgets except Menus and Statusbar. """
+    """Main panel. Contains all widgets except Menus and Statusbar. """
     def __init__(self, parent, Rinstance, controller, *args, **kwargs):
         wx.Panel.__init__(self, parent, *args, **kwargs)
         
@@ -169,7 +169,7 @@
         self.InputDataMap.GetElementList()
         
     def CreatePage(self, package, Rinstance, controller):
-        """ Creates the three notebook pages, one for each R package """
+        """Creates the three notebook pages, one for each R package """
         for package in ["gstat"]: #@TODO add here other packages when they will be implemented
             classobj = eval("RBook"+package+"Panel")
             setattr(self, "RBook"+package+"Panel", (classobj(self,
@@ -179,11 +179,11 @@
             self.RPackagesBook.AddPage(page = getattr(self, "RBook"+package+"Panel"), text = package)
 
     def OnButtonRefresh(self, event):
-        """ Forces refresh of list of available layers. """
+        """Forces refresh of list of available layers. """
         self.InputDataMap.GetElementList()
 
     def OnCloseWindow(self, event):
-        """ Cancel button pressed"""
+        """Cancel button pressed"""
         self.parent.Close()
         event.Skip()
 
@@ -192,7 +192,7 @@
         event.Skip()
 
     def OnInputMapChanged(self, event):
-        """ Refreshes list of columns."""
+        """Refreshes list of columns."""
         MapName = event.GetString()
         self.InputDataColumn.InsertColumns(vector = MapName,
                                    layer = 1, excludeKey = False,
@@ -213,7 +213,7 @@
             self.OutputVarianceMapName.SetValue('')
         
     def OnRunButton(self,event):
-        """ Execute R analysis. """
+        """Execute R analysis. """
         #@FIXME: send data to main method instead of running it here.
         
         #-1: get the selected notebook page. The user shall know that [s]he can modify settings in all
@@ -257,7 +257,7 @@
         event.Skip()
 
     def _switchPage(self, notification):
-        """!Manages @c 'output' notebook page according to event notification."""
+        """Manages @c 'output' notebook page according to event notification."""
         if notification == Notification.HIGHLIGHT:
             self.RPackagesBook.HighlightPageByName('output')
         if notification == Notification.MAKE_VISIBLE:
@@ -269,7 +269,7 @@
 
 
 class KrigingModule(wx.Frame):
-    """ Kriging module for GRASS GIS. Depends on R and its packages gstat and geoR. """
+    """Kriging module for GRASS GIS. Depends on R and its packages gstat and geoR. """
     def __init__(self, parent, Rinstance, controller, *args, **kwargs):
         wx.Frame.__init__(self, parent, *args, **kwargs)
         # setting properties and all widgettery
@@ -284,16 +284,16 @@
         self.SetSize(self.GetBestSize())
     
 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. """
     def __init__(self, parent):
         self.parent = parent
 
     def message(self, text_string):
-        """ Updates status bar """
+        """Updates status bar """
         self.parent.SetStatusText(text_string.strip())
 
 class RBookPanel(wx.Panel):
-    """ Generic notebook page with shared widgets and empty kriging functions. """
+    """Generic notebook page with shared widgets and empty kriging functions. """
     def __init__(self, parent, *args, **kwargs):
         wx.Panel.__init__(self, parent, *args, **kwargs)
         
@@ -376,16 +376,16 @@
         self.BlockSpinBox.Enable(event.GetInt() == 1)
     
     def OnPlotButton(self,event):
-        """ Plots variogram with current options. """
+        """Plots variogram with current options. """
         pass
     
     def UseValue(self, event):
-        """ Enables/Disables the SpinCtrl in respect of the checkbox. """
+        """Enables/Disables the SpinCtrl in respect of the checkbox. """
         n = self.ParametersList[event.GetId()]
         getattr(self, n+"Ctrl").Enable(event.IsChecked())
 
 class RBookgstatPanel(RBookPanel):
-    """ Subclass of RBookPanel, with specific gstat options and kriging functions. """
+    """Subclass of RBookPanel, with specific gstat options and kriging functions. """
     def __init__(self, parent, Rinstance, controller, *args, **kwargs):
         RBookPanel.__init__(self, parent, *args, **kwargs)
         
@@ -443,7 +443,7 @@
         #@FIXME: was for n in self.ParametersSizer.GetChildren(): n.Enable(False) but doesn't work
         
     def OnPlotButton(self,event):
-        """ Plots variogram with current options. """
+        """Plots variogram with current options. """
         ## BIG WARNING: smell of code duplication. Fix this asap. emminchia!
         #controller = Controller() # sed, if needed,
         #controller = self.controller
@@ -501,7 +501,7 @@
             time.sleep(0.2)
         
 class RBookgeoRPanel(RBookPanel):
-    """ Subclass of RBookPanel, with specific geoR options and kriging functions. """
+    """Subclass of RBookPanel, with specific geoR options and kriging functions. """
     def __init__(self, parent, *args, **kwargs):
         RBookPanel.__init__(self, parent, *args, **kwargs)
         #@TODO: change these two lines as soon as geoR f(x)s are integrated.

Modified: grass/trunk/gui/wxpython/nviz/animation.py
===================================================================
--- grass/trunk/gui/wxpython/nviz/animation.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/nviz/animation.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package nviz.animation
 
 @brief Nviz (3D view) animation
@@ -23,13 +23,13 @@
 from core.utils import _
 
 class Animation:
-    """!Class represents animation as a sequence of states (views).
+    """Class represents animation as a sequence of states (views).
     It enables to record, replay the sequence and finally generate
     all image files. Recording and replaying is based on timer events.
     There is no frame interpolation like in the Tcl/Tk based Nviz.
     """
     def __init__(self, mapWindow, timer):
-        """!Animation constructor
+        """Animation constructor
         
         Signals:
             animationFinished - emitted when animation finished
@@ -37,8 +37,8 @@
             animationUpdateIndex - emitted during animation to update gui
                                  - attributes 'index' and 'mode'
         
-        @param mapWindow glWindow where rendering takes place
-        @param timer timer for recording and replaying
+        :param mapWindow: glWindow where rendering takes place
+        :param timer: timer for recording and replaying
         """
         self.animationFinished = Signal('Animation.animationFinished')
         self.animationUpdateIndex = Signal('Animation.animationUpdateIndex')
@@ -58,24 +58,24 @@
         self.animationSaved = False     # current animation saved or not
         
     def Start(self):
-        """!Start recording/playing"""
+        """Start recording/playing"""
         self.timer.Start(self.GetInterval())
         
     def Pause(self):
-        """!Pause recording/playing"""
+        """Pause recording/playing"""
         self.timer.Stop()
         
     def Stop(self):
-        """!Stop recording/playing"""
+        """Stop recording/playing"""
         self.timer.Stop()
         self.PostFinishedEvent()
         
     def Update(self):
-        """!Record/play next view state (on timer event)"""
+        """Record/play next view state (on timer event)"""
         self.actions[self.mode]()
     
     def Record(self):
-        """!Record new view state"""
+        """Record new view state"""
         self.animationList.append({'view' : copy.deepcopy(self.mapWindow.view),
                                    'iview': copy.deepcopy(self.mapWindow.iview)})
         self.currentFrame += 1
@@ -83,7 +83,7 @@
         self.animationSaved = False
         
     def Play(self):
-        """!Render next frame"""
+        """Render next frame"""
         if not self.animationList:
             self.Stop()
             return
@@ -101,7 +101,7 @@
         self.PostUpdateIndexEvent(index = self.currentFrame)
         
     def UpdateView(self, params):
-        """!Update view data in map window and render"""
+        """Update view data in map window and render"""
         toolWin = self.mapWindow.GetToolWin()
         toolWin.UpdateState(view = params['view'], iview = params['iview'])
         
@@ -111,42 +111,42 @@
         self.mapWindow.Refresh(False)
         
     def IsRunning(self):
-        """!Test if timer is running"""
+        """Test if timer is running"""
         return self.timer.IsRunning()
         
     def SetMode(self, mode):
-        """!Start animation mode
+        """Start animation mode
         
-        @param mode animation mode (record, play, save)
+        :param mode: animation mode (record, play, save)
         """
         self.mode = mode
         
     def GetMode(self):
-        """!Get animation mode (record, play, save)"""
+        """Get animation mode (record, play, save)"""
         return self.mode
         
     def IsPaused(self):
-        """!Test if animation is paused"""
+        """Test if animation is paused"""
         return self.paused
         
     def SetPause(self, pause):
         self.paused = pause
         
     def Exists(self):
-        """!Returns if an animation has been recorded"""
+        """Returns if an animation has been recorded"""
         return bool(self.animationList)
         
     def GetFrameCount(self):
-        """!Return number of recorded frames"""
+        """Return number of recorded frames"""
         return len(self.animationList)
         
     def Clear(self):
-        """!Clear all records"""
+        """Clear all records"""
         self.animationList = []
         self.currentFrame = 0
         
     def GoToFrame(self, index):
-        """!Render frame of given index"""
+        """Render frame of given index"""
         if index >= len(self.animationList):
             return
             
@@ -155,27 +155,27 @@
         self.UpdateView(params)
         
     def PostFinishedEvent(self):
-        """!Animation ends"""
+        """Animation ends"""
         self.animationFinished.emit(mode=self.mode)
         
     def PostUpdateIndexEvent(self, index):
-        """!Frame index changed, update tool window"""
+        """Frame index changed, update tool window"""
         self.animationUpdateIndex(index=index, mode=self.mode)
         
     def StopSaving(self):
-        """!Abort image files generation"""
+        """Abort image files generation"""
         self.stopSaving = True
         
     def IsSaved(self):
-        """"!Test if animation has been saved (to images)"""
+        """"Test if animation has been saved (to images)"""
         return self.animationSaved
         
     def SaveAnimationFile(self, path, prefix, format):
-        """!Generate image files
+        """Generate image files
         
-        @param path path to direcory
-        @param prefix file prefix
-        @param format index of image file format
+        :param path: path to direcory
+        :param prefix: file prefix
+        :param format: index of image file format
         """
         w, h = self.mapWindow.GetClientSizeTuple()
         toolWin = self.mapWindow.GetToolWin()
@@ -212,11 +212,11 @@
         self.PostFinishedEvent()
 
     def SetFPS(self, fps):
-        """!Set Frames Per Second value
-        @param fps frames per second
+        """Set Frames Per Second value
+        :param fps: frames per second
         """
         self.fps = fps
     
     def GetInterval(self):
-        """!Return timer interval in ms"""
+        """Return timer interval in ms"""
         return 1000. / self.fps

Modified: grass/trunk/gui/wxpython/nviz/main.py
===================================================================
--- grass/trunk/gui/wxpython/nviz/main.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/nviz/main.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package nviz.main
 
 @brief Nviz (3D view) module

Modified: grass/trunk/gui/wxpython/nviz/mapwindow.py
===================================================================
--- grass/trunk/gui/wxpython/nviz/mapwindow.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/nviz/mapwindow.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package nviz.mapwindow
 
 @brief wxGUI 3D view mode (map canvas)
@@ -67,11 +67,11 @@
         self._display = wxnviz.Nviz(self.log, self.progressbar)
         
     def GetDisplay(self):
-        """!Get display instance"""
+        """Get display instance"""
         return self._display
 
 class GLWindow(MapWindowBase, glcanvas.GLCanvas):
-    """!OpenGL canvas for Map Display Window"""
+    """OpenGL canvas for Map Display Window"""
     def __init__(self, parent, giface, frame, Map, tree, lmgr, id=wx.ID_ANY):
         """All parameters except for id are mandatory. The todo is to remove
         them completely."""
@@ -228,7 +228,7 @@
             GMessage(message)
 
     def InitFly(self):
-        """!Initialize fly through dictionary"""
+        """Initialize fly through dictionary"""
         fly = {'interval' : 10,             # interval for timerFly
                'value': [0, 0, 0],          # calculated values for navigation
                'mode' : 0,                  # fly through mode (0, 1)
@@ -246,7 +246,7 @@
         return fly
         
     def OnTimerFly(self, event):
-        """!Fly event was emitted, move the scene"""
+        """Fly event was emitted, move the scene"""
         if self.mouse['use'] != 'fly':
             return
         
@@ -263,11 +263,11 @@
         self.Refresh(False)
         
     def ComputeMxMy(self, x, y):
-        """!Compute values for flythrough navigation 
+        """Compute values for flythrough navigation 
         (ComputeFlyValues should follow). 
         
         Based on visualization/nviz/src/togl_flythrough.c.
-        @param x,y screen coordinates
+        :param x,y: screen coordinates
         """
         sx, sy = self.GetClientSizeTuple()
         dx = dy = 0.01
@@ -298,9 +298,9 @@
         return mx, my
         
     def ComputeFlyValues(self, mx, my):
-        """!Compute parameters for fly-through navigation
+        """Compute parameters for fly-through navigation
         
-        @param mx,my results from ComputeMxMy method
+        :param mx,my: results from ComputeMxMy method
         """
         self.fly['value'] = [0, 0, 0]
         
@@ -313,20 +313,20 @@
             self.fly['value'][2] = - my * 100.0 * self.fly['interval'] /1000.
     
     def ChangeFlySpeed(self, increase):
-        """!Increase/decrease flight spped"""
+        """Increase/decrease flight spped"""
         if increase:
             self.fly['flySpeed'] += self.fly['flySpeedStep']
         else:
             self.fly['flySpeed'] -= self.fly['flySpeedStep']
         
     def __del__(self):
-        """!Stop timers if running, unload data"""
+        """Stop timers if running, unload data"""
         self.StopTimer(self.timerAnim)
         self.StopTimer(self.timerFly)
         self.UnloadDataLayers(force = True)
     
     def StopTimer(self, timer):
-        """!Stop timer if running"""
+        """Stop timer if running"""
         if timer.IsRunning():
             timer.Stop()
             
@@ -335,18 +335,18 @@
         self.Bind(wx.EVT_MOTION,           self.OnMotion)
         
     def InitCPlanes(self):
-        """!Initialize cutting planes list"""
+        """Initialize cutting planes list"""
         for i in range(self._display.GetCPlanesCount()):
             cplane = copy.deepcopy(UserSettings.Get(group = 'nviz', key = 'cplane'))
             cplane['on'] = False
             self.cplanes.append(cplane)
         
     def SetToolWin(self, toolWin):
-        """!Sets reference to nviz toolwindow in layer manager"""
+        """Sets reference to nviz toolwindow in layer manager"""
         self.toolWin = toolWin
         
     def GetToolWin(self):
-        """!Returns reference to nviz toolwindow in layer manager"""
+        """Returns reference to nviz toolwindow in layer manager"""
         return self.toolWin
             
     def OnClose(self, event):
@@ -436,13 +436,13 @@
         self.UpdateMap()
         
     def DrawImages(self):
-        """!Draw overlay image"""
+        """Draw overlay image"""
         for texture in self.imagelist:
             if texture.IsActive():
                 texture.Draw()
             
     def GetLegendRect(self):
-        """!Estimates legend size for dragging"""
+        """Estimates legend size for dragging"""
         size = None
         if 0 in self.overlays:
             for param in self.overlays[0].cmd[1:]:
@@ -463,7 +463,7 @@
         return wx.Rect()        
         
     def DrawTextImage(self, textDict, relCoords):
-        """!Draw overlay text"""
+        """Draw overlay text"""
         bmp = wx.EmptyBitmap(textDict['bbox'][2], textDict['bbox'][3])
         memDC = wx.MemoryDC()
         memDC.SelectObject(bmp)
@@ -490,7 +490,7 @@
         return filename
         
     def UpdateOverlays(self):
-        """!Converts rendered overlay files and text labels to wx.Image
+        """Converts rendered overlay files and text labels to wx.Image
             and then to textures so that they can be rendered by OpenGL.
             Updates self.imagelist"""
         self.Map.ChangeMapSize(self.GetClientSize())
@@ -537,7 +537,7 @@
         self.Refresh()
             
     def CreateTexture(self, overlay = None, textId = None):
-        """!Create texture from overlay image or from textdict"""
+        """Create texture from overlay image or from textdict"""
         if overlay: # legend  
             texture = wxnviz.ImageTexture(filepath = overlay.mapfile, overlayId = overlay.id,
                                           coords = list(self.overlays[overlay.id].coords),
@@ -578,7 +578,7 @@
          return self.animation
          
     def OnKeyDown(self, event):
-        """!Key was pressed.
+        """Key was pressed.
         
         Used for fly-through mode.
         """
@@ -625,7 +625,7 @@
         event.Skip()
         
     def ProcessFlyByArrows(self, keyCode):
-        """!Process arrow key during fly-through"""
+        """Process arrow key during fly-through"""
         step = self.fly['arrowStep']
         if keyCode == wx.WXK_UP:
             self.fly['pos']['y'] -= step
@@ -637,7 +637,7 @@
             self.fly['pos']['x'] += step
             
     def OnKeyUp(self, event):
-        """!Key was released.
+        """Key was released.
         
         Used for fly-through mode.
         """
@@ -654,7 +654,7 @@
         event.Skip()
         
     def OnMouseAction(self, event):
-        """!Handle mouse events"""
+        """Handle mouse events"""
         # zoom with mouse wheel
         if event.GetWheelRotation() != 0:
             self.OnMouseWheel(event)
@@ -686,7 +686,7 @@
         event.Skip()
 
     def OnMouseWheel(self, event):
-        """!Change perspective"""
+        """Change perspective"""
         if UserSettings.Get(group = 'display',
                             key = 'mouseWheelZoom',
                             subkey = 'selection') == 2:
@@ -711,7 +711,7 @@
         ### self.parent.StatusbarUpdate()
             
     def OnLeftDown(self, event):
-        """!On left mouse down"""
+        """On left mouse down"""
         self.mouse['begin'] = event.GetPositionTuple()
         self.mouse['tmp'] = event.GetPositionTuple()
         if self.mouse['use'] == "lookHere":
@@ -771,12 +771,12 @@
         event.Skip()
             
     def Pixel2Cell(self, xyCoords):
-        """!Convert image coordinates to real word coordinates
+        """Convert image coordinates to real word coordinates
 
-        @param x, y image coordinates
+        :param xyCoords: image coordinates
         
-        @return easting, northing
-        @return None on error
+        :return: easting, northing
+        :return: None on error
         """
         size = self.GetClientSize()
         # UL -> LL
@@ -789,7 +789,7 @@
         return (x, y)
     
     def DoZoom(self, zoomtype, pos):
-        """!Change perspective and focus"""
+        """Change perspective and focus"""
         
         prev_value = self.view['persp']['value']
         if zoomtype > 0:
@@ -885,14 +885,14 @@
         event.Skip()
             
     def OnDClick(self, event):
-        """!On mouse double click"""
+        """On mouse double click"""
         if self.mouse['use'] != 'pointer': return
         pos = event.GetPositionTuple()
         self.dragid = self.FindObjects(pos[0], pos[1], self.hitradius)
         self.overlayActivated.emit(overlayId=self.dragid)
     
     def FocusPanning(self, event):
-        """!Simulation of panning using focus"""
+        """Simulation of panning using focus"""
         size = self.GetClientSizeTuple()
         id1, x1, y1, z1 = self._display.GetPointOnSurface(
                       self.mouse['tmp'][0], size[1] - self.mouse['tmp'][1])
@@ -914,7 +914,7 @@
             self.Refresh(False)
             
     def HorizontalPanning(self, event):
-        """!Move all layers in horizontal (x, y) direction.
+        """Move all layers in horizontal (x, y) direction.
         Currently not used.
         """
         size = self.GetClientSizeTuple()
@@ -960,7 +960,7 @@
             self.Refresh(False)
             
     def DragItem(self, id, coords):
-        """!Drag an overlay decoration item
+        """Drag an overlay decoration item
         """
         if id is None:
             return
@@ -979,7 +979,7 @@
         self.mouse['tmp'] = coords
         
     def ZoomBack(self):
-        """!Set previous view in history list
+        """Set previous view in history list
         """
         view = {}
         if len(self.viewhistory) > 1:
@@ -997,12 +997,12 @@
         self.Refresh(False)
 
     def ViewHistory(self, view, iview):
-        """!Manages a list of last 10 views
+        """Manages a list of last 10 views
         
-        @param view view dictionary
-        @param iview view dictionary (internal)
+        :param view: view dictionary
+        :param iview: view dictionary (internal)
         
-        @return removed history item if exists (or None)
+        :return: removed history item if exists (or None)
         """
         removed = None
         hview = copy.deepcopy(view)
@@ -1030,11 +1030,11 @@
         return removed     
     
     def ResetViewHistory(self):
-        """!Reset view history"""
+        """Reset view history"""
         self.viewhistory = list()
     
     def GoTo(self, e, n):
-        """!Focus on given point"""
+        """Focus on given point"""
         w = self.Map.region['w']
         s = self.Map.region['s']
         e -= w
@@ -1049,7 +1049,7 @@
         self.Refresh(False)
         
     def QuerySurface(self, x, y):
-        """!Query surface on given position"""
+        """Query surface on given position"""
         size = self.GetClientSizeTuple()
         result = self._display.QueryMap(x, size[1] - y)
         if result:
@@ -1091,16 +1091,16 @@
             self.log.WriteCmdLog('-' * 80)
     
     def PostViewEvent(self, zExag = False):
-        """!Change view settings"""
+        """Change view settings"""
         event = wxUpdateView(zExag = zExag)
         wx.PostEvent(self, event)
         
     def OnQueryVector(self, event):
-        """!Query vector on given position"""
+        """Query vector on given position"""
         self.parent.QueryVector(*event.GetPosition())
 
     def ChangeInnerView(self):
-        """!Get current viewdir and viewpoint and set view"""
+        """Get current viewdir and viewpoint and set view"""
         view = self.view
         iview = self.iview
         (view['position']['x'], view['position']['y'],
@@ -1111,7 +1111,7 @@
         iview['dir']['use'] = True
         
     def OnUpdateView(self, event):
-        """!Change view settings"""
+        """Change view settings"""
         if event:
                 self.UpdateView(zexag = event.zExag)
                 
@@ -1121,7 +1121,7 @@
             
             
     def UpdateView(self, zexag = False):
-        """!Change view settings"""
+        """Change view settings"""
         view = self.view
         iview = self.iview
         if zexag and 'value' in view['z-exag']:
@@ -1146,7 +1146,7 @@
                 self._display.ResetRotation()
         
     def UpdateLight(self, event):
-        """!Change light settings"""
+        """Change light settings"""
         data = self.light
         self._display.SetLight(x = data['position']['x'], y = data['position']['y'],
                                z = data['position']['z'] / 100., color = data['color'],
@@ -1157,10 +1157,11 @@
             self.Refresh(False)
         
     def UpdateMap(self, render = True):
-        """!Updates the canvas anytime there is a change to the
+        """Updates the canvas anytime there is a change to the
         underlaying images or to the geometry of the canvas.
         
-        @param render re-render map composition
+        :param render: re-render map composition
+        :type render: bool
         """
         start = time.clock()
         
@@ -1216,13 +1217,13 @@
                       (self.render['quick'], (stop-start)))
         
     def EraseMap(self):
-        """!Erase the canvas
+        """Erase the canvas
         """
         self._display.EraseMap()
         self.SwapBuffers()
     
     def _getDecorationSize(self):
-        """!Get initial size of north arrow/scalebar"""
+        """Get initial size of north arrow/scalebar"""
         size = self._display.GetLongDim() / 8.
         coef = 0.01
         if size < 1:
@@ -1249,7 +1250,7 @@
         self.lmgr.nviz.SetPage('decoration')
 
     def SetDrawScalebar(self, pos):
-        """!Add scale bar, sets properties and draw"""
+        """Add scale bar, sets properties and draw"""
         if len(self.decoration['scalebar']) == 0:
             self.decoration['scalebar'].append(
                     self.nvizDefault.SetDecorDefaultProp(type = 'scalebar')['scalebar'])
@@ -1270,9 +1271,9 @@
         self.lmgr.nviz.SetPage('decoration')
         
     def IsLoaded(self, item):
-        """!Check if layer (item) is already loaded
+        """Check if layer (item) is already loaded
         
-        @param item layer item
+        :param item: layer item
         """
         layer = self.tree.GetLayerInfo(item, key = 'maplayer')
         data = self.tree.GetLayerInfo(item, key = 'nviz')
@@ -1291,7 +1292,7 @@
         return 1
 
     def _GetDataLayers(self, item, litems):
-        """!Return get list of enabled map layers"""
+        """Return get list of enabled map layers"""
         # load raster & vector maps
         while item and item.IsOk():
             type = self.tree.GetLayerInfo(item, key = 'type')
@@ -1310,9 +1311,10 @@
             item = self.tree.GetNextSibling(item)
         
     def LoadDataLayers(self):
-        """!Load raster/vector from current layer tree
+        """Load raster/vector from current layer tree
         
-        @todo volumes
+        .. todo::
+            volumes
         """
         if not self.tree:
             return
@@ -1357,9 +1359,9 @@
         Debug.msg(1, "GLWindow.LoadDataLayers(): time = %f" % (stop-start))
                 
     def UnloadDataLayers(self, force = False):
-        """!Unload any layers that have been deleted from layer tree
+        """Unload any layers that have been deleted from layer tree
 
-        @param force True to unload all data layers
+        :param bool force: True to unload all data layers
         """
         if not self.tree:
             return
@@ -1406,7 +1408,7 @@
         Debug.msg(1, "GLWindow.UnloadDataLayers(): time = %f" % (stop-start))        
         
     def SetVectorSurface(self, data):
-        """!Set reference surfaces of vector"""
+        """Set reference surfaces of vector"""
         data['mode']['surface'] = {}
         data['mode']['surface']['value'] = list()
         data['mode']['surface']['show'] = list()
@@ -1415,10 +1417,10 @@
             data['mode']['surface']['show'].append(True)
         
     def SetVectorFromCmd(self, item, data):
-        """!Set 3D view properties from cmd (d.vect)
+        """Set 3D view properties from cmd (d.vect)
 
-        @param item Layer Tree item
-        @param nviz data
+        :param item: Layer Tree item
+        :param nviz: data
         """
         cmd = self.tree.GetLayerInfo(item, key = 'cmd')
         if cmd[0] != 'd.vect':
@@ -1435,14 +1437,14 @@
                 data['points']['color']['value'] = value
 
     def SetMapObjProperties(self, item, id, nvizType):
-        """!Set map object properties
+        """Set map object properties
         
         Properties must be afterwards updated by
         UpdateMapObjProperties().
         
-        @param item layer item
-        @param id nviz layer id (or -1)
-        @param nvizType nviz data type (surface, points, vector)
+        :param item: layer item
+        :param id: nviz layer id (or -1)
+        :param nvizType: nviz data type (surface, points, vector)
         """
         if nvizType != 'constant':
             mapType = self.tree.GetLayerInfo(item, key = 'maplayer').type
@@ -1518,23 +1520,23 @@
         return data
 
     def LoadRaster(self, item):
-        """!Load 2d raster map and set surface attributes
+        """Load 2d raster map and set surface attributes
         
-        @param layer item
+        :param layer: item
         """
         return self._loadRaster(item)
     
     def LoadRaster3d(self, item):
-        """!Load 3d raster map and set surface attributes
+        """Load 3d raster map and set surface attributes
         
-        @param layer item
+        :param layer: item
         """
         return self._loadRaster(item)
         
     def _loadRaster(self, item):
-        """!Load 2d/3d raster map and set its attributes
+        """Load 2d/3d raster map and set its attributes
         
-        @param layer item
+        :param layer: item
         """
         layer = self.tree.GetLayerInfo(item, key = 'maplayer')
         
@@ -1582,7 +1584,7 @@
         return id
     
     def NewConstant(self):
-        """!Create new constant"""
+        """Create new constant"""
         index = len(self.constants)
         try:
             name = self.constants[-1]['constant']['object']['name'] + 1
@@ -1595,7 +1597,7 @@
         return name
         
     def AddConstant(self, data, name):
-        """!Add new constant"""
+        """Add new constant"""
         id = self._display.AddConstant(value = data['constant']['value'], color = data['constant']['color'])
         self._display.SetSurfaceRes(id, data['constant']['resolution'], data['constant']['resolution'])
         data['constant']['object'] = { 'id' : id,
@@ -1603,13 +1605,13 @@
                                        'init' : False }
     
     def DeleteConstant(self, index):
-        """!Delete constant layer"""
+        """Delete constant layer"""
         id = self.constants[index]['constant']['object']['id']
         self._display.UnloadSurface(id)
         del self.constants[index]
     
     def SelectCPlane(self, index):
-        """!Select cutting plane"""
+        """Select cutting plane"""
         for plane in range (self._display.GetCPlanesCount()):
             if plane == index:
                 self._display.SelectCPlane(plane)
@@ -1623,11 +1625,11 @@
                     pass
                     
     def OnUpdateCPlane(self, event):
-        """!Change cutting plane settings"""
+        """Change cutting plane settings"""
         self.UpdateCPlane(event.current, event.update)
 
     def UpdateCPlane(self, index, changes):
-        """!Change cutting plane settings"""
+        """Change cutting plane settings"""
         for each in changes:
             if each == 'rotation':
                 self._display.SetCPlaneRotation(0, self.cplanes[index]['rotation']['tilt'],
@@ -1640,23 +1642,23 @@
                 self._display.SetFenceColor(self.cplanes[index]['shading'])
             
     def UnloadRaster(self, item):
-        """!Unload 2d raster map
+        """Unload 2d raster map
         
-        @param layer item
+        :param layer: item
         """
         return self._unloadRaster(item)
     
     def UnloadRaster3d(self, item):
-        """!Unload 3d raster map
+        """Unload 3d raster map
         
-        @param layer item
+        :param layer: item
         """
         return self._unloadRaster(item)
     
     def _unloadRaster(self, item):
-        """!Unload 2d/3d raster map
+        """Unload 2d/3d raster map
         
-        @param item layer item
+        :param item: layer item
         """
         layer = self.tree.GetLayerInfo(item, key = 'maplayer')
         
@@ -1706,12 +1708,12 @@
                 win.SetValue('')
         
     def LoadVector(self, item, points = None, append = True):
-        """!Load 2D or 3D vector map overlay
+        """Load 2D or 3D vector map overlay
         
-        @param item layer item
-        @param points True to load points, False to load lines, None
-        to load both
-        @param append append vector to layer list
+        :param item: layer item
+        :param points: True to load points, False to load lines, None
+                       to load both
+        :param bool append: append vector to layer list
         """
         layer = self.tree.GetLayerInfo(item, key = 'maplayer')
         if layer.type !=  'vector':
@@ -1761,11 +1763,12 @@
         return id
 
     def UnloadVector(self, item, points = None, remove = True):
-        """!Unload vector map overlay
+        """Unload vector map overlay
         
-        @param item layer item
-        @param points,lines True to unload given feature type
-        @param remove remove layer from list
+        :param item: layer item
+        :param points, lines: True to unload given feature type
+        :param remove: remove layer from list
+        :type remove: bool
         """
         layer = self.tree.GetLayerInfo(item, key = 'maplayer')
         data = self.tree.GetLayerInfo(item, key = 'nviz')['vector']
@@ -1807,7 +1810,7 @@
             self.layers.remove(item)
 
     def ResetView(self):
-        """!Reset to default view"""
+        """Reset to default view"""
         zexagOriginal, \
             self.iview['height']['value'], \
             self.iview['height']['min'], \
@@ -1852,7 +1855,7 @@
         self.PostViewEvent()
         
     def UpdateMapObjProperties(self, event):
-        """!Generic method to update data layer properties"""
+        """Generic method to update data layer properties"""
         data = event.data
         
         if 'surface' in data:
@@ -1885,7 +1888,7 @@
                     data['vector'][type]['object']['init'] = True
     
     def UpdateConstantProperties(self, id, data):
-        """!Update surface map object properties"""
+        """Update surface map object properties"""
         self._display.SetSurfaceColor(id = id, map = False, value = data['color'])
         self._display.SetSurfaceTopo(id = id, map = False, value = data['value'])
         self._display.SetSurfaceRes(id, data['resolution'], data['resolution'])
@@ -1895,7 +1898,7 @@
             self._display.SetSurfaceTransp(id, map = False, value = data['transp'])
             
     def UpdateSurfaceProperties(self, id, data):
-        """!Update surface map object properties"""
+        """Update surface map object properties"""
         # surface attributes
         for attrb in ('color', 'mask',
                      'transp', 'shine'):
@@ -1975,7 +1978,7 @@
         data['draw']['all'] = False
         
     def UpdateVolumeProperties(self, id, data, isosurfId = None):
-        """!Update volume (isosurface/slice) map object properties"""
+        """Update volume (isosurface/slice) map object properties"""
         if 'update' in data['draw']['resolution']:
             if data['draw']['mode']['value'] == 0:
                 self._display.SetIsosurfaceRes(id, data['draw']['resolution']['isosurface']['value'])
@@ -2064,11 +2067,11 @@
             data['position'].pop('update')
             
     def UpdateVectorProperties(self, id, data, type):
-        """!Update vector layer properties
+        """Update vector layer properties
         
-        @param id layer id
-        @param data properties
-        @param type lines/points
+        :param id: layer id
+        :param data: properties
+        :param type: lines/points
         """
         if type ==  'points':
             self.UpdateVectorPointsProperties(id, data[type])
@@ -2076,7 +2079,7 @@
             self.UpdateVectorLinesProperties(id, data[type])
         
     def UpdateVectorLinesProperties(self, id, data):
-        """!Update vector line map object properties"""
+        """Update vector line map object properties"""
         # mode
         if 'update' in data['color'] or \
                 'update' in data['width'] or \
@@ -2139,7 +2142,7 @@
                 data['mode'].pop('update')
         
     def UpdateVectorPointsProperties(self, id, data):
-        """!Update vector point map object properties"""
+        """Update vector point map object properties"""
         if 'update' in data['size'] or \
                 'update' in data['width'] or \
                 'update' in data['marker'] or \
@@ -2206,7 +2209,7 @@
             data['mode'].pop('update')
             
     def GetLayerNames(self, type):
-        """!Return list of map layer names of given type"""
+        """Return list of map layer names of given type"""
         layerName = []
         
         if type == 'constant':
@@ -2223,7 +2226,7 @@
         return layerName
     
     def GetLayerId(self, type, name, vsubtyp = None):
-        """!Get layer object id or -1"""
+        """Get layer object id or -1"""
         if len(name) < 1:
             return -1
         
@@ -2256,7 +2259,7 @@
         return -1
     
     def ReloadLayersData(self):
-        """!Delete nviz data of all loaded layers and reload them from current settings"""
+        """Delete nviz data of all loaded layers and reload them from current settings"""
         for item in self.layers:
             type = self.tree.GetLayerInfo(item, key = 'type')
             layer = self.tree.GetLayerInfo(item, key = 'maplayer')
@@ -2272,7 +2275,7 @@
                     self.nvizDefault.SetVectorLinesDefaultProp(data['vector']['lines'])
             
     def NvizCmdCommand(self):
-        """!Generate command for m.nviz.image according to current state"""
+        """Generate command for m.nviz.image according to current state"""
         cmd = 'm.nviz.image '
         
         rasters = []
@@ -2550,18 +2553,19 @@
         return cmd
     
     def OnNvizCmd(self):
-        """!Generate and write command to command output"""
+        """Generate and write command to command output"""
         self.log.WriteLog(self.NvizCmdCommand(), notification=Notification.RAISE_WINDOW)
         
     def SaveToFile(self, FileName, FileType, width, height):
-        """!This draws the DC to a buffer that can be saved to a file.
+        """This draws the DC to a buffer that can be saved to a file.
         
-        @todo fix BufferedPaintDC
+        .. todo::
+            fix BufferedPaintDC
         
-        @param FileName file name
-        @param FileType type of bitmap
-        @param width image width
-        @param height image height
+        :param filename: file name
+        :param FileType: type of bitmap
+        :param width: image width
+        :param height: image height
         """
         self._display.SaveToFile(FileName, width, height, FileType)
                 
@@ -2574,27 +2578,27 @@
         # self.SwapBuffers()
         
     def GetDisplay(self):
-        """!Get display instance"""
+        """Get display instance"""
         return self._display
         
     def ZoomToMap(self, layers):
-        """!Reset view
+        """Reset view
         
-        @param layers so far unused
+        :param layers: so far unused
         """
         self.lmgr.nviz.OnResetView(None)
         
     def TextBounds(self, textinfo):
-        """!Return text boundary data
+        """Return text boundary data
         
-        @param textinfo text metadata (text, font, color, rotation)
+        :param textinfo: text metadata (text, font, color, rotation)
         """
         return self.parent.MapWindow2D.TextBounds(textinfo, relcoords = True)
 
     def DisactivateWin(self):
-        """!Use when the class instance is hidden in MapFrame."""
+        """Use when the class instance is hidden in MapFrame."""
         pass
 
     def ActivateWin(self):
-        """!Used when the class instance is activated in MapFrame."""
+        """Used when the class instance is activated in MapFrame."""
         pass

Modified: grass/trunk/gui/wxpython/nviz/preferences.py
===================================================================
--- grass/trunk/gui/wxpython/nviz/preferences.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/nviz/preferences.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -28,7 +28,7 @@
 from gui_core.preferences import PreferencesBaseDialog
 
 class NvizPreferencesDialog(PreferencesBaseDialog):
-    """!Nviz preferences dialog"""
+    """Nviz preferences dialog"""
     def __init__(self, parent, giface, title = _("3D view default settings"),
                  settings = UserSettings):
         PreferencesBaseDialog.__init__(self, parent = parent, title = title, giface = giface,
@@ -49,7 +49,7 @@
         self.btnDefault.SetToolTipString(_("Revert settings to default, changes are not applied"))
         
     def _createViewPage(self, notebook):
-        """!Create notebook page for view settings"""
+        """Create notebook page for view settings"""
         panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
         
         notebook.AddPage(page = panel,
@@ -198,7 +198,7 @@
         return panel
         
     def _createFlyPage(self, notebook):
-        """!Create notebook page for view settings"""
+        """Create notebook page for view settings"""
         panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
         
         notebook.AddPage(page = panel,
@@ -246,7 +246,7 @@
         return panel
         
     def _createLightPage(self, notebook):
-        """!Create notebook page for light settings"""
+        """Create notebook page for light settings"""
         panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
         
         notebook.AddPage(page = panel,
@@ -354,7 +354,7 @@
         return panel
     
     def _createSurfacePage(self, notebook):
-        """!Create notebook page for surface settings"""
+        """Create notebook page for surface settings"""
         panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
         
         notebook.AddPage(page = panel,
@@ -456,7 +456,7 @@
         return panel
     
     def _createVectorPage(self, notebook):
-        """!Create notebook page for vector settings"""
+        """Create notebook page for vector settings"""
         panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
         
         notebook.AddPage(page = panel,
@@ -564,7 +564,7 @@
         return panel
 
     def OnDefault(self, event):
-        """!Button 'Set to default' pressed"""
+        """Button 'Set to default' pressed"""
         self.settings.userSettings = copy.deepcopy(self.settings.defaultSettings)
         
         # update widgets
@@ -615,7 +615,7 @@
         
         
     def OnSave(self, event):
-        """!Save button pressed
+        """Save button pressed
         
         Apply changes and save settings to configuration file
         """

Modified: grass/trunk/gui/wxpython/nviz/tools.py
===================================================================
--- grass/trunk/gui/wxpython/nviz/tools.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/nviz/tools.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package nviz.tools
 
 @brief Nviz (3D view) tools window
@@ -62,7 +62,7 @@
     pass
 
 class NvizToolWindow(FN.FlatNotebook):
-    """!Nviz (3D view) tools panel
+    """Nviz (3D view) tools panel
     """
     def __init__(self, parent, display, id = wx.ID_ANY,
                  style = globalvar.FNPageStyle|FN.FNB_NO_X_BUTTON,
@@ -127,7 +127,7 @@
         wx.CallAfter(self.SetInitialMaps)
         
     def SetInitialMaps(self):
-        """!Set initial raster and vector map"""
+        """Set initial raster and vector map"""
         for ltype in ('raster', 'vector', '3d-raster'):
             selectedLayer = self.parent.GetLayerTree().GetSelectedLayer(multi = False, checkedOnly = True)
             if selectedLayer is None:
@@ -164,7 +164,7 @@
             self.mapWindow.fly['exag'] = kwargs['fly']['exag']
     
     def LoadSettings(self):
-        """!Load Nviz settings and apply to current session"""
+        """Load Nviz settings and apply to current session"""
         view = copy.deepcopy(UserSettings.Get(group = 'nviz', key = 'view')) # copy
         light = copy.deepcopy(UserSettings.Get(group = 'nviz', key = 'light')) # copy
         fly = copy.deepcopy(UserSettings.Get(group = 'nviz', key = 'fly')) # copy
@@ -184,30 +184,30 @@
         # self.ChangeSelection(new)
         
     def PostViewEvent(self, zExag = False):
-        """!Change view settings"""
+        """Change view settings"""
         event = wxUpdateView(zExag = zExag)
         wx.PostEvent(self.mapWindow, event)
         
     def PostLightEvent(self, refresh = False): 
-        """!Change light settings"""   
+        """Change light settings""" 
         event = wxUpdateLight(refresh = refresh)
         wx.PostEvent(self.mapWindow, event)
         
     def OnSize(self, event):
-        """!After window is resized, update scrolling"""
+        """After window is resized, update scrolling"""
         # workaround to resize captionbars of foldpanelbar
         wx.CallAfter(self.UpdateScrolling, (self.foldpanelData, self.foldpanelAppear,
                                             self.foldpanelAnalysis)) 
         event.Skip()
            
     def OnPressCaption(self, event):
-        """!When foldpanel item collapsed/expanded, update scrollbars"""
+        """When foldpanel item collapsed/expanded, update scrollbars"""
         foldpanel = event.GetBar().GetGrandParent().GetParent()
         wx.CallAfter(self.UpdateScrolling, (foldpanel,))
         event.Skip()
         
     def UpdateScrolling(self, foldpanels):
-        """!Update scrollbars in foldpanel"""
+        """Update scrollbars in foldpanel"""
         for foldpanel in foldpanels:
             length = foldpanel.GetPanelsLength(collapsed = 0, expanded = 0)
             # virtual width is set to fixed value to suppress GTK warning
@@ -215,7 +215,7 @@
             foldpanel.GetParent().Layout()
         
     def _createViewPage(self):
-        """!Create view settings page"""
+        """Create view settings page"""
         panel = SP.ScrolledPanel(parent = self, id = wx.ID_ANY)
         panel.SetupScrolling(scroll_x = False)
         self.page['view'] = { 'id' : 0,
@@ -374,7 +374,7 @@
         return panel
         
     def _createAnimationPage(self):
-        """!Create view settings page"""
+        """Create view settings page"""
         panel = SP.ScrolledPanel(parent = self, id = wx.ID_ANY)
         panel.SetupScrolling(scroll_x = False)
         self.page['animation'] = { 'id' : 0,
@@ -521,7 +521,7 @@
         return panel
         
     def _createDataPage(self):
-        """!Create data (surface, vector, volume) settings page"""
+        """Create data (surface, vector, volume) settings page"""
 
         self.mainPanelData = ScrolledPanel(parent = self)
         self.mainPanelData.SetupScrolling(scroll_x = False)
@@ -577,7 +577,7 @@
         
         
     def _createAppearancePage(self):
-        """!Create data (surface, vector, volume) settings page"""
+        """Create data (surface, vector, volume) settings page"""
         self.mainPanelAppear = ScrolledPanel(parent = self)
         self.mainPanelAppear.SetupScrolling(scroll_x = False)
         
@@ -620,7 +620,7 @@
         return self.mainPanelAppear
     
     def _createAnalysisPage(self):
-        """!Create data analysis (cutting planes, ...) page"""
+        """Create data analysis (cutting planes, ...) page"""
         self.mainPanelAnalysis = ScrolledPanel(parent = self)
         self.mainPanelAnalysis.SetupScrolling(scroll_x = False)
         self.foldpanelAnalysis = fpb.FoldPanelBar(parent = self.mainPanelAnalysis, id = wx.ID_ANY,
@@ -639,7 +639,7 @@
         return self.mainPanelAnalysis
         
     def _createSurfacePage(self, parent):
-        """!Create view settings page"""
+        """Create view settings page"""
         panel = wx.Panel(parent = parent, id = wx.ID_ANY)
         self.page['surface'] = { 'id' : 0,
                                  'notebook' : self.foldpanelData.GetId() }
@@ -930,7 +930,7 @@
         
         return panel
     def _createCPlanePage(self, parent):
-        """!Create cutting planes page"""  
+        """Create cutting planes page"""
         panel = wx.Panel(parent = parent, id = wx.ID_ANY)
         self.page['cplane'] = { 'id' : 4, 
                                 'notebook' : self.foldpanelData.GetId() }
@@ -1071,7 +1071,7 @@
         return panel
         
     def _createConstantPage(self, parent):
-        """!Create constant page"""
+        """Create constant page"""
         panel = wx.Panel(parent = parent, id = wx.ID_ANY)
         self.page['constant'] = { 'id' : 1, 
                                 'notebook' : self.foldpanelData.GetId() }
@@ -1164,7 +1164,7 @@
         return panel
         
     def _createVectorPage(self, parent):
-        """!Create view settings page"""
+        """Create view settings page"""
         panel = wx.Panel(parent = parent, id = wx.ID_ANY)
         self.page['vector'] = { 'id' : 2,
                                 'notebook' : self.foldpanelData.GetId() }
@@ -1516,7 +1516,7 @@
         return maps, exclude
     
     def _createVolumePage(self, parent):
-        """!Create view settings page"""
+        """Create view settings page"""
         panel = wx.Panel(parent = parent, id = wx.ID_ANY)
         self.page['volume'] = { 'id' : 3,
                                 'notebook' : self.foldpanelData.GetId() }
@@ -1719,7 +1719,7 @@
        
         
     def _createLightPage(self, parent):
-        """!Create light page"""
+        """Create light page"""
         panel = wx.Panel(parent = parent, id = wx.ID_ANY)
         
         self.page['light'] = { 'id' : 0, 
@@ -1845,7 +1845,7 @@
         return panel
 
     def _createFringePage(self, parent):
-        """!Create fringe page"""
+        """Create fringe page"""
         panel = wx.Panel(parent = parent, id = wx.ID_ANY)
         
         self.page['fringe'] = { 'id' : 1,
@@ -1931,7 +1931,7 @@
         return panel
     
     def _createDecorationPage(self, parent):
-        """!Create decoration (north arrow, scalebar, legend) page"""
+        """Create decoration (north arrow, scalebar, legend) page"""
         panel = wx.Panel(parent = parent, id = wx.ID_ANY)
         
         self.page['decoration'] = { 'id' : 2,
@@ -2039,7 +2039,7 @@
         return panel
     
     def GetLayerData(self, nvizType, nameOnly = False):
-        """!Get nviz data"""
+        """Get nviz data"""
         name = self.FindWindowById(self.win[nvizType]['map']).GetValue()
         if nameOnly:
             return name
@@ -2054,10 +2054,10 @@
         return None
 
     def _getMapLayerByName(self, name, mapType):
-        """!Get layer (render.Layer) by name and type.
+        """Get layer (render.Layer) by name and type.
 
-        @param name layer name
-        @param mapType map type (raster, vector, 3d-raster)
+        :param name: layer name
+        :param mapType: map type (raster, vector, 3d-raster)
         """
         layers = self.mapWindow.Map.GetListOfLayers(ltype = mapType, name = name)
         if layers:
@@ -2065,10 +2065,10 @@
         return None
 
     def _getLayerPropertiesByName(self, name, mapType):
-        """!Get nviz properties stored in layertree items by name and type.
+        """Get nviz properties stored in layertree items by name and type.
 
-        @param name layer name
-        @param mapType map type (raster, vector, 3d-raster)
+        :param name: layer name
+        :param mapType: map type (raster, vector, 3d-raster)
         """
         tree = self.parent.GetLayerTree()
         items = tree.FindItemByData(key = 'name', value = name)
@@ -2080,7 +2080,7 @@
         return None
 
     def OnRecord(self, event):
-        """!Animation: start recording"""
+        """Animation: start recording"""
         anim = self.mapWindow.GetAnimation()
         if not anim.IsPaused():
             if anim.Exists() and not anim.IsSaved():
@@ -2110,7 +2110,7 @@
         self.FindWindowById(self.win['anim']['frameIndex']['text']).Disable()
         
     def OnPlay(self, event):
-        """!Animation: replay"""
+        """Animation: replay"""
         anim = self.mapWindow.GetAnimation()
         anim.SetPause(False)
         anim.SetMode(mode = 'play')
@@ -2124,7 +2124,7 @@
         self.FindWindowById(self.win['anim']['frameIndex']['text']).Enable()
         
     def OnStop(self, event):
-        """!Animation: stop recording/replaying"""
+        """Animation: stop recording/replaying"""
         anim = self.mapWindow.GetAnimation()
         anim.SetPause(False)
         if anim.GetMode() == 'save':
@@ -2142,7 +2142,7 @@
         self.FindWindowById(self.win['anim']['frameIndex']['text']).Disable()
         
     def OnPause(self, event):
-        """!Pause animation"""
+        """Pause animation"""
         anim = self.mapWindow.GetAnimation()
         
         anim.SetPause(True)
@@ -2166,22 +2166,22 @@
 
         
     def OnFrameIndex(self, event):
-        """!Frame index changed (by slider)"""
+        """Frame index changed (by slider)"""
         index = event.GetInt()
         self.UpdateFrameIndex(index = index, sliderWidget = False)
         
     def OnFrameIndexText(self, event):
-        """!Frame index changed by (textCtrl)"""
+        """Frame index changed by (textCtrl)"""
         index = event.GetValue()
         self.UpdateFrameIndex(index = index, textWidget = False)
         
     def OnFPS(self, event):
-        """!Frames per second changed"""
+        """Frames per second changed"""
         anim = self.mapWindow.GetAnimation()
         anim.SetFPS(event.GetInt())
         
     def UpdateFrameIndex(self, index, sliderWidget = True, textWidget = True, goToFrame = True):
-        """!Update frame index"""
+        """Update frame index"""
         anim = self.mapWindow.GetAnimation()
         
         # check index
@@ -2203,13 +2203,13 @@
             anim.GoToFrame(int(index))
             
     def UpdateFrameCount(self):
-        """!Update frame count label"""
+        """Update frame count label"""
         anim = self.mapWindow.GetAnimation()
         count = anim.GetFrameCount()
         self.FindWindowById(self.win['anim']['info']).SetLabel(str(count))
         
     def OnAnimationFinished(self, mode):
-        """!Animation finished"""
+        """Animation finished"""
         anim = self.mapWindow.GetAnimation()
         self.UpdateFrameIndex(index = 0)
         
@@ -2233,14 +2233,14 @@
         self.mapWindow.Refresh(False)
         
     def OnAnimationUpdateIndex(self, index, mode):
-        """!Animation: frame index changed"""
+        """Animation: frame index changed"""
         if mode == 'record':
             self.UpdateFrameCount()
         elif mode == 'play':
             self.UpdateFrameIndex(index = index, goToFrame = False)
         
     def OnSaveAnimation(self, event):
-        """!Save animation as a sequence of images"""
+        """Save animation as a sequence of images"""
         anim = self.mapWindow.GetAnimation()
         
         prefix = self.FindWindowById(self.win['anim']['save']['image']['prefix']).GetValue()
@@ -2268,7 +2268,7 @@
         anim.SaveAnimationFile(path = dir, prefix = prefix, format = format)
         
     def OnNewConstant(self, event):
-        """!Create new surface with constant value"""
+        """Create new surface with constant value"""
         #TODO settings
         name = self.mapWindow.NewConstant()
         win = self.FindWindowById(self.win['constant']['surface'])
@@ -2289,7 +2289,7 @@
                 
 
     def OnDeleteConstant(self, event):
-        """!Delete selected constant surface"""
+        """Delete selected constant surface"""
         layerIdx = self.FindWindowById(self.win['constant']['surface']).GetSelection()
         if layerIdx == wx.NOT_FOUND:
             return
@@ -2313,7 +2313,7 @@
             self.mapWindow.Refresh(False)
     
     def OnConstantSelection(self, event):
-        """!Constant selected"""
+        """Constant selected"""
         layerIdx = self.FindWindowById(self.win['constant']['surface']).GetSelection()
         if layerIdx == wx.NOT_FOUND:
             return
@@ -2328,7 +2328,7 @@
                 self.FindWindowById(self.win['constant'][attr]).SetValue(value)
         
     def OnSetConstantProp(self, event):
-        """!Change properties (color, value, resolution)
+        """Change properties (color, value, resolution)
             of currently selected constant surface"""
         layerIdx = self.FindWindowById(self.win['constant']['surface']).GetSelection()
         if layerIdx == wx.NOT_FOUND:
@@ -2347,7 +2347,7 @@
             self.mapWindow.Refresh(False)
         
     def OnFringe(self, event):
-        """!Show/hide fringe"""
+        """Show/hide fringe"""
         data = self.GetLayerData('fringe')['surface']
         
         sid = data['object']['id']
@@ -2362,7 +2362,7 @@
         self.mapWindow.Refresh(False)
         
     def OnScroll(self, event, win, data):
-        """!Generic scrolling handler"""
+        """Generic scrolling handler"""
         winName = self.__GetWindowName(win, event.GetId())
         if not winName:
             return
@@ -2593,7 +2593,7 @@
     
     def _createControl(self, parent, data, name, range, tooltip = None, bind = (None, None, None),
                        sliderHor = True, size = 200, floatSlider = False):
-        """!Add control (Slider + TextCtrl)"""
+        """Add control (Slider + TextCtrl)"""
         data[name] = dict()
         if sliderHor:
             style = wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | \
@@ -2636,7 +2636,7 @@
         data[name]['text'] = text.GetId()
         
     def _createCompass(self, panel, sizer, type):
-        """!Create 'compass' widget for light and view page"""
+        """Create 'compass' widget for light and view page"""
         w = wx.Button(panel, id = wx.ID_ANY, label = _("W"))
         n = wx.Button(panel, id = wx.ID_ANY, label = _("N"))
         s = wx.Button(panel, id = wx.ID_ANY, label = _("S"))
@@ -2678,7 +2678,7 @@
         return None
 
     def UpdateSettings(self):
-        """!Update view from settings values 
+        """Update view from settings values 
         stored in self.mapWindow.view dictionary"""
         for control in ('height',
                         'persp',
@@ -2711,12 +2711,12 @@
         self.mapWindow.Refresh(True)
         
     def OnShowLightModel(self, event):
-        """!Show light model"""
+        """Show light model"""
         self._display.showLight = event.IsChecked()
         self._display.DrawLightingModel()
         
     def OnLightChange(self, event):
-        """!Position of the light changing"""
+        """Position of the light changing"""
         winName = self.__GetWindowName(self.win['light'], event.GetId())
         if not winName:
             return
@@ -2732,11 +2732,11 @@
         event.Skip()
         
     def OnLightChanged(self, event):
-        """!Light changed"""
+        """Light changed"""
         self.PostLightEvent(refresh = True)
         
     def OnLightColor(self, event):
-        """!Color of the light changed"""
+        """Color of the light changed"""
         self.mapWindow.light['color'] = tuple(event.GetValue())
         
         self.PostLightEvent(refresh = True)
@@ -2744,7 +2744,7 @@
         event.Skip()
         
     def OnLightValue(self, event):
-        """!Light brightness/ambient changing"""
+        """Light brightness/ambient changing"""
         data = self.mapWindow.light
         self.OnScroll(event, self.win['light'], data)
         
@@ -2752,7 +2752,7 @@
         event.Skip()
         
     def OnBgColor(self, event):
-        """!Background color changed"""
+        """Background color changed"""
         color = event.GetValue()
         self.mapWindow.view['background']['color'] = tuple(color)
         color = str(color[0]) + ':' + str(color[1]) + ':' + str(color[2])
@@ -2762,7 +2762,7 @@
             self.mapWindow.Refresh(False)
         
     def OnSetSurface(self, event):
-        """!Surface selected, currently used for fringes"""
+        """Surface selected, currently used for fringes"""
         name = event.GetString()
         try:
             data = self._getLayerPropertiesByName(name, mapType = 'raster')['surface']
@@ -2774,7 +2774,7 @@
         self.EnablePage('fringe', True)
         
     def OnSetRaster(self, event):
-        """!Raster map selected, update surface page"""
+        """Raster map selected, update surface page"""
         name = event.GetString()
         try:
             data = self._getLayerPropertiesByName(name, mapType = 'raster')['surface']
@@ -2787,7 +2787,7 @@
         self.UpdateSurfacePage(layer, data, updateName = False)
         
     def OnSetVector(self, event):
-        """!Vector map selected, update properties page"""
+        """Vector map selected, update properties page"""
         name = event.GetString()
         try:
             data = self._getLayerPropertiesByName(name, mapType = 'vector')['vector']
@@ -2799,7 +2799,7 @@
         self.UpdateVectorPage(layer, data, updateName = False)
 
     def OnSetRaster3D(self, event):
-        """!3D Raster map selected, update surface page"""
+        """3D Raster map selected, update surface page"""
         name = event.GetString()
         try:
             data = self._getLayerPropertiesByName(name, mapType = '3d-raster')['volume']
@@ -2812,7 +2812,7 @@
         self.UpdateVolumePage(layer, data, updateName = False)
         
     def OnViewChange(self, event):
-        """!Change view, render in quick mode"""
+        """Change view, render in quick mode"""
         # find control
         winName = self.__GetWindowName(self.win['view'], event.GetId())
         if not winName:
@@ -2854,7 +2854,7 @@
         event.Skip()
         
     def OnViewChanged(self, event):
-        """!View changed, render in full resolution"""
+        """View changed, render in full resolution"""
         self.mapWindow.render['quick'] = False
         self.mapWindow.Refresh(False)
         self.UpdateSettings()
@@ -2864,7 +2864,7 @@
             pass
             
     def OnViewChangedText(self, event):
-        """!View changed, render in full resolution""" 
+        """View changed, render in full resolution"""
         self.mapWindow.render['quick'] = False
         self.OnViewChange(event)
         self.OnViewChanged(None)
@@ -2873,7 +2873,7 @@
         event.Skip()
     
     def OnLookAt(self, event):
-        """!Look here/center"""
+        """Look here/center"""
         name = self.FindWindowById(event.GetId()).GetName()
         if name == 'center':
             self._display.LookAtCenter()
@@ -2897,13 +2897,13 @@
                 self.mapWindow.SetNamedCursor('default')
             
     def OnResetView(self, event):
-        """!Reset to default view (view page)"""
+        """Reset to default view (view page)"""
         self.mapWindow.ResetView()
         self.UpdateSettings()
         self.mapWindow.Refresh(False)
         
     def OnResetSurfacePosition(self, event):
-        """!Reset position of surface"""
+        """Reset position of surface"""
         
         for win in self.win['surface']['position'].itervalues():
             if win == self.win['surface']['position']['axis']:
@@ -2926,7 +2926,7 @@
             self.mapWindow.Refresh(False)
             
     def OnLookFrom(self, event):
-        """!Position of view/light changed by buttons"""
+        """Position of view/light changed by buttons"""
         name = self.FindWindowById(event.GetId()).GetName()
         buttonName = name.split('_')[1]
         if name.split('_')[0] == 'view':
@@ -2974,7 +2974,7 @@
         self.mapWindow.Refresh(False)
 
     def OnMapObjUse(self, event):
-        """!Set surface attribute -- use -- map/constant"""
+        """Set surface attribute -- use -- map/constant"""
         if not self.mapWindow.init:
             return
         
@@ -3031,7 +3031,7 @@
             self.mapWindow.Refresh(False)
  
     def EnablePage(self, name, enabled = True):
-        """!Enable/disable all widgets on page"""
+        """Enable/disable all widgets on page"""
         for key, item in self.win[name].iteritems():
             if key in ('map', 'surface', 'new','planes'):
                 continue
@@ -3049,7 +3049,7 @@
                     self.FindWindowById(item).Enable(enabled)
         
     def SetMapObjUseMap(self, nvizType, attrb, map = None):
-        """!Update dialog widgets when attribute type changed"""
+        """Update dialog widgets when attribute type changed"""
         if attrb in ('topo', 'color', 'shine'):
             incSel = -1 # decrement selection (no 'unset')
         else:
@@ -3076,14 +3076,14 @@
             
         
     def OnSurfaceMap(self, event):
-        """!Set surface attribute"""
+        """Set surface attribute"""
         if self.vetoGSelectEvt:
             self.vetoGSelectEvt = False
             return
         self.SetMapObjAttrb(nvizType = 'surface', winId = event.GetId())
         
     def SetMapObjAttrb(self, nvizType, winId):
-        """!Set map object (surface/isosurface) attribute (map/constant)"""
+        """Set map object (surface/isosurface) attribute (map/constant)"""
         if not self.mapWindow.init:
             return
         
@@ -3144,7 +3144,7 @@
                 self.mapWindow.Refresh(False)
         
     def OnSurfaceResolution(self, event):
-        """!Draw resolution changed"""
+        """Draw resolution changed"""
         self.SetSurfaceResolution()
         
         if self.mapDisplay.IsAutoRendered():
@@ -3152,7 +3152,7 @@
     
 
     def SetSurfaceResolution(self):
-        """!Set draw resolution"""
+        """Set draw resolution"""
         coarse = self.FindWindowById(self.win['surface']['draw']['res-coarse']).GetValue()
         fine = self.FindWindowById(self.win['surface']['draw']['res-fine']).GetValue()
         
@@ -3166,7 +3166,7 @@
         wx.PostEvent(self.mapWindow, event)
         
     def SetSurfaceMode(self):
-        """!Set draw mode"""
+        """Set draw mode"""
         mode = self.FindWindowById(self.win['surface']['draw']['mode']).GetSelection()
         style = self.FindWindowById(self.win['surface']['draw']['style']).GetSelection()
         if style == 0: # wire
@@ -3181,7 +3181,7 @@
         return value, desc
 
     def OnSurfaceMode(self, event):
-        """!Set draw mode"""
+        """Set draw mode"""
         value, desc = self.SetSurfaceMode()
         
         data = self.GetLayerData('surface')
@@ -3197,7 +3197,7 @@
             self.mapWindow.Refresh(False)
 
     def OnSurfaceModeAll(self, event):
-        """!Set draw mode (including wire color) for all loaded surfaces"""
+        """Set draw mode (including wire color) for all loaded surfaces"""
         value, desc = self.SetSurfaceMode()
         coarse = self.FindWindowById(self.win['surface']['draw']['res-coarse']).GetValue()
         fine = self.FindWindowById(self.win['surface']['draw']['res-fine']).GetValue()
@@ -3228,26 +3228,26 @@
             self.mapWindow.Refresh(False)
         
     def _getColorString(self, color):
-        """!Convert color tuple to R:G:B format
+        """Convert color tuple to R:G:B format
 
-        @param color tuple
+        :param color: tuple
         
-        @return string R:G:B
+        :return: string R:G:B
         """
         return str(color[0]) + ':' + str(color[1]) + ':' + str(color[2])
     
     def _getColorFromString(self, color, delim = ':'):
-        """!Convert color string (R:G:B) to wx.Colour
+        """Convert color string (R:G:B) to wx.Colour
 
-        @param color string
-        @param delim delimiter
+        :param color: string
+        :param delim: delimiter
 
-        @return wx.Colour instance
+        :return: wx.Colour instance
         """
         return wx.Colour(*map(int, color.split(delim)))
     
     def _get3dRange(self, name):
-        """!Gelper func for getting range of 3d map"""
+        """Gelper func for getting range of 3d map"""
         ret = RunCommand('r3.info', read = True, flags = 'r', map = name)
         if ret:
             range = []
@@ -3258,7 +3258,7 @@
         return -1e6, 1e6
     
     def _getPercent(self, value, toPercent = True):
-        """!Convert values 0 - 255 to percents and vice versa"""
+        """Convert values 0 - 255 to percents and vice versa"""
         value = int(value)
         if toPercent:
             value = int(value/255. * 100)
@@ -3267,7 +3267,7 @@
         return value
     
     def OnSurfaceWireColor(self, event):
-        """!Set wire color"""
+        """Set wire color"""
         data = self.GetLayerData('surface')
         value = self._getColorString(event.GetValue())
         data['surface']['draw']['wire-color'] = { 'value' : value,
@@ -3281,7 +3281,7 @@
             self.mapWindow.Refresh(False)
         
     def OnSurfaceAxis(self, event):
-        """!Surface position, axis changed"""
+        """Surface position, axis changed"""
         data = self.GetLayerData('surface')
         id = data['surface']['object']['id']
         
@@ -3308,7 +3308,7 @@
             text.SetValue(z)
         
     def OnSurfacePosition(self, event):
-        """!Surface position"""
+        """Surface position"""
         winName = self.__GetWindowName(self.win['surface'], event.GetId())
         if not winName:
             return
@@ -3351,19 +3351,19 @@
         #        self.UpdatePage('surface')
         
     def OnSurfacePositionChanged(self, event):
-        """!Surface position changed"""
+        """Surface position changed"""
         self.mapWindow.render['quick'] = False
         self.mapWindow.Refresh(False)
 
     def OnSurfacePositionText(self, event):
-        """!Surface position changed by textctrl"""
+        """Surface position changed by textctrl"""
         self.OnSurfacePosition(event)
         self.OnSurfacePositionChanged(None)
         
     def UpdateVectorShow(self, vecType, enabled):
-        """!Enable/disable lines/points widgets
+        """Enable/disable lines/points widgets
         
-        @param vecType vector type (lines, points)
+        :param vecType: vector type (lines, points)
         """
         if vecType != 'lines' and vecType != 'points':
             return False
@@ -3386,7 +3386,7 @@
         return True
     
     def OnVectorShow(self, event):
-        """!Show vector lines/points"""
+        """Show vector lines/points"""
         winId = event.GetId()
         if winId == self.win['vector']['lines']['show']:
             vecType = 'lines'
@@ -3429,7 +3429,7 @@
         event.Skip()
     
     def OnVectorLinesMode(self, event):
-        """!Display vector lines on surface/flat"""
+        """Display vector lines on surface/flat"""
         rasters = self.mapWindow.GetLayerNames('raster')
         if event.GetSelection() == 0: # surface
             if len(rasters) < 1:
@@ -3451,7 +3451,7 @@
         event.Skip()
 
     def OnVectorLines(self, event):
-        """!Set vector lines mode, apply changes if auto-rendering is enabled"""
+        """Set vector lines mode, apply changes if auto-rendering is enabled"""
         data = self.GetLayerData('vector')
         width = self.FindWindowById(self.win['vector']['lines']['width']).GetValue()
         
@@ -3547,7 +3547,7 @@
         event.Skip()
     
     def OnVectorHeightFull(self, event):
-        """!Vector height changed, render in full resolution"""
+        """Vector height changed, render in full resolution"""
         self.OnVectorHeight(event)
 ##        self.OnVectorSurface(event)
         id = event.GetId()
@@ -3561,13 +3561,13 @@
         self.mapWindow.Refresh(False)
 
     def OnVectorHeightText(self, event):
-        """!Vector height changed, render in full resolution"""
+        """Vector height changed, render in full resolution"""
         
         #        self.OnVectorHeight(event)
         self.OnVectorHeightFull(event)
     
     def OnVectorSurface(self, event):
-        """!Reference surface for vector map (lines/points)"""   
+        """Reference surface for vector map (lines/points)""" 
         id = event.GetId()
         if id == self.win['vector']['lines']['surface']:
             vtype = 'lines'
@@ -3594,7 +3594,7 @@
             
         
     def OnVectorPoints(self, event):
-        """!Set vector points mode, apply changes if auto-rendering is enabled"""
+        """Set vector points mode, apply changes if auto-rendering is enabled"""
         data = self.GetLayerData('vector')
         
         size  = self.FindWindowById(self.win['vector']['points']['size']).GetValue()
@@ -3623,7 +3623,7 @@
             self.mapWindow.Refresh(False)
 
     def OnCheckThematic(self, event):
-        """!Switch on/off thematic mapping"""
+        """Switch on/off thematic mapping"""
         # can be called with no event to enable/disable button
         if not event:
             ids = (self.win['vector']['points']['thematic']['checkcolor'],
@@ -3681,7 +3681,7 @@
             self.mapWindow.Refresh(False)
             
     def HasGRASSRGB(self, name):
-        """!Check if GRASSRGB column exist."""
+        """Check if GRASSRGB column exist."""
         column = False
         
         dbInfo = VectorDBInfo(name)
@@ -3693,7 +3693,7 @@
         return column
         
     def OnSetThematic(self, event):
-        """!Set options for thematic points"""
+        """Set options for thematic points"""
         if event.GetId() in self.win['vector']['points']['thematic'].values():
             vtype = 'points'
         else:
@@ -3709,7 +3709,7 @@
         ctable.Show()
         
     def UpdateIsosurfButtons(self, list):
-        """!Enable/disable buttons 'add', 'delete',
+        """Enable/disable buttons 'add', 'delete',
         'move up', 'move down'"""
         nitems = list.GetCount()
         add = self.parent.FindWindowById(self.win['volume']['btnAdd'])
@@ -3741,7 +3741,7 @@
             moveUp.Enable(True)
             
     def OnVolumeMode(self, event):
-        """!Change mode isosurfaces/slices"""
+        """Change mode isosurfaces/slices"""
         mode = self.FindWindowById(self.win['volume']['draw']['mode']).GetSelection()
         data = self.GetLayerData('volume')['volume']
         
@@ -3770,11 +3770,11 @@
         listBox.GetParent().Fit()
             
     def OnVolumeDrawMode(self, event):
-        """!Set isosurface/slice draw mode"""
+        """Set isosurface/slice draw mode"""
         self.SetVolumeDrawMode(event.GetSelection())
         
     def OnVolumeDrawBox(self, event):
-        """!Set wire box drawing"""
+        """Set wire box drawing"""
         data = self.GetLayerData('volume')['volume']
         vid = data['object']['id']
         checked = self.FindWindowById(self.win['volume']['draw']['box']).GetValue()
@@ -3785,7 +3785,7 @@
             self.mapWindow.Refresh(False)
 
     def SetVolumeDrawMode(self, selection):
-        """!Set isosurface draw mode"""
+        """Set isosurface draw mode"""
         data = self.GetLayerData('volume')['volume']
         id = data['object']['id']
         
@@ -3808,11 +3808,11 @@
             self.mapWindow.Refresh(False)
         
     def OnVolumeResolution(self, event):
-        """!Set isosurface/slice draw resolution"""
+        """Set isosurface/slice draw resolution"""
         self.SetVolumeResolution(event.GetInt())
         
     def SetVolumeResolution(self, res):
-        """!Set isosurface draw resolution"""
+        """Set isosurface draw resolution"""
         data = self.GetLayerData('volume')['volume']
         id = data['object']['id']
         
@@ -3827,7 +3827,7 @@
             self.mapWindow.Refresh(False)
     
     def OnInOutMode(self, event):
-        """!Change isosurfaces mode inout"""
+        """Change isosurfaces mode inout"""
         data = self.GetLayerData('volume')['volume']
         id = data['object']['id']
         isosurfId = self.FindWindowById(self.win['volume']['isosurfs']).GetSelection()
@@ -3841,14 +3841,14 @@
     
         
     def OnVolumeIsosurfMap(self, event):
-        """!Set surface attribute"""
+        """Set surface attribute"""
         if self.vetoGSelectEvt:
             self.vetoGSelectEvt = False
             return
         self.SetMapObjAttrb(nvizType = 'volume', winId = event.GetId())
         
     def OnVolumeCheck(self, event):
-        """!Isosurface/slice checked (->load) or unchecked (->unload)"""
+        """Isosurface/slice checked (->load) or unchecked (->unload)"""
         if self.FindWindowById(self.win['volume']['draw']['mode']).GetSelection() == 0:
             mode = 'isosurf'
         else:
@@ -3889,7 +3889,7 @@
             self.mapWindow.Refresh(False)
         
     def OnVolumeSelect(self, event):
-        """!Isosurface/Slice item selected"""
+        """Isosurface/Slice item selected"""
         if self.FindWindowById(self.win['volume']['draw']['mode']).GetSelection() == 0:
             mode = 'isosurf'
         else:
@@ -3928,7 +3928,7 @@
         
         
     def OnVolumeAdd(self, event):
-        """!Add new isosurface/slice to the list"""
+        """Add new isosurface/slice to the list"""
         if self.FindWindowById(self.win['volume']['draw']['mode']).GetSelection() == 0:
             mode = 'isosurf'
         else:
@@ -3996,7 +3996,7 @@
         event.Skip()
         
     def OnVolumeDelete(self, event):
-        """!Remove isosurface/slice from list"""
+        """Remove isosurface/slice from list"""
         if self.FindWindowById(self.win['volume']['draw']['mode']).GetSelection() == 0:
             mode = 'isosurf'
         else:
@@ -4043,7 +4043,7 @@
         event.Skip()
         
     def OnVolumeMoveUp(self, event):
-        """!Move isosurface/slice up in the list"""
+        """Move isosurface/slice up in the list"""
         if self.FindWindowById(self.win['volume']['draw']['mode']).GetSelection() == 0:
             mode = 'isosurf'
         else:
@@ -4084,7 +4084,7 @@
         event.Skip()
         
     def OnVolumeMoveDown(self, event):
-        """!Move isosurface/slice down in the list"""
+        """Move isosurface/slice down in the list"""
         if self.FindWindowById(self.win['volume']['draw']['mode']).GetSelection() == 0:
             mode = 'isosurf'
         else:
@@ -4125,12 +4125,12 @@
         event.Skip()
     
     def OnVolumePositionChanged(self, event):
-        """!Volume position changed"""
+        """Volume position changed"""
         self.mapWindow.render['quick'] = False
         self.mapWindow.Refresh(False)
         
     def OnVolumePosition(self, event):
-        """!Volume position"""
+        """Volume position"""
         winName = self.__GetWindowName(self.win['volume'], event.GetId())
         if not winName:
             return
@@ -4172,7 +4172,7 @@
             self.mapWindow.Refresh(False)
         
     def OnVolumeAxis(self, event):
-        """!Volume position, axis changed"""
+        """Volume position, axis changed"""
         data = self.GetLayerData('volume')
         id = data['volume']['object']['id']
         
@@ -4198,12 +4198,12 @@
             text.SetValue(z)
             
     def OnVolumePositionText(self, event):
-        """!Volume position changed by textctrl"""
+        """Volume position changed by textctrl"""
         self.OnVolumePosition(event)
         self.OnVolumePositionChanged(None)
         
     def OnResetVolumePosition(self, event):
-        """!Reset position of volume"""
+        """Reset position of volume"""
         for win in self.win['volume']['position'].itervalues():
             if win == self.win['volume']['position']['axis']:
                 self.FindWindowById(win).SetSelection(2) # Z
@@ -4225,7 +4225,7 @@
             self.mapWindow.Refresh(False)
         
     def OnVolumeSliceAxes(self, event):
-        """!Slice axis changed"""
+        """Slice axis changed"""
         self.UpdateSliceLabels()
         data = self.GetLayerData('volume')
         list = self.FindWindowById(self.win['volume']['slices'])
@@ -4248,7 +4248,7 @@
             self.mapWindow.Refresh(False)
     
     def OnSliceTransparency(self, event):
-        """!Slice transparency changed"""
+        """Slice transparency changed"""
         data = self.GetLayerData('volume')
         
         list = self.FindWindowById(self.win['volume']['slices'])
@@ -4268,7 +4268,7 @@
             self.mapWindow.Refresh(False)
         
     def OnSliceReset(self, event):
-        """!Slice position reset"""
+        """Slice position reset"""
         data = self.GetLayerData('volume')
         
         list = self.FindWindowById(self.win['volume']['slices'])
@@ -4289,7 +4289,7 @@
             self.mapWindow.Refresh(False)
         
     def OnSlicePositionChange(self, event):
-        """!Slice position is changing"""
+        """Slice position is changing"""
         data = self.GetLayerData('volume')
         list = self.FindWindowById(self.win['volume']['slices'])
         sel = list.GetSelection()
@@ -4313,13 +4313,13 @@
             self.mapWindow.Refresh(False)
                
     def OnSlicePositionChanged(self, event):
-        """!Slice position is changed"""
+        """Slice position is changed"""
         self.mapWindow.render['quick'] = False
         if self.mapDisplay.IsAutoRendered():
             self.mapWindow.Refresh(False)
                 
     def OnCPlaneSelection(self, event):
-        """!Cutting plane selected"""
+        """Cutting plane selected"""
         plane = self.FindWindowById(self.win['cplane']['planes']).GetStringSelection()
         try:
             planeIndex = int(plane.split()[-1]) - 1
@@ -4336,7 +4336,7 @@
         self.UpdateCPlanePage(planeIndex)
         
     def OnCPlaneChanging(self, event):
-        """!Cutting plane is changing"""
+        """Cutting plane is changing"""
         plane = self.FindWindowById(self.win['cplane']['planes']).GetStringSelection()
         try:
             planeIndex = int(plane.split()[-1]) - 1
@@ -4359,13 +4359,13 @@
             self.mapWindow.Refresh(False)
 
     def OnCPlaneChangeDone(self, event):
-        """!Cutting plane change done"""
+        """Cutting plane change done"""
         self.mapWindow.render['quick'] = False
         if self.mapDisplay.IsAutoRendered():
             self.mapWindow.Refresh(False)
             
     def OnCPlaneChangeText(self, event):
-        """!Cutting plane changed by textctrl"""
+        """Cutting plane changed by textctrl"""
         for axis in ('x', 'y', 'z'):
             if event.GetId() == self.win['cplane']['position'][axis]['text']:
                 value = self.FindWindowById(event.GetId()).GetValue()
@@ -4375,7 +4375,7 @@
         self.OnCPlaneChangeDone(None)   
         
     def OnCPlaneShading(self, event):
-        """!Cutting plane shading changed"""
+        """Cutting plane shading changed"""
         shading = self.FindWindowById(self.win['cplane']['shading']).GetSelection()
         plane = self.FindWindowById(self.win['cplane']['planes']).GetStringSelection()
         try:
@@ -4391,7 +4391,7 @@
         self.OnCPlaneChangeDone(None)
         
     def OnCPlaneReset(self, event):
-        """!Reset current cutting plane"""
+        """Reset current cutting plane"""
         plane = self.FindWindowById(self.win['cplane']['planes']).GetStringSelection()
         try:
             planeIndex = int(plane.split()[-1]) - 1
@@ -4407,7 +4407,7 @@
         self.UpdateCPlanePage(planeIndex)
     
     def OnDecorationPlacement(self, event):
-        """!Place an arrow/scalebar by clicking on display"""
+        """Place an arrow/scalebar by clicking on display"""
         if event.GetId() == self.win['decoration']['arrow']['place']:
             type = 'arrow'
         elif event.GetId() == self.win['decoration']['scalebar']['place']:
@@ -4423,14 +4423,14 @@
             self.mapWindow.SetNamedCursor('default')
     
     def OnArrowDelete(self, event):
-        """!Delete arrow"""
+        """Delete arrow"""
         self._display.DeleteArrow()
         self.mapWindow.decoration['arrow']['show'] = False
         self.FindWindowById( self.win['decoration']['arrow']['delete']).Disable()
         self.mapWindow.Refresh(False)
     
     def OnScalebarDelete(self, event):
-        """!Delete scalebar"""
+        """Delete scalebar"""
         choice = self.FindWindowById(self.win['decoration']['scalebar']['choice'])
         choiceIndex = choice.GetSelection()
         index = choice.GetClientData(choiceIndex)
@@ -4460,7 +4460,7 @@
         self.FindWindowById(self.win['decoration']['scalebar']['choice']).Enable(not choice.IsEmpty())
 
     def OnDecorationProp(self, event):
-        """!Set arrow/scalebar properties"""
+        """Set arrow/scalebar properties"""
         if event.GetId() in self.win['decoration']['arrow'].values():
             type = 'arrow'
         elif event.GetId() in self.win['decoration']['scalebar'].values():
@@ -4499,7 +4499,7 @@
             self.mapWindow.Refresh(False)
         
     def UpdatePage(self, pageId):
-        """!Update dialog (selected page)"""
+        """Update dialog (selected page)"""
         self.pageChanging = True
         Debug.msg(1, "NvizToolWindow.UpdatePage(): %s", pageId)
         
@@ -4611,7 +4611,7 @@
         self.pageChanging = False
         
     def UpdateAnimationPage(self):
-        """!Update animation page"""
+        """Update animation page"""
         # wrap help text according to tool window
         help = self.FindWindowById(self.win['anim']['help'])
         width = help.GetGrandParent().GetSizeTuple()[0]
@@ -4632,7 +4632,7 @@
         self.FindWindowById(self.win['anim']['frameIndex']['text']).Disable()
         
     def UpdateCPlanePage(self, index):
-        """!Update widgets according to selected clip plane"""
+        """Update widgets according to selected clip plane"""
         if index == -1:   
             return
         data = self.mapWindow.cplanes[index]
@@ -4644,7 +4644,7 @@
         self.FindWindowById(self.win['cplane']['shading']).SetSelection(data['shading'])
                 
     def UpdateSurfacePage(self, layer, data, updateName = True):
-        """!Update surface page"""
+        """Update surface page"""
         desc = grass.raster_info(layer.name)['title']
         if updateName:
             self.FindWindowById(self.win['surface']['map']).SetValue(layer.name)
@@ -4739,7 +4739,7 @@
         self.OnSurfaceMode(event = None)
         
     def UpdateVectorPage(self, layer, data, updateName = True):
-        """!Update vector page"""
+        """Update vector page"""
         vInfo = grass.vector_info_topo(layer.GetName())
         if not vInfo:
             return
@@ -4861,7 +4861,7 @@
             win.SetValue(data['points']['height']['value'])
         
     def UpdateVolumePage(self, layer, data, updateName = True):
-        """!Update volume page"""
+        """Update volume page"""
         if updateName:
             self.FindWindowById(self.win['volume']['map']).SetValue(layer.name)
         
@@ -4938,7 +4938,7 @@
         desc.SetLabel("%s %.2f - %.2f" % (_("range:"), mapRange[0], mapRange[1]))
         
     def UpdateVolumeIsosurfPage(self, data):
-        """!Update dialog -- isosurface attributes"""
+        """Update dialog -- isosurface attributes"""
         #
         # isosurface attributes
         #
@@ -4976,7 +4976,7 @@
             self.FindWindowById(self.win['volume']['inout']).SetValue(data['inout']['value'])
             
     def UpdateVolumeSlicePage(self, data):
-        """!Update dialog -- slice attributes"""
+        """Update dialog -- slice attributes"""
         if data:
             for coord in ('x1', 'x2', 'y1', 'y2', 'z1', 'z2'):
                 win = self.FindWindowById(self.win['volume']['slice']['slider_' + coord])
@@ -5000,7 +5000,7 @@
         self.UpdateSliceLabels()
         
     def UpdateSliceLabels(self):
-        """!Update text labels of slice controls according to axis"""
+        """Update text labels of slice controls according to axis"""
         sel = self.FindWindowById(self.win['volume']['slice']['axes']).GetSelection()
         if sel == 0:
             self.FindWindowByName('label_edge_0').SetLabel(_("North edge:"))
@@ -5031,7 +5031,7 @@
             self.FindWindowByName('label_coord_2').SetLabel(_("Height (Z):")) 
         
     def SetPage(self, name):
-        """!Get named page"""
+        """Get named page"""
         if name == 'view':
             self.SetSelection(0)
         elif name in ('surface', 'vector', 'volume'):
@@ -5047,7 +5047,7 @@
             win.SetSelection(self.page[name]['id'])
 
 class PositionWindow(wx.Window):
-    """!Abstract position control window, see subclasses
+    """Abstract position control window, see subclasses
     ViewPostionWindow and LightPositionWindow"""
     def __init__(self, parent, mapwindow, id = wx.ID_ANY,
                  **kwargs):
@@ -5090,7 +5090,7 @@
         self.pdc.DrawToDC(dc)
         
     def UpdatePos(self, xcoord, ycoord):
-        """!Update position coordinates (origin: UL)"""
+        """Update position coordinates (origin: UL)"""
         if xcoord < 0.0:
             xcoord = 0.0
         elif xcoord > 1.0:
@@ -5125,7 +5125,7 @@
         self.Draw(pos = (x,y), scale = True)
 
 class ViewPositionWindow(PositionWindow):
-    """!View position control widget"""
+    """View position control widget"""
     def __init__(self, parent, mapwindow, id = wx.ID_ANY,
                  **kwargs):
         PositionWindow.__init__(self, parent, mapwindow, id, **kwargs)
@@ -5157,7 +5157,7 @@
         event.Skip()
     
 class LightPositionWindow(PositionWindow):
-    """!Light position control widget"""
+    """Light position control widget"""
     def __init__(self, parent, mapwindow, id = wx.ID_ANY,
                  **kwargs):
         PositionWindow.__init__(self, parent, mapwindow, id, **kwargs)

Modified: grass/trunk/gui/wxpython/nviz/workspace.py
===================================================================
--- grass/trunk/gui/wxpython/nviz/workspace.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/nviz/workspace.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package nviz.workspace
 
 @brief wxNviz workspace settings
@@ -145,7 +145,7 @@
         return data
     
     def SetIsosurfaceDefaultProp(self):
-        """!Set default isosurface properties"""
+        """Set default isosurface properties"""
         data = dict()
         for attr in ('shine', 'topo', 'transp', 'color', 'inout'):
             data[attr] = {}
@@ -159,7 +159,7 @@
         return data
     
     def SetSliceDefaultProp(self):
-        """!Set default slice properties"""
+        """Set default slice properties"""
         data = dict()
         data['position'] = copy.deepcopy(UserSettings.Get(group = 'nviz', key = 'volume',
                                                subkey = 'slice_position'))
@@ -263,8 +263,10 @@
     def GetDrawMode(self, mode=None, style=None, shade=None, string=False):
         """Get surface draw mode (value) from description/selection
 
-        @param mode,style,shade modes
-        @param string if True input parameters are strings otherwise
+        :param mode:
+        :param style:
+        :param shade:
+        :param string: if True input parameters are strings otherwise
         selections
         """
         if not wxnviz:
@@ -327,7 +329,7 @@
         return (value, desc)
     
     def SetDecorDefaultProp(self, type):
-        """!Set default arrow properties
+        """Set default arrow properties
         """
         data = {}
         

Modified: grass/trunk/gui/wxpython/nviz/wxnviz.py
===================================================================
--- grass/trunk/gui/wxpython/nviz/wxnviz.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/nviz/wxnviz.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package nviz.wxnviz
 
 @brief wxGUI 3D view mode (ctypes-based classes)
@@ -55,7 +55,7 @@
 progress = None
 
 def print_error(msg, type):
-    """!Redirect stderr"""
+    """Redirect stderr"""
     global log
     if log:
         log.write(msg)
@@ -65,7 +65,7 @@
     return 0
 
 def print_progress(value):
-    """!Redirect progress info"""
+    """Redirect progress info"""
     global progress
     if progress:
         if not progress.GetRange() == 100:
@@ -86,10 +86,10 @@
 
 class Nviz(object):
     def __init__(self, glog, gprogress):
-        """!Initialize Nviz class instance
+        """Initialize Nviz class instance
         
-        @param glog logging area
-        @param gprogress progressbar
+        :param glog: logging area
+        :param gprogress: progressbar
         """
         global errfunc, perfunc, log, progress
         log = glog
@@ -113,7 +113,7 @@
         Debug.msg(1, "Nviz::Nviz()")
         
     def __del__(self):
-        """!Destroy Nviz class instance"""
+        """Destroy Nviz class instance"""
         G_unset_error_routine()
         G_unset_percent_routine()
         del self.data
@@ -121,7 +121,7 @@
         self.log = None
 
     def Init(self):
-        """!Initialize window"""
+        """Initialize window"""
         locale.setlocale(locale.LC_NUMERIC, 'C')
         G_unset_window()
         Rast_unset_window()
@@ -131,13 +131,13 @@
         GVL_init_region()
     
     def ResizeWindow(self, width, height):
-        """!GL canvas resized
+        """GL canvas resized
         
-        @param width window width
-        @param height window height
+        :param width: window width
+        :param height: window height
         
-        @return 1 on success
-        @return 0 on failure (window resized by default to 20x20 px)
+        :return: 1 on success
+        :return: 0 on failure (window resized by default to 20x20 px)
         """
         self.width  = width
         self.height = height
@@ -146,13 +146,13 @@
         return Nviz_resize_window(width, height)
     
     def GetLongDim(self):
-        """!Get longest dimension, used for initial size of north arrow"""
+        """Get longest dimension, used for initial size of north arrow"""
         return Nviz_get_longdim(self.data)
     
     def SetViewDefault(self):
-        """!Set default view (based on loaded data)
+        """Set default view (based on loaded data)
         
-        @return z-exag value, default, min and max height
+        :return: z-exag value, default, min and max height
         """
         # determine z-exag
         z_exag = Nviz_get_exag()
@@ -170,11 +170,11 @@
         return (z_exag, hdef.value, hmin.value, hmax.value)
     
     def SetView(self, x, y, height, persp, twist):
-        """!Change view settings
-        @param x,y position
-        @param height
-        @param persp perpective
-        @param twist
+        """Change view settings
+        :param x,y: position
+        :param height:
+        :param persp: perpective
+        :param twist:
         """
         Nviz_set_viewpoint_height(height)
         Nviz_set_viewpoint_position(x, y)
@@ -194,20 +194,20 @@
         return (x.value, y.value, h.value)
         
     def LookHere(self, x, y):
-        """!Look here feature 
-        @param x,y screen coordinates
+        """Look here feature 
+        :param x,y: screen coordinates
         """
         
         Nviz_look_here(x, y)
         Debug.msg(3, "Nviz::LookHere(): x=%f, y=%f", x, y)
     
     def LookAtCenter(self):
-        """!Center view at center of displayed surface"""
+        """Center view at center of displayed surface"""
         Nviz_set_focus_map(MAP_OBJ_UNDEFINED, -1)
         Debug.msg(3, "Nviz::LookAtCenter()")
     
     def GetFocus(self):
-        """!Get focus"""
+        """Get focus"""
         Debug.msg(3, "Nviz::GetFocus()")
         if Nviz_has_focus(self.data):
             x = c_float()
@@ -219,12 +219,12 @@
             return -1, -1, -1
         
     def SetFocus(self, x, y, z):
-        """!Set focus"""
+        """Set focus"""
         Debug.msg(3, "Nviz::SetFocus()")
         Nviz_set_focus(self.data, x, y, z)
         
     def GetViewdir(self):
-        """!Get viewdir"""
+        """Get viewdir"""
         Debug.msg(3, "Nviz::GetViewdir()")
         dir = (c_float * 3)()
         GS_get_viewdir(byref(dir))
@@ -232,7 +232,7 @@
         return dir[0], dir[1], dir[2]
         
     def SetViewdir(self, x, y, z):
-        """!Set viewdir"""
+        """Set viewdir"""
         Debug.msg(3, "Nviz::SetViewdir(): x=%f, y=%f, z=%f" % (x, y, z))
         dir = (c_float * 3)()
         for i, coord in enumerate((x, y, z)):
@@ -240,17 +240,17 @@
         GS_set_viewdir(byref(dir))
                 
     def SetZExag(self, z_exag):
-        """!Set z-exag value
+        """Set z-exag value
         
-        @param z_exag value
+        :param z_exag: value
         
-        @return 1
+        :return: 1
         """
         Debug.msg(3, "Nviz::SetZExag(): z_exag=%f", z_exag)
         return Nviz_change_exag(self.data, z_exag)
     
     def Draw(self, quick, quick_mode):
-        """!Draw canvas
+        """Draw canvas
         
         Draw quick mode:
          - DRAW_QUICK_SURFACE
@@ -258,8 +258,8 @@
          - DRAW_QUICK_VPOINTS
          - DRAW_QUICK_VOLUME
         
-        @param quick if true draw in wiremode
-        @param quick_mode quick mode
+        :param quick: if true draw in wiremode
+        :param quick_mode: quick mode
         """
         Debug.msg(3, "Nviz::Draw(): quick=%d", quick)
         
@@ -271,13 +271,13 @@
             Nviz_draw_all(self.data)
         
     def EraseMap(self):
-        """!Erase map display (with background color)
+        """Erase map display (with background color)
         """
         Debug.msg(1, "Nviz::EraseMap()")
         GS_clear(Nviz_get_bgcolor(self.data))
         
     def InitView(self):
-        """!Initialize view"""
+        """Initialize view"""
         # initialize nviz data
         Nviz_init_data(self.data)
         
@@ -293,21 +293,21 @@
         Debug.msg(1, "Nviz::InitView()")
         
     def SetBgColor(self, color_str):
-        """!Set background color
+        """Set background color
         
-        @param color_str color string
+        :param str color_str: color string
         """
         Nviz_set_bgcolor(self.data, Nviz_color_from_str(color_str))
         
     def SetLight(self, x, y, z, color, bright, ambient, w = 0, lid = 1):
-        """!Change lighting settings
+        """Change lighting settings
         
-        @param x,y,z position
-        @param color light color (as string)
-        @param bright light brightness
-        @param ambient light ambient
-        @param w local coordinate (default to 0)
-        @param lid light id
+        :param x,y,z: position
+        :param color: light color (as string)
+        :param bright: light brightness
+        :param ambient: light ambient
+        :param w: local coordinate (default to 0)
+        :param lid: light id
         """
         Nviz_set_light_position(self.data, lid, x, y, z, w)
         Nviz_set_light_bright(self.data, lid, bright)
@@ -315,14 +315,14 @@
         Nviz_set_light_ambient(self.data, lid, ambient)
                              
     def LoadSurface(self, name, color_name, color_value):
-        """!Load raster map (surface)
+        """Load raster map (surface)
         
-        @param name raster map name
-        @param color_name raster map for color (None for color_value)
-        @param color_value color string (named color or RGB triptet)
+        :param name: raster map name
+        :param color_name: raster map for color (None for color_value)
+        :param color_value: color string (named color or RGB triptet)
         
-        @return object id
-        @return -1 on failure
+        :return: object id
+        :return: -1 on failure
         """
         mapset = G_find_raster2(name, "")
         if mapset is None:
@@ -366,7 +366,7 @@
         return id
     
     def AddConstant(self, value, color):
-        """!Add new constant surface"""
+        """Add new constant surface"""
         id = Nviz_new_map_obj(MAP_OBJ_SURF, None, value, self.data)
         
         Nviz_set_attr(id, MAP_OBJ_SURF, ATT_COLOR, CONST_ATT,
@@ -378,12 +378,12 @@
         return id
         
     def UnloadSurface(self, id):
-        """!Unload surface
+        """Unload surface
         
-        @param id surface id
+        :param id: surface id
         
-        @return 1 on success
-        @return 0 on failure
+        :return: 1 on success
+        :return: 0 on failure
         """
         if not GS_surf_exists(id):
             return 0
@@ -396,13 +396,13 @@
         return 1
     
     def LoadVector(self, name, points):
-        """!Load vector map overlay
+        """Load vector map overlay
         
-        @param name vector map name
-        @param points if true load 2d points rather then 2d lines
+        :param name: vector map name
+        :param points: if true load 2d points rather then 2d lines
         
-        @return object id, id of base surface (or -1 if it is not loaded)
-        @return -1 on failure
+        :return: object id, id of base surface (or -1 if it is not loaded)
+        :return: -1 on failure
         """
         baseId = -1
         if GS_num_surfs() == 0:     # load base surface if no loaded
@@ -431,13 +431,13 @@
         return id, baseId
     
     def UnloadVector(self, id, points):
-        """!Unload vector set
+        """Unload vector set
         
-        @param id vector set id
-        @param points vector points or lines set
+        :param id: vector set id
+        :param points: vector points or lines set
         
-        @return 1 on success
-        @return 0 on failure
+        :return: 1 on success
+        :return: 0 on failure
         """
         Debug.msg(1, "Nviz::UnloadVector(): id=%d", id)
         
@@ -455,27 +455,27 @@
         return 1
 
     def VectorSurfaceSelected(self, vid, sid):
-        """!Check if surface is selected (currently unused)
+        """Check if surface is selected (currently unused)
         
-        @param vid vector id
-        @param sid surface id
+        :param vid: vector id
+        :param sid: surface id
         
-        @return True if selected
-        @return False if not selected
+        :return: True if selected
+        :return: False if not selected
         """
         selected = GV_surf_is_selected(vid, sid)
         Debug.msg(1, "Nviz::VectorSurfaceSelected(): vid=%s, sid=%d -> selected=%d", vid, sid, selected)
         return selected
     
     def LoadVolume(self, name, color_name, color_value):
-        """!Load 3d raster map (volume)
+        """Load 3d raster map (volume)
         
-        @param name 3d raster map name
-        @param color_name 3d raster map for color (None for color_value)
-        @param color_value color string (named color or RGB triptet)
+        :param name: 3d raster map name
+        :param color_name: 3d raster map for color (None for color_value)
+        :param color_value: color string (named color or RGB triptet)
         
-        @return object id
-        @return -1 on failure
+        :return: object id
+        :return: -1 on failure
         """
         mapset = G_find_raster3d(name, "")
         if mapset is None:
@@ -513,12 +513,12 @@
         return id
 
     def UnloadVolume(self, id):
-        """!Unload volume
+        """Unload volume
         
-        @param id volume id
+        :param id: volume id
         
-        @return 1 on success
-        @return 0 on failure
+        :return: 1 on success
+        :return: 0 on failure
         """
         if not GVL_vol_exists(id):
             return 0
@@ -531,98 +531,100 @@
         return 1
     
     def SetSurfaceTopo(self, id, map, value):
-        """!Set surface topography
+        """Set surface topography
         
-        @param id surface id
-        @param map if true use map otherwise constant
-        @param value map name of value
+        :param id: surface id
+        :param map: if true use map otherwise constant
+        :param value: map name of value
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting attributes failed
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting attributes failed
         """
         return self.SetSurfaceAttr(id, ATT_TOPO, map, value)
     
     def SetSurfaceColor(self, id, map, value):
-        """!Set surface color
+        """Set surface color
         
-        @param id surface id
-        @param map if true use map otherwise constant
-        @param value map name or value
+        :param id: surface id
+        :param map: if true use map otherwise constant
+        :param value: map name or value
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting attributes failed
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting attributes failed
         """
         return self.SetSurfaceAttr(id, ATT_COLOR, map, value)
     
     def SetSurfaceMask(self, id, invert, value):
-        """!Set surface mask
+        """Set surface mask
         
-        @todo invert
+        .. todo::
+            invert
         
-        @param id surface id
-        @param invert if true invert mask 
-        @param value map name of value
+        :param id: surface id
+        :param invert: if true invert mask 
+        :param value: map name of value
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting attributes failed
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting attributes failed
         """
         return self.SetSurfaceAttr(id, ATT_MASK, True, value)
     
     def SetSurfaceTransp(self, id, map, value):
-        """!Set surface mask
+        """Set surface mask
         
-        @todo invert
+        ..todo::
+            invert
         
-        @param id surface id
-        @param map if true use map otherwise constant
-        @param value map name of value
+        :param id: surface id
+        :param map: if true use map otherwise constant
+        :param value: map name of value
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting attributes failed
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting attributes failed
         """
         return self.SetSurfaceAttr(id, ATT_TRANSP, map, value)
     
     def SetSurfaceShine(self, id, map, value):
-        """!Set surface shininess
+        """Set surface shininess
         
-        @param id surface id
-        @param map if true use map otherwise constant
-        @param value map name of value
+        :param id: surface id
+        :param map: if true use map otherwise constant
+        :param value: map name of value
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting attributes failed
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting attributes failed
         """
         return self.SetSurfaceAttr(id, ATT_SHINE, map, value)
     
     def SetSurfaceEmit(self, id, map, value):
-        """!Set surface emission (currently unused)
+        """Set surface emission (currently unused)
         
-        @param id surface id
-        @param map if true use map otherwise constant
-        @param value map name of value
+        :param id: surface id
+        :param map: if true use map otherwise constant
+        :param value: map name of value
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting attributes failed
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting attributes failed
         """
         return self.SetSurfaceAttr(id, ATT_EMIT, map, value)
     
     def SetSurfaceAttr(self, id, attr, map, value):
-        """!Set surface attribute
+        """Set surface attribute
         
-        @param id surface id
-        @param attr attribute desc
-        @param map if true use map otherwise constant
-        @param value map name of value
+        :param id: surface id
+        :param attr: attribute desc
+        :param map: if true use map otherwise constant
+        :param value: map name of value
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting attributes failed
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting attributes failed
         """
         if not GS_surf_exists(id):
             return -1
@@ -648,48 +650,48 @@
         return 1
     
     def UnsetSurfaceMask(self, id):
-        """!Unset surface mask
+        """Unset surface mask
         
-        @param id surface id
+        :param id: surface id
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting attributes failed
-        @return -1 on failure
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting attributes failed
+        :return: -1 on failure
         """
         return self.UnsetSurfaceAttr(id, ATT_MASK)
     
     def UnsetSurfaceTransp(self, id):
-        """!Unset surface transparency
+        """Unset surface transparency
         
-        @param id surface id
+        :param id: surface id
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting attributes failed
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting attributes failed
         """
         return self.UnsetSurfaceAttr(id, ATT_TRANSP)
     
     def UnsetSurfaceEmit(self, id):
-        """!Unset surface emission (currently unused)
+        """Unset surface emission (currently unused)
         
-        @param id surface id
+        :param id: surface id
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting attributes failed
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting attributes failed
         """
         return self.UnsetSurfaceAttr(id, ATT_EMIT)
     
     def UnsetSurfaceAttr(self, id, attr):
-        """!Unset surface attribute
+        """Unset surface attribute
         
-        @param id surface id
-        @param attr attribute descriptor
+        :param id: surface id
+        :param attr: attribute descriptor
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting attributes failed
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting attributes failed
         """
         if not GS_surf_exists(id):
             return -1
@@ -705,15 +707,15 @@
         return 1
 
     def SetSurfaceRes(self, id, fine, coarse):
-        """!Set surface resolution
+        """Set surface resolution
         
-        @param id surface id
-        @param fine x/y fine resolution
-        @param coarse x/y coarse resolution
+        :param id: surface id
+        :param fine: x/y fine resolution
+        :param coarse: x/y coarse resolution
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting attributes failed
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting attributes failed
         """
         Debug.msg(3, "Nviz::SetSurfaceRes(): id=%d, fine=%d, coarse=%d",
                   id, fine, coarse)
@@ -730,7 +732,7 @@
         return 1
 
     def SetSurfaceStyle(self, id, style):
-        """!Set draw style
+        """Set draw style
         
         Draw styles:
          - DM_GOURAUD
@@ -743,12 +745,12 @@
          - DM_GRID_WIRE
          - DM_GRID_SURF
          
-        @param id surface id (<= 0 for all)
-        @param style draw style
+        :param id: surface id (<= 0 for all)
+        :param style: draw style
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting attributes failed
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting attributes failed
         """
         Debug.msg(3, "Nviz::SetSurfaceStyle(): id=%d, style=%d",
                   id, style)
@@ -768,18 +770,19 @@
         return 1
     
     def SetWireColor(self, id, color_str):
-        """!Set color of wire
+        """Set color of wire
         
-        @todo all
+        .. todo::
+            all
          
-        @param id surface id (< 0 for all)
-        @param color_str color string (R:G:B)
+        :param id: surface id (< 0 for all)
+        :param color_str: color string (R:G:B)
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting attributes failed
-        @return 1 on success
-        @return 0 on failure
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting attributes failed
+        :return: 1 on success
+        :return: 0 on failure
         """
         Debug.msg(3, "Nviz::SetWireColor(): id=%d, color=%s",
                   id, color_str)
@@ -804,12 +807,12 @@
         return 1
     
     def GetSurfacePosition(self, id):
-        """!Get surface position
+        """Get surface position
         
-        @param id surface id
+        :param id: surface id
         
-        @return x,y,z
-        @return zero-length vector on error
+        :return: x,y,z
+        :return: zero-length vector on error
         """
         if not GS_surf_exists(id):
             return []
@@ -823,14 +826,14 @@
         return [x.value, y.value, z.value]
 
     def SetSurfacePosition(self, id, x, y, z):
-        """!Set surface position
+        """Set surface position
         
-        @param id surface id
-        @param x,y,z translation values
+        :param id: surface id
+        :param x,y,z: translation values
         
-        @return 1 on success
-        @return -1 surface not found
-        @return -2 setting position failed
+        :return: 1 on success
+        :return: -1 surface not found
+        :return: -2 setting position failed
         """
         if not GS_surf_exists(id):
             return -1
@@ -843,16 +846,16 @@
         return 1
 
     def SetVectorLineMode(self, id, color_str, width, flat):
-        """!Set mode of vector line overlay
+        """Set mode of vector line overlay
         
-        @param id vector id
-        @param color_str color string
-        @param width line width
-        @param flat display flat or on surface
+        :param id: vector id
+        :param color_str: color string
+        :param width: line width
+        :param flat: display flat or on surface
         
-        @return -1 vector set not found
-        @return -2 on failure
-        @return 1 on success
+        :return: -1 vector set not found
+        :return: -2 on failure
+        :return: 1 on success
         """
         if not GV_vect_exists(id):
             return -1
@@ -869,13 +872,13 @@
         return 1
 
     def SetVectorLineHeight(self, id, height):
-        """!Set vector height above surface (lines)
+        """Set vector height above surface (lines)
         
-        @param id vector set id
-        @param height
+        :param id: vector set id
+        :param height:
         
-        @return -1 vector set not found
-        @return 1 on success
+        :return: -1 vector set not found
+        :return: 1 on success
         """
         if not GV_vect_exists(id):
             return -1
@@ -888,15 +891,15 @@
         return 1
 
     def SetVectorLineSurface(self, id, surf_id):
-        """!Set reference surface of vector set (lines)
+        """Set reference surface of vector set (lines)
         
-        @param id vector set id
-        @param surf_id surface id
+        :param id: vector set id
+        :param surf_id: surface id
         
-        @return 1 on success
-        @return -1 vector set not found
-        @return -2 surface not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 vector set not found
+        :return: -2 surface not found
+        :return: -3 on failure
         """
         if not GV_vect_exists(id):
             return -1
@@ -910,15 +913,15 @@
         return 1
 
     def UnsetVectorLineSurface(self, id, surf_id):
-        """!Unset reference surface of vector set (lines)
+        """Unset reference surface of vector set (lines)
         
-        @param id vector set id
-        @param surf_id surface id
+        :param id: vector set id
+        :param surf_id: surface id
         
-        @return 1 on success
-        @return -1 vector set not found
-        @return -2 surface not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 vector set not found
+        :return: -2 surface not found
+        :return: -3 on failure
         """
         if not GV_vect_exists(id):
             return -1
@@ -932,15 +935,15 @@
         return 1
         
     def SetVectorPointMode(self, id, color_str, width, size, marker):
-        """!Set mode of vector point overlay
+        """Set mode of vector point overlay
         
-        @param id vector id
-        @param color_str color string
-        @param width line width
-        @param size size of the symbol
-        @param marker type of the symbol
+        :param id: vector id
+        :param color_str: color string
+        :param width: line width
+        :param size: size of the symbol
+        :param marker: type of the symbol
         
-        @return -1 vector set not found
+        :return: -1 vector set not found
         """
         if not GP_site_exists(id):
             return -1
@@ -961,13 +964,13 @@
         return 1
 
     def SetVectorPointHeight(self, id, height):
-        """!Set vector height above surface (points)
+        """Set vector height above surface (points)
         
-        @param id vector set id
-        @param height
+        :param id: vector set id
+        :param height:
         
-        @return -1 vector set not found
-        @return 1 on success
+        :return: -1 vector set not found
+        :return: 1 on success
         """
         if not GP_site_exists(id):
             return -1
@@ -980,15 +983,15 @@
         return 1
 
     def SetVectorPointSurface(self, id, surf_id):
-        """!Set reference surface of vector set (points)
+        """Set reference surface of vector set (points)
         
-        @param id vector set id
-        @param surf_id surface id
+        :param id: vector set id
+        :param surf_id: surface id
         
-        @return 1 on success
-        @return -1 vector set not found
-        @return -2 surface not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 vector set not found
+        :return: -2 surface not found
+        :return: -3 on failure
         """
         if not GP_site_exists(id):
             return -1
@@ -1002,27 +1005,27 @@
         return 1
 
     def ReadVectorColors(self, name, mapset):
-        """!Read vector colors
+        """Read vector colors
         
-        @param name vector map name
-        @param mapset mapset name (empty string (\c "") for search path)
+        :param name: vector map name
+        :param mapset: mapset name (empty string (\c "") for search path)
         
-        @return -1 on error 
-        @return 0 if color table missing 
-        @return 1 on success (color table found) 
+        :return: -1 on error 
+        :return: 0 if color table missing 
+        :return: 1 on success (color table found) 
         """
         return Vect_read_colors(name, mapset, self.color)
         
     def CheckColorTable(self, id, type):
-        """!Check if color table exists.
+        """Check if color table exists.
         
-        @param id vector set id
-        @param type vector set type (lines/points)
+        :param id: vector set id
+        :param type: vector set type (lines/points)
         
-        @return 1 color table exists
-        @return 0 no color table found
-        @return -1 on error
-        @return -2 vector set not found
+        :return: 1 color table exists
+        :return: 0 no color table found
+        :return: -1 on error
+        :return: -2 vector set not found
         """
         file = c_char_p()
         
@@ -1038,15 +1041,15 @@
         
     def SetPointsStyleThematic(self, id, layer, color = None, colorTable = False, 
                                width = None, size = None, symbol = None):
-        """!Set thematic style for vector points
+        """Set thematic style for vector points
         
-        @param id vector set id
-        @param layer layer number for thematic mapping
-        @param colorTable use color table 
-        @param color color column name 
-        @param width width column name 
-        @param size size column name 
-        @param symbol symbol column name 
+        :param id: vector set id
+        :param layer: layer number for thematic mapping
+        :param colorTable: use color table 
+        :param color: color column name 
+        :param width: width column name 
+        :param size: size column name 
+        :param symbol: symbol column name 
         """
         file = c_char_p()
         ret = GP_get_sitename(id, byref(file))
@@ -1063,13 +1066,13 @@
             GP_set_style_thematic(id, layer, color, width, size, symbol, None)
 
     def SetLinesStyleThematic(self, id, layer, color = None, colorTable = False, width = None):
-        """!Set thematic style for vector lines
+        """Set thematic style for vector lines
         
-        @param id vector set id
-        @param layer layer number for thematic mapping
-        @param color color column name 
-        @param colorTable use color table 
-        @param width width column name 
+        :param id: vector set id
+        :param layer: layer number for thematic mapping
+        :param color: color column name 
+        :param colorTable: use color table 
+        :param width: width column name 
         """
         file = c_char_p()
         ret = GV_get_vectname(id, byref(file))
@@ -1086,23 +1089,23 @@
             GV_set_style_thematic(id, layer, color, width, None)
         
     def UnsetLinesStyleThematic(self, id):
-        """!Unset thematic style for vector points"""
+        """Unset thematic style for vector points"""
         GV_unset_style_thematic(id)      
          
     def UnsetPointsStyleThematic(self, id):
-        """!Unset thematic style for vector lines"""
+        """Unset thematic style for vector lines"""
         GP_unset_style_thematic(id)
         
     def UnsetVectorPointSurface(self, id, surf_id):
-        """!Unset reference surface of vector set (points)
+        """Unset reference surface of vector set (points)
         
-        @param id vector set id
-        @param surf_id surface id
+        :param id: vector set id
+        :param surf_id: surface id
         
-        @return 1 on success
-        @return -1 vector set not found
-        @return -2 surface not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 vector set not found
+        :return: -2 surface not found
+        :return: -3 on failure
         """
         if not GP_site_exists(id):
             return -1
@@ -1116,14 +1119,14 @@
         return 1
         
     def SetVectorPointZMode(self, id, zMode):
-        """!Set z mode (use z coordinate or not)
+        """Set z mode (use z coordinate or not)
         
-        @param id volume id
-        @param zMode bool
+        :param id: volume id
+        :param zMode: bool
 
-        @return -1 on failure
-        @return 0 when no 3d
-        @return 1 on success
+        :return: -1 on failure
+        :return: 0 when no 3d
+        :return: 1 on success
         """
         if not GP_site_exists(id):
             return -1
@@ -1131,14 +1134,14 @@
         return GP_set_zmode(id, int(zMode))
 
     def AddIsosurface(self, id, level, isosurf_id = None):
-        """!Add new isosurface
+        """Add new isosurface
         
-        @param id volume id
-        @param level isosurface level (topography)
-        @param isosurf_id isosurface id
+        :param id: volume id
+        :param level: isosurface level (topography)
+        :param isosurf_id: isosurface id
         
-        @return -1 on failure
-        @return 1 on success
+        :return: -1 on failure
+        :return: 1 on success
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1157,13 +1160,13 @@
         return GVL_isosurf_set_att_const(id, nisosurfs - 1, ATT_TOPO, level)
     
     def AddSlice(self, id, slice_id = None):
-        """!Add new slice
+        """Add new slice
         
-        @param id volume id
-        @param slice_id slice id
+        :param id: volume id
+        :param slice_id: slice id
         
-        @return -1 on failure
-        @return number of slices
+        :return: -1 on failure
+        :return: number of slices
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1179,15 +1182,15 @@
         return GVL_slice_num_slices(id)
     
     def DeleteIsosurface(self, id, isosurf_id):
-        """!Delete isosurface
+        """Delete isosurface
         
-        @param id volume id
-        @param isosurf_id isosurface id
+        :param id: volume id
+        :param isosurf_id: isosurface id
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 isosurface not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 isosurface not found
+        :return: -3 on failure
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1203,15 +1206,15 @@
         return 1
     
     def DeleteSlice(self, id, slice_id):
-        """!Delete slice
+        """Delete slice
         
-        @param id volume id
-        @param slice_id slice id
+        :param id: volume id
+        :param slice_id: slice id
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 slice not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 slice not found
+        :return: -3 on failure
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1227,16 +1230,16 @@
         return 1
     
     def MoveIsosurface(self, id, isosurf_id, up):
-        """!Move isosurface up/down in the list
+        """Move isosurface up/down in the list
         
-        @param id volume id
-        @param isosurf_id isosurface id
-        @param up if true move up otherwise down
+        :param id: volume id
+        :param isosurf_id: isosurface id
+        :param up: if true move up otherwise down
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 isosurface not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 isosurface not found
+        :return: -3 on failure
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1255,16 +1258,16 @@
         return 1
 
     def MoveSlice(self, id, slice_id, up):
-        """!Move slice up/down in the list
+        """Move slice up/down in the list
         
-        @param id volume id
-        @param slice_id slice id
-        @param up if true move up otherwise down
+        :param id: volume id
+        :param slice_id: slice id
+        :param up: if true move up otherwise down
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 slice not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 slice not found
+        :return: -3 on failure
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1283,110 +1286,111 @@
         return 1
     
     def SetIsosurfaceTopo(self, id, isosurf_id, map, value):
-        """!Set isosurface level
+        """Set isosurface level
         
-        @param id volume id
-        @param isosurf_id isosurface id (0 - MAX_ISOSURFS)
-        @param map if true use map otherwise constant
-        @param value map name of value
+        :param id: volume id
+        :param isosurf_id: isosurface id (0 - MAX_ISOSURFS)
+        :param map: if true use map otherwise constant
+        :param value: map name of value
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 isosurface not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 isosurface not found
+        :return: -3 on failure
         """
         return self.SetIsosurfaceAttr(id, isosurf_id, ATT_TOPO, map, value)
     
     def SetIsosurfaceColor(self, id, isosurf_id, map, value):
-        """!Set isosurface color
+        """Set isosurface color
         
-        @param id volume id
-        @param isosurf_id isosurface id (0 - MAX_ISOSURFS)
-        @param map if true use map otherwise constant
-        @param value map name of value
+        :param id: volume id
+        :param isosurf_id: isosurface id (0 - MAX_ISOSURFS)
+        :param map: if true use map otherwise constant
+        :param value: map name of value
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 isosurface not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 isosurface not found
+        :return: -3 on failure
         """
         return self.SetIsosurfaceAttr(id, isosurf_id, ATT_COLOR, map, value)
     
     def SetIsosurfaceMask(self, id, isosurf_id, invert, value):
-        """!Set isosurface mask
+        """Set isosurface mask
         
-        @todo invert
+        .. todo::
+            invert
         
-        @param id volume id
-        @param isosurf_id isosurface id (0 - MAX_ISOSURFS)
-        @param invert true for invert mask
-        @param value map name to be used for mask
+        :param id: volume id
+        :param isosurf_id: isosurface id (0 - MAX_ISOSURFS)
+        :param invert: true for invert mask
+        :param value: map name to be used for mask
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 isosurface not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 isosurface not found
+        :return: -3 on failure
         """
         return self.SetIsosurfaceAttr(id, isosurf_id, ATT_MASK, True, value)
     
     def SetIsosurfaceTransp(self, id, isosurf_id, map, value):
-        """!Set isosurface transparency
+        """Set isosurface transparency
         
-        @param id volume id
-        @param isosurf_id isosurface id (0 - MAX_ISOSURFS)
-        @param map if true use map otherwise constant
-        @param value map name of value
+        :param id: volume id
+        :param isosurf_id: isosurface id (0 - MAX_ISOSURFS)
+        :param map: if true use map otherwise constant
+        :param value: map name of value
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 isosurface not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 isosurface not found
+        :return: -3 on failure
         """
         return self.SetIsosurfaceAttr(id, isosurf_id, ATT_TRANSP, map, value)
     
     def SetIsosurfaceShine(self, id, isosurf_id, map, value):
-        """!Set isosurface shininess
+        """Set isosurface shininess
         
-        @param id volume id
-        @param isosurf_id isosurface id (0 - MAX_ISOSURFS)
-        @param map if true use map otherwise constant
-        @param value map name of value
+        :param id: volume id
+        :param isosurf_id: isosurface id (0 - MAX_ISOSURFS)
+        :param map: if true use map otherwise constant
+        :param value: map name of value
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 isosurface not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 isosurface not found
+        :return: -3 on failure
         """
         return self.SetIsosurfaceAttr(id, isosurf_id, ATT_SHINE, map, value)
     
     def SetIsosurfaceEmit(self, id, isosurf_id, map, value):
-        """!Set isosurface emission (currently unused)
+        """Set isosurface emission (currently unused)
         
-        @param id volume id
-        @param isosurf_id isosurface id (0 - MAX_ISOSURFS)
-        @param map if true use map otherwise constant
-        @param value map name of value
+        :param id: volume id
+        :param isosurf_id: isosurface id (0 - MAX_ISOSURFS)
+        :param map: if true use map otherwise constant
+        :param value: map name of value
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 isosurface not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 isosurface not found
+        :return: -3 on failure
         """
         return self.SetIsosurfaceAttr(id, isosurf_id, ATT_EMIT, map, value)
     
     def SetIsosurfaceAttr(self, id, isosurf_id, attr, map, value):
-        """!Set isosurface attribute
+        """Set isosurface attribute
         
-        @param id volume id
-        @param isosurf_id isosurface id (0 - MAX_ISOSURFS)
-        @param attr attribute desc
-        @param map if true use map otherwise constant
-        @param value map name of value
+        :param id: volume id
+        :param isosurf_id: isosurface id (0 - MAX_ISOSURFS)
+        :param attr: attribute desc
+        :param map: if true use map otherwise constant
+        :param value: map name of value
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 isosurface not found
-        @return -3 setting attributes failed
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 isosurface not found
+        :return: -3 setting attributes failed
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1414,55 +1418,55 @@
         return 1
     
     def UnsetIsosurfaceMask(self, id, isosurf_id):
-        """!Unset isosurface mask
+        """Unset isosurface mask
         
-        @param id volume id
-        @param isosurf_id isosurface id (0 - MAX_ISOSURFS)
+        :param id: volume id
+        :param isosurf_id: isosurface id (0 - MAX_ISOSURFS)
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 isosurface not found
-        @return -3 setting attributes failed
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 isosurface not found
+        :return: -3 setting attributes failed
         """
         return self.UnsetIsosurfaceAttr(id, isosurf_id, ATT_MASK)
     
     def UnsetIsosurfaceTransp(self, id, isosurf_id):
-        """!Unset isosurface transparency
+        """Unset isosurface transparency
         
-        @param id volume id
-        @param isosurf_id isosurface id (0 - MAX_ISOSURFS)
+        :param id: volume id
+        :param isosurf_id: isosurface id (0 - MAX_ISOSURFS)
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 isosurface not found
-        @return -3 setting attributes failed
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 isosurface not found
+        :return: -3 setting attributes failed
         """
         return self.UnsetIsosurfaceAttr(id, isosurf_id, ATT_TRANSP)
     
     def UnsetIsosurfaceEmit(self, id, isosurf_id):
-        """!Unset isosurface emission (currently unused)
+        """Unset isosurface emission (currently unused)
         
-        @param id volume id
-        @param isosurf_id isosurface id (0 - MAX_ISOSURFS)
+        :param id: volume id
+        :param isosurf_id: isosurface id (0 - MAX_ISOSURFS)
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 isosurface not found
-        @return -3 setting attributes failed
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 isosurface not found
+        :return: -3 setting attributes failed
         """
         return self.UnsetIsosurfaceAttr(id, isosurf_id, ATT_EMIT)
     
     def UnsetIsosurfaceAttr(self, id, isosurf_id, attr):
-        """!Unset surface attribute
+        """Unset surface attribute
         
-        @param id surface id
-        @param isosurf_id isosurface id (0 - MAX_ISOSURFS)
-        @param attr attribute descriptor
+        :param id: surface id
+        :param isosurf_id: isosurface id (0 - MAX_ISOSURFS)
+        :param attr: attribute descriptor
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 isosurface not found
-        @return -2 on failure
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 isosurface not found
+        :return: -2 on failure
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1481,14 +1485,14 @@
         return 1
 
     def SetIsosurfaceMode(self, id, mode):
-        """!Set draw mode for isosurfaces
+        """Set draw mode for isosurfaces
         
-        @param id isosurface id
-        @param mode isosurface draw mode
+        :param id: isosurface id
+        :param mode: isosurface draw mode
         
-        @return 1 on success
-        @return -1 volume set not found
-        @return -2 on failure
+        :return: 1 on success
+        :return: -1 volume set not found
+        :return: -2 on failure
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1501,14 +1505,14 @@
         return 1
     
     def SetSliceMode(self, id, mode):
-        """!Set draw mode for slices
+        """Set draw mode for slices
         
-        @param id slice id
-        @param mode slice draw mode
+        :param id: slice id
+        :param mode: slice draw mode
         
-        @return 1 on success
-        @return -1 volume set not found
-        @return -2 on failure
+        :return: 1 on success
+        :return: -1 volume set not found
+        :return: -2 on failure
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1521,14 +1525,14 @@
         return 1
     
     def SetIsosurfaceRes(self, id, res):
-        """!Set draw resolution for isosurfaces
+        """Set draw resolution for isosurfaces
         
-        @param id isosurface id
-        @param res resolution value
+        :param id: isosurface id
+        :param res: resolution value
         
-        @return 1 on success
-        @return -1 volume set not found
-        @return -2 on failure
+        :return: 1 on success
+        :return: -1 volume set not found
+        :return: -2 on failure
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1541,14 +1545,14 @@
         return 1
     
     def SetSliceRes(self, id, res):
-        """!Set draw resolution for slices
+        """Set draw resolution for slices
         
-        @param id slice id
-        @param res resolution value
+        :param id: slice id
+        :param res: resolution value
         
-        @return 1 on success
-        @return -1 volume set not found
-        @return -2 on failure
+        :return: 1 on success
+        :return: -1 volume set not found
+        :return: -2 on failure
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1561,17 +1565,17 @@
         return 1
     
     def SetSlicePosition(self, id, slice_id, x1, x2, y1, y2, z1, z2, dir):
-        """!Set slice position
+        """Set slice position
         
-        @param id volume id
-        @param slice_id slice id
-        @param x1,x2,y1,y2,z1,z2 slice coordinates
-        @param dir axis
+        :param id: volume id
+        :param slice_id: slice id
+        :param x1,x2,y1,y2,z1,z2: slice coordinates
+        :param dir: axis
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 slice not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 slice not found
+        :return: -3 on failure
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1587,16 +1591,16 @@
         return 1
     
     def SetSliceTransp(self, id, slice_id, value):
-        """!Set slice transparency
+        """Set slice transparency
         
-        @param id volume id
-        @param slice_id slice id
-        @param value transparency value (0 - 255)
+        :param id: volume id
+        :param slice_id: slice id
+        :param value: transparency value (0 - 255)
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 slice not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 slice not found
+        :return: -3 on failure
         """
         
         if not GVL_vol_exists(id):
@@ -1613,16 +1617,16 @@
         return 1
     
     def SetIsosurfaceInOut(self, id, isosurf_id, inout):
-        """!Set inout mode
+        """Set inout mode
         
-        @param id volume id
-        @param isosurf_id isosurface id
-        @param inout mode true/false
+        :param id: volume id
+        :param isosurf_id: isosurface id
+        :param inout: mode true/false
         
-        @return 1 on success
-        @return -1 volume set not found
-        @return -2 isosurface not found
-        @return -3 on failure
+        :return: 1 on success
+        :return: -1 volume set not found
+        :return: -2 isosurface not found
+        :return: -3 on failure
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1638,12 +1642,12 @@
         return 1
     
     def GetVolumePosition(self, id):
-        """!Get volume position
+        """Get volume position
         
-        @param id volume id
+        :param id: volume id
         
-        @return x,y,z
-        @return zero-length vector on error
+        :return: x,y,z
+        :return: zero-length vector on error
         """
         if not GVL_vol_exists(id):
             return []
@@ -1657,14 +1661,14 @@
         return [x.value, y.value, z.value]
     
     def SetVolumePosition(self, id, x, y, z):
-        """!Set volume position
+        """Set volume position
         
-        @param id volume id
-        @param x,y,z translation values
+        :param id: volume id
+        :param x,y,z: translation values
         
-        @return 1 on success
-        @return -1 volume not found
-        @return -2 setting position failed
+        :return: 1 on success
+        :return: -1 volume not found
+        :return: -2 setting position failed
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1677,13 +1681,13 @@
         return 1
 
     def SetVolumeDrawBox(self, id, ifBox):
-        """!Display volume wire box
+        """Display volume wire box
         
-        @param id volume id
-        @param ifBox True to draw wire box, False otherwise
-        
-        @return 1 on success
-        @return -1 volume not found
+        :param id: volume id
+        :param ifBox: True to draw wire box, False otherwise
+        :type ifBox: bool
+        :return: 1 on success
+        :return: -1 volume not found
         """
         if not GVL_vol_exists(id):
             return -1
@@ -1698,11 +1702,11 @@
         return Nviz_get_current_cplane(self.data)
     
     def GetCPlanesCount(self):
-        """!Returns number of cutting planes"""
+        """Returns number of cutting planes"""
         return Nviz_num_cplanes(self.data) 
     
     def GetCPlaneRotation(self):
-        """!Returns rotation parameters of current cutting plane"""
+        """Returns rotation parameters of current cutting plane"""
         x, y, z = c_float(), c_float(), c_float()
         
         current = Nviz_get_current_cplane(self.data)
@@ -1711,7 +1715,7 @@
         return x.value, y.value, z.value
     
     def GetCPlaneTranslation(self):
-        """!Returns translation parameters of current cutting plane"""
+        """Returns translation parameters of current cutting plane"""
         x, y, z = c_float(), c_float(), c_float()
         
         current = Nviz_get_current_cplane(self.data)
@@ -1720,18 +1724,18 @@
         return x.value, y.value, z.value
     
     def SetCPlaneRotation(self, x, y, z):
-        """!Set current clip plane rotation
+        """Set current clip plane rotation
         
-        @param x,y,z rotation parameters
+        :param x,y,z: rotation parameters
         """
         current = Nviz_get_current_cplane(self.data)
         Nviz_set_cplane_rotation(self.data, current, x, y, z)
         Nviz_draw_cplane(self.data, -1, -1)
     
     def SetCPlaneTranslation(self, x, y, z):
-        """!Set current clip plane translation
+        """Set current clip plane translation
         
-        @param x,y,z translation parameters
+        :param x,y,z: translation parameters
         """
         current = Nviz_get_current_cplane(self.data)
         Nviz_set_cplane_translation(self.data, current, x, y, z)
@@ -1751,43 +1755,43 @@
         
         
     def SelectCPlane(self, index):
-        """!Select cutting plane
+        """Select cutting plane
         
-        @param index index of cutting plane
+        :param index: index of cutting plane
         """
         Nviz_on_cplane(self.data, index)
     
     def UnselectCPlane(self, index):
-        """!Unselect cutting plane
+        """Unselect cutting plane
         
-        @param index index of cutting plane
+        :param index: index of cutting plane
         """
         Nviz_off_cplane(self.data, index)
         
     def SetFenceColor(self, index):
-        """!Select current cutting plane
+        """Select current cutting plane
         
-        @param index type of fence - from 0 (off) to 4
-        """    
+        :param index: type of fence - from 0 (off) to 4
+        """  
         Nviz_set_fence_color(self.data, index)
             
     def GetXYRange(self):
-        """!Get xy range"""
+        """Get xy range"""
         return Nviz_get_xyrange(self.data)
     
     def GetZRange(self):
-        """!Get z range"""
+        """Get z range"""
         min, max = c_float(), c_float()
         Nviz_get_zrange(self.data, byref(min), byref(max))
         return min.value, max.value
     
     def SaveToFile(self, filename, width = 20, height = 20, itype = 'ppm'):
-        """!Save current GL screen to ppm/tif file
+        """Save current GL screen to ppm/tif file
 
-        @param filename file name
-        @param width image width
-        @param height image height
-        @param itype image type ('ppm' or 'tif')
+        :param filename: file name
+        :param width: image width
+        :param height: image height
+        :param itype: image type ('ppm' or 'tif')
         """
         widthOrig  = self.width
         heightOrig = self.height
@@ -1803,21 +1807,21 @@
         self.ResizeWindow(widthOrig, heightOrig)
 
     def DrawLightingModel(self):
-        """!Draw lighting model"""
+        """Draw lighting model"""
         if self.showLight:
             Nviz_draw_model(self.data)
 
     def DrawFringe(self):
-        """!Draw fringe"""
+        """Draw fringe"""
         Nviz_draw_fringe(self.data)
         
     def SetFringe(self, sid, color, elev, nw = False, ne = False, sw = False, se = False):
-        """!Set fringe
+        """Set fringe
 
-        @param sid surface id
-        @param color color
-        @param elev elevation (height)
-        @param nw,ne,sw,se fringe edges (turn on/off)
+        :param sid: surface id
+        :param color: color
+        :param elev: elevation (height)
+        :param nw,ne,sw,se: fringe edges (turn on/off)
         """
         scolor = str(color[0]) + ':' + str(color[1]) + ':' + str(color[2])
         Nviz_set_fringe(self.data,
@@ -1825,48 +1829,48 @@
                         elev, int(nw), int(ne), int(sw), int(se))
     
     def DrawArrow(self):
-        """!Draw north arrow
+        """Draw north arrow
         """
         return Nviz_draw_arrow(self.data)
         
     def SetArrow(self, sx, sy, size, color):
-        """!Set north arrow from canvas coordinates
+        """Set north arrow from canvas coordinates
         
-        @param sx,sy canvas coordinates
-        @param size arrow length
-        @param color arrow color
+        :param sx,sy: canvas coordinates
+        :param size: arrow length
+        :param color: arrow color
         """
         return Nviz_set_arrow(self.data, sx, sy, size, Nviz_color_from_str(color))       
         
     def DeleteArrow(self):
-        """!Delete north arrow
+        """Delete north arrow
         """
         Nviz_delete_arrow(self.data)
     
     def SetScalebar(self, id, sx, sy, size, color):
-        """!Set scale bar from canvas coordinates
+        """Set scale bar from canvas coordinates
         
-        @param sx,sy canvas coordinates
-        @param id scale bar id
-        @param size scale bar length
-        @param color scale bar color
+        :param sx,sy: canvas coordinates
+        :param id: scale bar id
+        :param size: scale bar length
+        :param color: scale bar color
         """
         return Nviz_set_scalebar(self.data, id, sx, sy, size, Nviz_color_from_str(color))
     
     def DrawScalebar(self):
-        """!Draw scale bar
+        """Draw scale bar
         """
         return Nviz_draw_scalebar(self.data)
     
     def DeleteScalebar(self, id):
-        """!Delete scalebar
+        """Delete scalebar
         """
         Nviz_delete_scalebar(self.data, id)
         
     def GetPointOnSurface(self, sx, sy):
-        """!Get point on surface
+        """Get point on surface
 
-        @param sx,sy canvas coordinates (LL)
+        :param sx,sy: canvas coordinates (LL)
         """
         sid = c_int()
         x   = c_float()
@@ -1880,9 +1884,9 @@
         return (sid.value, x.value, y.value, z.value)
 
     def QueryMap(self, sx, sy):
-        """!Query surface map
+        """Query surface map
 
-        @param sx,sy canvas coordinates (LL)
+        :param sx,sy: canvas coordinates (LL)
         """
         sid, x, y, z = self.GetPointOnSurface(sx, sy)
         if not sid:
@@ -1901,7 +1905,7 @@
                  'color'     : valstr.value }
     
     def GetDistanceAlongSurface(self, sid, p1, p2, useExag = True):
-        """!Get distance measured along surface"""
+        """Get distance measured along surface"""
         d = c_float()
         
         GS_get_distance_alongsurf(sid, p1[0], p1[1], p2[0], p2[1],
@@ -1910,9 +1914,9 @@
         return d.value
 
     def GetRotationParameters(self, dx, dy):
-        """!Get rotation parameters (angle, x, y, z axes)
+        """Get rotation parameters (angle, x, y, z axes)
         
-        @param dx,dy difference from previous mouse drag event
+        :param dx,dy: difference from previous mouse drag event
         """
         modelview = (c_double * 16)()
         Nviz_get_modelview(byref(modelview))
@@ -1934,24 +1938,24 @@
         return angle, x, y, z 
        
     def Rotate(self, angle, x, y, z):
-        """!Set rotation parameters
+        """Set rotation parameters
         Rotate scene (difference from current state).
 
-        @param angle angle
-        @param x,y,z axis coordinate
+        :param angle: angle
+        :param x,y,z: axis coordinate
         """
         Nviz_set_rotation(angle, x, y, z)
         
     def UnsetRotation(self):
-        """!Stop rotating the scene"""
+        """Stop rotating the scene"""
         Nviz_unset_rotation()
         
     def ResetRotation(self):
-        """!Reset scene rotation"""
+        """Reset scene rotation"""
         Nviz_init_rotation()
         
     def GetRotationMatrix(self):
-        """!Get rotation matrix"""
+        """Get rotation matrix"""
         matrix = (c_double * 16)()
         GS_get_rotation_matrix(byref(matrix))
         returnMatrix = []
@@ -1960,7 +1964,7 @@
         return returnMatrix
         
     def SetRotationMatrix(self, matrix):
-        """!Set rotation matrix"""
+        """Set rotation matrix"""
         mtrx = (c_double * 16)()
         for i in range(len(matrix)):
             mtrx[i] = matrix[i]
@@ -1970,11 +1974,11 @@
         Nviz_set_2D(self.width, self.height)
         
     def FlyThrough(self, flyInfo, mode, exagInfo):
-        """!Fly through the scene
+        """Fly through the scene
         
-        @param flyInfo fly parameters
-        @param mode 0 or 1 for different fly behaviour
-        @param exagInfo parameters changing fly speed
+        :param flyInfo: fly parameters
+        :param mode: 0 or 1 for different fly behaviour
+        :param exagInfo: parameters changing fly speed
         """
         fly = (c_float * 3)()
         for i, item in enumerate(flyInfo):
@@ -1985,13 +1989,13 @@
         Nviz_flythrough(self.data, fly, exag, mode)
         
 class Texture(object):
-    """!Class representing OpenGL texture"""
+    """Class representing OpenGL texture"""
     def __init__(self, filepath, overlayId, coords):
-        """!Load image to texture
+        """Load image to texture
 
-        @param filepath path to image file
-        @param overlayId id of overlay (1 for legend, 101 and more for text)
-        @param coords image coordinates
+        :param filepath: path to image file
+        :param overlayId: id of overlay (1 for legend, 101 and more for text)
+        :param coords: image coordinates
         """
         self.path = filepath
         self.image = wx.Image(filepath, wx.BITMAP_TYPE_ANY)
@@ -2020,13 +2024,13 @@
             self.textureId = self.Load()
             
     def __del__(self):
-        """!Delete texture"""
+        """Delete texture"""
         if self.textureId:
             Nviz_del_texture(self.textureId)
         grass.try_remove(self.path)
             
     def Resize(self):    
-        """!Resize image to match 2^n"""
+        """Resize image to match 2^n"""
         n = m = 1
         while self.width > pow(2,n):
             n += 1
@@ -2037,7 +2041,7 @@
         self.height = self.image.GetHeight()
         
     def Load(self):
-        """!Load image to texture"""  
+        """Load image to texture"""
         if self.image.HasAlpha():
             bytesPerPixel = 4
         else:
@@ -2067,12 +2071,12 @@
         return id
         
     def Draw(self):
-        """!Draw texture as an image"""
+        """Draw texture as an image"""
         Nviz_draw_image(self.coords[0], self.coords[1], self.width, self.height, self.textureId)
     
         
     def SetBounds(self, rect):
-        """!Set Bounding Rectangle"""
+        """Set Bounding Rectangle"""
         self.bounds = rect
         
     def HitTest(self, x, y, radius):
@@ -2081,19 +2085,19 @@
         return copy.ContainsXY(x, y)
     
     def MoveTexture(self, dx, dy):
-        """!Move texture on the screen"""
+        """Move texture on the screen"""
         self.coords[0] += dx
         self.coords[1] += dy
         self.bounds.OffsetXY(dx, dy)
     
     def SetCoords(self, coords):
-        """!Set coordinates"""
+        """Set coordinates"""
         dx = coords[0] - self.coords[0]
         dy = coords[1] - self.coords[1]
         self.MoveTexture(dx, dy)
         
     def GetId(self):
-        """!Returns image id."""
+        """Returns image id."""
         return self.id
     
     def SetActive(self, active = True):
@@ -2103,42 +2107,42 @@
         return self.active
         
 class ImageTexture(Texture):
-    """!Class representing OpenGL texture as an overlay image"""
+    """Class representing OpenGL texture as an overlay image"""
     def __init__(self, filepath, overlayId, coords, cmd):
-        """!Load image to texture
+        """Load image to texture
 
-        @param filepath path to image file
-        @param overlayId id of overlay (1 for legend)
-        @param coords image coordinates
-        @param cmd d.legend command      
+        :param filepath: path to image file
+        :param overlayId: id of overlay (1 for legend)
+        :param coords: image coordinates
+        :param cmd: d.legend command      
         """
         Texture.__init__(self, filepath = filepath, overlayId = overlayId, coords = coords)
         
         self.cmd = cmd
         
     def GetCmd(self):
-        """!Returns overlay command."""
+        """Returns overlay command."""
         return self.cmd
         
     def Corresponds(self, item):
         return sorted(self.GetCmd()) == sorted(item.GetCmd())
         
 class TextTexture(Texture):
-    """!Class representing OpenGL texture as a text label"""
+    """Class representing OpenGL texture as a text label"""
     def __init__(self, filepath, overlayId, coords, textDict):
-        """!Load image to texture
+        """Load image to texture
 
-        @param filepath path to image file
-        @param overlayId id of overlay (101 and more for text)
-        @param coords text coordinates
-        @param textDict text properties      
+        :param filepath: path to image file
+        :param overlayId: id of overlay (101 and more for text)
+        :param coords: text coordinates
+        :param textDict: text properties      
         """
         Texture.__init__(self, filepath = filepath, overlayId = overlayId, coords = coords)
         
         self.textDict = textDict
         
     def GetTextDict(self):
-        """!Returns text properties."""
+        """Returns text properties."""
         return self.textDict
         
         

Modified: grass/trunk/gui/wxpython/psmap/dialogs.py
===================================================================
--- grass/trunk/gui/wxpython/psmap/dialogs.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/psmap/dialogs.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package psmap.dialogs
 
 @brief dialogs for wxPsMap
@@ -67,7 +67,7 @@
 
     
 class TCValidator(wx.PyValidator):
-    """!validates input in textctrls, combobox, taken from wxpython demo"""
+    """validates input in textctrls, combobox, taken from wxpython demo"""
     def __init__(self, flag = None):
         wx.PyValidator.__init__(self)
         self.flag = flag
@@ -109,7 +109,7 @@
 
 
 class PenStyleComboBox(wx.combo.OwnerDrawnComboBox):
-    """!Combo for selecting line style, taken from wxpython demo"""
+    """Combo for selecting line style, taken from wxpython demo"""
 
     # Overridden from OwnerDrawnComboBox, called to draw each
     # item in the list
@@ -141,7 +141,7 @@
 
         
     def OnDrawBackground(self, dc, rect, item, flags):
-        """!Overridden from OwnerDrawnComboBox, called for drawing the
+        """Overridden from OwnerDrawnComboBox, called for drawing the
         background area of each item."""
         # If the item is selected, or its item # iseven, or we are painting the
         # combo control itself, then use the default rendering.
@@ -157,18 +157,18 @@
         dc.DrawRectangleRect(rect);
 
     def OnMeasureItem(self, item):
-        """!Overridden from OwnerDrawnComboBox, should return the height
+        """Overridden from OwnerDrawnComboBox, should return the height
         needed to display an item in the popup, or -1 for default"""
         return 30
 
     def OnMeasureItemWidth(self, item):
-        """!Overridden from OwnerDrawnComboBox.  Callback for item width, or
+        """Overridden from OwnerDrawnComboBox.  Callback for item width, or
         -1 for default/undetermined"""
         return -1; # default - will be measured from text width  
     
     
 class CheckListCtrl(wx.ListCtrl, CheckListCtrlMixin, ListCtrlAutoWidthMixin):
-    """!List control for managing order and labels of vector maps in legend"""
+    """List control for managing order and labels of vector maps in legend"""
     def __init__(self, parent):
         wx.ListCtrl.__init__(self, parent, id = wx.ID_ANY, 
                              style = wx.LC_REPORT|wx.LC_SINGLE_SEL|wx.BORDER_SUNKEN|wx.LC_VRULES|wx.LC_HRULES)
@@ -216,7 +216,7 @@
             parent.position['yCtrl'].SetValue("%5.3f" % y)
         
     def AddExtendedPosition(self, panel, gridBagSizer, dialogDict):
-        """!Add widgets for setting position relative to paper and to map"""
+        """Add widgets for setting position relative to paper and to map"""
         panel.position = dict()
         positionLabel = wx.StaticText(panel, id = wx.ID_ANY, label = _("Position is given:"))
         panel.position['toPaper'] = wx.RadioButton(panel, id = wx.ID_ANY, label = _("relative to paper"), style = wx.RB_GROUP)
@@ -321,17 +321,17 @@
             return False
         
     def OnOK(self, event):
-        """!Apply changes, close dialog"""
+        """Apply changes, close dialog"""
         ok = self.OnApply(event)
         if ok:
             self.Close()
     
     def OnCancel(self, event):
-        """!Close dialog"""
+        """Close dialog"""
         self.Close()
 
     def OnClose(self, event):
-        """!Destroy dialog and delete it from open dialogs"""
+        """Destroy dialog and delete it from open dialogs"""
         if self.objectType:
             for each in  self.objectType:
                 if each in self.parent.openDialogs:
@@ -530,7 +530,7 @@
         return sizeList
     
 class MapDialog(PsmapDialog):
-    """!Dialog for map frame settings and optionally  raster and vector map selection"""
+    """Dialog for map frame settings and optionally  raster and vector map selection"""
     def __init__(self, parent, id, settings,  rect = None, notebook = False):
         PsmapDialog.__init__(self, parent = parent, id = id, title = "", settings = settings)
  
@@ -564,7 +564,7 @@
         
         
     def OnApply(self, event):
-        """!Apply changes"""
+        """Apply changes"""
         if self.isNotebook:
             okV = self.vPanel.update()
             okR = self.rPanel.update()
@@ -583,13 +583,13 @@
         return False
     
     def OnCancel(self, event):
-        """!Close dialog and remove tmp red box"""
+        """Close dialog and remove tmp red box"""
         self.parent.canvas.pdcTmp.RemoveId(self.parent.canvas.idZoomBoxTmp)
         self.parent.canvas.Refresh() 
         self.Close()
         
     def updateDialog(self):
-        """!Update raster and vector information"""
+        """Update raster and vector information"""
         if self.mPanel.scaleChoice.GetSelection() == 0:
             if self.mPanel.rasterTypeRadio.GetValue():
                 if 'raster' in self.parent.openDialogs:
@@ -607,7 +607,7 @@
                     self.mPanel.drawMap.SetValue(found)    
                         
 class MapFramePanel(wx.Panel):
-    """!wx.Panel with map (scale, region, border) settings"""
+    """wx.Panel with map (scale, region, border) settings"""
     def __init__(self, parent, id, settings, rect, notebook = True):
         wx.Panel.__init__(self, parent, id = wx.ID_ANY, style = wx.TAB_TRAVERSAL)
 
@@ -668,7 +668,7 @@
         
         
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         border = wx.BoxSizer(wx.VERTICAL)
         
         box   = wx.StaticBox (parent = self, id = wx.ID_ANY, label = " %s " % _("Map frame"))
@@ -810,7 +810,7 @@
         
      
     def OnMap(self, event):
-        """!Selected map or region changing"""
+        """Selected map or region changing"""
         
         if self.select.GetValue():
             self.selected = self.select.GetValue() 
@@ -844,7 +844,7 @@
         
             
     def OnScaleChoice(self, event):
-        """!Selected scale type changing"""
+        """Selected scale type changing"""
         
         scaleType = self.scaleChoice.GetSelection()
         if self.scaleType != scaleType:
@@ -913,7 +913,7 @@
                 self.northingTextCtrl.SetValue(str(self.center[scaleType][1]))
                 
     def OnElementType(self, event):
-        """!Changes data in map selection tree ctrl popup"""
+        """Changes data in map selection tree ctrl popup"""
         if self.rasterTypeRadio.GetValue():
             mapType = 'raster'
         else:
@@ -925,16 +925,16 @@
         self.mapType = mapType    
         
     def OnBorder(self, event):
-        """!Enables/disable the part relating to border of map frame"""
+        """Enables/disable the part relating to border of map frame"""
         for each in (self.borderColorText, self.borderWidthText, self.borderColourPicker, self.borderWidthCtrl):
             each.Enable(self.borderCheck.GetValue())
             
     def getId(self):
-        """!Returns id of raster map"""
+        """Returns id of raster map"""
         return self.id
             
     def update(self):
-        """!Save changes"""
+        """Save changes"""
         mapFrameDict = dict(self.mapFrameDict)
         # resolution
         mapFrameDict['resolution'] = self.resolutionSpin.GetValue()
@@ -1134,7 +1134,7 @@
         return True
         
 class RasterPanel(wx.Panel):
-    """!Panel for raster map settings"""
+    """Panel for raster map settings"""
     def __init__(self, parent, id, settings,  notebook = True):
         wx.Panel.__init__(self, parent, id = wx.ID_ANY, style = wx.TAB_TRAVERSAL)
         self.instruction = settings
@@ -1158,7 +1158,7 @@
         self.OnRaster(None)
             
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         border = wx.BoxSizer(wx.VERTICAL)
         
         # choose raster map
@@ -1201,7 +1201,7 @@
         self.Fit()
         
     def OnRaster(self, event):
-        """!Enable/disable raster selection"""
+        """Enable/disable raster selection"""
         self.rasterSelect.Enable(self.rasterYesRadio.GetValue())
         
     def update(self):
@@ -1240,7 +1240,7 @@
         return self.id
   
 class VectorPanel(wx.Panel):
-    """!Panel for vector maps settings"""
+    """Panel for vector maps settings"""
     def __init__(self, parent, id, settings, notebook = True):
         wx.Panel.__init__(self, parent, id = wx.ID_ANY, style = wx.TAB_TRAVERSAL)
         
@@ -1272,7 +1272,7 @@
             self.parent = self.parent.GetParent()
             
     def _layout(self):
-        """!Do layout"""
+        """Do layout"""
         border = wx.BoxSizer(wx.VERTICAL)
         
         # choose vector map
@@ -1343,7 +1343,7 @@
         self.Bind(wx.EVT_LISTBOX_DCLICK, self.OnProperties, self.listbox)
 
     def OnVector(self, event):
-        """!Gets info about toplogy and enables/disables choices point/line/area"""
+        """Gets info about toplogy and enables/disables choices point/line/area"""
         vmap = self.select.GetValue()   
         try:     
             topoInfo = grass.vector_info_topo(map = vmap)
@@ -1362,7 +1362,7 @@
             self.AddVector.SetFocus()        
             
     def OnAddVector(self, event):
-        """!Adds vector map to list"""
+        """Adds vector map to list"""
         vmap = self.select.GetValue()
         if vmap:
             mapname = vmap.split('@')[0]
@@ -1391,7 +1391,7 @@
             self.enableButtons()
             
     def OnDelete(self, event):
-        """!Deletes vector map from the list"""
+        """Deletes vector map from the list"""
         if self.listbox.GetSelections():
             pos = self.listbox.GetSelection()
             id = self.vectorList[pos][2]
@@ -1412,7 +1412,7 @@
             
             
     def OnUp(self, event):
-        """!Moves selected map to top"""
+        """Moves selected map to top"""
         if self.listbox.GetSelections():
             pos = self.listbox.GetSelection()
             if pos:
@@ -1427,7 +1427,7 @@
 
             
     def OnDown(self, event):
-        """!Moves selected map to bottom"""
+        """Moves selected map to bottom"""
         if self.listbox.GetSelections():
             pos = self.listbox.GetSelection()
             if pos != len(self.vectorList) - 1:
@@ -1441,7 +1441,7 @@
 
     
     def OnProperties(self, event):
-        """!Opens vector map properties dialog"""
+        """Opens vector map properties dialog"""
         if self.listbox.GetSelections():
             pos = self.listbox.GetSelection()
             id = self.vectorList[pos][2]
@@ -1453,7 +1453,7 @@
             self.parent.FindWindowById(wx.ID_OK).SetFocus()
            
     def enableButtons(self, enable = True):
-        """!Enable/disable up, down, properties, delete buttons"""
+        """Enable/disable up, down, properties, delete buttons"""
         self.btnUp.Enable(enable)
         self.btnDown.Enable(enable)
         self.btnProp.Enable(enable)
@@ -1471,7 +1471,7 @@
                 self.listbox.EnsureVisible(selected)  
               
     def reposition(self):
-        """!Update position in legend, used only if there is no vlegend yet"""
+        """Update position in legend, used only if there is no vlegend yet"""
         for i in range(len(self.vectorList)):
             if self.vectorList[i][3]:
                 self.vectorList[i][3] = i + 1
@@ -1542,7 +1542,7 @@
         return True
     
     def updateDialog(self):
-        """!Update information (not used)"""
+        """Update information (not used)"""
         pass
 ##        if 'map' in self.parent.openDialogs:
 ##            if self.parent.openDialogs['map'].mPanel.rasterTypeRadio.GetValue()\
@@ -1572,7 +1572,7 @@
         return True
         
     def updateDialog(self):
-        """!Update information (not used)"""
+        """Update information (not used)"""
         pass
         
 class VPropertiesDialog(PsmapDialog):
@@ -2190,7 +2190,7 @@
         return panel
 
     def OnLayer(self, event):
-        """!Change columns on layer change """
+        """Change columns on layer change """
         if self.layerChoice.GetStringSelection() == self.currLayer:
             return
         self.currLayer = self.layerChoice.GetStringSelection()
@@ -2274,7 +2274,7 @@
                 widget.GetWindow().Enable(enable)
                 
     def getColsChoice(self, parent):
-        """!Returns a wx.Choice with table columns"""
+        """Returns a wx.Choice with table columns"""
         if self.connection:
             cols = self.mapDBInfo.GetColumns(self.mapDBInfo.layers[int(self.currLayer)]['table']) 
         else:
@@ -2469,7 +2469,7 @@
         self.notebook.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGING, self.OnPageChanging)
         
     def OnPageChanging(self, event):
-        """!Workaround to scroll up to see the checkbox"""
+        """Workaround to scroll up to see the checkbox"""
         wx.CallAfter(self.FindWindowByName('rasterPanel').ScrollChildIntoView,
                                             self.FindWindowByName('showRLegend'))
         wx.CallAfter(self.FindWindowByName('vectorPanel').ScrollChildIntoView,
@@ -2683,7 +2683,7 @@
         return panel
     
     def sizePositionFont(self, legendType, parent, mainSizer):
-        """!Insert widgets for size, position and font control"""
+        """Insert widgets for size, position and font control"""
         if legendType == 'raster':
             legendDict = self.rLegendDict  
         else:
@@ -2808,7 +2808,7 @@
     #   some enable/disable methods  
         
     def OnIsLegend(self, event):
-        """!Enables and disables controls, it depends if raster or vector legend is checked"""
+        """Enables and disables controls, it depends if raster or vector legend is checked"""
         page = self.notebook.GetSelection()
         if page == 0 or event is None:
             children = self.panelRaster.GetChildren()
@@ -2855,7 +2855,7 @@
         self.OnDiscrete(None)
         
     def OnDiscrete(self, event):
-        """! Change control according to the type of legend"""
+        """Change control according to the type of legend"""
         enabledSize = self.panelRaster.heightOrColumnsCtrl.IsEnabled()
         self.panelRaster.heightOrColumnsCtrl.Destroy()
         if self.discrete.GetValue():
@@ -2904,7 +2904,7 @@
             self.maxText.Enable()           
      
     def OnUp(self, event):
-        """!Moves selected map up, changes order in vector legend"""
+        """Moves selected map up, changes order in vector legend"""
         if self.vectorListCtrl.GetFirstSelected() != -1:
             pos = self.vectorListCtrl.GetFirstSelected()
             if pos:
@@ -2921,7 +2921,7 @@
                 self.vectorListCtrl.Select(selected)
        
     def OnDown(self, event):
-        """!Moves selected map down, changes order in vector legend"""
+        """Moves selected map down, changes order in vector legend"""
         if self.vectorListCtrl.GetFirstSelected() != -1:
             pos = self.vectorListCtrl.GetFirstSelected()
             if pos != self.vectorListCtrl.GetItemCount() - 1:
@@ -2938,7 +2938,7 @@
                 self.vectorListCtrl.Select(selected)
                 
     def OnEditLabel(self, event):
-        """!Change legend label of vector map"""
+        """Change legend label of vector map"""
         if self.vectorListCtrl.GetFirstSelected() != -1:
             idx = self.vectorListCtrl.GetFirstSelected()
             default = self.vectorListCtrl.GetItem(idx, 1).GetText()
@@ -2952,7 +2952,7 @@
     def OnSpan(self, event):
         self.panelVector.spanTextCtrl.Enable(self.panelVector.spanRadio.GetValue())
     def OnFont(self, event):
-        """!Changes default width according to fontsize, width [inch] = fontsize[pt]/24"""   
+        """Changes default width according to fontsize, width [inch] = fontsize[pt]/24""" 
 ##        fontsize = self.panelVector.font['fontCtrl'].GetSelectedFont().GetPointSize() 
         fontsize = self.panelVector.font['fontSizeCtrl'].GetValue()
         unit = self.unitConv.findUnit(self.panelVector.units['unitsCtrl'].GetStringSelection())
@@ -2961,11 +2961,11 @@
         self.panelVector.widthCtrl.SetValue("%3.2f" % width)
         
     def OnBorder(self, event):
-        """!Enables/disables colorPickerCtrl for border"""    
+        """Enables/disables colorPickerCtrl for border"""  
         self.borderColorCtrl.Enable(self.borderCheck.GetValue())
     
     def updateRasterLegend(self):
-        """!Save information from raster legend dialog to dictionary"""
+        """Save information from raster legend dialog to dictionary"""
 
         #is raster legend
         if not self.isRLegend.GetValue():
@@ -3068,7 +3068,7 @@
         return True
     
     def updateVectorLegend(self):
-        """!Save information from vector legend dialog to dictionary"""
+        """Save information from vector legend dialog to dictionary"""
 
         vector = self.instruction.FindInstructionByType('vector')
         if vector:
@@ -3164,7 +3164,7 @@
         return False
         
     def updateDialog(self):
-        """!Update legend coordinates after moving"""
+        """Update legend coordinates after moving"""
         
         # raster legend    
         if 'rect' in self.rLegendDict:
@@ -3396,7 +3396,7 @@
         return True
     
     def updateDialog(self):
-        """!Update mapinfo coordinates, after moving"""
+        """Update mapinfo coordinates, after moving"""
         x, y = self.mapinfoDict['where']
         currUnit = self.unitConv.findUnit(self.panel.units['unitsCtrl'].GetStringSelection())
         x = self.unitConv.convert(value = x, fromUnit = 'inch', toUnit = currUnit)
@@ -3405,7 +3405,7 @@
         self.panel.position['yCtrl'].SetValue("%5.3f" % y)
              
 class ScalebarDialog(PsmapDialog):
-    """!Dialog for scale bar"""
+    """Dialog for scale bar"""
     def __init__(self, parent, id, settings):
         PsmapDialog.__init__(self, parent = parent, id = id, title = "Scale bar settings", settings = settings)
         self.objectType = ('scalebar',)
@@ -3581,7 +3581,7 @@
         return panel
                            
     def update(self):
-        """!Save information from dialog"""
+        """Save information from dialog"""
 
         #units
         currUnit = self.unitConv.findUnit(self.panel.units['unitsCtrl'].GetStringSelection())
@@ -3659,7 +3659,7 @@
         return True
     
     def updateDialog(self):
-        """!Update scalebar coordinates, after moving"""
+        """Update scalebar coordinates, after moving"""
         x, y = self.scalebarDict['rect'][:2]
         currUnit = self.unitConv.findUnit(self.panel.units['unitsCtrl'].GetStringSelection())
         x = self.unitConv.convert(value = x, fromUnit = 'inch', toUnit = currUnit)
@@ -4040,7 +4040,7 @@
         return True
     
     def updateDialog(self):
-        """!Update text coordinates, after moving"""
+        """Update text coordinates, after moving"""
         # XY coordinates
         x, y = self.textDict['where'][:2]
         currUnit = self.unitConv.findUnit(self.positionPanel.units['unitsCtrl'].GetStringSelection())
@@ -4054,7 +4054,7 @@
         self.positionPanel.position['nCtrl'].SetValue(str(self.textDict['north']))
         
 class ImageDialog(PsmapDialog):
-    """!Dialog for setting image properties.
+    """Dialog for setting image properties.
     
     It's base dialog for North Arrow dialog.
     """
@@ -4096,7 +4096,7 @@
         
         
     def _newObject(self):
-        """!Create corresponding instruction object"""
+        """Create corresponding instruction object"""
         return Image(self.id, self.instruction)
         
     def _imagePanel(self, notebook):
@@ -4245,7 +4245,7 @@
         return panel
         
     def OnDirChanged(self, event):
-        """!Image directory changed"""
+        """Image directory changed"""
         path = self.imagePanel.image['dir'].GetValue()
         try:
             files = os.listdir(path)
@@ -4284,14 +4284,14 @@
                 widget.GetWindow().Disable()
                 
     def _getImageDirectory(self):
-        """!Default image directory"""
+        """Default image directory"""
         return os.getcwd()
         
     def _addConvergence(self, panel, gridBagSizer):
         pass
         
     def OnImageSelectionChanged(self, event):
-        """!Image selected, show preview and size"""
+        """Image selected, show preview and size"""
         if not self.imagePanel.image['dir']: # event is emitted when closing dialog an it causes error
             return
             
@@ -4329,7 +4329,7 @@
             pass
     
     def ScaleToPreview(self, img):
-        """!Scale image to preview size"""
+        """Scale image to preview size"""
         w = img.GetWidth()
         h = img.GetHeight()
         if w <= self.previewSize[0] and h <= self.previewSize[1]:
@@ -4343,7 +4343,7 @@
         return img.Scale(newW, newH, wx.IMAGE_QUALITY_HIGH)
         
     def DrawWarningText(self, warning):
-        """!Draw text on preview window"""
+        """Draw text on preview window"""
         buffer = wx.EmptyBitmap(*self.previewSize)
         dc = wx.MemoryDC()
         dc.SelectObject(buffer)
@@ -4357,7 +4357,7 @@
         dc.SelectObject(wx.NullBitmap)
         
     def DrawBitmap(self, bitmap):
-        """!Draw bitmap, center it if smaller than preview size"""
+        """Draw bitmap, center it if smaller than preview size"""
         if bitmap.GetWidth() <= self.previewSize[0] and bitmap.GetHeight() <= self.previewSize[1]:
             buffer = wx.EmptyBitmap(*self.previewSize)
             dc = wx.MemoryDC()
@@ -4374,14 +4374,14 @@
         self.imagePanel.Refresh()
             
     def SetSizeInfoLabel(self, image):
-        """!Update image size label"""
+        """Update image size label"""
         self.imagePanel.image['sizeInfo'].SetLabel(_("size: %(width)s x %(height)s pts") % \
                                                        { 'width'  : image.GetWidth(),
                                                          'height' : image.GetHeight() })
         self.imagePanel.image['sizeInfo'].GetContainingSizer().Layout()
         
     def ClearPreview(self):
-        """!Clear preview window"""
+        """Clear preview window"""
         buffer = wx.EmptyBitmap(*self.previewSize)
         dc = wx.MemoryDC()
         dc.SelectObject(buffer)
@@ -4474,7 +4474,7 @@
         return True
         
     def updateDialog(self):
-        """!Update text coordinates, after moving"""
+        """Update text coordinates, after moving"""
         # XY coordinates
         x, y = self.imageDict['where'][:2]
         currUnit = self.unitConv.findUnit(self.positionPanel.units['unitsCtrl'].GetStringSelection())
@@ -4522,7 +4522,7 @@
             
         
 class PointDialog(PsmapDialog):
-    """!Dialog for setting point properties."""
+    """Dialog for setting point properties."""
     def __init__(self, parent, id, settings, coordinates = None, pointPanelName = _("Point")):
         PsmapDialog.__init__(self, parent = parent, id = id, title = "Point settings",
                              settings = settings)
@@ -4798,7 +4798,7 @@
         return True
         
     def updateDialog(self):
-        """!Update text coordinates, after moving"""
+        """Update text coordinates, after moving"""
         # XY coordinates
         x, y = self.pointDict['where'][:2]
         currUnit = self.unitConv.findUnit(self.positionPanel.units['unitsCtrl'].GetStringSelection())
@@ -4813,9 +4813,9 @@
         
 class RectangleDialog(PsmapDialog):
     def __init__(self, parent, id, settings, type = 'rectangle', coordinates = None):
-        """!
+        """
 
-        @param coordinates begin and end point coordinate (wx.Point, wx.Point)
+        :param coordinates: begin and end point coordinate (wx.Point, wx.Point)
         """
         if type == 'rectangle':
             title = _("Rectangle settings")
@@ -4968,7 +4968,7 @@
         return True
 
     def updateDialog(self):
-        """!Update text coordinates, after moving"""
+        """Update text coordinates, after moving"""
         pass
 
 

Modified: grass/trunk/gui/wxpython/psmap/frame.py
===================================================================
--- grass/trunk/gui/wxpython/psmap/frame.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/psmap/frame.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package psmap.frame
 
 @brief GUI for ps.map
@@ -49,13 +49,13 @@
 class PsMapFrame(wx.Frame):
     def __init__(self, parent = None, id = wx.ID_ANY,
                  title = _("GRASS GIS Cartographic Composer"), **kwargs):
-        """!Main window of ps.map GUI
+        """Main window of ps.map GUI
         
-        @param parent parent window
-        @param id window id
-        @param title window title
+        :param parent: parent window
+        :param id: window id
+        :param title: window title
         
-        @param kwargs wx.Frames' arguments
+        :param kwargs: wx.Frames' arguments
         """
         self.parent = parent
 
@@ -176,7 +176,7 @@
             wx.CallAfter(self._showErrMsg)
         
     def _showErrMsg(self):
-        """!Show error message (missing preview)
+        """Show error message (missing preview)
         """
         GError(parent = self,
                message = _("Python Imaging Library is not available.\n"
@@ -184,7 +184,7 @@
                showTraceback = False)
         
     def _layout(self):
-        """!Do layout
+        """Do layout
         """
         mainSizer = wx.BoxSizer(wx.VERTICAL)
         if globalvar.hasAgw:
@@ -207,23 +207,23 @@
 
         
     def InstructionFile(self):
-        """!Creates mapping instructions"""
+        """Creates mapping instructions"""
         
         return str(self.instruction)
 
     def OnPSFile(self, event):
-        """!Generate PostScript"""
+        """Generate PostScript"""
         filename = self.getFile(wildcard = "PostScript (*.ps)|*.ps|Encapsulated PostScript (*.eps)|*.eps")
         if filename:
             self.PSFile(filename)
     
     def OnPsMapDialog(self, event):
-        """!Launch ps.map dialog
+        """Launch ps.map dialog
         """
         GUI(parent = self).ParseCommand(cmd = ['ps.map'])
 
     def OnPDFFile(self, event):
-        """!Generate PDF from PS with ps2pdf if available"""
+        """Generate PDF from PS with ps2pdf if available"""
         if not sys.platform == 'win32':
             try:
                 p = grass.Popen(["ps2pdf"], stderr = grass.PIPE)
@@ -239,11 +239,11 @@
             self.PSFile(filename, pdf = True)   
             
     def OnPreview(self, event):
-        """!Run ps.map and show result"""
+        """Run ps.map and show result"""
         self.PSFile()
         
     def PSFile(self, filename = None, pdf = False):
-        """!Create temporary instructions file and run ps.map with output = filename"""
+        """Create temporary instructions file and run ps.map with output = filename"""
         instrFile = grass.tempfile()
         instrFileFd = open(instrFile, mode = 'w')
         instrFileFd.write(self.InstructionFile())
@@ -285,7 +285,7 @@
                                                'pdfname' : pdfname, 'temp' : temp, 'regionOld' : regOld})
         
     def OnCmdDone(self, event):
-        """!ps.map process finished"""
+        """ps.map process finished"""
         
         if event.returncode != 0:
             GMessage(parent = self,
@@ -414,7 +414,7 @@
             instrFile.close()   
             
     def OnLoadFile(self, event):
-        """!Launch file dialog and load selected file"""
+        """Launch file dialog and load selected file"""
         #find file
         filename = ''
         dlg = wx.FileDialog(self, message = "Find instructions file", defaultDir = "", 
@@ -429,7 +429,7 @@
         self.LoadFile(filename)
 
     def LoadFile(self, filename):
-        """!Load file and read instructions"""
+        """Load file and read instructions"""
         readObjectId = []
         readInstruction = Instruction(parent = self, objectsToDraw = readObjectId)
         ok = readInstruction.Read(filename)
@@ -448,7 +448,7 @@
             self.DialogDataChanged(self.objectId)
 
     def OnPageSetup(self, event = None):
-        """!Specify paper size, margins and orientation"""
+        """Specify paper size, margins and orientation"""
         id = self.instruction.FindInstructionByType('page').id
         dlg = PageSetupDialog(self, id = id, settings = self.instruction) 
         dlg.CenterOnScreen()
@@ -499,7 +499,7 @@
         
         
     def OnAddMap(self, event, notebook = False):
-        """!Add or edit map frame"""        
+        """Add or edit map frame"""      
         if self.instruction.FindInstructionByType('map'):
             mapId = self.instruction.FindInstructionByType('map').id
         else: mapId = None
@@ -552,7 +552,7 @@
                 self.currentPage = 0
                 
     def OnAddRaster(self, event):
-        """!Add raster map"""
+        """Add raster map"""
         if self.instruction.FindInstructionByType('raster'):
             id = self.instruction.FindInstructionByType('raster').id
         else: id = None
@@ -576,7 +576,7 @@
             self.openDialogs['raster'].Show()
             
     def OnAddVect(self, event):
-        """!Add vector map"""
+        """Add vector map"""
         if self.instruction.FindInstructionByType('vector'):
             id = self.instruction.FindInstructionByType('vector').id
         else: id = None
@@ -599,7 +599,7 @@
             self.openDialogs['vector'].Show()
        
     def OnAddScalebar(self, event):
-        """!Add scalebar"""
+        """Add scalebar"""
         if projInfo()['proj'] == 'll':
             GMessage(message = _("Scalebar is not appropriate for this projection"))
             return
@@ -613,7 +613,7 @@
         self.openDialogs['scalebar'].Show()
         
     def OnAddLegend(self, event, page = 0):
-        """!Add raster or vector legend"""
+        """Add raster or vector legend"""
         if self.instruction.FindInstructionByType('rasterLegend'):
             idR = self.instruction.FindInstructionByType('rasterLegend').id
         else: idR = None
@@ -639,7 +639,7 @@
         self.openDialogs['mapinfo'].Show()
         
     def OnAddImage(self, event, id = None):
-        """!Show dialog for image adding and editing"""
+        """Show dialog for image adding and editing"""
         position = None
         if 'image' in self.openDialogs:
             position = self.openDialogs['image'].GetPosition()
@@ -652,7 +652,7 @@
         dlg.Show()
         
     def OnAddNorthArrow(self, event, id = None):
-        """!Show dialog for north arrow adding and editing"""
+        """Show dialog for north arrow adding and editing"""
         if self.instruction.FindInstructionByType('northArrow'):
             id = self.instruction.FindInstructionByType('northArrow').id
         else: id = None
@@ -663,7 +663,7 @@
         self.openDialogs['northArrow'].Show()
         
     def OnAddText(self, event, id = None):
-        """!Show dialog for text adding and editing"""
+        """Show dialog for text adding and editing"""
         position = None
         if 'text' in self.openDialogs:
             position = self.openDialogs['text'].GetPosition()
@@ -676,15 +676,15 @@
         dlg.Show()
         
     def OnAddPoint(self, event):
-        """!Add point action selected"""
+        """Add point action selected"""
         self.mouse["use"] = "addPoint"
         self.canvas.SetCursor(self.cursors["cross"])
         
     def AddPoint(self, id = None, coordinates = None):
-        """!Add point and open property dialog.
+        """Add point and open property dialog.
 
-        @param id id point id (None if creating new point)
-        @param coordinates coordinates of new point
+        :param id: id point id (None if creating new point)
+        :param coordinates: coordinates of new point
         """
         position = None
         if 'point' in self.openDialogs:
@@ -701,15 +701,15 @@
         dlg.Show()
         
     def OnAddLine(self, event):
-        """!Add line action selected"""
+        """Add line action selected"""
         self.mouse["use"] = "addLine"
         self.canvas.SetCursor(self.cursors["cross"])
 
     def AddLine(self, id = None, coordinates = None):
-        """!Add line and open property dialog.
+        """Add line and open property dialog.
         
-        @param id id line id (None if creating new line)
-        @param coordinates coordinates of new line
+        :param id: id line id (None if creating new line)
+        :param coordinates: coordinates of new line
         """
         position = None
         if 'line' in self.openDialogs:
@@ -726,15 +726,15 @@
         dlg.Show()
 
     def OnAddRectangle(self, event):
-        """!Add rectangle action selected"""
+        """Add rectangle action selected"""
         self.mouse["use"] = "addRectangle"
         self.canvas.SetCursor(self.cursors["cross"])
 
     def AddRectangle(self, id = None, coordinates = None):
-        """!Add rectangle and open property dialog.
+        """Add rectangle and open property dialog.
         
-        @param id id rectangle id (None if creating new rectangle)
-        @param coordinates coordinates of new rectangle
+        :param id: id rectangle id (None if creating new rectangle)
+        :param coordinates: coordinates of new rectangle
         """
         position = None
         if 'rectangle' in self.openDialogs:
@@ -751,7 +751,7 @@
         dlg.Show()
 
     def OnAddLabels(self, event, id = None):
-        """!Show dialog for labels"""
+        """Show dialog for labels"""
         if self.instruction.FindInstructionByType('labels'):
             id = self.instruction.FindInstructionByType('labels').id
         else: id = None
@@ -762,7 +762,7 @@
         self.openDialogs['labels'].Show()
 
     def getModifiedTextBounds(self, x, y, textExtent, rotation):
-        """!computes bounding box of rotated text, not very precisely"""
+        """computes bounding box of rotated text, not very precisely"""
         w, h = textExtent
         rotation = float(rotation)/180*pi
         H = float(w) * sin(rotation)
@@ -778,7 +778,7 @@
             return wx.Rect(X, Y, abs(W), abs(H)).Inflate(h,h) 
 
     def makePSFont(self, textDict):
-        """!creates a wx.Font object from selected postscript font. To be
+        """creates a wx.Font object from selected postscript font. To be
         used for estimating bounding rectangle of text"""
         
         fontsize = textDict['fontsize'] * self.canvas.currScale
@@ -824,7 +824,7 @@
        
        
     def getTextExtent(self, textDict):
-        """!Estimates bounding rectangle of text"""
+        """Estimates bounding rectangle of text"""
         #fontsize = str(fontsize if fontsize >= 4 else 4)
         dc = wx.ClientDC(self) # dc created because of method GetTextExtent, which pseudoDC lacks
        
@@ -838,7 +838,7 @@
             return (0,0)
     
     def getInitMap(self):
-        """!Create default map frame when no map is selected, needed for coordinates in map units"""
+        """Create default map frame when no map is selected, needed for coordinates in map units"""
         instrFile = grass.tempfile()
         instrFileFd = open(instrFile, mode = 'w')
         instrFileFd.write(self.InstructionFile())
@@ -877,7 +877,7 @@
                 self.deleteObject(self.canvas.dragId)   
     
     def deleteObject(self, id):
-        """!Deletes object, his id and redraws"""
+        """Deletes object, his id and redraws"""
         #delete from canvas
         self.canvas.pdcObj.RemoveId(id)
         if id == self.canvas.dragId:
@@ -1018,7 +1018,7 @@
                     self.deleteObject(id)
                 
     def OnPageChanged(self, event):
-        """!Flatnotebook page has changed"""
+        """Flatnotebook page has changed"""
         self.currentPage = self.book.GetPageIndex(self.book.GetCurrentPage())
         if self.currentPage == 1:
             self.SetStatusText(_("Press button with green triangle icon to generate preview."))
@@ -1028,12 +1028,12 @@
         
         
     def OnPageChanging(self, event):
-        """!Flatnotebook page is changing"""
+        """Flatnotebook page is changing"""
         if self.currentPage == 0 and self.mouse['use'] == 'addMap':
             event.Veto()
 
     def OnHelp(self, event):
-        """!Show help"""
+        """Show help"""
         if self.parent and self.parent.GetName() == 'LayerManager':
             log = self.parent.GetLogWindow()
             log.RunCmd(['g.manual',
@@ -1044,11 +1044,11 @@
                        entry = 'wxGUI.psmap')
         
     def OnAbout(self, event):
-        """!Display About window"""
+        """Display About window"""
         ShowAboutDialog(prgName=_('wxGUI Cartographic Composer'), startYear='2011')
 
     def OnCloseWindow(self, event):
-        """!Close window"""
+        """Close window"""
         try:
             os.remove(self.imgName)
         except OSError:
@@ -1061,14 +1061,14 @@
 
 
 class PsMapBufferedWindow(wx.Window):
-    """!A buffered window class.
-    
-    @param parent parent window
-    @param kwargs other wx.Window parameters
-    """
+    """A buffered window class."""
     def __init__(self, parent, id =  wx.ID_ANY,
                  style = wx.NO_FULL_REPAINT_ON_RESIZE,
                  **kwargs):
+        """
+        :param parent: parent window
+        :param kwargs: other wx.Window parameters
+        """
         wx.Window.__init__(self, parent, id = id, style = style)
         self.parent = parent
     
@@ -1123,8 +1123,6 @@
         self.resizeBoxSize = wx.Size(8, 8)
         self.showResizeHelp = False # helper for correctly working statusbar
         
-        
-
         self.dragId = -1
         
         if self.preview:
@@ -1132,8 +1130,6 @@
             self.imageId = 2000
             self.imgName = self.parent.imgName
             
-            
-            
         self.currScale = None
         
         self.Clear()
@@ -1148,7 +1144,7 @@
 
 
     def Clear(self):
-        """!Clear canvas and set paper
+        """Clear canvas and set paper
         """
         bg = wx.LIGHT_GREY_BRUSH
         self.pdcPaper.BeginDrawing()
@@ -1159,14 +1155,12 @@
         self.pdcObj.RemoveAll()
         self.pdcTmp.RemoveAll()
         
-
-
         if not self.preview:
             self.SetPage()
 
     
     def CanvasPaperCoordinates(self, rect, canvasToPaper = True):
-        """!Converts canvas (pixel) -> paper (inch) coordinates and size and vice versa"""
+        """Converts canvas (pixel) -> paper (inch) coordinates and size and vice versa"""
         
         units = UnitConversion(self)
         
@@ -1191,7 +1185,7 @@
     
     
     def SetPage(self):
-        """!Sets and changes page, redraws paper"""
+        """Sets and changes page, redraws paper"""
         
         page = self.instruction[self.pageId]
         if not page:
@@ -1213,7 +1207,7 @@
 
 
     def modifyRectangle(self, r):
-        """! Recalculates rectangle not to have negative size"""
+        """Recalculates rectangle not to have negative size"""
         if r.GetWidth() < 0:
             r.SetX(r.GetX() + r.GetWidth())
         if r.GetHeight() < 0:
@@ -1223,7 +1217,7 @@
         return r 
     
     def RecalculateEN(self):
-        """!Recalculate east and north for texts (eps, points) after their or map's movement"""
+        """Recalculate east and north for texts (eps, points) after their or map's movement"""
         try:
             mapId = self.instruction.FindInstructionByType('map').id
         except AttributeError:
@@ -1254,7 +1248,7 @@
                     instr['east'], instr['north'] = e, n
                 
     def OnPaint(self, event):
-        """!Draw pseudo DC to buffer
+        """Draw pseudo DC to buffer
         """
         if not self._buffer:
             return
@@ -1280,7 +1274,7 @@
         self.pdcTmp.DrawToDCClipped(dc, rgn.GetBox())
         
     def MouseActions(self, event):
-        """!Mouse motion and button click notifier
+        """Mouse motion and button click notifier
         """
         # zoom with mouse wheel
         if event.GetWheelRotation() != 0:
@@ -1310,7 +1304,7 @@
             self.OnMouseMoving(event)
                 
     def OnMouseWheel(self, event):
-        """!Mouse wheel scrolled.
+        """Mouse wheel scrolled.
 
         Changes zoom."""
         if UserSettings.Get(group = 'display',
@@ -1338,7 +1332,7 @@
         self.mouse['use'] = oldUse
 
     def OnMouseMoving(self, event):
-        """!Mouse cursor moving.
+        """Mouse cursor moving.
 
         Change cursor when moving over resize marker.
         """
@@ -1359,7 +1353,7 @@
                     self.showResizeHelp = False
                 
     def OnLeftDown(self, event):
-        """!Left mouse button pressed.
+        """Left mouse button pressed.
 
         Select objects, redraw, prepare for moving/resizing.
         """
@@ -1405,7 +1399,7 @@
                 self.Refresh()
 
     def OnLeftUp(self, event):
-        """!Left mouse button released.
+        """Left mouse button released.
 
         Recalculate zooming/resizing/moving and redraw.
         """
@@ -1525,7 +1519,7 @@
                 self.Refresh()
 
     def OnButtonDClick(self, event):
-        """!Open object dialog for editing."""
+        """Open object dialog for editing."""
         if self.mouse['use'] == 'pointer' and self.dragId != -1:
             itemCall = {'text':self.parent.OnAddText,
                         'mapinfo': self.parent.OnAddMapinfo,
@@ -1555,7 +1549,7 @@
             itemCall[type](**itemArg[type])
 
     def OnDragging(self, event):
-        """!Process panning/resizing/drawing/moving."""
+        """Process panning/resizing/drawing/moving."""
         if event.MiddleIsDown():
             # panning
             self.mouse['end'] = event.GetPosition()
@@ -1671,14 +1665,14 @@
                 self.RedrawSelectBox(self.dragId)
 
     def OnMiddleDown(self, event):
-        """!Middle mouse button pressed."""
+        """Middle mouse button pressed."""
         self.mouse['begin'] = event.GetPosition()
 
     def Pan(self, begin, end):
-        """!Move canvas while dragging.
+        """Move canvas while dragging.
         
-        @param begin x,y coordinates of first point
-        @param end x,y coordinates of second point
+        :param begin: x,y coordinates of first point
+        :param end: x,y coordinates of second point
         """
         view = begin[0] - end[0], begin[1] - end[1]
         zoomFactor = 1
@@ -1755,7 +1749,7 @@
                 self.RecalculateEN()
         
     def ComputeZoom(self, rect):
-        """!Computes zoom factor and scroll view"""
+        """Computes zoom factor and scroll view"""
         zoomFactor = 1
         cW, cH = self.GetClientSize()
         cW = float(cW)
@@ -1802,7 +1796,7 @@
     
     
     def Zoom(self, zoomFactor, view):
-        """! Zoom to specified region, scroll view, redraw"""
+        """Zoom to specified region, scroll view, redraw"""
         if not self.currScale:
             return
         self.currScale = self.currScale*zoomFactor
@@ -1879,7 +1873,7 @@
             self.DrawImage(imageRect)
         
     def ZoomAll(self):
-        """! Zoom to full extent"""  
+        """Zoom to full extent"""
         if not self.preview:
             bounds = self.pdcPaper.GetIdBounds(self.pageId)
         else:
@@ -1889,13 +1883,13 @@
         self.Zoom(zoomFactor, view)
         
     def Draw(self, pen, brush, pdc, drawid = None, pdctype = 'rect', bb = wx.Rect(0,0,0,0), lineCoords = None): 
-        """! Draw object with given pen and brush.
+        """Draw object with given pen and brush.
 
-        @param pdc PseudoDC
-        @param pdctype 'bitmap'/'rectText'/'rect'/'point'/'line'
-        @param bb bounding box
-        @param lineCoords coordinates of line start, end points (wx.Point, wx.Point)
-        """    
+        :param pdc: PseudoDC
+        :param pdctype: 'bitmap'/'rectText'/'rect'/'point'/'line'
+        :param bb: bounding box
+        :param lineCoords: coordinates of line start, end points (wx.Point, wx.Point)
+        """  
         if drawid is None:
             drawid = wx.NewId()
         bb = bb.Get()
@@ -1955,15 +1949,15 @@
         return drawid
     
     def DrawGraphics(self, drawid, shape, color, bb, width = None, fcolor = None, lineCoords = None):
-        """!Draw point/line/rectangle with given color and width
+        """Draw point/line/rectangle with given color and width
 
-        @param drawid id of drawn object
-        @param shape drawn shape: 'point'/'line'/'rectangle'
-        @param color pen outline color ('RRR:GGG:BBB')
-        @param fcolor brush fill color, if meaningful ('RRR:GGG:BBB')
-        @param width pen width
-        @param bb bounding box
-        @param lineCoords line coordinates (for line only)
+        :param drawid: id of drawn object
+        :param shape: drawn shape 'point'/'line'/'rectangle'
+        :param color: pen outline color ('RRR:GGG:BBB')
+        :param fcolor: brush fill color, if meaningful ('RRR:GGG:BBB')
+        :param width: pen width
+        :param bb: bounding box
+        :param lineCoords: line coordinates (for line only)
         """
         pdctype = {'point'     : 'point',
                    'line'      : 'line',
@@ -1988,7 +1982,7 @@
                   drawid = drawid, bb = bb, lineCoords = lineCoords)
 
     def DrawBitmap(self, pdc, filePath, rotation, bbox):
-        """!Draw bitmap using PIL"""
+        """Draw bitmap using PIL"""
         pImg = PILImage.open(filePath)
         if sys.platform == 'win32' and \
            'eps' in os.path.splitext(filePath)[1].lower():
@@ -2051,7 +2045,7 @@
         pdc.EndDrawing()
         
     def DrawImage(self, rect):
-        """!Draw preview image to pseudoDC"""
+        """Draw preview image to pseudoDC"""
         self.pdcImage.ClearId(self.imageId)
         self.pdcImage.SetId(self.imageId)
         img = self.image
@@ -2068,7 +2062,7 @@
         self.Refresh()
         
     def DrawPaper(self, rect):
-        """!Draw paper and margins"""
+        """Draw paper and margins"""
         page = self.instruction[self.pageId]
         scale = page['Width'] / rect.GetWidth()
         w = (page['Width'] - page['Right'] - page['Left']) / scale
@@ -2093,7 +2087,7 @@
 
         
     def ImageRect(self):
-        """!Returns image centered in canvas, computes scale"""
+        """Returns image centered in canvas, computes scale"""
         img = wx.Image(self.imgName, wx.BITMAP_TYPE_PNG)
         cW, cH = self.GetClientSize()
         iW, iH = img.GetWidth(), img.GetHeight()
@@ -2108,7 +2102,7 @@
         return imageRect 
     
     def RedrawSelectBox(self, id):
-        """!Redraws select box when selected object changes its size"""
+        """Redraws select box when selected object changes its size"""
         if self.dragId == id:
             rect = self.pdcObj.GetIdBounds(id)
             if self.instruction[id].type != 'line':
@@ -2138,7 +2132,7 @@
                               drawid = self.idLinePointsTmp[i], pdctype = 'rect', bb = rect[i])
         
     def UpdateMapLabel(self):
-        """!Updates map frame label"""
+        """Updates map frame label"""
 
         vector = self.instruction.FindInstructionByType('vector')
         if vector:
@@ -2180,7 +2174,7 @@
             self.itemLabels[id].append(file)
         
     def OnSize(self, event):
-        """!Init image size to match window size
+        """Init image size to match window size
         """
         # not zoom all when notebook page is changed
         if self.preview and self.parent.currentPage == 1 or not self.preview and self.parent.currentPage == 0:
@@ -2189,9 +2183,9 @@
         event.Skip()
         
     def OnIdle(self, event):
-        """!Only re-render a image during idle time instead of
+        """Only re-render a image during idle time instead of
         multiple times during resizing.
-        """ 
+        """
         
         width, height = self.GetClientSize()
         # Make new off screen bitmap: this bitmap will always have the
@@ -2202,7 +2196,7 @@
         self.resize = True
         
     def ScaleRect(self, rect, scale):
-        """! Scale rectangle"""
+        """Scale rectangle"""
         return wx.Rect(rect.GetLeft()*scale, rect.GetTop()*scale,
                        rect.GetSize()[0]*scale, rect.GetSize()[1]*scale)   
 

Modified: grass/trunk/gui/wxpython/psmap/instructions.py
===================================================================
--- grass/trunk/gui/wxpython/psmap/instructions.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/psmap/instructions.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package psmap.instructions
 
 @brief Map feature objects
@@ -46,7 +46,7 @@
 from psmap.utils        import *
 
 class Instruction:
-    """!Class which represents instruction file"""
+    """Class which represents instruction file"""
     def __init__(self, parent, objectsToDraw):
         
         self.parent = parent
@@ -55,7 +55,7 @@
         self.instruction = list()
         
     def __str__(self):
-        """!Returns text for instruction file"""
+        """Returns text for instruction file"""
         comment = "# timestamp: " + strftime("%Y-%m-%d %H:%M", localtime()) + '\n'
         env = grass.gisenv()
         comment += "# location: %s\n" % env['LOCATION_NAME']
@@ -74,14 +74,14 @@
         return None
 
     def __contains__(self, id):
-        """!Test if instruction is included"""
+        """Test if instruction is included"""
         for each in self.instruction:
             if each.id == id:
                 return True
         return False
     
     def __delitem__(self, id):
-        """!Delete instruction"""
+        """Delete instruction"""
         for each in self.instruction:
             if each.id == id:
                 if each.type == 'map':
@@ -99,7 +99,7 @@
                 return
             
     def AddInstruction(self, instruction):
-        """!Add instruction"""
+        """Add instruction"""
         # add to instructions
         if instruction.type == 'map':
             self.instruction.insert(0, instruction)
@@ -114,7 +114,7 @@
                 
             
     def FindInstructionByType(self, type, list = False):
-        """!Find instruction(s) with the given type"""
+        """Find instruction(s) with the given type"""
         inst = []
         for each in self.instruction:
             if each.type == type:
@@ -124,7 +124,7 @@
         return inst
     
     def Read(self, filename):
-        """!Reads instruction file and creates instruction objects"""
+        """Reads instruction file and creates instruction objects"""
         self.filename = filename
         # open file
         try:
@@ -435,7 +435,7 @@
         return True
     
     def SetRegion(self, regionInstruction):
-        """!Sets region from file comment or sets current region in case of no comment"""
+        """Sets region from file comment or sets current region in case of no comment"""
         map = MapFrame(wx.NewId())
         self.AddInstruction(map)
         if regionInstruction:
@@ -474,7 +474,7 @@
         
 
 class InstructionObject:
-    """!Abtract class representing single instruction"""
+    """Abtract class representing single instruction"""
     def __init__(self, id): 
         self.id = id
         
@@ -486,7 +486,7 @@
         self.unitConv = UnitConversion() 
     
     def __str__(self):
-        """!Returns particular part of text instruction"""
+        """Returns particular part of text instruction"""
         return ''
     
     def __getitem__(self, key):
@@ -499,19 +499,19 @@
         self.instruction[key] = value
     
     def GetInstruction(self):
-        """!Get current values"""
+        """Get current values"""
         return self.instruction
     
     def SetInstruction(self, instruction):
-        """!Set default values"""
+        """Set default values"""
         self.instruction = instruction
         
     def Read(self, instruction, text, **kwargs):
-        """!Read instruction and save them"""
+        """Read instruction and save them"""
         pass
         
     def PercentToReal(self, e, n):
-        """!Converts text coordinates from percent of region to map coordinates"""
+        """Converts text coordinates from percent of region to map coordinates"""
         e, n = float(e.strip('%')), float(n.strip('%'))
         region = grass.region()
         N = region['s'] + (region['n'] - region['s']) / 100 * n
@@ -519,7 +519,7 @@
         return E, N
 
 class InitMap(InstructionObject):
-    """!Class representing virtual map"""
+    """Class representing virtual map"""
     def __init__(self, id):
         InstructionObject.__init__(self, id = id)
         self.type = 'initMap'
@@ -531,7 +531,7 @@
         
     
 class MapFrame(InstructionObject):
-    """!Class representing map (instructions maploc, scale, border)"""
+    """Class representing map (instructions maploc, scale, border)"""
     def __init__(self, id):
         InstructionObject.__init__(self, id = id)
         self.type = 'map'
@@ -588,7 +588,7 @@
         return instr  
     
     def Read(self, instruction, text, **kwargs):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         if 'isRegionComment' in kwargs:
             isRegionComment = kwargs['isRegionComment']
         instr = {}
@@ -649,7 +649,7 @@
         return True 
     
 class PageSetup(InstructionObject):
-    """!Class representing page instruction"""
+    """Class representing page instruction"""
     def __init__(self, id):
         InstructionObject.__init__(self, id = id)
         self.type = 'page'
@@ -669,7 +669,7 @@
         return instr
     
     def Read(self, instruction, text, **kwargs):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         instr = {}
         self.cats = ['Width', 'Height', 'Left', 'Right', 'Top', 'Bottom']
         self.subInstr = dict(zip(['width', 'height', 'left', 'right', 'top', 'bottom'], self.cats))
@@ -720,7 +720,7 @@
         return sizeDict    
     
 class Mapinfo(InstructionObject):
-    """!Class representing mapinfo instruction"""
+    """Class representing mapinfo instruction"""
     def __init__(self, id):
         InstructionObject.__init__(self, id = id)
         self.type = 'mapinfo'
@@ -740,7 +740,7 @@
         return instr
     
     def Read(self, instruction, text):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         instr = {}
         try:
             for line in text:
@@ -765,7 +765,7 @@
         return True
     
     def EstimateRect(self, mapinfoDict):
-        """!Estimate size to draw mapinfo"""
+        """Estimate size to draw mapinfo"""
         w = mapinfoDict['fontsize'] * 20 # any better estimation? 
         h = mapinfoDict['fontsize'] * 7
         width = self.unitConv.convert(value = w, fromUnit = 'point', toUnit = 'inch')
@@ -774,7 +774,7 @@
                       width = width, height = height)
     
 class Text(InstructionObject):
-    """!Class representing text instruction"""
+    """Class representing text instruction"""
     def __init__(self, id):
         InstructionObject.__init__(self, id = id)
         self.type = 'text'
@@ -828,7 +828,7 @@
         return instr
     
     def Read(self, instruction, text, **kwargs):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         map = kwargs['mapInstruction']
         instr = {}
         for line in text:
@@ -882,7 +882,7 @@
         return True 
         
 class Image(InstructionObject):
-    """!Class representing eps instruction - image"""
+    """Class representing eps instruction - image"""
     def __init__(self, id, settings):
         InstructionObject.__init__(self, id = id)
         self.settings = settings
@@ -908,7 +908,7 @@
         return instr
     
     def Read(self, instruction, text, **kwargs):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         mapInstr = kwargs['mapInstruction']
         instr = {}
         for line in text:
@@ -957,7 +957,7 @@
         return True 
         
     def ChangeRefPoint(self, toCenter):
-        """!Change reference point (left top x center)"""
+        """Change reference point (left top x center)"""
         mapInstr = self.settings.FindInstructionByType('map')
         if not mapInstr:
             mapInstr = self.settings.FindInstructionByType('initMap')
@@ -979,7 +979,7 @@
             self.instruction['east'], self.instruction['north'] = e, n
 
     def GetImageOrigSize(self, imagePath):
-        """!Get image size.
+        """Get image size.
         
         If eps, size is read from image header.
         """
@@ -1001,7 +1001,7 @@
             return img.GetWidth(), img.GetHeight()
             
 class NorthArrow(Image):
-    """!Class representing eps instruction -- North Arrow"""
+    """Class representing eps instruction -- North Arrow"""
     def __init__(self, id, settings):
         Image.__init__(self, id = id, settings = settings)
         self.type = 'northArrow'
@@ -1021,7 +1021,7 @@
         return instr
         
 class Point(InstructionObject):
-    """!Class representing point instruction"""
+    """Class representing point instruction"""
     def __init__(self, id):
         InstructionObject.__init__(self, id = id)
         self.type = 'point'
@@ -1045,7 +1045,7 @@
         return instr
     
     def Read(self, instruction, text, **kwargs):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         mapInstr = kwargs['mapInstruction']
         instr = {}
         for line in text:
@@ -1087,7 +1087,7 @@
         return True
 
 class Line(InstructionObject):
-    """!Class representing line instruction"""
+    """Class representing line instruction"""
     def __init__(self, id):
         InstructionObject.__init__(self, id = id)
         self.type = 'line'
@@ -1107,7 +1107,7 @@
         return instr
     
     def Read(self, instruction, text, **kwargs):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         mapInstr = kwargs['mapInstruction']
         instr = {}
         for line in text:
@@ -1143,7 +1143,7 @@
         return True
 
 class Rectangle(InstructionObject):
-    """!Class representing rectangle instruction"""
+    """Class representing rectangle instruction"""
     def __init__(self, id):
         InstructionObject.__init__(self, id = id)
         self.type = 'rectangle'
@@ -1163,7 +1163,7 @@
         return instr
     
     def Read(self, instruction, text, **kwargs):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         mapInstr = kwargs['mapInstruction']
         instr = {}
         for line in text:
@@ -1201,7 +1201,7 @@
         return True
         
 class Scalebar(InstructionObject):
-    """!Class representing scalebar instruction"""
+    """Class representing scalebar instruction"""
     def __init__(self, id):
         InstructionObject.__init__(self, id = id)
         self.type = 'scalebar'
@@ -1225,7 +1225,7 @@
         return instr
     
     def Read(self, instruction, text, **kwargs):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         scale = kwargs['scale']
         instr = {}
         for line in text:
@@ -1267,7 +1267,7 @@
         return True 
     
     def EstimateSize(self, scalebarDict, scale):
-        """!Estimate size to draw scalebar"""
+        """Estimate size to draw scalebar"""
         units = projInfo()['units']
         if not units or units not in self.unitConv.getAllUnits():
             units = 'meters'
@@ -1282,7 +1282,7 @@
         return (length, height)
     
 class RasterLegend(InstructionObject):
-    """!Class representing colortable instruction"""
+    """Class representing colortable instruction"""
     def __init__(self, id):
         InstructionObject.__init__(self, id = id)
         self.type = 'rasterLegend'
@@ -1320,7 +1320,7 @@
     
     
     def Read(self, instruction, text, **kwargs):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         instr = {}
         instr['rLegend'] = True
         for line in text:
@@ -1383,7 +1383,7 @@
         return True 
     
     def EstimateHeight(self, raster, discrete, fontsize, cols = None,  height = None):
-        """!Estimate height to draw raster legend"""
+        """Estimate height to draw raster legend"""
         if discrete == 'n':
             if height:
                 height = height
@@ -1412,7 +1412,7 @@
         return height
         
     def EstimateWidth(self, raster, discrete, fontsize, cols = None, width = None, paperInstr = None):
-        """!Estimate size to draw raster legend"""
+        """Estimate size to draw raster legend"""
         
         if discrete == 'n':
             rinfo = grass.raster_info(raster)
@@ -1442,7 +1442,7 @@
         return width    
              
 class VectorLegend(InstructionObject):
-    """!Class representing colortable instruction"""
+    """Class representing colortable instruction"""
     def __init__(self, id):
         InstructionObject.__init__(self, id = id)
         self.type = 'vectorLegend'
@@ -1466,7 +1466,7 @@
         return instr
 
     def Read(self, instruction, text, **kwargs):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         instr = {}
         instr['vLegend'] = True
         for line in text:
@@ -1495,7 +1495,7 @@
         return True 
     
     def EstimateSize(self, vectorInstr, fontsize, width = None, cols = None):
-        """!Estimate size to draw vector legend"""
+        """Estimate size to draw vector legend"""
         if width:
             width = width 
         else:
@@ -1518,7 +1518,7 @@
             
    
 class Raster(InstructionObject):
-    """!Class representing raster instruction"""
+    """Class representing raster instruction"""
     def __init__(self, id):
         InstructionObject.__init__(self, id = id)
         self.type = 'raster'
@@ -1532,7 +1532,7 @@
         return instr
     
     def Read(self, instruction, text):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         instr = {}
         instr['isRaster'] = True
         try:
@@ -1552,7 +1552,7 @@
         return True
     
 class Vector(InstructionObject):
-    """!Class keeps vector layers"""
+    """Class keeps vector layers"""
     def __init__(self, id):
         InstructionObject.__init__(self, id = id)
         self.type = 'vector'
@@ -1564,7 +1564,7 @@
         return ''
     
     def Read(self, instruction, text, **kwargs):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         instr = {}
         
         for line in text:
@@ -1599,7 +1599,7 @@
         return True    
     
 class VProperties(InstructionObject):
-    """!Class represents instructions vareas, vlines, vpoints"""
+    """Class represents instructions vareas, vlines, vpoints"""
     def __init__(self, id, subType):
         InstructionObject.__init__(self, id = id)
         self.type = 'vProperties'
@@ -1709,7 +1709,7 @@
         return vInstruction
     
     def Read(self, instruction, text, **kwargs):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         instr = {}
         try:
             info = grass.find_file(name = text[0].split()[1], element = 'vector')
@@ -1823,7 +1823,7 @@
         return True
 
 class Labels(InstructionObject):
-    """!Class representing labels instruction"""
+    """Class representing labels instruction"""
     def __init__(self, id):
         InstructionObject.__init__(self, id = id)
         self.type = 'labels'
@@ -1840,7 +1840,7 @@
         return instr
     
     def Read(self, instruction, text, **kwargs):
-        """!Read instruction and save information"""
+        """Read instruction and save information"""
         for line in text:
             try:
                 if line.startswith('labels'):

Modified: grass/trunk/gui/wxpython/psmap/menudata.py
===================================================================
--- grass/trunk/gui/wxpython/psmap/menudata.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/psmap/menudata.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package ps.menudata
 
 @brief wxPsMap - menu entries
@@ -21,9 +21,9 @@
 
 class PsMapMenuData(MenuTreeModelBuilder):
     def __init__(self, path = None):
-        """!Menu for Cartographic Composer (psmap.py)
+        """Menu for Cartographic Composer (psmap.py)
         
-        @param path path to XML to be read (None for menudata_psmap.xml)
+        :param path: path to XML to be read (None for menudata_psmap.xml)
         """
         if not path:
             path = os.path.join(globalvar.WXGUIDIR, 'xml', 'menudata_psmap.xml')

Modified: grass/trunk/gui/wxpython/psmap/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/psmap/toolbars.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/psmap/toolbars.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package psmap.toolbars
 
 @brief wxPsMap toolbars classes
@@ -25,9 +25,9 @@
 
 class PsMapToolbar(BaseToolbar):
     def __init__(self, parent, toolSwitcher):
-        """!Toolbar Cartographic Composer (psmap.py)
+        """Toolbar Cartographic Composer (psmap.py)
         
-        @param parent parent window
+        :param parent: parent window
         """
         BaseToolbar.__init__(self, parent, toolSwitcher)
         
@@ -54,7 +54,7 @@
             self.EnableTool(self.preview, False)
         
     def _toolbarData(self):
-        """!Toolbar data
+        """Toolbar data
         """
         icons = {
             'scriptSave' : MetaIcon(img = 'script-save',
@@ -153,7 +153,7 @@
                                     )
 
     def OnDecoration(self, event):
-        """!Decorations overlay menu
+        """Decorations overlay menu
         """
         self._onMenu(((self.icons["addLegend"],     self.parent.OnAddLegend),
                       (self.icons["addMapinfo"],    self.parent.OnAddMapinfo),
@@ -166,7 +166,7 @@
         self._onMenu(((self.icons['labelsAdd'], self.parent.OnAddLabels), ))
 
     def OnDrawGraphics(self, event):
-        """!Graphics tool activated."""
+        """Graphics tool activated."""
         # we need the previous id
         if self.drawGraphicsAction == 'pointAdd':
             self.parent.OnAddPoint(event)
@@ -176,7 +176,7 @@
             self.parent.OnAddRectangle(event)
 
     def OnDrawGraphicsMenu(self, event):
-        """!Simple geometry features (point, line, rectangle) overlay menu
+        """Simple geometry features (point, line, rectangle) overlay menu
         """
         self._onMenu(((self.icons["pointAdd"],      self.OnAddPoint),
                       (self.icons["lineAdd"],       self.OnAddLine),
@@ -184,7 +184,7 @@
                     ))
 
     def OnAddPoint(self, event):
-        """!Point mode selected.
+        """Point mode selected.
 
         Graphics drawing tool is activated. Tooltip changed.
         """
@@ -196,7 +196,7 @@
             self.parent.OnAddPoint(event)
 
     def OnAddLine(self, event):
-        """!Line mode selected.
+        """Line mode selected.
 
         Graphics drawing tool is activated. Tooltip changed.
         """
@@ -208,7 +208,7 @@
             self.parent.OnAddLine(event)
 
     def OnAddRectangle(self, event):
-        """!Rectangle mode selected.
+        """Rectangle mode selected.
 
         Graphics drawing tool is activated. Tooltip changed.
         """

Modified: grass/trunk/gui/wxpython/psmap/utils.py
===================================================================
--- grass/trunk/gui/wxpython/psmap/utils.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/psmap/utils.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package psmap.utils
 
 @brief utilities for wxpsmap (classes, functions)
@@ -31,7 +31,7 @@
 from core.utils import _
 
 class Rect2D(wx.Rect2D):
-    """!Class representing rectangle with floating point values.
+    """Class representing rectangle with floating point values.
 
     Overrides wx.Rect2D to unify Rect access methods, which are
     different (e.g. wx.Rect.GetTopLeft() x wx.Rect2D.GetLeftTop()).
@@ -59,9 +59,9 @@
         self.height = height
 
 class Rect2DPP(Rect2D):
-    """!Rectangle specified by 2 points (with floating point values).
+    """Rectangle specified by 2 points (with floating point values).
 
-    @see Rect2D, Rect2DPS
+    :class:`Rect2D`, :class:`Rect2DPS`
     """
     def __init__(self, topLeft = wx.Point2D(), bottomRight = wx.Point2D()):
         Rect2D.__init__(self, x = 0, y = 0, width = 0, height = 0)
@@ -75,15 +75,15 @@
         self.SetBottom(max(y1, y2))
 
 class Rect2DPS(Rect2D):
-    """!Rectangle specified by point and size (with floating point values).
+    """Rectangle specified by point and size (with floating point values).
 
-    @see Rect2D, Rect2DPP
+    :class:`Rect2D`, :class:`Rect2DPP`
     """
     def __init__(self, pos = wx.Point2D(), size = (0, 0)):
         Rect2D.__init__(self, x = pos[0], y = pos[1], width = size[0], height = size[1])
 
 class UnitConversion:
-    """! Class for converting units"""
+    """ Class for converting units"""
     def __init__(self, parent = None):
         self.parent = parent
         if self.parent:
@@ -118,25 +118,25 @@
         return sorted(self._units.keys())
     
     def findUnit(self, name):
-        """!Returns unit by its tr. string"""
+        """Returns unit by its tr. string"""
         for unit in self._units.keys():
             if self._units[unit]['tr'] == name:
                 return unit
         return None
     
     def findName(self, unit):
-        """!Returns tr. string of a unit"""
+        """Returns tr. string of a unit"""
         try:
             return self._units[unit]['tr']
         except KeyError:
             return None
     
     def convert(self, value, fromUnit = None, toUnit = None):
-        return float(value)/self._units[fromUnit]['val']*self._units[toUnit]['val']
+        return float(value) / self._units[fromUnit]['val'] * self._units[toUnit]['val']
 
 def convertRGB(rgb):
-    """!Converts wx.Colour(r,g,b,a) to string 'r:g:b' or named color,
-            or named color/r:g:b string to wx.Colour, depending on input""" 
+    """Converts wx.Colour(r,g,b,a) to string 'r:g:b' or named color,
+            or named color/r:g:b string to wx.Colour, depending on input"""
     # transform a wx.Colour tuple into an r:g:b string    
     if type(rgb) == wx.Colour:
         for name, color in grass.named_colors.items(): 
@@ -158,11 +158,11 @@
         
         
 def PaperMapCoordinates(mapInstr, x, y, paperToMap = True):
-    """!Converts paper (inch) coordinates <-> map coordinates.
+    """Converts paper (inch) coordinates <-> map coordinates.
 
-    @param mapInstr map frame instruction
-    @param x,y paper coords in inches or mapcoords in map units
-    @param paperToMap specify conversion direction
+    :param mapInstr: map frame instruction
+    :param x,y: paper coords in inches or mapcoords in map units
+    :param paperToMap: specify conversion direction
     """
     region = grass.region()
     mapWidthPaper = mapInstr['rect'].GetWidth()
@@ -194,8 +194,10 @@
         return xPaper, yPaper
 
 
-def AutoAdjust(self, scaleType,  rect, map = None, mapType = None, region = None):
-    """!Computes map scale, center and map frame rectangle to fit region (scale is not fixed)"""
+def AutoAdjust(self, scaleType, rect, map=None, mapType=None, region=None):
+    """Computes map scale, center and map frame rectangle to fit region
+    (scale is not fixed)
+    """
     currRegionDict = {}
     if scaleType == 0 and map:# automatic, region from raster or vector
         res = ''
@@ -258,11 +260,11 @@
     return scale, (cE, cN), Rect2D(x, y, rWNew, rHNew) #inch
 
 def SetResolution(dpi, width, height):
-    """!If resolution is too high, lower it
+    """If resolution is too high, lower it
     
-    @param dpi max DPI
-    @param width map frame width
-    @param height map frame height
+    :param dpi: max DPI
+    :param width: map frame width
+    :param height: map frame height
     """
     region = grass.region()
     if region['cols'] > width * dpi or region['rows'] > height * dpi:
@@ -271,7 +273,9 @@
         RunCommand('g.region', rows = rows, cols = cols)
                
 def ComputeSetRegion(self, mapDict):
-    """!Computes and sets region from current scale, map center coordinates and map rectangle"""
+    """Computes and sets region from current scale, map center
+    coordinates and map rectangle
+    """
 
     if mapDict['scaleType'] == 3: # fixed scale
         scale = mapDict['scale']
@@ -308,8 +312,9 @@
                        w = floor(centerE - rectHalfMeter[0]))
                     
 def projInfo():
-    """!Return region projection and map units information,
-    taken from render.py"""
+    """Return region projection and map units information,
+    taken from render.py
+    """
     
     projinfo = dict()
     
@@ -330,10 +335,10 @@
     return projinfo
 
 def GetMapBounds(filename, portrait = True):
-    """!Run ps.map -b to get information about map bounding box
+    """Run ps.map -b to get information about map bounding box
     
-        @param filename psmap input file
-        @param portrait page orientation"""
+    :param filename: psmap input file
+    :param portrait: page orientation"""
     orient = ''
     if not portrait:
         orient = 'r'
@@ -348,7 +353,7 @@
     return Rect2D(bb[0], bb[3], bb[2] - bb[0], bb[1] - bb[3])
 
 def getRasterType(map):
-    """!Returns type of raster map (CELL, FCELL, DCELL)"""
+    """Returns type of raster map (CELL, FCELL, DCELL)"""
     if map is None:
         map = ''
     file = grass.find_file(name = map, element = 'cell')
@@ -359,7 +364,7 @@
         return None
    
 def PilImageToWxImage(pilImage, copyAlpha = True):
-    """!Convert PIL image to wx.Image
+    """Convert PIL image to wx.Image
     
     Based on http://wiki.wxpython.org/WorkingWithImages
     """
@@ -382,11 +387,11 @@
     return wxImage
 
 def BBoxAfterRotation(w, h, angle):
-    """!Compute bounding box or rotated rectangle
+    """Compute bounding box or rotated rectangle
     
-    @param w rectangle width
-    @param h rectangle height
-    @param angle angle (0, 360) in degrees
+    :param w: rectangle width
+    :param h: rectangle height
+    :param angle: angle (0, 360) in degrees
     """
     angleRad = angle / 180. * pi
     ct = cos(angleRad)

Modified: grass/trunk/gui/wxpython/rlisetup/frame.py
===================================================================
--- grass/trunk/gui/wxpython/rlisetup/frame.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/rlisetup/frame.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -75,11 +75,11 @@
         self.Layout()
 
     def OnClose(self, event):
-        """!Close window"""
+        """Close window"""
         self.Destroy()
 
     def OnOk(self, event):
-        """!Launches help"""
+        """Launches help"""
         dlg = wx.MessageDialog(parent=self.parent,
                                 message=_("Are you sure that you want modify" \
                                           " r.li configuration file {name}?" \
@@ -188,7 +188,7 @@
         self.Layout()
 
     def ListFiles(self):
-        """!Check the configuration files inside the path"""
+        """Check the configuration files inside the path"""
         # list of configuration file
         listfiles = []
         #return all the configuration files in self.rlipath, check if there are
@@ -199,15 +199,15 @@
         return sorted(listfiles)
 
     def OnClose(self, event):
-        """!Close window"""
+        """Close window"""
         self.Destroy()
 
     def OnHelp(self, event):
-        """!Launches help"""
+        """Launches help"""
         gcmd.RunCommand('g.manual', parent=self, entry='wxGUI.rlisetup')
 
     def OnRemove(self, event):
-        """!Remove configuration file from path and update the list"""
+        """Remove configuration file from path and update the list"""
         confile = self.listfiles[self.listfileBox.GetSelections()[0]]
         dlg = wx.MessageDialog(parent=self.parent,
                                 message=_("Do you want remove r.li " \
@@ -223,14 +223,14 @@
         return
 
     def OnNew(self, event):
-        """!Remove configuration file from path and update the list"""
+        """Remove configuration file from path and update the list"""
         RLIWizard(self)
         self.listfiles = self.ListFiles()
         self.listfileBox.Clear()
         self.listfileBox.Set(self.listfiles)
 
     def OnRename(self, event):
-        """!Rename an existing configuration file"""
+        """Rename an existing configuration file"""
         try:
             confile = self.listfiles[self.listfileBox.GetSelections()[0]]
         except:
@@ -250,7 +250,7 @@
             self.listfileBox.Set(self.listfiles)
 
     def OnView(self, event):
-        """!Show and edit a configuration file"""
+        """Show and edit a configuration file"""
         try:
             confile = self.listfiles[self.listfileBox.GetSelections()[0]]
         except:

Modified: grass/trunk/gui/wxpython/rlisetup/functions.py
===================================================================
--- grass/trunk/gui/wxpython/rlisetup/functions.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/rlisetup/functions.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -67,7 +67,7 @@
 
 
 def checkMapExists(name, typ='rast'):
-    """!Check if a map already exist in the working mapset"""
+    """Check if a map already exist in the working mapset"""
     env = grass.gisenv()
     mapset = env['MAPSET']
     mapp = grass.find_file(name, typ, mapset)

Modified: grass/trunk/gui/wxpython/rlisetup/sampling_frame.py
===================================================================
--- grass/trunk/gui/wxpython/rlisetup/sampling_frame.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/rlisetup/sampling_frame.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-"""!
+"""
 @package rlisetup.sampling_frame
 
 @brief r.li.setup - draw sample frame
@@ -64,7 +64,7 @@
 
 
 class RLiSetupMapPanel(wx.Panel):
-    """!Panel with mapwindow used in r.li.setup"""
+    """Panel with mapwindow used in r.li.setup"""
     def __init__(self, parent, samplingType, icon=None, map_=None):
         wx.Panel.__init__(self, parent=parent)
 
@@ -127,15 +127,15 @@
         return self.map_
 
     def OnPan(self, event):
-        """!Panning, set mouse to drag."""
+        """Panning, set mouse to drag."""
         self.mapWindow.SetModePan()
 
     def OnZoomIn(self, event):
-        """!Zoom in the map."""
+        """Zoom in the map."""
         self.mapWindow.SetModeZoomIn()
 
     def OnZoomOut(self, event):
-        """!Zoom out the map."""
+        """Zoom out the map."""
         self.mapWindow.SetModeZoomOut()
 
     def OnZoomToMap(self, event):
@@ -143,7 +143,7 @@
         self.mapWindow.ZoomToMap(layers=layers, ignoreNulls=False, render=True)
 
     def OnDrawRadius(self, event):
-        """!Start draw mode"""
+        """Start draw mode"""
         self.mapWindow.mouse['use'] = "None"
         self.mapWindow.mouse['box'] = "line"
         self.mapWindow.pen = wx.Pen(colour=wx.RED, width=1,
@@ -152,7 +152,7 @@
         self.mapWindow.mouseLeftUp.connect(self._radiusDrawn)
 
     def OnDigitizeRegion(self, event):
-        """!Start draw mode"""
+        """Start draw mode"""
         self.mapWindow.mouse['use'] = "None"
         self.mapWindow.mouse['box'] = "line"
         self.mapWindow.pen = wx.Pen(colour=wx.RED, width=1,
@@ -164,7 +164,7 @@
         self._registeredGraphics.GetItem(0).SetCoords([])
 
     def OnDraw(self, event):
-        """!Start draw mode"""
+        """Start draw mode"""
         self.mapWindow.mouse['use'] = "None"
         self.mapWindow.mouse['box'] = "box"
         self.mapWindow.pen = wx.Pen(colour=wx.RED, width=2,
@@ -270,7 +270,7 @@
         return marea
 
     def _onToolChanged(self):
-        """!Helper function to disconnect drawing"""
+        """Helper function to disconnect drawing"""
         try:
             self.mapWindow.mouseLeftUp.disconnect(self._rectangleDrawn)
             self.mapWindow.mouseLeftUp.disconnect(self._radiusDrawn)
@@ -281,7 +281,7 @@
             pass
 
     def _radiusDrawn(self, x, y):
-        """!When drawing finished, get region values"""
+        """When drawing finished, get region values"""
         mouse = self.mapWindow.mouse
         item = self._registeredGraphics.GetItem(0)
         p1 = mouse['begin']
@@ -340,7 +340,7 @@
         return marea
 
     def _rectangleDrawn(self):
-        """!When drawing finished, get region values"""
+        """When drawing finished, get region values"""
         mouse = self.mapWindow.mouse
         item = self._registeredGraphics.GetItem(0)
         p1 = self.mapWindow.Pixel2Cell(mouse['begin'])
@@ -375,7 +375,7 @@
             dlg.Destroy()
 
         elif self.samplingtype != SamplingType.WHOLE:
-            """!When drawing finished, get region values"""
+            """When drawing finished, get region values"""
             self.sampleFrameChanged.emit(region=region)
 
 icons = {'draw': MetaIcon(img='edit',
@@ -393,10 +393,10 @@
 
 
 class RLiSetupToolbar(BaseToolbar):
-    """!IClass toolbar
+    """IClass toolbar
     """
     def __init__(self, parent, toolSwitcher):
-        """!RLiSetup toolbar constructor
+        """RLiSetup toolbar constructor
         """
 
         BaseToolbar.__init__(self, parent, toolSwitcher,
@@ -426,7 +426,7 @@
         self.Realize()
 
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         if self.parent.samplingtype == SamplingType.REGIONS:
             drawTool = ('digitizeregion', icons['digitizeregion'],
                         self.parent.OnDigitizeRegion, wx.ITEM_CHECK)

Modified: grass/trunk/gui/wxpython/rlisetup/wizard.py
===================================================================
--- grass/trunk/gui/wxpython/rlisetup/wizard.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/rlisetup/wizard.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -132,7 +132,7 @@
             self._cleanup()
 
     def _write_confile(self):
-        """!Write the configuration file"""
+        """Write the configuration file"""
         f = open(os.path.join(self.rlipath, self.startpage.conf_name), 'wb')
         self.rasterinfo = grast.raster_info(self.startpage.rast)
         self._write_region(f)
@@ -150,7 +150,7 @@
         self.SF_EWRES = self.gregion['ewres']
 
     def _write_region(self, fil):
-        """!Write the region"""
+        """Write the region"""
         if self.startpage.region == 'whole':
             fil.write("SAMPLINGFRAME 0|0|1|1\n")
             self._temp_region()
@@ -226,7 +226,7 @@
         return
 
     def _circle(self, radius, mask):
-        """!Create a circle mask"""
+        """Create a circle mask"""
         self._value_for_circle(radius)
         eastEdge = float(self.SF_W + (self.CIR_RL * self.SF_EWRES))
         southEdge = float(self.SF_N - (self.CIR_CL * self.SF_NSRES))
@@ -243,7 +243,7 @@
         grass.run_command('g.region', rast=self.startpage.rast)
 
     def getSamplingType(self):
-        """!Obtain the sampling type"""
+        """Obtain the sampling type"""
         devicetype = self.samplingareapage.regionbox
         samplingtype = self.samplingareapage.samplingtype
         shapetype = self.units.boxtype
@@ -281,7 +281,7 @@
         return samtype
 
     def _write_area(self, fil):
-        """!Write the area according the type"""
+        """Write the area according the type"""
         samtype = self.getSamplingType()
 
         #sampling type is whole
@@ -402,7 +402,7 @@
             fil.write("VECTORMAP {name}\n".format(name=self.startpage.vect))
 
     def _cleanup(self):
-        """!Clean all the variables to save into configuration file"""
+        """Clean all the variables to save into configuration file"""
         self.startpage.conf_name = ''
         self.startpage.rast = ''
         self.startpage.vect = ''
@@ -492,7 +492,7 @@
         wx.CallAfter(wx.FindWindowById(wx.ID_FORWARD).Enable, False)
 
     def OnSampling(self, event):
-        """!Change region type"""
+        """Change region type"""
         if event.GetInt() == 0:
             self.region = 'whole'
             self.SetNext(self.parent.samplingareapage)
@@ -504,7 +504,7 @@
             self.SetNext(self.parent.drawsampleframepage)
 
     def OnName(self, event):
-        """!Sets the name of configuration file"""
+        """Sets the name of configuration file"""
         if self.conf_name in self.parent.parent.listfiles:
             GMessage(parent=self, message=_("The configuration file %s "
                      "already exists, please change name") % self.conf_name)
@@ -512,41 +512,41 @@
             self.conf_name = ''
 
     def OnNameChanged(self, event):
-        """!Name of configuration file has changed"""
+        """Name of configuration file has changed"""
         self.conf_name = self.newconftxt.GetValue()
         next = wx.FindWindowById(wx.ID_FORWARD)
         next.Enable(self.CheckInput())
 
     def OnRast(self, event):
-        """!Sets raster map"""
+        """Sets raster map"""
         self.rast = event.GetString()
         next = wx.FindWindowById(wx.ID_FORWARD)
         next.Enable(self.CheckInput())
 
     def OnVector(self, event):
-        """!Sets vector map"""
+        """Sets vector map"""
         self.vect = event.GetString()
         next = wx.FindWindowById(wx.ID_FORWARD)
         next.Enable(self.CheckInput())
 
     def OnEnterPage(self, event):
-        """!Sets the default values, for the entire map
+        """Sets the default values, for the entire map
         """
         next = wx.FindWindowById(wx.ID_FORWARD)
         next.Enable(self.CheckInput())
         wx.CallAfter(wx.FindWindowById(wx.ID_FORWARD).Enable, self.CheckInput())
 
     def CheckInput(self):
-        """!Check input fields.
+        """Check input fields.
 
-        @return True if configuration file is given and raster xor vector map,
+        :return: True if configuration file is given and raster xor vector map,
         False otherwise
         """
         #R#return bool(self.conf_name and (bool(self.rast) != bool(self.vect)))
         return bool(self.conf_name and bool(self.rast))
 
     def OnExitPage(self, event=None):
-        """!Function during exiting"""
+        """Function during exiting"""
         next = wx.FindWindowById(wx.ID_FORWARD)
         next.Enable(self.CheckInput())
         if event.GetDirection():
@@ -637,27 +637,27 @@
         self.Bind(wiz.EVT_WIZARD_PAGE_CHANGING, self.OnExitPage)
 
     def OnColLeft(self, event):
-        """!Sets the name of configuration file"""
+        """Sets the name of configuration file"""
         self.col_up = self.ColUpLefttxt.GetValue()
         checkValue(self.col_up)
 
     def OnRowLeft(self, event):
-        """!Sets the name of configuration file"""
+        """Sets the name of configuration file"""
         self.row_up = self.RowUpLefttxt.GetValue()
         checkValue(self.row_up)
 
     def OnColLen(self, event):
-        """!Sets the name of configuration file"""
+        """Sets the name of configuration file"""
         self.col_len = self.ColLentxt.GetValue()
         checkValue(self.col_len)
 
     def OnRowLen(self, event):
-        """!Sets the name of configuration file"""
+        """Sets the name of configuration file"""
         self.row_len = self.RowLentxt.GetValue()
         checkValue(self.row_len)
 
     def OnEnterPage(self, event):
-        """!Sets the default values, for the entire map
+        """Sets the default values, for the entire map
         """
         #R# check if raster exists before anything
         if self.col_len == '' and self.row_len == '':
@@ -669,7 +669,7 @@
         self.RowLentxt.SetValue(self.row_len)
 
     def OnExitPage(self, event=None):
-        """!Function during exiting"""
+        """Function during exiting"""
         if self.row_len == '' or self.col_len == '' or self.row_up == '' or self.col_up == '':
             wx.FindWindowById(wx.ID_FORWARD).Enable(False)
         else:
@@ -677,7 +677,7 @@
 
 
 class DrawSampleFramePage(TitledPage):
-    """!Choose the region setting the values drawing a box"""
+    """Choose the region setting the values drawing a box"""
     def __init__(self, wizard, parent):
         TitledPage.__init__(self, wizard, _("Draw sampling frame"))
         self.parent = parent
@@ -687,7 +687,7 @@
         self.Bind(wiz.EVT_WIZARD_PAGE_CHANGING, self.OnExitPage)
 
     def SampleFrameChanged(self, region):
-        """"!Enables the next dialog when region is set"""
+        """"Enables the next dialog when region is set"""
         if region:
             self.tregion = region
             wx.FindWindowById(wx.ID_FORWARD).Enable(True)
@@ -695,7 +695,7 @@
             wx.FindWindowById(wx.ID_FORWARD).Enable(False)
 
     def OnEnterPage(self, event):
-        """!Function during entering"""
+        """Function during entering"""
         if self.mapPanel is None:
             self.mapPanel = RLiSetupMapPanel(self, samplingType='drawFrame')
             self.mapPanel.sampleFrameChanged.connect(self.SampleFrameChanged)
@@ -716,7 +716,7 @@
                           name=rast, hidden=False, opacity=1.0, render=True)
 
     def OnExitPage(self, event=None):
-        """!Function during exiting"""
+        """Function during exiting"""
         if event.GetDirection():
             self.SetNext(self.parent.samplingareapage)
             self.parent.samplingareapage.SetPrev(self)
@@ -803,7 +803,7 @@
         self.Bind(wiz.EVT_WIZARD_PAGE_CHANGED, self.OnEnterPage)
 
     def OnNumRegions(self, event):
-        """!Obtain the number of regions"""
+        """Obtain the number of regions"""
         if event.GetString():
             self.SetNext(self.parent.regions)
             wx.FindWindowById(wx.ID_FORWARD).Enable(True)
@@ -812,7 +812,7 @@
             wx.FindWindowById(wx.ID_FORWARD).Enable(False)
 
     def OnEnterPage(self, event):
-        """!Insert values into text controls for summary of location
+        """Insert values into text controls for summary of location
         creation options
         """
         self.SetVal(None)
@@ -825,7 +825,7 @@
         wx.FindWindowById(wx.ID_FORWARD).Enable(True)
 
     def SetVal(self, event):
-        """!Choose method"""
+        """Choose method"""
         radio = self.radioBox.GetSelection()
         wx.FindWindowById(wx.ID_FORWARD).Enable(True)
         if radio == 0:
@@ -848,7 +848,7 @@
         self.ShowExtraOptions(self.samplingtype)
 
     def ShowExtraOptions(self, samtype):
-        """!Show some extra options for some sampling type"""
+        """Show some extra options for some sampling type"""
         if samtype == SamplingType.REGIONS:
             self.sizer.Hide(self.regionBox)
             self.sizer.Hide(self.areaPanel)
@@ -871,14 +871,14 @@
         return
 
     def OnVectYes(self, event):
-        """!The user choose to select the vector areas, this function set the
+        """The user choose to select the vector areas, this function set the
         next page to VectorAreasPage"""
         self.SetNext(self.parent.vectorareas)
         wx.FindWindowById(wx.ID_FORWARD).Enable(True)
         self.parent.wizard.ShowPage(self.parent.vectorareas)
 
     def OnVectNo(self, event):
-        """!The user choose to use all the vector areas, this function analyses
+        """The user choose to use all the vector areas, this function analyses
         all the vector areas and fill the msAreaList variable"""
         self.sizer.Show(self.calculatingAreas)
         self.sizer.Hide(self.regionNumPanel)
@@ -911,7 +911,7 @@
         self._progressDlg = None
 
     def RegionDraw(self, regtype):
-        """!Set the next page to units or drawunits"""
+        """Set the next page to units or drawunits"""
         if regtype == 0:
             self.regionbox = 'keyboard'
             if self.samplingtype == SamplingType.UNITS:
@@ -960,7 +960,7 @@
             wx.FindWindowById(wx.ID_FORWARD).Enable(False)
 
     def OnEnterPage(self, event):
-        """!Function during entering"""
+        """Function during entering"""
         if self.parent.samplingareapage.samplingtype == SamplingType.WHOLE:
             self.title.SetLabel(_("Draw moving windows region"))
         elif self.parent.samplingareapage.samplingtype == SamplingType.UNITS:
@@ -995,7 +995,7 @@
 
 
 class SampleUnitsKeyPage(TitledPage):
-    """!Set values from keyboard for sample units
+    """Set values from keyboard for sample units
        It is used if you choose keyboard from Sampling Units or Moving windows
        in sampling areas page
     """
@@ -1091,20 +1091,20 @@
         self.OnType(None)
 
     def OnEnterPage(self, event=None):
-        """!Function during entering"""
+        """Function during entering"""
         # This is an hack to force the user to choose Rectangle or Circle
         self.typeBox.SetSelection(2),
         self.typeBox.ShowItem(2, False)
         self.panelSizer.Layout()
 
     def OnExitPage(self, event=None):
-        """!Function during exiting"""
+        """Function during exiting"""
         if event.GetDirection():
             self.SetNext(self.parent.summarypage)
             self.SetPrev(self.parent.samplingareapage)
 
     def OnType(self, event):
-        """!Set if rectangle or circle will be used"""
+        """Set if rectangle or circle will be used"""
         chosen = self.typeBox.GetSelection()
         self.widthLabel.SetLabel(self.widthLabels[chosen])
         self.heightLabel.SetLabel(self.heightLabels[chosen])
@@ -1166,7 +1166,7 @@
 
 
 class MovingKeyPage(TitledPage):
-    """!Set values from keyboard for sample units"""
+    """Set values from keyboard for sample units"""
 
     def __init__(self, wizard, parent):
         TitledPage.__init__(self, wizard, _("Set sample units"))
@@ -1240,10 +1240,10 @@
             self.boxtype = 'circle'
 
     def CheckInput(self):
-        """!Check input fields.
+        """Check input fields.
 
-        @return True if configuration file is given and raster xor vector map,
-        False otherwise
+        :return: True if configuration file is given and raster xor
+                 vector map, False otherwise
         """
         return bool(self.width and bool(self.height))
 
@@ -1259,7 +1259,7 @@
 
 
 class UnitsMousePage(TitledPage):
-    """!Choose the sampling area setting the values using the mouse drawing the
+    """Choose the sampling area setting the values using the mouse drawing the
        areas with rectangle or circle. It is used both from 'Moving windows'
        and 'Sample units'.
     """
@@ -1305,7 +1305,7 @@
         self.regionNumTxt.SetValue('')
 
     def OnEnterPage(self, event):
-        """!Function during entering"""
+        """Function during entering"""
         if self.numregions:
             wx.FindWindowById(wx.ID_FORWARD).Enable(True)
         else:
@@ -1347,7 +1347,7 @@
             self.drawtype = 'circle'
 
     def OnNumRegions(self, event):
-        """!Set the number of region"""
+        """Set the number of region"""
         if event.GetString():
             self.SetNext(self.parent.drawsampleunitspage)
             wx.FindWindowById(wx.ID_FORWARD).Enable(True)
@@ -1356,14 +1356,14 @@
             wx.FindWindowById(wx.ID_FORWARD).Enable(False)
 
     def OnExitPage(self, event=None):
-        """!Function during exiting"""
+        """Function during exiting"""
         if event.GetDirection():
             self.SetNext(self.drawsampleunitspage)
             self.SetPrev(self.samplingareapage)
 
 
 class DrawSampleUnitsPage(TitledPage):
-    """!Choose the sampling area drawing them"""
+    """Choose the sampling area drawing them"""
     def __init__(self, wizard, parent):
         TitledPage.__init__(self, wizard, _("Draw sampling units"))
         self.parent = parent
@@ -1388,7 +1388,7 @@
             wx.FindWindowById(wx.ID_FORWARD).Enable(False)
 
     def OnEnterPage(self, event):
-        """!Function during entering"""
+        """Function during entering"""
 
         if self.parent.samplingareapage.samplingtype in [SamplingType.MVWIN,
                                                          SamplingType.MMVWINC,
@@ -1434,7 +1434,7 @@
 
 
 class VectorAreasPage(TitledPage):
-    """!Choose the sampling area using the vector features"""
+    """Choose the sampling area using the vector features"""
     def __init__(self, wizard, parent):
         TitledPage.__init__(self, wizard, _("Select sampling areas"))
         self.parent = parent
@@ -1460,7 +1460,7 @@
         self.sizer.Add(self.areaPanel, flag=wx.ALIGN_CENTER, pos=(2, 0))
 
     def afterRegionDrawn(self):
-        """!Function to update the title and the number of selected area"""
+        """Function to update the title and the number of selected area"""
         self.areascount = self.areascount + 1
         if self.areascount == self.areanum:
             wx.FindWindowById(wx.ID_FORWARD).Enable(True)
@@ -1472,19 +1472,19 @@
             return False
 
     def OnYes(self, event):
-        """!Function to create the string for the conf file if the area
+        """Function to create the string for the conf file if the area
         is selected"""
         self.parent.msAreaList.append(obtainAreaVector(self.outname))
         if not self.afterRegionDrawn():
             self.newCat()
 
     def OnNo(self, event):
-        """!Function to pass to the next feature if it is not selected"""
+        """Function to pass to the next feature if it is not selected"""
         if not self.afterRegionDrawn():
             self.newCat()
 
     def newCat(self):
-        """!Convert to raster and draw the new feature"""
+        """Convert to raster and draw the new feature"""
         cat = self.vect_cats[self.areascount]
         self.outname = "{name}_{cat}".format(name=self.vect.split('@')[0],
                                              cat=cat)
@@ -1502,7 +1502,7 @@
         self.areaText.SetLabel("Is this area (cat={n}) ok?".format(n=cat))
 
     def OnEnterPage(self, event):
-        """!Function during entering: draw the raster map and the first vector
+        """Function during entering: draw the raster map and the first vector
         feature"""
         if self.mapPanel is None:
             self.mapPanel = RLiSetupMapPanel(self, samplingType=self.parent.samplingareapage.samplingtype,
@@ -1535,7 +1535,7 @@
         self.newCat()
 
     def OnExitPage(self, event=None):
-        """!Function during exiting"""
+        """Function during exiting"""
         grass.del_temp_region()
 #        if event.GetDirection():
 #            self.SetNext(self.parent.samplingareapage)
@@ -1543,7 +1543,7 @@
 
 
 class SummaryPage(TitledPage):
-    """!Shows summary result of choosing data"""
+    """Shows summary result of choosing data"""
     def __init__(self, wizard, parent):
         TitledPage.__init__(self, wizard, _("Summary"))
         global rlisettings
@@ -1653,7 +1653,7 @@
                        flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.ALL)
 
     def OnEnterPage(self, event):
-        """!Insert values into text controls for summary of location
+        """Insert values into text controls for summary of location
         creation options
         """
         self.conftxt.SetLabel(self.parent.startpage.conf_name)

Modified: grass/trunk/gui/wxpython/timeline/frame.py
===================================================================
--- grass/trunk/gui/wxpython/timeline/frame.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/timeline/frame.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package frame
 
 @brief Timeline Tool
@@ -50,7 +50,7 @@
 
 
 def check_version(*version):
-    """!Checks if given version or newer is installed"""
+    """Checks if given version or newer is installed"""
     versionInstalled = []
     for i in matplotlib.__version__.split('.'):
         try:
@@ -65,7 +65,7 @@
 
 
 class TimelineFrame(wx.Frame):
-    """!The main frame of the application"""
+    """The main frame of the application"""
     def __init__(self, parent):
         wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=_("GRASS GIS Timeline Tool"))
 
@@ -80,7 +80,7 @@
         self.dbif.connect()
 
     def __del__(self):
-        """!Close the database interface and stop the messenger and C-interface
+        """Close the database interface and stop the messenger and C-interface
            subprocesses.
         """
         if self.dbif.connected is True:
@@ -88,7 +88,7 @@
         tgis.stop_subprocesses()
 
     def _layout(self):
-        """!Creates the main panel with all the controls on it:
+        """Creates the main panel with all the controls on it:
              * mpl canvas
              * mpl navigation toolbar
              * Control panel for interaction
@@ -149,7 +149,7 @@
         self.vbox.Fit(self)
 
     def _getData(self, timeseries):
-        """!Load data and read properties"""
+        """Load data and read properties"""
         self.timeData = {}
         mode = None
         unit = None
@@ -220,7 +220,7 @@
         self.unit = unit
 
     def _draw3dFigure(self):
-        """!Draws 3d view (spatio-temporal extents).
+        """Draws 3d view (spatio-temporal extents).
 
 
         Only for matplotlib versions >= 1.0.0.
@@ -272,7 +272,7 @@
         self.canvas.draw()
 
     def _draw2dFigure(self):
-        """!Draws 2D plot (temporal extents)"""
+        """Draws 2D plot (temporal extents)"""
         self.axes2d.clear()
         self.axes2d.grid(True)
         if self.temporalType == 'absolute':
@@ -337,7 +337,7 @@
         DataCursor(plots, lookUp, InfoFormat)
 
     def OnRedraw(self, event):
-        """!Required redrawing."""
+        """Required redrawing."""
         datasets = self.datasetSelect.GetValue().strip()
         if not datasets:
             return
@@ -354,7 +354,7 @@
         self._redraw()
 
     def _redraw(self):
-        """!Readraw data.
+        """Readraw data.
 
         Decides if to draw also 3D and adjusts layout if needed.
         """
@@ -382,11 +382,11 @@
                 self.canvas.draw()
 
     def _checkDatasets(self, datasets):
-        """!Checks and validates datasets.
+        """Checks and validates datasets.
 
         Reports also type of dataset (e.g. 'strds').
 
-        @return (mapName, mapset, type)
+        :return: (mapName, mapset, type)
         """
         validated = []
         tDict = tgis.tlist_grouped('stds', group_type=True, dbif=self.dbif)
@@ -437,7 +437,7 @@
 #  interface
 
     def SetDatasets(self, datasets):
-        """!Set data"""
+        """Set data"""
         if not datasets:
             return
         try:
@@ -452,13 +452,13 @@
         self._redraw()
 
     def Show3D(self, show):
-        """!Show also 3D if possible"""
+        """Show also 3D if possible"""
         if check_version(1, 0, 0):
             self.view3dCheck.SetValue(show)
 
 
 class LookUp:
-    """!Helper class for searching info by coordinates"""
+    """Helper class for searching info by coordinates"""
     def __init__(self, timeData):
         self.data = {}
         self.timeData = timeData
@@ -492,7 +492,7 @@
 
 
 def InfoFormat(timeData, datasetName, mapIndex):
-    """!Formats information about dataset"""
+    """Formats information about dataset"""
     text = []
     etype = timeData[datasetName]['elementType']
     name, mapset = datasetName.split('@')
@@ -558,7 +558,7 @@
             fig.canvas.mpl_connect('key_press_event', self.keyPressed)
 
     def keyPressed(self, event):
-        """!Key pressed - hide annotation if Delete was pressed"""
+        """Key pressed - hide annotation if Delete was pressed"""
         if event.key != 'delete':
             return
         for ax in self.axes:

Modified: grass/trunk/gui/wxpython/tools/build_modules_xml.py
===================================================================
--- grass/trunk/gui/wxpython/tools/build_modules_xml.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/tools/build_modules_xml.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package tools.build_modules_xml
 
 @brief Builds XML metadata of GRASS modules. Runs only during compilation.
@@ -20,7 +20,7 @@
 
 
 def escapeXML(text):
-    """!This is a duplicate of function in core/toolboxes.
+    """This is a duplicate of function in core/toolboxes.
 
     >>> escapeXML('<>&')
     '&lt;>&'
@@ -47,7 +47,7 @@
 
 
 def parse_modules(fd):
-    """!Writes metadata to xml file."""
+    """Writes metadata to xml file."""
     # TODO: what about ms windows? does gtask handle this? 
     mlist = list(gcore.get_commands()[0])
     indent = 4
@@ -105,7 +105,7 @@
 def doc_test():
     """Tests the module using doctest
 
-    @return a number of failed tests
+    :return: a number of failed tests
     """
     import doctest
     do_doctest_gettext_workaround()

Modified: grass/trunk/gui/wxpython/tools/update_menudata.py
===================================================================
--- grass/trunk/gui/wxpython/tools/update_menudata.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/tools/update_menudata.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @brief Support script for wxGUI - only for developers needs. Updates
 menudata.xml file.
 
@@ -34,7 +34,7 @@
 from core.globalvar import grassCmd
 
 def parseModules():
-    """!Parse modules' interface"""
+    """Parse modules' interface"""
     modules = dict()
     
     # list of modules to be ignored
@@ -63,7 +63,7 @@
     return modules
 
 def updateData(data, modules):
-    """!Update menu data tree"""
+    """Update menu data tree"""
     # list of modules to be ignored
     ignore = ['v.type_wrapper.py',
               'vcolors']
@@ -110,7 +110,7 @@
             grass.warning("'%s' not available from the menu" % module)
     
 def writeData(data, file = None):
-    """!Write updated menudata.xml"""
+    """Write updated menudata.xml"""
     if file is None:
         file = os.path.join('xml', 'menudata.xml')
     

Modified: grass/trunk/gui/wxpython/vdigit/dialogs.py
===================================================================
--- grass/trunk/gui/wxpython/vdigit/dialogs.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/vdigit/dialogs.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package vdigit.dialogs
 
 @brief wxGUI vector digitizer dialogs
@@ -34,13 +34,13 @@
     def __init__(self, parent, title,
                  vectorName, query = None, cats = None,
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, **kwargs):
-        """!Dialog used to display/modify categories of vector objects
+        """Dialog used to display/modify categories of vector objects
         
-        @param parent
-        @param title dialog title
-        @param query {coordinates, qdist} - used by v.edit/v.what
-        @param cats  directory of lines (layer/categories) - used by vdigit
-        @param style dialog style
+        :param parent:
+        :param title: dialog title
+        :param query: {coordinates, qdist} - used by v.edit/v.what
+        :param cats: directory of lines (layer/categories) - used by vdigit
+        :param style: dialog style
         """
         self.parent = parent  # map window class instance
         self.digit = parent.digit
@@ -198,22 +198,22 @@
         self.Bind(wx.EVT_LIST_COL_CLICK, self.OnColClick, self.list)
 
     def GetListCtrl(self):
-        """!Used by ColumnSorterMixin
+        """Used by ColumnSorterMixin
         """
         return self.list
 
     def OnColClick(self, event):
-        """!Click on column header (order by)
+        """Click on column header (order by)
         """
         event.Skip()
         
     def OnBeginEdit(self, event):
-        """!Editing of item started
+        """Editing of item started
         """
         event.Allow()
 
     def OnEndEdit(self, event):
-        """!Finish editing of item
+        """Finish editing of item
         """
         itemIndex = event.GetIndex()
         layerOld = int (self.list.GetItem(itemIndex, 0).GetText())
@@ -246,7 +246,7 @@
             return False
 
     def OnRightDown(self, event):
-        """!Mouse right button down
+        """Mouse right button down
         """
         x = event.GetX()
         y = event.GetY()
@@ -259,7 +259,7 @@
         event.Skip()
 
     def OnRightUp(self, event):
-        """!Mouse right button up
+        """Mouse right button up
         """
         if not hasattr(self, "popupID1"):
             self.popupID1 = wx.NewId()
@@ -283,12 +283,12 @@
         menu.Destroy()
 
     def OnItemSelected(self, event):
-        """!Item selected
+        """Item selected
         """
         event.Skip()
 
     def OnItemDelete(self, event):
-        """!Delete selected item(s) from the list (layer/category pair)
+        """Delete selected item(s) from the list (layer/category pair)
         """
         item = self.list.GetFirstSelected()
         while item != -1:
@@ -302,7 +302,7 @@
         event.Skip()
         
     def OnItemDeleteAll(self, event):
-        """!Delete all items from the list
+        """Delete all items from the list
         """
         self.list.DeleteAllItems()
         self.cats[self.fid] = {}
@@ -310,7 +310,7 @@
         event.Skip()
 
     def OnFeature(self, event):
-        """!Feature id changed (on duplicates)
+        """Feature id changed (on duplicates)
         """
         self.fid = int(event.GetString())
         
@@ -327,10 +327,10 @@
         event.Skip()
         
     def _getCategories(self, coords, qdist):
-        """!Get layer/category pairs for all available
+        """Get layer/category pairs for all available
         layers
 
-        Return True line found or False if not found
+        :return: True line found or False if not found
         """
         ret = RunCommand('v.what',
                          parent = self,
@@ -357,7 +357,7 @@
         return True
 
     def OnReload(self, event):
-        """!Reload button pressed
+        """Reload button pressed
         """
         # restore original list
         self.cats = copy.deepcopy(self.cats_orig)
@@ -369,7 +369,7 @@
         event.Skip()
 
     def OnCancel(self, event):
-        """!Cancel button pressed
+        """Cancel button pressed
         """
         self.parent.parent.dialogs['category'] = None
         if self.digit:
@@ -381,7 +381,7 @@
         self.Close()
 
     def OnApply(self, event):
-        """!Apply button pressed
+        """Apply button pressed
         """
         for fid in self.cats.keys():
             newfid = self.ApplyChanges(fid)
@@ -389,9 +389,9 @@
                 self.fid = newfid
             
     def ApplyChanges(self, fid):
-        """!Apply changes 
+        """Apply changes 
 
-        @param fid feature id
+        :param fid: feature id
         """
         cats = self.cats[fid]
         cats_orig = self.cats_orig[fid]
@@ -439,13 +439,13 @@
         return newfid
 
     def OnOK(self, event):
-        """!OK button pressed
+        """OK button pressed
         """
         self.OnApply(event)
         self.OnCancel(event)
 
     def OnAddCat(self, event):
-        """!Button 'Add' new category pressed
+        """Button 'Add' new category pressed
         """
         try:
             layer = int(self.layerNew.GetStringSelection())
@@ -478,16 +478,16 @@
         return True
 
     def GetLine(self):
-        """!Get id of selected line of 'None' if no line is selected
+        """Get id of selected line of 'None' if no line is selected
         """
         return self.cats.keys()
 
     def UpdateDialog(self, query = None, cats = None):
-        """!Update dialog
+        """Update dialog
         
-        @param query {coordinates, distance} - v.what
-        @param cats  directory layer/cats    - vdigit
-        Return True if updated otherwise False
+        :param query: {coordinates, distance} - v.what
+        :param cats:  directory layer/cats    - vdigit
+        :return: True if updated otherwise False
         """
         # line: {layer: [categories]}
         self.cats = {}
@@ -540,7 +540,7 @@
                        listmix.TextEditMixin):
     def __init__(self, parent, id, pos = wx.DefaultPosition,
                  size = wx.DefaultSize, style = 0):
-        """!List of layers/categories"""
+        """List of layers/categories"""
         self.parent = parent
         
         wx.ListCtrl.__init__(self, parent, id, pos, size, style)
@@ -549,7 +549,7 @@
         listmix.TextEditMixin.__init__(self)
 
     def Populate(self, cats, update = False):
-        """!Populate the list
+        """Populate the list
         """
         itemData = {} # requested by sorter
 
@@ -580,7 +580,7 @@
 
 class VDigitZBulkDialog(wx.Dialog):
     def __init__(self, parent, title, nselected, style = wx.DEFAULT_DIALOG_STYLE):
-        """!Dialog used for Z bulk-labeling tool
+        """Dialog used for Z bulk-labeling tool
         """
         wx.Dialog.__init__(self, parent = parent, id = wx.ID_ANY, title = title, style = style)
 
@@ -643,7 +643,7 @@
     def __init__(self, parent, data, title = _("List of duplicates"),
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER,
                  pos = wx.DefaultPosition):
-        """!Show duplicated feature ids
+        """Show duplicated feature ids
         """
         wx.Dialog.__init__(self, parent = parent, id = wx.ID_ANY, title = title, style = style,
                            pos = pos)
@@ -699,9 +699,9 @@
         self.SetMinSize((250, 180))
 
     def GetUnSelected(self):
-        """!Get unselected items (feature id)
+        """Get unselected items (feature id)
 
-        @return list of ids
+        :return: list of ids
         """
         ids = []
         for id in self.winList:
@@ -716,7 +716,7 @@
 class CheckListFeature(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.CheckListCtrlMixin):
     def __init__(self, parent, data,
                  pos = wx.DefaultPosition, log = None):
-        """!List of mapset/owner/group
+        """List of mapset/owner/group
         """
         self.parent = parent
         self.data = data
@@ -734,7 +734,7 @@
         self.LoadData(self.data)
 
     def LoadData(self, data):
-        """!Load data into list
+        """Load data into list
         """
         self.InsertColumn(0, _('Feature id'))
         self.InsertColumn(1, _('Layer (Categories)'))
@@ -751,6 +751,6 @@
         self.SetColumnWidth(col = 1, width = wx.LIST_AUTOSIZE_USEHEADER)
                 
     def OnCheckItem(self, index, flag):
-        """!Mapset checked/unchecked
+        """Mapset checked/unchecked
         """
         pass

Modified: grass/trunk/gui/wxpython/vdigit/main.py
===================================================================
--- grass/trunk/gui/wxpython/vdigit/main.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/vdigit/main.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package vdigit.main
 
 @brief wxGUI vector digitizer
@@ -28,8 +28,8 @@
 
 class VDigit(IVDigit):
     def __init__(self, mapwindow):
-        """!Base class of vector digitizer
+        """Base class of vector digitizer
 
-        @param mapwindow reference to a map window instance
+        :param mapwindow: reference to a map window instance
         """
         IVDigit.__init__(self, mapwindow)

Modified: grass/trunk/gui/wxpython/vdigit/mapwindow.py
===================================================================
--- grass/trunk/gui/wxpython/vdigit/mapwindow.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/vdigit/mapwindow.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package vdigit.mapwindow
 
 @brief Map display canvas for wxGUI vector digitizer
@@ -30,7 +30,7 @@
 from gui_core       import gselect
 
 class VDigitWindow(BufferedMapWindow):
-    """!A Buffered window extended for vector digitizer.
+    """A Buffered window extended for vector digitizer.
     """
     def __init__(self, parent, giface, Map, properties, tree=None,
                  id=wx.ID_ANY, lmgr=None,
@@ -66,11 +66,11 @@
         return None
 
     def GetDigit(self):
-        """!Get digit class"""
+        """Get digit class"""
         return self.digit
     
     def SetToolbar(self, toolbar):
-        """!Set up related toolbar
+        """Set up related toolbar
         """
         self.toolbar = toolbar
 
@@ -104,7 +104,7 @@
         self.digitizingInfo.emit(text=text)
 
     def OnKeyDown(self, event):
-        """!Key pressed"""
+        """Key pressed"""
         shift = event.ShiftDown()
         kc = event.GetKeyCode()
         
@@ -158,7 +158,7 @@
                 del self.moveInfo['beginDiff']
         
     def OnLeftDownAddLine(self, event):
-        """!Left mouse button pressed - add new feature
+        """Left mouse button pressed - add new feature
         """
         try:
             mapLayer = self.toolbar.GetLayer().GetName()
@@ -216,7 +216,7 @@
             self.DrawLines(pdc = self.pdcTmp)
         
     def _geomAttrb(self, fid, dialog, attrb):
-        """!Define geometry attributes
+        """Define geometry attributes
         """
         mapLayer = self.toolbar.GetLayer()
         if self.tree:
@@ -249,9 +249,9 @@
             dialog.OnReset()
         
     def _geomAttrbUpdate(self, fids):
-        """!Update geometry atrributes of currently selected features
+        """Update geometry atrributes of currently selected features
         
-        @param fid list feature id
+        :param fid: list feature id
         """
         mapLayer = self.parent.toolbars['vdigit'].GetLayer()
         vectorName =  mapLayer.GetName()
@@ -297,9 +297,10 @@
                        input = sqlfile.name)
             
     def _updateATM(self):
-        """!Update open Attribute Table Manager
+        """Update open Attribute Table Manager
         
-        @todo: use AddDataRow() instead
+        .. todo::
+            use AddDataRow() instead
         """
         if not self.lmgr:
             return
@@ -315,7 +316,7 @@
                 atm.LoadData(layer)
         
     def OnLeftDownEditLine(self, event):
-        """!Left mouse button pressed - edit linear feature - add new
+        """Left mouse button pressed - edit linear feature - add new
         vertex.
         """
         self.polycoords.append(self.Pixel2Cell(self.mouse['begin']))
@@ -323,7 +324,7 @@
         self.DrawLines(pdc = self.pdcTmp)
         
     def OnLeftDownMoveLine(self, event):
-        """!Left mouse button pressed - vector digitizer move
+        """Left mouse button pressed - vector digitizer move
         feature/vertex, edit linear feature
         """
         self.moveInfo = dict()
@@ -341,7 +342,7 @@
             self.pdcTmp.SetPen(self.polypen)
         
     def OnLeftDownDisplayCA(self, event):
-        """!Left mouse button pressed - vector digitizer display categories
+        """Left mouse button pressed - vector digitizer display categories
         or attributes action
         """
         try:
@@ -425,7 +426,7 @@
         self.UpdateMap(render = False, renderVector = True)
         
     def OnLeftDownCopyCA(self, event):
-        """!Left mouse button pressed - vector digitizer copy
+        """Left mouse button pressed - vector digitizer copy
         categories or attributes action
         """
         if not hasattr(self, "copyCatsList"):
@@ -435,7 +436,7 @@
             self.mouse['box'] = 'box'
         
     def OnLeftDownCopyLine(self, event):
-        """!Left mouse button pressed - vector digitizer copy lines
+        """Left mouse button pressed - vector digitizer copy lines
         action
         """
         if not hasattr(self, "copyIds"):
@@ -443,7 +444,7 @@
             self.layerTmp = None
         
     def OnLeftDownBulkLine(self, event):
-        """!Left mouse button pressed - vector digitizer label 3D
+        """Left mouse button pressed - vector digitizer label 3D
         vector lines
         """
         if len(self.polycoords) > 1: # start new line
@@ -460,7 +461,7 @@
             self.DrawLines(self.pdcTmp, polycoords = (begin, end))
         
     def OnLeftDownUndo(self, event):
-        """!Left mouse button pressed with control key - vector
+        """Left mouse button pressed with control key - vector
         digitizer undo functionality
         """
         if self.mouse["use"] != "pointer" or not self.toolbar:
@@ -525,7 +526,7 @@
         self.UpdateMap(render = False, renderVector = False)
 
     def _onLeftDown(self, event):
-        """!Left mouse button donw - vector digitizer various actions
+        """Left mouse button donw - vector digitizer various actions
         """
         try:
             mapLayer = self.toolbar.GetLayer().GetName()
@@ -588,7 +589,7 @@
             self.OnLeftDownBulkLine(event)
         
     def OnLeftUpVarious(self, event):
-        """!Left mouse button released - vector digitizer various
+        """Left mouse button released - vector digitizer various
         actions
         """
         pos1 = self.Pixel2Cell(self.mouse['begin'])
@@ -716,7 +717,7 @@
                 self.UpdateMap(render = False, renderVector = False)
         
     def OnLeftUpModifyLine(self, event):
-        """!Left mouse button released - vector digitizer split line,
+        """Left mouse button released - vector digitizer split line,
         add/remove vertex action
         """
         pos1 = self.Pixel2Cell(self.mouse['begin'])
@@ -748,7 +749,7 @@
                 self.UpdateMap(render = False)
         
     def OnLeftUpCopyLine(self, event):
-        """!Left mouse button released - vector digitizer copy feature
+        """Left mouse button released - vector digitizer copy feature
         action
         """
         pos1 = self.Pixel2Cell(self.mouse['begin'])
@@ -795,7 +796,7 @@
             self.UpdateMap(render = True, renderVector = True)
             
     def OnLeftUpBulkLine(self, event):
-        """!Left mouse button released - vector digitizer z-bulk line
+        """Left mouse button released - vector digitizer z-bulk line
         action
         """
         # select lines to be labeled
@@ -811,14 +812,14 @@
             self.UpdateMap(render = False, renderVector = False)
             
     def OnLeftUpConnectLine(self, event):
-        """!Left mouse button released - vector digitizer connect line
+        """Left mouse button released - vector digitizer connect line
         action
         """
         if len(self.digit.GetDisplay().GetSelected()) > 0:
             self.UpdateMap(render = False)
         
     def _onLeftUp(self, event):
-        """!Left mouse button released"""
+        """Left mouse button released"""
         if event.ControlDown():
             return
         
@@ -890,7 +891,7 @@
             del self.moveInfo
         
     def _onRightUp(self, event):
-        """!Right mouse button released (confirm action)
+        """Right mouse button released (confirm action)
         """
         action = self.toolbar.GetAction()
         if action == "addLine" and \

Modified: grass/trunk/gui/wxpython/vdigit/preferences.py
===================================================================
--- grass/trunk/gui/wxpython/vdigit/preferences.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/vdigit/preferences.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package vdigit.preferences
 
 @brief wxGUI vector digitizer preferences dialogs
@@ -30,7 +30,7 @@
 class VDigitSettingsDialog(wx.Dialog):
     def __init__(self, parent, giface, title = _("Digitization settings"),
                  style = wx.DEFAULT_DIALOG_STYLE):
-        """!Standard settings dialog for digitization purposes
+        """Standard settings dialog for digitization purposes
         """
         wx.Dialog.__init__(self, parent = parent, id = wx.ID_ANY, title = title, style = style)
 
@@ -79,7 +79,7 @@
         mainSizer.Fit(self)
 
     def _createSymbologyPage(self, notebook):
-        """!Create notebook page concerning symbology settings"""
+        """Create notebook page concerning symbology settings"""
         panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
         notebook.AddPage(page = panel, text = _("Symbology"))
 
@@ -117,7 +117,7 @@
         return panel
 
     def _createGeneralPage(self, notebook):
-        """!Create notebook page concerning general settings"""
+        """Create notebook page concerning general settings"""
         panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
         notebook.AddPage(page = panel, text = _("General"))
 
@@ -275,7 +275,7 @@
         return panel
 
     def _createQueryPage(self, notebook):
-        """!Create notebook page for query tool"""
+        """Create notebook page for query tool"""
         panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
         notebook.AddPage(page = panel, text = _("Query tool"))
 
@@ -356,7 +356,7 @@
         return panel
 
     def _createAttributesPage(self, notebook):
-        """!Create notebook page for attributes"""
+        """Create notebook page for attributes"""
         panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
         notebook.AddPage(page = panel, text = _("Attributes"))
 
@@ -523,7 +523,7 @@
         return panel
 
     def _symbologyData(self):
-        """!Data for _createSymbologyPage()
+        """Data for _createSymbologyPage()
 
         label | checkbox | color
         """
@@ -548,7 +548,7 @@
             (_("Direction"), "direction"),)
 
     def OnGeomAttrb(self, event):
-        """!Register geometry attributes (enable/disable)
+        """Register geometry attributes (enable/disable)
         """
         checked = event.IsChecked()
         id = event.GetId()
@@ -565,7 +565,7 @@
             column.Enable(False)
         
     def OnChangeCategoryMode(self, event):
-        """!Change category mode
+        """Change category mode
         """
         mode = event.GetSelection()
         UserSettings.Set(group = 'vdigit', key = "categoryMode", subkey = 'selection', value = mode)
@@ -581,7 +581,7 @@
         self.category.SetValue(UserSettings.Get(group = 'vdigit', key = 'category', subkey = 'value'))
 
     def OnChangeLayer(self, event):
-        """!Layer changed
+        """Layer changed
         """
         layer = event.GetInt()
         if layer > 0:
@@ -592,13 +592,13 @@
         event.Skip()
 
     def OnChangeAddRecord(self, event):
-        """!Checkbox 'Add new record' status changed
+        """Checkbox 'Add new record' status changed
         """
         pass
         # self.category.SetValue(self.digit.SetCategory())
             
     def OnChangeSnappingValue(self, event):
-        """!Change snapping value - update static text
+        """Change snapping value - update static text
         """
         value = self.snappingValue.GetValue()
         
@@ -627,7 +627,7 @@
         event.Skip()
 
     def OnChangeSnappingUnits(self, event):
-        """!Snapping units change -> update static text
+        """Snapping units change -> update static text
         """
         value = self.snappingValue.GetValue()
         units = self.snappingUnit.GetStringSelection()
@@ -645,7 +645,7 @@
         event.Skip()
 
     def OnChangeQuery(self, event):
-        """!Change query
+        """Change query
         """
         if self.queryLength.GetValue():
             # length
@@ -661,7 +661,7 @@
             self.queryDangleValue.Enable(True)
 
     def OnSave(self, event):
-        """!Button 'Save' pressed
+        """Button 'Save' pressed
         """
         self.UpdateSettings()
         self.parent.toolbars['vdigit'].settingsDialog = None
@@ -678,12 +678,12 @@
         event.Skip()
         
     def OnApply(self, event):
-        """!Button 'Apply' pressed
+        """Button 'Apply' pressed
         """
         self.UpdateSettings()
 
     def OnCancel(self, event):
-        """!Button 'Cancel' pressed
+        """Button 'Cancel' pressed
         """
         self.parent.toolbars['vdigit'].settingsDialog = None
         self.Destroy()
@@ -692,9 +692,10 @@
             event.Skip()
         
     def UpdateSettings(self):
-        """!Update digitizer settings
+        """Update digitizer settings
 
-        @todo Needs refactoring 
+        .. todo::
+            Needs refactoring 
         """
         # TODO: it seems that it needs to be replaced by signal
         # but if it makes sense generally for wxGUI it can be added to giface 

Modified: grass/trunk/gui/wxpython/vdigit/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/vdigit/toolbars.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/vdigit/toolbars.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package vdigit.toolbars
 
 @brief wxGUI vector digitizer toolbars
@@ -31,7 +31,7 @@
 from core.giface        import Notification
 
 class VDigitToolbar(BaseToolbar):
-    """!Toolbar for digitization
+    """Toolbar for digitization
     """
     def __init__(self, parent, toolSwitcher, MapWindow, digitClass, giface,
                  tools=[]):
@@ -113,7 +113,7 @@
         self.FixSize(width = 105)
 
     def _toolbarData(self):
-        """!Toolbar data
+        """Toolbar data
         """
         data = []
         
@@ -257,7 +257,7 @@
         return self._getToolbarData(data)
 
     def OnTool(self, event):
-        """!Tool selected -> untoggles previusly selected tool in
+        """Tool selected -> untoggles previusly selected tool in
         toolbar"""
         Debug.msg(3, "VDigitToolbar.OnTool(): id = %s" % event.GetId())
         # set cursor
@@ -287,7 +287,7 @@
         self.MapWindow.SetFocus()
         
     def OnAddPoint(self, event):
-        """!Add point to the vector map Laier"""
+        """Add point to the vector map Laier"""
         Debug.msg (2, "VDigitToolbar.OnAddPoint()")
         self.action = { 'desc' : "addLine",
                         'type' : "point",
@@ -295,7 +295,7 @@
         self.MapWindow.mouse['box'] = 'point'
         
     def OnAddLine(self, event):
-        """!Add line to the vector map layer"""
+        """Add line to the vector map layer"""
         Debug.msg (2, "VDigitToolbar.OnAddLine()")
         self.action = { 'desc' : "addLine",
                         'type' : "line",
@@ -304,7 +304,7 @@
         ### self.MapWindow.polycoords = [] # reset temp line
 
     def OnAddBoundary(self, event):
-        """!Add boundary to the vector map layer"""
+        """Add boundary to the vector map layer"""
         Debug.msg (2, "VDigitToolbar.OnAddBoundary()")
          # reset temp line
         if self.action['desc'] != 'addLine' or \
@@ -322,7 +322,7 @@
         self.MapWindow.mouse['box'] = 'line'
         
     def OnAddCentroid(self, event):
-        """!Add centroid to the vector map layer"""
+        """Add centroid to the vector map layer"""
         Debug.msg (2, "VDigitToolbar.OnAddCentroid()")
 
         # update icon and tooltip
@@ -336,7 +336,7 @@
         self.MapWindow.mouse['box'] = 'point'
 
     def OnAddArea(self, event):
-        """!Add area to the vector map layer"""
+        """Add area to the vector map layer"""
         Debug.msg (2, "VDigitToolbar.OnAddArea()")
         # update icon and tooltip
         self.SetToolNormalBitmap(self.addArea, self.icons['addArea'].GetBitmap())
@@ -349,7 +349,7 @@
         self.MapWindow.mouse['box'] = 'line'
 
     def OnAddAreaTool(self, event):
-        """!Area tool activated."""
+        """Area tool activated."""
         Debug.msg (2, "VDigitToolbar.OnAddAreaTool()")
         
         # we need the previous id
@@ -362,7 +362,7 @@
             self.OnAddCentroid(event)
 
     def OnAddAreaMenu(self, event):
-        """!Digitize area menu (add area/boundary/centroid)"""
+        """Digitize area menu (add area/boundary/centroid)"""
         menuItems = []
         if not self.tools or 'addArea' in self.tools:
             menuItems.append((self.icons["addArea"], self.OnAddArea))
@@ -374,7 +374,7 @@
         self._onMenu(menuItems)
 
     def OnExit (self, event = None):
-        """!Quit digitization tool"""
+        """Quit digitization tool"""
         # stop editing of the currently selected map layer
         if self.mapLayer:
             self.StopEditing()
@@ -395,91 +395,91 @@
             self.parent.Close()
                 
     def OnMoveVertex(self, event):
-        """!Move line vertex"""
+        """Move line vertex"""
         Debug.msg(2, "Digittoolbar.OnMoveVertex():")
         self.action = { 'desc' : "moveVertex",
                         'id'   : self.moveVertex }
         self.MapWindow.mouse['box'] = 'point'
 
     def OnAddVertex(self, event):
-        """!Add line vertex"""
+        """Add line vertex"""
         Debug.msg(2, "Digittoolbar.OnAddVertex():")
         self.action = { 'desc' : "addVertex",
                         'id'   : self.addVertex }
         self.MapWindow.mouse['box'] = 'point'
         
     def OnRemoveVertex(self, event):
-        """!Remove line vertex"""
+        """Remove line vertex"""
         Debug.msg(2, "Digittoolbar.OnRemoveVertex():")
         self.action = { 'desc' : "removeVertex",
                         'id'   : self.removeVertex }
         self.MapWindow.mouse['box'] = 'point'
 
     def OnEditLine(self, event):
-        """!Edit line"""
+        """Edit line"""
         Debug.msg(2, "Digittoolbar.OnEditLine():")
         self.action = { 'desc' : "editLine",
                         'id'   : self.editLine }
         self.MapWindow.mouse['box'] = 'line'
 
     def OnMoveLine(self, event):
-        """!Move line"""
+        """Move line"""
         Debug.msg(2, "Digittoolbar.OnMoveLine():")
         self.action = { 'desc' : "moveLine",
                         'id'   : self.moveLine }
         self.MapWindow.mouse['box'] = 'box'
 
     def OnDeleteLine(self, event):
-        """!Delete line"""
+        """Delete line"""
         Debug.msg(2, "Digittoolbar.OnDeleteLine():")
         self.action = { 'desc' : "deleteLine",
                         'id'   : self.deleteLine }
         self.MapWindow.mouse['box'] = 'box'
 
     def OnDeleteArea(self, event):
-        """!Delete Area"""
+        """Delete Area"""
         Debug.msg(2, "Digittoolbar.OnDeleteArea():")
         self.action = { 'desc' : "deleteArea",
                         'id'   : self.deleteArea }
         self.MapWindow.mouse['box'] = 'box'
 
     def OnDisplayCats(self, event):
-        """!Display/update categories"""
+        """Display/update categories"""
         Debug.msg(2, "Digittoolbar.OnDisplayCats():")
         self.action = { 'desc' : "displayCats",
                         'id'   : self.displayCats }
         self.MapWindow.mouse['box'] = 'point'
 
     def OnDisplayAttr(self, event):
-        """!Display/update attributes"""
+        """Display/update attributes"""
         Debug.msg(2, "Digittoolbar.OnDisplayAttr():")
         self.action = { 'desc' : "displayAttrs",
                         'id'   : self.displayAttr }
         self.MapWindow.mouse['box'] = 'point'
         
     def OnUndo(self, event):
-        """!Undo previous changes"""
+        """Undo previous changes"""
         self.digit.Undo()
         
         event.Skip()
 
     def OnRedo(self, event):
-        """!Undo previous changes"""
+        """Undo previous changes"""
         self.digit.Undo(level = 1)
         
         event.Skip()
         
     def EnableUndo(self, enable = True):
-        """!Enable 'Undo' in toolbar
+        """Enable 'Undo' in toolbar
         
-        @param enable False for disable
+        :param enable: False for disable
         """
         self._enableTool(self.undo, enable)
 
     def EnableRedo(self, enable = True):
-        """!Enable 'Redo' in toolbar
+        """Enable 'Redo' in toolbar
         
-        @param enable False for disable
+        :param enable: False for disable
         """
         self._enableTool(self.redo, enable)
         
@@ -495,11 +495,11 @@
                 self.EnableTool(tool, False)
 
     def GetAction(self, type = 'desc'):
-        """!Get current action info"""
+        """Get current action info"""
         return self.action.get(type, '')
 
     def OnSettings(self, event):
-        """!Show settings dialog"""
+        """Show settings dialog"""
         if self.digit is None:
             try:
                 self.digit = self.MapWindow.digit = self.digitClass(mapwindow = self.MapWindow)
@@ -511,11 +511,11 @@
             self.settingsDialog.Show()
 
     def OnHelp(self, event):
-        """!Show digitizer help page in web browser"""
+        """Show digitizer help page in web browser"""
         self._giface.Help('wxGUI.vdigit')
         
     def OnAdditionalToolMenu(self, event):
-        """!Menu for additional tools"""
+        """Menu for additional tools"""
         point = wx.GetMousePosition()
         toolMenu = wx.Menu()
         
@@ -562,7 +562,7 @@
             self.ToggleTool(self.additionalTools, False)
         
     def OnCopy(self, event):
-        """!Copy selected features from (background) vector map"""
+        """Copy selected features from (background) vector map"""
         if not self.digit:
             GError(_("No vector map open for editing."), self.parent)
             return
@@ -602,7 +602,7 @@
         self.MapWindow.mouse['box'] = 'box'
 
     def OnSplitLine(self, event):
-        """!Split line"""
+        """Split line"""
         if self.action['desc'] == 'splitLine': # select previous action
             self.ToggleTool(self.addPoint, True)
             self.ToggleTool(self.additionalTools, False)
@@ -616,7 +616,7 @@
 
 
     def OnCopyCats(self, event):
-        """!Copy categories"""
+        """Copy categories"""
         if self.action['desc'] == 'copyCats': # select previous action
             self.ToggleTool(self.addPoint, True)
             self.ToggleTool(self.copyCats, False)
@@ -629,7 +629,7 @@
         self.MapWindow.mouse['box'] = 'point'
 
     def OnCopyAttrb(self, event):
-        """!Copy attributes"""
+        """Copy attributes"""
         if self.action['desc'] == 'copyAttrs': # select previous action
             self.ToggleTool(self.addPoint, True)
             self.ToggleTool(self.copyCats, False)
@@ -643,7 +643,7 @@
         
 
     def OnFlip(self, event):
-        """!Flip selected lines/boundaries"""
+        """Flip selected lines/boundaries"""
         if self.action['desc'] == 'flipLine': # select previous action
             self.ToggleTool(self.addPoint, True)
             self.ToggleTool(self.additionalTools, False)
@@ -656,7 +656,7 @@
         self.MapWindow.mouse['box'] = 'box'
 
     def OnMerge(self, event):
-        """!Merge selected lines/boundaries"""
+        """Merge selected lines/boundaries"""
         if self.action['desc'] == 'mergeLine': # select previous action
             self.ToggleTool(self.addPoint, True)
             self.ToggleTool(self.additionalTools, False)
@@ -669,7 +669,7 @@
         self.MapWindow.mouse['box'] = 'box'
 
     def OnBreak(self, event):
-        """!Break selected lines/boundaries"""
+        """Break selected lines/boundaries"""
         if self.action['desc'] == 'breakLine': # select previous action
             self.ToggleTool(self.addPoint, True)
             self.ToggleTool(self.additionalTools, False)
@@ -682,7 +682,7 @@
         self.MapWindow.mouse['box'] = 'box'
 
     def OnSnap(self, event):
-        """!Snap selected features"""
+        """Snap selected features"""
         if self.action['desc'] == 'snapLine': # select previous action
             self.ToggleTool(self.addPoint, True)
             self.ToggleTool(self.additionalTools, False)
@@ -695,7 +695,7 @@
         self.MapWindow.mouse['box'] = 'box'
 
     def OnConnect(self, event):
-        """!Connect selected lines/boundaries"""
+        """Connect selected lines/boundaries"""
         if self.action['desc'] == 'connectLine': # select previous action
             self.ToggleTool(self.addPoint, True)
             self.ToggleTool(self.additionalTools, False)
@@ -708,7 +708,7 @@
         self.MapWindow.mouse['box'] = 'box'
 
     def OnQuery(self, event):
-        """!Query selected lines/boundaries"""
+        """Query selected lines/boundaries"""
         if self.action['desc'] == 'queryLine': # select previous action
             self.ToggleTool(self.addPoint, True)
             self.ToggleTool(self.additionalTools, False)
@@ -722,7 +722,7 @@
         self.MapWindow.mouse['box'] = 'box'
 
     def OnZBulk(self, event):
-        """!Z bulk-labeling selected lines/boundaries"""
+        """Z bulk-labeling selected lines/boundaries"""
         if not self.digit.IsVector3D():
             GError(parent = self.parent,
                    message = _("Vector map is not 3D. Operation canceled."))
@@ -740,7 +740,7 @@
         self.MapWindow.mouse['box'] = 'line'
 
     def OnTypeConversion(self, event):
-        """!Feature type conversion
+        """Feature type conversion
 
         Supported conversions:
          - point <-> centroid
@@ -758,7 +758,7 @@
         self.MapWindow.mouse['box'] = 'box'
 
     def OnSelectMap (self, event):
-        """!Select vector map layer for editing
+        """Select vector map layer for editing
 
         If there is a vector map layer already edited, this action is
         firstly terminated. The map layer is closed. After this the
@@ -819,9 +819,9 @@
         event.Skip()
         
     def StartEditing(self, mapLayer):
-        """!Start editing selected vector map layer.
+        """Start editing selected vector map layer.
 
-        @param mapLayer MapLayer to be edited
+        :param mapLayer: MapLayer to be edited
         """
         # check if topology is available (skip for hidden - temporary
         # maps, see iclass for details)
@@ -928,10 +928,10 @@
         return True
 
     def StopEditing(self):
-        """!Stop editing of selected vector map layer.
+        """Stop editing of selected vector map layer.
 
-        @return True on success
-        @return False on failure
+        :return: True on success
+        :return: False on failure
         """
         item = None
         
@@ -999,10 +999,11 @@
         return True
     
     def UpdateListOfLayers (self, updateTool = False):
-        """!Update list of available vector map layers.
+        """Update list of available vector map layers.
         This list consists only editable layers (in the current mapset)
 
-        @param updateTool True to update also toolbar
+        :param updateTool: True to update also toolbar
+        :type updateTool: bool
         """
         Debug.msg (4, "VDigitToolbar.UpdateListOfLayers(): updateTool=%d" % \
                    updateTool)
@@ -1042,6 +1043,6 @@
         return layerNameList
 
     def GetLayer(self):
-        """!Get selected layer for editing -- MapLayer instance"""
+        """Get selected layer for editing -- MapLayer instance"""
         return self.mapLayer
 

Modified: grass/trunk/gui/wxpython/vdigit/wxdigit.py
===================================================================
--- grass/trunk/gui/wxpython/vdigit/wxdigit.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/vdigit/wxdigit.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package vdigit.wxdigit
 
 @brief wxGUI vector digitizer (base class)
@@ -10,12 +10,13 @@
  - wxdigit::VDigitError
  - wxdigit::IVDigit
 
- at todo Read large amounts of data from Vlib into arrays, which could
-then be processed using NumPy and rendered using glDrawArrays or
-glDrawElements, so no per-line/per-vertex processing in Python. Bulk
-data processing with NumPy is much faster than iterating in Python
-(and NumPy would be an excellent candidate for acceleration via
-e.g. OpenCL or CUDA; I'm surprised it hasn't happened already).
+.. todo::
+    Read large amounts of data from Vlib into arrays, which could
+    then be processed using NumPy and rendered using glDrawArrays or
+    glDrawElements, so no per-line/per-vertex processing in Python. Bulk
+    data processing with NumPy is much faster than iterating in Python
+    (and NumPy would be an excellent candidate for acceleration via
+    e.g. OpenCL or CUDA; I'm surprised it hasn't happened already).
 
 (C) 2007-2011, 2013 by the GRASS Development Team
 
@@ -45,15 +46,15 @@
 
 class VDigitError:
     def __init__(self, parent):
-        """!Class for managing error messages of vector digitizer
+        """Class for managing error messages of vector digitizer
 
-        @param parent parent window for dialogs
+        :param parent: parent window for dialogs
         """
         self.parent  = parent
         self.caption = _('Digitization Error')
     
     def NoMap(self, name = None):
-        """!No map for editing"""
+        """No map for editing"""
         if name:
             message = _('Unable to open vector map <%s>.') % name
         else:
@@ -63,7 +64,7 @@
                caption = self.caption)
 
     def WriteLine(self):
-        """!Writing line failed
+        """Writing line failed
         """
         GError(message = _('Writing new feature failed. '
                            'Operation canceled.\n\n'
@@ -72,7 +73,7 @@
                caption = self.caption)
 
     def ReadLine(self, line):
-        """!Reading line failed
+        """Reading line failed
         """
         GError(message = _('Reading feature id %d failed. '
                            'Operation canceled.') % line,
@@ -80,7 +81,7 @@
                caption = self.caption)
 
     def DbLink(self, dblink):
-        """!No dblink available
+        """No dblink available
         """
         GError(message = _('Database link %d not available. '
                            'Operation canceled.') % dblink,
@@ -88,7 +89,7 @@
                caption = self.caption)
 
     def Driver(self, driver):
-        """!Staring driver failed
+        """Staring driver failed
         """
         GError(message = _('Unable to start database driver <%s>. '
                            'Operation canceled.') % driver,
@@ -96,7 +97,7 @@
                caption = self.caption)
 
     def Database(self, driver, database):
-        """!Opening database failed
+        """Opening database failed
         """
         GError(message = _('Unable to open database <%(db)s> by driver <%(driver)s>. '
                            'Operation canceled.') % { 'db' : database, 'driver' : driver},
@@ -104,7 +105,7 @@
                caption = self.caption)
 
     def DbExecute(self, sql):
-        """!Sql query failed
+        """Sql query failed
         """
         GError(message = _("Unable to execute SQL query '%s'. "
                            "Operation canceled.") % sql,
@@ -112,7 +113,7 @@
                caption = self.caption)
 
     def DeadLine(self, line):
-        """!Dead line
+        """Dead line
         """
         GError(message = _("Feature id %d is marked as dead. "
                            "Operation canceled.") % line,
@@ -120,7 +121,7 @@
                caption = self.caption)
 
     def FeatureType(self, ftype):
-        """!Unknown feature type
+        """Unknown feature type
         """
         GError(message = _("Unsupported feature type %d. "
                            "Operation canceled.") % ftype,
@@ -129,9 +130,9 @@
         
 class IVDigit:
     def __init__(self, mapwindow, driver = DisplayDriver):
-        """!Base class for vector digitizer (ctypes interface)
+        """Base class for vector digitizer (ctypes interface)
         
-        @param mapwindow reference to a map window
+        :param mapwindow: reference to a map window
         """
         self.poMapInfo   = None      # pointer to Map_info
         self.mapWindow = mapwindow
@@ -225,12 +226,12 @@
             del self.bgMapInfo
      
     def EmitSignals(self, emit):
-        """!Activate/deactivate signals which describes features changes during digitization.
+        """Activate/deactivate signals which describes features changes during digitization.
         """
         self.emit_signals = emit
 
     def CloseBackgroundMap(self):
-        """!Close background vector map"""
+        """Close background vector map"""
         if not self.poBgMapInfo:
             return
         
@@ -238,14 +239,16 @@
         self.poBgMapInfo = self.popoBgMapInfo = None
         
     def OpenBackgroundMap(self, bgmap):
-        """!Open background vector map
+        """Open background vector map
 
-        @todo support more background maps then only one
+        .. todo::
+            support more background maps then only one
         
-        @param bgmap name of vector map to be opened
+        :param bgmap: name of vector map to be opened
+        :type bgmap: str
 
-        @return pointer to map_info
-        @return None on error
+        :return: pointer to map_info
+        :return: None on error
         """
         name   = create_string_buffer(GNAME_MAX)
         mapset = create_string_buffer(GMAPSET_MAX)
@@ -270,13 +273,13 @@
             return
         
     def _getSnapMode(self):
-        """!Get snapping mode
+        """Get snapping mode
 
          - snap to vertex
          - snap to nodes
          - no snapping
         
-        @return snap mode
+        :return: snap mode
         """
         threshold = self._display.GetThreshold()
         if threshold > 0.0:
@@ -288,7 +291,7 @@
             return NO_SNAP
     
     def _getNewFeaturesLayer(self):
-        """!Returns layer of new feature (from settings)"""
+        """Returns layer of new feature (from settings)"""
         if UserSettings.Get(group = 'vdigit', key = "categoryMode", subkey = 'selection') == 2:
             layer = -1 # -> no category
         else:
@@ -297,7 +300,7 @@
         return layer
         
     def _getNewFeaturesCat(self):
-        """!Returns category of new feature (from settings)"""
+        """Returns category of new feature (from settings)"""
         if UserSettings.Get(group = 'vdigit', key = "categoryMode", subkey = 'selection') == 2:
             cat   = -1
         else:
@@ -306,12 +309,12 @@
         return cat
         
     def _breakLineAtIntersection(self, line, pointsLine):
-        """!Break given line at intersection
+        """Break given line at intersection
 
-        \param line line id
-        \param pointsLine line geometry
+        :param line: line id
+        :param pointsLine: line geometry
         
-        \return number of modified lines
+        :return: number of modified lines
         """
         if not self._checkMap():
             return -1
@@ -380,14 +383,15 @@
         Vect_reset_updated(self.poMapInfo)
                 
     def _applyChangeset(self, changeset, undo):
-        """!Apply changeset (undo/redo changeset)
+        """Apply changeset (undo/redo changeset)
         
-        @param changeset changeset id
-        @param undo True for undo otherwise redo
+        :param changeset: changeset id
+        :param undo: True for undo otherwise redo
+        :type undo: bool
 
-        @return 1 changeset applied
-        @return 0 changeset not applied
-        @return -1 on error
+        :return: 1 changeset applied
+        :return: 0 changeset not applied
+        :return: -1 on error
         """
         if changeset < 0 or changeset >= len(self.changesets):
             return -1
@@ -427,12 +431,12 @@
         return ret
     
     def AddFeature(self, ftype, points):
-        """!Add new feature
+        """Add new feature
         
-        @param ftype feature type (point, line, centroid, boundary)
-        @param points tuple of points ((x, y), (x, y), ...)
+        :param ftype: feature type (point, line, centroid, boundary)
+        :param points: tuple of points ((x, y), (x, y), ...)
         
-        @return tuple (number of added features, feature ids)
+        :return: tuple (number of added features, feature ids)
         """
         layer = self._getNewFeaturesLayer()
         cat = self._getNewFeaturesCat()
@@ -468,9 +472,9 @@
         return ret
 
     def DeleteSelectedLines(self):
-        """!Delete selected features
+        """Delete selected features
 
-        @return number of deleted features
+        :return: number of deleted features
         """
         if not self._checkMap():
             return -1
@@ -519,9 +523,9 @@
         return nlines
             
     def _deleteRecords(self, cats):
-        """!Delete records from attribute table
+        """Delete records from attribute table
         
-        @param cats directory field/list of cats
+        :param cats: directory field/list of cats
         """
         handle   = dbHandle()
         poHandle = pointer(handle)
@@ -567,9 +571,9 @@
             db_close_database_shutdown_driver(poDriver)
         
     def DeleteSelectedAreas(self):
-        """!Delete selected areas (centroid+boundaries)
+        """Delete selected areas (centroid+boundaries)
 
-        @return number of deleted 
+        :return: number of deleted 
         """
         if len(self._display.selected['ids']) < 1:
             return 0
@@ -605,11 +609,11 @@
         return nareas
    
     def _getLineAreaBboxCats(self, ln_id):
-        """!Helper function
+        """Helper function
 
-        @param id of feature
-        @return None if the feature does not exists
-        @return list of @see _getaAreaBboxCats
+        :param ln_id: id of feature
+        :return: None if the feature does not exists
+        :return: list of :func:`_getaAreaBboxCats`
         """
         ltype = Vect_read_line(self.poMapInfo, None, None, ln_id)
 
@@ -621,11 +625,11 @@
 
 
     def _getCentroidAreaBboxCats(self, centroid):
-        """!Helper function
+        """Helper function
 
-        @param id of an centroid 
-        @return None if area does not exists
-        @return see return of _getaAreaBboxCats
+        :param centroid: id of an centroid 
+        :return: None if area does not exists
+        :return: see return of :func:`_getaAreaBboxCats`
         """
         if not Vect_line_alive(self.poMapInfo, centroid):
             return None
@@ -637,11 +641,12 @@
             return None
 
     def _getaAreaBboxCats(self, area):
-        """!Helper function
+        """Helper function
 
-        @param area area id
-        @return list of categories @see _getLineAreasCategories and 
-        list of bboxes @see _getBbox of area boundary features
+        :param area: area id
+        :return: list of categories :func:`_getLineAreasCategories` and 
+                 list of bboxes :func:`_getBbox` of area boundary
+                 features
         """
         po_b_list = Vect_new_list()
         Vect_get_area_boundaries(self.poMapInfo, area, po_b_list);
@@ -663,14 +668,14 @@
         return geoms, areas_cats
 
     def _getLineAreasCategories(self, ln_id):
-        """!Helper function
+        """Helper function
 
-        @param line_id id of boundary feature 
-        @return categories of areas on the left, right side of the feature
-        @return format: [[{layer : [cat]}, None]] means:
+        :param line_id: id of boundary feature 
+        :return: categories of areas on the left, right side of the feature
+        :return: format: [[{layer : [cat]}, None]] means:
                 area to the left (list of layers which has cats list as values), 
                 area to the right (no area there in this case (None)) 
-        @return [] the feature is not boundary or does not exists
+        :return: [] the feature is not boundary or does not exists
         """
         if not Vect_line_alive (self.poMapInfo, ln_id):
             return []
@@ -699,11 +704,11 @@
         return cats
 
     def _getCategories(self, ln_id):
-        """!Helper function
+        """Helper function
 
-        @param line_id id of feature
-        @return list of the feature categories [{layer : cats}, next layer...]
-        @return None feature does not exist
+        :param line_id: id of feature
+        :return: list of the feature categories [{layer : cats}, next layer...]
+        :return: None feature does not exist
         """
         if not Vect_line_alive (self.poMapInfo, ln_id):
             return none
@@ -726,11 +731,11 @@
         return cats
 
     def _getBbox(self, ln_id):
-        """!Helper function
+        """Helper function
 
-        @param line_id id of line feature
-        @return bbox bounding box of the feature
-        @return None feature does not exist
+        :param line_id: id of line feature
+        :return: bbox bounding box of the feature
+        :return: None feature does not exist
         """
         if not Vect_line_alive (self.poMapInfo, ln_id):
             return None
@@ -746,10 +751,10 @@
         return bbox
 
     def _createBbox(self, points):
-        """!Helper function
+        """Helper function
 
-        @param points list of points [(x, y), ...] to be bbox created for
-        @return bbox bounding box of points {'maxx':, 'maxy':, 'minx':, 'miny'}
+        :param points: list of points [(x, y), ...] to be bbox created for
+        :return: bbox bounding box of points {'maxx':, 'maxy':, 'minx':, 'miny'}
         """
         bbox = {}
         for pt in points:
@@ -772,10 +777,10 @@
         return bbox
 
     def _convertGeom(self, poPoints):
-        """!Helper function
-            convert geom from ctypes line_pts to python list
+        """Helper function convert geom from ctypes line_pts to python
+        list
 
-        @return coords in python list [(x, y),...] 
+        :return: coords in python list [(x, y),...] 
         """
         Points = poPoints.contents
 
@@ -786,9 +791,9 @@
         return pts_geom
 
     def MoveSelectedLines(self, move):
-        """!Move selected features
+        """Move selected features
 
-        @param move direction (x, y)
+        :param move: direction (x, y)
         """
         if not self._checkMap():
             return -1
@@ -849,14 +854,14 @@
         return nlines
 
     def MoveSelectedVertex(self, point, move):
-        """!Move selected vertex of the line
+        """Move selected vertex of the line
 
-        @param point location point
-        @param move  x,y direction
+        :param point: location point
+        :param move:  x,y direction
         
-        @return id of new feature
-        @return 0 vertex not moved (not found, line is not selected)
-        @return -1 on error
+        :return: id of new feature
+        :return: 0 vertex not moved (not found, line is not selected)
+        :return: -1 on error
         """
         if not self._checkMap():
             return -1
@@ -913,13 +918,13 @@
         return moved
 
     def AddVertex(self, coords):
-        """!Add new vertex to the selected line/boundary on position 'coords'
+        """Add new vertex to the selected line/boundary on position 'coords'
 
-        @param coords coordinates to add vertex
+        :param coords: coordinates to add vertex
 
-        @return id of new feature
-        @return 0 nothing changed
-        @return -1 on failure
+        :return: id of new feature
+        :return: 0 nothing changed
+        :return: -1 on failure
         """
         added = self._ModifyLineVertex(coords, add = True)
         
@@ -929,13 +934,13 @@
         return added
 
     def RemoveVertex(self, coords):
-        """!Remove vertex from the selected line/boundary on position 'coords'
+        """Remove vertex from the selected line/boundary on position 'coords'
 
-        @param coords coordinates to remove vertex
+        :param coords: coordinates to remove vertex
 
-        @return id of new feature
-        @return 0 nothing changed
-        @return -1 on failure
+        :return: id of new feature
+        :return: 0 nothing changed
+        :return: -1 on failure
         """
         deleted = self._ModifyLineVertex(coords, add = False)
         
@@ -946,13 +951,13 @@
 
 
     def SplitLine(self, point):
-        """!Split/break selected line/boundary on given position
+        """Split/break selected line/boundary on given position
 
-        @param point point where to split line
+        :param point: point where to split line
         
-        @return 1 line modified
-        @return 0 nothing changed
-        @return -1 error
+        :return: 1 line modified
+        :return: 0 nothing changed
+        :return: -1 error
         """
         thresh = self._display.GetThreshold('selectThresh')
         if not self._checkMap():
@@ -973,13 +978,13 @@
         return ret
 
     def EditLine(self, line, coords):
-        """!Edit existing line/boundary
+        """Edit existing line/boundary
 
-        @param line feature id to be modified
-        @param coords list of coordinates of modified line
+        :param line: feature id to be modified
+        :param coords: list of coordinates of modified line
 
-        @return feature id of new line
-        @return -1 on error
+        :return: feature id of new line
+        :return: -1 on error
         """
         if not self._checkMap():
             return -1
@@ -1037,10 +1042,10 @@
         return newline
 
     def FlipLine(self):
-        """!Flip selected lines/boundaries
+        """Flip selected lines/boundaries
 
-        @return number of modified lines
-        @return -1 on error
+        :return: number of modified lines
+        :return: -1 on error
         """
         if not self._checkMap():
             return -1
@@ -1058,10 +1063,10 @@
         return ret
 
     def MergeLine(self):
-        """!Merge selected lines/boundaries
+        """Merge selected lines/boundaries
 
-        @return number of modified lines
-        @return -1 on error
+        :return: number of modified lines
+        :return: -1 on error
         """
         if not self._checkMap():
             return -1
@@ -1077,10 +1082,10 @@
         return ret
 
     def BreakLine(self):
-        """!Break selected lines/boundaries
+        """Break selected lines/boundaries
 
-        @return number of modified lines
-        @return -1 on error
+        :return: number of modified lines
+        :return: -1 on error
         """
         if not self._checkMap():
             return -1
@@ -1097,10 +1102,10 @@
         return ret
 
     def SnapLine(self):
-        """!Snap selected lines/boundaries
+        """Snap selected lines/boundaries
 
-        @return on success
-        @return -1 on error
+        :return: on success
+        :return: -1 on error
         """
         if not self._checkMap():
             return -1
@@ -1116,11 +1121,11 @@
             self.toolbar.EnableUndo()
         
     def ConnectLine(self):
-        """!Connect selected lines/boundaries
+        """Connect selected lines/boundaries
 
-        @return 1 lines connected
-        @return 0 lines not connected
-        @return -1 on error
+        :return: 1 lines connected
+        :return: 0 lines not connected
+        :return: -1 on error
         """
         if not self._checkMap():
             return -1
@@ -1137,12 +1142,12 @@
         return ret
         
     def CopyLine(self, ids = []):
-        """!Copy features from (background) vector map
+        """Copy features from (background) vector map
 
-        @param ids list of line ids to be copied
+        :param ids: list of line ids to be copied
 
-        @return number of copied features
-        @return -1 on error
+        :return: number of copied features
+        :return: -1 on error
         """
         if not self._checkMap():
             return -1
@@ -1165,13 +1170,13 @@
         return ret
 
     def CopyCats(self, fromId, toId, copyAttrb = False):
-        """!Copy given categories to objects with id listed in ids
+        """Copy given categories to objects with id listed in ids
 
-        @param cats ids of 'from' feature
-        @param ids  ids of 'to' feature(s)
+        :param cats: ids of 'from' feature
+        :param ids: ids of 'to' feature(s)
 
-        @return number of modified features
-        @return -1 on error
+        :return: number of modified features
+        :return: -1 on error
         """
         if len(fromId) < 1 or len(toId) < 1:
             return 0
@@ -1298,7 +1303,7 @@
         return nlines
 
     def _selectLinesByQueryThresh(self):
-        """!Generic method used for SelectLinesByQuery() -- to get
+        """Generic method used for SelectLinesByQuery() -- to get
         threshold value"""
         thresh = 0.0
         if UserSettings.Get(group = 'vdigit', key = 'query', subkey = 'selection') == 0:
@@ -1313,11 +1318,12 @@
         return thresh
 
     def SelectLinesByQuery(self, bbox):
-        """!Select features by query
+        """Select features by query
         
-        @todo layer / 3D
+        .. todo::
+            layer / 3D
         
-        @param bbox bounding box definition
+        :param bbox: bounding box definition
         """
         if not self._checkMap():
             return -1
@@ -1367,7 +1373,7 @@
         return ids
 
     def IsVector3D(self):
-        """!Check if open vector map is 3D
+        """Check if open vector map is 3D
         """
         if not self._checkMap():
             return False
@@ -1375,12 +1381,12 @@
         return Vect_is_3d(self.poMapInfo)
     
     def GetLineLength(self, line):
-        """!Get line length
+        """Get line length
 
-        @param line feature id
+        :param line: feature id
 
-        @return line length
-        @return -1 on error
+        :return: line length
+        :return: -1 on error
         """
         if not self._checkMap():
             return -1
@@ -1400,12 +1406,12 @@
         return length
 
     def GetAreaSize(self, centroid):
-        """!Get area size
+        """Get area size
 
-        @param centroid centroid id
+        :param centroid: centroid id
 
-        @return area size
-        @return -1 on error
+        :return: area size
+        :return: -1 on error
         """
         if not self._checkMap():
             return -1
@@ -1429,12 +1435,12 @@
         return size
         
     def GetAreaPerimeter(self, centroid):
-        """!Get area perimeter
+        """Get area perimeter
         
-        @param centroid centroid id
+        :param centroid: centroid id
         
-        @return area size
-        @return -1 on error
+        :return: area size
+        :return: -1 on error
         """
         if not self._checkMap():
             return -1
@@ -1459,15 +1465,15 @@
         return perimeter
     
     def SetLineCats(self, line, layer, cats, add = True):
-        """!Set categories for given line and layer
+        """Set categories for given line and layer
 
-        @param line feature id
-        @param layer layer number (-1 for first selected line)
-        @param cats list of categories
-        @param add if True to add, otherwise do delete categories
+        :param line: feature id
+        :param layer: layer number (-1 for first selected line)
+        :param cats: list of categories
+        :param add: if True to add, otherwise do delete categories
 
-        @return new feature id (feature need to be rewritten)
-        @return -1 on error
+        :return: new feature id (feature need to be rewritten)
+        :return: -1 on error
         """
         if not self._checkMap():
             return -1
@@ -1508,14 +1514,14 @@
         return newline
 
     def TypeConvForSelectedLines(self):
-        """!Feature type conversion for selected objects.
+        """Feature type conversion for selected objects.
 
         Supported conversions:
          - point <-> centroid
          - line <-> boundary
 
-        @return number of modified features
-        @return -1 on error
+        :return: number of modified features
+        :return: -1 on error
         """
         if not self._checkMap():
             return -1
@@ -1531,11 +1537,11 @@
         return ret
 
     def Undo(self, level = -1):
-        """!Undo action
+        """Undo action
 
-        @param level levels to undo (0 to revert all)
+        :param level: levels to undo (0 to revert all)
 
-        @return id of current changeset
+        :return: id of current changeset
         """
         changesetLast = len(self.changesets) - 1
         
@@ -1582,15 +1588,15 @@
             self.toolbar.EnableRedo(False)
         
     def ZBulkLines(self, pos1, pos2, start, step):
-        """!Z-bulk labeling
+        """Z-bulk labeling
 
-        @param pos1 reference line (start point)
-        @param pos1 reference line (end point)
-        @param start starting value
-        @param step step value
+        :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
+        :return: number of modified lines
+        :return: -1 on error
         """
         if not self._checkMap():
             return -1
@@ -1608,14 +1614,15 @@
         return ret
     
     def GetDisplay(self):
-        """!Get display driver instance"""
+        """Get display driver instance"""
         return self._display
     
     def OpenMap(self, name, update=True, tmp = False):
-        """!Open vector map for editing
+        """Open vector map for editing
         
-        @param map name of vector map to be set up
-        @param tmp True to open temporary vector map
+        :param map: name of vector map to be set up
+        :type map: str
+        :param tmp: True to open temporary vector map
         """
         Debug.msg (3, "AbstractDigit.SetMapName map=%s" % name)
 
@@ -1632,7 +1639,7 @@
         return self.poMapInfo
     
     def CloseMap(self):
-        """!Close currently open vector map
+        """Close currently open vector map
         """
         if not self._checkMap():
             return
@@ -1643,10 +1650,10 @@
         self._display.CloseMap()
 
     def InitCats(self):
-        """!Initialize categories information
+        """Initialize categories information
         
-        @return 0 on success
-        @return -1 on error
+        :return: 0 on success
+        :return: -1 on error
         """
         self.cats.clear()
         if not self._checkMap():
@@ -1687,7 +1694,7 @@
             Debug.msg(3, "wxDigit.InitCats(): layer=%d, cat=%d", field, self.cats[field])
         
     def _checkMap(self):
-        """!Check if map is open
+        """Check if map is open
         """
         if not self.poMapInfo:
             self._error.NoMap()
@@ -1696,17 +1703,17 @@
         return True
 
     def _addFeature(self, ftype, coords, layer, cat, snap, threshold):
-        """!Add new feature(s) to the vector map
+        """Add new feature(s) to the vector map
 
-        @param ftype feature type (GV_POINT, GV_LINE, GV_BOUNDARY, ...)
-        @coords tuple of coordinates ((x, y), (x, y), ...)
-        @param layer layer number (-1 for no cat)
-        @param cat category number
-        @param snap snap to node/vertex
-        @param threshold threshold for snapping
+        :param ftype: feature type (GV_POINT, GV_LINE, GV_BOUNDARY, ...)
+        :param coords: tuple of coordinates ((x, y), (x, y), ...)
+        :param layer: layer number (-1 for no cat)
+        :param cat: category number
+        :param snap: snap to node/vertex
+        :param threshold: threshold for snapping
         
-        @return tuple (number of added features, list of fids)
-        @return number of features -1 on error
+        :return: tuple (number of added features, list of fids)
+        :return: number of features -1 on error
         """
         fids = list()
         if not self._checkMap():
@@ -1829,16 +1836,17 @@
         return (len(fids), fids)
     
     def _ModifyLineVertex(self, coords, add = True):
-        """!Add or remove vertex
+        """Add or remove vertex
         
         Shape of line/boundary is not changed when adding new vertex.
         
-        @param coords coordinates of point
-        @param add True to add, False to remove
+        :param coords: coordinates of point
+        :param add: True to add, False to remove
+        :type add: bool
         
-        @return 1 on success
-        @return 0 nothing changed
-        @return -1 error
+        :return: 1 on success
+        :return: 0 nothing changed
+        :return: -1 error
         """
         if not self._checkMap():
             return -1
@@ -1901,11 +1909,11 @@
         return 1
     
     def GetLineCats(self, line):
-        """!Get list of layer/category(ies) for selected feature.
+        """Get list of layer/category(ies) for selected feature.
 
-        @param line feature id (-1 for first selected feature)
+        :param line: feature id (-1 for first selected feature)
 
-        @return list of layer/cats
+        :return: list of layer/cats
         """
         ret = dict()
         if not self._checkMap():
@@ -1935,16 +1943,16 @@
         return ret
 
     def GetLayers(self):
-        """!Get list of layers
+        """Get list of layers
         
         Requires self.InitCats() to be called.
 
-        @return list of layers
+        :return: list of layers
         """
         return self.cats.keys()
     
     def UpdateSettings(self):
-        """!Update digit (and display) settings
+        """Update digit (and display) settings
         """
         self._display.UpdateSettings()
         
@@ -1954,7 +1962,7 @@
                                                                 subkey = 'enabled'))
         
     def SetCategory(self):
-        """!Update self.cats based on settings"""
+        """Update self.cats based on settings"""
         sel = UserSettings.Get(group = 'vdigit', key = 'categoryMode', subkey = 'selection')
         cat = None
         if sel == 0: # next to usep
@@ -1969,10 +1977,10 @@
         return cat
     
     def _setCategoryNextToUse(self):
-        """!Find maximum category number for the given layer and
+        """Find maximum category number for the given layer and
         update the settings
 
-        @return category to be used
+        :return: category to be used
         """
         # get max category number for given layer and update the settings
         layer = UserSettings.Get(group = 'vdigit', key = 'layer', subkey = 'value')
@@ -1984,11 +1992,11 @@
         return cat
 
     def SelectLinesFromBackgroundMap(self, bbox):
-        """!Select features from background map
+        """Select features from background map
 
-        @param bbox bounding box definition
+        :param bbox: bounding box definition
         
-        @return list of selected feature ids
+        :return: list of selected feature ids
         """
         # try select features by box first
         if self._display.SelectLinesByBox(bbox, poMapInfo = self.poBgMapInfo) < 1:
@@ -1997,17 +2005,17 @@
         return self._display.selected['ids']
         
     def GetUndoLevel(self):
-        """!Get undo level (number of active changesets)
+        """Get undo level (number of active changesets)
         
         Note: Changesets starts wiht 0
         """
         return self.changesetCurrent
     
     def GetFeatureType(self):
-        """!Get feature type for OGR layers
+        """Get feature type for OGR layers
 
-        @return feature type as string (point, linestring, polygon)
-        @return None for native format
+        :return: feature type as string (point, linestring, polygon)
+        :return: None for native format
         """
         topoFormat = Vect_get_finfo_topology_info(self.poMapInfo, None, None, None)
         if topoFormat == GV_TOPO_PSEUDO:

Modified: grass/trunk/gui/wxpython/vdigit/wxdisplay.py
===================================================================
--- grass/trunk/gui/wxpython/vdigit/wxdisplay.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/vdigit/wxdisplay.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package vdigit.wxdisplay
 
 @brief wxGUI vector digitizer (display driver)
@@ -37,7 +37,7 @@
 last_error = ''
 
 def print_error(msg, type):
-    """!Redirect stderr"""
+    """Redirect stderr"""
     global log
     if log:
         log.write(msg + os.linesep)
@@ -49,7 +49,7 @@
     return 0
 
 def print_progress(value):
-    """!Redirect progress info"""
+    """Redirect progress info"""
     global progress
     if progress:
         progress.SetValue(value)
@@ -78,14 +78,14 @@
     
 class DisplayDriver:
     def __init__(self, device, deviceTmp, mapObj, window, glog, gprogress):
-        """!Display driver used by vector digitizer
+        """Display driver used by vector digitizer
         
-        @param device    wx.PseudoDC device where to draw vector objects
-        @param deviceTmp wx.PseudoDC device where to draw temporary vector objects
-        @param mapOng    Map Object (render.Map)
-        @param windiow   parent window for dialogs
-        @param glog      logging device (None to discard messages)
-        @param gprogress progress bar device (None to discard message)
+        :param device: wx.PseudoDC device where to draw vector objects
+        :param deviceTmp: wx.PseudoDC device where to draw temporary vector objects
+        :param mapOng: Map Object (render.Map)
+        :param windiow: parent window for dialogs
+        :param glog: logging device (None to discard messages)
+        :param gprogress: progress bar device (None to discard message)
         """
         global errfunc, perfunc, log, progress
         log = glog
@@ -166,7 +166,7 @@
         self.UpdateSettings()
         
     def __del__(self):
-        """!Close currently open vector map"""
+        """Close currently open vector map"""
         G_unset_error_routine()
         G_unset_percent_routine()
         
@@ -177,7 +177,7 @@
         Vect_destroy_cats_struct(self.poCats)
 
     def _resetTopology(self):
-        """!Reset topology dict
+        """Reset topology dict
         """
         self.topology = {
             'highlight'   : 0,
@@ -195,14 +195,17 @@
             }
         
     def _cell2Pixel(self, east, north, elev):
-        """!Conversion from geographic coordinates (east, north)
+        """Conversion from geographic coordinates (east, north)
         to screen (x, y)
   
-        @todo 3D stuff...
+        .. todo::
+            3D stuff...
 
-        @param east, north, elev geographical coordinates
+        :param east: east coordinate
+        :param north: north coordinate
+        :param elev: elevation
 
-        @return x, y screen coordinates (integer)
+        :return: x, y screen coordinates (integer)
         """
         map_res = max(self.region['ewres'], self.region['nsres'])
         w = self.region['center_easting']  - (self.mapObj.width  / 2) * map_res
@@ -211,16 +214,16 @@
         return int((east - w) / map_res), int((n - north) / map_res)
     
     def _drawCross(self, pdc, point, size = 5):
-        """!Draw cross symbol of given size to device content
+        """Draw cross symbol of given size to device content
    
         Used for points, nodes, vertices
 
-        @param[in,out] PseudoDC where to draw
-        @param point coordinates of center
-        @param size size of the cross symbol
+        :param pdc: PseudoDC where to draw
+        :param point: coordinates of center
+        :param size: size of the cross symbol
    
-        @return 0 on success
-        @return -1 on failure
+        :return: 0 on success
+        :return: -1 on failure
         """
         if not pdc or not point:
             return -1
@@ -231,14 +234,14 @@
         return 0
     
     def _drawObject(self, robj):
-        """!Draw given object to the device
+        """Draw given object to the device
         
         The object is defined as robject() from vedit.h.
         
-        @param robj object to be rendered
+        :param robj: object to be rendered
         
-        @return  1 on success
-        @return -1 on failure (vector feature marked as dead, etc.)
+        :return:  1 on success
+        :return: -1 on failure (vector feature marked as dead, etc.)
         """
         if not self.dc or not self.dcTmp:
             return -1
@@ -327,11 +330,11 @@
                     pdc.DrawLines(points)
         
     def _definePen(self, rtype):
-        """!Define pen/brush based on rendered object)
+        """Define pen/brush based on rendered object)
         
         Updates also self.topology dict
 
-        @return pen, brush
+        :return: pen, brush
         """
         if rtype == TYPE_POINT:
             key = 'point'
@@ -378,11 +381,11 @@
         return pen, brush
         
     def _getDrawFlag(self):
-        """!Get draw flag from the settings
+        """Get draw flag from the settings
         
         See vedit.h for list of draw flags.
         
-        @return draw flag (int)
+        :return: draw flag (int)
         """
         ret = 0
         if self.settings['point']['enabled']:
@@ -415,12 +418,12 @@
         return ret
         
     def _isSelected(self, line, force = False):
-        """!Check if vector object selected?
+        """Check if vector object selected?
    
-        @param line feature id
+        :param line: feature id
 
-        @return True if vector object is selected
-        @return False if vector object is not selected
+        :return: True if vector object is selected
+        :return: False if vector object is not selected
         """
         if line in self.selected['ids']:
             return True
@@ -428,19 +431,19 @@
         return False
 
     def _isDuplicated(self, line):
-        """!Check for already marked duplicates
+        """Check for already marked duplicates
         
-        @param line feature id
+        :param line: feature id
 
-        @return True line already marked as duplicated
-        @return False not duplicated
+        :return: True line already marked as duplicated
+        :return: False not duplicated
         """
         return line in self.selected['idsDupl']
     
     def _getRegionBox(self):
-        """!Get bound_box() from current region
+        """Get bound_box() from current region
 
-        @return bound_box
+        :return: bound_box
         """
         box = bound_box()
         
@@ -454,11 +457,12 @@
         return box
 
     def DrawMap(self, force = False):
-        """!Draw content of the vector map to the device
+        """Draw content of the vector map to the device
         
-        @param force force drawing
-        @return number of drawn features
-        @return -1 on error
+        :param force: force drawing
+        :type force: bool
+        :return: number of drawn features
+        :return: -1 on error
         """
         Debug.msg(1, "DisplayDriver.DrawMap(): force=%d", force)
         
@@ -489,7 +493,7 @@
         self.selected['cats'] = list()
         
     def _getSelectType(self):
-        """!Get type(s) to be selected
+        """Get type(s) to be selected
 
         Used by SelectLinesByBox() and SelectLineByPoint()
         """
@@ -505,12 +509,12 @@
         return ftype
 
     def _validLine(self, line):
-        """!Check if feature id is valid
+        """Check if feature id is valid
 
-        @param line feature id
+        :param line: feature id
 
-        @return True valid feature id
-        @return False invalid
+        :return: True valid feature id
+        :return: False invalid
         """
         if line > 0 and line <= Vect_get_num_lines(self.poMapInfo):
             return True
@@ -518,18 +522,18 @@
         return False
     
     def SelectLinesByBox(self, bbox, ltype = None, drawSeg = False, poMapInfo = None):
-        """!Select vector objects by given bounding box
+        """Select vector objects by given bounding box
         
         If line id is already in the list of selected lines, then it will
         be excluded from this list.
         
-        @param bbox bounding box definition
-        @param ltype feature type or None for default
-        @param drawSeg True to draw segments of line
-        @param poMapInfo use external Map_info, None for self.poMapInfo
+        :param bbox: bounding box definition
+        :param ltype: feature type or None for default
+        :param drawSeg: True to draw segments of line
+        :param poMapInfo: use external Map_info, None for self.poMapInfo
 
-        @return number of selected features
-        @return None on error
+        :return: number of selected features
+        :return: None on error
         """
         thisMapInfo = poMapInfo is None
         if not poMapInfo:
@@ -618,17 +622,17 @@
         return { 'area' : -1, 'centroid': -1 }
             
     def SelectLineByPoint(self, point, ltype = None, poMapInfo = None):
-        """!Select vector feature by given point in given
+        """Select vector feature by given point in given
         threshold
    
         Only one vector object can be selected. Bounding boxes of
         all segments are stores.
         
-        @param point points coordinates (x, y)
-        @param ltype feature type or None for default
-        @param poMapInfo use external Map_info, None for self.poMapInfo
+        :param point: points coordinates (x, y)
+        :param ltype: feature type or None for default
+        :param poMapInfo: use external Map_info, None for self.poMapInfo
 
-        @return dict {'line' : feature id, 'point' : point on line}
+        :return: dict {'line' : feature id, 'point' : point on line}
         """
         thisMapInfo = poMapInfo is None
         if not poMapInfo:
@@ -693,7 +697,7 @@
                  'point' : (px.value, py.value, pz.value) }
     
     def _listToIList(self, plist):
-        """!Generate from list struct_ilist
+        """Generate from list struct_ilist
         """
         ilist = Vect_new_list()
         for val in plist:
@@ -702,11 +706,11 @@
         return ilist
         
     def GetSelectedIList(self, ilist = None):
-        """!Get list of selected objects as struct_ilist
+        """Get list of selected objects as struct_ilist
 
         Returned IList must be freed by Vect_destroy_list().
         
-        @return struct_ilist
+        :return: struct_ilist
         """
         if ilist:
             return self._listToIList(ilist)
@@ -714,11 +718,11 @@
         return self._listToIList(self.selected['ids'])
         
     def GetSelected(self, grassId = True):
-        """!Get ids of selected objects
+        """Get ids of selected objects
         
-        @param grassId True for feature id, False for PseudoDC id
+        :param grassId: True for feature id, False for PseudoDC id
         
-        @return list of ids of selected vector objects
+        :return: list of ids of selected vector objects
         """
         if grassId:
             return self.selected['ids']
@@ -739,10 +743,10 @@
         return dc_ids
         
     def SetSelected(self, ids, layer = -1):
-        """!Set selected vector objects
+        """Set selected vector objects
 
-        @param list of ids (None to unselect features)
-        @param layer layer number for features selected based on category number
+        :param list: of ids (None to unselect features)
+        :param layer: layer number for features selected based on category number
         """
         if ids:
             self._drawSelected = True
@@ -778,15 +782,15 @@
             self.selected['cats']  = []
         
     def GetSelectedVertex(self, pos):
-        """!Get PseudoDC vertex id of selected line
+        """Get PseudoDC vertex id of selected line
 
         Set bounding box for vertices of line.
         
-        @param pos position
+        :param pos: position
         
-        @return id of center, left and right vertex
-        @return 0 no line found
-        @return -1 on error
+        :return: id of center, left and right vertex
+        :return: 0 no line found
+        :return: -1 on error
         """
         returnId = list()
         # only one object can be selected
@@ -844,9 +848,9 @@
         return returnId
 
     def GetRegionSelected(self):
-        """!Get minimal region extent of selected features
+        """Get minimal region extent of selected features
 
-        @return n,s,w,e
+        :return: n,s,w,e
         """
         regionBox = bound_box()
         lineBox = bound_box()
@@ -872,17 +876,18 @@
         return regionBox.N, regionBox.S, regionBox.W, regionBox.E
 
     def DrawSelected(self, flag):
-        """!Draw selected features
+        """Draw selected features
         
-        @param flag True to draw selected features
+        :param flag: True to draw selected features
+        :type flag: bool
         """
         self._drawSelected = bool(flag)
         
     def CloseMap(self):
-        """!Close vector map
+        """Close vector map
         
-        @return 0 on success
-        @return non-zero on error
+        :return: 0 on success
+        :return: non-zero on error
         """
         if not self.poMapInfo:
             return 0
@@ -900,15 +905,18 @@
         return ret
     
     def OpenMap(self, name, mapset, update = True, tmp = False):
-        """!Open vector map by the driver
+        """Open vector map by the driver
         
-        @param name name of vector map to be open
-        @param mapset name of mapset where the vector map lives
-        @param update True to open vector map in update mode
-        @param tmp True to open temporary vector map
-        
-        @return map_info
-        @return None on error
+        :param name: name of vector map to be open
+        :type name: str
+        :param mapset: name of mapset where the vector map lives
+        :tryp mapset: str
+        :param update: True to open vector map in update mode
+        :type update: bool
+        :param tmp: True to open temporary vector map
+        :type tp: bool
+        :return: map_info
+        :return: None on error
         """
         Debug.msg("DisplayDriver.OpenMap(): name=%s mapset=%s updated=%d",
                   name, mapset, update)
@@ -958,9 +966,9 @@
         return self.poMapInfo
 
     def GetMapBoundingBox(self):
-        """!Get bounding box of (opened) vector map layer
+        """Get bounding box of (opened) vector map layer
 
-        @return (w,s,b,e,n,t)
+        :return: (w,s,b,e,n,t)
         """
         if not self.poMapInfo:
             return None
@@ -972,11 +980,12 @@
             bbox.E, bbox.N, bbox.T
     
     def UpdateSettings(self, alpha = 255):
-        """!Update display driver settings
+        """Update display driver settings
 
-        @todo map units
+        .. todo::
+            map units
         
-        @param alpha color value for aplha channel
+        :param alpha: color value for aplha channel
         """
         color = dict()
         for key in self.settings.keys():
@@ -1007,18 +1016,18 @@
             self.settings[key]['color'] = color
         
     def UpdateRegion(self):
-        """!Update geographical region used by display driver
+        """Update geographical region used by display driver
         """
         self.region = self.mapObj.GetCurrentRegion()
         
     def GetThreshold(self, type = 'snapping', value = None, units = None):
-        """!Return threshold value in map units
+        """Return threshold value in map units
         
-        @param type snapping mode (node, vertex)
-        @param value threshold to be set up
-        @param units units (map, screen)
+        :param type: snapping mode (node, vertex)
+        :param value: threshold to be set up
+        :param units: units (map, screen)
 
-        @return threshold value
+        :return: threshold value
         """
         if value is None:
             value = UserSettings.Get(group = 'vdigit', key = type, subkey = 'value')
@@ -1037,7 +1046,7 @@
         return value
     
     def GetDuplicates(self):
-        """!Return ids of (selected) duplicated vector features
+        """Return ids of (selected) duplicated vector features
         """
         if not self.poMapInfo:
             return
@@ -1093,9 +1102,9 @@
         return catsStr
 
     def UnSelect(self, lines):
-        """!Unselect vector features
+        """Unselect vector features
 
-        @param lines list of feature id(s)
+        :param lines: list of feature id(s)
         """
         checkForDupl = False
 

Modified: grass/trunk/gui/wxpython/vnet/dialogs.py
===================================================================
--- grass/trunk/gui/wxpython/vnet/dialogs.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/vnet/dialogs.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package vnet.dialogs
 
 @brief Dialogs for vector network analysis front-end
@@ -66,7 +66,7 @@
     def __init__(self, parent, giface,
                  id = wx.ID_ANY, title = _("GRASS GIS Vector Network Analysis Tool"),
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, **kwargs):
-        """!Dialog for vector network analysis"""
+        """Dialog for vector network analysis"""
 
         wx.Dialog.__init__(self, parent, id, style=style, title = title, **kwargs)
         self.SetIcon(wx.Icon(os.path.join(globalvar.ICONDIR, 'grass.ico'), wx.BITMAP_TYPE_ICO))
@@ -159,7 +159,7 @@
 
 
     def _addPanes(self):
-        """!Adds toolbar pane and pane with tabs"""
+        """Adds toolbar pane and pane with tabs"""
         self._mgr.AddPane(self.toolbars['mainToolbar'],
                               wx.aui.AuiPaneInfo().
                               Name("pointlisttools").Caption(_("Point list toolbar")).
@@ -195,7 +195,7 @@
         self.Layout()
 
     def _createPointsPage(self):
-        """!Tab with points list and analysis settings"""
+        """Tab with points list and analysis settings"""
         pointsPanel = wx.Panel(parent = self)
         maxValue = 1e8
 
@@ -282,7 +282,7 @@
         self.vnet_mgr.SetParams({"iso_lines" : val}, {})
 
     def OnShowCut(self, event):
-        """!Shows vector map with minimal cut (v.net.flow) - not yet implemented"""
+        """Shows vector map with minimal cut (v.net.flow) - not yet implemented"""
         val = event.IsChecked()
         if val and self.tmp_result:
             self.tmp_result.DeleteRenderLayer()
@@ -296,7 +296,7 @@
         self.giface.updateMap.emit(render=True, renderVector=True)
 
     def _createOutputPage(self):
-        """!Tab with output console"""
+        """Tab with output console"""
         outputPanel = wx.Panel(parent = self)
         self.notebook.AddPage(page = outputPanel, 
                               text = _("Output"), 
@@ -313,7 +313,7 @@
         outputPanel.SetSizer(outputSizer)
 
     def _createParametersPage(self):
-        """!Tab for selection of data for analysis"""
+        """Tab for selection of data for analysis"""
         dataPanel = scrolled.ScrolledPanel(parent=self)
         self.notebook.AddPage(page = dataPanel,
                               text=_('Parameters'), 
@@ -444,7 +444,7 @@
         return selSizer
 
     def _createInputDbMgrPage(self):
-        """!Tab with attribute tables of analysis input layers"""
+        """Tab with attribute tables of analysis input layers"""
         self.inpDbMgrData['dbMgr'] = DbMgrBase()
 
         selMapName = None
@@ -463,7 +463,7 @@
             self.OnVectSel(None)
 
     def _updateInputDbMgrPage(self, show):
-        """!Show or hide input tables tab"""
+        """Show or hide input tables tab"""
         if show and self.notebook.GetPageIndexByName('inputDbMgr') == -1:
             self.notebook.AddPage(page = self.inpDbMgrData['browse'],
                                   text=_('Input tables'), 
@@ -472,7 +472,7 @@
             self.notebook.RemovePage(page = 'inputDbMgr')
 
     def _createResultDbMgrPage(self):
-        """!Tab with attribute tables of analysis result layers"""
+        """Tab with attribute tables of analysis result layers"""
         self.resultDbMgrData['dbMgr'] = DbMgrBase() 
         self.resultDbMgrData['browse'] = self.resultDbMgrData['dbMgr'].CreateDbMgrPage(parent = self.notebook,
                                                                                        pageName = 'browse')
@@ -484,7 +484,7 @@
             self.resultDbMgrData['input'] = None
 
     def _updateResultDbMgrPage(self):
-        """!Show or Hide Result tables tab"""
+        """Show or Hide Result tables tab"""
         # analysis, which created result
         analysis = self.resultDbMgrData['analysis']
         #TODO maybe no need to store this information, just check it has attribute table, if so show it
@@ -498,7 +498,7 @@
             self.notebook.RemovePage(page = 'resultDbMgr')
 
     def OnPageChanged(self, event):
-        """!Tab switched"""
+        """Tab switched"""
         if event.GetEventObject() == self.notebook:
             dbMgrIndxs = []
             dbMgrIndxs.append(self.notebook.GetPageIndexByName('inputDbMgr'))
@@ -515,7 +515,7 @@
                 self.OnNLayerSel(None)
 
     def _updateDbMgrData(self):
-            """!Updates input/result tables page """
+            """Updates input/result tables page """
             if self.notebook.GetSelection() == self.notebook.GetPageIndexByName('inputDbMgr'):
                 self._updateInputDbMgrData()
             elif self.notebook.GetSelection() == self.notebook.GetPageIndexByName('resultDbMgr'):
@@ -524,7 +524,7 @@
                 self.stBar.RemoveStatusItem('manager')   
 
     def _updateInputDbMgrData(self):
-        """!Loads data according to selected layers in Parameters tab"""
+        """Loads data according to selected layers in Parameters tab"""
         inpSel = self.inputData['input'].GetValue().strip()
         # changed vector map
         if self.inpDbMgrData['input'] != inpSel:
@@ -562,7 +562,7 @@
                     self.inpDbMgrData['browse'].DeletePage(layer)
 
     def _updateResultDbMgrData(self):
-        """!Loads data from analysis result map"""
+        """Loads data from analysis result map"""
         if not self.tmp_result:
             return
         vectName = self.tmp_result.GetVectMapName()
@@ -579,7 +579,7 @@
             wx.EndBusyCursor()
 
     def OnToTreeBtn(self, event):
-        """!Add vector map into layer tree"""
+        """Add vector map into layer tree"""
         vectorMap = self.inputData['input'].GetValue()
         vectMapName, mapSet = ParseMapStr(vectorMap)
         vectorMap = vectMapName + '@' + mapSet
@@ -654,7 +654,7 @@
         self.stBar.RemoveStatusItem('ttb')  
 
     def OnVectSel(self, event):
-        """!When vector map is selected it populates other comboboxes in Parameters tab (layer selects, columns selects)"""
+        """When vector map is selected it populates other comboboxes in Parameters tab (layer selects, columns selects)"""
         if self.vnet_mgr.IsSnappingActive(): #TODO should be in vnet_mgr
             self.vnet_mgr.Snapping(activate = True)
 
@@ -704,7 +704,7 @@
             self.inputData[k].SetValue(params[k])
 
     def OnALayerSel(self, event):
-        """!When arc layer from vector map is selected, populates corespondent columns selects"""
+        """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)
@@ -715,7 +715,7 @@
         self._setInputData()
 
     def OnNLayerSel(self, event):
-        """!When node layer from vector map is selected, populates corespondent column select"""
+        """When node layer from vector map is selected, populates corespondent column select"""
         if self.vnet_mgr.IsSnappingActive():
             self.vnet_mgr.Snapping(activate = True)
 
@@ -733,7 +733,7 @@
         self.vnet_mgr.SetParams(params, flags)
 
     def _parseMapStr(self, vectMapStr):
-        """!Create full map name (add current mapset if it is not present in name)"""
+        """Create full map name (add current mapset if it is not present in name)"""
         mapValSpl = vectMapStr.strip().split("@")
         if len(mapValSpl) > 1:
             mapSet = mapValSpl[1]
@@ -744,7 +744,7 @@
         return mapName, mapSet      
 
     def OnCloseDialog(self, event):
-        """!Cancel dialog"""
+        """Cancel dialog"""
         self.vnet_mgr.CleanUp()
         toolSwitcher = self.giface.GetMapDisplay().GetToolSwitcher()
         toolSwitcher.RemoveToolbarFromGroup('mouseUse', self.toolbars['pointsList'])
@@ -752,7 +752,7 @@
         self.Destroy()
 
     def OnDefIsecTurnCosts(self, event):
-        """!Registers/unregisters mouse handler into map window"""
+        """Registers/unregisters mouse handler into map window"""
         if self.defIsecTurnsHndlrReg == False:
             self.mapWin.RegisterMouseEventHandler(wx.EVT_LEFT_DOWN, 
                                                   self.OnDefIsecTurnCost,
@@ -770,7 +770,7 @@
         dialog.Show()
 
     def OnDefIsecTurnCost(self, event): #TODO move to vnet mgr?
-        """!Take coordinates from map window"""
+        """Take coordinates from map window"""
         if event == 'unregistered':
             ptListToolbar = self.toolbars['pointsList']
             if ptListToolbar:
@@ -808,7 +808,7 @@
         self.def_isec_turns.Show()
 
     def OnAnalyze(self, event):
-        """!Called when network analysis is started"""
+        """Called when network analysis is started"""
 
         self.stBar.AddStatusItem(text = _('Analysing...'),
                                  key = 'analyze',
@@ -844,7 +844,7 @@
         self.giface.updateMap.emit(render=True, renderVector=True)
 
     def OnShowResult(self, event):
-        """!Show/hide analysis result"""
+        """Show/hide analysis result"""
         mainToolbar = self.toolbars['mainToolbar']
         id = vars(mainToolbar)['showResult']
         toggleState = mainToolbar.GetToolState(id)
@@ -864,7 +864,7 @@
         dlg.Destroy()
 
     def OnSettings(self, event):
-        """!Displays vnet settings dialog"""
+        """Displays vnet settings dialog"""
         dlg = SettingsDialog(parent=self, id=wx.ID_ANY, 
                              title=_('Settings'), vnet_mgr = self.vnet_mgr)
         
@@ -872,7 +872,7 @@
         dlg.Destroy()
 
     def OnAnalysisChanged(self, event):
-        """!Updates dialog when analysis is changed"""
+        """Updates dialog when analysis is changed"""
         # set chosen analysis
         iAn = self.toolbars['analysisToolbar'].anChoice.GetSelection() 
         self.currAnModule = self.vnet_mgr.GetAnalyses()[iAn]
@@ -924,7 +924,7 @@
         self.Layout()
 
     def Snapping(self, evt):
-        """!Start/stop snapping mode"""
+        """Start/stop snapping mode"""
 
         if evt == "deactivated":
             self.stBar.RemoveStatusItem(key = 'snap')
@@ -941,18 +941,18 @@
             self.stBar.RemoveStatusItem(key = 'snap')
 
     def SnapPointsDone(self):
-        """!Update map window, when map with nodes to snap is created"""
+        """Update map window, when map with nodes to snap is created"""
         self.stBar.RemoveStatusItem(key = 'snap')
 
     def OnUndo(self, event):
-        """!Step back in history"""
+        """Step back in history"""
 
         curr_step, steps_num = self.vnet_mgr.Undo()
         self._updateDialog()
         self.toolbars['mainToolbar'].UpdateUndoRedo(curr_step, steps_num)
 
     def OnRedo(self, event):
-        """!Step forward in history"""
+        """Step forward in history"""
 
         curr_step, steps_num = self.vnet_mgr.Redo()
         self._updateDialog()
@@ -978,7 +978,7 @@
 
 class PtsList(PointsList):
     def __init__(self, parent, vnet_mgr, id=wx.ID_ANY):
-        """! List with points for analysis"""
+        """ List with points for analysis"""
         self.updateMap = True
         self.vnet_mgr = vnet_mgr
         self.pts_data = self.vnet_mgr.GetPointsManager()
@@ -1091,7 +1091,7 @@
 
 
     def OnItemSelected(self, event):
-        """!Item selected"""
+        """Item selected"""
         PointsList.OnItemSelected(self, event)
         self.selectedkey = self.GetItemData(self.selected)
 
@@ -1112,7 +1112,7 @@
 class SettingsDialog(wx.Dialog):
     def __init__(self, parent, id, title, vnet_mgr, pos=wx.DefaultPosition, size=wx.DefaultSize,
                  style=wx.DEFAULT_DIALOG_STYLE):
-        """!Settings dialog"""
+        """Settings dialog"""
         wx.Dialog.__init__(self, parent, id, title, pos, size, style)
 
         self.vnet_mgr = vnet_mgr
@@ -1279,7 +1279,7 @@
         sizer.Fit(self)
      
     def OnSave(self, event):
-        """!Button 'Save' pressed"""
+        """Button 'Save' pressed"""
         self.UpdateSettings()
 
         fileSettings = {}
@@ -1313,19 +1313,19 @@
         self.vnet_mgr.SettingsUpdated()
 
     def OnApply(self, event):
-        """!Button 'Apply' pressed"""
+        """Button 'Apply' pressed"""
         self.UpdateSettings()
         #self.Close()
 
     def OnClose(self, event):
-        """!Button 'Cancel' pressed"""
+        """Button 'Cancel' pressed"""
         self.Close()
 
 class CreateTtbDialog(wx.Dialog):
 
     def __init__(self, parent, init_data, id=wx.ID_ANY,
                  title = _("New vector map with turntable"), style=wx.DEFAULT_DIALOG_STYLE):
-        """!Create turntable dialog."""
+        """Create turntable dialog."""
         wx.Dialog.__init__(self, parent, id, title = _(title), style = style)
 
         label = {}
@@ -1427,7 +1427,7 @@
         return selSizer
 
     def InputSel(self):
-        """!When vector map is selected it populates other comboboxes in Parameters tab (layer selects, columns selects)"""
+        """When vector map is selected it populates other comboboxes in Parameters tab (layer selects, columns selects)"""
         vectMapName, mapSet = self._parseMapStr(self.inputData['input'].GetValue())
         vectorMap = vectMapName + '@' + mapSet
 
@@ -1464,7 +1464,7 @@
 class OutputVectorDialog(wx.Dialog):
     def __init__(self, parent,id=wx.ID_ANY,
                  title =_("Save analysis result"), style=wx.DEFAULT_DIALOG_STYLE):
-        """!Save analysis result"""
+        """Save analysis result"""
         wx.Dialog.__init__(self, parent, id, title = _(title), style = style)
 
         self.panel = wx.Panel(parent = self)
@@ -1514,7 +1514,7 @@
         sizer.Fit(self)
 
 class VnetStatusbar(wx.StatusBar):
-    """!Extends wx.StatusBar class with functionality to show multiple messages with the highest priority"""        
+    """Extends wx.StatusBar class with functionality to show multiple messages with the highest priority"""       
     def __init__(self, parent, style, id = wx.ID_ANY, **kwargs):
 
         wx.StatusBar.__init__(self, parent, id, style, **kwargs)
@@ -1523,13 +1523,13 @@
         self.statusItems = []
 
     def AddStatusItem(self, text, key, priority):
-        """!Add new item to show
+        """Add new item to show
 
-            @param text - string to show
-            @param key - item identifier, if already contains 
-                         item with same identifier, overwrites this item
-            @param priority - only items with highest priority are showed 
-        """        
+        :param text: string to show
+        :param key: item identifier, if already contains 
+                    item with same identifier, overwrites this item
+        :param priority: only items with highest priority are showed 
+        """       
         statusTextItem = {
                             'text' : text, 
                             'key' : key,
@@ -1555,9 +1555,9 @@
         wx.StatusBar.SetStatusText(self, currStatusText)
 
     def RemoveStatusItem(self, key):
-        """!Remove item 
+        """Remove item 
 
-            @param key - item identifier
+        :param key: item identifier
         """
         update = False
         for iItem, item in enumerate(self.statusItems):
@@ -1654,7 +1654,7 @@
      
 
     def OnAddButtonClick(self, event):
-        """!Add new direction over selected row"""
+        """Add new direction over selected row"""
         selected_indices = self.angle_list.GetSelectedIndices()
  
         if not selected_indices:
@@ -1675,7 +1675,7 @@
 
 
     def OnRemoveButtonClick(self, event):
-        """!Delete one or more selected directions"""
+        """Delete one or more selected directions"""
         selected_indices = self.angle_list.GetSelectedIndices()
   
         i_reduction = 0
@@ -1685,11 +1685,11 @@
             i_reduction += 1
 
     def OnCloseDialog(self, event):
-        """!Close dialog"""
+        """Close dialog"""
         self.Close()
 
     def OnCheckedUTurns(self, event):
-        """!Use U-turns in analyse"""
+        """Use U-turns in analyse"""
         self.data.SetUTurns(self.useUTurns.GetValue())
        
     def SetData(self, data):
@@ -1699,7 +1699,7 @@
 
 
 class TurnAnglesList(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.TextEditMixin):
-    """!Virtual editable table with global turns"""
+    """Virtual editable table with global turns"""
     def __init__(self, parent, data, id= wx.ID_ANY, style= wx.LC_REPORT | wx.LC_VIRTUAL, **kwargs):
         wx.ListCtrl.__init__(self, parent, id,style= style, **kwargs)
         listmix.ListCtrlAutoWidthMixin.__init__(self)
@@ -1711,7 +1711,7 @@
         
 
     def Populate(self):
-        """!Columns definition"""
+        """Columns definition"""
         self.InsertColumn(col= 0, heading= "Direction", format= wx.LIST_FORMAT_LEFT) # v Gassu dopln preklad 
         self.InsertColumn(col= 1, heading= "From Angle", format= wx.LIST_FORMAT_RIGHT)
         self.InsertColumn(col= 2, heading= "To Angle", format= wx.LIST_FORMAT_RIGHT)
@@ -1724,7 +1724,7 @@
         return str(val)
 
     def SetVirtualData(self, row, column, text):
-        """!Set data to table"""
+        """Set data to table"""
         if column in [1,2,3]:
             try:
                 text = float(text)
@@ -1764,7 +1764,7 @@
 
 
     def GetSelectedIndices(self, state =  wx.LIST_STATE_SELECTED):
-        """!Get numbers of selected rows"""
+        """Get numbers of selected rows"""
         indices = []
         lastFound = -1
         while True:
@@ -1774,4 +1774,4 @@
             else:
                 lastFound = index
                 indices.append(index)
-        return indices
\ No newline at end of file
+        return indices

Modified: grass/trunk/gui/wxpython/vnet/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/vnet/toolbars.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/vnet/toolbars.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package vnet.toolbars
 
 @brief Vector network analysis dialog - toolbars
@@ -25,9 +25,9 @@
 from core.utils import _
 
 class PointListToolbar(BaseToolbar):
-    """!Toolbar for managing list of points
+    """Toolbar for managing list of points
 
-    @param parent reference to VNETDialog
+    :param parent: reference to VNETDialog
     """
     def __init__(self, parent, toolSwitcher, dialog, vnet_mgr):
         BaseToolbar.__init__(self, parent, toolSwitcher)
@@ -91,7 +91,7 @@
 
 
 class MainToolbar(BaseToolbar):
-    """!Main toolbar
+    """Main toolbar
     """
     def __init__(self, parent, vnet_mgr):
         BaseToolbar.__init__(self, parent)
@@ -165,7 +165,7 @@
                        entry = 'wxGUI.vnet')
 
 class AnalysisToolbar(BaseToolbar):
-    """!Main toolbar
+    """Main toolbar
     """
     def __init__(self, parent, vnet_mgr):
         BaseToolbar.__init__(self, parent)

Modified: grass/trunk/gui/wxpython/vnet/vnet_core.py
===================================================================
--- grass/trunk/gui/wxpython/vnet/vnet_core.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/vnet/vnet_core.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package vnet.vnet_core
 
 @brief Vector network analysis logic.
@@ -75,7 +75,7 @@
         self.CleanUp()
 
     def CleanUp(self):
-        """!Removes temp layers, unregisters handlers and graphics"""
+        """Removes temp layers, unregisters handlers and graphics"""
 
         update = self.tmp_maps.DeleteAllTmpMaps()
 
@@ -204,7 +204,7 @@
         return self.vnet_data.GetParam(param)
 
     def _checkResultMapChanged(self, resultVectMap):
-        """!Check if map was modified outside"""
+        """Check if map was modified outside"""
         if resultVectMap.VectMapState() == 0:
             dlg = wx.MessageDialog(parent = self,
                                    message = _("Temporary map '%s' with result " + 
@@ -304,7 +304,7 @@
         self.ttbCreated.emit(returncode = returncode)
 
     def SaveTmpLayer(self, layer_name):
-        """!Permanently saves temporary map of analysis result"""
+        """Permanently saves temporary map of analysis result"""
         msg = _("Vector map with analysis result does not exist.")
 
         if not hasattr(self.results["vect_map"], "GetVectMapName"):
@@ -378,7 +378,7 @@
         self.goutput = goutput
 
     def RunAnalysis(self, output, params, flags):
-        """!Perform network analysis"""
+        """Perform network analysis"""
 
         analysis, valid = self.data.GetParam("analysis")
 
@@ -392,7 +392,7 @@
             self._runAn(analysis, output, params, flags, catPts)
 
     def _vnetPathRunAn(self, analysis, output, params, flags, catPts):
-        """!Called when analysis is run for v.net.path module"""
+        """Called when analysis is run for v.net.path module"""
         if self.pts_data.GetPointsCount() < 1:
             return False
         cats = self.data.GetAnalysisProperties()["cmdParams"]["cats"]
@@ -465,7 +465,7 @@
         self._vnetPathRunAnDone(cmd, returncode)
 
     def _vnetPathRunAnDone(self, cmd, returncode):
-        """!Called when v.net.path analysis is done"""
+        """Called when v.net.path analysis is done"""
         grass.try_remove(self.coordsTmpFile)
 
         self._onDone(cmd, returncode)
@@ -585,14 +585,14 @@
         grass.try_remove(sqlFile)
 
     def _runTurnsAnDone(self, cmd, returncode):
-        """!Called when analysis is done"""
+        """Called when analysis is done"""
         #self.tmp_maps.DeleteTmpMap(self.tmpTurnAn) #TODO remove earlier (OnDone lambda?)
  
         self._onDone(cmd, returncode)
 
 
     def _runAn(self, analysis, output, params, flags, catPts):
-        """!Called for all v.net.* analysis (except v.net.path)"""
+        """Called for all v.net.* analysis (except v.net.path)"""
 
         # Creates part of cmd fro analysis
         cmdParams = [analysis]
@@ -691,7 +691,7 @@
         self.goutput.RunCmd(command = cmdParams, onDone = self._runAnDone)
 
     def _runAnDone(self, cmd, returncode):
-        """!Called when analysis is done"""
+        """Called when analysis is done"""
         self.tmp_maps.DeleteTmpMap(self.tmpInPts) #TODO remove earlier (OnDone lambda?)
         self.tmp_maps.DeleteTmpMap(self.tmpInPtsConnected)
         grass.try_remove(self.tmpPtsAsciiFile)
@@ -702,7 +702,7 @@
         self._onDone(cmd, returncode)
 
     def _setInputParams(self, analysis, params, flags):
-        """!Return list of chosen values (vector map, layers). 
+        """Return list of chosen values (vector map, layers). 
 
         The list items are in form to be used in command for analysis e.g. 'alayer=1'.    
         """
@@ -730,7 +730,7 @@
         return inParams
 
     def _getPtByCat(self, analysis):
-        """!Return points separated by theirs categories"""
+        """Return points separated by theirs categories"""
         anProps = self.data.GetAnalysisProperties()
         cats = anProps["cmdParams"]["cats"]
 
@@ -750,7 +750,7 @@
         return ptByCats
 
     def _getAsciiPts (self, catPts, maxCat, layerNum):
-        """!Return points separated by categories in GRASS ASCII vector representation"""
+        """Return points separated by categories in GRASS ASCII vector representation"""
         catsNums = {}
         pt_ascii = ""
         catNum = maxCat
@@ -769,7 +769,7 @@
         return pt_ascii, catsNums
 
     def _prepareCmd(self, cmd):
-        """!Helper function for preparation of cmd list into form for RunCmd method"""
+        """Helper function for preparation of cmd list into form for RunCmd method"""
         for c in cmd[:]:
             if c.find("=") == -1:
                 continue
@@ -807,7 +807,7 @@
         self.data = data
     
     def Undo(self):
-        """!Step back in history"""
+        """Step back in history"""
         histStepData = self.history.GetPrev()
 
         if histStepData:
@@ -816,7 +816,7 @@
         return None
 
     def Redo(self):
-        """!Step forward in history"""
+        """Step forward in history"""
         histStepData = self.history.GetNext()
 
         if histStepData:
@@ -828,7 +828,7 @@
         return self.history.GetCurrHistStep(), self.history.GetStepsNum()
 
     def SaveHistStep(self):
-        """!Save new step into history"""
+        """Save new step into history"""
         removedHistData = self.history.SaveHistStep()
 
         if not removedHistData:
@@ -848,7 +848,7 @@
         self.tmpVectMapsToHist= []
 
     def _updateHistStepData(self, histStepData):
-        """!Updates dialog according to chosen history step"""
+        """Updates dialog according to chosen history step"""
         # set analysis module
         analysis = histStepData["vnet_modules"]["curr_module"]
         self.data.SetParams({"analysis" : analysis}, {})
@@ -906,7 +906,7 @@
         return analysis, resultMapName, params, flags 
 
     def _saveAnInputToHist(self, analysis, params, flags):
-        """!Save all data needed for analysis into history buffer"""
+        """Save all data needed for analysis into history buffer"""
         pts_num = self.data.GetPointsData().GetPointsCount()
 
         for pt_id in range(pts_num):
@@ -953,7 +953,7 @@
 
 
     def NewTmpVectMapToHist(self, prefMapName):
-        """!Add new vector map, which will be saved into history step"""
+        """Add new vector map, which will be saved into history step"""
 
         mapName = prefMapName + str(self.histTmpVectMapNum)
         self.histTmpVectMapNum += 1
@@ -970,7 +970,7 @@
         return tmpMap
 
 def AddTmpMapAnalysisMsg(mapName, tmp_maps): #TODO 
-        """!Wraped AddTmpVectMap"""
+        """Wraped AddTmpVectMap"""
         msg = _("Temporary map %s  already exists.\n"  + 
                 "Do you want to continue in analysis and overwrite it?") \
                  % (mapName +'@' + grass.gisenv()['MAPSET'])
@@ -993,7 +993,7 @@
         self.snapData = {}
 
     def ComputeNodes(self, activate):
-        """!Start/stop snapping mode"""
+        """Start/stop snapping mode"""
 
         if not haveCtypes:
             GMessage(parent = self,
@@ -1096,7 +1096,7 @@
             return 1
 
     def _onNodesDone(self, event):
-        """!Update map window, when map with nodes to snap is created"""
+        """Update map window, when map with nodes to snap is created"""
         if not event.aborted:
             self.snapPts.SaveVectMapState()
             self.snapPts.AddRenderLayer() 

Modified: grass/trunk/gui/wxpython/vnet/vnet_data.py
===================================================================
--- grass/trunk/gui/wxpython/vnet/vnet_data.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/vnet/vnet_data.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package vnet.vnet_data
 
 @brief Vector network analysis classes for data managment.
@@ -103,7 +103,7 @@
         return self.an_points.GetSnapping()
     
     def GetLayerStyle(self):
-        """!Returns cmd for d.vect, with set style for analysis result"""
+        """Returns cmd for d.vect, with set style for analysis result"""
         analysis, valid = self.an_params.GetParam("analysis")
 
         resProps = self.an_props[analysis]["resultProps"]
@@ -133,11 +133,11 @@
         return layerStyleCmd, layerStyleVnetColors
 
     def InputsErrorMsgs(self, msg, analysis, params, flags, inv_params, relevant_params):
-        """!Checks input data in Parameters tab and shows messages if some value is not valid
+        """Checks input data in Parameters tab and shows messages if some value is not valid
 
-            @param msg (str) - message added to start of message string 
-            @return True - if checked inputs are OK
-            @return False - if some of checked inputs is not ok
+            :param str msg: message added to start of message string 
+            :return: True if checked inputs are OK
+            :return: False if some of checked inputs is not ok
         """
 
         if flags["t"] and  "tlayer" not in relevant_params:
@@ -191,7 +191,7 @@
         return True
 
     def _initSettings(self):
-        """!Initialization of settings (if not already defined)"""
+        """Initialization of settings (if not already defined)"""
         # initializes default settings
         initSettings = [
                         ['res_style', 'line_width', 5],
@@ -321,7 +321,7 @@
         return len(self.data)
 
     def SetPointStatus(self, item, itemIndex):
-        """!Before point is drawn, decides properties of drawing style"""
+        """Before point is drawn, decides properties of drawing style"""
         analysis, valid = self.an_params.GetParam("analysis")
         cats = self.an_data[analysis]["cmdParams"]["cats"]
 
@@ -350,7 +350,7 @@
         return self.selected
 
     def SetPointDrawSettings(self):
-        """!Set settings for drawing of points"""
+        """Set settings for drawing of points"""
         ptSize = int(UserSettings.Get(group='vnet', key='point_symbol', subkey = 'point_size'))
         self.pointsToDraw.SetPropertyVal("size", ptSize)
 
@@ -402,7 +402,7 @@
         return pt_data
 
     def _usePoint(self, pt_id, use):
-        """!Item is checked/unchecked"""
+        """Item is checked/unchecked"""
         analysis, valid = self.an_params.GetParam("analysis")
         cats = self.an_data[analysis]["cmdParams"]["cats"]
         ##TODO move
@@ -443,7 +443,7 @@
 
 
     def EditPointMode(self, activate):
-        """!Registers/unregisters mouse handler into map window"""
+        """Registers/unregisters mouse handler into map window"""
 
         if activate == self.handlerRegistered:
             return
@@ -464,7 +464,7 @@
         return self.handlerRegistered
 
     def OnMapClickHandler(self, event):
-        """!Take coordinates from map window"""
+        """Take coordinates from map window"""
         #TODO update snapping after input change
         if event == 'unregistered':
             self.handlerRegistered = False
@@ -603,7 +603,7 @@
         return self.params, invParams, self.flags 
 
     def _getInvalidParams(self, params):
-        """!Check of analysis input data for invalid values (Parameters tab)"""
+        """Check of analysis input data for invalid values (Parameters tab)"""
         # dict of invalid values {key from self.itemData (comboboxes from Parameters tab) : invalid value}
         invParams = []
 
@@ -653,7 +653,7 @@
 
 class VNETAnalysesProperties:
     def __init__(self):
-        """!Initializes parameters for different v.net.* modules """
+        """Initializes parameters for different v.net.* modules """
         # initialization of v.net.* analysis parameters (data which characterizes particular analysis)
 
         self.attrCols = {
@@ -846,16 +846,16 @@
         return relevant_params
 
 class VNETTmpVectMaps:
-    """!Class which creates, stores and destroys all tmp maps created during analysis"""
+    """Class which creates, stores and destroys all tmp maps created during analysis"""
     def __init__(self, parent, mapWin):
         self.tmpMaps = [] # temporary maps 
         self.parent = parent
         self.mapWin = mapWin
 
     def AddTmpVectMap(self, mapName, msg):
-        """!New temporary map
+        """New temporary map
 
-            @return instance of VectMap representing temporary map 
+        :return: instance of VectMap representing temporary map 
         """
         currMapSet = grass.gisenv()['MAPSET']
         tmpMap = grass.find_file(name = mapName, 
@@ -886,11 +886,11 @@
         return newVectMap
 
     def HasTmpVectMap(self, vectMapName):
-        """ 
-            @param vectMapName name of vector map
+        """
+        :param: vectMapName name of vector map
 
-            @return True if it contains the map
-            @return False if not 
+        :return: True if it contains the map
+        :return: False if not 
         """
 
         mapValSpl = vectMapName.strip().split("@")
@@ -907,19 +907,19 @@
         return False
 
     def GetTmpVectMap(self, vectMapName):
-        """ Get instance of VectMap with name vectMapName"""
+        """Get instance of VectMap with name vectMapName"""
         for vectMap in self.tmpMaps:
             if vectMap.GetVectMapName() == vectMapName.strip():
                 return vectMap
         return None
 
     def RemoveFromTmpMaps(self, vectMap):
-        """!Temporary map is removed from the class instance however it is not deleted
+        """Temporary map is removed from the class instance however it is not deleted
 
-            @param vectMap instance of VectMap class to be removed 
+        :param vectMap: instance of VectMap class to be removed 
 
-            @return True if was removed
-            @return False if does not contain the map
+        :return: True if was removed
+        :return: False if does not contain the map
         """
         try:
             self.tmpMaps.remove(vectMap)
@@ -928,12 +928,12 @@
             return False
 
     def DeleteTmpMap(self, vectMap):
-        """!Temporary map is removed from the class and it is deleted
+        """Temporary map is removed from the class and it is deleted
         
-            @param vectMap instance of VectMap class to be deleted 
+        :param vectMap: instance of VectMap class to be deleted 
 
-            @return True if was removed
-            @return False if does not contain the map
+        :return: True if was removed
+        :return: False if does not contain the map
         """
         if vectMap:
             vectMap.DeleteRenderLayer()
@@ -954,7 +954,7 @@
         return update
 
 class VectMap:
-    """!Represents map 
+    """Represents map 
         It can check if it was modified or render it
     """
     def __init__(self, mapWin, fullName):
@@ -968,7 +968,7 @@
         self.DeleteRenderLayer()
    
     def AddRenderLayer(self, cmd = None, colorsCmd = None):
-        """!Add map from map window layers to render """
+        """Add map from map window layers to render """
 
         if not self.mapWin:
             return False
@@ -1004,7 +1004,7 @@
         return True
 
     def DeleteRenderLayer(self):
-        """!Remove map from map window layers to render"""
+        """Remove map from map window layers to render"""
         if not self.mapWin:
             return False
 
@@ -1021,15 +1021,15 @@
         return self.fullName
 
     def SaveVectMapState(self):
-        """!Save modification time for vector map"""
+        """Save modification time for vector map"""
         self.modifTime = self.GetLastModified()
 
     def VectMapState(self):
-        """!Checks if map was modified
+        """Checks if map was modified
 
-            @return -1 - if no modification time was saved
-            @return  0 - if map was modified
-            @return  1 - if map was not modified
+        :return: -1 - if no modification time was saved
+        :return:  0 - if map was modified
+        :return:  1 - if map was not modified
         """
         if self.modifTime is None:
             return -1       
@@ -1038,9 +1038,9 @@
         return 1
 
     def GetLastModified(self):
-        """!Get modification time 
+        """Get modification time 
 
-            @return MAP DATE time string from vector map head file 
+        :return: MAP DATE time string from vector map head file 
         """
 
         mapValSpl = self.fullName.split("@")
@@ -1067,10 +1067,11 @@
             return ""
 
 class History: 
-    """!Class which reads and saves history data (based on gui.core.settings Settings class file save/load)
+    """Class which reads and saves history data (based on gui.core.settings Settings class file save/load)
 
-    @todo Maybe it could be useful for other GRASS wxGUI tools.
-    """   
+    .. todo::
+        Maybe it could be useful for other GRASS wxGUI tools.
+    """  
     def __init__(self):
 
         # max number of steps in history (zero based)
@@ -1095,7 +1096,7 @@
         grass.try_remove(self.histFile)
 
     def GetNext(self):
-        """!Go one step forward in history"""
+        """Go one step forward in history"""
         self.currHistStep -= 1
         self.currHistStepData.clear()
         self.currHistStepData = self._getHistStepData(self.currHistStep)
@@ -1103,7 +1104,7 @@
         return self.currHistStepData
 
     def GetPrev(self):
-        """!Go one step back in history"""
+        """Go one step back in history"""
         self.currHistStep += 1 
         self.currHistStepData.clear()
         self.currHistStepData = self._getHistStepData(self.currHistStep)
@@ -1111,15 +1112,15 @@
         return self.currHistStepData
 
     def GetStepsNum(self):
-        """!Get number of steps saved in history"""
+        """Get number of steps saved in history"""
         return self.histStepsNum
 
     def GetCurrHistStep(self):
-        """!Get current history step"""
+        """Get current history step"""
         return self.currHistStep
 
     def Add(self, key, subkey, value):
-        """!Add new data into buffer"""
+        """Add new data into buffer"""
         if key not in self.newHistStepData:
             self.newHistStepData[key] = {}
 
@@ -1131,7 +1132,7 @@
             self.newHistStepData[key][subkey] = value
 
     def SaveHistStep(self):
-        """!Create new history step with data in buffer"""
+        """Create new history step with data in buffer"""
         self.maxHistSteps = UserSettings.Get(group ='vnet',
                                              key = 'other',
                                              subkey = 'max_hist_steps')
@@ -1155,7 +1156,7 @@
         return removedHistData
 
     def _savePreviousHist(self, newHist, oldHist):          
-        """!Save previous history into new file"""
+        """Save previous history into new file"""
         newHistStep = False
         removedHistData = {}
         newHistStepsNum = self.histStepsNum
@@ -1188,7 +1189,7 @@
         return removedHistData
             
     def _saveNewHistStep(self, newHist):
-        """!Save buffer (new step) data into file"""
+        """Save buffer (new step) data into file"""
         newHist.write('%s%s%s' % (os.linesep, "history step=0", os.linesep))  
         for key in self.newHistStepData.keys():
             subkeys =  self.newHistStepData[key].keys()
@@ -1219,7 +1220,7 @@
         self.histStepsNum = 0
 
     def _parseValue(self, value, read = False):
-        """!Parse value"""
+        """Parse value"""
         if read: # -> read data (cast values)
 
             if value:
@@ -1256,7 +1257,7 @@
         return value
 
     def _castValue(self, value):
-        """!Cast value"""
+        """Cast value"""
         try:
             value = int(value)
         except ValueError:
@@ -1268,7 +1269,7 @@
         return value
 
     def _getHistStepData(self, histStep):          
-        """!Load data saved in history step"""        
+        """Load data saved in history step"""       
         hist = open(self.histFile)
         histStepData = {}
 
@@ -1294,7 +1295,7 @@
         return histStepData
 
     def _parseLine(self, line, histStepData):
-        """!Parse line in file with history"""        
+        """Parse line in file with history"""       
         line = line.rstrip('%s' % os.linesep).split(self.sep)
         key = line[0]
         kv = line[1:]
@@ -1323,11 +1324,11 @@
             idx += 2
 
     def DeleteNewHistStepData(self):
-        """!Delete buffer data for new history step"""        
+        """Delete buffer data for new history step"""       
         self.newHistStepData.clear() 
 
 class VNETGlobalTurnsData:
-    """!Turn Data"""
+    """Turn Data"""
     def __init__(self):
         # Definition of four basic directions
         self.turn_data = [
@@ -1354,7 +1355,7 @@
         self.turn_data[line][col] = value
 
     def SetUTurns(self, value):
-        """!Checked if checeBox is checed"""
+        """Checked if checeBox is checed"""
         useUTurns = value
 
     def AppendRow(self, values):
@@ -1368,7 +1369,7 @@
         self.turn_data.pop(values)
              
     def DataValidator(self, row, col, value):
-        """!Angle recalculation due to value changing"""
+        """Angle recalculation due to value changing"""
 
         if col not in [1,2]:
             return
@@ -1435,7 +1436,7 @@
             self.turn_data[i_row][2] = angle
 
     def RemoveDataValidator(self, row):
-        """!Angle recalculation due to direction remove"""
+        """Angle recalculation due to direction remove"""
         if row == 0:
             prev_row = self.GetLinesCount() - 1
         else:
@@ -1446,7 +1447,7 @@
 
 
     def IsInInterval(self, from_angle, to_angle, angle):
-        """!Test if a direction includes or not includes a value"""  
+        """Test if a direction includes or not includes a value""" 
         if to_angle < from_angle:
             to_angle = math.pi * 2  + to_angle
         if angle < from_angle:
@@ -1454,4 +1455,4 @@
             
         if angle > from_angle and angle < to_angle:
             return True
-        return False
\ No newline at end of file
+        return False

Modified: grass/trunk/gui/wxpython/vnet/vnet_utils.py
===================================================================
--- grass/trunk/gui/wxpython/vnet/vnet_utils.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/vnet/vnet_utils.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package vnet.vnet_utils
 
 @brief Vector network analysis utilities.
@@ -30,7 +30,7 @@
     haveCtypes = False
 
 def ParseMapStr(mapStr):
-    """!Create full map name (add current mapset if it is not present in name)"""
+    """Create full map name (add current mapset if it is not present in name)"""
     mapValSpl = mapStr.strip().split("@")
     if len(mapValSpl) > 1:
         mapSet = mapValSpl[1]
@@ -47,7 +47,7 @@
     return radians * 180 / math.pi   
 
 def SnapToNode(e, n, tresh, vectMap):
-    """!Find nearest node to click coordinates (within given threshold)"""
+    """Find nearest node to click coordinates (within given threshold)"""
     if not haveCtypes:
         return None
 
@@ -151,4 +151,4 @@
     if found:
         return cat.value
 
-    return -1
\ No newline at end of file
+    return -1

Modified: grass/trunk/gui/wxpython/vnet/widgets.py
===================================================================
--- grass/trunk/gui/wxpython/vnet/widgets.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/vnet/widgets.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package vnet.widgets
 
 @brief Base class for list of points. 
@@ -38,13 +38,13 @@
                  pos=wx.DefaultPosition, size=wx.DefaultSize,
                  style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_HRULES |
                  wx.LC_SINGLE_SEL):
-        """!Creates list for points. 
+        """Creates list for points. 
 
         PointsList class was created 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.
+        :param cols: is list containing list items. which represents columns.
                 This columns will be added in order as they are in list. 
                 Class will add as first column "use" with number of point and checkbox.
                 Structure of list item must be this:
@@ -129,7 +129,7 @@
         self.SetColumnWidth(0, 50)
 
     def _createCols(self):
-        """!Creates columns in list"""
+        """Creates columns in list"""
         if 0:
             # normal, simple columns
             for col in enumerate(self.colsData):
@@ -148,7 +148,7 @@
                 self.InsertColumnInfo(col[0], info)
 
     def AddItem(self):
-        """!Appends an item to list with default values"""
+        """Appends an item to list with default values"""
         iDefVal = self.dataTypes["itemDefaultValue"]
         iColEd = self.dataTypes["colEditable"]
         itemData = []
@@ -191,7 +191,7 @@
         return self.selected
 
     def GetCellValue(self, key, colName):
-        """!Get value in cell of list using key (same regardless of sorting)"""
+        """Get value in cell of list using key (same regardless of sorting)"""
         colNum = self._getColumnNum(colName)
 
         if colNum < 0:
@@ -204,17 +204,17 @@
         return self.itemDataMap[key][colNum]
 
     def GetCellSelIdx(self, key, colName):
-        """!Get selected index in cell of list using key (same regardless of sorting)
+        """Get selected index in cell of list using key (same regardless of sorting)
 
-            @return number of chosen value, if column has values to choose
-            @return -1 if column does not has values to choose
+        :return: number of chosen value, if column has values to choose
+        :return: -1 if column does not has values to choose
         """
         colNum = self._getColumnNum(colName)
         iColEd = self.dataTypes["colEditable"]
         return self.selIdxs[key][colNum]
 
     def EditCellIndex(self, index, colName, cellData):
-        """!Changes value in list using key (same regardless of sorting)"""
+        """Changes value in list using key (same regardless of sorting)"""
         colNum = self._getColumnNum(colName) 
         key = self.GetItemData(index)
 
@@ -230,7 +230,7 @@
         self.SetStringItem(index, colNum, str(cellVal))
 
     def EditCellKey(self, key, colName, cellData):
-        """!Changes value in list using index (changes during sorting)"""
+        """Changes value in list using index (changes during sorting)"""
         colNum = self._getColumnNum(colName)   
 
         iColEd = self.dataTypes["colEditable"]
@@ -248,7 +248,7 @@
             self.SetStringItem(index, colNum, str(cellVal))
 
     def _findIndex(self, key):
-        """!Find index for key"""
+        """Find index for key"""
         index = -1
         while True:
             index = self.GetNextItem(index,
@@ -260,13 +260,13 @@
         return -1
 
     def ChangeColEditable(self, colName, colType):
-        """!Change 3. item in constructor parameter cols (see the class constructor hint)"""     
+        """Change 3. item in constructor parameter cols (see the class constructor hint)"""    
         colNum = self._getColumnNum(colName)
         iColEd = self.dataTypes["colEditable"]
         self.colsData[colNum][iColEd] = colType
 
     def DeleteItem(self):
-        """!Delete selected item in list"""
+        """Delete selected item in list"""
         if self.selected == wx.NOT_FOUND:
             return
 
@@ -304,7 +304,7 @@
             self.selectedkey = -1
 
     def ClearItem(self, event):
-        """"!Set all values to default in selected item of points list and uncheck it."""
+        """"Set all values to default in selected item of points list and uncheck it."""
         if self.selected == wx.NOT_FOUND:
             return
         index = self.selected
@@ -325,7 +325,7 @@
         self.CheckItem(index, False)
 
     def ResizeColumns(self, minWidth = [90, 120]):
-        """!Resize columns"""
+        """Resize columns"""
         for i in range(self.GetColumnCount()):
             self.SetColumnWidth(i, wx.LIST_AUTOSIZE)
             # first column is checkbox, don't set to minWidth
@@ -335,7 +335,7 @@
         self.SendSizeEvent()
 
     def GetSelected(self):
-        """!Get index of selected item."""
+        """Get index of selected item."""
         return self.selected
 
     # Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
@@ -347,7 +347,7 @@
         return self
 
     def OnItemActivated(self, event):
-        """!When item is double clicked, open editor to edit editable columns."""
+        """When item is double clicked, open editor to edit editable columns."""
         data = []
 
         index = event.GetIndex()
@@ -385,7 +385,7 @@
         return changed, key
         
     def CreateEditDialog(self, data, pointNo):
-        """!Helper function
+        """Helper function
         It is possible to define in child derived class
         and adapt created dialog (e. g. it's title...) 
         """
@@ -393,7 +393,7 @@
         return  EditItem(parent=self, id=wx.ID_ANY, data = data, pointNo=pointNo)
 
     def OnColClick(self, event):
-        """!ListCtrl forgets selected item..."""
+        """ListCtrl forgets selected item..."""
         self.selected = self.FindItemData(-1, self.selectedkey)
         self.SetItemState(self.selected,
                           wx.LIST_STATE_SELECTED,
@@ -401,7 +401,7 @@
         event.Skip()
 
     def OnItemSelected(self, event):
-        """!Updates class attributes holding information about selected item"""
+        """Updates class attributes holding information about selected item"""
         if self.selected != event.GetIndex():
             self.selected = event.GetIndex()
             self.selectedkey = self.GetItemData(self.selected)
@@ -409,7 +409,7 @@
         event.Skip()
 
     def getSmallUpArrowImage(self):
-        """!Get arrow up symbol for indication of sorting"""
+        """Get arrow up symbol for indication of sorting"""
         stream = open(os.path.join(globalvar.IMGDIR, 'small_up_arrow.png'), 'rb')
         try:
             img = wx.ImageFromStream(stream)
@@ -418,7 +418,7 @@
         return img
 
     def getSmallDnArrowImage(self):
-        """!Get arrow down symbol for indication of sorting"""
+        """Get arrow down symbol for indication of sorting"""
         stream = open(os.path.join(globalvar.IMGDIR, 'small_down_arrow.png'), 'rb')
         try:
             img = wx.ImageFromStream(stream)
@@ -427,11 +427,11 @@
         return img
 
     def _getColumnNum(self, colName):
-        """!Get position of column among showed columns 
+        """Get position of column among showed columns 
 
-        @param colName - name of column
-
-        @return index of columns or -1 if col was not found
+        :param colName: name of column
+        :type colName: str
+        :return: index of columns or -1 if col was not found
         """
 
         for iCol, col in enumerate(self.colsData):
@@ -441,12 +441,12 @@
         return -1
 
     def HideColumn(self, colName):
-        """!Hide column (hidden columns are not editable)
+        """Hide column (hidden columns are not editable)
 
-        @param colName - name of column
-
-        @return True - if column was hidden
-        @return False - if position is not valid or column is not showed
+        :param colName: name of column
+        :type colName: str
+        :return: True - if column was hidden
+        :return: False - if position is not valid or column is not showed
         """
         colNum = self._getColumnNum(colName)
         if colNum == -1:
@@ -472,13 +472,14 @@
         return True
 
     def ShowColumn(self, colName, pos):
-        """!Show column
+        """Show column
 
-        @param colName - name of column
-        @param pos - zero based index of position among showed columns (including added 'use' column)
+        :param colName: name of column
+        :type colName: str
+        :param pos: zero based index of position among showed columns (including added 'use' column)
 
-        @return True - if column was shown
-        @return False - if position is not valid or column is not hidden
+        :return: True if column was shown
+        :return: False if position is not valid or column is not hidden
         """
         if pos < 0 and pos >= self.self.GetColumnCount():
             return False
@@ -500,12 +501,13 @@
         return False
 
     def IsShown(self, colName):
-        """!Is column shown
+        """Is column shown
 
-        @param colName - name of column
+        :param colName: name of column
+        :type colName: str
 
-        @return True - if is shown
-        @return False - if is not shown
+        :return: True - if is shown
+        :return: False - if is not shown
         """
 
         if self._getColumnNum(colName) == -1:
@@ -517,7 +519,7 @@
     
     def __init__(self, parent, data, pointNo, itemCap = "Point No." ,id=wx.ID_ANY,
                  title =_("Edit point"), style=wx.DEFAULT_DIALOG_STYLE):
-        """!Dialog for editing item cells in list"""
+        """Dialog for editing item cells in list"""
 
         wx.Dialog.__init__(self, parent, id, title=_(title), style=style)
 
@@ -610,7 +612,7 @@
         sizer.Fit(self)
 
     def GetValues(self):
-        """!Return list of values (as strings).
+        """Return list of values (as strings).
         """
 
         iField = 0
@@ -629,7 +631,8 @@
         return self.data
 
     def GetSelectionIndexes(self):
-        """!Return indexes of selected values (works just for choice columns).
+        """Return indexes of selected values (works just for choice
+        columns).
         """
         iField = 0
         itemIndexes = []

Modified: grass/trunk/gui/wxpython/web_services/cap_interface.py
===================================================================
--- grass/trunk/gui/wxpython/web_services/cap_interface.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/web_services/cap_interface.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package web_services.cap_interface
 
 @brief Provides common interface for GUI web_services.widgets to capabilities data of web services.
@@ -34,7 +34,7 @@
 
 class CapabilitiesBase:
     def GetLayerByName(self, name):
-        """!Find layer by name
+        """Find layer by name
         """
         for l in self.layers_by_id:
             if name == l.GetLayerData('name'):
@@ -42,7 +42,7 @@
         return None
 
     def GetRootLayer(self):
-        """!Get children layers
+        """Get children layers
         """
         if self.layers_by_id:
             return self.layers_by_id[0]
@@ -51,28 +51,29 @@
 
 class LayerBase:
     def GetId(self):
-        """!Get layer id
+        """Get layer id
         """
         return self.id
 
     def GetChildren(self):
-        """!Get children layers
+        """Get children layers
         """
         return self.child_layers
 
     def GetLayerNode(self):
-        """!Get layer node
+        """Get layer node
         """
         return self.layer_node
 
     def AddChildLayer(self, layer):
-        """!Add child layer
+        """Add child layer
         """
         self.child_layers.append(layer)
 
 class WMSCapabilities(CapabilitiesBase, WMSCapabilitiesTree):
     def __init__(self, cap_file, force_version = None):
-        """!Create common interface for web_services.widgets to WMS capabilities data
+        """Create common interface for web_services.widgets to WMS
+        capabilities data
         """
         # checks all elements needed for creation of GetMap requests
         # by r.in.wms/d.wms modules, invalid elements are removed
@@ -85,7 +86,7 @@
         self._initializeLayerTree(self.root_layer)
 
     def _initializeLayerTree(self, parent_layer, id = 0):
-        """!Build tree, which represents layers
+        """Build tree, which represents layers
         """
         if id == 0:
             parent_layer = WMSLayer(parent_layer, id, self)
@@ -104,8 +105,8 @@
         return id
 
     def GetFormats(self):
-        """!Get supported formats
-        """       
+        """Get supported formats
+        """      
         request_node = self.cap_node.find(self.xml_ns.Ns("Request"))
         get_map_node = request_node.find(self.xml_ns.Ns("GetMap"))
         format_nodes = get_map_node.findall(self.xml_ns.Ns("Format"))
@@ -118,7 +119,8 @@
 
 class WMSLayer(LayerBase):
     def __init__(self, layer_node, id, cap):
-        """!Common interface for web_services.widgets to WMS capabilities <Layer> element
+        """Common interface for web_services.widgets to WMS
+        capabilities <Layer> element
         """
         self.id = id
         self.cap = cap
@@ -127,7 +129,7 @@
         self.xml_ns = self.cap.getxmlnshandler()
 
     def GetLayerData(self, param):
-        """!Get layer data"""
+        """Get layer data"""
         title = self.xml_ns.Ns("Title")
         name = self.xml_ns.Ns("Name")
 
@@ -176,7 +178,7 @@
             return projs
 
     def IsRequestable(self):
-        """!Is it possible to use the layer for WMS GetMap request?
+        """Is it possible to use the layer for WMS GetMap request?
         """
         name = self.xml_ns.Ns("Name")
         name_node = self.layer_node.find(name)
@@ -188,7 +190,8 @@
 
 class WMTSCapabilities(CapabilitiesBase, WMTSCapabilitiesTree):
     def __init__(self, cap_file):
-        """!Create common interface for web_services.widgets to WMTS capabilities data
+        """Create common interface for web_services.widgets to WMTS
+        capabilities data
         """
         # checks all elements needed for creation of GetTile requests
         # by r.in.wms/d.wms modules, invalid elements are removed
@@ -210,7 +213,8 @@
     
 class WMTSLayer(LayerBase):
     def __init__(self, layer_node, id, cap):
-        """!Common interface for web_services.widgets to WMTS capabilities <Layer> element
+        """Common interface for web_services.widgets to WMTS
+        capabilities <Layer> element
         """
         self.id = id
         self.cap = cap
@@ -220,8 +224,8 @@
         self.projs = self._getProjs()
 
     def GetLayerData(self, param):
-        """!Get layer data
-        """ 
+        """Get layer data
+        """
         title = self.xml_ns.NsOws("Title")
         name = self.xml_ns.NsOws("Identifier")
 
@@ -277,8 +281,8 @@
             return self.projs
 
     def _getProjs(self):
-        """!Get layer projections
-        """ 
+        """Get layer projections
+        """
         layer_projs = []
         if self.layer_node is None:
             return layer_projs
@@ -302,17 +306,18 @@
         return layer_projs
 
     def IsRequestable(self):
-        """!Is it possible to use the layer for WMTS request?
+        """Is it possible to use the layer for WMTS request?
         """
         if self.layer_node is None:
-           return False
+            return False
         else:
             return True
 
 class OnEarthCapabilities(CapabilitiesBase, OnEarthCapabilitiesTree):
     def __init__(self, cap_file):
-        """!Create Common interface for web_services.widgets to NASA OnEarth 
-            tile service data (equivalent to  WMS, WMTS capabilities data)
+        """Create Common interface for web_services.widgets to
+        NASA OnEarth tile service data (equivalent to  WMS, WMTS
+        capabilities data)
         """
         # checks all elements needed for creation of GetMap requests
         # by r.in.wms/d.wms modules, invalid elements are removed
@@ -322,7 +327,7 @@
         self._initializeLayerTree(self.getroot())
         
     def _initializeLayerTree(self, parent_layer, id = 0):
-        """!Build tree, which represents layers
+        """Build tree, which represents layers
         """
         if id == 0:
             tiled_patterns = parent_layer.find('TiledPatterns')
@@ -347,7 +352,7 @@
 
 class OnEarthLayer(LayerBase):
     def __init__(self, layer_node, parent_layer, id, cap):
-        """!Common interface for web_services.widgets to NASA Earth
+        """Common interface for web_services.widgets to NASA Earth
             capabilities <TiledGroup>\<TiledGroups> element 
             (equivalent to  WMS, WMTS <Layer> element)
         """
@@ -358,7 +363,7 @@
         self.parent_layer = parent_layer
 
     def IsRequestable(self):
-        """!Is it possible to use the layer for NASA OnEarth GetMap request?
+        """Is it possible to use the layer for NASA OnEarth GetMap request?
         """
         if self.layer_node is None or \
            self.layer_node.tag == 'TiledGroups':
@@ -367,7 +372,7 @@
             return True
 
     def GetLayerData(self, param):
-        """!Get layer data
+        """Get layer data
         """
         if self.layer_node is None and param in ['title', 'name']:
             return None

Modified: grass/trunk/gui/wxpython/web_services/dialogs.py
===================================================================
--- grass/trunk/gui/wxpython/web_services/dialogs.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/web_services/dialogs.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package web_services.dialogs
 
 @brief Dialogs for web services.
@@ -39,7 +39,7 @@
 from web_services.widgets import WSPanel, WSManageSettingsWidget
 
 class WSDialogBase(wx.Dialog):
-    """!Base class for web service dialogs. 
+    """Base class for web service dialogs. 
     """
     def __init__(self, parent, id = wx.ID_ANY,
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, **kwargs):
@@ -230,7 +230,7 @@
         self.Fit()
 
     def MakeAdvConnPane(self, pane):
-        """!Create advanced connection settings pane
+        """Create advanced connection settings pane
         """
         self.usernameText = wx.StaticText(parent = pane,
                                           id = wx.ID_ANY, label = _("Username:"))
@@ -273,7 +273,7 @@
         adv_conn_sizer.Fit(pane)
 
     def OnSettingsSaving(self, name):
-        """!Check if required data are filled before setting save is performed.
+        """Check if required data are filled before setting save is performed.
         """
         server = self.server.GetValue().strip()
         if not server:
@@ -287,7 +287,7 @@
         self.settsManager.SaveSettings(name)
 
     def OnSettingsChanged(self, data):
-        """!Update widgets according to chosen settings"""
+        """Update widgets according to chosen settings"""
         # data list: [server, username, password]
         if len < 3:
             return
@@ -303,9 +303,9 @@
             self.adv_conn.Collapse(True)
 
     def OnClose(self, event):
-        """!Close the dialog
+        """Close the dialog
         """
-        """!Close dialog"""
+        """Close dialog"""
         if not self.IsModal():
             self.Destroy()
         event.Skip()
@@ -318,7 +318,7 @@
         return ws_cap_files
 
     def OnServer(self, event):
-        """!Server settings edited
+        """Server settings edited
         """
         value = event.GetString()
         if value:
@@ -327,7 +327,7 @@
             self.btn_connect.Enable(False)
         
     def OnOutputLayerName(self, event):
-        """!Update layer name to web service panel
+        """Update layer name to web service panel
         """
         lname = event.GetString()
         lname = lname.encode('ascii', 'replace')
@@ -336,7 +336,7 @@
             v['panel'].SetOutputLayerName(lname.strip())
 
     def OnConnect(self, event):
-        """!Connect to the server
+        """Connect to the server
         """
         server = self.server.GetValue().strip()
 
@@ -362,7 +362,7 @@
             self.ws_panels[ws]['panel'].Hide()
         
     def OnPanelCapParsed(self, error_msg):
-        """!Called when panel has downloaded and parsed capabilities file.
+        """Called when panel has downloaded and parsed capabilities file.
         """
         # how many web service panels are finished
         self.finished_panels_num +=  1
@@ -384,7 +384,7 @@
 
     def _getConnectedWS(self):
         """
-        @return list of found web services on server (identified as keys in self.ws_panels) 
+        :return: list of found web services on server (identified as keys in self.ws_panels) 
         """
         conn_ws = []
         for ws, data in self.ws_panels.iteritems():
@@ -394,7 +394,7 @@
         return conn_ws
 
     def UpdateDialogAfterConnection(self):
-        """!Update dialog after all web service panels downloaded and parsed capabilities data.
+        """Update dialog after all web service panels downloaded and parsed capabilities data.
         """
         avail_ws = {}        
         conn_ws = self._getConnectedWS()
@@ -437,13 +437,13 @@
             self.active_ws_panel = None
 
     def OnChooseWs(self, event):
-        """!Show panel corresponding to selected web service.
+        """Show panel corresponding to selected web service.
         """
         choosen_r = event.GetInt() 
         self._showWsPanel(self.web_service_sel[choosen_r])
 
     def _showWsPanel(self, ws):
-        """!Helper function
+        """Helper function
         """
         if self.active_ws_panel is not None:
             self.active_ws_panel.Hide()
@@ -454,7 +454,7 @@
         self.Layout()
 
     def OnAdvConnPaneChanged(self, event):
-        """!Collapse search module box
+        """Collapse search module box
         """
         if self.adv_conn.IsExpanded():
             self.adv_conn.SetLabel(self.infoCollapseLabelCol)
@@ -467,7 +467,7 @@
         self.Fit()
 
 class AddWSDialog(WSDialogBase):
-    """!Dialog for adding web service layer."""
+    """Dialog for adding web service layer."""
     def __init__(self, parent, giface, id = wx.ID_ANY,
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, **kwargs):
 
@@ -502,7 +502,7 @@
         self.btn_add.Bind(wx.EVT_BUTTON, self.OnAddLayer)
 
     def UpdateDialogAfterConnection(self):
-        """!Connect to the server
+        """Connect to the server
         """
         WSDialogBase.UpdateDialogAfterConnection(self)
 
@@ -512,7 +512,7 @@
             self.btn_connect.SetDefault()
 
     def OnAddLayer(self, event):
-        """!Add web service layer.
+        """Add web service layer.
         """
         # add layer
         if self.active_ws_panel is None:
@@ -563,16 +563,16 @@
                          params = None, propwin = prop_win)
 
 class WSPropertiesDialog(WSDialogBase):
-    """!Dialog for editing web service properties."""
+    """Dialog for editing web service properties."""
     def __init__(self, parent, giface, layer, ws_cap_files, cmd, id = wx.ID_ANY,
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, **kwargs):
         """
-        @param giface grass interface
-        @param layer layer tree item
-        @param ws_cap_files dict web service('WMS_1.1.1', 'WMS_1.3.0', 'WMTS', 'OnEarth') : cap file path
-                            cap files, which will be parsed
-        @param cmd cmd to which dialog widgets will be initialized if it is possible 
-                   (cmp parameters exists in parsed web service cap_file)
+        :param giface: grass interface
+        :param layer: layer tree item
+        :param ws_cap_files: dict web service('WMS_1.1.1', 'WMS_1.3.0',
+        'WMTS', 'OnEarth') : cap file path cap files, which will be parsed
+        :param cmd: cmd to which dialog widgets will be initialized if
+        it is possible (cmp parameters exists in parsed web service cap_file)
         """
 
         WSDialogBase.__init__(self, parent, id = wx.ID_ANY,
@@ -650,7 +650,7 @@
         self.btn_ok.Bind(wx.EVT_BUTTON, self.OnSave)
 
     def LoadCapFiles(self, ws_cap_files, cmd):
-        """!Parse cap files and update dialog.
+        """Parse cap files and update dialog.
 
         For parameters description, see the constructor.
         """
@@ -680,7 +680,7 @@
                                        cap_file = cap_file)
 
     def _getServerConnFromCmd(self, cmd):
-        """!Get url/server/passwod from cmd tuple 
+        """Get url/server/passwod from cmd tuple 
         """
         conn = { 'url' : '', 'username' : '', 'password' : ''}
         
@@ -690,7 +690,7 @@
         return conn
 
     def _apply(self):
-        """!Apply chosen values from widgets to web service layer."""
+        """Apply chosen values from widgets to web service layer."""
         lcmd = self.active_ws_panel.CreateCmd()
         if not lcmd:
             return
@@ -712,7 +712,7 @@
         self.giface.updateMap.emit()
 
     def UpdateDialogAfterConnection(self):
-        """!Connect to the server
+        """Connect to the server
         """
         WSDialogBase.UpdateDialogAfterConnection(self)
         if self._getConnectedWS():
@@ -728,17 +728,17 @@
         self._close()
 
     def OnClose(self, event):
-        """!Close dialog"""
+        """Close dialog"""
         self._close()
 
     def _close(self):
-        """!Hide dialog"""
+        """Hide dialog"""
         self.Hide()
         self.LoadCapFiles(cmd = self.revert_cmd,
                           ws_cap_files = self.revert_ws_cap_files)
 
     def OnPanelCapParsed(self, error_msg):
-        """!Called when panel has downloaded and parsed capabilities file.
+        """Called when panel has downloaded and parsed capabilities file.
         """
         WSDialogBase.OnPanelCapParsed(self, error_msg)
 
@@ -748,7 +748,7 @@
                 self.cmd_to_set = None
 
     def _updateWsPanelWidgetsByCmd(self, cmd):
-        """!Set values of  widgets according to parameters in cmd.
+        """Set values of  widgets according to parameters in cmd.
         """
 
         ws = self._getWSfromCmd(cmd)
@@ -766,9 +766,10 @@
         return ws
 
 class SaveWMSLayerDialog(wx.Dialog):
-    """!Dialog for saving web service layer into GRASS vector/raster layer.
+    """Dialog for saving web service layer into GRASS vector/raster layer.
 
-    @todo Implement saving data in region of map display.
+    .. todo::
+        Implement saving data in region of map display.
     """
     def __init__(self, parent, layer, giface):
         
@@ -886,7 +887,7 @@
             self.Bind(wx.EVT_RADIOBUTTON, self.OnRegionType, self.region_types[r_type])
 
     def _addSelectSizer(self, title, sel): 
-        """!Helper layout function.
+        """Helper layout function.
         """
         selSizer = wx.BoxSizer(orient = wx.VERTICAL)
 
@@ -904,7 +905,7 @@
         return selSizer
 
     def OnClose(self, event):
-        """!Close dialog
+        """Close dialog
         """
         if not self.IsModal():
             self.Destroy()
@@ -922,7 +923,7 @@
         self.Fit()
 
     def OnSave(self, event):
-        """!Import WMS raster data into GRASS as raster layer.
+        """Import WMS raster data into GRASS as raster layer.
         """
         self.thread.abort(abortall = True)
         currmapset = grass.gisenv()['MAPSET']
@@ -989,7 +990,7 @@
         self.statusbar.SetStatusText(_("Downloading data..."))
 
     def OnCmdDone(self, event):
-        """!When data are fetched.
+        """When data are fetched.
         """
         if event.pid != self.currentPid:
             return
@@ -998,7 +999,7 @@
         self.statusbar.SetStatusText("")
 
     def _addLayer(self):
-        """!Add layer into layer tree.
+        """Add layer into layer tree.
         """
         llist = self._giface.GetLayerList()
         if len(llist.GetLayersByName(self.output)) == 0:
@@ -1009,7 +1010,7 @@
                            checked=True)
 
     def OnCmdOutput(self, event):
-        """!Handle cmd output according to debug level.
+        """Handle cmd output according to debug level.
         """
         if Debug.GetLevel() == 0:
             if event.type == 'error':

Modified: grass/trunk/gui/wxpython/web_services/widgets.py
===================================================================
--- grass/trunk/gui/wxpython/web_services/widgets.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/web_services/widgets.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package web_services.widgets
 
 @brief Widgets for web services (WMS, WMTS, NasaOnEarh)
@@ -56,13 +56,13 @@
 
 class WSPanel(wx.Panel):
     def __init__(self, parent, web_service, **kwargs):
-        """!Show data from capabilities file.
+        """Show data from capabilities file.
 
         Signal: capParsed - this signal is emitted when capabilities file is downloaded 
                             (after ConnectToServer method was called)
 
-        @param parent       - parent widget
-        @param web_service  - web service to be panel generated for
+        :param parent:  parent widget
+        :param web_service:  web service to be panel generated for
         """
         wx.Panel.__init__(self, parent = parent, id = wx.ID_ANY)
 
@@ -144,7 +144,7 @@
         self.SetSizer(sizer)
 
     def _requestPage(self):
-        """!Create request page"""
+        """Create request page"""
         self.req_page_panel = wx.Panel(parent = self, id = wx.ID_ANY)
         self.notebook.AddPage(page = self.req_page_panel, 
                               text=_('Request'), 
@@ -201,13 +201,13 @@
         self.req_page_panel.SetSizer(self.req_page_sizer)
     
     def enableButtons(self, enable = True):
-        """!Enable/disable up, down, buttons
+        """Enable/disable up, down, buttons
         """
         self.btnUp.Enable(enable)
         self.btnDown.Enable(enable)
 
     def _advancedSettsPage(self):
-        """!Create advanced settings page
+        """Create advanced settings page
         """
         #TODO parse maxcol, maxrow, settings from d.wms module?
         #TODO OnEarth driver - add selection of time
@@ -365,7 +365,7 @@
         adv_setts_panel.SetSizer(border)
 
     def OnUp(self, event):
-        """!Move selected layer up
+        """Move selected layer up
         """
         if self.l_odrder_list.GetSelections():
             pos = self.l_odrder_list.GetSelection()
@@ -377,7 +377,7 @@
                 self._updateLayerOrderList(selected = 0)
 
     def OnDown(self, event):
-        """!Move selected to down
+        """Move selected to down
         """
         if self.l_odrder_list.GetSelections():
             pos = self.l_odrder_list.GetSelection()
@@ -389,7 +389,7 @@
                 self._updateLayerOrderList(selected = len(self.sel_layers) -1)
 
     def _updateLayerOrderList(self, selected = None):
-        """!Update order in list.
+        """Update order in list.
         """
         def getlayercaption(layer):
             if l['title']:
@@ -422,11 +422,14 @@
             self.params['bgcolor'].Enable(False)
 
     def ConnectToServer(self, url, username, password):
-        """!Download and parse data from capabilities file.
+        """Download and parse data from capabilities file.
 
-        @param url - server url
-        @param username - username for connection
-        @param password - password for connection
+        :param url: server url
+        :type url: str
+        :param username: username for connection
+        :type username: str
+        :param password: password for connection
+        :type password: str
         """
         self._prepareForNewConn(url, username, password)
         cap_cmd = ['r.in.wms', '-c', ('capfile_output=%s' % self.cap_file), '--overwrite'] + self.ws_cmdl
@@ -435,15 +438,15 @@
         self.cmd_thread.RunCmd(cap_cmd, stderr = self.cmdStdErr)
 
     def OnCmdOutput(self, event):
-        """!Manage cmd output.
+        """Manage cmd output.
         """
         if Debug.GetLevel() != 0:
-          Debug.msg(1, event.text)
+            Debug.msg(1, event.text)
         elif event.type != 'message' and event.type != 'warning':
-          self.cmd_err_str += event.text + os.linesep
+            self.cmd_err_str += event.text + os.linesep
 
     def _prepareForNewConn(self, url, username, password):
-        """!Prepare panel for new connection
+        """Prepare panel for new connection
         """
         self.is_connected = False
 
@@ -465,7 +468,8 @@
         self.ws_cmdl = self.ws_drvs[self.ws]['cmd'] + conn_cmd
 
     def OnCapDownloadDone(self, event):
-        """!Process donwloaded capabilities file and emits capParsed signal (see class constructor).
+        """Process donwloaded capabilities file and emits capParsed
+        signal (see class constructor).
         """
         if event.pid != self.currentPid:
             return
@@ -481,8 +485,9 @@
         self._parseCapFile(self.cap_file)
 
     def _parseCapFile(self, cap_file):
-        """!Parse capabilities data and emits capParsed signal (see class constructor).
-        """ 
+        """Parse capabilities data and emits capParsed signal
+        (see class constructor).
+        """
         try:
             self.cap = self.ws_drvs[self.ws]['cap_parser'](cap_file)
         except (IOError, ParseError) as error:
@@ -509,8 +514,9 @@
         self._postCapParsedEvt(None)
 
     def ParseCapFile(self, url, username, password, cap_file = None,):
-        """!Parse capabilities data and emits capParsed signal (see class constructor).
-        """ 
+        """Parse capabilities data and emits capParsed signal
+        (see class constructor).
+        """
         self._prepareForNewConn(url, username, password)
 
         if cap_file is None or not url:
@@ -522,8 +528,9 @@
         self._parseCapFile(self.cap_file)
 
     def UpdateWidgetsByCmd(self, cmd):
-        """!Update panel widgets accordnig to passed cmd tuple
-        @param cmd - cmd in tuple
+        """Update panel widgets accordnig to passed cmd tuple
+        
+        :param cmd: cmd in tuple
         """
 
         dcmd = cmd[1]
@@ -591,20 +598,20 @@
                 self.params['bgcolor'].SetColour(colour)
 
     def IsConnected(self):
-        """!Was successful in downloading and parsing capabilities data?
+        """Was successful in downloading and parsing capabilities data?
         """
         return self.is_connected
 
     def _postCapParsedEvt(self, error_msg):
-        """!Helper function
+        """Helper function
         """
         self.capParsed.emit(error_msg=error_msg)
 
     def CreateCmd(self):
-        """!Create d.wms cmd from values of panels widgets 
+        """Create d.wms cmd from values of panels widgets 
 
-        @return cmd list
-        @return None if required widgets do not have selected/filled values. 
+        :return: cmd list
+        :return: None if required widgets do not have selected/filled values. 
         """
 
         # check required widgets
@@ -661,7 +668,7 @@
         return lcmd
 
     def OnListSelChanged(self, event):
-        """!Update widgets according to selected layer in list.
+        """Update widgets according to selected layer in list.
         """
         curr_sel_ls = self.list.GetSelectedLayers()
         # update self.sel_layers (selected layer list)
@@ -744,16 +751,16 @@
         self.Layout()
 
     def _setDefaultFormatVal(self):
-        """!Set default format value.
+        """Set default format value.
         """
         try:
-           i = self.formats_list.index('png')
-           self.params['format'].SetSelection(i)
+            i = self.formats_list.index('png')
+            self.params['format'].SetSelection(i)
         except ValueError:
             pass
 
     def _updateFormatRadioBox(self, formats_list):
-        """!Helper function
+        """Helper function
         """
         if self.params['format'] is not None:
             self.req_page_sizer.Detach(self.params['format'])
@@ -767,7 +774,7 @@
                                      flag = wx.LEFT | wx.RIGHT | wx.BOTTOM, border = 5)
         
     def _getFormats(self, layer = None):
-        """!Get formats 
+        """Get formats 
 
         WMS has formats defined generally for whole cap.
         In WMTS and NASA OnEarh formats are defined for layer.
@@ -788,7 +795,7 @@
         return formats_label
 
     def _checkImportValues(self,): 
-        """!Check if required widgets are selected/filled
+        """Check if required widgets are selected/filled
         """
         warning_str = ""
         show_war = False
@@ -818,7 +825,7 @@
         return True
 
     def SetOutputLayerName(self, name):
-        """!Set name of layer to be added to layer tree
+        """Set name of layer to be added to layer tree
         """
         self.o_layer_name = name
 
@@ -826,18 +833,18 @@
         return self.o_layer_name
 
     def GetCapFile(self):
-        """!Get path to file where capabilities are saved
+        """Get path to file where capabilities are saved
         """
         return self.cap_file
 
     def GetWebService(self):
-        """!Get web service
+        """Get web service
         """
         return self.ws
 
 class LayersList(TreeListCtrl, listmix.ListCtrlAutoWidthMixin):
     def __init__(self, parent, web_service, style, pos=wx.DefaultPosition):
-        """!List of layers and styles available in capabilities file
+        """List of layers and styles available in capabilities file
         """
         self.parent = parent
         self.ws = web_service
@@ -861,7 +868,7 @@
         self.layerSelected = Signal('LayersList.layerSelected')
 
     def LoadData(self, cap = None):
-        """!Load data into list
+        """Load data into list
         """
         # detete first all items
         self.DeleteAllItems()
@@ -870,10 +877,11 @@
             return
     
         def AddLayerChildrenToTree(parent_layer, parent_item):
-            """!Recursive function which adds all capabilities layers/styles to the LayersList. 
+            """Recursive function which adds all capabilities
+            layers/styles to the LayersList. 
             """
             def gettitle(layer):
-                """!Helper function"""
+                """Helper function"""
                 if layer.GetLayerData('title') is not None:
                     layer_title = layer.GetLayerData('title')
                 elif layer.GetLayerData('name') is not None:
@@ -931,9 +939,9 @@
         #self.ExpandAll(self.GetRootItem())
 
     def GetSelectedLayers(self):
-        """!Get selected layers/styles in LayersList
+        """Get selected layers/styles in LayersList
 
-        @return dict with these items:
+        :return: dict with these items:
                     'name'  : layer name used for request
                               if it is style, it is name of parent layer
                     'title' : layer title
@@ -956,7 +964,7 @@
         return sel_layers_dict
 
     def OnListSelChanging(self, event):
-        """!Do not allow to select items, which cannot be requested from server.
+        """Do not allow to select items, which cannot be requested from server.
         """
         def _emitSelected(layer):
             title = layer.GetLayerData('title')
@@ -1001,20 +1009,20 @@
             _emitSelected(self.GetPyData(cur_item)['layer'])
           
     def GetItemCount(self):
-        """!Required for listmix.ListCtrlAutoWidthMixin
+        """Required for listmix.ListCtrlAutoWidthMixin
         """
         return 0
 
     def GetCountPerPage(self):
-        """!Required for listmix.ListCtrlAutoWidthMixin
+        """Required for listmix.ListCtrlAutoWidthMixin
         """
         return 0
 
     def SelectLayers(self, l_st_list):
-        """!Select layers/styles in LayersList
+        """Select layers/styles in LayersList
 
-        @param l_st_list - [{style : 'style_name', layer : 'layer_name'}, ...]
-        @return items from l_st_list which were not found
+        :param l_st_list: [{style : 'style_name', layer : 'layer_name'}, ...]
+        :return: items from l_st_list which were not found
         """
         def checknext(item, l_st_list, items_to_sel):
             def compare(item, l_name, st_name):

Modified: grass/trunk/gui/wxpython/wxgui.py
===================================================================
--- grass/trunk/gui/wxpython/wxgui.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/wxgui.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+""" 
 @package wxgui
 
 @brief Main Python application for GRASS wxPython GUI
@@ -35,9 +35,9 @@
 
 class GMApp(wx.App):
     def __init__(self, workspace = None):
-        """!Main GUI class.
+        """ Main GUI class.
 
-        @param workspace path to the workspace file
+        :param workspace: path to the workspace file
         """
         self.workspaceFile = workspace
         
@@ -47,9 +47,9 @@
         self.locale = wx.Locale(language = wx.LANGUAGE_DEFAULT)
         
     def OnInit(self):
-        """!Initialize all available image handlers
+        """ Initialize all available image handlers
         
-        @return True
+        :return: True
         """
         if not globalvar.CheckWxVersion([2, 9]):
             wx.InitAllImageHandlers()
@@ -88,7 +88,7 @@
         self.msg = msg
 
 def printHelp():
-    """!Print program help"""
+    """ Print program help"""
     print >> sys.stderr, "Usage:"
     print >> sys.stderr, " python wxgui.py [options]"
     print >> sys.stderr, "%sOptions:" % os.linesep
@@ -96,7 +96,7 @@
     sys.exit(1)
 
 def process_opt(opts, args):
-    """!Process command-line arguments"""
+    """ Process command-line arguments"""
     workspaceFile = None
     for o, a in opts:
         if o in ("-h", "--help"):

Modified: grass/trunk/gui/wxpython/wxplot/base.py
===================================================================
--- grass/trunk/gui/wxpython/wxplot/base.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/wxplot/base.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package wxplot.base
 
 @brief Base classes for iinteractive plotting using PyPlot
@@ -49,7 +49,7 @@
     }
 
 class BasePlotFrame(wx.Frame):
-    """!Abstract PyPlot display frame class"""
+    """Abstract PyPlot display frame class"""
     def __init__(self, parent=None, size=wx.Size(700, 400),
                  style=wx.DEFAULT_FRAME_STYLE, rasterList=[],  **kwargs):
 
@@ -107,7 +107,7 @@
         self._createColorDict()
 
     def _createColorDict(self):
-        """!Create color dictionary to return wx.Colour tuples
+        """Create color dictionary to return wx.Colour tuples
         for assigning colors to images in imagery groups"""
                 
         self.colorDict = {}
@@ -119,8 +119,8 @@
             self.colorDict[clr] = (r,g,b,255)
 
     def InitPlotOpts(self, plottype):
-        """!Initialize options for entire plot
-        """        
+        """Initialize options for entire plot
+        """       
         self.plottype = plottype                # histogram, profile, or scatter
 
         self.properties = {}                    # plot properties
@@ -173,7 +173,7 @@
             self.client.SetYSpec('auto')
         
     def InitRasterOpts(self, rasterList, plottype):
-        """!Initialize or update raster dictionary for plotting
+        """Initialize or update raster dictionary for plotting
         """
 
         rdict = {} # initialize a dictionary
@@ -232,7 +232,7 @@
         return rdict
             
     def InitRasterPairs(self, rasterList, plottype):
-        """!Initialize or update raster dictionary with raster pairs for
+        """Initialize or update raster dictionary with raster pairs for
             bivariate scatterplots
         """
         
@@ -296,7 +296,7 @@
         return rdict
 
     def SetGraphStyle(self):
-        """!Set plot and text options
+        """Set plot and text options
         """
         self.client.SetFont(self.properties['font']['wxfont'])
         self.client.SetFontSizeTitle(self.properties['font']['prop']['titleSize'])
@@ -359,7 +359,7 @@
         self.client.SetEnableLegend(self.properties['legend']['enabled'])
 
     def DrawPlot(self, plotlist):
-        """!Draw line and point plot from list plot elements.
+        """Draw line and point plot from list plot elements.
         """
         xlabel, ylabel = self._getPlotLabels()
         self.plot = plot.PlotGraphics(plotlist,
@@ -381,7 +381,7 @@
                          self.properties['y-axis']['axis'])
                 
     def DrawPointLabel(self, dc, mDataDict):
-        """!This is the fuction that defines how the pointLabels are
+        """This is the fuction that defines how the pointLabels are
             plotted dc - DC that will be passed mDataDict - Dictionary
             of data that you want to use for the pointLabel
 
@@ -400,10 +400,10 @@
         legend = mDataDict["legend"]
         #make a string to display
         s = "Crv# %i, '%s', Pt. (%.2f,%.2f), PtInd %i" %(cNum, legend, px, py, pntIn)
-        dc.DrawText(s, sx , sy+1)
+        dc.DrawText(s, sx , sy + 1)
 
     def OnZoom(self, event):
-        """!Enable zooming and disable dragging
+        """Enable zooming and disable dragging
         """
         self.zoom = True
         self.drag = False
@@ -411,7 +411,7 @@
         self.client.SetEnableDrag(self.drag)
 
     def OnDrag(self, event):
-        """!Enable dragging and disable zooming
+        """Enable dragging and disable zooming
         """
         self.zoom = False
         self.drag = True
@@ -419,19 +419,19 @@
         self.client.SetEnableZoom(self.zoom)
 
     def OnRedraw(self, event):
-        """!Redraw the plot window. Unzoom to original size
+        """Redraw the plot window. Unzoom to original size
         """
         self.UpdateLabels()
         self.client.Reset()
         self.client.Redraw()
        
     def OnErase(self, event):
-        """!Erase the plot window
+        """Erase the plot window
         """
         self.client.Clear()
 
     def SaveToFile(self, event):
-        """!Save plot to graphics file
+        """Save plot to graphics file
         """
         self.client.SaveFile()
 
@@ -441,9 +441,9 @@
         event.Skip() # allows plotCanvas OnMouseLeftDown to be called
 
     def OnMotion(self, event):
-        """!Indicate when mouse is outside the plot area
+        """Indicate when mouse is outside the plot area
         """
-        if self.client.GetEnablePointLabel() == True:
+        if self.client.GetEnablePointLabel() is True:
             #make up dict with info for the pointLabel
             #I've decided to mark the closest point on the closest curve
             dlst = self.client.GetClosestPoint(self.client._getXY(event), pointScaled=True)
@@ -458,7 +458,7 @@
  
  
     def PlotOptionsMenu(self, event):
-        """!Popup menu for plot and text options
+        """Popup menu for plot and text options
         """
         point = wx.GetMousePosition()
         popt = wx.Menu()
@@ -477,7 +477,7 @@
         popt.Destroy()
 
     def NotFunctional(self):
-        """!Creates a 'not functional' message dialog
+        """Creates a 'not functional' message dialog
         """
         dlg = wx.MessageDialog(parent = self,
                                message = _('This feature is not yet functional'),
@@ -502,7 +502,7 @@
         return x, y
 
     def OnPlotText(self, dlg):
-        """!Custom text settings for histogram plot.
+        """Custom text settings for histogram plot.
         """
         self.ptitle = dlg.ptitle
         self.xlabel = dlg.xlabel
@@ -525,7 +525,7 @@
             self.plot.setYLabel(y)
 
     def PlotText(self, event):
-        """!Set custom text values for profile title and axis labels.
+        """Set custom text values for profile title and axis labels.
         """
         dlg = TextDialog(parent = self, id = wx.ID_ANY, 
                          plottype = self.plottype, 
@@ -536,7 +536,7 @@
             dlg.Destroy()            
         
     def PlotOptions(self, event):
-        """!Set various profile options, including: line width, color,
+        """Set various profile options, including: line width, color,
         style; marker size, color, fill, and style; grid and legend
         options.  Calls OptDialog class.
         """
@@ -551,7 +551,7 @@
         self.Update()
 
     def PrintMenu(self, event):
-        """!Print options and output menu
+        """Print options and output menu
         """
         point = wx.GetMousePosition()
         printmenu = wx.Menu()

Modified: grass/trunk/gui/wxpython/wxplot/dialogs.py
===================================================================
--- grass/trunk/gui/wxpython/wxplot/dialogs.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/wxplot/dialogs.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package wxplot.dialogs
 
 @brief Dialogs for different plotting routines
@@ -34,7 +34,7 @@
     def __init__(self, parent, id = wx.ID_ANY, 
                  title = _("Select raster maps to profile"),
                  style = wx.DEFAULT_DIALOG_STYLE, **kwargs):
-        """!Dialog to select raster maps to profile.
+        """Dialog to select raster maps to profile.
         """
 
         wx.Dialog.__init__(self, parent, id, title, style = style, **kwargs)
@@ -97,7 +97,7 @@
         sizer.Fit(self)
 
     def OnSelection(self, event):
-        """!Choose maps to profile. Convert these into a list
+        """Choose maps to profile. Convert these into a list
         """
         self.rasterList = self.FindWindowById(event.GetId()).GetValue().split(',')
 
@@ -105,7 +105,7 @@
     def __init__(self, parent, id = wx.ID_ANY, 
                  title = _("Select pairs of raster maps for scatterplots"),
                  style = wx.DEFAULT_DIALOG_STYLE, **kwargs):
-        """!Dialog to select raster maps to profile.
+        """Dialog to select raster maps to profile.
         """
 
         wx.Dialog.__init__(self, parent, id, title, style = style, **kwargs)
@@ -204,12 +204,12 @@
         sizer.Fit(self)
 
     def OnSelection(self, event):
-        """!Select raster maps for scatterplot. Must select maps in pairs.
+        """Select raster maps for scatterplot. Must select maps in pairs.
         """
         self.rasterList = self.FindWindowById(event.GetId()).GetValue().split(',', 1)
         
     def OnSetBins(self, event):
-        """!Bins for histogramming FP maps (=nsteps in r.stats)
+        """Bins for histogramming FP maps (=nsteps in r.stats)
         """
         self.bins = self.spinbins.GetValue()
         
@@ -217,7 +217,7 @@
         self.scattertype = event.GetString()
         
     def GetRasterPairs(self):
-        """!Get raster pairs"""
+        """Get raster pairs"""
         pairsList = list()
         pair = list()
         for r in self.rasterList:
@@ -229,13 +229,13 @@
         return list(pairsList)
     
     def GetSettings(self):
-        """!Get type and bins"""
+        """Get type and bins"""
         return self.scattertype, self.bins
     
 class PlotStatsFrame(wx.Frame):
     def __init__(self, parent, id, message = '', title = '',
                  style = wx.DEFAULT_FRAME_STYLE, **kwargs):
-        """!Dialog to display and save statistics for plots
+        """Dialog to display and save statistics for plots
         """
         wx.Frame.__init__(self, parent, id, style = style, **kwargs)
         self.SetLabel(_("Statistics"))
@@ -307,7 +307,7 @@
         sizer.Fit(self)
 
     def OnCopy(self, event):
-        """!Copy the regression stats to the clipboard
+        """Copy the regression stats to the clipboard
         """
         str = self.title + '\n'
         for item in self.message:
@@ -322,7 +322,7 @@
             wx.MessageBox(_("Regression statistics copied to clipboard"))
         
     def OnClose(self, event):
-        """!Button 'Close' pressed
+        """Button 'Close' pressed
         """
         self.Close(True)
 
@@ -330,7 +330,7 @@
     def __init__(self, parent, id = wx.ID_ANY, 
                  title = _("Select raster map or imagery group to histogram"),
                  style = wx.DEFAULT_DIALOG_STYLE, **kwargs):
-        """!Dialog to select raster maps to histogram.
+        """Dialog to select raster maps to histogram.
         """
 
         wx.Dialog.__init__(self, parent, id, title, style = style, **kwargs)
@@ -456,15 +456,15 @@
         sizer.Fit(self)
 
     def OnHistMap(self, event):
-        """!Hander for radio buttons to choose between histogramming a
+        """Hander for radio buttons to choose between histogramming a
             single raster and an imagery group
         """
-        if self.rasterRadio.GetValue() == True:
+        if self.rasterRadio.GetValue() is True:
             self.maptype = 'raster'
             self.rselection.Enable()
             self.gselection.Disable()
             self.gselection.SetValue('')
-        elif self.groupRadio.GetValue() == True:
+        elif self.groupRadio.GetValue() is True:
             self.maptype = 'group'
             self.gselection.Enable()
             self.rselection.Disable()
@@ -473,13 +473,13 @@
             pass
         
     def OnRasterSelection(self, event):
-        """!Handler for selecting a single raster map
+        """Handler for selecting a single raster map
         """
         self.rasterList = []
         self.rasterList.append(event.GetString())
 
     def OnGroupSelection(self, event):
-        """!Handler for selecting imagery group
+        """Handler for selecting imagery group
         """
         self.rasterList = []
         self.group = event.GetString()
@@ -493,10 +493,10 @@
         else:
             wx.MessageBox(message = _("Selected group must be in current mapset"), 
                           caption = _('Invalid input'), 
-                          style = wx.OK|wx.ICON_ERROR)
+                          style = wx.OK | wx.ICON_ERROR)
                                                                                             
     def OnSetBins(self, event):
-        """!Bins for histogramming FP maps (=nsteps in r.stats)
+        """Bins for histogramming FP maps (=nsteps in r.stats)
         """
         self.bins = self.spinbins.GetValue()
         
@@ -507,7 +507,7 @@
 class TextDialog(wx.Dialog):
     def __init__(self, parent, id, title, plottype = '', 
                  style = wx.DEFAULT_DIALOG_STYLE, **kwargs):
-        """!Dialog to set histogram text options: font, title
+        """Dialog to set histogram text options: font, title
         and font size, axis labels and font size
         """
         wx.Dialog.__init__(self, parent, id, title, style = style, **kwargs)
@@ -548,7 +548,7 @@
         self._do_layout()
                 
     def _do_layout(self):
-        """!Do layout"""
+        """Do layout"""
         # dialog layout
         sizer = wx.BoxSizer(wx.VERTICAL)
 
@@ -734,7 +734,7 @@
         self.properties['font']['wxfont'].SetWeight(weight)
 
     def OnSave(self, event):
-        """!Button 'Save' pressed"""
+        """Button 'Save' pressed"""
         self.OnApply(None)
         fileSettings = {}
         UserSettings.ReadSettingsFile(settings = fileSettings)
@@ -744,23 +744,23 @@
         self.EndModal(wx.ID_OK)
 
     def OnApply(self, event):
-        """!Button 'Apply' pressed"""
+        """Button 'Apply' pressed"""
         self.UpdateSettings()
         self.parent.OnPlotText(self)
         
     def OnOk(self, event):
-        """!Button 'OK' pressed"""
+        """Button 'OK' pressed"""
         self.OnApply(None)
         self.EndModal(wx.ID_OK)
 
     def OnCancel(self, event):
-        """!Button 'Cancel' pressed"""
+        """Button 'Cancel' pressed"""
         self.EndModal(wx.ID_CANCEL)
         
 class OptDialog(wx.Dialog):
     def __init__(self, parent, id, title, plottype = '', 
                  style = wx.DEFAULT_DIALOG_STYLE, **kwargs): 
-        """!Dialog to set various options for data plotted, including: line
+        """Dialog to set various options for data plotted, including: line
         width, color, style; marker size, color, fill, and style; grid
         and legend options.
         """
@@ -804,8 +804,8 @@
         self._do_layout()
         
     def ConvertTuples(self, tlist):
-        """!Converts tuples to strings when rasterList contains raster pairs
-            for scatterplot
+        """Converts tuples to strings when rasterList contains raster
+        pairs for scatterplot
         """
         list = []
         for i in tlist:
@@ -815,7 +815,7 @@
         return list
 
     def _do_layout(self):
-        """!Options dialog layout
+        """Options dialog layout
         """
         sizer = wx.BoxSizer(wx.VERTICAL)
 
@@ -1162,7 +1162,7 @@
         sizer.Fit(self)
 
     def OnSetMap(self, event):
-        """!Handler for changing map selection"""
+        """Handler for changing map selection"""
         idx = event.GetSelection()
         self.map = self.rasterList[idx]
         
@@ -1184,7 +1184,7 @@
         self.Refresh()
         
     def OnSetOpt(self, event):
-        """!Handler for changing any other option"""
+        """Handler for changing any other option"""
         self.map = self.rasterList[self.mapchoice.GetCurrentSelection()]
         self.UpdateSettings()
         self.parent.SetGraphStyle()
@@ -1192,7 +1192,7 @@
         self.parent.DrawPlot(p)
 
     def UpdateSettings(self):
-        """!Apply settings to each map and to entire plot"""
+        """Apply settings to each map and to entire plot"""
         self.raster[self.map]['pcolor'] = self.FindWindowById(self.wxId['pcolor']).GetColour()
         self.properties['raster']['pcolor'] = self.raster[self.map]['pcolor']
         
@@ -1237,7 +1237,7 @@
         self.parent.UpdateLabels()
 
     def OnSave(self, event):
-        """!Button 'Save' pressed"""
+        """Button 'Save' pressed"""
         self.OnApply(None)
         fileSettings = {}
         UserSettings.ReadSettingsFile(settings = fileSettings)
@@ -1247,18 +1247,17 @@
         self.Close()
 
     def OnApply(self, event):
-        """!Button 'Apply' pressed. Does not close dialog"""
+        """Button 'Apply' pressed. Does not close dialog"""
         self.UpdateSettings()
         self.parent.SetGraphStyle()
         p = self.parent.CreatePlotList()
         self.parent.DrawPlot(p)
 
     def OnOk(self, event):
-        """!Button 'OK' pressed"""
+        """Button 'OK' pressed"""
         self.OnApply(None)
         self.EndModal(wx.ID_OK)
         
     def OnCancel(self, event):
-        """!Button 'Cancel' pressed"""
+        """Button 'Cancel' pressed"""
         self.Close()
-     

Modified: grass/trunk/gui/wxpython/wxplot/histogram.py
===================================================================
--- grass/trunk/gui/wxpython/wxplot/histogram.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/wxplot/histogram.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package wxplot.histogram
 
 @brief Histogramming using PyPlot
@@ -32,7 +32,7 @@
 from core.utils import _
 
 class HistogramPlotFrame(BasePlotFrame):
-    """!Mainframe for displaying histogram of raster map. Uses wx.lib.plot.
+    """Mainframe for displaying histogram of raster map. Uses wx.lib.plot.
     """
     def __init__(self, parent, id = wx.ID_ANY, style = wx.DEFAULT_FRAME_STYLE, 
                  size = wx.Size(700, 400), rasterList = [], **kwargs):
@@ -67,12 +67,12 @@
             self.raster = {}
 
     def _initOpts(self):
-        """!Initialize plot options
+        """Initialize plot options
         """
         self.InitPlotOpts('histogram')            
 
     def OnCreateHist(self, event):
-        """!Main routine for creating a histogram. Uses r.stats to
+        """Main routine for creating a histogram. Uses r.stats to
         create a list of cell value and count/percent/area pairs. This is passed to
         plot to create a line graph of the histogram.
         """
@@ -87,7 +87,7 @@
         self.DrawPlot(p)
 
     def OnSelectRaster(self, event):
-        """!Select raster map(s) to profile
+        """Select raster map(s) to profile
         """
         dlg = HistRasterDialog(parent = self)
         
@@ -106,7 +106,7 @@
         dlg.Destroy()
 
     def SetupHistogram(self):
-        """!Build data list for ploting each raster
+        """Build data list for ploting each raster
         """
 
         #
@@ -145,7 +145,7 @@
         if self.histtype == 'area': self.ylabel = _('Area')
 
     def CreateDatalist(self, raster):
-        """!Build a list of cell value, frequency pairs for histogram
+        """Build a list of cell value, frequency pairs for histogram
             frequency can be in cell counts, percents, or area
         """
         datalist = []
@@ -188,7 +188,7 @@
             return None
         
     def CreatePlotList(self):
-        """!Make list of elements to plot
+        """Make list of elements to plot
         """
         
         # graph the cell value, frequency pairs for the histogram
@@ -215,14 +215,14 @@
             return None
 
     def Update(self):
-        """!Update histogram after changing options
+        """Update histogram after changing options
         """
         self.SetGraphStyle()
         p = self.CreatePlotList()
         self.DrawPlot(p)
  
     def OnStats(self, event):
-        """!Displays regression information in messagebox
+        """Displays regression information in messagebox
         """
         message = []
         title = _('Statistics for Map(s) Histogrammed')
@@ -239,8 +239,8 @@
             stats.Destroy()       
 
 class HistogramPlotToolbar(BaseToolbar):
-    """!Toolbar for histogramming raster map
-    """ 
+    """Toolbar for histogramming raster map
+    """
     def __init__(self, parent):
         BaseToolbar.__init__(self, parent)
         
@@ -250,7 +250,7 @@
         self.Realize()
         
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         return self._getToolbarData((('addraster', BaseIcons["addRast"],
                                       self.parent.OnSelectRaster),
                                      (None, ),

Modified: grass/trunk/gui/wxpython/wxplot/profile.py
===================================================================
--- grass/trunk/gui/wxpython/wxplot/profile.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/wxplot/profile.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package wxplot.profile
 
 @brief Profiling using PyPlot
@@ -44,7 +44,7 @@
 from core.gcmd         import RunCommand, GWarning, GError, GMessage
 
 class ProfileFrame(BasePlotFrame):
-    """!Mainframe for displaying profile of one or more raster maps. Uses wx.lib.plot.
+    """Mainframe for displaying profile of one or more raster maps. Uses wx.lib.plot.
     """
     def __init__(self, parent, controller, units, size=wx.Size(700, 400),
                  rasterList = None, **kwargs):
@@ -95,7 +95,7 @@
         self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
         
     def _initOpts(self):
-        """!Initialize plot options
+        """Initialize plot options
         """
         self.InitPlotOpts('profile')
 
@@ -107,7 +107,7 @@
             self.OnErase(None)
 
     def OnDrawTransect(self, event):
-        """!Draws transect to profile in map display
+        """Draws transect to profile in map display
         """
         if self.controller.IsActive():
             self.controller.Stop()
@@ -117,7 +117,7 @@
         self.parent.Raise()
 
     def OnSelectRaster(self, event):
-        """!Select raster map(s) to profile
+        """Select raster map(s) to profile
         """
         dlg = ProfileRasterDialog(parent = self)
         dlg.CenterOnParent()
@@ -132,7 +132,7 @@
         dlg.Destroy()
 
     def SetupProfile(self):
-        """!Create coordinate string for profiling. Create segment
+        """Create coordinate string for profiling. Create segment
            list for transect segment markers.
         """
         # create list of coordinate points for r.profile
@@ -226,7 +226,7 @@
             self.ylabel = self.ylabel.rstrip(',')
 
     def CreateDatalist(self, raster, coords):
-        """!Build a list of distance, value pairs for points along transect using r.profile
+        """Build a list of distance, value pairs for points along transect using r.profile
         """
         datalist = []
         
@@ -263,7 +263,7 @@
         return datalist
 
     def OnCreateProfile(self, event):
-        """!Main routine for creating a profile. Uses r.profile to
+        """Main routine for creating a profile. Uses r.profile to
         create a list of distance,cell value pairs. This is passed to
         plot to create a line graph of the profile. If the profile
         transect is in multiple segments, these are drawn as
@@ -286,7 +286,7 @@
         self.DrawPlot(p)
 
     def CreatePlotList(self):
-        """!Create a plot data list from transect datalist and
+        """Create a plot data list from transect datalist and
             transect segment endpoint coordinates.
         """
         # graph the distance, value pairs for the transect
@@ -325,15 +325,15 @@
             return None
 
     def Update(self):
-        """!Update profile after changing options
+        """Update profile after changing options
         """
         self.SetGraphStyle()
         p = self.CreatePlotList()
         self.DrawPlot(p)
 
     def SaveProfileToFile(self, event):
-        """!Save r.profile data to a csv file
-        """    
+        """Save r.profile data to a csv file
+        """   
         dlg = wx.FileDialog(parent = self,
                             message = _("Choose prefix for file(s) where to save profile values..."),
                             defaultDir = os.getcwd(), 
@@ -377,7 +377,7 @@
         GMessage(parent = self, message = message)
                         
     def OnStats(self, event):
-        """!Displays regression information in messagebox
+        """Displays regression information in messagebox
         """
         message = []
         title = _('Statistics for Profile(s)')
@@ -418,8 +418,8 @@
         self.Destroy()
     
 class ProfileToolbar(BaseToolbar):
-    """!Toolbar for profiling raster map
-    """ 
+    """Toolbar for profiling raster map
+    """
     def __init__(self, parent):
         BaseToolbar.__init__(self, parent)
         
@@ -429,7 +429,7 @@
         self.Realize()
         
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         return self._getToolbarData((('addraster', BaseIcons["addRast"],
                                       self.parent.OnSelectRaster),
                                      ('transect', PlotIcons["transect"],

Modified: grass/trunk/gui/wxpython/wxplot/scatter.py
===================================================================
--- grass/trunk/gui/wxpython/wxplot/scatter.py	2014-06-13 07:16:07 UTC (rev 60816)
+++ grass/trunk/gui/wxpython/wxplot/scatter.py	2014-06-13 09:32:40 UTC (rev 60817)
@@ -1,4 +1,4 @@
-"""!
+"""
 @package wxplot.scatter
 
 @brief Scatter plotting using PyPlot
@@ -32,7 +32,7 @@
 from core.utils import _
 
 class ScatterFrame(BasePlotFrame):
-    """!Mainframe for displaying bivariate scatter plot of two raster maps. Uses wx.lib.plot.
+    """Mainframe for displaying bivariate scatter plot of two raster maps. Uses wx.lib.plot.
     """
     def __init__(self, parent, id = wx.ID_ANY, style = wx.DEFAULT_FRAME_STYLE, 
                  size = wx.Size(700, 400),
@@ -66,12 +66,12 @@
             self.raster = {}
 
     def _initOpts(self):
-        """!Initialize plot options
+        """Initialize plot options
         """
         self.InitPlotOpts('scatter')            
 
     def OnCreateScatter(self, event):
-        """!Main routine for creating a scatterplot. Uses r.stats to
+        """Main routine for creating a scatterplot. Uses r.stats to
         create a list of cell value pairs. This is passed to
         plot to create a scatterplot.
         """
@@ -85,7 +85,7 @@
             GMessage(_("Nothing to plot."), parent = self)
 
     def OnSelectRaster(self, event):
-        """!Select raster map(s) to profile
+        """Select raster map(s) to profile
         """
         dlg = ScatterRasterDialog(parent = self)
         dlg.CenterOnParent()
@@ -107,7 +107,7 @@
         dlg.Destroy()
         
     def SetupScatterplot(self):
-        """!Build data list for ploting each raster
+        """Build data list for ploting each raster
         """
 
         #
@@ -143,7 +143,7 @@
             self.ylabel += _(': %s') % units
             
     def CreateDatalist(self, rpair):
-        """!Build a list of cell value, frequency pairs for histogram
+        """Build a list of cell value, frequency pairs for histogram
             frequency can be in cell counts, percents, or area
         """
         datalist = []
@@ -194,7 +194,7 @@
             return None
         
     def CreatePlotList(self):
-        """!Make list of elements to plot
+        """Make list of elements to plot
         """
         # graph the cell value, frequency pairs for the histogram
         self.plotlist = []
@@ -220,7 +220,7 @@
         return self.plotlist
     
     def Update(self):
-        """!Update histogram after changing options
+        """Update histogram after changing options
         """
         self.SetGraphStyle()
         p = self.CreatePlotList()
@@ -230,7 +230,7 @@
             GMessage(_("Nothing to plot."), parent = self)
     
     def OnRegression(self, event):
-        """!Displays regression information in messagebox
+        """Displays regression information in messagebox
         """
         message = []
         title = _('Regression Statistics for Scatterplot(s)')
@@ -263,8 +263,8 @@
             stats.Destroy()       
 
 class ScatterToolbar(BaseToolbar):
-    """!Toolbar for bivariate scatterplots of raster map pairs
-    """ 
+    """Toolbar for bivariate scatterplots of raster map pairs
+    """
     def __init__(self, parent):
         BaseToolbar.__init__(self, parent)
         
@@ -274,7 +274,7 @@
         self.Realize()
         
     def _toolbarData(self):
-        """!Toolbar data"""
+        """Toolbar data"""
         return self._getToolbarData((('addraster', BaseIcons["addRast"],
                                       self.parent.OnSelectRaster),
                                      (None, ),

Added: grass/trunk/include/Make/Sphinx.make
===================================================================
--- grass/trunk/include/Make/Sphinx.make	                        (rev 0)
+++ grass/trunk/include/Make/Sphinx.make	2014-06-13 09:32:40 UTC (rev 60817)
@@ -0,0 +1,28 @@
+ifneq (@(type sphinx-apidoc2 > /dev/null),)
+SPHINXAPIDOC   = sphinx-apidoc2
+endif
+ifneq (@(type sphinx-apidoc > /dev/null),)
+SPHINXAPIDOC   = sphinx-apidoc
+endif
+
+ifneq (@(type sphinx-build2 > /dev/null),)
+SPHINXBUILD   = sphinx-build2
+endif
+ifneq (@(type sphinx-build > /dev/null),)
+SPHINXBUILD   = sphinx-build
+endif
+
+checksphinx:
+	@(type $(SPHINXBUILD) > /dev/null || (echo "ERROR: Install 'sphinx-build' software first (get from http://sphinx-doc.org)" && exit 1))
+	@(type $(SPHINXAPIDOC) > /dev/null || (echo "ERROR: Install 'sphinx-apidoc' software first (get from http://sphinx-doc.org)" && exit 1))
+
+cleansphinx:
+	$(MAKE) -C $(MODULE_TOPDIR)/gui/wxpython/docs/wxgui_sphinx/ wxguiclean
+
+sphinxdoc: checksphinx cleansphinx
+	$(MAKE) -C $(MODULE_TOPDIR)/gui/wxpython/docs/wxgui_sphinx/ wxguiapidoc
+	$(MAKE) -C $(MODULE_TOPDIR)/gui/wxpython/docs/wxgui_sphinx/ wxguihtml
+
+sphinxman:checksphinx cleansphinx
+	$(MAKE) -C $(MODULE_TOPDIR)/gui/wxpython/docs/wxgui_sphinx/ wxguiapidoc
+	$(MAKE) -C $(MODULE_TOPDIR)/gui/wxpython/docs/wxgui_sphinx/ wxguiman



More information about the grass-commit mailing list