瀏覽代碼

wxGUI/search tab: fixes for wxPython 3, fixed finding and showing modules in tree

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@62608 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová 10 年之前
父節點
當前提交
359c76f101
共有 2 個文件被更改,包括 16 次插入5 次删除
  1. 2 0
      gui/wxpython/gui_core/treeview.py
  2. 14 5
      gui/wxpython/gui_core/widgets.py

+ 2 - 0
gui/wxpython/gui_core/treeview.py

@@ -101,6 +101,8 @@ class AbstractTreeViewMixin(VirtualTree):
         for i in range(len(index))[1:]:
             item = self.GetItemByIndex(index[:i])
             self.Expand(item)
+            # needed for wxPython 3:
+            self.EnsureVisible(item)
 
         item = self.GetItemByIndex(index)
         self.SelectItem(item, select)

+ 14 - 5
gui/wxpython/gui_core/widgets.py

@@ -939,6 +939,7 @@ class SearchModuleWidget(wx.Panel):
 
         self._search.Bind(wx.EVT_TEXT, self.OnSearchModule)
         self._search.Bind(wx.EVT_KEY_UP,  self.OnKeyUp)
+        self._search.Bind(wx.EVT_TEXT_ENTER, self.OnEnter)
 
         if self._showTip:
             self._searchTip = StaticWrapText(parent = self, id = wx.ID_ANY,
@@ -978,13 +979,21 @@ class SearchModuleWidget(wx.Panel):
     def OnKeyUp(self, event):
         """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
-                if self._resultIndex == len(self._results):
-                    self._resultIndex = 0
-                self.showSearchResult.emit(result=self._results[self._resultIndex])
+            self._showSearchResult()
         event.Skip()
 
+    def OnEnter(self, event):
+        """Process EVT_TEXT_ENTER to show search results"""
+        self._showSearchResult()
+        event.Skip()
+
+    def _showSearchResult(self):
+        if self._results:
+            self._resultIndex += 1
+            if self._resultIndex == len(self._results):
+                self._resultIndex = 0
+            self.showSearchResult.emit(result=self._results[self._resultIndex])
+
     def OnSearchModule(self, event):
         """Search module by keywords or description"""
         value = self._search.GetValue()