import wx import wx.lib.flatnotebook as fnb import random import images #---------------------------------------------------------------------- def GetMondrianData(): return \ '\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\ \x00\x00szz\xf4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x00qID\ ATX\x85\xed\xd6;\n\x800\x10E\xd1{\xc5\x8d\xb9r\x97\x16\x0b\xad$\x8a\x82:\x16\ o\xda\x84pB2\x1f\x81Fa\x8c\x9c\x08\x04Z{\xcf\xa72\xbcv\xfa\xc5\x08 \x80r\x80\ \xfc\xa2\x0e\x1c\xe4\xba\xfaX\x1d\xd0\xde]S\x07\x02\xd8>\xe1wa-`\x9fQ\xe9\ \x86\x01\x04\x10\x00\\(Dk\x1b-\x04\xdc\x1d\x07\x14\x98;\x0bS\x7f\x7f\xf9\x13\ \x04\x10@\xf9X\xbe\x00\xc9 \x14K\xc1<={\x00\x00\x00\x00IEND\xaeB`\x82' def GetMondrianBitmap(): return wx.BitmapFromImage(GetMondrianImage()) def GetMondrianImage(): import cStringIO stream = cStringIO.StringIO(GetMondrianData()) return wx.ImageFromStream(stream) def GetMondrianIcon(): icon = wx.EmptyIcon() icon.CopyFromBitmap(GetMondrianBitmap()) return icon #---------------------------------------------------------------------- MENU_EDIT_DELETE_ALL = wx.ID_HIGHEST + 1000 MENU_EDIT_ADD_PAGE = MENU_EDIT_DELETE_ALL + 1 MENU_EDIT_DELETE_PAGE = MENU_EDIT_DELETE_ALL + 2 MENU_EDIT_SET_SELECTION = MENU_EDIT_DELETE_ALL + 3 MENU_EDIT_ADVANCE_SELECTION_FWD = MENU_EDIT_DELETE_ALL + 4 MENU_EDIT_ADVANCE_SELECTION_BACK = MENU_EDIT_DELETE_ALL + 5 MENU_SET_ALL_TABS_SHAPE_ANGLE = MENU_EDIT_DELETE_ALL + 6 MENU_SHOW_IMAGES = MENU_EDIT_DELETE_ALL + 7 MENU_USE_VC71_STYLE = MENU_EDIT_DELETE_ALL + 8 MENU_USE_DEFAULT_STYLE = MENU_EDIT_DELETE_ALL + 9 MENU_USE_FANCY_STYLE = MENU_EDIT_DELETE_ALL + 10 MENU_SELECT_GRADIENT_COLOR_FROM = MENU_EDIT_DELETE_ALL + 11 MENU_SELECT_GRADIENT_COLOR_TO = MENU_EDIT_DELETE_ALL + 12 MENU_SELECT_GRADIENT_COLOR_BORDER = MENU_EDIT_DELETE_ALL + 13 MENU_SET_PAGE_IMAGE_INDEX = MENU_EDIT_DELETE_ALL + 14 MENU_HIDE_X = MENU_EDIT_DELETE_ALL + 15 MENU_HIDE_NAV_BUTTONS = MENU_EDIT_DELETE_ALL + 16 MENU_USE_MOUSE_MIDDLE_BTN = MENU_EDIT_DELETE_ALL + 17 MENU_DRAW_BORDER = MENU_EDIT_DELETE_ALL + 18 MENU_USE_BOTTOM_TABS = MENU_EDIT_DELETE_ALL + 19 MENU_ENABLE_TAB = MENU_EDIT_DELETE_ALL + 20 MENU_DISABLE_TAB = MENU_EDIT_DELETE_ALL + 21 MENU_ENABLE_DRAG_N_DROP = MENU_EDIT_DELETE_ALL + 22 MENU_DCLICK_CLOSES_TAB = MENU_EDIT_DELETE_ALL + 23 MENU_USE_VC8_STYLE = MENU_EDIT_DELETE_ALL + 24 MENU_SET_ACTIVE_TEXT_COLOR = MENU_EDIT_DELETE_ALL + 27 MENU_DRAW_TAB_X = MENU_EDIT_DELETE_ALL + 28 MENU_SET_ACTIVE_TAB_COLOR = MENU_EDIT_DELETE_ALL + 29 MENU_SET_TAB_AREA_COLOR = MENU_EDIT_DELETE_ALL + 30 MENU_SELECT_NONACTIVE_TEXT_COLOR = MENU_EDIT_DELETE_ALL + 31 MENU_GRADIENT_BACKGROUND = MENU_EDIT_DELETE_ALL + 32 MENU_COLORFUL_TABS = MENU_EDIT_DELETE_ALL + 33 class FlatNotebookDemo(wx.Frame): def __init__(self, parent, id=wx.ID_ANY, title="", pos=wx.DefaultPosition, size=(800, 600), style=wx.DEFAULT_FRAME_STYLE | wx.MAXIMIZE |wx.NO_FULL_REPAINT_ON_RESIZE): wx.Frame.__init__(self, parent, id, title, pos, size, style) self._bShowImages = False self._bVCStyle = False self._newPageCounter = 0 self._ImageList = wx.ImageList(16, 16) self._ImageList.Add(images.get_book_redBitmap()) self._ImageList.Add(images.get_book_greenBitmap()) self._ImageList.Add(images.get_book_blueBitmap()) self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP) self.statusbar.SetStatusWidths([-2, -1]) # statusbar fields statusbar_fields = [("FlatNotebook wxPython Demo, Andrea Gavana @ 02 Oct 2006"), ("Welcome To wxPython!")] for i in range(len(statusbar_fields)): self.statusbar.SetStatusText(statusbar_fields[i], i) self.SetIcon(GetMondrianIcon()) self.CreateMenuBar() self.CreateRightClickMenu() self.LayoutItems() self.Bind(fnb.EVT_FLATNOTEBOOK_PAGE_CHANGING, self.OnPageChanging) self.Bind(fnb.EVT_FLATNOTEBOOK_PAGE_CHANGED, self.OnPageChanged) self.Bind(fnb.EVT_FLATNOTEBOOK_PAGE_CLOSING, self.OnPageClosing) def CreateMenuBar(self): self._menuBar = wx.MenuBar(wx.MB_DOCKABLE) self._fileMenu = wx.Menu() item = wx.MenuItem(self._fileMenu, wx.ID_ANY, "&Close\tCtrl-Q", "Close demo window") self.Bind(wx.EVT_MENU, self.OnQuit, item) self._fileMenu.AppendItem(item) self._editMenu = wx.Menu() item = wx.MenuItem(self._editMenu, MENU_EDIT_ADD_PAGE, "New Page\tCtrl+N", "Add New Page") self.Bind(wx.EVT_MENU, self.OnAddPage, item) self._editMenu.AppendItem(item) item = wx.MenuItem(self._editMenu, MENU_EDIT_DELETE_PAGE, "Delete Page\tCtrl+F4", "Delete Page") self.Bind(wx.EVT_MENU, self.OnDeletePage, item) self._editMenu.AppendItem(item) item = wx.MenuItem(self._editMenu, MENU_EDIT_DELETE_ALL, "Delete All Pages", "Delete All Pages") self.Bind(wx.EVT_MENU, self.OnDeleteAll, item) self._editMenu.AppendItem(item) item = wx.MenuItem(self._editMenu, MENU_EDIT_SET_SELECTION, "Set Selection", "Set Selection") self.Bind(wx.EVT_MENU, self.OnSetSelection, item) self._editMenu.AppendItem(item) item = wx.MenuItem(self._editMenu, MENU_EDIT_ADVANCE_SELECTION_FWD, "Advance Selection Forward", "Advance Selection Forward") self.Bind(wx.EVT_MENU, self.OnAdvanceSelectionFwd, item) self._editMenu.AppendItem(item) item = wx.MenuItem(self._editMenu, MENU_EDIT_ADVANCE_SELECTION_BACK, "Advance Selection Backward", "Advance Selection Backward") self.Bind(wx.EVT_MENU, self.OnAdvanceSelectionBack, item) self._editMenu.AppendItem(item) item = wx.MenuItem(self._editMenu, MENU_SET_ALL_TABS_SHAPE_ANGLE, "Set an inclination of tab header borders", "Set the shape of tab header") self.Bind(wx.EVT_MENU, self.OnSetAllPagesShapeAngle, item) self._editMenu.AppendItem(item) item = wx.MenuItem(self._editMenu, MENU_SET_PAGE_IMAGE_INDEX, "Set image index of selected page", "Set image index") self.Bind(wx.EVT_MENU, self.OnSetPageImageIndex, item) self._editMenu.AppendItem(item) item = wx.MenuItem(self._editMenu, MENU_SHOW_IMAGES, "Show Images", "Show Images", wx.ITEM_CHECK) self.Bind(wx.EVT_MENU, self.OnShowImages, item) self._editMenu.AppendItem(item) styleMenu = wx.Menu() item = wx.MenuItem(styleMenu, MENU_USE_DEFAULT_STYLE, "Use Default Style", "Use VC71 Style", wx.ITEM_RADIO) self.Bind(wx.EVT_MENU, self.OnDefaultStyle, item) styleMenu.AppendItem(item) item = wx.MenuItem(styleMenu, MENU_USE_VC71_STYLE, "Use VC71 Style", "Use VC71 Style", wx.ITEM_RADIO) self.Bind(wx.EVT_MENU, self.OnVC71Style, item) styleMenu.AppendItem(item) item = wx.MenuItem(styleMenu, MENU_USE_VC8_STYLE, "Use VC8 Style", "Use VC8 Style", wx.ITEM_RADIO) self.Bind(wx.EVT_MENU, self.OnVC8Style, item) styleMenu.AppendItem(item) item = wx.MenuItem(styleMenu, MENU_USE_FANCY_STYLE, "Use Fancy Style", "Use Fancy Style", wx.ITEM_RADIO) self.Bind(wx.EVT_MENU, self.OnFancyStyle, item) styleMenu.AppendItem(item) self._editMenu.AppendMenu(wx.ID_ANY, "Tabs Style", styleMenu) item = wx.MenuItem(styleMenu, MENU_SELECT_GRADIENT_COLOR_FROM, "Select fancy tab style 'from' color", "Select fancy tab style 'from' color") self._editMenu.AppendItem(item) item = wx.MenuItem(styleMenu, MENU_SELECT_GRADIENT_COLOR_TO, "Select fancy tab style 'to' color", "Select fancy tab style 'to' color") self._editMenu.AppendItem(item) item = wx.MenuItem(styleMenu, MENU_SELECT_GRADIENT_COLOR_BORDER, "Select fancy tab style 'border' color", "Select fancy tab style 'border' color") self._editMenu.AppendItem(item) self.Bind(wx.EVT_MENU_RANGE, self.OnSelectColor, id=MENU_SELECT_GRADIENT_COLOR_FROM, id2=MENU_SELECT_GRADIENT_COLOR_BORDER) item = wx.MenuItem(self._editMenu, MENU_HIDE_NAV_BUTTONS, "Hide Navigation Buttons", "Hide Navigation Buttons", wx.ITEM_CHECK) self._editMenu.AppendItem(item) item = wx.MenuItem(self._editMenu, MENU_HIDE_X, "Hide X Button", "Hide X Button", wx.ITEM_CHECK) self._editMenu.AppendItem(item) item = wx.MenuItem(self._editMenu, MENU_USE_MOUSE_MIDDLE_BTN, "Use Mouse Middle Button as 'X' button", "Use Mouse Middle Button as 'X' button", wx.ITEM_CHECK) self._editMenu.AppendItem(item) item = wx.MenuItem(self._editMenu, MENU_USE_BOTTOM_TABS, "Use Bottoms Tabs", "Use Bottoms Tabs", wx.ITEM_CHECK) self._editMenu.AppendItem(item) self.Bind(wx.EVT_MENU_RANGE, self.OnStyle, id=MENU_HIDE_X, id2=MENU_USE_BOTTOM_TABS) item = wx.MenuItem(self._editMenu, MENU_ENABLE_TAB, "Enable Tab", "Enable Tab") self.Bind(wx.EVT_MENU, self.OnEnableTab, item) self._editMenu.AppendItem(item) item = wx.MenuItem(self._editMenu, MENU_DISABLE_TAB, "Disable Tab", "Disable Tab") self.Bind(wx.EVT_MENU, self.OnDisableTab, item) self._editMenu.AppendItem(item) item = wx.MenuItem(self._editMenu, MENU_ENABLE_DRAG_N_DROP, "Enable Drag And Drop of Tabs", "Enable Drag And Drop of Tabs", wx.ITEM_CHECK) self.Bind(wx.EVT_MENU, self.OnEnableDrag, item) self._editMenu.AppendItem(item) item.Check(True) item = wx.MenuItem(self._editMenu, MENU_DRAW_BORDER, "Draw Border around tab area", "Draw Border around tab area", wx.ITEM_CHECK) self.Bind(wx.EVT_MENU, self.OnStyle, item) self._editMenu.AppendItem(item) item.Check(True) item = wx.MenuItem(self._editMenu, MENU_DRAW_TAB_X, "Draw X button On Active Tab", "Draw X button On Active Tab", wx.ITEM_CHECK) self.Bind(wx.EVT_MENU, self.OnDrawTabX, item) self._editMenu.AppendItem(item) item = wx.MenuItem(styleMenu, MENU_SET_ACTIVE_TAB_COLOR, "Select Active Tab Color", "Select Active Tab Color") self.Bind(wx.EVT_MENU, self.OnSelectColor, item) self._editMenu.AppendItem(item) item = wx.MenuItem(styleMenu, MENU_SET_TAB_AREA_COLOR, "Select Tab Area Color", "Select Tab Area Color") self.Bind(wx.EVT_MENU, self.OnSelectColor, item) self._editMenu.AppendItem(item) item = wx.MenuItem(styleMenu, MENU_SET_ACTIVE_TEXT_COLOR, "Select active tab text color", "Select active tab text color") self.Bind(wx.EVT_MENU, self.OnSelectColor, item) self._editMenu.AppendItem(item) item = wx.MenuItem(styleMenu, MENU_SELECT_NONACTIVE_TEXT_COLOR, "Select NON-active tab text color", "Select NON-active tab text color") self.Bind(wx.EVT_MENU, self.OnSelectColor, item) self._editMenu.AppendItem(item) item = wx.MenuItem(self._editMenu, MENU_DCLICK_CLOSES_TAB, "Mouse double click closes tab", "Mouse double click closes tab", wx.ITEM_CHECK) self.Bind(wx.EVT_MENU, self.OnDClickCloseTab, item) self._editMenu.AppendItem(item) item.Check(False) item = wx.MenuItem(self._editMenu, MENU_GRADIENT_BACKGROUND, "Use Gradient Coloring for tab area", "Use Gradient Coloring for tab area", wx.ITEM_CHECK) self.Bind(wx.EVT_MENU, self.OnGradientBack, item) self._editMenu.AppendItem(item) item.Check(False) item = wx.MenuItem(self._editMenu, MENU_COLORFUL_TABS, "Colorful tabs", "Colorful tabs", wx.ITEM_CHECK) self.Bind(wx.EVT_MENU, self.OnColorfulTabs, item) self._editMenu.AppendItem(item) item.Check(False) help_menu = wx.Menu() item = wx.MenuItem(help_menu, wx.ID_ANY, "About...", "Shows The About Dialog") self.Bind(wx.EVT_MENU, self.OnAbout, item) help_menu.AppendItem(item) self._menuBar.Append(self._fileMenu, "&File") self._menuBar.Append(self._editMenu, "&Edit") self._menuBar.Append(help_menu, "&Help") self.SetMenuBar(self._menuBar) def CreateRightClickMenu(self): self._rmenu = wx.Menu() item = wx.MenuItem(self._rmenu, MENU_EDIT_DELETE_PAGE, "Close Tab\tCtrl+F4", "Close Tab") self._rmenu.AppendItem(item) def LayoutItems(self): mainSizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(mainSizer) bookStyle = fnb.FNB_TABS_BORDER_SIMPLE self.book = fnb.StyledNotebook(self, wx.ID_ANY, style=bookStyle) self.secondBook = fnb.StyledNotebook(self, wx.ID_ANY, style=bookStyle) # Set right click menu to the notebook self.book.SetRightClickMenu(self._rmenu) # Set the image list self.book.SetImageList(self._ImageList) mainSizer.Add(self.book, 6, wx.EXPAND) # Add spacer between the books spacer = wx.Panel(self, -1) spacer.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_3DFACE)) mainSizer.Add(spacer, 0, wx.ALL | wx.EXPAND) mainSizer.Add(self.secondBook, 2, wx.EXPAND) # Add some pages to the second notebook self.Freeze() text = wx.TextCtrl(self.secondBook, -1, "Second Book Page 1", style=wx.TE_MULTILINE) self.secondBook.AddPage(text, "Second Book Page 1") text = wx.TextCtrl(self.secondBook, -1, "Second Book Page 2", style=wx.TE_MULTILINE) self.secondBook.AddPage(text, "Second Book Page 2") self.Thaw() self.Centre() mainSizer.Layout() self.SendSizeEvent() def OnStyle(self, event): style = self.book.GetWindowStyleFlag() eventid = event.GetId() if eventid == MENU_HIDE_NAV_BUTTONS: if event.IsChecked(): # Hide the navigation buttons style |= fnb.FNB_NO_NAV_BUTTONS else: if style & fnb.FNB_NO_NAV_BUTTONS: style ^= fnb.FNB_NO_NAV_BUTTONS self.book.SetWindowStyleFlag(style) elif eventid == MENU_HIDE_X: if event.IsChecked(): # Hide the X button style |= fnb.FNB_NO_X_BUTTON else: if style & fnb.FNB_NO_X_BUTTON: style ^= fnb.FNB_NO_X_BUTTON self.book.SetWindowStyleFlag(style) elif eventid == MENU_DRAW_BORDER: if event.IsChecked(): style |= fnb.FNB_TABS_BORDER_SIMPLE else: if style & fnb.FNB_TABS_BORDER_SIMPLE: style ^= fnb.FNB_TABS_BORDER_SIMPLE self.book.SetWindowStyleFlag(style) elif eventid == MENU_USE_MOUSE_MIDDLE_BTN: if event.IsChecked(): style |= fnb.FNB_MOUSE_MIDDLE_CLOSES_TABS else: if style & fnb.FNB_MOUSE_MIDDLE_CLOSES_TABS: style ^= fnb.FNB_MOUSE_MIDDLE_CLOSES_TABS self.book.SetWindowStyleFlag(style) elif eventid == MENU_USE_BOTTOM_TABS: if event.IsChecked(): style |= fnb.FNB_BOTTOM else: if style & fnb.FNB_BOTTOM: style ^= fnb.FNB_BOTTOM self.book.SetWindowStyleFlag(style) self.book.Refresh() def OnQuit(self, event): self.Destroy() def OnDeleteAll(self, event): self.book.DeleteAllPages() def OnShowImages(self, event): self._bShowImages = event.IsChecked() def OnVC71Style(self, event): style = self.book.GetWindowStyleFlag() # remove old tabs style mirror = ~(fnb.FNB_VC71 | fnb.FNB_VC8 | fnb.FNB_FANCY_TABS) style &= mirror style |= fnb.FNB_VC71 self.book.SetWindowStyleFlag(style) def OnVC8Style(self, event): style = self.book.GetWindowStyleFlag() # remove old tabs style mirror = ~(fnb.FNB_VC71 | fnb.FNB_VC8 | fnb.FNB_FANCY_TABS) style &= mirror # set new style style |= fnb.FNB_VC8 self.book.SetWindowStyleFlag(style) def OnDefaultStyle(self, event): style = self.book.GetWindowStyleFlag() # remove old tabs style mirror = ~(fnb.FNB_VC71 | fnb.FNB_VC8 | fnb.FNB_FANCY_TABS) style &= mirror self.book.SetWindowStyleFlag(style) def OnFancyStyle(self, event): style = self.book.GetWindowStyleFlag() # remove old tabs style mirror = ~(fnb.FNB_VC71 | fnb.FNB_VC8 | fnb.FNB_FANCY_TABS) style &= mirror style |= fnb.FNB_FANCY_TABS self.book.SetWindowStyleFlag(style) def OnSelectColor(self, event): eventid = event.GetId() # Open a color dialog data = wx.ColourData() dlg = wx.ColourDialog(self, data) if dlg.ShowModal() == wx.ID_OK: if eventid == MENU_SELECT_GRADIENT_COLOR_BORDER: self.book.SetGradientColorBorder(dlg.GetColourData().GetColour()) elif eventid == MENU_SELECT_GRADIENT_COLOR_FROM: self.book.SetGradientColorFrom(dlg.GetColourData().GetColour()) elif eventid == MENU_SELECT_GRADIENT_COLOR_TO: self.book.SetGradientColorTo(dlg.GetColourData().GetColour()) elif eventid == MENU_SET_ACTIVE_TEXT_COLOR: self.book.SetActiveTabTextColour(dlg.GetColourData().GetColour()) elif eventid == MENU_SELECT_NONACTIVE_TEXT_COLOR: self.book.SetNonActiveTabTextColour(dlg.GetColourData().GetColour()) elif eventid == MENU_SET_ACTIVE_TAB_COLOR: self.book.SetActiveTabColour(dlg.GetColourData().GetColour()) elif eventid == MENU_SET_TAB_AREA_COLOR: self.book.SetTabAreaColour(dlg.GetColourData().GetColour()) self.book.Refresh() def OnAddPage(self, event): caption = "New Page Added #" + str(self._newPageCounter) self.Freeze() image = -1 if self._bShowImages: image = random.randint(0, self._ImageList.GetImageCount()-1) self.book.AddPage(self.CreatePage(caption), caption, True, image) self.book.SetSelection(self.book.GetPageCount()-1) self.Thaw() self._newPageCounter = self._newPageCounter + 1 def CreatePage(self, caption): return wx.TextCtrl(self.book, -1, caption, wx.DefaultPosition, self.book.GetPageBestSize(), wx.TE_MULTILINE) def OnDeletePage(self, event): self.book.DeletePage(self.book.GetSelection()) def OnSetSelection(self, event): dlg = wx.TextEntryDialog(self, "Enter Tab Number to select:", "Set Selection") if dlg.ShowModal() == wx.ID_OK: val = dlg.GetValue() self.book.SetSelection(int(val)) def OnEnableTab(self, event): dlg = wx.TextEntryDialog(self, "Enter Tab Number to enable:", "Enable Tab") if dlg.ShowModal() == wx.ID_OK: val = dlg.GetValue() self.book.Enable(int(val)) def OnDisableTab(self, event): dlg = wx.TextEntryDialog(self, "Enter Tab Number to disable:", "Disable Tab") if dlg.ShowModal() == wx.ID_OK: val = dlg.GetValue() self.book.Enable(int(val), False) def OnEnableDrag(self, event): style = self.book.GetWindowStyleFlag() if event.IsChecked(): if style & fnb.FNB_NODRAG: style ^= fnb.FNB_NODRAG else: style |= fnb.FNB_NODRAG self.book.SetWindowStyleFlag(style) def OnSetAllPagesShapeAngle(self, event): dlg = wx.TextEntryDialog(self, "Enter an inclination of header borders (0-45):", "Set Angle") if dlg.ShowModal() == wx.ID_OK: val = dlg.GetValue() self.book.SetAllPagesShapeAngle(int(val)) def OnSetPageImageIndex(self, event): dlg = wx.TextEntryDialog(self, "Enter an image index (0-%i):"%(self.book.GetImageList().GetImageCount()-1), "Set Image Index") if dlg.ShowModal() == wx.ID_OK: val = dlg.GetValue() self.book.SetPageImageIndex(self.book.GetSelection(), int(val)) def OnAdvanceSelectionFwd(self, event): self.book.AdvanceSelection(True) def OnAdvanceSelectionBack(self, event): self.book.AdvanceSelection(False) def OnPageChanging(self, event): print "Page Changing From", event.GetOldSelection(), "To", event.GetSelection() event.Skip() def OnPageChanged(self, event): print "Page Changed To", event.GetSelection() event.Skip() def OnPageClosing(self, event): print "Page Closing, Selection:", event.GetSelection() event.Skip() def OnDrawTabX(self, event): style = self.book.GetWindowStyleFlag() if event.IsChecked(): style |= fnb.FNB_X_ON_TAB else: if style & fnb.FNB_X_ON_TAB: style ^= fnb.FNB_X_ON_TAB self.book.SetWindowStyleFlag(style) def OnDClickCloseTab(self, event): style = self.book.GetWindowStyleFlag() if event.IsChecked(): style |= fnb.FNB_DCLICK_CLOSES_TABS else: style &= ~(fnb.FNB_DCLICK_CLOSES_TABS) self.book.SetWindowStyleFlag(style) def OnGradientBack(self, event): style = self.book.GetWindowStyleFlag() if event.IsChecked(): style |= fnb.FNB_BACKGROUND_GRADIENT else: style &= ~(fnb.FNB_BACKGROUND_GRADIENT) self.book.SetWindowStyleFlag(style) self.book.Refresh() def OnColorfulTabs(self, event): style = self.book.GetWindowStyleFlag() if event.IsChecked(): style |= fnb.FNB_COLORFUL_TABS else: style &= ~(fnb.FNB_COLORFUL_TABS) self.book.SetWindowStyleFlag(style) self.book.Refresh() def OnAbout(self, event): msg = "This Is The About Dialog Of The FlatNotebook Demo.\n\n" + \ "Author: Andrea Gavana @ 02 Oct 2006\n\n" + \ "Please Report Any Bug/Requests Of Improvements\n" + \ "To Me At The Following Adresses:\n\n" + \ "andrea.gavana@gmail.com\n" + "gavana@kpo.kz\n\n" + \ "Based On Eran C++ Implementation (wxWidgets Forum).\n\n" + \ "Welcome To wxPython " + wx.VERSION_STRING + "!!" dlg = wx.MessageDialog(self, msg, "FlatNotebook wxPython Demo", wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy() #--------------------------------------------------------------------------- class TestPanel(wx.Panel): def __init__(self, parent, log): self.log = log wx.Panel.__init__(self, parent, -1) b = wx.Button(self, -1, " Test ButtonPanel ", (50,50)) self.Bind(wx.EVT_BUTTON, self.OnButton, b) def OnButton(self, evt): self.win = FlatNotebookDemo(self, title="FlatNotebook Demo") self.win.Show(True) #---------------------------------------------------------------------- def runTest(frame, nb, log): win = TestPanel(nb, log) return win #---------------------------------------------------------------------- overview = """