Package wx :: Package lib :: Package agw :: Module buttonpanel
[frames | no frames]

Module wx.lib.agw.buttonpanel

With ButtonPanel class you have a panel with gradient coloring on it and with the possibility to place some buttons on it. Using a standard panel with normal wx.Buttons leads to an ugly result: the buttons are placed correctly on the panel - but with grey area around them. Gradient coloring is kept behind the images - this was achieved due to the PNG format and the transparency of the bitmaps.

The image are functioning like a buttons and can be caught in your code using the usual self.Bind(wx.EVT_BUTTON, self.OnButton) method.

The control is generic, and support theming (well, I tested it under Windows with the three defauls themes: grey, blue, silver and the classic look).

Usage

ButtonPanel supports 4 alignments: left, right, top, bottom, which have a different meaning and behavior wrt wx.Toolbar. The easiest thing is to try the demo to understand, but I'll try to explain how it works.

CASE 1: ButtonPanel has a main caption text

Left alignment means ButtonPanel is horizontal, with the text aligned to the left. When you shrink the demo frame, if there is not enough room for all the controls to be shown, the controls closest to the text are hidden;

Right alignment means ButtonPanel is horizontal, with the text aligned to the right. Item layout as above;

Top alignment means ButtonPanel is vertical, with the text aligned to the top. Item layout as above;

Bottom alignment means ButtonPanel is vertical, with the text aligned to the bottom. Item layout as above.

CASE 2: ButtonPanel has no main caption text In this case, left and right alignment are the same (as top and bottom are the same), but the layout strategy changes: now if there is not enough room for all the controls to be shown, the last added items are hidden ("last" means on the far right for horizontal ButtonPanels and far bottom for vertical ButtonPanels).

The following example shows a simple implementation that uses ButtonPanel inside a very simple frame:

class MyFrame(wx.Frame):

    def __init__(self, parent, id=-1, title="ButtonPanel", pos=wx.DefaultPosition,
                 size=(800, 600), style=wx.DEFAULT_FRAME_STYLE):
               
        wx.Frame.__init__(self, parent, id, title, pos, size, style)

        mainPanel = wx.Panel(self, -1)
        self.logtext = wx.TextCtrl(mainPanel, -1, "", style=wx.TE_MULTILINE)

        vSizer = wx.BoxSizer(wx.VERTICAL) 
        mainPanel.SetSizer(vSizer) 

        alignment = BP_ALIGN_RIGHT 

        titleBar = ButtonPanel(mainPanel, -1, "A Simple Test & Demo")

        btn1 = ButtonInfo(titleBar, wx.NewId(), wx.Bitmap("png4.png", wx.BITMAP_TYPE_PNG))
        titleBar.AddButton(btn1)
        self.Bind(wx.EVT_BUTTON, self.OnButton, btn1)

        btn2 = ButtonInfo(titleBar, wx.NewId(), wx.Bitmap("png3.png", wx.BITMAP_TYPE_PNG))
        titleBar.AddButton(btn2)
        self.Bind(wx.EVT_BUTTON, self.OnButton, btn2)

        btn3 = ButtonInfo(titleBar, wx.NewId(), wx.Bitmap("png2.png", wx.BITMAP_TYPE_PNG))
        titleBar.AddButton(btn3)
        self.Bind(wx.EVT_BUTTON, self.OnButton, btn3)

        btn4 = ButtonInfo(titleBar, wx.NewId(), wx.Bitmap("png1.png", wx.BITMAP_TYPE_PNG))
        titleBar.AddButton(btn4)
        self.Bind(wx.EVT_BUTTON, self.OnButton, btn4)

        vSizer.Add(titleBar, 0, wx.EXPAND)
        vSizer.Add((20, 20))
        vSizer.Add(self.logtext, 1, wx.EXPAND|wx.ALL, 5)

        titleBar.DoLayout()
        vSizer.Layout()

# our normal wxApp-derived class, as usual

app = wx.PySimpleApp()

frame = MyFrame(None)
app.SetTopWindow(frame)
frame.Show()

app.MainLoop()

License And Version:

ButtonPanel Is Freeware And Distributed Under The wxPython License.

Latest Revision: Andrea Gavana @ 15 Oct 2008, 10.00 GMT Version 0.4.


Classes
BoxSizer  
BPArt BPArt is an art provider class which does all of the drawing for ButtonPanel.
ButtonInfo  
ButtonPanel  
ButtonPanelText  
Control  
Separator  
Sizer Sizer
StatusBarTimer Timer used for deleting StatusBar long help after _DELAY seconds.

Function Summary
  BrightenColour(color, factor)
Bright the input colour by a factor.
  GrayOut(anImage)
Convert the given image (in place) to a grayed-out version, appropriate for a 'Disabled' appearance.
  MakeGray((r, g, b), factor, maskColor)
Make a pixel grayed-out.

Function Details

BrightenColour(color, factor)

Bright the input colour by a factor.

GrayOut(anImage)

Convert the given image (in place) to a grayed-out version, appropriate for a 'Disabled' appearance.

MakeGray((r, g, b), factor, maskColor)

Make a pixel grayed-out. If the pixel matches the maskColor, it won't be changed.


Generated by Epydoc 2.1.20050511.rpd on Mon Feb 16 12:54:47 2009 http://epydoc.sf.net