From dfd53976d4dd3c9db540c29fb3720fbf3ead55c7 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Wed, 17 Jul 2019 12:56:50 +0100 Subject: [PATCH] Fix double-highlighted radio buttons on GTK. Fixes: lp:1836538 * https://bugs.launchpad.net/kicad/+bug/1836538 --- pcbnew/import_gfx/dialog_import_gfx_base.cpp | 134 ++--- pcbnew/import_gfx/dialog_import_gfx_base.fbp | 505 ++++++++++++++++++- pcbnew/import_gfx/dialog_import_gfx_base.h | 23 +- 3 files changed, 562 insertions(+), 100 deletions(-) diff --git a/pcbnew/import_gfx/dialog_import_gfx_base.cpp b/pcbnew/import_gfx/dialog_import_gfx_base.cpp index 0c1af89033..3dc005a014 100644 --- a/pcbnew/import_gfx/dialog_import_gfx_base.cpp +++ b/pcbnew/import_gfx/dialog_import_gfx_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Jul 10 2019) +// C++ code generated with wxFormBuilder (version Dec 30 2017) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -14,51 +14,51 @@ DIALOG_IMPORT_GFX_BASE::DIALOG_IMPORT_GFX_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style ) { this->SetSizeHints( wxDefaultSize, wxDefaultSize ); - + wxBoxSizer* bSizerMain; bSizerMain = new wxBoxSizer( wxVERTICAL ); - + wxBoxSizer* bSizerFile; bSizerFile = new wxBoxSizer( wxHORIZONTAL ); - + m_staticTextFile = new wxStaticText( this, wxID_ANY, _("File:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextFile->Wrap( -1 ); bSizerFile->Add( m_staticTextFile, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - + m_textCtrlFileName = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_textCtrlFileName->SetMinSize( wxSize( 300,-1 ) ); - + bSizerFile->Add( m_textCtrlFileName, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - + m_buttonBrowse = new wxButton( this, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); bSizerFile->Add( m_buttonBrowse, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - + + bSizerMain->Add( bSizerFile, 0, wxALL|wxEXPAND, 5 ); - + wxStaticBoxSizer* sbSizer2; sbSizer2 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Placement:") ), wxVERTICAL ); - + wxBoxSizer* bSizerOptions; bSizerOptions = new wxBoxSizer( wxVERTICAL ); - - m_rbInteractivePlacement = new wxRadioButton( sbSizer2->GetStaticBox(), wxID_ANY, _("Interactive placement"), wxDefaultPosition, wxDefaultSize, wxRB_SINGLE ); - m_rbInteractivePlacement->SetValue( true ); + + m_rbInteractivePlacement = new wxRadioButton( sbSizer2->GetStaticBox(), wxID_ANY, _("Interactive placement"), wxDefaultPosition, wxDefaultSize, 0 ); + m_rbInteractivePlacement->SetValue( true ); bSizerOptions->Add( m_rbInteractivePlacement, 0, wxBOTTOM|wxEXPAND|wxTOP, 5 ); - + wxBoxSizer* bSizerUserPos; bSizerUserPos = new wxBoxSizer( wxHORIZONTAL ); - - m_rbAbsolutePlacement = new wxRadioButton( sbSizer2->GetStaticBox(), wxID_ANY, _("At"), wxDefaultPosition, wxDefaultSize, wxRB_SINGLE ); + + m_rbAbsolutePlacement = new wxRadioButton( sbSizer2->GetStaticBox(), wxID_ANY, _("At"), wxDefaultPosition, wxDefaultSize, 0 ); bSizerUserPos->Add( m_rbAbsolutePlacement, 0, wxALIGN_CENTER_VERTICAL, 5 ); - + wxBoxSizer* bSizerPosSettings; bSizerPosSettings = new wxBoxSizer( wxHORIZONTAL ); - + m_staticTextXpos = new wxStaticText( sbSizer2->GetStaticBox(), wxID_ANY, _("X:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextXpos->Wrap( -1 ); bSizerPosSettings->Add( m_staticTextXpos, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 ); - + m_DxfPcbXCoord = new wxTextCtrl( sbSizer2->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); #ifdef __WXGTK__ if ( !m_DxfPcbXCoord->HasFlag( wxTE_MULTILINE ) ) @@ -69,13 +69,13 @@ DIALOG_IMPORT_GFX_BASE::DIALOG_IMPORT_GFX_BASE( wxWindow* parent, wxWindowID id, m_DxfPcbXCoord->SetMaxLength( 10 ); #endif m_DxfPcbXCoord->SetToolTip( _("DXF origin on PCB Grid, X Coordinate") ); - + bSizerPosSettings->Add( m_DxfPcbXCoord, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - + m_staticTextYpos = new wxStaticText( sbSizer2->GetStaticBox(), wxID_ANY, _("Y:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextYpos->Wrap( -1 ); bSizerPosSettings->Add( m_staticTextYpos, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 ); - + m_DxfPcbYCoord = new wxTextCtrl( sbSizer2->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); #ifdef __WXGTK__ if ( !m_DxfPcbYCoord->HasFlag( wxTE_MULTILINE ) ) @@ -86,109 +86,109 @@ DIALOG_IMPORT_GFX_BASE::DIALOG_IMPORT_GFX_BASE( wxWindow* parent, wxWindowID id, m_DxfPcbYCoord->SetMaxLength( 10 ); #endif m_DxfPcbYCoord->SetToolTip( _("DXF origin on PCB Grid, Y Coordinate") ); - + bSizerPosSettings->Add( m_DxfPcbYCoord, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - + m_staticTextUnits = new wxStaticText( sbSizer2->GetStaticBox(), wxID_ANY, _("Units:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextUnits->Wrap( -1 ); bSizerPosSettings->Add( m_staticTextUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 ); - + wxString m_DxfPcbPositionUnitsChoices[] = { _("mm"), _("inch") }; int m_DxfPcbPositionUnitsNChoices = sizeof( m_DxfPcbPositionUnitsChoices ) / sizeof( wxString ); m_DxfPcbPositionUnits = new wxChoice( sbSizer2->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_DxfPcbPositionUnitsNChoices, m_DxfPcbPositionUnitsChoices, 0 ); m_DxfPcbPositionUnits->SetSelection( 0 ); m_DxfPcbPositionUnits->SetToolTip( _("Select PCB grid units") ); - + bSizerPosSettings->Add( m_DxfPcbPositionUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - - + + bSizerUserPos->Add( bSizerPosSettings, 1, wxBOTTOM|wxEXPAND|wxTOP, 5 ); - - + + bSizerOptions->Add( bSizerUserPos, 0, wxEXPAND, 5 ); - - + + sbSizer2->Add( bSizerOptions, 1, wxEXPAND|wxLEFT, 20 ); - - + + bSizerMain->Add( sbSizer2, 1, wxEXPAND|wxALL, 5 ); - + wxStaticBoxSizer* sbSizer1; sbSizer1 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Import parameters:") ), wxVERTICAL ); - + wxBoxSizer* bSizer7; bSizer7 = new wxBoxSizer( wxHORIZONTAL ); - - + + bSizer7->Add( 0, 0, 0, wxLEFT|wxRIGHT, 10 ); - + wxFlexGridSizer* fgSizerImportSettings; fgSizerImportSettings = new wxFlexGridSizer( 0, 3, 5, 5 ); fgSizerImportSettings->AddGrowableCol( 1 ); fgSizerImportSettings->SetFlexibleDirection( wxBOTH ); fgSizerImportSettings->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - + m_staticTextLineWidth = new wxStaticText( sbSizer1->GetStaticBox(), wxID_ANY, _("Line width (DXF import):"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextLineWidth->Wrap( -1 ); fgSizerImportSettings->Add( m_staticTextLineWidth, 0, wxALIGN_CENTER_VERTICAL, 5 ); - + m_textCtrlLineWidth = new wxTextCtrl( sbSizer1->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); fgSizerImportSettings->Add( m_textCtrlLineWidth, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); - + wxString m_choiceUnitLineWidthChoices[] = { _("mm"), _("mils"), _("inches") }; int m_choiceUnitLineWidthNChoices = sizeof( m_choiceUnitLineWidthChoices ) / sizeof( wxString ); m_choiceUnitLineWidth = new wxChoice( sbSizer1->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnitLineWidthNChoices, m_choiceUnitLineWidthChoices, 0 ); m_choiceUnitLineWidth->SetSelection( 0 ); fgSizerImportSettings->Add( m_choiceUnitLineWidth, 0, wxALIGN_CENTER_VERTICAL, 5 ); - + m_staticTextBrdlayer = new wxStaticText( sbSizer1->GetStaticBox(), wxID_ANY, _("Graphic layer:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextBrdlayer->Wrap( -1 ); fgSizerImportSettings->Add( m_staticTextBrdlayer, 0, wxALIGN_CENTER_VERTICAL, 5 ); - - m_SelLayerBox = new PCB_LAYER_BOX_SELECTOR( sbSizer1->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + + m_SelLayerBox = new PCB_LAYER_BOX_SELECTOR( sbSizer1->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); fgSizerImportSettings->Add( m_SelLayerBox, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); - - + + fgSizerImportSettings->Add( 0, 0, 0, 0, 5 ); - + m_staticTextscale = new wxStaticText( sbSizer1->GetStaticBox(), wxID_ANY, _("Import scale:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextscale->Wrap( -1 ); fgSizerImportSettings->Add( m_staticTextscale, 0, wxALIGN_CENTER_VERTICAL, 5 ); - + m_textCtrlImportScale = new wxTextCtrl( sbSizer1->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); fgSizerImportSettings->Add( m_textCtrlImportScale, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); - - + + fgSizerImportSettings->Add( 0, 0, 0, 0, 5 ); - - + + bSizer7->Add( fgSizerImportSettings, 1, wxBOTTOM|wxEXPAND|wxRIGHT|wxTOP, 5 ); - - + + sbSizer1->Add( bSizer7, 1, wxEXPAND, 5 ); - - + + bSizerMain->Add( sbSizer1, 1, wxEXPAND|wxALL, 5 ); - - + + bSizerMain->Add( 0, 0, 0, wxEXPAND, 5 ); - + m_sdbSizer = new wxStdDialogButtonSizer(); m_sdbSizerOK = new wxButton( this, wxID_OK ); m_sdbSizer->AddButton( m_sdbSizerOK ); m_sdbSizerCancel = new wxButton( this, wxID_CANCEL ); m_sdbSizer->AddButton( m_sdbSizerCancel ); m_sdbSizer->Realize(); - + bSizerMain->Add( m_sdbSizer, 0, wxEXPAND|wxALL, 5 ); - - + + this->SetSizer( bSizerMain ); this->Layout(); bSizerMain->Fit( this ); - + this->Centre( wxBOTH ); - + // Connect Events m_buttonBrowse->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_IMPORT_GFX_BASE::onBrowseFiles ), NULL, this ); m_rbInteractivePlacement->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_IMPORT_GFX_BASE::onInteractivePlacement ), NULL, this ); @@ -209,5 +209,5 @@ DIALOG_IMPORT_GFX_BASE::~DIALOG_IMPORT_GFX_BASE() m_rbAbsolutePlacement->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_IMPORT_GFX_BASE::originOptionOnUpdateUI ), NULL, this ); m_DxfPcbPositionUnits->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_IMPORT_GFX_BASE::onUnitPositionSelection ), NULL, this ); m_choiceUnitLineWidth->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_IMPORT_GFX_BASE::onUnitWidthSelection ), NULL, this ); - + } diff --git a/pcbnew/import_gfx/dialog_import_gfx_base.fbp b/pcbnew/import_gfx/dialog_import_gfx_base.fbp index 9d7ca82200..e7b583deb8 100644 --- a/pcbnew/import_gfx/dialog_import_gfx_base.fbp +++ b/pcbnew/import_gfx/dialog_import_gfx_base.fbp @@ -1,6 +1,6 @@ - + C++ @@ -14,8 +14,6 @@ dialog_import_gfx_base 1000 none - - 1 dialog_dxf_import @@ -26,7 +24,6 @@ 1 1 UI - 0 0 0 @@ -55,6 +52,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bSizerMain @@ -102,7 +135,6 @@ 0 wxID_ANY File: - 0 0 @@ -128,6 +160,29 @@ -1 + + + + + + + + + + + + + + + + + + + + + + + @@ -192,6 +247,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -209,31 +291,25 @@ - 1 0 1 1 - 0 0 - Dock 0 Left 1 1 - 0 0 wxID_ANY Browse - - 0 0 @@ -248,8 +324,6 @@ protected 1 - - Resizable 1 @@ -265,6 +339,29 @@ onBrowseFiles + + + + + + + + + + + + + + + + + + + + + + + @@ -281,6 +378,7 @@ wxVERTICAL 1 none + 20 wxEXPAND|wxLEFT @@ -340,7 +438,7 @@ Resizable 1 - wxRB_SINGLE + ; forward_declare 0 @@ -352,7 +450,29 @@ + + + + + + + + + + + + + + + + + onInteractivePlacement + + + + + originOptionOnUpdateUI @@ -415,7 +535,7 @@ Resizable 1 - wxRB_SINGLE + ; forward_declare 0 @@ -427,7 +547,29 @@ + + + + + + + + + + + + + + + + + onAbsolutePlacement + + + + + originOptionOnUpdateUI @@ -473,7 +615,6 @@ 0 wxID_ANY X: - 0 0 @@ -499,6 +640,29 @@ -1 + + + + + + + + + + + + + + + + + + + + + + + @@ -563,6 +727,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -598,7 +789,6 @@ 0 wxID_ANY Y: - 0 0 @@ -624,6 +814,29 @@ -1 + + + + + + + + + + + + + + + + + + + + + + + @@ -688,6 +901,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -723,7 +963,6 @@ 0 wxID_ANY Units: - 0 0 @@ -749,6 +988,29 @@ -1 + + + + + + + + + + + + + + + + + + + + + + + @@ -813,7 +1075,30 @@ + onUnitPositionSelection + + + + + + + + + + + + + + + + + + + + + + @@ -836,6 +1121,7 @@ wxVERTICAL 1 none + 5 wxEXPAND @@ -904,7 +1190,6 @@ 0 wxID_ANY Line width (DXF import): - 0 0 @@ -930,6 +1215,29 @@ -1 + + + + + + + + + + + + + + + + + + + + + + + @@ -994,6 +1302,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1058,7 +1393,30 @@ + onUnitWidthSelection + + + + + + + + + + + + + + + + + + + + + + @@ -1094,7 +1452,6 @@ 0 wxID_ANY Graphic layer: - 0 0 @@ -1120,6 +1477,29 @@ -1 + + + + + + + + + + + + + + + + + + + + + + + @@ -1185,6 +1565,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1230,7 +1636,6 @@ 0 wxID_ANY Import scale: - 0 0 @@ -1256,6 +1661,29 @@ -1 + + + + + + + + + + + + + + + + + + + + + + + @@ -1320,6 +1748,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1364,6 +1819,14 @@ m_sdbSizer protected + + + + + + + + diff --git a/pcbnew/import_gfx/dialog_import_gfx_base.h b/pcbnew/import_gfx/dialog_import_gfx_base.h index 92ed242071..a4fb6f7325 100644 --- a/pcbnew/import_gfx/dialog_import_gfx_base.h +++ b/pcbnew/import_gfx/dialog_import_gfx_base.h @@ -1,11 +1,12 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Jul 10 2019) +// C++ code generated with wxFormBuilder (version Dec 30 2017) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! /////////////////////////////////////////////////////////////////////////// -#pragma once +#ifndef __DIALOG_IMPORT_GFX_BASE_H__ +#define __DIALOG_IMPORT_GFX_BASE_H__ #include #include @@ -20,9 +21,6 @@ class PCB_LAYER_BOX_SELECTOR; #include #include #include -#include -#include -#include #include #include #include @@ -41,7 +39,7 @@ class PCB_LAYER_BOX_SELECTOR; class DIALOG_IMPORT_GFX_BASE : public DIALOG_SHIM { private: - + protected: wxStaticText* m_staticTextFile; wxTextCtrl* m_textCtrlFileName; @@ -64,7 +62,7 @@ class DIALOG_IMPORT_GFX_BASE : public DIALOG_SHIM wxStdDialogButtonSizer* m_sdbSizer; wxButton* m_sdbSizerOK; wxButton* m_sdbSizerCancel; - + // Virtual event handlers, overide them in your derived class virtual void onBrowseFiles( wxCommandEvent& event ) { event.Skip(); } virtual void onInteractivePlacement( wxCommandEvent& event ) { event.Skip(); } @@ -72,12 +70,13 @@ class DIALOG_IMPORT_GFX_BASE : public DIALOG_SHIM virtual void onAbsolutePlacement( wxCommandEvent& event ) { event.Skip(); } virtual void onUnitPositionSelection( wxCommandEvent& event ) { event.Skip(); } virtual void onUnitWidthSelection( wxCommandEvent& event ) { event.Skip(); } - - + + public: - - DIALOG_IMPORT_GFX_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Import Vector Graphics File"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); + + DIALOG_IMPORT_GFX_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Import Vector Graphics File"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); ~DIALOG_IMPORT_GFX_BASE(); - + }; +#endif //__DIALOG_IMPORT_GFX_BASE_H__