[GRASS-SVN] r42211 - grass/trunk/gui/wxpython/gui_modules
svn_grass at osgeo.org
svn_grass at osgeo.org
Mon May 10 08:23:11 EDT 2010
Author: martinl
Date: 2010-05-10 08:23:07 -0400 (Mon, 10 May 2010)
New Revision: 42211
Modified:
grass/trunk/gui/wxpython/gui_modules/ghelp.py
grass/trunk/gui/wxpython/gui_modules/gmodeler.py
grass/trunk/gui/wxpython/gui_modules/goutput.py
grass/trunk/gui/wxpython/gui_modules/prompt.py
Log:
wxGUI: search module engine collapsible
Modified: grass/trunk/gui/wxpython/gui_modules/ghelp.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/ghelp.py 2010-05-10 10:50:30 UTC (rev 42210)
+++ grass/trunk/gui/wxpython/gui_modules/ghelp.py 2010-05-10 12:23:07 UTC (rev 42211)
@@ -64,7 +64,9 @@
class SearchModuleWindow(wx.Panel):
"""!Search module window (used in MenuTreeWindow)"""
- def __init__(self, parent, id = wx.ID_ANY, cmdPrompt = None, showChoice = True, **kwargs):
+ def __init__(self, parent, id = wx.ID_ANY, cmdPrompt = None,
+ showChoice = True, showTip = False, **kwargs):
+ self.showTip = showTip
self.showChoice = showChoice
self.cmdPrompt = cmdPrompt
@@ -88,11 +90,14 @@
style = wx.TE_PROCESS_ENTER)
self.search.Bind(wx.EVT_TEXT, self.OnSearchModule)
- if self.showChoice:
+ if self.showTip:
self.searchTip = menuform.StaticWrapText(parent = self, id = wx.ID_ANY,
size = (-1, 35))
-
+
+ if self.showChoice:
self.searchChoice = wx.Choice(parent = self, id = wx.ID_ANY)
+ if self.cmdPrompt:
+ self.searchChoice.SetItems(self.cmdPrompt.GetCommandItems())
self.searchChoice.Bind(wx.EVT_CHOICE, self.OnSelectModule)
self._layout()
@@ -107,11 +112,15 @@
flag=wx.ALIGN_CENTER_VERTICAL, pos = (0, 0))
gridSizer.Add(item = self.search,
flag=wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, pos = (0, 1))
+ row = 1
+ if self.showTip:
+ gridSizer.Add(item = self.searchTip,
+ flag=wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, pos = (row, 0), span = (1, 2))
+ row += 1
+
if self.showChoice:
- gridSizer.Add(item = self.searchTip,
- flag=wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, pos = (1, 0), span = (1, 2))
gridSizer.Add(item = self.searchChoice,
- flag=wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, pos = (2, 0), span = (1, 2))
+ flag=wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, pos = (row, 0), span = (1, 2))
sizer.Add(item = gridSizer, proportion = 1)
@@ -137,6 +146,11 @@
text = event.GetString()
if not text:
self.cmdPrompt.SetFilter(None)
+ mList = self.cmdPrompt.GetCommandItems()
+ self.searchChoice.SetItems(mList)
+ if self.showTip:
+ self.searchTip.SetLabel(_("%d modules found") % len(mList))
+ event.Skip()
return
modules = dict()
@@ -162,9 +176,12 @@
modules[group].append(name)
self.cmdPrompt.SetFilter(modules)
- self.searchTip.SetLabel(_("%d modules found") % iFound)
+ if self.showTip:
+ self.searchTip.SetLabel(_("%d modules found") % iFound)
self.searchChoice.SetItems(self.cmdPrompt.GetCommandItems())
+ event.Skip()
+
def OnSelectModule(self, event):
"""!Module selected from choice, update command prompt"""
cmd = event.GetString().split(' ', 1)[0]
@@ -178,7 +195,8 @@
self.cmdPrompt.SetFocus()
desc = self.cmdPrompt.GetCommandDesc(cmd)
- self.searchTip.SetLabel(desc)
+ if self.showTip:
+ self.searchTip.SetLabel(desc)
class MenuTreeWindow(wx.Panel):
"""!Show menu tree"""
@@ -315,7 +333,7 @@
nItems = len(self.tree.itemsMarked)
if event.GetString():
- self.parent.SetStatusText(_("%d items match") % nItems, 0)
+ self.parent.SetStatusText(_("%d modules match") % nItems, 0)
else:
self.parent.SetStatusText("", 0)
Modified: grass/trunk/gui/wxpython/gui_modules/gmodeler.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/gmodeler.py 2010-05-10 10:50:30 UTC (rev 42210)
+++ grass/trunk/gui/wxpython/gui_modules/gmodeler.py 2010-05-10 12:23:07 UTC (rev 42211)
@@ -1538,7 +1538,7 @@
label=" %s " % _("Command"))
self.cmd_prompt = prompt.GPromptSTC(parent = self)
- self.search = SearchModuleWindow(parent = self.panel, cmdPrompt = self.cmd_prompt)
+ self.search = SearchModuleWindow(parent = self.panel, cmdPrompt = self.cmd_prompt, showTip = True)
# get commands
items = self.cmd_prompt.GetCommandItems()
Modified: grass/trunk/gui/wxpython/gui_modules/goutput.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/goutput.py 2010-05-10 10:50:30 UTC (rev 42210)
+++ grass/trunk/gui/wxpython/gui_modules/goutput.py 2010-05-10 12:23:07 UTC (rev 42211)
@@ -188,11 +188,20 @@
# search & command prompt
self.cmd_prompt = prompt.GPromptSTC(parent = self)
- self.search = SearchModuleWindow(parent = self.panelPrompt, cmdPrompt = self.cmd_prompt)
-
if self.parent.GetName() != 'LayerManager':
- self.search.Hide()
+ self.search = None
self.cmd_prompt.Hide()
+ else:
+ self.infoCollapseLabelExp = _("Click here to show search module engine")
+ self.infoCollapseLabelCol = _("Click here to hide search module engine")
+ self.searchPane = wx.CollapsiblePane(parent = self.panelOutput,
+ label = self.infoCollapseLabelExp,
+ style = wx.CP_DEFAULT_STYLE |
+ wx.CP_NO_TLW_RESIZE | wx.EXPAND)
+ self.MakeSearchPaneContent(self.searchPane.GetPane())
+ self.searchPane.Collapse(True)
+ self.Bind(wx.EVT_COLLAPSIBLEPANE_CHANGED, self.OnSearchPaneChanged, self.searchPane)
+ self.search.Bind(wx.EVT_TEXT, self.OnUpdateStatusBar)
#
# stream redirection
@@ -235,15 +244,15 @@
OutputSizer = wx.BoxSizer(wx.VERTICAL)
PromptSizer = wx.BoxSizer(wx.VERTICAL)
ButtonSizer = wx.BoxSizer(wx.HORIZONTAL)
-
+
+ if self.search and self.search.IsShown():
+ OutputSizer.Add(item=self.searchPane, proportion=0,
+ flag=wx.EXPAND | wx.ALL, border=3)
OutputSizer.Add(item=self.cmd_output, proportion=1,
flag=wx.EXPAND | wx.ALL, border=3)
OutputSizer.Add(item=self.console_progressbar, proportion=0,
flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=3)
- if self.search.IsShown():
- PromptSizer.Add(item=self.search, proportion=0,
- flag=wx.EXPAND | wx.ALL, border=3)
PromptSizer.Add(item=self.cmd_prompt, proportion=1,
flag=wx.EXPAND | wx.LEFT | wx.RIGHT | wx.TOP, border=3)
@@ -269,20 +278,40 @@
# split window
if self.parent.GetName() == 'LayerManager':
- self.SplitHorizontally(self.panelOutput, self.panelPrompt, -75)
- self.SetMinimumPaneSize(self.btn_cmd_clear.GetSize()[1] + 75)
+ self.SplitHorizontally(self.panelOutput, self.panelPrompt, -50)
+ self.SetMinimumPaneSize(self.btn_cmd_clear.GetSize()[1] + 50)
else:
self.SplitHorizontally(self.panelOutput, self.panelPrompt, -45)
self.SetMinimumPaneSize(self.btn_cmd_clear.GetSize()[1] + 10)
self.SetSashGravity(1.0)
- self.Fit()
-
# layout
self.SetAutoLayout(True)
self.Layout()
+ def MakeSearchPaneContent(self, pane):
+ """!Create search pane"""
+ border = wx.BoxSizer(wx.VERTICAL)
+
+ self.search = SearchModuleWindow(parent = pane, cmdPrompt = self.cmd_prompt)
+
+ border.Add(item = self.search, proportion = 1,
+ flag = wx.EXPAND | wx.ALL, border = 1)
+
+ pane.SetSizer(border)
+ border.Fit(pane)
+
+ def OnSearchPaneChanged(self, event):
+ """!Collapse search module box"""
+ if self.searchPane.IsExpanded():
+ self.searchPane.SetLabel(self.infoCollapseLabelCol)
+ else:
+ self.searchPane.SetLabel(self.infoCollapseLabelExp)
+
+ self.Layout()
+ self.SendSizeEvent()
+
def GetPanel(self, prompt = True):
"""!Get panel
@@ -542,6 +571,16 @@
"""!Get running command or None"""
return self.requestQ.get()
+ def OnUpdateStatusBar(self, event):
+ """!Update statusbar text"""
+ if event.GetString():
+ nItems = len(self.cmd_prompt.GetCommandItems())
+ self.parent.SetStatusText(_('%d modules match') % nItems, 0)
+ else:
+ self.parent.SetStatusText('', 0)
+
+ event.Skip()
+
def OnCmdOutput(self, event):
"""!Print command output"""
message = event.text
Modified: grass/trunk/gui/wxpython/gui_modules/prompt.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/prompt.py 2010-05-10 10:50:30 UTC (rev 42210)
+++ grass/trunk/gui/wxpython/gui_modules/prompt.py 2010-05-10 12:23:07 UTC (rev 42211)
@@ -561,6 +561,9 @@
else:
mList = self.moduleList
+ if not mList:
+ return items
+
prefixes = mList.keys()
prefixes.sort()
@@ -569,6 +572,8 @@
name = prefix + '.' + command
items.append(name)
+ items.sort()
+
return items
def _getListOfModules(self):
More information about the grass-commit
mailing list