wxWidgets/contrib/include/wx/fl/newbmpbtn.h
2004-01-11 16:03:19 +00:00

216 lines
6.6 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: newbmpbtn.h
// Purpose: wxNewBitmapButton header.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: ??/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __NEWBMPBTN_G__
#define __NEWBMPBTN_G__
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "newbmpbtn.h"
#endif
#include "wx/button.h"
#include "wx/string.h"
#include "wx/fl/fldefs.h"
// defaults
#define NB_DEFAULT_MARGIN 2
// button label-text alignment types
#define NB_ALIGN_TEXT_RIGHT 0
#define NB_ALIGN_TEXT_BOTTOM 1
#define NB_NO_TEXT 2
#define NB_NO_IMAGE 3
// classes declared in this header file
class WXDLLIMPEXP_FL wxNewBitmapButton;
class WXDLLIMPEXP_FL wxBorderLessBitmapButton;
/*
This is an alternative class to wxBitmapButton. It is used
in the implementation of dynamic toolbars.
*/
class wxNewBitmapButton: public wxPanel
{
DECLARE_DYNAMIC_CLASS(wxNewBitmapButton)
protected:
friend class wxNewBitmapButtonSerializer;
int mTextToLabelGap;
int mMarginX;
int mMarginY;
int mTextAlignment;
bool mIsSticky;
bool mIsFlat;
wxString mLabelText;
wxString mImageFileName;
wxBitmapType mImageFileType;
wxBitmap mDepressedBmp; // source image for rendering
// labels for particular state
wxBitmap mFocusedBmp; // may not be always present -
// only if mHasFocusedBmp is TRUE
wxBitmap* mpDepressedImg;
wxBitmap* mpPressedImg;
wxBitmap* mpDisabledImg;
wxBitmap* mpFocusedImg;
// button state variables;
bool mDragStarted;
bool mIsPressed;
bool mIsInFocus;
bool mIsToggled;
bool mHasFocusedBmp;
// type of event which is fired upon depression of this button
int mFiredEventType;
// pens for drawing decorations (borders)
wxPen mBlackPen;
wxPen mDarkPen;
wxPen mGrayPen;
wxPen mLightPen;
bool mIsCreated;
int mSizeIsSet;
protected:
// Internal function for destroying labels.
void DestroyLabels();
// Returns the label that matches the current button state.
virtual wxBitmap* GetStateLabel();
// Draws shading on the button.
virtual void DrawShade( int outerLevel,
wxDC& dc,
wxPen& upperLeftSidePen,
wxPen& lowerRightSidePen );
// Returns TRUE if the given point is in the window.
bool IsInWindow( int x, int y );
virtual void OnIdle(wxIdleEvent& event);
// (EVT_UPDATE_UI handler)
virtual void DoButtonUpdate();
public:
// Constructor.
wxNewBitmapButton( const wxBitmap& labelBitmap = wxNullBitmap,
const wxString& labelText = wxT(""),
int alignText = NB_ALIGN_TEXT_BOTTOM,
bool isFlat = TRUE,
// this is the default type of fired events
int firedEventType = wxEVT_COMMAND_MENU_SELECTED,
int marginX = NB_DEFAULT_MARGIN,
int marginY = NB_DEFAULT_MARGIN,
int textToLabelGap = 2,
bool isSticky = FALSE
);
// Use this constructor if buttons have to be persistant
wxNewBitmapButton( const wxString& bitmapFileName,
const wxBitmapType bitmapFileType = wxBITMAP_TYPE_BMP,
const wxString& labelText = wxT(""),
int alignText = NB_ALIGN_TEXT_BOTTOM,
bool isFlat = TRUE,
// this is the default type of fired events
int firedEventType = wxEVT_COMMAND_MENU_SELECTED,
int marginX = NB_DEFAULT_MARGIN,
int marginY = NB_DEFAULT_MARGIN,
int textToLabelGap = 2,
bool isSticky = FALSE
);
// Destructor.
~wxNewBitmapButton();
// This function should be called after Create. It renders the labels, having
// reloaded the button image if necessary.
virtual void Reshape();
// Sets the label and optionally label text.
virtual void SetLabel(const wxBitmap& labelBitmap, const wxString& labelText = wxT("") );
// Unhide method from parents.
virtual void SetLabel(const wxString& label)
{ wxPanel::SetLabel(label); };
// Sets the text alignment and margins.
virtual void SetAlignments( int alignText = NB_ALIGN_TEXT_BOTTOM,
int marginX = NB_DEFAULT_MARGIN,
int marginY = NB_DEFAULT_MARGIN,
int textToLabelGap = 2);
// Draws the decorations.
virtual void DrawDecorations( wxDC& dc );
// Draws the label.
virtual void DrawLabel( wxDC& dc );
// Renders the label image.
virtual void RenderLabelImage( wxBitmap*& destBmp, wxBitmap* srcBmp,
bool isEnabled = TRUE,
bool isPressed = FALSE);
// Renders label images.
virtual void RenderLabelImages();
// Renders label images.
virtual void RenderAllLabelImages();
// Enables/disables button
virtual bool Enable(bool enable);
// Depress button
virtual bool Toggle(bool enable);
// Responds to a left mouse button down event.
void OnLButtonDown( wxMouseEvent& event );
// Responds to a left mouse button up event.
void OnLButtonUp( wxMouseEvent& event );
// Responds to mouse enter to window.
void OnMouseEnter( wxMouseEvent& event );
// Responds to mouse leave from window.
void OnMouseLeave( wxMouseEvent& event );
// Responds to a size event.
void OnSize( wxSizeEvent& event );
// Responds to a paint event.
void OnPaint( wxPaintEvent& event );
// Responds to an erase background event.
void OnEraseBackground( wxEraseEvent& event );
// Responds to a kill focus event.
void OnKillFocus( wxFocusEvent& event );
DECLARE_EVENT_TABLE()
};
#endif /* __NEWBMPBTN_G__ */