From 4270c6d67642b2ac3ade44c1ceb7f55e7c6834ab Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Sat, 13 Aug 2022 11:00:00 +0200 Subject: [PATCH] DIALOG_SYMBOL_PROPERTIES: rebuild the pin list when selecting another unit. --- eeschema/dialogs/dialog_symbol_properties.cpp | 24 ++++++++++++++++++- eeschema/dialogs/dialog_symbol_properties.h | 4 ++-- .../dialogs/dialog_symbol_properties_base.cpp | 10 ++++---- .../dialogs/dialog_symbol_properties_base.fbp | 16 +++++++++++-- .../dialogs/dialog_symbol_properties_base.h | 8 ++++--- 5 files changed, 49 insertions(+), 13 deletions(-) diff --git a/eeschema/dialogs/dialog_symbol_properties.cpp b/eeschema/dialogs/dialog_symbol_properties.cpp index cdcd98ea50..e10496f1db 100644 --- a/eeschema/dialogs/dialog_symbol_properties.cpp +++ b/eeschema/dialogs/dialog_symbol_properties.cpp @@ -1188,7 +1188,29 @@ void DIALOG_SYMBOL_PROPERTIES::OnCheckBox( wxCommandEvent& event ) } -void DIALOG_SYMBOL_PROPERTIES::OnChoice( wxCommandEvent& event ) +void DIALOG_SYMBOL_PROPERTIES::OnUnitChoice( wxCommandEvent& event ) { + if( m_dataModel ) + { + int unit_selection = m_unitChoice->GetSelection() + 1; + + // We need to select a new unit to build the new unit pin list + // but we should not change the symbol, so the initial unit will be selected + // after rebuilding the pin list + int old_unit = m_symbol->GetUnit(); + m_symbol->SetUnit( unit_selection ); + + // Rebuild a copy of the pins of the new unit for editing + m_dataModel->clear(); + + for( const std::unique_ptr& pin : m_symbol->GetRawPins() ) + m_dataModel->push_back( *pin ); + + m_dataModel->SortRows( COL_NUMBER, true ); + m_dataModel->BuildAttrs(); + + m_symbol->SetUnit(old_unit ); + } + OnModify(); } diff --git a/eeschema/dialogs/dialog_symbol_properties.h b/eeschema/dialogs/dialog_symbol_properties.h index 75e683503a..afc0cbb672 100644 --- a/eeschema/dialogs/dialog_symbol_properties.h +++ b/eeschema/dialogs/dialog_symbol_properties.h @@ -1,7 +1,7 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2022 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -82,7 +82,7 @@ private: void OnInitDlg( wxInitDialogEvent& event ) override; void OnGridEditorShown( wxGridEvent& event ) override; void OnGridEditorHidden( wxGridEvent& event ) override; - void OnChoice( wxCommandEvent& event ) override; + void OnUnitChoice( wxCommandEvent& event ) override; void OnCheckBox( wxCommandEvent& event ) override; void OnEditSymbol( wxCommandEvent& ) override; diff --git a/eeschema/dialogs/dialog_symbol_properties_base.cpp b/eeschema/dialogs/dialog_symbol_properties_base.cpp index 78d8933f68..b1543bfd7b 100644 --- a/eeschema/dialogs/dialog_symbol_properties_base.cpp +++ b/eeschema/dialogs/dialog_symbol_properties_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 26 2018) +// C++ code generated with wxFormBuilder (version 3.10.0-39-g3487c3cb) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -51,7 +51,6 @@ DIALOG_SYMBOL_PROPERTIES_BASE::DIALOG_SYMBOL_PROPERTIES_BASE( wxWindow* parent, m_fieldsGrid->SetColSize( 12, 48 ); m_fieldsGrid->EnableDragColMove( false ); m_fieldsGrid->EnableDragColSize( true ); - m_fieldsGrid->SetColLabelSize( 22 ); m_fieldsGrid->SetColLabelValue( 0, _("Name") ); m_fieldsGrid->SetColLabelValue( 1, _("Value") ); m_fieldsGrid->SetColLabelValue( 2, _("Show") ); @@ -65,6 +64,7 @@ DIALOG_SYMBOL_PROPERTIES_BASE::DIALOG_SYMBOL_PROPERTIES_BASE( wxWindow* parent, m_fieldsGrid->SetColLabelValue( 10, _("Y Position") ); m_fieldsGrid->SetColLabelValue( 11, _("Font") ); m_fieldsGrid->SetColLabelValue( 12, _("Color") ); + m_fieldsGrid->SetColLabelSize( 22 ); m_fieldsGrid->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER ); // Rows @@ -269,12 +269,12 @@ DIALOG_SYMBOL_PROPERTIES_BASE::DIALOG_SYMBOL_PROPERTIES_BASE( wxWindow* parent, m_pinGrid->SetColSize( 4, 140 ); m_pinGrid->EnableDragColMove( false ); m_pinGrid->EnableDragColSize( true ); - m_pinGrid->SetColLabelSize( 24 ); m_pinGrid->SetColLabelValue( 0, _("Pin Number") ); m_pinGrid->SetColLabelValue( 1, _("Base Pin Name") ); m_pinGrid->SetColLabelValue( 2, _("Alternate Assignment") ); m_pinGrid->SetColLabelValue( 3, _("Electrical Type") ); m_pinGrid->SetColLabelValue( 4, _("Graphic Style") ); + m_pinGrid->SetColLabelSize( 24 ); m_pinGrid->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER ); // Rows @@ -352,7 +352,7 @@ DIALOG_SYMBOL_PROPERTIES_BASE::DIALOG_SYMBOL_PROPERTIES_BASE( wxWindow* parent, m_bpMoveUp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnMoveUp ), NULL, this ); m_bpMoveDown->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnMoveDown ), NULL, this ); m_bpDelete->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnDeleteField ), NULL, this ); - m_unitChoice->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnChoice ), NULL, this ); + m_unitChoice->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnUnitChoice ), NULL, this ); m_cbAlternateSymbol->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnCheckBox ), NULL, this ); m_orientationCtrl->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnChoice ), NULL, this ); m_mirrorCtrl->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnChoice ), NULL, this ); @@ -382,7 +382,7 @@ DIALOG_SYMBOL_PROPERTIES_BASE::~DIALOG_SYMBOL_PROPERTIES_BASE() m_bpMoveUp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnMoveUp ), NULL, this ); m_bpMoveDown->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnMoveDown ), NULL, this ); m_bpDelete->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnDeleteField ), NULL, this ); - m_unitChoice->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnChoice ), NULL, this ); + m_unitChoice->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnUnitChoice ), NULL, this ); m_cbAlternateSymbol->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnCheckBox ), NULL, this ); m_orientationCtrl->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnChoice ), NULL, this ); m_mirrorCtrl->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_SYMBOL_PROPERTIES_BASE::OnChoice ), NULL, this ); diff --git a/eeschema/dialogs/dialog_symbol_properties_base.fbp b/eeschema/dialogs/dialog_symbol_properties_base.fbp index a04a121577..c0cc01f30e 100644 --- a/eeschema/dialogs/dialog_symbol_properties_base.fbp +++ b/eeschema/dialogs/dialog_symbol_properties_base.fbp @@ -1,6 +1,6 @@ - + ; C++ @@ -14,6 +14,7 @@ dialog_symbol_properties_base 1000 none + 1 dialog_edit_component_in_schematic_base @@ -25,6 +26,7 @@ 1 1 UI + 0 0 0 @@ -50,6 +52,7 @@ DIALOG_SHIM; dialog_shim.h Symbol Properties + 0 @@ -302,6 +305,7 @@ + 0 @@ -375,6 +379,7 @@ + 0 @@ -448,6 +453,7 @@ + 0 @@ -531,6 +537,7 @@ + 0 @@ -770,7 +777,7 @@ - OnChoice + OnUnitChoice @@ -1497,6 +1504,7 @@ + 0 @@ -1570,6 +1578,7 @@ + 0 @@ -1643,6 +1652,7 @@ + 0 @@ -1726,6 +1736,7 @@ + 0 @@ -2127,6 +2138,7 @@ + 0 diff --git a/eeschema/dialogs/dialog_symbol_properties_base.h b/eeschema/dialogs/dialog_symbol_properties_base.h index e93aa1fca1..9b6efef2d6 100644 --- a/eeschema/dialogs/dialog_symbol_properties_base.h +++ b/eeschema/dialogs/dialog_symbol_properties_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 26 2018) +// C++ code generated with wxFormBuilder (version 3.10.0-39-g3487c3cb) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -78,7 +78,7 @@ class DIALOG_SYMBOL_PROPERTIES_BASE : public DIALOG_SHIM wxButton* m_stdDialogButtonSizerOK; wxButton* m_stdDialogButtonSizerCancel; - // Virtual event handlers, overide them in your derived class + // Virtual event handlers, override them in your derived class virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); } virtual void OnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); } virtual void OnGridEditorHidden( wxGridEvent& event ) { event.Skip(); } @@ -88,8 +88,9 @@ class DIALOG_SYMBOL_PROPERTIES_BASE : public DIALOG_SHIM virtual void OnMoveUp( wxCommandEvent& event ) { event.Skip(); } virtual void OnMoveDown( wxCommandEvent& event ) { event.Skip(); } virtual void OnDeleteField( wxCommandEvent& event ) { event.Skip(); } - virtual void OnChoice( wxCommandEvent& event ) { event.Skip(); } + virtual void OnUnitChoice( wxCommandEvent& event ) { event.Skip(); } virtual void OnCheckBox( wxCommandEvent& event ) { event.Skip(); } + virtual void OnChoice( wxCommandEvent& event ) { event.Skip(); } virtual void OnUpdateSymbol( wxCommandEvent& event ) { event.Skip(); } virtual void OnExchangeSymbol( wxCommandEvent& event ) { event.Skip(); } virtual void OnEditSymbol( wxCommandEvent& event ) { event.Skip(); } @@ -103,6 +104,7 @@ class DIALOG_SYMBOL_PROPERTIES_BASE : public DIALOG_SHIM public: DIALOG_SYMBOL_PROPERTIES_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Symbol Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU ); + ~DIALOG_SYMBOL_PROPERTIES_BASE(); };