]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/samples/ide/activegrid/tool/OutlineService.py
Applied patch [ 1407318 ] bitmap clipping / transparency mask (X11 port)
[wxWidgets.git] / wxPython / samples / ide / activegrid / tool / OutlineService.py
index 95ccd9e357b64d7f1530050cd533298e3e168064..75fc67e0d224acd63fafd0dcb17090029473711a 100644 (file)
@@ -84,6 +84,7 @@ class OutlineView(Service.ServiceView):
         item = self.GetControl().GetSelection()
         if item:
             self.GetControl().CallDoSelectCallback(item)
+        event.Skip()
 
 
     def ResumeActionOnSelect(self):
@@ -156,11 +157,8 @@ class OutlineView(Service.ServiceView):
                 treeCtrl.Expand(child)
             (child, cookie) = treeCtrl.GetNextChild(parentItem, cookie)
 
-        # wxBug: This causes a crash, tried using ScrollTo which crashed as well.  Then tried calling it with wx.CallAfter and that crashed as well, with both EnsureVisible and ScrollTo
-        # self.GetControl().EnsureVisible(self.GetControl().GetRootItem())
-        # So doing the following massive hack which forces the treectrl to scroll up to the top item
-        treeCtrl.Collapse(parentItem)
-        treeCtrl.Expand(parentItem)
+        if parentItem:
+            treeCtrl.EnsureVisible(parentItem)
 
 
 class OutlineTreeCtrl(wx.TreeCtrl):
@@ -323,7 +321,7 @@ class OutlineService(Service.Service):
 
     def __init__(self, serviceName, embeddedWindowLocation = wx.lib.pydocview.EMBEDDED_WINDOW_BOTTOM):
         Service.Service.__init__(self, serviceName, embeddedWindowLocation)
-        self._validTemplates = []
+        self._validViewTypes = []
 
 
     def _CreateView(self):
@@ -442,12 +440,13 @@ class OutlineService(Service.Service):
         if not self.GetView():
             return
 
-        self.SaveExpansionState()
-        if view.DoLoadOutlineCallback(force=force):
-            self.GetView().OnSort(wx.ConfigBase_Get().ReadInt("OutlineSort", SORT_NONE))
-            self.LoadExpansionState()
-        if position >= 0:
-            self.SyncToPosition(position)
+        if hasattr(view, "DoLoadOutlineCallback"):
+            self.SaveExpansionState()
+            if view.DoLoadOutlineCallback(force=force):
+                self.GetView().OnSort(wx.ConfigBase_Get().ReadInt("OutlineSort", SORT_NONE))
+                self.LoadExpansionState()
+            if position >= 0:
+                self.SyncToPosition(position)
 
 
     def SyncToPosition(self, position):
@@ -494,27 +493,26 @@ class OutlineService(Service.Service):
         if self.GetView():
             currView = wx.GetApp().GetDocumentManager().GetCurrentView()
             if currView:
-                for template in self._validTemplates:
-                    type = template.GetViewType()
-                    if isinstance(currView, type):
+                for viewType in self._validViewTypes:
+                    if isinstance(currView, viewType):
                         self.LoadOutline(currView)
                         foundRegisteredView = True
                         break
 
-                if not foundRegisteredView:
-                    self.GetView().ClearTreeCtrl()
+            if not foundRegisteredView:
+                self.GetView().ClearTreeCtrl()
                     
         self._timer.Start(1000) # 1 second interval
 
 
-    def AddTemplateForBackgroundHandler(self, template):
-        self._validTemplates.append(template)
+    def AddViewTypeForBackgroundHandler(self, viewType):
+        self._validViewTypes.append(viewType)
 
 
-    def GetTemplatesForBackgroundHandler(self):
-        return self._validTemplates
+    def GetViewTypesForBackgroundHandler(self):
+        return self._validViewTypes
 
 
-    def RemoveTemplateForBackgroundHandler(self, template):
-        self._validTemplates.remove(template)
+    def RemoveViewTypeForBackgroundHandler(self, viewType):
+        self._validViewTypes.remove(viewType)