FNB_ALLOW_FOREIGN_DND = 32768
"""Allows drag 'n' drop operations between different L{FlatNotebook}s"""
+FNB_HIDE_ON_SINGLE_TAB = 65536
+"""Hides the Page Container when there is one or fewer tabs"""
+
VERTICAL_BORDER_PADDING = 4
# Button size is a 16x16 xpm bitmap
FNB_NOWHERE = 0 # Anywhere else
"""Indicates mouse coordinates not on any tab of the notebook"""
-FNB_DEFAULT_STYLE = FNB_MOUSE_MIDDLE_CLOSES_TABS
+FNB_DEFAULT_STYLE = FNB_MOUSE_MIDDLE_CLOSES_TABS | FNB_HIDE_ON_SINGLE_TAB
"""L{FlatNotebook} default style"""
# FlatNotebook Events:
# wxEVT_FLATNOTEBOOK_PAGE_CLOSED: Event Fired When A Page Is Closed.
# wxEVT_FLATNOTEBOOK_PAGE_CONTEXT_MENU: Event Fired When A Menu Pops-up In A Tab.
-wxEVT_FLATNOTEBOOK_PAGE_CHANGED = wx.NewEventType()
-wxEVT_FLATNOTEBOOK_PAGE_CHANGING = wx.NewEventType()
+wxEVT_FLATNOTEBOOK_PAGE_CHANGED = wx.wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED
+wxEVT_FLATNOTEBOOK_PAGE_CHANGING = wx.wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING
wxEVT_FLATNOTEBOOK_PAGE_CLOSING = wx.NewEventType()
wxEVT_FLATNOTEBOOK_PAGE_CLOSED = wx.NewEventType()
wxEVT_FLATNOTEBOOK_PAGE_CONTEXT_MENU = wx.NewEventType()
# FlatNotebookEvent
#-----------------------------------#
-EVT_FLATNOTEBOOK_PAGE_CHANGED = wx.PyEventBinder(wxEVT_FLATNOTEBOOK_PAGE_CHANGED, 1)
+EVT_FLATNOTEBOOK_PAGE_CHANGED = wx.EVT_NOTEBOOK_PAGE_CHANGED
"""Notify client objects when the active page in L{FlatNotebook}
has changed."""
-EVT_FLATNOTEBOOK_PAGE_CHANGING = wx.PyEventBinder(wxEVT_FLATNOTEBOOK_PAGE_CHANGING, 1)
+EVT_FLATNOTEBOOK_PAGE_CHANGING = wx.EVT_NOTEBOOK_PAGE_CHANGING
"""Notify client objects when the active page in L{FlatNotebook}
is about to change."""
EVT_FLATNOTEBOOK_PAGE_CLOSING = wx.PyEventBinder(wxEVT_FLATNOTEBOOK_PAGE_CLOSING, 1)
def SetImageList(self, imageList):
- """
- Sets the image list for the page control. It does not take ownership
- of the image list, you must delete it yourself.
- """
+ """ Sets the image list for the page control. """
self._pages.SetImageList(imageList)
+ def AssignImageList(self, imageList):
+ """ Assigns the image list for the page control. """
+
+ self._pages.AssignImageList(imageList)
+
+
def GetImageList(self):
""" Returns the associated image list. """
# refreshing the tab container is not enough
self.SetSelection(self._pages._iActivePage)
+ if not self._pages.HasFlag(FNB_HIDE_ON_SINGLE_TAB):
+ #For Redrawing the Tabs once you remove the Hide tyle
+ self._pages._ReShow()
+
def RemovePage(self, page):
""" Deletes the specified page, without deleting the associated window. """
pass
+ def _ReShow(self):
+ """ Handles the Redraw of the tabs when the FNB_HIDE_ON_SINGLE_TAB has been removed """
+ self.Show()
+ self.GetParent()._mainSizer.Layout()
+ self.Refresh()
+
+
def OnPaint(self, event):
""" Handles the wx.EVT_PAINT event for L{PageContainer}."""
renderer = self._mgr.GetRenderer(self.GetParent().GetWindowStyleFlag())
renderer.DrawTabs(self, dc)
+ if self.HasFlag(FNB_HIDE_ON_SINGLE_TAB) and len(self._pagesInfoVec) <= 1:
+ self.Hide()
+ self.GetParent()._mainSizer.Layout()
+ self.Refresh()
+
def AddPage(self, caption, selected=True, imgindex=-1):
"""
elif self.GetParent().GetWindowStyleFlag() & FNB_ALLOW_FOREIGN_DND:
- if wx.Platform in ["__WXMSW__", "__WXGTK__"]:
+ if wx.Platform in ["__WXMSW__", "__WXGTK__", "__WXMAC__"]:
if nTabPage >= 0:
window = oldNotebook.GetPage(nTabPage)
self._ImageList = imglist
+ def AssignImageList(self, imglist):
+ """ Assigns the image list for the page control. """
+
+ self._ImageList = imglist
+
+
def GetImageList(self):
""" Returns the image list for the page control. """