Reuse Qt implementation of normal button for toggle buttons
This commit is contained in:
@@ -29,6 +29,7 @@ public:
|
|||||||
|
|
||||||
// implementation only
|
// implementation only
|
||||||
void QtUpdateState();
|
void QtUpdateState();
|
||||||
|
virtual int GetEventType() const = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual wxBitmap DoGetBitmap(State state) const wxOVERRIDE;
|
virtual wxBitmap DoGetBitmap(State state) const wxOVERRIDE;
|
||||||
|
@@ -31,6 +31,9 @@ public:
|
|||||||
|
|
||||||
virtual wxWindow *SetDefault();
|
virtual wxWindow *SetDefault();
|
||||||
|
|
||||||
|
// implementation only
|
||||||
|
virtual int GetEventType() const wxOVERRIDE { return wxEVT_BUTTON; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wxDECLARE_DYNAMIC_CLASS_NO_COPY(wxButton);
|
wxDECLARE_DYNAMIC_CLASS_NO_COPY(wxButton);
|
||||||
};
|
};
|
||||||
|
@@ -35,6 +35,8 @@ public:
|
|||||||
virtual void SetValue(bool state);
|
virtual void SetValue(bool state);
|
||||||
virtual bool GetValue() const;
|
virtual bool GetValue() const;
|
||||||
|
|
||||||
|
// implementation only
|
||||||
|
virtual int GetEventType() const wxOVERRIDE { return wxEVT_TOGGLEBUTTON; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wxDECLARE_DYNAMIC_CLASS(wxToggleButton);
|
wxDECLARE_DYNAMIC_CLASS(wxToggleButton);
|
||||||
|
@@ -40,12 +40,16 @@ wxQtPushButton::wxQtPushButton(wxWindow *parent, wxAnyButton *handler)
|
|||||||
connect(this, &QPushButton::released, this, &wxQtPushButton::action);
|
connect(this, &QPushButton::released, this, &wxQtPushButton::action);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxQtPushButton::clicked( bool WXUNUSED(checked) )
|
void wxQtPushButton::clicked(bool checked)
|
||||||
{
|
{
|
||||||
wxAnyButton *handler = GetHandler();
|
wxAnyButton *handler = GetHandler();
|
||||||
if ( handler )
|
if ( handler )
|
||||||
{
|
{
|
||||||
wxCommandEvent event( wxEVT_BUTTON, handler->GetId() );
|
wxCommandEvent event( handler->GetEventType(), handler->GetId() );
|
||||||
|
if ( isCheckable() ) // toggle buttons
|
||||||
|
{
|
||||||
|
event.SetInt(checked);
|
||||||
|
}
|
||||||
EmitEvent( event );
|
EmitEvent( event );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -23,35 +23,6 @@
|
|||||||
|
|
||||||
#include <QtWidgets/QPushButton>
|
#include <QtWidgets/QPushButton>
|
||||||
|
|
||||||
class wxQtToggleButton : public wxQtEventSignalHandler< QPushButton, wxAnyButton >
|
|
||||||
{
|
|
||||||
|
|
||||||
public:
|
|
||||||
wxQtToggleButton( wxWindow *parent, wxAnyButton *handler);
|
|
||||||
|
|
||||||
private:
|
|
||||||
void clicked( bool checked );
|
|
||||||
};
|
|
||||||
|
|
||||||
wxQtToggleButton::wxQtToggleButton(wxWindow *parent, wxAnyButton *handler)
|
|
||||||
: wxQtEventSignalHandler< QPushButton, wxAnyButton >( parent, handler )
|
|
||||||
{
|
|
||||||
setCheckable( true );
|
|
||||||
connect(this, &QPushButton::clicked, this, &wxQtToggleButton::clicked);
|
|
||||||
}
|
|
||||||
|
|
||||||
void wxQtToggleButton::clicked( bool checked )
|
|
||||||
{
|
|
||||||
wxAnyButton *handler = GetHandler();
|
|
||||||
if ( handler )
|
|
||||||
{
|
|
||||||
// for toggle buttons, send the checked state in the wx event:
|
|
||||||
wxCommandEvent event( wxEVT_TOGGLEBUTTON, handler->GetId() );
|
|
||||||
event.SetInt( checked );
|
|
||||||
EmitEvent( event );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
wxDEFINE_EVENT( wxEVT_TOGGLEBUTTON, wxCommandEvent );
|
wxDEFINE_EVENT( wxEVT_TOGGLEBUTTON, wxCommandEvent );
|
||||||
|
|
||||||
wxIMPLEMENT_DYNAMIC_CLASS(wxBitmapToggleButton, wxToggleButton);
|
wxIMPLEMENT_DYNAMIC_CLASS(wxBitmapToggleButton, wxToggleButton);
|
||||||
@@ -80,10 +51,22 @@ bool wxBitmapToggleButton::Create(wxWindow *parent,
|
|||||||
const wxValidator& validator,
|
const wxValidator& validator,
|
||||||
const wxString& name)
|
const wxString& name)
|
||||||
{
|
{
|
||||||
// this button is toggleable and has a bitmap label:
|
if ( !wxToggleButton::Create(parent, id, wxString(), pos, size, style, validator, name) )
|
||||||
QtSetBitmap( label );
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return QtCreateControl( parent, id, pos, size, style, validator, name );
|
// this button is toggleable and has a bitmap label:
|
||||||
|
if ( label.IsOk() )
|
||||||
|
{
|
||||||
|
SetBitmapLabel(label);
|
||||||
|
|
||||||
|
// we need to adjust the size after setting the bitmap as it may be too
|
||||||
|
// big for the default button size
|
||||||
|
SetInitialSize(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//##############################################################################
|
//##############################################################################
|
||||||
@@ -115,7 +98,8 @@ bool wxToggleButton::Create(wxWindow *parent,
|
|||||||
const wxString& name)
|
const wxString& name)
|
||||||
{
|
{
|
||||||
// create a checkable push button
|
// create a checkable push button
|
||||||
m_qtPushButton = new wxQtToggleButton( parent, this );
|
QtCreate(parent);
|
||||||
|
m_qtPushButton->setCheckable(true);
|
||||||
|
|
||||||
// this button is toggleable and has a text label
|
// this button is toggleable and has a text label
|
||||||
SetLabel( wxIsStockID( id ) ? wxGetStockLabel( id ) : label );
|
SetLabel( wxIsStockID( id ) ? wxGetStockLabel( id ) : label );
|
||||||
|
Reference in New Issue
Block a user