+ def OnSetFocus(self, event):
+ """ Handles the wx.EVT_SET_FOCUS event for L{PageContainer}. """
+
+ if self._iActivePage < 0:
+ event.Skip()
+ return
+
+ self.SetFocusedPage(self._iActivePage)
+
+
+ def OnKillFocus(self, event):
+ """ Handles the wx.EVT_KILL_FOCUS event for L{PageContainer}. """
+
+ self.SetFocusedPage()
+
+
+ def OnKeyDown(self, event):
+ """
+ When the PageContainer has the focus tabs can be changed with
+ the left/right arrow keys.
+ """
+ key = event.GetKeyCode()
+ print key
+ if key == wx.WXK_LEFT:
+ self.GetParent().AdvanceSelection(False)
+ elif key == wx.WXK_RIGHT:
+ self.GetParent().AdvanceSelection(True)
+ elif key == wx.WXK_TAB:
+ flags = 0
+ if not event.ShiftDown(): flags |= wx.NavigationKeyEvent.IsForward
+ if event.CmdDown(): flags |= wx.NavigationKeyEvent.WinChange
+ self.Navigate(flags)
+ else:
+ event.Skip()
+
+
+ def SetFocusedPage(self, pageIndex=-1):
+ """
+ Sets/Unsets the focus on the appropriate page.
+ If pageIndex is defaulted, we have lost focus and no focus indicator is drawn.
+ """
+
+ for indx, page in enumerate(self._pagesInfoVec):
+ if indx == pageIndex:
+ page._hasFocus = True
+ else:
+ page._hasFocus = False
+
+ self.Refresh()
+
+