phoenix_title wx.lib.agw.flatnotebook

FlatNotebook is a full, generic and owner-drawn implementation of Notebook.

Description

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

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()

Window Styles

This class supports the following window styles:

Window Styles

Hex Value

Description

FNB_VC71

0x1

Use Visual Studio 2003 (VC7.1) style for tabs.

FNB_FANCY_TABS

0x2

Use fancy style - square tabs filled with gradient colouring.

FNB_TABS_BORDER_SIMPLE

0x4

Draw thin border around the page.

FNB_NO_X_BUTTON

0x8

Do not display the ‘X’ button.

FNB_NO_NAV_BUTTONS

0x10

Do not display the right/left arrows.

FNB_MOUSE_MIDDLE_CLOSES_TABS

0x20

Use the mouse middle button for cloing tabs.

FNB_BOTTOM

0x40

Place tabs at bottom - the default is to place them at top.

FNB_NODRAG

0x80

Disable dragging of tabs.

FNB_VC8

0x100

Use Visual Studio 2005 (VC8) style for tabs.

FNB_X_ON_TAB

0x200

Place ‘X’ close button on the active tab.

FNB_BACKGROUND_GRADIENT

0x400

Use gradients to paint the tabs background.

FNB_COLOURFUL_TABS

0x800

Use colourful tabs (VC8 style only).

FNB_DCLICK_CLOSES_TABS

0x1000

Style to close tab using double click.

FNB_SMART_TABS

0x2000

Use Smart Tabbing, like Alt + Tab on Windows.

FNB_DROPDOWN_TABS_LIST

0x4000

Use a dropdown menu on the left in place of the arrows.

FNB_ALLOW_FOREIGN_DND

0x8000

Allows drag ‘n’ drop operations between different FlatNotebook.

FNB_HIDE_ON_SINGLE_TAB

0x10000

Hides the Page Container when there is one or fewer tabs.

FNB_DEFAULT_STYLE

0x10020

FlatNotebook default style.

FNB_FF2

0x20000

Use Firefox 2 style for tabs.

FNB_NO_TAB_FOCUS

0x40000

Does not allow tabs to have focus.

FNB_RIBBON_TABS

0x80000

Use the Ribbon Tabs style

FNB_HIDE_TABS

0x100000

Hides the Page Container allowing only keyboard navigation

FNB_NAV_BUTTONS_WHEN_NEEDED

0x200000

Hides the navigation left/right arrows if all tabs fit

Events Processing

This class processes the following events:

Event Name

Description

EVT_FLATNOTEBOOK_PAGE_CHANGED

Notify client objects when the active page in FlatNotebook has changed.

EVT_FLATNOTEBOOK_PAGE_CHANGING

Notify client objects when the active page in FlatNotebook is about to change.

EVT_FLATNOTEBOOK_PAGE_CLOSED

Notify client objects when a page in FlatNotebook has been closed.

EVT_FLATNOTEBOOK_PAGE_CLOSING

Notify client objects when a page in FlatNotebook is closing.

EVT_FLATNOTEBOOK_PAGE_CONTEXT_MENU

Notify client objects when a pop-up menu should appear next to a tab.

EVT_FLATNOTEBOOK_PAGE_DROPPED

Notify client objects when a tab has been dropped and re-arranged (on the same notebook)

EVT_FLATNOTEBOOK_PAGE_DROPPED_FOREIGN

Notify client objects when a tab has been dropped and re-arranged (from a foreign notebook)

License And Version

FlatNotebook is distributed under the wxPython license.

Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT

Version 3.2

function_summary Functions Summary

AdjustColour

Brighten/darken input colour by percent and adjust alpha channel if needed.

DrawButton

Draws a FlatNotebook tab.

FormatColour

Convert the input colour into a valid wx.Colour instance, using whatever typemap

LightColour

Brighten the input colour by a percentage.

PaintStraightGradientBox

Draws a gradient coloured box from startColour to endColour.

RandomColour

Creates a random colour.


class_summary Classes Summary

FlatNotebook

The FlatNotebook is a full implementation of the Notebook, and designed to be

FlatNotebookCompatible

This class is more compatible with the Notebook API, especially regarding

FlatNotebookDragEvent

This event will be sent when a EVT_FLATNOTEBOOK_PAGE_DRAGGED_FOREIGN is

FlatNotebookEvent

This events will be sent when a EVT_FLATNOTEBOOK_PAGE_CHANGED,

FNBDragInfo

Stores all the information to allow drag and drop between different

FNBDropSource

Give some custom UI feedback during the drag and drop operation in this

FNBDropTarget

Class used to handle the FlatNotebook.OnDropTarget() method when dragging and

FNBRenderer

Parent class for the 6 renderers defined: Standard, VC71, Fancy, Firefox 2,

FNBRendererDefault

This class handles the drawing of tabs using the standard renderer.

FNBRendererFancy

This class handles the drawing of tabs using the Fancy renderer.

FNBRendererFirefox2

This class handles the drawing of tabs using the Firefox 2 renderer.

FNBRendererMgr

This class represents a manager that handles all the 6 renderers defined

FNBRendererRibbonTabs

This class handles the drawing of tabs using the Ribbon Tabs renderer.

FNBRendererVC71

This class handles the drawing of tabs using the VC71 renderer.

FNBRendererVC8

This class handles the drawing of tabs using the VC8 renderer.

PageContainer

This class acts as a container for the pages you add to FlatNotebook.

PageInfo

This class holds all the information (caption, image, etc…) belonging to a

TabNavigatorWindow

This class is used to create a modal dialog that enables Smart Tabbing,


Functions



AdjustColour(colour, percent, alpha=wx.ALPHA_OPAQUE)

Brighten/darken input colour by percent and adjust alpha channel if needed.

Parameters
  • colour – colour object to adjust, an instance of wx.Colour;

  • percent – percent to adjust + (brighten) or - (darken);

  • alpha – amount to adjust the alpha channel.

Returns

The modified colour.



DrawButton(dc, rect, focus, upperTabs)

Draws a FlatNotebook tab.

Parameters
  • dc – an instance of wx.DC;

  • rect – the tab’s client rectangle;

  • focusTrue if the tab has focus, False otherwise;

  • upperTabsTrue 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.

Parameters

colour – can be an instance of wx.Colour, a 3 or 4 integer tuple, a hex string, a string representing the colour name or None.

Returns

a valid instance of wx.Colour or None if the input colour was None in the first place.



LightColour(colour, percent)

Brighten the input colour by a percentage.

Parameters
  • 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.

Parameters
  • 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;

  • verticalTrue if the gradient shading is north to south, False if it is east to west.



RandomColour()

Creates a random colour.