FlatNotebook
is a full, generic and owner-drawn implementation of Notebook
.
FlatNotebook
is a full implementation of the Notebook
, and designed to be
a drop-in replacement for Notebook
. The API functions are similar so one can
expect the function to behave in the same way.
Some features:
The buttons are highlighted a la Firefox style;
The scrolling is done for bulks of tabs (so, the scrolling is faster and better);
The buttons area is never overdrawn by tabs (unlike many other implementations I saw);
It is a generic control;
Currently there are 6 different styles - VC8, VC 71, Standard, Fancy, Firefox 2 and Ribbon;
Mouse middle click can be used to close tabs;
A function to add right click menu for tabs (simple as SetRightClickMenu
);
All styles has bottom style as well (they can be drawn in the bottom of screen);
An option to hide ‘X’ button or navigation buttons (separately);
Gradient colouring of the selected tabs and border;
Support for drag ‘n’ drop of tabs, both in the same notebook or to another notebook;
Possibility to have closing button on the active tab directly;
Support for disabled tabs;
Colours for active/inactive tabs, and captions;
Background of tab area can be painted in gradient (VC8 style only);
Colourful tabs - a random gentle colour is generated for each new tab (very cool, VC8 style only);
Support for showing pages in “column/row mode”, which means that all the pages will be shown in “tile” mode while the tabs are hidden;
Possibility to add a custom panel to show a logo or HTML documentation or
whatever you like when there are no pages left in FlatNotebook
;
Try setting the tab area colour for the Ribbon Style.
And much more.
Usage example:
import wx
import wx.lib.agw.flatnotebook as fnb
class MyFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init(self, parent, -1, "FlatNotebook Demo")
panel = wx.Panel(self)
notebook = fnb.FlatNotebook(panel, -1)
for i in range(3):
caption = "Page %d"%(i+1)
notebook.AddPage(self.CreatePage(notebook, caption), caption)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(notebook, 1, wx.ALL | wx.EXPAND, 5)
panel.SetSizer(sizer)
def CreatePage(self, notebook, caption):
'''
Creates a simple :class:`Panel` containing a :class:`TextCtrl`.
:param `notebook`: an instance of `FlatNotebook`;
:param `caption`: a simple label.
'''
p = wx.Panel(notebook)
wx.StaticText(p, -1, caption, (20,20))
wx.TextCtrl(p, -1, "", (20,40), (150,-1))
return p
# our normal wxApp-derived class, as usual
app = wx.App(0)
frame = MyFrame(None)
app.SetTopWindow(frame)
frame.Show()
app.MainLoop()
This class supports the following window styles:
Window Styles |
Hex Value |
Description |
---|---|---|
|
0x1 |
Use Visual Studio 2003 (VC7.1) style for tabs. |
|
0x2 |
Use fancy style - square tabs filled with gradient colouring. |
|
0x4 |
Draw thin border around the page. |
|
0x8 |
Do not display the ‘X’ button. |
|
0x10 |
Do not display the right/left arrows. |
|
0x20 |
Use the mouse middle button for cloing tabs. |
|
0x40 |
Place tabs at bottom - the default is to place them at top. |
|
0x80 |
Disable dragging of tabs. |
|
0x100 |
Use Visual Studio 2005 (VC8) style for tabs. |
|
0x200 |
Place ‘X’ close button on the active tab. |
|
0x400 |
Use gradients to paint the tabs background. |
|
0x800 |
Use colourful tabs (VC8 style only). |
|
0x1000 |
Style to close tab using double click. |
|
0x2000 |
Use Smart Tabbing, like |
|
0x4000 |
Use a dropdown menu on the left in place of the arrows. |
|
0x8000 |
Allows drag ‘n’ drop operations between different |
|
0x10000 |
Hides the Page Container when there is one or fewer tabs. |
|
0x10020 |
|
|
0x20000 |
Use Firefox 2 style for tabs. |
|
0x40000 |
Does not allow tabs to have focus. |
|
0x80000 |
Use the Ribbon Tabs style |
|
0x100000 |
Hides the Page Container allowing only keyboard navigation |
|
0x200000 |
Hides the navigation left/right arrows if all tabs fit |
This class processes the following events:
Event Name |
Description |
---|---|
|
Notify client objects when the active page in |
|
Notify client objects when the active page in |
|
Notify client objects when a page in |
|
Notify client objects when a page in |
|
Notify client objects when a pop-up menu should appear next to a tab. |
|
Notify client objects when a tab has been dropped and re-arranged (on the same notebook) |
|
Notify client objects when a tab has been dropped and re-arranged (from a foreign notebook) |
FlatNotebook
is distributed under the wxPython license.
Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT
Version 3.2
Brighten/darken input colour by percent and adjust alpha channel if needed. |
|
Draws a |
|
Convert the input colour into a valid |
|
Brighten the input colour by a percentage. |
|
Draws a gradient coloured box from startColour to endColour. |
|
Creates a random colour. |
The |
|
This class is more compatible with the |
|
This event will be sent when a |
|
This events will be sent when a |
|
Stores all the information to allow drag and drop between different |
|
Give some custom UI feedback during the drag and drop operation in this |
|
Class used to handle the |
|
Parent class for the 6 renderers defined: Standard, VC71, Fancy, Firefox 2, |
|
This class handles the drawing of tabs using the standard renderer. |
|
This class handles the drawing of tabs using the Fancy renderer. |
|
This class handles the drawing of tabs using the Firefox 2 renderer. |
|
This class represents a manager that handles all the 6 renderers defined |
|
This class handles the drawing of tabs using the Ribbon Tabs renderer. |
|
This class handles the drawing of tabs using the VC71 renderer. |
|
This class handles the drawing of tabs using the VC8 renderer. |
|
This class acts as a container for the pages you add to |
|
This class holds all the information (caption, image, etc…) belonging to a |
|
This class is used to create a modal dialog that enables Smart Tabbing, |
AdjustColour
(colour, percent, alpha=wx.ALPHA_OPAQUE)¶Brighten/darken input colour by percent and adjust alpha channel if needed.
colour – colour object to adjust, an instance of wx.Colour
;
percent – percent to adjust +
(brighten) or -
(darken);
alpha – amount to adjust the alpha channel.
The modified colour.
DrawButton
(dc, rect, focus, upperTabs)¶Draws a FlatNotebook
tab.
dc – an instance of wx.DC
;
rect – the tab’s client rectangle;
focus – True
if the tab has focus, False
otherwise;
upperTabs – True
if the tabs are at the top, False
if they are
at the bottom.
FormatColour
(colour)¶Convert the input colour into a valid wx.Colour
instance, using whatever typemap
accepted by wxWidgets/wxPython.
LightColour
(colour, percent)¶Brighten the input colour by a percentage.
colour – a valid wx.Colour
instance;
percent – the percentage by which the input colour should be brightened.
PaintStraightGradientBox
(dc, rect, startColour, endColour, vertical=True)¶Draws a gradient coloured box from startColour to endColour.
dc – an instance of wx.DC
;
rect – the rectangle to fill with the gradient shading;
startColour – the first colour in the gradient shading;
endColour – the last colour in the gradient shading;
vertical – True
if the gradient shading is north to south, False
if it is east to west.
RandomColour
()¶Creates a random colour.