Add a radioButton mode to IMAGE_BUTTON.

Fixes https://gitlab.com/kicad/code/kicad/issues/11797
This commit is contained in:
Jeff Young 2022-06-12 20:09:21 +01:00
parent c6604e3576
commit 52bc2511cd
11 changed files with 60 additions and 48 deletions

View File

@ -35,6 +35,7 @@
BITMAP_BUTTON::BITMAP_BUTTON( wxWindow* aParent, wxWindowID aId, const wxPoint& aPos,
const wxSize& aSize, int aStyles ) :
wxPanel( aParent, aId, aPos, aSize, aStyles ),
m_isRadioButton( false ),
m_buttonState( 0 ),
m_padding( 0 ),
m_acceptDraggedInClicks( false )
@ -49,6 +50,7 @@ BITMAP_BUTTON::BITMAP_BUTTON( wxWindow* aParent, wxWindowID aId, const wxPoint&
BITMAP_BUTTON::BITMAP_BUTTON( wxWindow* aParent, wxWindowID aId, const wxBitmap& aDummyBitmap,
const wxPoint& aPos, const wxSize& aSize, int aStyles ) :
wxPanel( aParent, aId, aPos, aSize, aStyles ),
m_isRadioButton( false ),
m_buttonState( 0 ),
m_padding( 5 ),
m_acceptDraggedInClicks( false )
@ -165,7 +167,7 @@ void BITMAP_BUTTON::OnLeftButtonDown( wxMouseEvent& aEvent )
{
if( hasFlag( wxCONTROL_CHECKABLE ) )
{
if( hasFlag( wxCONTROL_CHECKED ) )
if( hasFlag( wxCONTROL_CHECKED ) && !m_isRadioButton )
{
clearFlag( wxCONTROL_CHECKED );
@ -280,6 +282,13 @@ void BITMAP_BUTTON::SetIsCheckButton()
}
void BITMAP_BUTTON::SetIsRadioButton()
{
setFlag( wxCONTROL_CHECKABLE );
m_isRadioButton = true;
}
void BITMAP_BUTTON::SetIsSeparator()
{
setFlag( wxCONTROL_SEPARATOR | wxCONTROL_DISABLED );

View File

@ -80,9 +80,9 @@ DIALOG_FIELD_PROPERTIES::DIALOG_FIELD_PROPERTIES( SCH_BASE_FRAME* aParent, const
m_separator1->SetIsSeparator();
m_horizontal->SetIsCheckButton();
m_horizontal->SetIsRadioButton();
m_horizontal->SetBitmap( KiBitmap( BITMAPS::text_horizontal ) );
m_vertical->SetIsCheckButton();
m_vertical->SetIsRadioButton();
m_vertical->SetBitmap( KiBitmap( BITMAPS::text_vertical ) );
m_separator2->SetIsSeparator();
@ -94,20 +94,20 @@ DIALOG_FIELD_PROPERTIES::DIALOG_FIELD_PROPERTIES( SCH_BASE_FRAME* aParent, const
m_separator3->SetIsSeparator();
m_hAlignLeft->SetIsCheckButton();
m_hAlignLeft->SetIsRadioButton();
m_hAlignLeft->SetBitmap( KiBitmap( BITMAPS::text_align_left ) );
m_hAlignCenter->SetIsCheckButton();
m_hAlignCenter->SetIsRadioButton();
m_hAlignCenter->SetBitmap( KiBitmap( BITMAPS::text_align_center ) );
m_hAlignRight->SetIsCheckButton();
m_hAlignRight->SetIsRadioButton();
m_hAlignRight->SetBitmap( KiBitmap( BITMAPS::text_align_right ) );
m_separator4->SetIsSeparator();
m_vAlignTop->SetIsCheckButton();
m_vAlignTop->SetIsRadioButton();
m_vAlignTop->SetBitmap( KiBitmap( BITMAPS::text_valign_top ) );
m_vAlignCenter->SetIsCheckButton();
m_vAlignCenter->SetIsRadioButton();
m_vAlignCenter->SetBitmap( KiBitmap( BITMAPS::text_valign_center ) );
m_vAlignBottom->SetIsCheckButton();
m_vAlignBottom->SetIsRadioButton();
m_vAlignBottom->SetBitmap( KiBitmap( BITMAPS::text_valign_bottom ) );
m_separator5->SetIsSeparator();

View File

@ -139,10 +139,10 @@ DIALOG_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES( SCH_EDIT_FRAME* aParent, SCH_L
m_separator2->SetIsSeparator();
m_spin0->SetIsCheckButton();
m_spin1->SetIsCheckButton();
m_spin2->SetIsCheckButton();
m_spin3->SetIsCheckButton();
m_spin0->SetIsRadioButton();
m_spin1->SetIsRadioButton();
m_spin2->SetIsRadioButton();
m_spin3->SetIsRadioButton();
m_separator3->SetIsSeparator();

View File

@ -54,9 +54,9 @@ DIALOG_LIB_TEXT_PROPERTIES::DIALOG_LIB_TEXT_PROPERTIES( SYMBOL_EDIT_FRAME* aPare
m_separator1->SetIsSeparator();
m_horizontal->SetIsCheckButton();
m_horizontal->SetIsRadioButton();
m_horizontal->SetBitmap( KiBitmap( BITMAPS::text_horizontal ) );
m_vertical->SetIsCheckButton();
m_vertical->SetIsRadioButton();
m_vertical->SetBitmap( KiBitmap( BITMAPS::text_vertical ) );
m_separator2->SetIsSeparator();
@ -68,20 +68,20 @@ DIALOG_LIB_TEXT_PROPERTIES::DIALOG_LIB_TEXT_PROPERTIES( SYMBOL_EDIT_FRAME* aPare
m_separator3->SetIsSeparator();
m_hAlignLeft->SetIsCheckButton();
m_hAlignLeft->SetIsRadioButton();
m_hAlignLeft->SetBitmap( KiBitmap( BITMAPS::text_align_left ) );
m_hAlignCenter->SetIsCheckButton();
m_hAlignCenter->SetIsRadioButton();
m_hAlignCenter->SetBitmap( KiBitmap( BITMAPS::text_align_center ) );
m_hAlignRight->SetIsCheckButton();
m_hAlignRight->SetIsRadioButton();
m_hAlignRight->SetBitmap( KiBitmap( BITMAPS::text_align_right ) );
m_separator4->SetIsSeparator();
m_vAlignTop->SetIsCheckButton();
m_vAlignTop->SetIsRadioButton();
m_vAlignTop->SetBitmap( KiBitmap( BITMAPS::text_valign_top ) );
m_vAlignCenter->SetIsCheckButton();
m_vAlignCenter->SetIsRadioButton();
m_vAlignCenter->SetBitmap( KiBitmap( BITMAPS::text_valign_center ) );
m_vAlignBottom->SetIsCheckButton();
m_vAlignBottom->SetIsRadioButton();
m_vAlignBottom->SetBitmap( KiBitmap( BITMAPS::text_valign_bottom ) );
m_separator5->SetIsSeparator();

View File

@ -85,17 +85,17 @@ DIALOG_LIB_TEXTBOX_PROPERTIES::DIALOG_LIB_TEXTBOX_PROPERTIES( SYMBOL_EDIT_FRAME*
m_separator2->SetIsSeparator();
m_spin0->SetIsCheckButton();
m_spin0->SetIsRadioButton();
m_spin0->SetBitmap( KiBitmap( BITMAPS::text_align_left ) );
m_spin1->SetIsCheckButton();
m_spin1->SetIsRadioButton();
m_spin1->SetBitmap( KiBitmap( BITMAPS::text_align_center ) );
m_spin2->SetIsCheckButton();
m_spin2->SetIsRadioButton();
m_spin2->SetBitmap( KiBitmap( BITMAPS::text_align_right ) );
m_spin3->SetIsCheckButton();
m_spin3->SetIsRadioButton();
m_spin3->SetBitmap( KiBitmap( BITMAPS::text_align_bottom ) );
m_spin4->SetIsCheckButton();
m_spin4->SetIsRadioButton();
m_spin4->SetBitmap( KiBitmap( BITMAPS::text_align_middle ) );
m_spin5->SetIsCheckButton();
m_spin5->SetIsRadioButton();
m_spin5->SetBitmap( KiBitmap( BITMAPS::text_align_top ) );
m_separator3->SetIsSeparator();

View File

@ -111,17 +111,17 @@ DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES( SCH_EDIT_FRAME* aParent, SCH_ITE
m_separator2->SetIsSeparator();
m_spin0->SetIsCheckButton();
m_spin0->SetIsRadioButton();
m_spin0->SetBitmap( KiBitmap( BITMAPS::text_align_left ) );
m_spin1->SetIsCheckButton();
m_spin1->SetIsRadioButton();
m_spin1->SetBitmap( KiBitmap( BITMAPS::text_align_center ) );
m_spin2->SetIsCheckButton();
m_spin2->SetIsRadioButton();
m_spin2->SetBitmap( KiBitmap( BITMAPS::text_align_right ) );
m_spin3->SetIsCheckButton();
m_spin3->SetIsRadioButton();
m_spin3->SetBitmap( KiBitmap( BITMAPS::text_align_bottom ) );
m_spin4->SetIsCheckButton();
m_spin4->SetIsRadioButton();
m_spin4->SetBitmap( KiBitmap( BITMAPS::text_align_middle ) );
m_spin5->SetIsCheckButton();
m_spin5->SetIsRadioButton();
m_spin5->SetBitmap( KiBitmap( BITMAPS::text_align_top ) );
m_separator3->SetIsSeparator();

View File

@ -81,6 +81,8 @@ public:
*/
void SetIsCheckButton();
void SetIsRadioButton();
/**
* Check the control. This is the equivalent to toggling a toolbar button.
*/
@ -132,6 +134,7 @@ private:
wxBitmap m_normalBitmap;
wxBitmap m_disabledBitmap;
bool m_isRadioButton;
int m_buttonState;
int m_padding;
wxSize m_unadjustedMinSize;

View File

@ -81,20 +81,20 @@ PROPERTIES_FRAME::PROPERTIES_FRAME( PL_EDITOR_FRAME* aParent ) :
m_separator2->SetIsSeparator();
m_alignLeft->SetIsCheckButton();
m_alignLeft->SetIsRadioButton();
m_alignLeft->SetBitmap( KiBitmap( BITMAPS::text_align_left ) );
m_alignCenter->SetIsCheckButton();
m_alignCenter->SetIsRadioButton();
m_alignCenter->SetBitmap( KiBitmap( BITMAPS::text_align_center ) );
m_alignRight->SetIsCheckButton();
m_alignRight->SetIsRadioButton();
m_alignRight->SetBitmap( KiBitmap( BITMAPS::text_align_right ) );
m_separator3->SetIsSeparator();
m_vAlignTop->SetIsCheckButton();
m_vAlignTop->SetIsRadioButton();
m_vAlignTop->SetBitmap( KiBitmap( BITMAPS::text_valign_top ) );
m_vAlignMiddle->SetIsCheckButton();
m_vAlignMiddle->SetIsRadioButton();
m_vAlignMiddle->SetBitmap( KiBitmap( BITMAPS::text_valign_center ) );
m_vAlignBottom->SetIsCheckButton();
m_vAlignBottom->SetIsRadioButton();
m_vAlignBottom->SetBitmap( KiBitmap( BITMAPS::text_valign_bottom ) );
m_separator4->SetIsSeparator();

View File

@ -101,11 +101,11 @@ DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES( PCB_BASE_EDIT_FRAME* a
m_separator1->SetIsSeparator();
m_alignLeft->SetIsCheckButton();
m_alignLeft->SetIsRadioButton();
m_alignLeft->SetBitmap( KiBitmap( BITMAPS::text_align_left ) );
m_alignCenter->SetIsCheckButton();
m_alignCenter->SetIsRadioButton();
m_alignCenter->SetBitmap( KiBitmap( BITMAPS::text_align_center ) );
m_alignRight->SetIsCheckButton();
m_alignRight->SetIsRadioButton();
m_alignRight->SetBitmap( KiBitmap( BITMAPS::text_align_right ) );
m_separator2->SetIsSeparator();

View File

@ -126,11 +126,11 @@ DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent, BO
m_separator1->SetIsSeparator();
m_alignLeft->SetIsCheckButton();
m_alignLeft->SetIsRadioButton();
m_alignLeft->SetBitmap( KiBitmap( BITMAPS::text_align_left ) );
m_alignCenter->SetIsCheckButton();
m_alignCenter->SetIsRadioButton();
m_alignCenter->SetBitmap( KiBitmap( BITMAPS::text_align_center ) );
m_alignRight->SetIsCheckButton();
m_alignRight->SetIsRadioButton();
m_alignRight->SetBitmap( KiBitmap( BITMAPS::text_align_right ) );
m_separator2->SetIsSeparator();

View File

@ -96,11 +96,11 @@ DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_PROPERTIES( PCB_BASE_EDIT_FRAME* aPare
m_separator1->SetIsSeparator();
m_alignLeft->SetIsCheckButton();
m_alignLeft->SetIsRadioButton();
m_alignLeft->SetBitmap( KiBitmap( BITMAPS::text_align_left ) );
m_alignCenter->SetIsCheckButton();
m_alignCenter->SetIsRadioButton();
m_alignCenter->SetBitmap( KiBitmap( BITMAPS::text_align_center ) );
m_alignRight->SetIsCheckButton();
m_alignRight->SetIsRadioButton();
m_alignRight->SetBitmap( KiBitmap( BITMAPS::text_align_right ) );
m_separator2->SetIsSeparator();