Add a radioButton mode to IMAGE_BUTTON.
Fixes https://gitlab.com/kicad/code/kicad/issues/11797
This commit is contained in:
parent
c6604e3576
commit
52bc2511cd
|
@ -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 );
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue