Move RecordERCExclusions and ResolveERCExclusions out of the schematic frame
This commit is contained in:
parent
50a4a8639e
commit
f341fde938
|
@ -380,7 +380,7 @@ void DIALOG_ERC::OnRunERCClick( wxCommandEvent& event )
|
||||||
|
|
||||||
UpdateAnnotationWarning();
|
UpdateAnnotationWarning();
|
||||||
|
|
||||||
m_parent->RecordERCExclusions();
|
sch->RecordERCExclusions();
|
||||||
deleteAllMarkers( true );
|
deleteAllMarkers( true );
|
||||||
|
|
||||||
std::vector<std::reference_wrapper<RC_ITEM>> violations = ERC_ITEM::GetItemsWithSeverities();
|
std::vector<std::reference_wrapper<RC_ITEM>> violations = ERC_ITEM::GetItemsWithSeverities();
|
||||||
|
|
|
@ -132,7 +132,7 @@ void SCH_EDIT_FRAME::saveProjectSettings()
|
||||||
if( !fn.HasName() || !IsWritable( fn, false ) )
|
if( !fn.HasName() || !IsWritable( fn, false ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
RecordERCExclusions();
|
Schematic().RecordERCExclusions();
|
||||||
|
|
||||||
if( Kiway().Player( FRAME_SIMULATOR, false ) )
|
if( Kiway().Player( FRAME_SIMULATOR, false ) )
|
||||||
Prj().GetProjectFile().m_SchematicSettings->m_NgspiceSettings->SaveToFile();
|
Prj().GetProjectFile().m_SchematicSettings->m_NgspiceSettings->SaveToFile();
|
||||||
|
|
|
@ -1175,6 +1175,5 @@ void ERC_TESTER::RunTests( SCHEMATIC* aSch, DS_PROXY_VIEW_ITEM* aDrawingSheet,
|
||||||
TestOffGridEndpoints( aEditFrame->GetCanvas()->GetView()->GetGAL()->GetGridSize().x );
|
TestOffGridEndpoints( aEditFrame->GetCanvas()->GetView()->GetGAL()->GetGridSize().x );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( aEditFrame )
|
aSch->ResolveERCExclusionsPostUpdate();
|
||||||
aEditFrame->ResolveERCExclusions();
|
|
||||||
}
|
}
|
|
@ -495,7 +495,7 @@ bool SCH_EDIT_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, in
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load any exclusions from the project file
|
// Load any exclusions from the project file
|
||||||
ResolveERCExclusions();
|
Schematic().ResolveERCExclusionsPostUpdate();
|
||||||
|
|
||||||
initScreenZoom();
|
initScreenZoom();
|
||||||
SetSheetNumberAndCount();
|
SetSheetNumberAndCount();
|
||||||
|
|
|
@ -1046,43 +1046,6 @@ void SCH_EDIT_FRAME::doCloseWindow()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_EDIT_FRAME::RecordERCExclusions()
|
|
||||||
{
|
|
||||||
SCH_SHEET_LIST sheetList = Schematic().GetSheets();
|
|
||||||
ERC_SETTINGS& ercSettings = Schematic().ErcSettings();
|
|
||||||
|
|
||||||
ercSettings.m_ErcExclusions.clear();
|
|
||||||
|
|
||||||
for( unsigned i = 0; i < sheetList.size(); i++ )
|
|
||||||
{
|
|
||||||
for( SCH_ITEM* item : sheetList[i].LastScreen()->Items().OfType( SCH_MARKER_T ) )
|
|
||||||
{
|
|
||||||
SCH_MARKER* marker = static_cast<SCH_MARKER*>( item );
|
|
||||||
|
|
||||||
if( marker->IsExcluded() )
|
|
||||||
ercSettings.m_ErcExclusions.insert( marker->Serialize() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void SCH_EDIT_FRAME::ResolveERCExclusions()
|
|
||||||
{
|
|
||||||
SCH_SHEET_LIST sheetList = Schematic().GetSheets();
|
|
||||||
|
|
||||||
for( SCH_MARKER* marker : Schematic().ResolveERCExclusions() )
|
|
||||||
{
|
|
||||||
SCH_SHEET_PATH errorPath;
|
|
||||||
ignore_unused( sheetList.GetItem( marker->GetRCItem()->GetMainItemID(), &errorPath ) );
|
|
||||||
|
|
||||||
if( errorPath.LastScreen() )
|
|
||||||
errorPath.LastScreen()->Append( marker );
|
|
||||||
else
|
|
||||||
Schematic().RootScreen()->Append( marker );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SEVERITY SCH_EDIT_FRAME::GetSeverity( int aErrorCode ) const
|
SEVERITY SCH_EDIT_FRAME::GetSeverity( int aErrorCode ) const
|
||||||
{
|
{
|
||||||
return Schematic().ErcSettings().GetSeverity( aErrorCode );
|
return Schematic().ErcSettings().GetSeverity( aErrorCode );
|
||||||
|
|
|
@ -197,16 +197,6 @@ public:
|
||||||
*/
|
*/
|
||||||
void OnModify() override;
|
void OnModify() override;
|
||||||
|
|
||||||
/**
|
|
||||||
* Scan existing markers and record data from any that are Excluded.
|
|
||||||
*/
|
|
||||||
void RecordERCExclusions();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update markers to match recorded exclusions.
|
|
||||||
*/
|
|
||||||
void ResolveERCExclusions();
|
|
||||||
|
|
||||||
SEVERITY GetSeverity( int aErrorCode ) const override;
|
SEVERITY GetSeverity( int aErrorCode ) const override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
#include <bus_alias.h>
|
#include <bus_alias.h>
|
||||||
#include <connection_graph.h>
|
#include <connection_graph.h>
|
||||||
|
#include <core/ignore.h>
|
||||||
#include <core/kicad_algo.h>
|
#include <core/kicad_algo.h>
|
||||||
#include <erc_settings.h>
|
#include <erc_settings.h>
|
||||||
#include <sch_marker.h>
|
#include <sch_marker.h>
|
||||||
|
@ -715,4 +716,41 @@ void SCHEMATIC::RemoveAllListeners()
|
||||||
void SCHEMATIC::OnItemsChanged( std::vector<SCH_ITEM*>& aItems )
|
void SCHEMATIC::OnItemsChanged( std::vector<SCH_ITEM*>& aItems )
|
||||||
{
|
{
|
||||||
InvokeListeners( &SCHEMATIC_LISTENER::OnSchItemsChanged, *this, aItems );
|
InvokeListeners( &SCHEMATIC_LISTENER::OnSchItemsChanged, *this, aItems );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCHEMATIC::RecordERCExclusions()
|
||||||
|
{
|
||||||
|
SCH_SHEET_LIST sheetList = GetSheets();
|
||||||
|
ERC_SETTINGS& ercSettings = ErcSettings();
|
||||||
|
|
||||||
|
ercSettings.m_ErcExclusions.clear();
|
||||||
|
|
||||||
|
for( unsigned i = 0; i < sheetList.size(); i++ )
|
||||||
|
{
|
||||||
|
for( SCH_ITEM* item : sheetList[i].LastScreen()->Items().OfType( SCH_MARKER_T ) )
|
||||||
|
{
|
||||||
|
SCH_MARKER* marker = static_cast<SCH_MARKER*>( item );
|
||||||
|
|
||||||
|
if( marker->IsExcluded() )
|
||||||
|
ercSettings.m_ErcExclusions.insert( marker->Serialize() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SCHEMATIC::ResolveERCExclusionsPostUpdate()
|
||||||
|
{
|
||||||
|
SCH_SHEET_LIST sheetList = GetSheets();
|
||||||
|
|
||||||
|
for( SCH_MARKER* marker : ResolveERCExclusions() )
|
||||||
|
{
|
||||||
|
SCH_SHEET_PATH errorPath;
|
||||||
|
ignore_unused( sheetList.GetItem( marker->GetRCItem()->GetMainItemID(), &errorPath ) );
|
||||||
|
|
||||||
|
if( errorPath.LastScreen() )
|
||||||
|
errorPath.LastScreen()->Append( marker );
|
||||||
|
else
|
||||||
|
RootScreen()->Append( marker );
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -239,6 +239,16 @@ public:
|
||||||
*/
|
*/
|
||||||
void FixupJunctions();
|
void FixupJunctions();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scan existing markers and record data from any that are Excluded.
|
||||||
|
*/
|
||||||
|
void RecordERCExclusions();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update markers to match recorded exclusions.
|
||||||
|
*/
|
||||||
|
void ResolveERCExclusionsPostUpdate();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Must be used if Add() is used using a BULK_x ADD_MODE to generate a change event for
|
* Must be used if Add() is used using a BULK_x ADD_MODE to generate a change event for
|
||||||
* listeners.
|
* listeners.
|
||||||
|
|
Loading…
Reference in New Issue