[GRASS-SVN] r42871 - grass/trunk/gui/wxpython/gui_modules

svn_grass at osgeo.org svn_grass at osgeo.org
Wed Jul 21 07:53:14 EDT 2010


Author: martinl
Date: 2010-07-21 11:53:14 +0000 (Wed, 21 Jul 2010)
New Revision: 42871

Modified:
   grass/trunk/gui/wxpython/gui_modules/layertree.py
   grass/trunk/gui/wxpython/gui_modules/mapdisp.py
   grass/trunk/gui/wxpython/gui_modules/nviz.py
   grass/trunk/gui/wxpython/gui_modules/nviz_mapdisp.py
   grass/trunk/gui/wxpython/gui_modules/toolbars.py
   grass/trunk/gui/wxpython/gui_modules/vdigit.py
Log:
bug fix #628 (wingrass native: vdigit error on new map)


Modified: grass/trunk/gui/wxpython/gui_modules/layertree.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/layertree.py	2010-07-20 17:42:15 UTC (rev 42870)
+++ grass/trunk/gui/wxpython/gui_modules/layertree.py	2010-07-21 11:53:14 UTC (rev 42871)
@@ -510,28 +510,32 @@
         return True
 
     def OnStartEditing(self, event):
+        """!Start editing vector map layer requested by the user
         """
