|
|
|
@ -53,12 +53,12 @@ |
|
|
|
#include <wx/progdlg.h>
|
|
|
|
|
|
|
|
|
|
|
|
void DRC::ShowDialog() |
|
|
|
void DRC::ShowDialog( wxWindow* aParent ) |
|
|
|
{ |
|
|
|
if( !m_drcDialog ) |
|
|
|
{ |
|
|
|
m_mainWindow->GetToolManager()->RunAction( COMMON_ACTIONS::selectionClear, true ); |
|
|
|
m_drcDialog = new DIALOG_DRC_CONTROL( this, m_mainWindow ); |
|
|
|
m_pcbEditorFrame->GetToolManager()->RunAction( COMMON_ACTIONS::selectionClear, true ); |
|
|
|
m_drcDialog = new DIALOG_DRC_CONTROL( this, m_pcbEditorFrame, aParent ); |
|
|
|
updatePointers(); |
|
|
|
|
|
|
|
m_drcDialog->SetRptSettings( m_doCreateRptFile, m_rptFilename); |
|
|
|
@ -88,7 +88,7 @@ void DRC::DestroyDialog( int aReason ) |
|
|
|
|
|
|
|
DRC::DRC( PCB_EDIT_FRAME* aPcbWindow ) |
|
|
|
{ |
|
|
|
m_mainWindow = aPcbWindow; |
|
|
|
m_pcbEditorFrame = aPcbWindow; |
|
|
|
m_pcb = aPcbWindow->GetBoard(); |
|
|
|
m_drcDialog = NULL; |
|
|
|
|
|
|
|
@ -132,7 +132,7 @@ int DRC::Drc( TRACK* aRefSegm, TRACK* aList ) |
|
|
|
{ |
|
|
|
wxASSERT( m_currentMarker ); |
|
|
|
|
|
|
|
m_mainWindow->SetMsgPanel( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->SetMsgPanel( m_currentMarker ); |
|
|
|
return BAD_DRC; |
|
|
|
} |
|
|
|
|
|
|
|
@ -140,7 +140,7 @@ int DRC::Drc( TRACK* aRefSegm, TRACK* aList ) |
|
|
|
{ |
|
|
|
wxASSERT( m_currentMarker ); |
|
|
|
|
|
|
|
m_mainWindow->SetMsgPanel( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->SetMsgPanel( m_currentMarker ); |
|
|
|
return BAD_DRC; |
|
|
|
} |
|
|
|
|
|
|
|
@ -155,7 +155,7 @@ int DRC::Drc( ZONE_CONTAINER* aArea, int aCornerIndex ) |
|
|
|
if( !doEdgeZoneDrc( aArea, aCornerIndex ) ) |
|
|
|
{ |
|
|
|
wxASSERT( m_currentMarker ); |
|
|
|
m_mainWindow->SetMsgPanel( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->SetMsgPanel( m_currentMarker ); |
|
|
|
return BAD_DRC; |
|
|
|
} |
|
|
|
|
|
|
|
@ -167,7 +167,7 @@ void DRC::RunTests( wxTextCtrl* aMessages ) |
|
|
|
{ |
|
|
|
// be sure m_pcb is the current board, not a old one
|
|
|
|
// ( the board can be reloaded )
|
|
|
|
m_pcb = m_mainWindow->GetBoard(); |
|
|
|
m_pcb = m_pcbEditorFrame->GetBoard(); |
|
|
|
|
|
|
|
// Ensure ratsnest is up to date:
|
|
|
|
if( (m_pcb->m_Status_Pcb & LISTE_RATSNEST_ITEM_OK) == 0 ) |
|
|
|
@ -178,7 +178,7 @@ void DRC::RunTests( wxTextCtrl* aMessages ) |
|
|
|
wxSafeYield(); |
|
|
|
} |
|
|
|
|
|
|
|
m_mainWindow->Compile_Ratsnest( NULL, true ); |
|
|
|
m_pcbEditorFrame->Compile_Ratsnest( NULL, true ); |
|
|
|
} |
|
|
|
|
|
|
|
// someone should have cleared the two lists before calling this.
|
|
|
|
@ -217,7 +217,7 @@ void DRC::RunTests( wxTextCtrl* aMessages ) |
|
|
|
wxSafeYield(); |
|
|
|
} |
|
|
|
|
|
|
|
testTracks( aMessages ? aMessages->GetParent() : m_mainWindow, true ); |
|
|
|
testTracks( aMessages ? aMessages->GetParent() : m_pcbEditorFrame, true ); |
|
|
|
|
|
|
|
// Before testing segments and unconnected, refill all zones:
|
|
|
|
// this is a good caution, because filled areas can be outdated.
|
|
|
|
@ -227,7 +227,7 @@ void DRC::RunTests( wxTextCtrl* aMessages ) |
|
|
|
wxSafeYield(); |
|
|
|
} |
|
|
|
|
|
|
|
m_mainWindow->Fill_All_Zones( aMessages ? aMessages->GetParent() : m_mainWindow, |
|
|
|
m_pcbEditorFrame->Fill_All_Zones( aMessages ? aMessages->GetParent() : m_pcbEditorFrame, |
|
|
|
false ); |
|
|
|
|
|
|
|
// test zone clearances to other zones
|
|
|
|
@ -295,8 +295,8 @@ void DRC::ListUnconnectedPads() |
|
|
|
|
|
|
|
void DRC::updatePointers() |
|
|
|
{ |
|
|
|
// update my pointers, m_mainWindow is the only unchangeable one
|
|
|
|
m_pcb = m_mainWindow->GetBoard(); |
|
|
|
// update my pointers, m_pcbEditorFrame is the only unchangeable one
|
|
|
|
m_pcb = m_pcbEditorFrame->GetBoard(); |
|
|
|
|
|
|
|
if( m_drcDialog ) // Use diag list boxes only in DRC dialog
|
|
|
|
{ |
|
|
|
@ -325,7 +325,7 @@ bool DRC::doNetClass( NETCLASSPTR nc, wxString& msg ) |
|
|
|
|
|
|
|
m_currentMarker = fillMarker( DRCE_NETCLASS_CLEARANCE, msg, m_currentMarker ); |
|
|
|
m_pcb->Add( m_currentMarker ); |
|
|
|
m_mainWindow->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_currentMarker = 0; |
|
|
|
ret = false; |
|
|
|
} |
|
|
|
@ -341,7 +341,7 @@ bool DRC::doNetClass( NETCLASSPTR nc, wxString& msg ) |
|
|
|
|
|
|
|
m_currentMarker = fillMarker( DRCE_NETCLASS_TRACKWIDTH, msg, m_currentMarker ); |
|
|
|
m_pcb->Add( m_currentMarker ); |
|
|
|
m_mainWindow->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_currentMarker = 0; |
|
|
|
ret = false; |
|
|
|
} |
|
|
|
@ -356,7 +356,7 @@ bool DRC::doNetClass( NETCLASSPTR nc, wxString& msg ) |
|
|
|
|
|
|
|
m_currentMarker = fillMarker( DRCE_NETCLASS_VIASIZE, msg, m_currentMarker ); |
|
|
|
m_pcb->Add( m_currentMarker ); |
|
|
|
m_mainWindow->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_currentMarker = 0; |
|
|
|
ret = false; |
|
|
|
} |
|
|
|
@ -371,7 +371,7 @@ bool DRC::doNetClass( NETCLASSPTR nc, wxString& msg ) |
|
|
|
|
|
|
|
m_currentMarker = fillMarker( DRCE_NETCLASS_VIADRILLSIZE, msg, m_currentMarker ); |
|
|
|
m_pcb->Add( m_currentMarker ); |
|
|
|
m_mainWindow->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_currentMarker = 0; |
|
|
|
ret = false; |
|
|
|
} |
|
|
|
@ -386,7 +386,7 @@ bool DRC::doNetClass( NETCLASSPTR nc, wxString& msg ) |
|
|
|
|
|
|
|
m_currentMarker = fillMarker( DRCE_NETCLASS_uVIASIZE, msg, m_currentMarker ); |
|
|
|
m_pcb->Add( m_currentMarker ); |
|
|
|
m_mainWindow->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_currentMarker = 0; |
|
|
|
ret = false; |
|
|
|
} |
|
|
|
@ -401,7 +401,7 @@ bool DRC::doNetClass( NETCLASSPTR nc, wxString& msg ) |
|
|
|
|
|
|
|
m_currentMarker = fillMarker( DRCE_NETCLASS_uVIADRILLSIZE, msg, m_currentMarker ); |
|
|
|
m_pcb->Add( m_currentMarker ); |
|
|
|
m_mainWindow->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_currentMarker = 0; |
|
|
|
ret = false; |
|
|
|
} |
|
|
|
@ -466,7 +466,7 @@ void DRC::testPad2Pad() |
|
|
|
{ |
|
|
|
wxASSERT( m_currentMarker ); |
|
|
|
m_pcb->Add( m_currentMarker ); |
|
|
|
m_mainWindow->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_currentMarker = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -519,7 +519,7 @@ void DRC::testTracks( wxWindow *aActiveWindow, bool aShowProgressBar ) |
|
|
|
{ |
|
|
|
wxASSERT( m_currentMarker ); |
|
|
|
m_pcb->Add( m_currentMarker ); |
|
|
|
m_mainWindow->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_currentMarker = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -533,8 +533,8 @@ void DRC::testUnconnected() |
|
|
|
{ |
|
|
|
if( (m_pcb->m_Status_Pcb & LISTE_RATSNEST_ITEM_OK) == 0 ) |
|
|
|
{ |
|
|
|
wxClientDC dc( m_mainWindow->GetCanvas() ); |
|
|
|
m_mainWindow->Compile_Ratsnest( &dc, true ); |
|
|
|
wxClientDC dc( m_pcbEditorFrame->GetCanvas() ); |
|
|
|
m_pcbEditorFrame->Compile_Ratsnest( &dc, true ); |
|
|
|
} |
|
|
|
|
|
|
|
if( m_pcb->GetRatsnestsCount() == 0 ) |
|
|
|
@ -594,7 +594,7 @@ void DRC::testZones() |
|
|
|
m_currentMarker = fillMarker( test_area, |
|
|
|
DRCE_SUSPICIOUS_NET_FOR_ZONE_OUTLINE, m_currentMarker ); |
|
|
|
m_pcb->Add( m_currentMarker ); |
|
|
|
m_mainWindow->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_currentMarker = NULL; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -630,7 +630,7 @@ void DRC::testKeepoutAreas() |
|
|
|
m_currentMarker = fillMarker( segm, NULL, |
|
|
|
DRCE_TRACK_INSIDE_KEEPOUT, m_currentMarker ); |
|
|
|
m_pcb->Add( m_currentMarker ); |
|
|
|
m_mainWindow->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_currentMarker = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -647,7 +647,7 @@ void DRC::testKeepoutAreas() |
|
|
|
m_currentMarker = fillMarker( segm, NULL, |
|
|
|
DRCE_VIA_INSIDE_KEEPOUT, m_currentMarker ); |
|
|
|
m_pcb->Add( m_currentMarker ); |
|
|
|
m_mainWindow->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_currentMarker = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -708,7 +708,7 @@ void DRC::testTexts() |
|
|
|
DRCE_TRACK_INSIDE_TEXT, |
|
|
|
m_currentMarker ); |
|
|
|
m_pcb->Add( m_currentMarker ); |
|
|
|
m_mainWindow->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_currentMarker = NULL; |
|
|
|
break; |
|
|
|
} |
|
|
|
@ -727,7 +727,7 @@ void DRC::testTexts() |
|
|
|
m_currentMarker = fillMarker( track, text, |
|
|
|
DRCE_VIA_INSIDE_TEXT, m_currentMarker ); |
|
|
|
m_pcb->Add( m_currentMarker ); |
|
|
|
m_mainWindow->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_currentMarker = NULL; |
|
|
|
break; |
|
|
|
} |
|
|
|
@ -777,7 +777,7 @@ void DRC::testTexts() |
|
|
|
m_currentMarker = fillMarker( pad, text, |
|
|
|
DRCE_PAD_INSIDE_TEXT, m_currentMarker ); |
|
|
|
m_pcb->Add( m_currentMarker ); |
|
|
|
m_mainWindow->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_pcbEditorFrame->GetGalCanvas()->GetView()->Add( m_currentMarker ); |
|
|
|
m_currentMarker = NULL; |
|
|
|
break; |
|
|
|
} |
|
|
|
|