Eeschema: better ERC diags (work in progress)
This commit is contained in:
parent
e80d075078
commit
fe5694f970
|
@ -51,6 +51,7 @@ set(EESCHEMA_SRCS
|
|||
dialog_eeschema_config.cpp
|
||||
dialog_eeschema_config_fbp.cpp
|
||||
dialog_erc.cpp
|
||||
dialog_erc_base.cpp
|
||||
# dialog_find.cpp
|
||||
dialog_options.cpp
|
||||
dialog_print_using_printer_base.cpp
|
||||
|
|
|
@ -3,86 +3,53 @@
|
|||
// Purpose:
|
||||
// Author: jean-pierre Charras
|
||||
// Modified by:
|
||||
// Created: 12/02/2006 17:08:38
|
||||
// RCS-ID:
|
||||
// Copyright: License GNU
|
||||
// Licence:
|
||||
// Created: 02/07/2000
|
||||
// Licence: GPL
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Generated by DialogBlocks (unregistered), 12/02/2006 17:08:38
|
||||
|
||||
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
|
||||
#pragma implementation "dialog_erc.h"
|
||||
#endif
|
||||
|
||||
////@begin includes
|
||||
////@end includes
|
||||
#include "fctsys.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "class_drawpanel.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
#include "netlist.h"
|
||||
#include "bitmaps.h"
|
||||
|
||||
#include "protos.h"
|
||||
|
||||
#include "dialog_erc.h"
|
||||
|
||||
////@begin XPM images
|
||||
////@end XPM images
|
||||
|
||||
/*!
|
||||
* WinEDA_ErcFrame type definition
|
||||
*/
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS( WinEDA_ErcFrame, wxDialog )
|
||||
|
||||
/*!
|
||||
* WinEDA_ErcFrame event table definition
|
||||
*/
|
||||
|
||||
BEGIN_EVENT_TABLE( WinEDA_ErcFrame, wxDialog )
|
||||
|
||||
////@begin WinEDA_ErcFrame event table entries
|
||||
EVT_BUTTON( ID_ERC_CMP, WinEDA_ErcFrame::OnErcCmpClick )
|
||||
|
||||
EVT_BUTTON( ID_ERASE_DRC_MARKERS, WinEDA_ErcFrame::OnEraseDrcMarkersClick )
|
||||
|
||||
EVT_BUTTON( wxID_CANCEL, WinEDA_ErcFrame::OnCancelClick )
|
||||
|
||||
EVT_BUTTON( ID_RESET_MATRIX, WinEDA_ErcFrame::OnResetMatrixClick )
|
||||
|
||||
////@end WinEDA_ErcFrame event table entries
|
||||
|
||||
BEGIN_EVENT_TABLE( DIALOG_ERC, DIALOG_ERC_BASE )
|
||||
EVT_COMMAND_RANGE(ID_MATRIX_0,
|
||||
ID_MATRIX_0 + (PIN_NMAX * PIN_NMAX) - 1,
|
||||
wxEVT_COMMAND_BUTTON_CLICKED,
|
||||
WinEDA_ErcFrame::ChangeErrorLevel)
|
||||
|
||||
DIALOG_ERC::ChangeErrorLevel)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
/*!
|
||||
* WinEDA_ErcFrame constructors
|
||||
*/
|
||||
|
||||
WinEDA_ErcFrame::WinEDA_ErcFrame( )
|
||||
DIALOG_ERC::DIALOG_ERC( WinEDA_SchematicFrame* parent )
|
||||
: DIALOG_ERC_BASE(parent)
|
||||
{
|
||||
}
|
||||
|
||||
WinEDA_ErcFrame::WinEDA_ErcFrame( WinEDA_SchematicFrame* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
int ii, jj;
|
||||
|
||||
m_Parent = parent;
|
||||
m_Initialized = FALSE;
|
||||
for( ii = 0; ii < PIN_NMAX; ii++ )
|
||||
for( jj = 0; jj < PIN_NMAX; jj++ )
|
||||
m_ButtonList[ii][jj] = NULL;
|
||||
Create(parent, id, caption, pos, size, style);
|
||||
Init();
|
||||
|
||||
GetSizer()->SetSizeHints(this);
|
||||
|
||||
}
|
||||
|
||||
void DIALOG_ERC::Init()
|
||||
{
|
||||
SetFocus();
|
||||
|
||||
m_Initialized = FALSE;
|
||||
for( int ii = 0; ii < PIN_NMAX; ii++ )
|
||||
for( int jj = 0; jj < PIN_NMAX; jj++ )
|
||||
m_ButtonList[ii][jj] = NULL;
|
||||
|
||||
m_WriteResultOpt->SetValue( WriteFichierERC );
|
||||
|
||||
wxString num;
|
||||
num.Printf(wxT("%d"), g_EESchemaVar.NbErrorErc);
|
||||
m_TotalErrCount->SetLabel(num);
|
||||
|
@ -93,201 +60,38 @@ int ii, jj;
|
|||
num.Printf(wxT("%d"), g_EESchemaVar.NbWarningErc);
|
||||
m_LastWarningCount->SetLabel(num);
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
* WinEDA_ErcFrame creator
|
||||
*/
|
||||
|
||||
bool WinEDA_ErcFrame::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
////@begin WinEDA_ErcFrame member initialisation
|
||||
m_NoteBook = NULL;
|
||||
m_PanelERC = NULL;
|
||||
m_PanelERCSizer = NULL;
|
||||
ErcTotalErrors = NULL;
|
||||
WarnErcErrors = NULL;
|
||||
ErcErrors = NULL;
|
||||
m_TotalErrCount = NULL;
|
||||
m_LastWarningCount = NULL;
|
||||
m_LastErrCount = NULL;
|
||||
m_WriteResultOpt = NULL;
|
||||
m_btClose = NULL;
|
||||
m_PanelERCOptions = NULL;
|
||||
m_PanelMatrixSizer = NULL;
|
||||
m_ResetOptButton = NULL;
|
||||
m_SeparatorLine = NULL;
|
||||
m_MatrixSizer = NULL;
|
||||
////@end WinEDA_ErcFrame member initialisation
|
||||
|
||||
////@begin WinEDA_ErcFrame creation
|
||||
SetExtraStyle(wxWS_EX_BLOCK_EVENTS);
|
||||
wxDialog::Create( parent, id, caption, pos, size, style );
|
||||
|
||||
CreateControls();
|
||||
if (GetSizer())
|
||||
{
|
||||
GetSizer()->SetSizeHints(this);
|
||||
}
|
||||
Centre();
|
||||
////@end WinEDA_ErcFrame creation
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Control creation for WinEDA_ErcFrame
|
||||
*/
|
||||
|
||||
void WinEDA_ErcFrame::CreateControls()
|
||||
{
|
||||
////@begin WinEDA_ErcFrame content construction
|
||||
// Generated by DialogBlocks, 24/04/2009 14:22:48 (unregistered)
|
||||
|
||||
WinEDA_ErcFrame* itemDialog1 = this;
|
||||
|
||||
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
|
||||
itemDialog1->SetSizer(itemBoxSizer2);
|
||||
|
||||
m_NoteBook = new wxNotebook( itemDialog1, ID_ERC_NOTEBOOK, wxDefaultPosition, wxDefaultSize, wxNB_DEFAULT|wxNB_TOP );
|
||||
|
||||
m_PanelERC = new wxPanel( m_NoteBook, ID_PANEL, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
|
||||
m_PanelERCSizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_PanelERC->SetSizer(m_PanelERCSizer);
|
||||
|
||||
wxBoxSizer* itemBoxSizer6 = new wxBoxSizer(wxVERTICAL);
|
||||
m_PanelERCSizer->Add(itemBoxSizer6, 0, wxGROW|wxALL, 5);
|
||||
wxStaticBox* itemStaticBoxSizer7Static = new wxStaticBox(m_PanelERC, wxID_ANY, _("Erc File Report:"));
|
||||
wxStaticBoxSizer* itemStaticBoxSizer7 = new wxStaticBoxSizer(itemStaticBoxSizer7Static, wxHORIZONTAL);
|
||||
itemBoxSizer6->Add(itemStaticBoxSizer7, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxVERTICAL);
|
||||
itemStaticBoxSizer7->Add(itemBoxSizer8, 0, wxGROW|wxLEFT|wxTOP|wxBOTTOM, 5);
|
||||
ErcTotalErrors = new wxStaticText( m_PanelERC, wxID_STATIC, _("Total Errors: "), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer8->Add(ErcTotalErrors, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);
|
||||
|
||||
WarnErcErrors = new wxStaticText( m_PanelERC, wxID_STATIC, _("Last Warnings: "), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer8->Add(WarnErcErrors, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);
|
||||
|
||||
ErcErrors = new wxStaticText( m_PanelERC, wxID_STATIC, _("Last Errors: "), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT );
|
||||
itemBoxSizer8->Add(ErcErrors, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer12 = new wxBoxSizer(wxVERTICAL);
|
||||
itemStaticBoxSizer7->Add(itemBoxSizer12, 0, wxGROW|wxRIGHT|wxTOP|wxBOTTOM, 5);
|
||||
m_TotalErrCount = new wxStaticText( m_PanelERC, wxID_STATIC, _("0000"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer12->Add(m_TotalErrCount, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);
|
||||
|
||||
m_LastWarningCount = new wxStaticText( m_PanelERC, wxID_STATIC, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer12->Add(m_LastWarningCount, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);
|
||||
|
||||
m_LastErrCount = new wxStaticText( m_PanelERC, wxID_STATIC, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer12->Add(m_LastErrCount, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);
|
||||
|
||||
itemBoxSizer6->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
wxStaticBox* itemStaticBoxSizer17Static = new wxStaticBox(m_PanelERC, wxID_ANY, _("Erc File Report:"));
|
||||
wxStaticBoxSizer* itemStaticBoxSizer17 = new wxStaticBoxSizer(itemStaticBoxSizer17Static, wxHORIZONTAL);
|
||||
itemBoxSizer6->Add(itemStaticBoxSizer17, 0, wxGROW|wxALL, 5);
|
||||
m_WriteResultOpt = new wxCheckBox( m_PanelERC, ID_CHECKBOX, _("Write erc report"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_WriteResultOpt->SetValue(false);
|
||||
itemStaticBoxSizer17->Add(m_WriteResultOpt, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer19 = new wxBoxSizer(wxVERTICAL);
|
||||
m_PanelERCSizer->Add(itemBoxSizer19, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
wxButton* itemButton20 = new wxButton( m_PanelERC, ID_ERC_CMP, _("&Test Erc"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer19->Add(itemButton20, 0, wxGROW|wxALL, 5);
|
||||
|
||||
wxButton* itemButton21 = new wxButton( m_PanelERC, ID_ERASE_DRC_MARKERS, _("&Del Markers"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer19->Add(itemButton21, 0, wxGROW|wxALL, 5);
|
||||
|
||||
m_btClose = new wxButton( m_PanelERC, wxID_CANCEL, _("&Close"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_btClose->SetDefault();
|
||||
itemBoxSizer19->Add(m_btClose, 0, wxGROW|wxALL, 5);
|
||||
|
||||
m_NoteBook->AddPage(m_PanelERC, _("erc"));
|
||||
|
||||
m_PanelERCOptions = new wxPanel( m_NoteBook, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
|
||||
m_PanelMatrixSizer = new wxBoxSizer(wxVERTICAL);
|
||||
m_PanelERCOptions->SetSizer(m_PanelMatrixSizer);
|
||||
|
||||
m_ResetOptButton = new wxButton( m_PanelERCOptions, ID_RESET_MATRIX, _("Reset"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_PanelMatrixSizer->Add(m_ResetOptButton, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_SeparatorLine = new wxStaticLine( m_PanelERCOptions, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
m_PanelMatrixSizer->Add(m_SeparatorLine, 0, wxGROW|wxALL, 5);
|
||||
|
||||
m_MatrixSizer = new wxBoxSizer(wxVERTICAL);
|
||||
m_PanelMatrixSizer->Add(m_MatrixSizer, 0, wxGROW|wxALL, 5);
|
||||
|
||||
m_NoteBook->AddPage(m_PanelERCOptions, _("Options"));
|
||||
|
||||
itemBoxSizer2->Add(m_NoteBook, 0, wxGROW|wxALL, 5);
|
||||
|
||||
// Set validators
|
||||
m_WriteResultOpt->SetValidator( wxGenericValidator(& WriteFichierERC) );
|
||||
////@end WinEDA_ErcFrame content construction
|
||||
|
||||
m_btClose->SetFocus();
|
||||
|
||||
// Init Panel Matrix
|
||||
ReBuildMatrixPanel();
|
||||
}
|
||||
|
||||
/*!
|
||||
* Should we show tooltips?
|
||||
*/
|
||||
|
||||
bool WinEDA_ErcFrame::ShowToolTips()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get bitmap resources
|
||||
*/
|
||||
|
||||
wxBitmap WinEDA_ErcFrame::GetBitmapResource( const wxString& name )
|
||||
{
|
||||
// Bitmap retrieval
|
||||
////@begin WinEDA_ErcFrame bitmap retrieval
|
||||
wxUnusedVar(name);
|
||||
return wxNullBitmap;
|
||||
////@end WinEDA_ErcFrame bitmap retrieval
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get icon resources
|
||||
*/
|
||||
|
||||
wxIcon WinEDA_ErcFrame::GetIconResource( const wxString& name )
|
||||
{
|
||||
// Icon retrieval
|
||||
////@begin WinEDA_ErcFrame icon retrieval
|
||||
wxUnusedVar(name);
|
||||
return wxNullIcon;
|
||||
////@end WinEDA_ErcFrame icon retrieval
|
||||
}
|
||||
/*!
|
||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_ERASE_DRC_MARKERS
|
||||
*/
|
||||
|
||||
void WinEDA_ErcFrame::OnEraseDrcMarkersClick( wxCommandEvent& event )
|
||||
void DIALOG_ERC::OnEraseDrcMarkersClick( wxCommandEvent& event )
|
||||
/* Delete the old ERC markers, over the whole hierarchy
|
||||
*/
|
||||
{
|
||||
DelERCMarkers(event);
|
||||
DeleteAllMarkers( MARQ_ERC );
|
||||
m_MessagesList->Clear();
|
||||
m_Parent->DrawPanel->Refresh();
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
|
||||
*/
|
||||
|
||||
void WinEDA_ErcFrame::OnCancelClick( wxCommandEvent& event )
|
||||
void DIALOG_ERC::OnCancelClick( wxCommandEvent& event )
|
||||
{
|
||||
EndModal(0);
|
||||
EndModal(0);
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RESET_MATRIX
|
||||
*/
|
||||
|
||||
void WinEDA_ErcFrame::OnResetMatrixClick( wxCommandEvent& event )
|
||||
void DIALOG_ERC::OnResetMatrixClick( wxCommandEvent& event )
|
||||
{
|
||||
ResetDefaultERCDiag(event);
|
||||
}
|
||||
|
@ -297,7 +101,128 @@ void WinEDA_ErcFrame::OnResetMatrixClick( wxCommandEvent& event )
|
|||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_ERC_CMP
|
||||
*/
|
||||
|
||||
void WinEDA_ErcFrame::OnErcCmpClick( wxCommandEvent& event )
|
||||
void DIALOG_ERC::OnErcCmpClick( wxCommandEvent& event )
|
||||
{
|
||||
TestErc(event);
|
||||
m_MessagesList->Clear();
|
||||
wxSafeYield(); // m_MessagesList must be redraw
|
||||
TestErc( m_MessagesList);
|
||||
}
|
||||
|
||||
|
||||
/*********************************************/
|
||||
void DIALOG_ERC::ReBuildMatrixPanel()
|
||||
/*********************************************/
|
||||
|
||||
/* Build or rebuild the panel showing the ERC matrix
|
||||
*/
|
||||
{
|
||||
int ii, jj, event_id, text_height;
|
||||
wxPoint pos, BoxMatrixPosition;
|
||||
|
||||
#define BITMAP_SIZE 19
|
||||
int bitmap_size = BITMAP_SIZE;
|
||||
wxStaticText* text;
|
||||
int x, y;
|
||||
wxSize BoxMatrixMinSize;
|
||||
|
||||
if( !DiagErcTableInit )
|
||||
{
|
||||
memcpy( DiagErc, DefaultDiagErc, sizeof(DefaultDiagErc) );
|
||||
DiagErcTableInit = TRUE;
|
||||
}
|
||||
|
||||
// Get the current text size :
|
||||
text = new wxStaticText( m_PanelERCOptions, -1, wxT( "W" ), pos ); // this is a dummy text
|
||||
|
||||
text_height = text->GetRect().GetHeight();
|
||||
bitmap_size = MAX( bitmap_size, text_height );
|
||||
SAFE_DELETE( text );
|
||||
|
||||
// compute the Y pos interval:
|
||||
BoxMatrixMinSize.y = ( bitmap_size * (PIN_NMAX + 1) ) + 5;
|
||||
GetSizer()->Fit( this );
|
||||
GetSizer()->SetSizeHints( this );
|
||||
pos = m_MatrixSizer->GetPosition();
|
||||
|
||||
// Size computation is not made in constructor, in some wxWidgets version,
|
||||
// and m_BoxSizerForERC_Opt position is always 0,0. and we can't use it
|
||||
pos.x = MAX( pos.x, 5 );
|
||||
pos.y = MAX( pos.y, m_ResetOptButton->GetRect().GetHeight() + 30 );
|
||||
|
||||
BoxMatrixPosition = pos;
|
||||
|
||||
pos.y += text_height;
|
||||
|
||||
if( m_Initialized == FALSE )
|
||||
{
|
||||
for( ii = 0; ii < PIN_NMAX; ii++ )
|
||||
{
|
||||
y = pos.y + (ii * bitmap_size);
|
||||
text = new wxStaticText( m_PanelERCOptions, -1, CommentERC_H[ii], wxPoint( 5, y ) );
|
||||
|
||||
x = text->GetRect().GetRight();
|
||||
pos.x = MAX( pos.x, x );
|
||||
}
|
||||
|
||||
pos.x += 5;
|
||||
}
|
||||
else
|
||||
pos = m_ButtonList[0][0]->GetPosition();
|
||||
|
||||
for( ii = 0; ii < PIN_NMAX; ii++ )
|
||||
{
|
||||
y = pos.y + (ii * bitmap_size);
|
||||
for( jj = 0; jj <= ii; jj++ )
|
||||
{
|
||||
int diag = DiagErc[ii][jj];
|
||||
x = pos.x + (jj * bitmap_size);
|
||||
if( (ii == jj) && !m_Initialized )
|
||||
{
|
||||
wxPoint txtpos;
|
||||
txtpos.x = x + 6; txtpos.y = y - bitmap_size;
|
||||
text = new wxStaticText( m_PanelERCOptions, -1, CommentERC_V[ii], txtpos );
|
||||
|
||||
BoxMatrixMinSize.x = MAX( BoxMatrixMinSize.x, text->GetRect().GetRight() );
|
||||
}
|
||||
event_id = ID_MATRIX_0 + ii + (jj * PIN_NMAX);
|
||||
delete m_ButtonList[ii][jj];
|
||||
|
||||
switch( diag )
|
||||
{
|
||||
case OK:
|
||||
m_ButtonList[ii][jj] = new wxBitmapButton( m_PanelERCOptions,
|
||||
event_id,
|
||||
wxBitmap( erc_green_xpm ),
|
||||
wxPoint( x, y ) );
|
||||
|
||||
break;
|
||||
|
||||
case WAR:
|
||||
m_ButtonList[ii][jj] = new wxBitmapButton( m_PanelERCOptions,
|
||||
event_id,
|
||||
wxBitmap( warning_xpm ),
|
||||
wxPoint( x, y ) );
|
||||
|
||||
break;
|
||||
|
||||
case ERR:
|
||||
m_ButtonList[ii][jj] = new wxBitmapButton( m_PanelERCOptions,
|
||||
event_id,
|
||||
wxBitmap( error_xpm ),
|
||||
wxPoint( x, y ) );
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( !m_Initialized )
|
||||
{
|
||||
BoxMatrixMinSize.x += 5;
|
||||
m_MatrixSizer->SetMinSize( BoxMatrixMinSize );
|
||||
BoxMatrixMinSize.y += BoxMatrixPosition.y;
|
||||
m_PanelMatrixSizer->SetMinSize( BoxMatrixMinSize );
|
||||
}
|
||||
m_Initialized = TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,95 +1,49 @@
|
|||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: dialog_erc.h
|
||||
// Purpose:
|
||||
// Author: jean-pierre Charras
|
||||
// Modified by:
|
||||
// Created: 12/02/2006 17:08:38
|
||||
// RCS-ID:
|
||||
// Copyright: License GNU
|
||||
// Licence:
|
||||
// Licence: GPL
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Generated by DialogBlocks (unregistered), 12/02/2006 17:08:38
|
||||
|
||||
#ifndef _DIALOG_ERC_H_
|
||||
#define _DIALOG_ERC_H_
|
||||
|
||||
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
|
||||
#pragma interface "dialog_erc.h"
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* Includes
|
||||
*/
|
||||
|
||||
////@begin includes
|
||||
#include "wx/notebook.h"
|
||||
#include "wx/valgen.h"
|
||||
#include "wx/statline.h"
|
||||
////@end includes
|
||||
#include "dialog_erc_base.h"
|
||||
|
||||
/* Variable locales */
|
||||
extern int WriteFichierERC;
|
||||
/*!
|
||||
* Forward declarations
|
||||
*/
|
||||
extern int DiagErc[PIN_NMAX][PIN_NMAX];
|
||||
extern bool DiagErcTableInit; // go to TRUE after DiagErc init
|
||||
extern int DefaultDiagErc[PIN_NMAX][PIN_NMAX];
|
||||
extern const wxChar* CommentERC_H[];
|
||||
extern const wxChar* CommentERC_V[];
|
||||
|
||||
////@begin forward declarations
|
||||
class wxNotebook;
|
||||
class wxBoxSizer;
|
||||
class wxStaticLine;
|
||||
////@end forward declarations
|
||||
|
||||
/*!
|
||||
* Control identifiers
|
||||
*/
|
||||
|
||||
////@begin control identifiers
|
||||
#define ID_DIALOG 10000
|
||||
#define ID_ERC_NOTEBOOK 10001
|
||||
#define ID_PANEL 10004
|
||||
#define ID_CHECKBOX 10006
|
||||
#define ID_ERC_CMP 10002
|
||||
#define ID_ERASE_DRC_MARKERS 10003
|
||||
#define ID_PANEL1 10005
|
||||
#define ID_RESET_MATRIX 10007
|
||||
#define SYMBOL_WINEDA_ERCFRAME_STYLE wxDEFAULT_DIALOG_STYLE|MAYBE_RESIZE_BORDER
|
||||
#define SYMBOL_WINEDA_ERCFRAME_TITLE _("EESchema Erc")
|
||||
#define SYMBOL_WINEDA_ERCFRAME_IDNAME ID_DIALOG
|
||||
#define SYMBOL_WINEDA_ERCFRAME_SIZE wxDefaultSize
|
||||
#define SYMBOL_WINEDA_ERCFRAME_POSITION wxDefaultPosition
|
||||
////@end control identifiers
|
||||
/* Control identifiers */
|
||||
#define ID_MATRIX_0 1800
|
||||
|
||||
/*!
|
||||
* Compatibility
|
||||
*/
|
||||
#define OK 0
|
||||
#define WAR 1
|
||||
#define ERR 2
|
||||
#define UNC 3
|
||||
|
||||
#ifndef wxCLOSE_BOX
|
||||
#define wxCLOSE_BOX 0x1000
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* WinEDA_ErcFrame class declaration
|
||||
* DIALOG_ERC class declaration
|
||||
*/
|
||||
|
||||
class WinEDA_ErcFrame: public wxDialog
|
||||
class DIALOG_ERC: public DIALOG_ERC_BASE
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( WinEDA_ErcFrame )
|
||||
DECLARE_EVENT_TABLE()
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
private:
|
||||
WinEDA_SchematicFrame * m_Parent;
|
||||
wxBitmapButton * m_ButtonList[PIN_NMAX][PIN_NMAX];
|
||||
bool m_Initialized;
|
||||
|
||||
public:
|
||||
/// Constructors
|
||||
WinEDA_ErcFrame( );
|
||||
WinEDA_ErcFrame( WinEDA_SchematicFrame* parent, wxWindowID id = SYMBOL_WINEDA_ERCFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_ERCFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_ERCFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_ERCFRAME_SIZE, long style = SYMBOL_WINEDA_ERCFRAME_STYLE );
|
||||
DIALOG_ERC( WinEDA_SchematicFrame* parent );
|
||||
|
||||
/// Creation
|
||||
bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WINEDA_ERCFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_ERCFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_ERCFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_ERCFRAME_SIZE, long style = SYMBOL_WINEDA_ERCFRAME_STYLE );
|
||||
|
||||
/// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
////@begin WinEDA_ErcFrame event handler declarations
|
||||
void Init();
|
||||
|
||||
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_ERC_CMP
|
||||
void OnErcCmpClick( wxCommandEvent& event );
|
||||
|
@ -103,50 +57,13 @@ public:
|
|||
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RESET_MATRIX
|
||||
void OnResetMatrixClick( wxCommandEvent& event );
|
||||
|
||||
////@end WinEDA_ErcFrame event handler declarations
|
||||
|
||||
////@begin WinEDA_ErcFrame member function declarations
|
||||
|
||||
/// Retrieves bitmap resources
|
||||
wxBitmap GetBitmapResource( const wxString& name );
|
||||
|
||||
/// Retrieves icon resources
|
||||
wxIcon GetIconResource( const wxString& name );
|
||||
////@end WinEDA_ErcFrame member function declarations
|
||||
|
||||
/// Should we show tooltips?
|
||||
static bool ShowToolTips();
|
||||
|
||||
void DelERCMarkers(wxCommandEvent& event);
|
||||
void TestErc(wxCommandEvent& event);
|
||||
void TestErc( wxTextCtrl* aMessagesList );
|
||||
void SelLocal(wxCommandEvent& event);
|
||||
void SelNewCmp(wxCommandEvent& event);
|
||||
void ResetDefaultERCDiag(wxCommandEvent& event);
|
||||
void ChangeErrorLevel(wxCommandEvent& event);
|
||||
void ReBuildMatrixPanel();
|
||||
|
||||
////@begin WinEDA_ErcFrame member variables
|
||||
wxNotebook* m_NoteBook;
|
||||
wxPanel* m_PanelERC;
|
||||
wxBoxSizer* m_PanelERCSizer;
|
||||
wxStaticText* ErcTotalErrors;
|
||||
wxStaticText* WarnErcErrors;
|
||||
wxStaticText* ErcErrors;
|
||||
wxStaticText* m_TotalErrCount;
|
||||
wxStaticText* m_LastWarningCount;
|
||||
wxStaticText* m_LastErrCount;
|
||||
wxCheckBox* m_WriteResultOpt;
|
||||
wxButton* m_btClose;
|
||||
wxPanel* m_PanelERCOptions;
|
||||
wxBoxSizer* m_PanelMatrixSizer;
|
||||
wxButton* m_ResetOptButton;
|
||||
wxStaticLine* m_SeparatorLine;
|
||||
wxBoxSizer* m_MatrixSizer;
|
||||
////@end WinEDA_ErcFrame member variables
|
||||
|
||||
WinEDA_SchematicFrame * m_Parent;
|
||||
wxBitmapButton * m_ButtonList[PIN_NMAX][PIN_NMAX];
|
||||
bool m_Initialized;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1 +0,0 @@
|
|||
#include "wx/msw/wx.rc"
|
|
@ -0,0 +1,133 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Apr 16 2008)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "dialog_erc_base.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
BEGIN_EVENT_TABLE( DIALOG_ERC_BASE, wxDialog )
|
||||
EVT_BUTTON( ID_ERC_CMP, DIALOG_ERC_BASE::_wxFB_OnErcCmpClick )
|
||||
EVT_BUTTON( ID_ERASE_DRC_MARKERS, DIALOG_ERC_BASE::_wxFB_OnEraseDrcMarkersClick )
|
||||
EVT_BUTTON( wxID_CANCEL, DIALOG_ERC_BASE::_wxFB_OnCancelClick )
|
||||
EVT_BUTTON( ID_RESET_MATRIX, DIALOG_ERC_BASE::_wxFB_OnResetMatrixClick )
|
||||
END_EVENT_TABLE()
|
||||
|
||||
DIALOG_ERC_BASE::DIALOG_ERC_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
|
||||
{
|
||||
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
|
||||
|
||||
wxBoxSizer* bSizer1;
|
||||
bSizer1 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_NoteBook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_PanelERC = new wxPanel( m_NoteBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bercSizer;
|
||||
bercSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxBoxSizer* bupperSizer;
|
||||
bupperSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
wxStaticBoxSizer* sdiagSizer;
|
||||
sdiagSizer = new wxStaticBoxSizer( new wxStaticBox( m_PanelERC, wxID_ANY, _("Erc File Report:") ), wxVERTICAL );
|
||||
|
||||
wxGridSizer* gSizer1;
|
||||
gSizer1 = new wxGridSizer( 3, 2, 0, 0 );
|
||||
|
||||
m_ErcTotalErrorsText = new wxStaticText( m_PanelERC, wxID_ANY, _("Total Errors Count: "), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
|
||||
m_ErcTotalErrorsText->Wrap( -1 );
|
||||
gSizer1->Add( m_ErcTotalErrorsText, 0, wxALL, 5 );
|
||||
|
||||
m_TotalErrCount = new wxStaticText( m_PanelERC, wxID_ANY, _("0000"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_TotalErrCount->Wrap( -1 );
|
||||
gSizer1->Add( m_TotalErrCount, 0, wxALL, 5 );
|
||||
|
||||
m_WarnErcErrorsText = new wxStaticText( m_PanelERC, wxID_ANY, _("Warnings Count:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
|
||||
m_WarnErcErrorsText->Wrap( -1 );
|
||||
gSizer1->Add( m_WarnErcErrorsText, 0, wxALL, 5 );
|
||||
|
||||
m_LastWarningCount = new wxStaticText( m_PanelERC, wxID_ANY, _("0000"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_LastWarningCount->Wrap( -1 );
|
||||
gSizer1->Add( m_LastWarningCount, 0, wxALL, 5 );
|
||||
|
||||
m_LastErrCountText = new wxStaticText( m_PanelERC, wxID_ANY, _("Errors Count:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
|
||||
m_LastErrCountText->Wrap( -1 );
|
||||
gSizer1->Add( m_LastErrCountText, 0, wxALL, 5 );
|
||||
|
||||
m_LastErrCount = new wxStaticText( m_PanelERC, wxID_ANY, _("0000"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_LastErrCount->Wrap( -1 );
|
||||
gSizer1->Add( m_LastErrCount, 0, wxALL, 5 );
|
||||
|
||||
sdiagSizer->Add( gSizer1, 0, 0, 5 );
|
||||
|
||||
bupperSizer->Add( sdiagSizer, 0, 0, 5 );
|
||||
|
||||
|
||||
bupperSizer->Add( 10, 10, 1, wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bbuttonsSizer;
|
||||
bbuttonsSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_buttonERC = new wxButton( m_PanelERC, ID_ERC_CMP, _("&Test Erc"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bbuttonsSizer->Add( m_buttonERC, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_buttondelmarkers = new wxButton( m_PanelERC, ID_ERASE_DRC_MARKERS, _("&Del Markers"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bbuttonsSizer->Add( m_buttondelmarkers, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_buttonClose = new wxButton( m_PanelERC, wxID_CANCEL, _("&Close"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bbuttonsSizer->Add( m_buttonClose, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
bupperSizer->Add( bbuttonsSizer, 0, wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
bercSizer->Add( bupperSizer, 0, wxEXPAND, 5 );
|
||||
|
||||
m_WriteResultOpt = new wxCheckBox( m_PanelERC, wxID_ANY, _("Write ERC report"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
bercSizer->Add( m_WriteResultOpt, 0, wxALL, 5 );
|
||||
|
||||
m_staticline2 = new wxStaticLine( m_PanelERC, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
bercSizer->Add( m_staticline2, 0, wxEXPAND | wxALL, 5 );
|
||||
|
||||
m_textMessage = new wxStaticText( m_PanelERC, wxID_ANY, _("Messages:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_textMessage->Wrap( -1 );
|
||||
bercSizer->Add( m_textMessage, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_MessagesList = new wxTextCtrl( m_PanelERC, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY );
|
||||
m_MessagesList->SetMinSize( wxSize( 580,300 ) );
|
||||
|
||||
bercSizer->Add( m_MessagesList, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_PanelERC->SetSizer( bercSizer );
|
||||
m_PanelERC->Layout();
|
||||
bercSizer->Fit( m_PanelERC );
|
||||
m_NoteBook->AddPage( m_PanelERC, _("ERC"), true );
|
||||
m_PanelERCOptions = new wxPanel( m_NoteBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
m_PanelMatrixSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_ResetOptButton = new wxButton( m_PanelERCOptions, ID_RESET_MATRIX, _("Reset"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_PanelMatrixSizer->Add( m_ResetOptButton, 0, wxALL, 5 );
|
||||
|
||||
m_staticline1 = new wxStaticLine( m_PanelERCOptions, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
m_PanelMatrixSizer->Add( m_staticline1, 0, wxEXPAND | wxALL, 5 );
|
||||
|
||||
m_MatrixSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_PanelMatrixSizer->Add( m_MatrixSizer, 1, wxEXPAND, 5 );
|
||||
|
||||
m_PanelERCOptions->SetSizer( m_PanelMatrixSizer );
|
||||
m_PanelERCOptions->Layout();
|
||||
m_PanelMatrixSizer->Fit( m_PanelERCOptions );
|
||||
m_NoteBook->AddPage( m_PanelERCOptions, _("Options"), false );
|
||||
|
||||
bSizer1->Add( m_NoteBook, 1, wxEXPAND | wxALL, 5 );
|
||||
|
||||
this->SetSizer( bSizer1 );
|
||||
this->Layout();
|
||||
}
|
||||
|
||||
DIALOG_ERC_BASE::~DIALOG_ERC_BASE()
|
||||
{
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,92 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Apr 16 2008)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __dialog_erc_base__
|
||||
#define __dialog_erc_base__
|
||||
|
||||
#include <wx/intl.h>
|
||||
|
||||
#include <wx/string.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/gdicmn.h>
|
||||
#include <wx/font.h>
|
||||
#include <wx/colour.h>
|
||||
#include <wx/settings.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/statbox.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/checkbox.h>
|
||||
#include <wx/statline.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/panel.h>
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/dialog.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class DIALOG_ERC_BASE
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class DIALOG_ERC_BASE : public wxDialog
|
||||
{
|
||||
DECLARE_EVENT_TABLE()
|
||||
private:
|
||||
|
||||
// Private event handlers
|
||||
void _wxFB_OnErcCmpClick( wxCommandEvent& event ){ OnErcCmpClick( event ); }
|
||||
void _wxFB_OnEraseDrcMarkersClick( wxCommandEvent& event ){ OnEraseDrcMarkersClick( event ); }
|
||||
void _wxFB_OnCancelClick( wxCommandEvent& event ){ OnCancelClick( event ); }
|
||||
void _wxFB_OnResetMatrixClick( wxCommandEvent& event ){ OnResetMatrixClick( event ); }
|
||||
|
||||
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
ID_ERC_CMP = 1000,
|
||||
ID_ERASE_DRC_MARKERS,
|
||||
ID_RESET_MATRIX,
|
||||
};
|
||||
|
||||
wxNotebook* m_NoteBook;
|
||||
wxPanel* m_PanelERC;
|
||||
wxStaticText* m_ErcTotalErrorsText;
|
||||
wxStaticText* m_TotalErrCount;
|
||||
wxStaticText* m_WarnErcErrorsText;
|
||||
wxStaticText* m_LastWarningCount;
|
||||
wxStaticText* m_LastErrCountText;
|
||||
wxStaticText* m_LastErrCount;
|
||||
|
||||
wxButton* m_buttonERC;
|
||||
wxButton* m_buttondelmarkers;
|
||||
wxButton* m_buttonClose;
|
||||
wxCheckBox* m_WriteResultOpt;
|
||||
wxStaticLine* m_staticline2;
|
||||
wxStaticText* m_textMessage;
|
||||
wxTextCtrl* m_MessagesList;
|
||||
wxPanel* m_PanelERCOptions;
|
||||
wxBoxSizer* m_PanelMatrixSizer;
|
||||
wxButton* m_ResetOptButton;
|
||||
wxStaticLine* m_staticline1;
|
||||
wxBoxSizer* m_MatrixSizer;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
virtual void OnErcCmpClick( wxCommandEvent& event ){ event.Skip(); }
|
||||
virtual void OnEraseDrcMarkersClick( wxCommandEvent& event ){ event.Skip(); }
|
||||
virtual void OnCancelClick( wxCommandEvent& event ){ event.Skip(); }
|
||||
virtual void OnResetMatrixClick( wxCommandEvent& event ){ event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
DIALOG_ERC_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("EESchema Erc"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 438,407 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
~DIALOG_ERC_BASE();
|
||||
|
||||
};
|
||||
|
||||
#endif //__dialog_erc_base__
|
File diff suppressed because it is too large
Load Diff
|
@ -1 +0,0 @@
|
|||
#include "wx/msw/wx.rc"
|
388
eeschema/erc.cpp
388
eeschema/erc.cpp
|
@ -16,7 +16,6 @@
|
|||
#include "general.h"
|
||||
#include "netlist.h"
|
||||
#include "protos.h"
|
||||
|
||||
#include "bitmaps.h"
|
||||
|
||||
#include "dialog_erc.h"
|
||||
|
@ -33,14 +32,14 @@
|
|||
|
||||
/* fonctions locales */
|
||||
static bool WriteDiagnosticERC( const wxString& FullFileName );
|
||||
static void Diagnose( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||
static void Diagnose( WinEDA_DrawPanel* panel,
|
||||
ObjetNetListStruct* NetItemRef,
|
||||
ObjetNetListStruct* NetItemTst, int MinConnexion, int Diag );
|
||||
static void TestOthersItems( WinEDA_DrawPanel* panel,
|
||||
wxDC* DC, ObjetNetListStruct* NetItemRef,
|
||||
ObjetNetListStruct* NetItemRef,
|
||||
ObjetNetListStruct* NetStart,
|
||||
int* NetNbItems, int* MinConnexion );
|
||||
static void TestLabel( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||
static void TestLabel( WinEDA_DrawPanel* panel,
|
||||
ObjetNetListStruct* NetItemRef,
|
||||
ObjetNetListStruct* StartNet );
|
||||
|
||||
|
@ -52,12 +51,8 @@ int WriteFichierERC = FALSE;
|
|||
* PIN_UNSPECIFIED, PIN_POWER_IN, PIN_POWER_OUT, PIN_OPENCOLLECTOR,
|
||||
* PIN_OPENEMITTER, PIN_NC
|
||||
*/
|
||||
#define OK 0
|
||||
#define WAR 1 // utilis<69> aussi dans eeredraw
|
||||
#define ERR 2
|
||||
#define UNC 3
|
||||
|
||||
static const wxChar* CommentERC_H[] =
|
||||
const wxChar* CommentERC_H[] =
|
||||
{
|
||||
wxT( "Input Pin...." ),
|
||||
wxT( "Output Pin..." ),
|
||||
|
@ -72,7 +67,7 @@ static const wxChar* CommentERC_H[] =
|
|||
wxT( "No Conn......" ),
|
||||
NULL
|
||||
};
|
||||
static const wxChar* CommentERC_V[] =
|
||||
const wxChar* CommentERC_V[] =
|
||||
{
|
||||
wxT( "Input Pin" ),
|
||||
wxT( "Output Pin" ),
|
||||
|
@ -93,27 +88,26 @@ static const wxChar* CommentERC_V[] =
|
|||
* Can be modified by ERC options.
|
||||
* at start up: must be loaded by DefaultDiagErc
|
||||
*/
|
||||
static int DiagErc[PIN_NMAX][PIN_NMAX];
|
||||
int DiagErc[PIN_NMAX][PIN_NMAX];
|
||||
bool DiagErcTableInit; // go to TRUE after DiagErc init
|
||||
|
||||
/* Default Look up table which gives the diag for a pair of connected pins
|
||||
* Same as DiagErc, but cannot be modified
|
||||
* Used to init or reset DiagErc
|
||||
*/
|
||||
static int DefaultDiagErc[PIN_NMAX][PIN_NMAX] =
|
||||
{ /* I, O, Bi, 3S, Pas, UnS,PwrI,PwrO, OC, OE, NC */
|
||||
/* I */
|
||||
{ OK, OK, OK, OK, OK, WAR, OK, OK, OK, OK, WAR },
|
||||
/* O */ { OK, ERR, OK, WAR, OK, WAR, OK, ERR, ERR, ERR, WAR },
|
||||
/* Bi*/ { OK, OK, OK, OK, OK, WAR, OK, WAR, OK, WAR, WAR },
|
||||
/* 3S*/ { OK, WAR, OK, OK, OK, WAR, WAR, ERR, WAR, WAR, WAR },
|
||||
/*Pas*/ { OK, OK, OK, OK, OK, WAR, OK, OK, OK, OK, WAR },
|
||||
/*UnS */ { WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR },
|
||||
/*PwrI*/ { OK, OK, OK, WAR, OK, WAR, OK, OK, OK, OK, ERR },
|
||||
/*PwrO*/ { OK, ERR, WAR, ERR, OK, WAR, OK, ERR, ERR, ERR, WAR },
|
||||
/* OC */ { OK, ERR, OK, WAR, OK, WAR, OK, ERR, OK, OK, WAR },
|
||||
/* OE */ { OK, ERR, WAR, WAR, OK, WAR, OK, ERR, OK, OK, WAR },
|
||||
/* NC */ { WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR }
|
||||
int DefaultDiagErc[PIN_NMAX][PIN_NMAX] =
|
||||
{ /* I, O, Bi, 3S, Pas, UnS,PwrI,PwrO, OC, OE, NC */
|
||||
/* I */ { OK, OK, OK, OK, OK, WAR, OK, OK, OK, OK, WAR },
|
||||
/* O */ { OK, ERR, OK, WAR, OK, WAR, OK, ERR, ERR, ERR, WAR },
|
||||
/* Bi*/ { OK, OK, OK, OK, OK, WAR, OK, WAR, OK, WAR, WAR },
|
||||
/* 3S*/ { OK, WAR, OK, OK, OK, WAR, WAR, ERR, WAR, WAR, WAR },
|
||||
/*Pas*/ { OK, OK, OK, OK, OK, WAR, OK, OK, OK, OK, WAR },
|
||||
/*UnS */ { WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR },
|
||||
/*PwrI*/ { OK, OK, OK, WAR, OK, WAR, OK, OK, OK, OK, ERR },
|
||||
/*PwrO*/ { OK, ERR, WAR, ERR, OK, WAR, OK, ERR, ERR, ERR, WAR },
|
||||
/* OC */ { OK, ERR, OK, WAR, OK, WAR, OK, ERR, OK, OK, WAR },
|
||||
/* OE */ { OK, ERR, WAR, WAR, OK, WAR, OK, ERR, OK, OK, WAR },
|
||||
/* NC */ { WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR, WAR }
|
||||
};
|
||||
|
||||
|
||||
|
@ -134,141 +128,22 @@ static int DefaultDiagErc[PIN_NMAX][PIN_NMAX] =
|
|||
*/
|
||||
static int MinimalReq[PIN_NMAX][PIN_NMAX] =
|
||||
{ /* In, Out, Bi, 3S, Pas, UnS,PwrI,PwrO, OC, OE, NC */
|
||||
/* In*/
|
||||
{ NOD, DRV, DRV, DRV, DRV, DRV, NOD, DRV, DRV, DRV, NOC },
|
||||
/*Out*/ { DRV, DRV, DRV, DRV, DRV, DRV, DRV, DRV, DRV, DRV, NOC },
|
||||
/* Bi*/ { DRV, DRV, DRV, DRV, DRV, DRV, NOD, DRV, DRV, DRV, NOC },
|
||||
/* 3S*/ { DRV, DRV, DRV, DRV, DRV, DRV, NOD, DRV, DRV, DRV, NOC },
|
||||
/*Pas*/ { DRV, DRV, DRV, DRV, DRV, DRV, NOD, DRV, DRV, DRV, NOC },
|
||||
/*UnS*/ { DRV, DRV, DRV, DRV, DRV, DRV, NOD, DRV, DRV, DRV, NOC },
|
||||
/* In*/ { NOD, DRV, DRV, DRV, DRV, DRV, NOD, DRV, DRV, DRV, NOC },
|
||||
/*Out*/ { DRV, DRV, DRV, DRV, DRV, DRV, DRV, DRV, DRV, DRV, NOC },
|
||||
/* Bi*/ { DRV, DRV, DRV, DRV, DRV, DRV, NOD, DRV, DRV, DRV, NOC },
|
||||
/* 3S*/ { DRV, DRV, DRV, DRV, DRV, DRV, NOD, DRV, DRV, DRV, NOC },
|
||||
/*Pas*/ { DRV, DRV, DRV, DRV, DRV, DRV, NOD, DRV, DRV, DRV, NOC },
|
||||
/*UnS*/ { DRV, DRV, DRV, DRV, DRV, DRV, NOD, DRV, DRV, DRV, NOC },
|
||||
/*PwrI*/ { NOD, DRV, NOD, NOD, NOD, NOD, NOD, DRV, NOD, NOD, NOC },
|
||||
/*PwrO*/ { DRV, DRV, DRV, DRV, DRV, DRV, DRV, DRV, DRV, DRV, NOC },
|
||||
/* OC*/ { DRV, DRV, DRV, DRV, DRV, DRV, NOD, DRV, DRV, DRV, NOC },
|
||||
/* OE*/ { DRV, DRV, DRV, DRV, DRV, DRV, NOD, DRV, DRV, DRV, NOC },
|
||||
/* NC*/ { NOC, NOC, NOC, NOC, NOC, NOC, NOC, NOC, NOC, NOC, NOC }
|
||||
/* OC*/ { DRV, DRV, DRV, DRV, DRV, DRV, NOD, DRV, DRV, DRV, NOC },
|
||||
/* OE*/ { DRV, DRV, DRV, DRV, DRV, DRV, NOD, DRV, DRV, DRV, NOC },
|
||||
/* NC*/ { NOC, NOC, NOC, NOC, NOC, NOC, NOC, NOC, NOC, NOC, NOC }
|
||||
};
|
||||
|
||||
|
||||
/*********************************************/
|
||||
void WinEDA_ErcFrame::ReBuildMatrixPanel()
|
||||
/*********************************************/
|
||||
|
||||
/* Build or rebuild the panel showing the ERC matrix
|
||||
*/
|
||||
{
|
||||
int ii, jj, event_id, text_height;
|
||||
wxPoint pos, BoxMatrixPosition;
|
||||
|
||||
#define BITMAP_SIZE 19
|
||||
int bitmap_size = BITMAP_SIZE;
|
||||
wxStaticText* text;
|
||||
int x, y;
|
||||
wxSize BoxMatrixMinSize;
|
||||
|
||||
if( !DiagErcTableInit )
|
||||
{
|
||||
memcpy( DiagErc, DefaultDiagErc, sizeof(DefaultDiagErc) );
|
||||
DiagErcTableInit = TRUE;
|
||||
}
|
||||
|
||||
// Get the current text size :
|
||||
text = new wxStaticText( m_PanelERCOptions, -1, wxT( "W" ), pos ); // this is a dummy text
|
||||
|
||||
text_height = text->GetRect().GetHeight();
|
||||
bitmap_size = MAX( bitmap_size, text_height );
|
||||
SAFE_DELETE( text );
|
||||
|
||||
// compute the Y pos interval:
|
||||
BoxMatrixMinSize.y = ( bitmap_size * (PIN_NMAX + 1) ) + 5;
|
||||
GetSizer()->Fit( this );
|
||||
GetSizer()->SetSizeHints( this );
|
||||
pos = m_MatrixSizer->GetPosition();
|
||||
|
||||
// Size computation is not made in constructor, in some wxWidgets version,
|
||||
// and m_BoxSizerForERC_Opt position is always 0,0. and we can't use it
|
||||
pos.x = MAX( pos.x, 5 );
|
||||
pos.y = MAX( pos.y, m_ResetOptButton->GetRect().GetHeight() + 30 );
|
||||
|
||||
BoxMatrixPosition = pos;
|
||||
|
||||
pos.y += text_height;
|
||||
|
||||
if( m_Initialized == FALSE )
|
||||
{
|
||||
for( ii = 0; ii < PIN_NMAX; ii++ )
|
||||
{
|
||||
y = pos.y + (ii * bitmap_size);
|
||||
text = new wxStaticText( m_PanelERCOptions, -1, CommentERC_H[ii], wxPoint( 5, y ) );
|
||||
|
||||
x = text->GetRect().GetRight();
|
||||
pos.x = MAX( pos.x, x );
|
||||
}
|
||||
|
||||
pos.x += 5;
|
||||
}
|
||||
else
|
||||
pos = m_ButtonList[0][0]->GetPosition();
|
||||
|
||||
for( ii = 0; ii < PIN_NMAX; ii++ )
|
||||
{
|
||||
y = pos.y + (ii * bitmap_size);
|
||||
for( jj = 0; jj <= ii; jj++ )
|
||||
{
|
||||
int diag = DiagErc[ii][jj];
|
||||
x = pos.x + (jj * bitmap_size);
|
||||
if( (ii == jj) && !m_Initialized )
|
||||
{
|
||||
wxPoint txtpos;
|
||||
txtpos.x = x + 4; txtpos.y = y - bitmap_size;
|
||||
text = new wxStaticText( m_PanelERCOptions, -1, CommentERC_V[ii], txtpos );
|
||||
|
||||
BoxMatrixMinSize.x = MAX( BoxMatrixMinSize.x, text->GetRect().GetRight() );
|
||||
}
|
||||
event_id = ID_MATRIX_0 + ii + (jj * PIN_NMAX);
|
||||
delete m_ButtonList[ii][jj];
|
||||
|
||||
switch( diag )
|
||||
{
|
||||
case OK:
|
||||
m_ButtonList[ii][jj] = new wxBitmapButton( m_PanelERCOptions,
|
||||
event_id,
|
||||
wxBitmap (green_xpm),
|
||||
wxPoint (x, y) );
|
||||
|
||||
break;
|
||||
|
||||
case WAR:
|
||||
m_ButtonList[ii][jj] = new wxBitmapButton( m_PanelERCOptions,
|
||||
event_id,
|
||||
wxBitmap (warning_xpm),
|
||||
wxPoint (x, y) );
|
||||
|
||||
break;
|
||||
|
||||
case ERR:
|
||||
m_ButtonList[ii][jj] = new wxBitmapButton( m_PanelERCOptions,
|
||||
event_id,
|
||||
wxBitmap (error_xpm),
|
||||
wxPoint (x, y) );
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( !m_Initialized )
|
||||
{
|
||||
BoxMatrixMinSize.x += 5;
|
||||
m_MatrixSizer->SetMinSize( BoxMatrixMinSize );
|
||||
BoxMatrixMinSize.y += BoxMatrixPosition.y;
|
||||
m_PanelMatrixSizer->SetMinSize( BoxMatrixMinSize );
|
||||
}
|
||||
m_Initialized = TRUE;
|
||||
}
|
||||
|
||||
|
||||
/**************************************************/
|
||||
void WinEDA_ErcFrame::TestErc( wxCommandEvent& event )
|
||||
void DIALOG_ERC::TestErc( wxTextCtrl* aMessagesList )
|
||||
/**************************************************/
|
||||
{
|
||||
wxFileName fn;
|
||||
|
@ -290,16 +165,16 @@ void WinEDA_ErcFrame::TestErc( wxCommandEvent& event )
|
|||
ReAnnotatePowerSymbolsOnly();
|
||||
if( CheckAnnotate( m_Parent, 0 ) )
|
||||
{
|
||||
DisplayError( this, _( "Annotation Required!" ) );
|
||||
if ( aMessagesList )
|
||||
{
|
||||
aMessagesList->AppendText( _( "Annotation Required!" ) );
|
||||
aMessagesList->AppendText( wxT("\n") );
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* Effacement des anciens marqueurs DRC */
|
||||
DelERCMarkers( event );
|
||||
|
||||
wxClientDC dc( m_Parent->DrawPanel );
|
||||
|
||||
m_Parent->DrawPanel->PrepareGraphicContext( &dc );
|
||||
DeleteAllMarkers( MARQ_ERC );
|
||||
|
||||
g_EESchemaVar.NbErrorErc = 0;
|
||||
g_EESchemaVar.NbWarningErc = 0;
|
||||
|
@ -318,6 +193,45 @@ void WinEDA_ErcFrame::TestErc( wxCommandEvent& event )
|
|||
Screen->ClearUndoRedoList();
|
||||
}
|
||||
|
||||
/* Test duplicate sheet names
|
||||
* inside a given sheet, one cannot have sheets with duplicate names (file names can be duplicated).
|
||||
* Test screens is enought
|
||||
*/
|
||||
for( SCH_SCREEN* Screen = ScreenList.GetFirst(); Screen != NULL; Screen = ScreenList.GetNext() )
|
||||
{
|
||||
for( SCH_ITEM* ref_item = Screen->EEDrawList; ref_item != NULL; ref_item = ref_item->Next() )
|
||||
{
|
||||
// serach for a scheet;
|
||||
if( ref_item->Type() != DRAW_SHEET_STRUCT_TYPE )
|
||||
continue;
|
||||
for( SCH_ITEM* item_to_test = ref_item->Next();
|
||||
item_to_test != NULL;
|
||||
item_to_test = item_to_test->Next() )
|
||||
{
|
||||
if( item_to_test->Type() != DRAW_SHEET_STRUCT_TYPE )
|
||||
continue;
|
||||
|
||||
// We have found a second sheet: compare names
|
||||
if( ( (DrawSheetStruct*) ref_item )->m_SheetName.CmpNoCase( ( (DrawSheetStruct*)
|
||||
item_to_test )->
|
||||
m_SheetName ) == 0 )
|
||||
{
|
||||
/* Create a new marker type ERC error*/
|
||||
DrawMarkerStruct* Marker =
|
||||
new DrawMarkerStruct( ( (DrawSheetStruct*) item_to_test )->m_Pos,
|
||||
_( "Duplicate Sheet name" ) );
|
||||
|
||||
Marker->m_Type = MARQ_ERC;
|
||||
Marker->m_MarkFlags = ERR;
|
||||
Marker->SetNext( Screen->EEDrawList );
|
||||
Screen->EEDrawList = Marker;
|
||||
g_EESchemaVar.NbErrorErc++;
|
||||
g_EESchemaVar.NbWarningErc++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_Parent->BuildNetListBase();
|
||||
|
||||
/* Analyse de la table des connexions : */
|
||||
|
@ -358,18 +272,18 @@ void WinEDA_ErcFrame::TestErc( wxCommandEvent& event )
|
|||
case NET_HIERBUSLABELMEMBER:
|
||||
case NET_SHEETLABEL:
|
||||
case NET_SHEETBUSLABELMEMBER:
|
||||
TestLabel( m_Parent->DrawPanel, &dc, NetItemRef, StartNet );
|
||||
TestLabel( m_Parent->DrawPanel, NetItemRef, StartNet );
|
||||
break;
|
||||
|
||||
case NET_NOCONNECT:
|
||||
MinConn = NET_NC;
|
||||
if( NetNbItems != 0 )
|
||||
Diagnose( m_Parent->DrawPanel, &dc, NetItemRef, NULL, MinConn, UNC );
|
||||
Diagnose( m_Parent->DrawPanel,NetItemRef, NULL, MinConn, UNC );
|
||||
break;
|
||||
|
||||
case NET_PIN:
|
||||
TestOthersItems( m_Parent->DrawPanel, &dc,
|
||||
NetItemRef, StartNet, &NetNbItems, &MinConn );
|
||||
TestOthersItems( m_Parent->DrawPanel,
|
||||
NetItemRef, StartNet, &NetNbItems, &MinConn );
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -388,6 +302,33 @@ void WinEDA_ErcFrame::TestErc( wxCommandEvent& event )
|
|||
num.Printf( wxT( "%d" ), g_EESchemaVar.NbWarningErc );
|
||||
m_LastWarningCount->SetLabel( num );
|
||||
|
||||
// Display diags:
|
||||
EDA_SheetList SheetList;
|
||||
for( DrawSheetPath * Sheet = SheetList.GetFirst(); Sheet != NULL; Sheet = SheetList.GetNext() )
|
||||
{
|
||||
SCH_ITEM * DrawStruct = Sheet->LastDrawList();
|
||||
for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Next() )
|
||||
{
|
||||
if( DrawStruct->Type() != DRAW_MARKER_STRUCT_TYPE )
|
||||
continue;
|
||||
|
||||
/* Marqueur trouve */
|
||||
DrawMarkerStruct* Marker = (DrawMarkerStruct*) DrawStruct;
|
||||
if( Marker->m_Type != MARQ_ERC )
|
||||
continue;
|
||||
|
||||
/* Display diag */
|
||||
wxString msg;
|
||||
msg.Printf(_("sheet %s: %s\n"),
|
||||
Sheet->PathHumanReadable().GetData(),
|
||||
Marker->GetComment().GetData() );
|
||||
m_MessagesList->AppendText( msg );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
m_Parent->DrawPanel->Refresh();
|
||||
|
||||
/* Generation ouverture fichier diag */
|
||||
if( WriteFichierERC == TRUE )
|
||||
{
|
||||
|
@ -405,46 +346,15 @@ void WinEDA_ErcFrame::TestErc( wxCommandEvent& event )
|
|||
{
|
||||
Close( TRUE );
|
||||
ExecuteFile( this, wxGetApp().GetEditorName(),
|
||||
QuoteFullPath( fn ) );
|
||||
QuoteFullPath( fn ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************/
|
||||
void WinEDA_ErcFrame::DelERCMarkers( wxCommandEvent& event )
|
||||
/***********************************************************/
|
||||
|
||||
/* Delete the old ERC markers, over the whole hierarchy
|
||||
*/
|
||||
{
|
||||
EDA_BaseStruct* DrawStruct;
|
||||
DrawMarkerStruct* Marker;
|
||||
|
||||
wxClientDC dc( m_Parent->DrawPanel );
|
||||
|
||||
m_Parent->DrawPanel->PrepareGraphicContext( &dc );
|
||||
|
||||
// Delete markers for the current screen
|
||||
DrawStruct = m_Parent->GetScreen()->EEDrawList;
|
||||
for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Next() )
|
||||
{
|
||||
if( DrawStruct->Type() != DRAW_MARKER_STRUCT_TYPE )
|
||||
continue;
|
||||
|
||||
/* Marqueur trouve */
|
||||
Marker = (DrawMarkerStruct*) DrawStruct;
|
||||
if( Marker->m_Type == MARQ_ERC )
|
||||
RedrawOneStruct( m_Parent->DrawPanel, &dc, Marker, g_XorMode );
|
||||
}
|
||||
|
||||
/* Suppression en memoire des marqueurs ERC */
|
||||
DeleteAllMarkers( MARQ_ERC );
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************/
|
||||
void WinEDA_ErcFrame::ResetDefaultERCDiag( wxCommandEvent& event )
|
||||
void DIALOG_ERC::ResetDefaultERCDiag( wxCommandEvent& event )
|
||||
/**************************************************************/
|
||||
|
||||
/* Remet aux valeurs par defaut la matrice de diagnostic
|
||||
|
@ -456,7 +366,7 @@ void WinEDA_ErcFrame::ResetDefaultERCDiag( wxCommandEvent& event )
|
|||
|
||||
|
||||
/************************************************************/
|
||||
void WinEDA_ErcFrame::ChangeErrorLevel( wxCommandEvent& event )
|
||||
void DIALOG_ERC::ChangeErrorLevel( wxCommandEvent& event )
|
||||
/************************************************************/
|
||||
|
||||
/* Change the error level for the pressed button, on the matrix table
|
||||
|
@ -490,7 +400,7 @@ void WinEDA_ErcFrame::ChangeErrorLevel( wxCommandEvent& event )
|
|||
|
||||
case ERR:
|
||||
level = OK;
|
||||
new_bitmap_xpm = green_xpm;
|
||||
new_bitmap_xpm = erc_green_xpm;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -498,7 +408,7 @@ void WinEDA_ErcFrame::ChangeErrorLevel( wxCommandEvent& event )
|
|||
{
|
||||
delete Butt;
|
||||
Butt = new wxBitmapButton( m_PanelERCOptions, id,
|
||||
wxBitmap (new_bitmap_xpm), pos );
|
||||
wxBitmap( new_bitmap_xpm ), pos );
|
||||
|
||||
m_ButtonList[y][x] = Butt;
|
||||
DiagErc[y][x] = DiagErc[x][y] = level;
|
||||
|
@ -507,15 +417,14 @@ void WinEDA_ErcFrame::ChangeErrorLevel( wxCommandEvent& event )
|
|||
|
||||
|
||||
/********************************************************/
|
||||
static void Diagnose( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||
static void Diagnose( WinEDA_DrawPanel* panel,
|
||||
ObjetNetListStruct* NetItemRef,
|
||||
ObjetNetListStruct* NetItemTst,
|
||||
int MinConn, int Diag )
|
||||
/********************************************************/
|
||||
|
||||
/* Routine de creation du marqueur ERC correspondant au conflit electrique
|
||||
* entre NetItemRef et NetItemTst
|
||||
* si MinConn < 0: Traitement des erreurs sur labels
|
||||
/* Creates an ERC marker to show the ERC problem between NetItemRef and NetItemTst
|
||||
* if MinConn < 0: this is an error on labels
|
||||
*/
|
||||
{
|
||||
DrawMarkerStruct* Marker = NULL;
|
||||
|
@ -529,7 +438,7 @@ static void Diagnose( WinEDA_DrawPanel* panel, wxDC* DC,
|
|||
/* Creation du nouveau marqueur type Erreur ERC */
|
||||
Marker = new DrawMarkerStruct( NetItemRef->m_Start, wxEmptyString );
|
||||
|
||||
Marker->m_Type = MARQ_ERC;
|
||||
Marker->m_Type = MARQ_ERC;
|
||||
Marker->m_MarkFlags = WAR;
|
||||
screen = NetItemRef->m_SheetList.LastScreen();
|
||||
Marker->SetNext( screen->EEDrawList );
|
||||
|
@ -543,37 +452,42 @@ static void Diagnose( WinEDA_DrawPanel* panel, wxDC* DC,
|
|||
|| (NetItemRef->m_Type == NET_HIERBUSLABELMEMBER) )
|
||||
{
|
||||
Marker->m_Comment.Printf( _( "Warning HLabel %s not connected to SheetLabel" ),
|
||||
NetItemRef->m_Label->GetData() );
|
||||
NetItemRef->m_Label->GetData() );
|
||||
}
|
||||
else
|
||||
Marker->m_Comment.Printf( _( "Warning SheetLabel %s not connected to HLabel" ),
|
||||
NetItemRef->m_Label->GetData() );
|
||||
|
||||
if( screen == panel->GetScreen() )
|
||||
RedrawOneStruct( panel, DC, Marker, GR_COPY );
|
||||
NetItemRef->m_Label->GetData() );
|
||||
return;
|
||||
}
|
||||
|
||||
ii = NetItemRef->m_ElectricalType;
|
||||
|
||||
wxString string_pinnum, cmp_ref;
|
||||
char ascii_buf[5];
|
||||
ascii_buf[4] = 0;
|
||||
memcpy( ascii_buf, &NetItemRef->m_PinNum, 4 );
|
||||
string_pinnum = CONV_FROM_UTF8( ascii_buf );
|
||||
cmp_ref = wxT("?");
|
||||
|
||||
if( NetItemTst == NULL )
|
||||
{
|
||||
if( MinConn == NOC ) /* 1 seul element dans le net */
|
||||
{
|
||||
Marker->m_Comment.Printf( _( "Warning Pin %s Unconnected" ), MsgPinElectricType[ii] );
|
||||
if( screen == panel->GetScreen() )
|
||||
RedrawOneStruct( panel, DC, Marker, GR_COPY );
|
||||
if ( NetItemRef->m_Type == NET_PIN && NetItemRef->m_Link )
|
||||
cmp_ref = ((SCH_COMPONENT*)NetItemRef->m_Link)->GetRef( &NetItemRef->m_SheetList );
|
||||
Marker->m_Comment.Printf( _( "Warning Cmp %s, Pin %s (%s) Unconnected" ),
|
||||
cmp_ref.GetData(), string_pinnum.GetData(), MsgPinElectricType[ii] );
|
||||
return;
|
||||
}
|
||||
|
||||
if( MinConn == NOD ) /* pas de pilotage du net */
|
||||
{
|
||||
if ( NetItemRef->m_Type == NET_PIN && NetItemRef->m_Link )
|
||||
cmp_ref = ((SCH_COMPONENT*)NetItemRef->m_Link)->GetRef( &NetItemRef->m_SheetList );
|
||||
Marker->m_Comment.Printf(
|
||||
_( "Warning Pin %s not driven (Net %d)" ),
|
||||
_( "Warning Cmp %s, Pin %s (%s) not driven (Net %d)" ),
|
||||
cmp_ref.GetData(), string_pinnum.GetData(),
|
||||
MsgPinElectricType[ii], NetItemRef->GetNet() );
|
||||
|
||||
if( screen == panel->GetScreen() )
|
||||
RedrawOneStruct( panel, DC, Marker, GR_COPY );
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -581,9 +495,6 @@ static void Diagnose( WinEDA_DrawPanel* panel, wxDC* DC,
|
|||
{
|
||||
Marker->m_Comment.Printf(
|
||||
_( "Warning More than 1 Pin connected to UnConnect symbol" ) );
|
||||
|
||||
if( screen == panel->GetScreen() )
|
||||
RedrawOneStruct( panel, DC, Marker, GR_COPY );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -599,20 +510,22 @@ static void Diagnose( WinEDA_DrawPanel* panel, wxDC* DC,
|
|||
g_EESchemaVar.NbWarningErc--;
|
||||
}
|
||||
|
||||
Marker->m_Comment.Printf( _(
|
||||
"%s: Pin %s connected to Pin %s (net %d)" ),
|
||||
DiagLevel.GetData(),
|
||||
MsgPinElectricType[ii],
|
||||
MsgPinElectricType[jj], NetItemRef->GetNet() );
|
||||
|
||||
if( screen == panel->GetScreen() )
|
||||
RedrawOneStruct( panel, DC, Marker, GR_COPY );
|
||||
wxString alt_string_pinnum, alt_cmp;
|
||||
memcpy( ascii_buf, &NetItemTst->m_PinNum, 4 );
|
||||
alt_string_pinnum = CONV_FROM_UTF8( ascii_buf );
|
||||
alt_cmp = wxT("?");
|
||||
if ( NetItemTst->m_Type == NET_PIN && NetItemTst->m_Link )
|
||||
alt_cmp = ((SCH_COMPONENT*)NetItemTst->m_Link)->GetRef( &NetItemTst->m_SheetList );
|
||||
Marker->m_Comment.Printf( _("%s: Cmp %s, Pin %s (%s) connected to Cmp %s, Pin %s (%s) (net %d)" ),
|
||||
DiagLevel.GetData(),
|
||||
cmp_ref.GetData(), string_pinnum.GetData(), MsgPinElectricType[ii],
|
||||
alt_cmp.GetData(), alt_string_pinnum.GetData(),MsgPinElectricType[jj], NetItemRef->GetNet() );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************/
|
||||
static void TestOthersItems( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||
static void TestOthersItems( WinEDA_DrawPanel* panel,
|
||||
ObjetNetListStruct* NetItemRef,
|
||||
ObjetNetListStruct* netstart,
|
||||
int* NetNbItems, int* MinConnexion )
|
||||
|
@ -647,9 +560,9 @@ static void TestOthersItems( WinEDA_DrawPanel* panel, wxDC* DC,
|
|||
|| ( NetItemRef->GetNet() != NetItemTst->GetNet() ) ) // fin de net
|
||||
{ /* Fin de netcode trouve: Tst connexion minimum */
|
||||
if( (*MinConnexion < NET_NC )
|
||||
&& (local_minconn < NET_NC ) ) /* pin non connect<63>e ou non pilotee */
|
||||
&& (local_minconn < NET_NC ) ) /* Not connected or not driven pin */
|
||||
{
|
||||
Diagnose( panel, DC, NetItemRef, NULL, local_minconn, WAR );
|
||||
Diagnose( panel, NetItemRef, NULL, local_minconn, WAR );
|
||||
*MinConnexion = DRV; // inhibition autres messages de ce type pour ce net
|
||||
}
|
||||
return;
|
||||
|
@ -690,7 +603,7 @@ static void TestOthersItems( WinEDA_DrawPanel* panel, wxDC* DC,
|
|||
{
|
||||
if( NetItemTst->m_FlagOfConnection == 0 )
|
||||
{
|
||||
Diagnose( panel, DC, NetItemRef, NetItemTst, 0, erc );
|
||||
Diagnose( panel, NetItemRef, NetItemTst, 0, erc );
|
||||
NetItemTst->m_FlagOfConnection = NOCONNECT;
|
||||
}
|
||||
}
|
||||
|
@ -752,9 +665,9 @@ static bool WriteDiagnosticERC( const wxString& FullFileName )
|
|||
|
||||
/* Write diag marqueur */
|
||||
msg.Printf( _( "ERC: %s (X= %2.3f inches, Y= %2.3f inches\n" ),
|
||||
Marker->GetComment().GetData(),
|
||||
(float) Marker->m_Pos.x / 1000,
|
||||
(float) Marker->m_Pos.y / 1000 );
|
||||
Marker->GetComment().GetData(),
|
||||
(float) Marker->m_Pos.x / 1000,
|
||||
(float) Marker->m_Pos.y / 1000 );
|
||||
|
||||
fprintf( OutErc, "%s", CONV_TO_UTF8( msg ) );
|
||||
}
|
||||
|
@ -786,8 +699,7 @@ bool TestLabel_( ObjetNetListStruct* a, ObjetNetListStruct* b )
|
|||
|
||||
|
||||
/***********************************************************************/
|
||||
void TestLabel( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||
ObjetNetListStruct* NetItemRef, ObjetNetListStruct* StartNet )
|
||||
void TestLabel( WinEDA_DrawPanel* panel, ObjetNetListStruct* NetItemRef, ObjetNetListStruct* StartNet )
|
||||
/***********************************************************************/
|
||||
|
||||
/* Routine controlant qu'un sheetLabel est bien connecte a un Glabel de la
|
||||
|
@ -816,7 +728,7 @@ void TestLabel( WinEDA_DrawPanel* panel, wxDC* DC,
|
|||
if( erc )
|
||||
{
|
||||
/* GLabel ou SheetLabel orphelin */
|
||||
Diagnose( panel, DC, NetItemRef, NULL, -1, WAR );
|
||||
Diagnose( panel, NetItemRef, NULL, -1, WAR );
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "dialog_erc.h"
|
||||
#include "dialog_find.h"
|
||||
#include "netlist_control.h"
|
||||
#include "dialog_erc.h"
|
||||
|
||||
|
||||
/*******************************/
|
||||
|
@ -493,7 +494,7 @@ void WinEDA_SchematicFrame::OnAnnotate( wxCommandEvent& event )
|
|||
void WinEDA_SchematicFrame::OnErc( wxCommandEvent& event )
|
||||
/*********************************************************/
|
||||
{
|
||||
WinEDA_ErcFrame* dlg = new WinEDA_ErcFrame( this );
|
||||
DIALOG_ERC* dlg = new DIALOG_ERC( this );
|
||||
|
||||
dlg->ShowModal();
|
||||
dlg->Destroy();
|
||||
|
|
|
@ -114,6 +114,7 @@ extern const char* edit_xpm[];
|
|||
extern const char* eeschema_xpm[];
|
||||
extern const char* enter_sheet_xpm[];
|
||||
extern const char* erc_xpm[];
|
||||
extern const char* erc_green_xpm[];
|
||||
extern const char* error_xpm[];
|
||||
extern const char* exit_xpm[];
|
||||
extern const char* export_module_xpm[];
|
||||
|
|
Loading…
Reference in New Issue