-        Start editing vector map layer requested by the user
-        """
+        try:
+            maplayer = self.GetPyData(self.layer_selected)[0]['maplayer']
+        except:
+            event.Skip()
+            return
+        
         if not haveVDigit:
             from vdigit import errorMsg
-            msg = _("Unable to start vector digitizer.\nThe VDigit python extension "
-                    "was not found or loaded properly.\n"
-                    "Switching back to 2D display mode.\n\nDetails: %s" % errorMsg)
+            msg = _("Unable to start wxGUI vector digitizer.\nDo you want to start "
+                    "TCL/TK digitizer (v.digit) instead?\n\n"
+                    "Details: %s" % errorMsg)
             
             self.mapdisplay.toolbars['map'].combo.SetValue (_("2D view"))
-            wx.MessageBox(parent=self.mapdisplay,
-                          message=msg,
-                          caption=_("Error"),
-                          style=wx.OK | wx.ICON_ERROR | wx.CENTRE)
+            dlg = wx.MessageDialog(parent = self.mapdisplay,
+                                   message = msg,
+                                   caption=_("Vector digitizer failed"),
+                                   style = wx.YES_NO | wx.CENTRE)
+            if dlg.ShowModal() == wx.ID_YES:
+                self.lmgr.goutput.RunCmd(['v.digit', 'map=%s' % maplayer.GetName()],
+                                         switchPage=False)
+            
+            dlg.Destroy()
             return
         
-        try:
-            maplayer = self.GetPyData(self.layer_selected)[0]['maplayer']
-        except:
-            event.Skip()
-            return
-
         if not self.mapdisplay.toolbars['vdigit']: # enable tool
             self.mapdisplay.AddToolbar('vdigit')
         else: # tool already enabled
@@ -1135,11 +1139,10 @@
         #
         if self.mapdisplay.toolbars['nviz'] and \
                 self.GetPyData(self.layer_selected) is not None:
-
             if self.layer_selected.IsChecked():
                 # update Nviz tool window
                 type = self.GetPyData(self.layer_selected)[0]['maplayer'].type
-
+                
                 if type == 'raster':
                     self.lmgr.nviz.UpdatePage('surface')
                     self.lmgr.nviz.SetPage('surface')
@@ -1149,14 +1152,7 @@
                 elif type == '3d-raster':
                     self.lmgr.nviz.UpdatePage('volume')
                     self.lmgr.nviz.SetPage('volume')
-            else:
-                for page in ('surface', 'vector', 'volume'):
-                    pageId = self.lmgr.nviz.page[page]['id']
-                    if pageId > -1:
-                        self.lmgr.nviz.notebook.RemovePage(pageId)
-                        self.lmgr.nviz.page[page]['id'] = -1
-                        self.lmgr.nviz.page['settings']['id'] = 1 
-
+        
     def OnCollapseNode(self, event):
         """!Collapse node
         """

Modified: grass/trunk/gui/wxpython/gui_modules/mapdisp.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/mapdisp.py	2010-07-20 17:42:15 UTC (rev 42870)
+++ grass/trunk/gui/wxpython/gui_modules/mapdisp.py	2010-07-21 11:53:14 UTC (rev 42871)
@@ -375,23 +375,14 @@
             import nviz
             
             # check for GLCanvas and OpenGL
-            msg = None
-            if not nviz.haveGLCanvas:
-                msg = _("Unable to switch to 3D display mode.\nThe GLCanvas class has not been "
-                        "included with this build "
-                        "of wxPython!\nSwitching back to "
-                        "2D display mode.\n\nDetails: %s" % nviz.errorMsg)
             if not nviz.haveNviz:
-                msg = _("Unable to switch to 3D display mode.\nThe Nviz python extension "
-                        "was not found or loaded properly.\n"
-                        "Switching back to 2D display mode.\n\nDetails: %s" % nviz.errorMsg)
-            
-            if msg:
                 self.toolbars['map'].combo.SetValue (_("2D view"))
-                wx.MessageBox(parent=self,
-                              message=msg,
-                              caption=_("Error"),
-                              style=wx.OK | wx.ICON_ERROR | wx.CENTRE)
+                wx.MessageBox(parent = self,
+                              message = _("Unable to switch to 3D display mode.\nThe Nviz python extension "
+                                          "was not found or loaded properly.\n"
+                                          "Switching back to 2D display mode.\n\nDetails: %s" % nviz.errorMsg),
+                              caption = _("Error"),
+                              style = wx.OK | wx.ICON_ERROR | wx.CENTRE)
                 return
             
             # add Nviz toolbar and disable 2D display mode tools

Modified: grass/trunk/gui/wxpython/gui_modules/nviz.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/nviz.py	2010-07-20 17:42:15 UTC (rev 42870)
+++ grass/trunk/gui/wxpython/gui_modules/nviz.py	2010-07-21 11:53:14 UTC (rev 42871)
@@ -23,23 +23,19 @@
 import sys
 
 import wx
-try:
-    from wx import glcanvas
-    haveGLCanvas = True
-except ImportError, e:
-    haveGLCanvas = False
-    errorMsg = e
-
 import globalvar
 try:
+    from wx import glcanvas
     import nviz_mapdisp
     import nviz_tools
     haveNviz = True
 except ImportError, e:
     haveNviz = False
-    errorMsg = e
-    print >> sys.stderr, "\nWARNING: Nviz extension (3D view) is not available (%s). " % e
-
+    errorMsg = _("3D view mode is not available.\n"
+                 "Reason: %s\n"
+                 "Note that the 3D view mode is currently not working under\nMS Windows "
+                 "(hopefully this will be fixed soon). "
+                 "Please keep\nan eye out for updated versions of GRASS." % e)
 if haveNviz:
     GLWindow = nviz_mapdisp.GLWindow
     NvizToolWindow = nviz_tools.NvizToolWindow

Modified: grass/trunk/gui/wxpython/gui_modules/nviz_mapdisp.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/nviz_mapdisp.py	2010-07-20 17:42:15 UTC (rev 42870)
+++ grass/trunk/gui/wxpython/gui_modules/nviz_mapdisp.py	2010-07-21 11:53:14 UTC (rev 42871)
@@ -41,8 +41,8 @@
 
 import wxnviz
 
-wxUpdateProperties, EVT_UPDATE_PROP = NewEvent()
-wxUpdateView,       EVT_UPDATE_VIEW = NewEvent()
+wxUpdateProperties, EVT_UPDATE_PROP  = NewEvent()
+wxUpdateView,       EVT_UPDATE_VIEW  = NewEvent()
 wxUpdateLight,      EVT_UPDATE_LIGHT = NewEvent()
 
 class NvizThread(Thread):
@@ -153,9 +153,9 @@
                                        size.height)
         
         event.Skip()
-
+        
     def OnPaint(self, event):
-        Debug.msg(3, "GLCanvas.OnPaint()")
+        Debug.msg(1, "GLCanvas.OnPaint()")
         
         dc = wx.PaintDC(self)
         self.SetCurrent()

Modified: grass/trunk/gui/wxpython/gui_modules/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/toolbars.py	2010-07-20 17:42:15 UTC (rev 42870)
+++ grass/trunk/gui/wxpython/gui_modules/toolbars.py	2010-07-21 11:53:14 UTC (rev 42871)
@@ -36,9 +36,10 @@
 import gcmd
 import gdialogs
 import vdigit
-from vdigit import VDigitSettingsDialog as VDigitSettingsDialog
-from debug import Debug as Debug
+from vdigit import VDigitSettingsDialog, haveVDigit
+from debug import Debug
 from preferences import globalSettings as UserSettings
+from nviz import haveNviz
 from nviz_preferences import NvizPreferencesDialog
 
 gmpath = os.path.join(globalvar.ETCWXDIR, "icons")
@@ -177,9 +178,23 @@
         self.InitToolbar(self.ToolbarData())
         
         # optional tools
-        self.combo = wx.ComboBox(parent=self, id=wx.ID_ANY, value=_('2D view'),
-                                 choices=[_('2D view'), _('3D view'), _('Digitize')],
+        choices = [_('2D view')]
+        lmgr = self.parent.GetLayerManager()
+        if haveNviz:
+            choices.append(_('3D view'))
+        else:
+            from nviz import errorMsg
+            lmgr.goutput.WriteWarning(errorMsg)
+        if haveVDigit:
+            choices.append(_('Digitize'))
+        else:
+            from vdigit import errorMsg
+            lmgr.goutput.WriteWarning(errorMsg)
+        
+        self.combo = wx.ComboBox(parent = self, id = wx.ID_ANY,
+                                 choices = choices,
                                  style=wx.CB_READONLY, size=(90, -1))
+        self.combo.SetSelection(0)
         
         self.comboid = self.AddControl(self.combo)
         self.parent.Bind(wx.EVT_COMBOBOX, self.OnSelectTool, self.comboid)

Modified: grass/trunk/gui/wxpython/gui_modules/vdigit.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/vdigit.py	2010-07-20 17:42:15 UTC (rev 42870)
+++ grass/trunk/gui/wxpython/gui_modules/vdigit.py	2010-07-21 11:53:14 UTC (rev 42871)
@@ -1,14 +1,8 @@
 """!
 @package vdigit
 
- at brief Vector digitizer extension
+ at brief wxGUI vector digitizer user interface
 
-Usage:
-
- at code
-  from vdigit import VDigit as VDigit
- at endcode
-
 Classes:
  - AbstractDigit 
  - VDigit
@@ -60,17 +54,15 @@
     haveVDigit = False
     GV_LINES = None
     PseudoDC = wx.PseudoDC
-    errorMsg = err
-    # is there a way to have this display on the terminal before the wx gui exits?
-    print >> sys.stderr, "\nWARNING: Vector digitizer is not available (%s).\n\n" \
-        "Note that the vector digitizer is currently not working under MS Windows " \
-        "(hopefully this will be fixed soon). " \
-        "Please keep an eye out for updated versions of GRASS." % err
-
+    errorMsg = _("Vector digitizer is not available.\n"
+                 "Reason: %s\n"
+                 "Note that the vector digitizer is currently not working under\nMS Windows "
+                 "(hopefully this will be fixed soon). "
+                 "Please keep\nan eye out for updated versions of GRASS." % err)
+    
 class AbstractDigit:
+    """!Abstract digitization class
     """
-    Abstract digitization class
-    """
     def __init__(self, mapwindow):
         """!Initialization
 



More information about the grass-commit mailing list