Browse Source

ADDED: importing bus aliases from Schematic Setup.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18465
jobs
Jeff Young 1 year ago
parent
commit
a6eec63688
  1. 1
      eeschema/dialogs/dialog_sch_import_settings.cpp
  2. 19
      eeschema/dialogs/dialog_sch_import_settings_base.cpp
  3. 1864
      eeschema/dialogs/dialog_sch_import_settings_base.fbp
  4. 9
      eeschema/dialogs/dialog_sch_import_settings_base.h
  5. 46
      eeschema/dialogs/dialog_schematic_setup.cpp
  6. 18
      eeschema/dialogs/panel_setup_buses.cpp
  7. 4
      eeschema/dialogs/panel_setup_buses.h

1
eeschema/dialogs/dialog_sch_import_settings.cpp

@ -89,4 +89,5 @@ void DIALOG_SCH_IMPORT_SETTINGS::OnSelectAll( wxCommandEvent& event )
m_NetClassesOpt->SetValue( true );
m_BomPresetsOpt->SetValue( true );
m_BomFmtPresetsOpt->SetValue( true );
m_BusAliasesOpt->SetValue( true );
}

19
eeschema/dialogs/dialog_sch_import_settings_base.cpp

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -51,20 +51,23 @@ DIALOG_SCH_IMPORT_SETTINGS_BASE::DIALOG_SCH_IMPORT_SETTINGS_BASE( wxWindow* pare
m_FieldNameTemplatesOpt = new wxCheckBox( this, wxID_ANY, _("Field name templates"), wxDefaultPosition, wxDefaultSize, 0 );
bmiddleSizer->Add( m_FieldNameTemplatesOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_PinMapOpt = new wxCheckBox( this, wxID_ANY, _("Pin conflict map"), wxDefaultPosition, wxDefaultSize, 0 );
bmiddleSizer->Add( m_PinMapOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_BomPresetsOpt = new wxCheckBox( this, wxID_ANY, _("BOM presets"), wxDefaultPosition, wxDefaultSize, 0 );
bmiddleSizer->Add( m_BomPresetsOpt, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
m_BomFmtPresetsOpt = new wxCheckBox( this, wxID_ANY, _("BOM format presets"), wxDefaultPosition, wxDefaultSize, 0 );
bmiddleSizer->Add( m_BomFmtPresetsOpt, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
m_SeveritiesOpt = new wxCheckBox( this, wxID_ANY, _("Violation severities"), wxDefaultPosition, wxDefaultSize, 0 );
bmiddleSizer->Add( m_SeveritiesOpt, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
m_PinMapOpt = new wxCheckBox( this, wxID_ANY, _("Pin conflict map"), wxDefaultPosition, wxDefaultSize, 0 );
bmiddleSizer->Add( m_PinMapOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_NetClassesOpt = new wxCheckBox( this, wxID_ANY, _("Net classes"), wxDefaultPosition, wxDefaultSize, 0 );
bmiddleSizer->Add( m_NetClassesOpt, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
m_BomPresetsOpt = new wxCheckBox( this, wxID_ANY, _("BOM Presets"), wxDefaultPosition, wxDefaultSize, 0 );
bmiddleSizer->Add( m_BomPresetsOpt, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
m_BomFmtPresetsOpt = new wxCheckBox( this, wxID_ANY, _("BOM Format Presets"), wxDefaultPosition, wxDefaultSize, 0 );
bmiddleSizer->Add( m_BomFmtPresetsOpt, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
m_BusAliasesOpt = new wxCheckBox( this, wxID_ANY, _("Bus alias definitions"), wxDefaultPosition, wxDefaultSize, 0 );
bmiddleSizer->Add( m_BusAliasesOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_MainSizer->Add( bmiddleSizer, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 10 );

1864
eeschema/dialogs/dialog_sch_import_settings_base.fbp
File diff suppressed because it is too large
View File

9
eeschema/dialogs/dialog_sch_import_settings_base.h

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -56,11 +56,12 @@ class DIALOG_SCH_IMPORT_SETTINGS_BASE : public DIALOG_SHIM
public:
wxCheckBox* m_FormattingOpt;
wxCheckBox* m_FieldNameTemplatesOpt;
wxCheckBox* m_PinMapOpt;
wxCheckBox* m_SeveritiesOpt;
wxCheckBox* m_NetClassesOpt;
wxCheckBox* m_BomPresetsOpt;
wxCheckBox* m_BomFmtPresetsOpt;
wxCheckBox* m_SeveritiesOpt;
wxCheckBox* m_PinMapOpt;
wxCheckBox* m_NetClassesOpt;
wxCheckBox* m_BusAliasesOpt;
DIALOG_SCH_IMPORT_SETTINGS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Import Settings"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );

46
eeschema/dialogs/dialog_schematic_setup.cpp

@ -34,6 +34,7 @@
#include <project/project_file.h>
#include <project/net_settings.h>
#include <settings/settings_manager.h>
#include <widgets/wx_progress_reporters.h>
#include "dialog_schematic_setup.h"
#include "panel_template_fieldnames.h"
@ -241,6 +242,51 @@ void DIALOG_SCHEMATIC_SETUP::onAuxiliaryAction( wxCommandEvent& event )
->ImportBomFmtPresetsFrom( *file.m_SchematicSettings );
}
if( importDlg.m_BusAliasesOpt->GetValue() )
{
wxFileName schematicFn( projectFn );
schematicFn.SetExt( FILEEXT::KiCadSchematicFileExtension );
wxString fullFileName = schematicFn.GetFullPath();
wxString msg;
IO_RELEASER<SCH_IO> pi( SCH_IO_MGR::FindPlugin( SCH_IO_MGR::SCH_KICAD ) );
WX_PROGRESS_REPORTER progressReporter( this, _( "Loading Bus Aliases" ), 1 );
pi->SetProgressReporter( &progressReporter );
try
{
wxBusyCursor busy;
otherSch.SetRoot( pi->LoadSchematicFile( fullFileName, &otherSch ) );
// Make ${SHEETNAME} work on the root sheet until we properly support
// naming the root sheet
otherSch.Root().SetName( _( "Root" ) );
}
catch( const FUTURE_FORMAT_ERROR& ffe )
{
msg.Printf( _( "Error fetching bus aliases. Could not load schematic '%s'." ),
fullFileName );
progressReporter.Hide();
DisplayErrorMessage( this, msg, ffe.Problem() );
}
catch( const IO_ERROR& ioe )
{
msg.Printf( _( "Error fetching bus aliases. Could not load schematic '%s'." ),
fullFileName );
progressReporter.Hide();
DisplayErrorMessage( this, msg, ioe.What() );
}
// This fixes a focus issue after the progress reporter is done on GTK. It shouldn't
// cause any issues on macOS and Windows. If it does, it will have to be conditionally
// compiled.
Raise();
static_cast<PANEL_SETUP_BUSES*>( m_treebook->ResolvePage( m_busesPage ) )
->ImportSettingsFrom( otherSch );
}
if( !alreadyLoaded )
m_frame->GetSettingsManager()->UnloadProject( otherPrj, false );
}

18
eeschema/dialogs/panel_setup_buses.cpp

@ -88,7 +88,8 @@ PANEL_SETUP_BUSES::~PANEL_SETUP_BUSES()
nullptr, this );
}
bool PANEL_SETUP_BUSES::TransferDataToWindow()
void PANEL_SETUP_BUSES::loadAliases( const SCHEMATIC& aSchematic )
{
auto contains =
[&]( const std::shared_ptr<BUS_ALIAS>& alias ) -> bool
@ -112,7 +113,7 @@ bool PANEL_SETUP_BUSES::TransferDataToWindow()
return false;
};
SCH_SCREENS screens( m_frame->Schematic().Root() );
SCH_SCREENS screens( aSchematic.Root() );
// collect aliases from each open sheet
for( SCH_SCREEN* screen = screens.GetFirst(); screen != nullptr; screen = screens.GetNext() )
@ -133,7 +134,12 @@ bool PANEL_SETUP_BUSES::TransferDataToWindow()
m_aliasesGrid->SetCellValue( ii++, 0, alias->GetName() );
m_membersBook->SetSelection( 1 );
}
bool PANEL_SETUP_BUSES::TransferDataToWindow()
{
loadAliases( m_frame->Schematic() );
return true;
}
@ -459,3 +465,11 @@ void PANEL_SETUP_BUSES::OnUpdateUI( wxUpdateUIEvent& event )
}
void PANEL_SETUP_BUSES::ImportSettingsFrom( const SCHEMATIC& aOtherSchematic )
{
loadAliases( aOtherSchematic );
// New aliases get stored on the currently visible sheet
for( const std::shared_ptr<BUS_ALIAS>& alias : m_aliases )
alias->SetParent( m_frame->GetScreen() );
}

4
eeschema/dialogs/panel_setup_buses.h

@ -40,6 +40,8 @@ public:
bool TransferDataFromWindow() override;
bool TransferDataToWindow() override;
void ImportSettingsFrom( const SCHEMATIC& aOtherSchematic );
protected:
void OnAddAlias( wxCommandEvent& aEvent ) override;
void OnDeleteAlias( wxCommandEvent& aEvent ) override;
@ -50,6 +52,8 @@ protected:
void OnSizeGrid( wxSizeEvent& event ) override;
void OnUpdateUI( wxUpdateUIEvent& event ) override;
void loadAliases( const SCHEMATIC& aSchematic );
void reloadMembersGridOnIdle( wxIdleEvent& aEvent );
void doReloadMembersGrid();

Loading…
Cancel
Save