Add possibility to create "Close" bitmap button from XRC
This requires refactoring NewCloseButton() in order to extract CreateCloseButton() from it, as XRC relies on being able to use two-step creation which was previously impossible for this kind of buttons. CreateCloseButton() is rather unusual, as it has to be declared in the derived, platform-specific class, in order to be able to call its Create(), but is defined only once in common, platform-independent, code. However the only alternative seems to be to have a static function, e.g. InitCloseButton(), which wouldn't be very pretty neither. Closes https://github.com/wxWidgets/wxWidgets/pull/2118
This commit is contained in:
@@ -65,11 +65,25 @@ public:
|
||||
validator, name);
|
||||
}
|
||||
|
||||
/*
|
||||
Derived classes also need to declare, but not define, as it's done in
|
||||
common code in bmpbtncmn.cpp, the following function:
|
||||
|
||||
bool CreateCloseButton(wxWindow* parent,
|
||||
wxWindowID winid,
|
||||
const wxString& name = wxString());
|
||||
|
||||
which is used used by NewCloseButton(), and, as Create(), must be
|
||||
called on default-constructed wxBitmapButton object.
|
||||
*/
|
||||
|
||||
// Special creation function for a standard "Close" bitmap. It allows to
|
||||
// simply create a close button with the image appropriate for the current
|
||||
// platform.
|
||||
static wxBitmapButton* NewCloseButton(wxWindow* parent, wxWindowID winid);
|
||||
|
||||
static wxBitmapButton*
|
||||
NewCloseButton(wxWindow* parent,
|
||||
wxWindowID winid,
|
||||
const wxString& name = wxString());
|
||||
|
||||
// set/get the margins around the button
|
||||
virtual void SetMargins(int x, int y)
|
||||
|
@@ -39,6 +39,9 @@ public:
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxASCII_STR(wxButtonNameStr));
|
||||
|
||||
bool CreateCloseButton(wxWindow* parent,
|
||||
wxWindowID winid,
|
||||
const wxString& name = wxString());
|
||||
private:
|
||||
wxDECLARE_DYNAMIC_CLASS(wxBitmapButton);
|
||||
};
|
||||
|
@@ -42,6 +42,10 @@ public:
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxASCII_STR(wxButtonNameStr));
|
||||
|
||||
bool CreateCloseButton(wxWindow* parent,
|
||||
wxWindowID winid,
|
||||
const wxString& name = wxString());
|
||||
|
||||
void SetLabel( const wxString &label );
|
||||
virtual void SetLabel( const wxBitmap& bitmap ) { SetBitmapLabel(bitmap); }
|
||||
|
||||
|
@@ -35,6 +35,9 @@ public:
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxASCII_STR(wxButtonNameStr));
|
||||
|
||||
bool CreateCloseButton(wxWindow* parent,
|
||||
wxWindowID winid,
|
||||
const wxString& name = wxString());
|
||||
// Implementation
|
||||
virtual void ChangeBackgroundColour();
|
||||
|
||||
|
@@ -41,6 +41,9 @@ public:
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxASCII_STR(wxButtonNameStr));
|
||||
|
||||
bool CreateCloseButton(wxWindow* parent,
|
||||
wxWindowID winid,
|
||||
const wxString& name = wxString());
|
||||
protected:
|
||||
wxDECLARE_EVENT_TABLE();
|
||||
wxDECLARE_DYNAMIC_CLASS_NO_COPY(wxBitmapButton);
|
||||
|
@@ -37,6 +37,9 @@ public:
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxASCII_STR(wxButtonNameStr));
|
||||
|
||||
bool CreateCloseButton(wxWindow* parent,
|
||||
wxWindowID winid,
|
||||
const wxString& name = wxString());
|
||||
protected:
|
||||
|
||||
virtual wxSize DoGetBestSize() const wxOVERRIDE;
|
||||
|
@@ -30,6 +30,11 @@ public:
|
||||
long style = 0,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxASCII_STR(wxButtonNameStr));
|
||||
|
||||
bool CreateCloseButton(wxWindow* parent,
|
||||
wxWindowID winid,
|
||||
const wxString& name = wxString());
|
||||
|
||||
protected:
|
||||
wxDECLARE_DYNAMIC_CLASS(wxBitmapButton);
|
||||
|
||||
|
@@ -37,6 +37,11 @@ public:
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxASCII_STR(wxButtonNameStr));
|
||||
|
||||
bool CreateCloseButton(wxWindow* parent,
|
||||
wxWindowID winid,
|
||||
const wxString& name = wxString());
|
||||
|
||||
|
||||
virtual void SetMargins(int x, int y) wxOVERRIDE
|
||||
{
|
||||
SetBitmapMargins(x, y);
|
||||
|
Reference in New Issue
Block a user