Extract "Close" button creation from wxInfoBarGeneric into new function.
Such buttons may be needed in other places and it's not obvious to create them, so add a new public wxBitmapButton::NewCloseButton() method to allow creating them easily. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72474 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -547,6 +547,7 @@ All (GUI):
|
|||||||
- Add expand/collapse button to wxRibbonBar (rakeshthp).
|
- Add expand/collapse button to wxRibbonBar (rakeshthp).
|
||||||
- Fix item data access in wxDataViewListCtrl (Kry).
|
- Fix item data access in wxDataViewListCtrl (Kry).
|
||||||
- Fix problem with floating maximized AUI panes (Laurent Poujoulat).
|
- Fix problem with floating maximized AUI panes (Laurent Poujoulat).
|
||||||
|
- Add wxBitmapButton::NewCloseButton().
|
||||||
|
|
||||||
wxGTK:
|
wxGTK:
|
||||||
|
|
||||||
|
@@ -25,6 +25,8 @@
|
|||||||
#define wxHAS_BUTTON_BITMAP
|
#define wxHAS_BUTTON_BITMAP
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
class WXDLLIMPEXP_FWD_CORE wxBitmapButton;
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxBitmapButton: a button which shows bitmaps instead of the usual string.
|
// wxBitmapButton: a button which shows bitmaps instead of the usual string.
|
||||||
// It has different bitmaps for different states (focused/disabled/pressed)
|
// It has different bitmaps for different states (focused/disabled/pressed)
|
||||||
@@ -64,6 +66,12 @@ public:
|
|||||||
validator, name);
|
validator, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Special creation function for a standard "Close" bitmap. It allows to
|
||||||
|
// simply create a close button with the image appropriate for the common
|
||||||
|
// platform.
|
||||||
|
static wxBitmapButton* NewCloseButton(wxWindow* parent, wxWindowID winid);
|
||||||
|
|
||||||
|
|
||||||
// set/get the margins around the button
|
// set/get the margins around the button
|
||||||
virtual void SetMargins(int x, int y)
|
virtual void SetMargins(int x, int y)
|
||||||
{
|
{
|
||||||
|
@@ -99,5 +99,21 @@ public:
|
|||||||
long style = wxBU_AUTODRAW,
|
long style = wxBU_AUTODRAW,
|
||||||
const wxValidator& validator = wxDefaultValidator,
|
const wxValidator& validator = wxDefaultValidator,
|
||||||
const wxString& name = wxButtonNameStr);
|
const wxString& name = wxButtonNameStr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Helper function creating a standard-looking "Close" button.
|
||||||
|
|
||||||
|
To get the best results, platform-specific code may need to be used to
|
||||||
|
create a small, title bar-like "Close" button. This function is
|
||||||
|
provided to avoid the need to test for the current platform and creates
|
||||||
|
the button with as native look as possible.
|
||||||
|
|
||||||
|
@param parent The button parent window, must be non-@NULL.
|
||||||
|
@param winid The identifier for the new button.
|
||||||
|
@return The new button.
|
||||||
|
|
||||||
|
@since 2.9.5
|
||||||
|
*/
|
||||||
|
static wxBitmapButton* NewCloseButton(wxWindow* parent, wxWindowID winid);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -26,6 +26,9 @@
|
|||||||
#include "wx/image.h"
|
#include "wx/image.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "wx/artprov.h"
|
||||||
|
#include "wx/renderer.h"
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// XTI
|
// XTI
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -90,4 +93,67 @@ bitmap "focus" ,
|
|||||||
bitmap "disabled" ,
|
bitmap "disabled" ,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
|
||||||
|
|
||||||
|
wxBitmap
|
||||||
|
GetCloseButtonBitmap(wxWindow *win,
|
||||||
|
const wxSize& size,
|
||||||
|
const wxColour& colBg,
|
||||||
|
int flags = 0)
|
||||||
|
{
|
||||||
|
wxBitmap bmp(size);
|
||||||
|
wxMemoryDC dc(bmp);
|
||||||
|
dc.SetBackground(colBg);
|
||||||
|
dc.Clear();
|
||||||
|
wxRendererNative::Get().
|
||||||
|
DrawTitleBarBitmap(win, dc, size, wxTITLEBAR_BUTTON_CLOSE, flags);
|
||||||
|
return bmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
|
||||||
|
|
||||||
|
} // anonymous namespace
|
||||||
|
|
||||||
|
/* static */
|
||||||
|
wxBitmapButton*
|
||||||
|
wxBitmapButtonBase::NewCloseButton(wxWindow* parent, wxWindowID winid)
|
||||||
|
{
|
||||||
|
wxCHECK_MSG( parent, NULL, wxS("Must have a valid parent") );
|
||||||
|
|
||||||
|
const wxColour colBg = parent->GetBackgroundColour();
|
||||||
|
|
||||||
|
#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
|
||||||
|
const wxSize sizeBmp = wxArtProvider::GetSizeHint(wxART_BUTTON);
|
||||||
|
wxBitmap bmp = GetCloseButtonBitmap(parent, sizeBmp, colBg);
|
||||||
|
#else // !wxHAS_DRAW_TITLE_BAR_BITMAP
|
||||||
|
wxBitmap bmp = wxArtProvider::GetBitmap(wxART_CLOSE, wxART_BUTTON);
|
||||||
|
#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
|
||||||
|
|
||||||
|
wxBitmapButton* const button = new wxBitmapButton
|
||||||
|
(
|
||||||
|
parent,
|
||||||
|
winid,
|
||||||
|
bmp,
|
||||||
|
wxDefaultPosition,
|
||||||
|
wxDefaultSize,
|
||||||
|
wxBORDER_NONE
|
||||||
|
);
|
||||||
|
|
||||||
|
#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
|
||||||
|
button->SetBitmapPressed(
|
||||||
|
GetCloseButtonBitmap(parent, sizeBmp, colBg, wxCONTROL_PRESSED));
|
||||||
|
|
||||||
|
button->SetBitmapCurrent(
|
||||||
|
GetCloseButtonBitmap(parent, sizeBmp, colBg, wxCONTROL_CURRENT));
|
||||||
|
#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
|
||||||
|
|
||||||
|
// The button should blend with its parent background.
|
||||||
|
button->SetBackgroundColour(colBg);
|
||||||
|
|
||||||
|
return button;
|
||||||
|
}
|
||||||
|
|
||||||
#endif // wxUSE_BMPBUTTON
|
#endif // wxUSE_BMPBUTTON
|
||||||
|
@@ -38,41 +38,12 @@
|
|||||||
#endif // WX_PRECOMP
|
#endif // WX_PRECOMP
|
||||||
|
|
||||||
#include "wx/artprov.h"
|
#include "wx/artprov.h"
|
||||||
#include "wx/renderer.h"
|
|
||||||
#include "wx/scopeguard.h"
|
#include "wx/scopeguard.h"
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(wxInfoBarGeneric, wxInfoBarBase)
|
BEGIN_EVENT_TABLE(wxInfoBarGeneric, wxInfoBarBase)
|
||||||
EVT_BUTTON(wxID_ANY, wxInfoBarGeneric::OnButton)
|
EVT_BUTTON(wxID_ANY, wxInfoBarGeneric::OnButton)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
// local helpers
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
|
|
||||||
#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
|
|
||||||
|
|
||||||
wxBitmap
|
|
||||||
GetCloseButtonBitmap(wxWindow *win,
|
|
||||||
const wxSize& size,
|
|
||||||
const wxColour& colBg,
|
|
||||||
int flags = 0)
|
|
||||||
{
|
|
||||||
wxBitmap bmp(size);
|
|
||||||
wxMemoryDC dc(bmp);
|
|
||||||
dc.SetBackground(colBg);
|
|
||||||
dc.Clear();
|
|
||||||
wxRendererNative::Get().
|
|
||||||
DrawTitleBarBitmap(win, dc, size, wxTITLEBAR_BUTTON_CLOSE, flags);
|
|
||||||
return bmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
|
|
||||||
|
|
||||||
} // anonymous namespace
|
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// implementation
|
// implementation
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
@@ -111,31 +82,7 @@ bool wxInfoBarGeneric::Create(wxWindow *parent, wxWindowID winid)
|
|||||||
|
|
||||||
m_text = new wxStaticText(this, wxID_ANY, "");
|
m_text = new wxStaticText(this, wxID_ANY, "");
|
||||||
|
|
||||||
#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
|
m_button = wxBitmapButton::NewCloseButton(parent, wxID_ANY);
|
||||||
const wxSize sizeBmp = wxArtProvider::GetSizeHint(wxART_BUTTON);
|
|
||||||
wxBitmap bmp = GetCloseButtonBitmap(this, sizeBmp, colBg);
|
|
||||||
#else // !wxHAS_DRAW_TITLE_BAR_BITMAP
|
|
||||||
wxBitmap bmp = wxArtProvider::GetBitmap(wxART_CLOSE, wxART_BUTTON);
|
|
||||||
#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
|
|
||||||
m_button = new wxBitmapButton
|
|
||||||
(
|
|
||||||
this,
|
|
||||||
wxID_ANY,
|
|
||||||
bmp,
|
|
||||||
wxDefaultPosition,
|
|
||||||
wxDefaultSize,
|
|
||||||
wxBORDER_NONE
|
|
||||||
);
|
|
||||||
|
|
||||||
#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
|
|
||||||
m_button->SetBitmapPressed(
|
|
||||||
GetCloseButtonBitmap(this, sizeBmp, colBg, wxCONTROL_PRESSED));
|
|
||||||
|
|
||||||
m_button->SetBitmapCurrent(
|
|
||||||
GetCloseButtonBitmap(this, sizeBmp, colBg, wxCONTROL_CURRENT));
|
|
||||||
#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
|
|
||||||
|
|
||||||
m_button->SetBackgroundColour(colBg);
|
|
||||||
m_button->SetToolTip(_("Hide this notification message."));
|
m_button->SetToolTip(_("Hide this notification message."));
|
||||||
|
|
||||||
// center the text inside the sizer with an icon to the left of it and a
|
// center the text inside the sizer with an icon to the left of it and a
|
||||||
|
Reference in New Issue
Block a user