[GRASS-SVN] r52380 - in grass/branches/releasebranch_6_4/gui/wxpython: core gui_core mapdisp nviz psmap
svn_grass at osgeo.org
svn_grass at osgeo.org
Mon Jul 16 00:59:42 PDT 2012
Author: annakrat
Date: 2012-07-16 00:59:42 -0700 (Mon, 16 Jul 2012)
New Revision: 52380
Modified:
grass/branches/releasebranch_6_4/gui/wxpython/core/settings.py
grass/branches/releasebranch_6_4/gui/wxpython/gui_core/preferences.py
grass/branches/releasebranch_6_4/gui/wxpython/mapdisp/mapwindow.py
grass/branches/releasebranch_6_4/gui/wxpython/nviz/mapwindow.py
grass/branches/releasebranch_6_4/gui/wxpython/psmap/frame.py
Log:
wxGUI: add another option of zoom behaviour - zoom to mouse cursor; used scroll panel for preferences pages (merged from trunk - r52360, r52373, r52378)
Modified: grass/branches/releasebranch_6_4/gui/wxpython/core/settings.py
===================================================================
--- grass/branches/releasebranch_6_4/gui/wxpython/core/settings.py 2012-07-16 07:56:42 UTC (rev 52379)
+++ grass/branches/releasebranch_6_4/gui/wxpython/core/settings.py 2012-07-16 07:59:42 UTC (rev 52380)
@@ -190,7 +190,9 @@
'color' : (255, 255, 255, 255),
},
'mouseWheelZoom' : {
- 'enabled' : True,
+ 'selection' : 1,
+ },
+ 'scrollDirection' : {
'selection' : 0,
},
},
@@ -731,8 +733,11 @@
self.internalSettings['display']['driver']['choices'] = ['default']
self.internalSettings['display']['statusbarMode']['choices'] = None # set during MapFrame init
- self.internalSettings['display']['mouseWheelZoom']['choices'] = (_('Scroll forward to zoom in'),
- _('Scroll back to zoom in'))
+ self.internalSettings['display']['mouseWheelZoom']['choices'] = (_('Zoom and recenter'),
+ _('Zoom to mouse cursor'),
+ _('Nothing'))
+ self.internalSettings['display']['scrollDirection']['choices'] = (_('Scroll forward to zoom in'),
+ _('Scroll back to zoom in'))
self.internalSettings['nviz']['view'] = {}
self.internalSettings['nviz']['view']['twist'] = {}
Modified: grass/branches/releasebranch_6_4/gui/wxpython/gui_core/preferences.py
===================================================================
--- grass/branches/releasebranch_6_4/gui/wxpython/gui_core/preferences.py 2012-07-16 07:56:42 UTC (rev 52379)
+++ grass/branches/releasebranch_6_4/gui/wxpython/gui_core/preferences.py 2012-07-16 07:59:42 UTC (rev 52380)
@@ -39,6 +39,7 @@
import wx
import wx.lib.colourselect as csel
import wx.lib.mixins.listctrl as listmix
+import wx.lib.scrolledpanel as SP
from wx.lib.newevent import NewEvent
@@ -54,7 +55,7 @@
class PreferencesBaseDialog(wx.Dialog):
"""!Base preferences dialog"""
def __init__(self, parent, settings, title = _("User settings"),
- size = (500, 375),
+ size = (500, 425),
style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER):
self.parent = parent # ModelerFrame
self.title = title
@@ -252,7 +253,8 @@
def _createGeneralPage(self, notebook):
"""!Create notebook page for general settings"""
- panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
+ panel = SP.ScrolledPanel(parent = notebook, id = wx.ID_ANY)
+ panel.SetupScrolling(scroll_x = False, scroll_y = True)
notebook.AddPage(page = panel, text = _("General"))
border = wx.BoxSizer(wx.VERTICAL)
@@ -382,8 +384,8 @@
def _createAppearancePage(self, notebook):
"""!Create notebook page for display settings"""
-
- panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
+ panel = SP.ScrolledPanel(parent = notebook, id = wx.ID_ANY)
+ panel.SetupScrolling(scroll_x = False, scroll_y = True)
notebook.AddPage(page = panel, text = _("Appearance"))
border = wx.BoxSizer(wx.VERTICAL)
@@ -555,8 +557,8 @@
def _createDisplayPage(self, notebook):
"""!Create notebook page for display settings"""
-
- panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
+ panel = SP.ScrolledPanel(parent = notebook, id = wx.ID_ANY)
+ panel.SetupScrolling(scroll_x = False, scroll_y = True)
notebook.AddPage(page = panel, text = _("Map Display"))
border = wx.BoxSizer(wx.VERTICAL)
@@ -720,26 +722,35 @@
# mouse wheel zoom
#
row += 1
- wheelZooming = wx.CheckBox(parent = panel, id = wx.ID_ANY,
- label = _("Enable zooming by mouse wheel"),
- name = "IsChecked")
- wheelZooming.SetValue(self.settings.Get(group = 'display', key = 'mouseWheelZoom',
- subkey = 'enabled'))
- self.winId['display:mouseWheelZoom:enabled'] = wheelZooming.GetId()
-
- gridSizer.Add(item = wheelZooming,
- pos = (row, 0), flag = wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL)
-
+ gridSizer.Add(item = wx.StaticText(parent = panel, id = wx.ID_ANY,
+ label = _("Mouse wheel action:")),
+ flag = wx.ALIGN_LEFT |
+ wx.ALIGN_CENTER_VERTICAL,
+ pos = (row, 0))
listOfModes = self.settings.Get(group = 'display', key = 'mouseWheelZoom', subkey = 'choices', internal = True)
- zoomMode = wx.Choice(parent = panel, id = wx.ID_ANY, size = (200, -1),
- choices = listOfModes,
- name = "GetSelection")
- zoomMode.SetSelection(self.settings.Get(group = 'display', key = 'mouseWheelZoom', subkey = 'selection'))
- self.winId['display:mouseWheelZoom:selection'] = zoomMode.GetId()
-
- gridSizer.Add(item = zoomMode,
+ zoomAction = wx.Choice(parent = panel, id = wx.ID_ANY, size = (200, -1),
+ choices = listOfModes,
+ name = "GetSelection")
+ zoomAction.SetSelection(self.settings.Get(group = 'display', key = 'mouseWheelZoom', subkey = 'selection'))
+ self.winId['display:mouseWheelZoom:selection'] = zoomAction.GetId()
+ gridSizer.Add(item = zoomAction,
flag = wx.ALIGN_RIGHT,
pos = (row, 1))
+ row += 1
+ gridSizer.Add(item = wx.StaticText(parent = panel, id = wx.ID_ANY,
+ label = _("Mouse scrolling direction:")),
+ flag = wx.ALIGN_LEFT |
+ wx.ALIGN_CENTER_VERTICAL,
+ pos = (row, 0))
+ listOfModes = self.settings.Get(group = 'display', key = 'scrollDirection', subkey = 'choices', internal = True)
+ scrollDir = wx.Choice(parent = panel, id = wx.ID_ANY, size = (200, -1),
+ choices = listOfModes,
+ name = "GetSelection")
+ scrollDir.SetSelection(self.settings.Get(group = 'display', key = 'scrollDirection', subkey = 'selection'))
+ self.winId['display:scrollDirection:selection'] = scrollDir.GetId()
+ gridSizer.Add(item = scrollDir,
+ flag = wx.ALIGN_RIGHT,
+ pos = (row, 1))
sizer.Add(item = gridSizer, proportion = 1, flag = wx.ALL | wx.EXPAND, border = 5)
border.Add(item = sizer, proportion = 0, flag = wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND, border = 3)
@@ -748,7 +759,7 @@
# bindings
fontButton.Bind(wx.EVT_BUTTON, self.OnSetFont)
- wheelZooming.Bind(wx.EVT_CHECKBOX, self.OnEnableWheelZoom)
+ zoomAction.Bind(wx.EVT_CHOICE, self.OnEnableWheelZoom)
# enable/disable controls according to settings
self.OnEnableWheelZoom(None)
@@ -757,7 +768,8 @@
def _createCmdPage(self, notebook):
"""!Create notebook page for commad dialog settings"""
- panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
+ panel = SP.ScrolledPanel(parent = notebook, id = wx.ID_ANY)
+ panel.SetupScrolling(scroll_x = False, scroll_y = True)
notebook.AddPage(page = panel, text = _("Command"))
border = wx.BoxSizer(wx.VERTICAL)
@@ -908,7 +920,8 @@
def _createAttributeManagerPage(self, notebook):
"""!Create notebook page for 'Attribute Table Manager' settings"""
- panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
+ panel = SP.ScrolledPanel(parent = notebook, id = wx.ID_ANY)
+ panel.SetupScrolling(scroll_x = False, scroll_y = True)
notebook.AddPage(page = panel, text = _("Attributes"))
pageSizer = wx.BoxSizer(wx.VERTICAL)
@@ -1037,7 +1050,8 @@
def _createProjectionPage(self, notebook):
"""!Create notebook page for workspace settings"""
- panel = wx.Panel(parent = notebook, id = wx.ID_ANY)
+ panel = SP.ScrolledPanel(parent = notebook, id = wx.ID_ANY)
+ panel.SetupScrolling(scroll_x = False, scroll_y = True)
notebook.AddPage(page = panel, text = _("Projection"))
border = wx.BoxSizer(wx.VERTICAL)
@@ -1308,10 +1322,14 @@
def OnEnableWheelZoom(self, event):
"""!Enable/disable wheel zoom mode control"""
- checkId = self.winId['display:mouseWheelZoom:enabled']
choiceId = self.winId['display:mouseWheelZoom:selection']
- enable = self.FindWindowById(checkId).IsChecked()
- self.FindWindowById(choiceId).Enable(enable)
+ choice = self.FindWindowById(choiceId)
+ if choice.GetSelection() == 2:
+ enable = False
+ else:
+ enable = True
+ scrollId = self.winId['display:scrollDirection:selection']
+ self.FindWindowById(scrollId).Enable(enable)
class DefaultFontDialog(wx.Dialog):
"""
Modified: grass/branches/releasebranch_6_4/gui/wxpython/mapdisp/mapwindow.py
===================================================================
--- grass/branches/releasebranch_6_4/gui/wxpython/mapdisp/mapwindow.py 2012-07-16 07:56:42 UTC (rev 52379)
+++ grass/branches/releasebranch_6_4/gui/wxpython/mapdisp/mapwindow.py 2012-07-16 07:59:42 UTC (rev 52380)
@@ -937,9 +937,10 @@
def OnMouseWheel(self, event):
"""!Mouse wheel moved
"""
- if not UserSettings.Get(group = 'display',
- key = 'mouseWheelZoom',
- subkey = 'enabled'):
+ zoomBehaviour = UserSettings.Get(group = 'display',
+ key = 'mouseWheelZoom',
+ subkey = 'selection')
+ if zoomBehaviour == 2:
event.Skip()
return
@@ -947,22 +948,32 @@
current = event.GetPositionTuple()[:]
wheel = event.GetWheelRotation()
Debug.msg (5, "BufferedWindow.MouseAction(): wheel=%d" % wheel)
- # zoom 1/2 of the screen, centered to current mouse position (TODO: settings)
- begin = (current[0] - self.Map.width / 4,
- current[1] - self.Map.height / 4)
- end = (current[0] + self.Map.width / 4,
- current[1] + self.Map.height / 4)
-
+
if wheel > 0:
zoomtype = 1
else:
zoomtype = -1
-
if UserSettings.Get(group = 'display',
- key = 'mouseWheelZoom',
+ key = 'scrollDirection',
subkey = 'selection'):
zoomtype *= -1
-
+ # zoom 1/2 of the screen (TODO: settings)
+ if zoomBehaviour == 0: # zoom and recenter
+ if zoomtype > 0:
+ begin = (current[0] - self.Map.width / 4,
+ current[1] - self.Map.height / 4)
+ end = (current[0] + self.Map.width / 4,
+ current[1] + self.Map.height / 4)
+ else:
+ begin = ((self.Map.width - current[0]) / 2,
+ (self.Map.height - current[1]) / 2)
+ end = (begin[0] + self.Map.width / 2,
+ begin[1] + self.Map.height / 2)
+ elif zoomBehaviour == 1: # zoom to current cursor position
+ begin = (current[0]/2, current[1]/2)
+ end = ((self.Map.width - current[0])/2 + current[0],
+ (self.Map.height - current[1])/2 + current[1])
+
# zoom
self.Zoom(begin, end, zoomtype)
Modified: grass/branches/releasebranch_6_4/gui/wxpython/nviz/mapwindow.py
===================================================================
--- grass/branches/releasebranch_6_4/gui/wxpython/nviz/mapwindow.py 2012-07-16 07:56:42 UTC (rev 52379)
+++ grass/branches/releasebranch_6_4/gui/wxpython/nviz/mapwindow.py 2012-07-16 07:59:42 UTC (rev 52380)
@@ -626,9 +626,9 @@
def OnMouseWheel(self, event):
"""!Change perspective"""
- if not UserSettings.Get(group = 'display',
- key = 'mouseWheelZoom',
- subkey = 'enabled'):
+ if UserSettings.Get(group = 'display',
+ key = 'mouseWheelZoom',
+ subkey = 'selection') == 2:
event.Skip()
return
@@ -641,7 +641,7 @@
self.ChangeFlySpeed(increase = False)
else:
if UserSettings.Get(group = 'display',
- key = 'mouseWheelZoom',
+ key = 'scrollDirection',
subkey = 'selection'):
wheel *= -1
self.DoZoom(zoomtype = wheel, pos = event.GetPositionTuple())
Modified: grass/branches/releasebranch_6_4/gui/wxpython/psmap/frame.py
===================================================================
--- grass/branches/releasebranch_6_4/gui/wxpython/psmap/frame.py 2012-07-16 07:56:42 UTC (rev 52379)
+++ grass/branches/releasebranch_6_4/gui/wxpython/psmap/frame.py 2012-07-16 07:59:42 UTC (rev 52380)
@@ -1287,9 +1287,9 @@
"""!Mouse wheel scrolled.
Changes zoom."""
- if not UserSettings.Get(group = 'display',
- key = 'mouseWheelZoom',
- subkey = 'enabled'):
+ if UserSettings.Get(group = 'display',
+ key = 'mouseWheelZoom',
+ subkey = 'selection') == 2:
event.Skip()
return
@@ -1298,7 +1298,7 @@
self.mouse['begin'] = event.GetPosition()
if UserSettings.Get(group = 'display',
- key = 'mouseWheelZoom',
+ key = 'scrollDirection',
subkey = 'selection'):
zoom *= -1
More information about the grass-commit
mailing list