another DRC progress update
This commit is contained in:
parent
4fd9325f6d
commit
0803392344
|
@ -4,6 +4,14 @@ Started 2007-June-11
|
||||||
Please add newer entries at the top, list the date and your name with
|
Please add newer entries at the top, list the date and your name with
|
||||||
email address.
|
email address.
|
||||||
|
|
||||||
|
|
||||||
|
2007-Dec-2 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||||
|
================================================================================
|
||||||
|
+pcbnew
|
||||||
|
drc.cpp and dialog_drc.cpp intermediate update. More hours to go
|
||||||
|
before completion.
|
||||||
|
|
||||||
|
|
||||||
2007-Nov-30 UPDATE Dick Hollenbeck <dick@softplc.com>
|
2007-Nov-30 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||||
================================================================================
|
================================================================================
|
||||||
+pcbnew
|
+pcbnew
|
||||||
|
@ -15,10 +23,8 @@ email address.
|
||||||
and testing is done.
|
and testing is done.
|
||||||
* Made the DRC dialog modeless, so it can sit off to the side while the MARKER
|
* Made the DRC dialog modeless, so it can sit off to the side while the MARKER
|
||||||
are inspected one by one.
|
are inspected one by one.
|
||||||
Need another 4-8 hours or so to finish the actual dialog display, remove
|
|
||||||
debug statements and finish testing.
|
|
||||||
|
|
||||||
|
|
||||||
2007-Nov-29 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
2007-Nov-29 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||||
================================================================================
|
================================================================================
|
||||||
+pcbnew:
|
+pcbnew:
|
||||||
|
@ -42,7 +48,6 @@ email address.
|
||||||
* Revised BOARD::Visit() to know about BOARD::m_markers.
|
* Revised BOARD::Visit() to know about BOARD::m_markers.
|
||||||
* Revised pcbnew/find.cpp to know about BOARD::m_markers.
|
* Revised pcbnew/find.cpp to know about BOARD::m_markers.
|
||||||
* removed wxYield() from drc.cpp
|
* removed wxYield() from drc.cpp
|
||||||
Maybe finish the DRC rework tomorrow.
|
|
||||||
|
|
||||||
|
|
||||||
2007-Nov-26 UPDATE Dick Hollenbeck <dick@softplc.com>
|
2007-Nov-26 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||||
|
|
|
@ -201,6 +201,7 @@ class BOARD : public BOARD_ITEM
|
||||||
friend class WinEDA_PcbFrame;
|
friend class WinEDA_PcbFrame;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
std::vector<MARKER*> m_markers; ///< MARKERs for clearance problems, owned by pointer
|
std::vector<MARKER*> m_markers; ///< MARKERs for clearance problems, owned by pointer
|
||||||
// std::vector<MARKER*> m_markersUnconnected; ///< MARKERs for unconnected problems, owned by pointer
|
// std::vector<MARKER*> m_markersUnconnected; ///< MARKERs for unconnected problems, owned by pointer
|
||||||
|
|
||||||
|
@ -269,6 +270,15 @@ public:
|
||||||
*/
|
*/
|
||||||
void DeleteMARKERs();
|
void DeleteMARKERs();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function DeleteMARKER
|
||||||
|
* deletes one MARKER from the board.
|
||||||
|
* @param aIndex The index of the marker to delete.
|
||||||
|
*/
|
||||||
|
void DeleteMARKER( int aIndex );
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function GetMARKER
|
* Function GetMARKER
|
||||||
* returns the MARKER at a given index.
|
* returns the MARKER at a given index.
|
||||||
|
|
|
@ -194,8 +194,7 @@ void BOARD::Delete( BOARD_ITEM* aBoardItem )
|
||||||
{
|
{
|
||||||
if( m_markers[i] == (MARKER*) aBoardItem )
|
if( m_markers[i] == (MARKER*) aBoardItem )
|
||||||
{
|
{
|
||||||
delete m_markers[i];
|
DeleteMARKER( i );
|
||||||
m_markers.erase( m_markers.begin() + i );
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -208,6 +207,16 @@ void BOARD::Delete( BOARD_ITEM* aBoardItem )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void BOARD::DeleteMARKER( int aIndex )
|
||||||
|
{
|
||||||
|
if( (unsigned) aIndex < m_markers.size() )
|
||||||
|
{
|
||||||
|
delete m_markers[aIndex];
|
||||||
|
m_markers.erase( m_markers.begin() + aIndex );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void BOARD::DeleteMARKERs()
|
void BOARD::DeleteMARKERs()
|
||||||
{
|
{
|
||||||
// the vector does not know how to delete the MARKER, it holds pointers
|
// the vector does not know how to delete the MARKER, it holds pointers
|
||||||
|
|
|
@ -39,14 +39,68 @@
|
||||||
////@end XPM images
|
////@end XPM images
|
||||||
|
|
||||||
|
|
||||||
|
class DRC_LIST_MARKERS : public DRC_ITEM_LIST
|
||||||
|
{
|
||||||
|
BOARD* m_board;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
DRC_LIST_MARKERS( BOARD* aBoard ) :
|
||||||
|
m_board(aBoard)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/* no destructor since we do not own anything to delete, not even the BOARD.
|
||||||
|
~DRC_LIST_MARKERS() {}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
//-----<Interface DRC_ITEM_LIST >---------------------------------------
|
||||||
|
|
||||||
|
void DeleteAllItems()
|
||||||
|
{
|
||||||
|
m_board->DeleteMARKERs();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const DRC_ITEM* GetItem( int aIndex )
|
||||||
|
{
|
||||||
|
const MARKER* marker = m_board->GetMARKER( aIndex );
|
||||||
|
if( marker )
|
||||||
|
return &marker->GetReporter();
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeleteItem( int aIndex )
|
||||||
|
{
|
||||||
|
m_board->DeleteMARKER( aIndex );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetCount
|
||||||
|
* returns the number of items in the list.
|
||||||
|
*/
|
||||||
|
int GetCount()
|
||||||
|
{
|
||||||
|
return m_board->GetMARKERCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----</Interface DRC_ITEM_LIST >--------------------------------------
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class DRCLISTBOX
|
* Class DRCLISTBOX
|
||||||
* is used to display a DRC_LIST, which contains DRC_ITEM_OWNERs.
|
* is used to display a DRC_ITEM_LIST.
|
||||||
*/
|
*/
|
||||||
class DRCLISTBOX : public wxHtmlListBox
|
class DRCLISTBOX : public wxHtmlListBox
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
DRC_LIST* m_List; ///< wxHtmlListBox does not own the list items, we do
|
DRC_ITEM_LIST* m_list; ///< wxHtmlListBox does not own the list, I do
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DRCLISTBOX( wxWindow* parent, wxWindowID id = wxID_ANY,
|
DRCLISTBOX( wxWindow* parent, wxWindowID id = wxID_ANY,
|
||||||
|
@ -54,36 +108,48 @@ public:
|
||||||
long style = 0, const wxString& name = wxVListBoxNameStr)
|
long style = 0, const wxString& name = wxVListBoxNameStr)
|
||||||
: wxHtmlListBox( parent, id, pos, size, style, name )
|
: wxHtmlListBox( parent, id, pos, size, style, name )
|
||||||
{
|
{
|
||||||
|
m_list = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
~DRCLISTBOX()
|
||||||
|
{
|
||||||
|
delete m_list; // I own it, I destroy it.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetList
|
* Function SetList
|
||||||
* sets the DRC_LIST for this listbox. However no ownership is
|
* sets the DRC_LIST for this listbox. Ownership of the DRC_ITEM_LIST is
|
||||||
* given, the caller still owns the list and is responsible
|
* transfered to this DRCLISTBOX.
|
||||||
* for deleting it.
|
* @param aList The DRC_ITEM_LIST* containing the DRC_ITEMs which will be
|
||||||
* @param aList The DRC_LIST containing the DRC_ITEMs which will be
|
|
||||||
* displayed in the wxHtmlListBox
|
* displayed in the wxHtmlListBox
|
||||||
*/
|
*/
|
||||||
void SetList( DRC_LIST* aList )
|
void SetList( DRC_ITEM_LIST* aList )
|
||||||
{
|
{
|
||||||
m_List = aList;
|
delete m_list;
|
||||||
SetItemCount( aList->size() );
|
|
||||||
|
m_list = aList;
|
||||||
|
SetItemCount( aList->GetCount() );
|
||||||
|
Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function OnGetItem
|
* Function OnGetItem
|
||||||
* returns the html text associated with the given index 'n'.
|
* returns the html text associated with the DRC_ITEM given by index 'n'.
|
||||||
* @param n An index into the list.
|
* @param n An index into the list.
|
||||||
* @return wxString - the simply html text to show in the listbox.
|
* @return wxString - the simply html text to show in the listbox.
|
||||||
*/
|
*/
|
||||||
wxString OnGetItem( size_t n ) const
|
wxString OnGetItem( size_t n ) const
|
||||||
{
|
{
|
||||||
if( m_List )
|
if( m_list )
|
||||||
return (*m_List)[n]->ShowHtml();
|
{
|
||||||
else
|
const DRC_ITEM* item = m_list->GetItem( (int) n );
|
||||||
return wxString();
|
if( item )
|
||||||
|
return item->ShowHtml();
|
||||||
|
}
|
||||||
|
return wxString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,27 +161,44 @@ public:
|
||||||
*/
|
*/
|
||||||
wxString OnGetItemMarkup( size_t n ) const
|
wxString OnGetItemMarkup( size_t n ) const
|
||||||
{
|
{
|
||||||
if( m_List )
|
return OnGetItem( n );
|
||||||
return (*m_List)[n]->ShowHtml();
|
|
||||||
else
|
|
||||||
return wxString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function DeleteElement
|
* Function DeleteElement
|
||||||
* will delete one of the items in the list.
|
* will delete one of the items in the list.
|
||||||
* @param ndx The index into the list to delete.
|
* @param aIndex The index into the list to delete.
|
||||||
*/
|
*/
|
||||||
void DeleteElmenent( int ndx )
|
void DeleteItem( int aIndex )
|
||||||
{
|
{
|
||||||
if( m_List )
|
if( m_list )
|
||||||
{
|
{
|
||||||
if( (size_t) ndx < m_List->size() )
|
m_list->DeleteItem( aIndex );
|
||||||
{
|
int count = m_list->GetCount();
|
||||||
m_List->erase( m_List->begin()+ndx );
|
SetItemCount( count );
|
||||||
SetItemCount( m_List->size() );
|
|
||||||
}
|
if( aIndex < count )
|
||||||
|
SetSelection( aIndex );
|
||||||
|
else
|
||||||
|
SetSelection( aIndex-1 ); // -1 is no selection
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function DeleteAllItems
|
||||||
|
* deletes all items in the list.
|
||||||
|
*/
|
||||||
|
void DeleteAllItems()
|
||||||
|
{
|
||||||
|
if( m_list )
|
||||||
|
{
|
||||||
|
m_list->DeleteAllItems();
|
||||||
|
SetItemCount(0);
|
||||||
|
SetSelection( -1 ); // -1 is no selection
|
||||||
|
Refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -136,7 +219,6 @@ BEGIN_EVENT_TABLE( DrcDialog, wxDialog )
|
||||||
|
|
||||||
////@begin DrcDialog event table entries
|
////@begin DrcDialog event table entries
|
||||||
EVT_INIT_DIALOG( DrcDialog::OnInitDialog )
|
EVT_INIT_DIALOG( DrcDialog::OnInitDialog )
|
||||||
EVT_WINDOW_DESTROY( DrcDialog::OnDestroy )
|
|
||||||
|
|
||||||
EVT_CHECKBOX( ID_CHECKBOX, DrcDialog::OnReportCheckBoxClicked )
|
EVT_CHECKBOX( ID_CHECKBOX, DrcDialog::OnReportCheckBoxClicked )
|
||||||
|
|
||||||
|
@ -148,6 +230,8 @@ BEGIN_EVENT_TABLE( DrcDialog, wxDialog )
|
||||||
|
|
||||||
EVT_BUTTON( ID_DELETE_ALL, DrcDialog::OnDeleteAllClick )
|
EVT_BUTTON( ID_DELETE_ALL, DrcDialog::OnDeleteAllClick )
|
||||||
|
|
||||||
|
EVT_BUTTON( ID_DELETE_ONE, DrcDialog::OnDeleteOneClick )
|
||||||
|
|
||||||
EVT_BUTTON( wxID_CANCEL, DrcDialog::OnCancelClick )
|
EVT_BUTTON( wxID_CANCEL, DrcDialog::OnCancelClick )
|
||||||
|
|
||||||
EVT_BUTTON( wxID_OK, DrcDialog::OnOkClick )
|
EVT_BUTTON( wxID_OK, DrcDialog::OnOkClick )
|
||||||
|
@ -205,6 +289,7 @@ bool DrcDialog::Create( wxWindow* parent, wxWindowID id, const wxString& caption
|
||||||
m_UnconnectedTestCtrl = NULL;
|
m_UnconnectedTestCtrl = NULL;
|
||||||
m_DeleteAllButton = NULL;
|
m_DeleteAllButton = NULL;
|
||||||
m_DeleteCurrentMarkerButton = NULL;
|
m_DeleteCurrentMarkerButton = NULL;
|
||||||
|
m_Notebook = NULL;
|
||||||
m_ClearanceListBox = NULL;
|
m_ClearanceListBox = NULL;
|
||||||
m_UnconnectedListBox = NULL;
|
m_UnconnectedListBox = NULL;
|
||||||
StdDialogButtonSizer = NULL;
|
StdDialogButtonSizer = NULL;
|
||||||
|
@ -223,10 +308,6 @@ bool DrcDialog::Create( wxWindow* parent, wxWindowID id, const wxString& caption
|
||||||
Centre();
|
Centre();
|
||||||
////@end DrcDialog creation
|
////@end DrcDialog creation
|
||||||
|
|
||||||
|
|
||||||
// m_ClearanceListBox->SetList( &gList );
|
|
||||||
// m_UnconnectedListBox->SetList( &gList );
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -239,7 +320,7 @@ void DrcDialog::CreateControls()
|
||||||
SetFont( *g_DialogFont );
|
SetFont( *g_DialogFont );
|
||||||
|
|
||||||
////@begin DrcDialog content construction
|
////@begin DrcDialog content construction
|
||||||
// Generated by DialogBlocks, Fri 30 Nov 2007 18:52:20 CST (unregistered)
|
// Generated by DialogBlocks, Sun 02 Dec 2007 22:18:27 CST (unregistered)
|
||||||
|
|
||||||
DrcDialog* itemDialog1 = this;
|
DrcDialog* itemDialog1 = this;
|
||||||
|
|
||||||
|
@ -339,27 +420,27 @@ void DrcDialog::CreateControls()
|
||||||
wxStaticText* itemStaticText22 = new wxStaticText( itemDialog1, wxID_STATIC, _("Error Messages:"), wxDefaultPosition, wxDefaultSize, 0 );
|
wxStaticText* itemStaticText22 = new wxStaticText( itemDialog1, wxID_STATIC, _("Error Messages:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
m_MainSizer->Add(itemStaticText22, 0, wxGROW|wxLEFT|wxRIGHT|wxADJUST_MINSIZE, 10);
|
m_MainSizer->Add(itemStaticText22, 0, wxGROW|wxLEFT|wxRIGHT|wxADJUST_MINSIZE, 10);
|
||||||
|
|
||||||
wxNotebook* itemNotebook23 = new wxNotebook( itemDialog1, ID_NOTEBOOK1, wxDefaultPosition, wxDefaultSize, wxNB_DEFAULT|wxRAISED_BORDER );
|
m_Notebook = new wxNotebook( itemDialog1, ID_NOTEBOOK1, wxDefaultPosition, wxDefaultSize, wxNB_DEFAULT|wxRAISED_BORDER );
|
||||||
#if !wxCHECK_VERSION(2,5,2)
|
#if !wxCHECK_VERSION(2,5,2)
|
||||||
wxNotebookSizer* itemNotebook23Sizer = new wxNotebookSizer(itemNotebook23);
|
wxNotebookSizer* m_NotebookSizer = new wxNotebookSizer(m_Notebook);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
m_ClearanceListBox = new DRCLISTBOX( itemNotebook23, ID_CLEARANCE_LIST, wxDefaultPosition, wxSize(100, 300), wxSUNKEN_BORDER|wxHSCROLL|wxVSCROLL );
|
m_ClearanceListBox = new DRCLISTBOX( m_Notebook, ID_CLEARANCE_LIST, wxDefaultPosition, wxSize(100, 300), wxSUNKEN_BORDER|wxHSCROLL|wxVSCROLL );
|
||||||
if (DrcDialog::ShowToolTips())
|
if (DrcDialog::ShowToolTips())
|
||||||
m_ClearanceListBox->SetToolTip(_("MARKERs on the PCB, double click on any MARKER to go there in PCB"));
|
m_ClearanceListBox->SetToolTip(_("MARKERs on the PCB, double click on any MARKER to go there in PCB"));
|
||||||
|
|
||||||
itemNotebook23->AddPage(m_ClearanceListBox, _("Distance Problem Markers"));
|
m_Notebook->AddPage(m_ClearanceListBox, _("Distance Problem Markers"));
|
||||||
|
|
||||||
m_UnconnectedListBox = new DRCLISTBOX( itemNotebook23, ID_UNCONNECTED_LIST, wxDefaultPosition, wxSize(100, 100), wxSUNKEN_BORDER|wxHSCROLL|wxVSCROLL );
|
m_UnconnectedListBox = new DRCLISTBOX( m_Notebook, ID_UNCONNECTED_LIST, wxDefaultPosition, wxSize(100, 100), wxSUNKEN_BORDER|wxHSCROLL|wxVSCROLL );
|
||||||
if (DrcDialog::ShowToolTips())
|
if (DrcDialog::ShowToolTips())
|
||||||
m_UnconnectedListBox->SetToolTip(_("Pad to pad, pad to track, and track to track clearance problems"));
|
m_UnconnectedListBox->SetToolTip(_("Pad to pad, pad to track, and track to track clearance problems"));
|
||||||
|
|
||||||
itemNotebook23->AddPage(m_UnconnectedListBox, _("Unconnected"));
|
m_Notebook->AddPage(m_UnconnectedListBox, _("Unconnected"));
|
||||||
|
|
||||||
#if !wxCHECK_VERSION(2,5,2)
|
#if !wxCHECK_VERSION(2,5,2)
|
||||||
m_MainSizer->Add(itemNotebook23Sizer, 5, wxGROW|wxALL, 5);
|
m_MainSizer->Add(m_NotebookSizer, 5, wxGROW|wxALL, 5);
|
||||||
#else
|
#else
|
||||||
m_MainSizer->Add(itemNotebook23, 5, wxGROW|wxALL, 5);
|
m_MainSizer->Add(m_Notebook, 5, wxGROW|wxALL, 5);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
StdDialogButtonSizer = new wxStdDialogButtonSizer;
|
StdDialogButtonSizer = new wxStdDialogButtonSizer;
|
||||||
|
@ -376,7 +457,6 @@ void DrcDialog::CreateControls()
|
||||||
StdDialogButtonSizer->Realize();
|
StdDialogButtonSizer->Realize();
|
||||||
|
|
||||||
// Connect events and objects
|
// Connect events and objects
|
||||||
itemDialog1->Connect(ID_DIALOG, wxEVT_DESTROY, wxWindowDestroyEventHandler(DrcDialog::OnDestroy), NULL, this);
|
|
||||||
m_ClearanceListBox->Connect(ID_CLEARANCE_LIST, wxEVT_LEFT_DCLICK, wxMouseEventHandler(DrcDialog::OnLeftDClickClearance), NULL, this);
|
m_ClearanceListBox->Connect(ID_CLEARANCE_LIST, wxEVT_LEFT_DCLICK, wxMouseEventHandler(DrcDialog::OnLeftDClickClearance), NULL, this);
|
||||||
m_ClearanceListBox->Connect(ID_CLEARANCE_LIST, wxEVT_RIGHT_UP, wxMouseEventHandler(DrcDialog::OnRightUpClearance), NULL, this);
|
m_ClearanceListBox->Connect(ID_CLEARANCE_LIST, wxEVT_RIGHT_UP, wxMouseEventHandler(DrcDialog::OnRightUpClearance), NULL, this);
|
||||||
m_UnconnectedListBox->Connect(ID_UNCONNECTED_LIST, wxEVT_LEFT_DCLICK, wxMouseEventHandler(DrcDialog::OnLeftDClickUnconnected), NULL, this);
|
m_UnconnectedListBox->Connect(ID_UNCONNECTED_LIST, wxEVT_LEFT_DCLICK, wxMouseEventHandler(DrcDialog::OnLeftDClickUnconnected), NULL, this);
|
||||||
|
@ -423,28 +503,68 @@ wxIcon DrcDialog::GetIconResource( const wxString& name )
|
||||||
return wxNullIcon;
|
return wxNullIcon;
|
||||||
////@end DrcDialog icon retrieval
|
////@end DrcDialog icon retrieval
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DRC_RUN
|
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DRC_RUN
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void DrcDialog::OnStartdrcClick( wxCommandEvent& event )
|
void DrcDialog::OnStartdrcClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
CmdDrc();
|
wxString reportName;
|
||||||
}
|
|
||||||
|
if( m_CreateRptCtrl->IsChecked() ) // Create a file rpt
|
||||||
|
{
|
||||||
|
reportName = m_RptFilenameCtrl->GetValue();
|
||||||
|
|
||||||
/*!
|
if( reportName.IsEmpty() )
|
||||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_STOP_CONTROL_DRC
|
{
|
||||||
*/
|
wxCommandEvent junk;
|
||||||
|
OnButtonBrowseRptFileClick( junk );
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
reportName = m_RptFilenameCtrl->GetValue();
|
||||||
void DrcDialog::OnStopControlDrcClick( wxCommandEvent& event )
|
}
|
||||||
{
|
|
||||||
if( DrcInProgress )
|
g_DesignSettings.m_TrackClearence =
|
||||||
AbortDrc = TRUE;
|
ReturnValueFromTextCtrl( *m_SetClearance, m_Parent->m_InternalUnits );
|
||||||
else
|
|
||||||
wxBell();
|
m_tester->SetSettings( m_Pad2PadTestCtrl->IsChecked(),
|
||||||
|
m_UnconnectedTestCtrl->IsChecked(),
|
||||||
|
m_ZonesTestCtrl->IsChecked(),
|
||||||
|
reportName, m_CreateRptCtrl->IsChecked() );
|
||||||
|
|
||||||
|
|
||||||
|
m_Parent->Erase_Marqueurs();
|
||||||
|
m_Parent->ReDrawPanel();
|
||||||
|
|
||||||
|
SetCursor( wxCursor( wxCURSOR_WAIT ) );
|
||||||
|
|
||||||
|
// run all the tests, with no UI at this time.
|
||||||
|
m_tester->RunTests();
|
||||||
|
|
||||||
|
// Generate the report
|
||||||
|
if( !reportName.IsEmpty() )
|
||||||
|
{
|
||||||
|
FILE* fp = wxFopen( reportName, wxT( "w" ) );
|
||||||
|
|
||||||
|
m_tester->WriteReport( fp );
|
||||||
|
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
// @todo put up message box saying we created the report
|
||||||
|
//msg.Printf( _( "Report file <%s> created\n" ), s_RptFilename.GetData() );
|
||||||
|
}
|
||||||
|
|
||||||
|
SetCursor( wxCursor( wxCURSOR_WATCH ) );
|
||||||
|
|
||||||
|
// @todo set the list counts in the DRCLISTITEMS here.
|
||||||
|
|
||||||
|
m_Parent->ReDrawPanel();
|
||||||
|
|
||||||
|
// printf("done with tests\n");
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_ERASE_DRC_MARKERS
|
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_ERASE_DRC_MARKERS
|
||||||
|
@ -452,16 +572,67 @@ void DrcDialog::OnStopControlDrcClick( wxCommandEvent& event )
|
||||||
|
|
||||||
void DrcDialog::OnDeleteAllClick( wxCommandEvent& event )
|
void DrcDialog::OnDeleteAllClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
DelDRCMarkers(event);
|
m_ClearanceListBox->DeleteAllItems();
|
||||||
|
m_UnconnectedListBox->DeleteAllItems();
|
||||||
|
m_Parent->ReDrawPanel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_LIST_UNCONNECTED_PADS
|
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_LIST_UNCONNECTED_PADS
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void DrcDialog::OnListUnconnectedClick( wxCommandEvent& event )
|
void DrcDialog::OnListUnconnectedClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
ListUnconnectedPads(event);
|
wxString reportName;
|
||||||
|
|
||||||
|
if( m_CreateRptCtrl->IsChecked() ) // Create a file rpt
|
||||||
|
{
|
||||||
|
reportName = m_RptFilenameCtrl->GetValue();
|
||||||
|
|
||||||
|
if( reportName.IsEmpty() )
|
||||||
|
{
|
||||||
|
wxCommandEvent junk;
|
||||||
|
OnButtonBrowseRptFileClick( junk );
|
||||||
|
}
|
||||||
|
|
||||||
|
reportName = m_RptFilenameCtrl->GetValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
g_DesignSettings.m_TrackClearence =
|
||||||
|
ReturnValueFromTextCtrl( *m_SetClearance, m_Parent->m_InternalUnits );
|
||||||
|
|
||||||
|
m_tester->SetSettings( m_Pad2PadTestCtrl->IsChecked(),
|
||||||
|
m_UnconnectedTestCtrl->IsChecked(),
|
||||||
|
m_ZonesTestCtrl->IsChecked(),
|
||||||
|
reportName, m_CreateRptCtrl->IsChecked() );
|
||||||
|
|
||||||
|
|
||||||
|
DelDRCMarkers();
|
||||||
|
|
||||||
|
SetCursor( wxCursor( wxCURSOR_WAIT ) );
|
||||||
|
|
||||||
|
// run all the tests, with no UI at this time.
|
||||||
|
m_tester->ListUnconnectedPads();
|
||||||
|
|
||||||
|
// Generate the report
|
||||||
|
if( !reportName.IsEmpty() )
|
||||||
|
{
|
||||||
|
FILE* fp = wxFopen( reportName, wxT( "w" ) );
|
||||||
|
|
||||||
|
m_tester->WriteReport( fp );
|
||||||
|
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
// @todo put up message box saying we created the report
|
||||||
|
//msg.Printf( _( "Report file <%s> created\n" ), s_RptFilename.GetData() );
|
||||||
|
}
|
||||||
|
|
||||||
|
SetCursor( wxCursor( wxCURSOR_WATCH ) );
|
||||||
|
|
||||||
|
// @todo set the list counts in the DRCLISTITEMS here.
|
||||||
|
|
||||||
|
m_Parent->ReDrawPanel();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -500,6 +671,12 @@ void DrcDialog::OnButtonBrowseRptFileClick( wxCommandEvent& event )
|
||||||
|
|
||||||
void DrcDialog::OnOkClick( wxCommandEvent& event )
|
void DrcDialog::OnOkClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
|
#if defined(DEBUG)
|
||||||
|
printf("OK Button handler\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
SetReturnCode( wxID_OK );
|
||||||
|
m_tester->DestroyDialog();
|
||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -510,10 +687,13 @@ void DrcDialog::OnOkClick( wxCommandEvent& event )
|
||||||
|
|
||||||
void DrcDialog::OnCancelClick( wxCommandEvent& event )
|
void DrcDialog::OnCancelClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL in WinEDA_DrcFrame.
|
#if defined(DEBUG)
|
||||||
// Before editing this code, remove the block markers.
|
printf("Cancel Button handler\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
SetReturnCode( wxID_CANCEL );
|
||||||
|
m_tester->DestroyDialog();
|
||||||
event.Skip();
|
event.Skip();
|
||||||
////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL in WinEDA_DrcFrame.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -569,11 +749,10 @@ void DrcDialog::OnLeftDClickClearance( wxMouseEvent& event )
|
||||||
|
|
||||||
if( selection != wxNOT_FOUND )
|
if( selection != wxNOT_FOUND )
|
||||||
{
|
{
|
||||||
printf("get item number %d\n", selection );
|
//printf("get item number %d\n", selection );
|
||||||
|
|
||||||
// Find the selected MARKER in the PCB, position cursor there,
|
// Find the selected MARKER in the PCB, position cursor there.
|
||||||
// and close this dialog.
|
// Do not close this dialog for users with dual screens.
|
||||||
EndModal( 0 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
event.Skip();
|
event.Skip();
|
||||||
|
@ -613,7 +792,7 @@ void DrcDialog::OnLeftDClickUnconnected( wxMouseEvent& event )
|
||||||
|
|
||||||
if( selection != wxNOT_FOUND )
|
if( selection != wxNOT_FOUND )
|
||||||
{
|
{
|
||||||
printf("get item number %d\n", selection );
|
//printf("get item number %d\n", selection );
|
||||||
}
|
}
|
||||||
|
|
||||||
event.Skip();
|
event.Skip();
|
||||||
|
@ -628,7 +807,7 @@ void DrcDialog::OnMarkerSelectionEvent( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
// until a MARKER is selected, this button is not enabled.
|
// until a MARKER is selected, this button is not enabled.
|
||||||
m_DeleteCurrentMarkerButton->Enable(true);
|
m_DeleteCurrentMarkerButton->Enable(true);
|
||||||
printf("get Marker number %d\n", selection );
|
//printf("get Marker number %d\n", selection );
|
||||||
}
|
}
|
||||||
|
|
||||||
event.Skip();
|
event.Skip();
|
||||||
|
@ -647,15 +826,50 @@ void DrcDialog::OnUnconnectedSelectionEvent( wxCommandEvent& event )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* wxEVT_DESTROY event handler for ID_DIALOG
|
|
||||||
*/
|
|
||||||
|
|
||||||
void DrcDialog::OnDestroy( wxWindowDestroyEvent& event )
|
|
||||||
|
/*********************************************************/
|
||||||
|
void DrcDialog::DelDRCMarkers()
|
||||||
|
/*********************************************************/
|
||||||
{
|
{
|
||||||
////@begin wxEVT_DESTROY event handler for ID_DIALOG in WinEDA_DrcFrame.
|
m_Parent->Erase_Marqueurs();
|
||||||
// Before editing this code, remove the block markers.
|
m_Parent->ReDrawPanel();
|
||||||
event.Skip();
|
}
|
||||||
////@end wxEVT_DESTROY event handler for ID_DIALOG in WinEDA_DrcFrame.
|
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DELETE_ONE
|
||||||
|
*/
|
||||||
|
|
||||||
|
void DrcDialog::OnDeleteOneClick( wxCommandEvent& event )
|
||||||
|
{
|
||||||
|
int selectedIndex;
|
||||||
|
int curTab = m_Notebook->GetSelection();
|
||||||
|
|
||||||
|
if( curTab == 0 )
|
||||||
|
{
|
||||||
|
selectedIndex = m_ClearanceListBox->GetSelection();
|
||||||
|
if( selectedIndex != wxNOT_FOUND )
|
||||||
|
{
|
||||||
|
m_ClearanceListBox->DeleteItem( selectedIndex );
|
||||||
|
m_Parent->ReDrawPanel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else if( curTab == 1 )
|
||||||
|
{
|
||||||
|
selectedIndex = m_UnconnectedListBox->GetSelection();
|
||||||
|
if( selectedIndex != wxNOT_FOUND )
|
||||||
|
{
|
||||||
|
m_UnconnectedListBox->DeleteItem( selectedIndex );
|
||||||
|
m_Parent->ReDrawPanel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DELETE_ONE in DrcDialog.
|
||||||
|
// Before editing this code, remove the block markers.
|
||||||
|
event.Skip();
|
||||||
|
////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DELETE_ONE in DrcDialog.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
|
|
||||||
////@begin forward declarations
|
////@begin forward declarations
|
||||||
class wxBoxSizer;
|
class wxBoxSizer;
|
||||||
|
class wxNotebook;
|
||||||
class DRCLISTBOX;
|
class DRCLISTBOX;
|
||||||
class wxStdDialogButtonSizer;
|
class wxStdDialogButtonSizer;
|
||||||
////@end forward declarations
|
////@end forward declarations
|
||||||
|
@ -58,7 +59,7 @@ class wxStdDialogButtonSizer;
|
||||||
#define ID_NOTEBOOK1 10008
|
#define ID_NOTEBOOK1 10008
|
||||||
#define ID_CLEARANCE_LIST 10001
|
#define ID_CLEARANCE_LIST 10001
|
||||||
#define ID_UNCONNECTED_LIST 10009
|
#define ID_UNCONNECTED_LIST 10009
|
||||||
#define SYMBOL_DRCDIALOG_STYLE wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxMAXIMIZE_BOX|wxMINIMIZE_BOX
|
#define SYMBOL_DRCDIALOG_STYLE wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX|wxMAXIMIZE_BOX|wxMINIMIZE_BOX
|
||||||
#define SYMBOL_DRCDIALOG_TITLE _("DRC Control")
|
#define SYMBOL_DRCDIALOG_TITLE _("DRC Control")
|
||||||
#define SYMBOL_DRCDIALOG_IDNAME ID_DIALOG
|
#define SYMBOL_DRCDIALOG_IDNAME ID_DIALOG
|
||||||
#define SYMBOL_DRCDIALOG_SIZE wxSize(400, 300)
|
#define SYMBOL_DRCDIALOG_SIZE wxSize(400, 300)
|
||||||
|
@ -105,9 +106,6 @@ public:
|
||||||
/// wxEVT_INIT_DIALOG event handler for ID_DIALOG
|
/// wxEVT_INIT_DIALOG event handler for ID_DIALOG
|
||||||
void OnInitDialog( wxInitDialogEvent& event );
|
void OnInitDialog( wxInitDialogEvent& event );
|
||||||
|
|
||||||
/// wxEVT_DESTROY event handler for ID_DIALOG
|
|
||||||
void OnDestroy( wxWindowDestroyEvent& event );
|
|
||||||
|
|
||||||
/// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX
|
/// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX
|
||||||
void OnReportCheckBoxClicked( wxCommandEvent& event );
|
void OnReportCheckBoxClicked( wxCommandEvent& event );
|
||||||
|
|
||||||
|
@ -123,6 +121,9 @@ public:
|
||||||
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DELETE_ALL
|
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DELETE_ALL
|
||||||
void OnDeleteAllClick( wxCommandEvent& event );
|
void OnDeleteAllClick( wxCommandEvent& event );
|
||||||
|
|
||||||
|
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DELETE_ONE
|
||||||
|
void OnDeleteOneClick( wxCommandEvent& event );
|
||||||
|
|
||||||
/// wxEVT_LEFT_DCLICK event handler for ID_CLEARANCE_LIST
|
/// wxEVT_LEFT_DCLICK event handler for ID_CLEARANCE_LIST
|
||||||
void OnLeftDClickClearance( wxMouseEvent& event );
|
void OnLeftDClickClearance( wxMouseEvent& event );
|
||||||
|
|
||||||
|
@ -158,9 +159,7 @@ public:
|
||||||
/// Should we show tooltips?
|
/// Should we show tooltips?
|
||||||
static bool ShowToolTips();
|
static bool ShowToolTips();
|
||||||
|
|
||||||
void CmdDrc();
|
void DelDRCMarkers();
|
||||||
void DelDRCMarkers(wxCommandEvent & event);
|
|
||||||
void ListUnconnectedPads(wxCommandEvent & event);
|
|
||||||
|
|
||||||
////@begin DrcDialog member variables
|
////@begin DrcDialog member variables
|
||||||
wxBoxSizer* m_MainSizer;
|
wxBoxSizer* m_MainSizer;
|
||||||
|
@ -175,6 +174,7 @@ public:
|
||||||
wxCheckBox* m_UnconnectedTestCtrl;
|
wxCheckBox* m_UnconnectedTestCtrl;
|
||||||
wxButton* m_DeleteAllButton;
|
wxButton* m_DeleteAllButton;
|
||||||
wxButton* m_DeleteCurrentMarkerButton;
|
wxButton* m_DeleteCurrentMarkerButton;
|
||||||
|
wxNotebook* m_Notebook;
|
||||||
DRCLISTBOX* m_ClearanceListBox;
|
DRCLISTBOX* m_ClearanceListBox;
|
||||||
DRCLISTBOX* m_UnconnectedListBox;
|
DRCLISTBOX* m_UnconnectedListBox;
|
||||||
wxStdDialogButtonSizer* StdDialogButtonSizer;
|
wxStdDialogButtonSizer* StdDialogButtonSizer;
|
||||||
|
|
|
@ -219,7 +219,6 @@
|
||||||
<long name="use-xrc">0</long>
|
<long name="use-xrc">0</long>
|
||||||
<long name="working-mode">0</long>
|
<long name="working-mode">0</long>
|
||||||
<string name="event-handler-0">"wxEVT_INIT_DIALOG|OnInitDialog|NONE||DrcDialog"</string>
|
<string name="event-handler-0">"wxEVT_INIT_DIALOG|OnInitDialog|NONE||DrcDialog"</string>
|
||||||
<string name="event-handler-1">"wxEVT_DESTROY|OnDestroy|NONE||DrcDialog"</string>
|
|
||||||
<string name="proxy-Id name">"ID_DIALOG"</string>
|
<string name="proxy-Id name">"ID_DIALOG"</string>
|
||||||
<long name="proxy-Id value">10000</long>
|
<long name="proxy-Id value">10000</long>
|
||||||
<string name="proxy-Class">"DrcDialog"</string>
|
<string name="proxy-Class">"DrcDialog"</string>
|
||||||
|
@ -250,10 +249,10 @@
|
||||||
<bool name="proxy-wxDEFAULT_DIALOG_STYLE">1</bool>
|
<bool name="proxy-wxDEFAULT_DIALOG_STYLE">1</bool>
|
||||||
<bool name="proxy-wxCAPTION">0</bool>
|
<bool name="proxy-wxCAPTION">0</bool>
|
||||||
<bool name="proxy-wxRESIZE_BORDER">1</bool>
|
<bool name="proxy-wxRESIZE_BORDER">1</bool>
|
||||||
<bool name="proxy-wxSYSTEM_MENU">0</bool>
|
<bool name="proxy-wxSYSTEM_MENU">1</bool>
|
||||||
<bool name="proxy-wxSTAY_ON_TOP">0</bool>
|
<bool name="proxy-wxSTAY_ON_TOP">0</bool>
|
||||||
<bool name="proxy-wxDIALOG_NO_PARENT">0</bool>
|
<bool name="proxy-wxDIALOG_NO_PARENT">0</bool>
|
||||||
<bool name="proxy-wxCLOSE_BOX">0</bool>
|
<bool name="proxy-wxCLOSE_BOX">1</bool>
|
||||||
<bool name="proxy-wxMAXIMIZE_BOX">1</bool>
|
<bool name="proxy-wxMAXIMIZE_BOX">1</bool>
|
||||||
<bool name="proxy-wxMINIMIZE_BOX">1</bool>
|
<bool name="proxy-wxMINIMIZE_BOX">1</bool>
|
||||||
<bool name="proxy-wxDIALOG_MODAL">0</bool>
|
<bool name="proxy-wxDIALOG_MODAL">0</bool>
|
||||||
|
@ -1273,6 +1272,7 @@
|
||||||
<long name="locked">0</long>
|
<long name="locked">0</long>
|
||||||
<string name="created">"25/11/2007"</string>
|
<string name="created">"25/11/2007"</string>
|
||||||
<string name="proxy-type">"wbButtonProxy"</string>
|
<string name="proxy-type">"wbButtonProxy"</string>
|
||||||
|
<string name="event-handler-0">"wxEVT_COMMAND_BUTTON_CLICKED|OnDeleteOneClick|NONE||DrcDialog"</string>
|
||||||
<string name="proxy-Id name">"ID_DELETE_ONE"</string>
|
<string name="proxy-Id name">"ID_DELETE_ONE"</string>
|
||||||
<long name="proxy-Id value">10007</long>
|
<long name="proxy-Id value">10007</long>
|
||||||
<string name="proxy-Name">""</string>
|
<string name="proxy-Name">""</string>
|
||||||
|
@ -1420,7 +1420,7 @@
|
||||||
<bool name="proxy-Separate files">0</bool>
|
<bool name="proxy-Separate files">0</bool>
|
||||||
<string name="proxy-Implementation filename">""</string>
|
<string name="proxy-Implementation filename">""</string>
|
||||||
<string name="proxy-Header filename">""</string>
|
<string name="proxy-Header filename">""</string>
|
||||||
<string name="proxy-Member variable name">""</string>
|
<string name="proxy-Member variable name">"m_Notebook"</string>
|
||||||
<bool name="proxy-Notebook sizer">1</bool>
|
<bool name="proxy-Notebook sizer">1</bool>
|
||||||
<string name="proxy-Help text">""</string>
|
<string name="proxy-Help text">""</string>
|
||||||
<string name="proxy-Tooltip text">""</string>
|
<string name="proxy-Tooltip text">""</string>
|
||||||
|
|
114
pcbnew/drc.cpp
114
pcbnew/drc.cpp
|
@ -60,100 +60,30 @@ void WinEDA_PcbFrame::Install_Test_DRC_Frame( wxDC* DC )
|
||||||
|
|
||||||
void DRC::ShowDialog()
|
void DRC::ShowDialog()
|
||||||
{
|
{
|
||||||
updatePointers();
|
|
||||||
bool isNew = false;
|
|
||||||
|
|
||||||
if( !m_ui )
|
if( !m_ui )
|
||||||
{
|
{
|
||||||
m_ui = new DrcDialog( this, m_mainWindow );
|
m_ui = new DrcDialog( this, m_mainWindow );
|
||||||
isNew = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updatePointers();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// @todo enter retentitive member data into the DrcDialog here
|
// @todo enter retentitive member data into the DrcDialog here
|
||||||
|
|
||||||
if( isNew )
|
m_ui->Show(true);
|
||||||
m_ui->Show(true);
|
|
||||||
else
|
|
||||||
m_ui->Raise();
|
|
||||||
|
|
||||||
// @todo capture the UI entered data into this DRC object. BUT in the OK handler
|
// @todo capture the UI entered data into this DRC object. BUT in the OK handler
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************/
|
void DRC::DestroyDialog()
|
||||||
void DrcDialog::DelDRCMarkers( wxCommandEvent& event )
|
|
||||||
/*********************************************************/
|
|
||||||
{
|
{
|
||||||
m_Parent->Erase_Marqueurs();
|
if( m_ui )
|
||||||
m_Parent->ReDrawPanel();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************/
|
|
||||||
void DrcDialog::CmdDrc()
|
|
||||||
/****************************************************/
|
|
||||||
{
|
|
||||||
wxString reportName;
|
|
||||||
|
|
||||||
if( m_CreateRptCtrl->IsChecked() ) // Create a file rpt
|
|
||||||
{
|
{
|
||||||
reportName = m_RptFilenameCtrl->GetValue();
|
m_ui->Destroy();
|
||||||
|
m_ui = 0;
|
||||||
if( reportName.IsEmpty() )
|
|
||||||
{
|
|
||||||
wxCommandEvent junk;
|
|
||||||
OnButtonBrowseRptFileClick( junk );
|
|
||||||
}
|
|
||||||
|
|
||||||
reportName = m_RptFilenameCtrl->GetValue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_DesignSettings.m_TrackClearence =
|
|
||||||
ReturnValueFromTextCtrl( *m_SetClearance, m_Parent->m_InternalUnits );
|
|
||||||
|
|
||||||
m_tester->SetSettings( m_Pad2PadTestCtrl->IsChecked(),
|
|
||||||
m_UnconnectedTestCtrl->IsChecked(),
|
|
||||||
m_ZonesTestCtrl->IsChecked(),
|
|
||||||
reportName, m_CreateRptCtrl->IsChecked() );
|
|
||||||
|
|
||||||
|
|
||||||
m_Parent->Erase_Marqueurs();
|
|
||||||
m_Parent->ReDrawPanel();
|
|
||||||
|
|
||||||
SetCursor( wxCursor( wxCURSOR_WATCH ) );
|
|
||||||
|
|
||||||
// run all the tests, with no UI at this time.
|
|
||||||
m_tester->RunTests();
|
|
||||||
|
|
||||||
// Generate the report
|
|
||||||
if( !reportName.IsEmpty() )
|
|
||||||
{
|
|
||||||
FILE* fp = wxFopen( reportName, wxT( "w" ) );
|
|
||||||
|
|
||||||
m_tester->WriteReport( fp );
|
|
||||||
|
|
||||||
fclose(fp);
|
|
||||||
|
|
||||||
// @todo put up message box saying we created the report
|
|
||||||
//msg.Printf( _( "Report file <%s> created\n" ), s_RptFilename.GetData() );
|
|
||||||
}
|
|
||||||
|
|
||||||
SetCursor( wxCursor( wxCURSOR_WATCH ) );
|
|
||||||
|
|
||||||
// @todo set the list counts in the DRCLISTITEMS here.
|
|
||||||
|
|
||||||
|
|
||||||
// printf("done with tests\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************/
|
|
||||||
void DrcDialog::ListUnconnectedPads( wxCommandEvent& event )
|
|
||||||
/***************************************************************/
|
|
||||||
{
|
|
||||||
m_tester->testUnconnected();
|
|
||||||
|
|
||||||
// @todo do report here
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -256,9 +186,35 @@ void DRC::RunTests()
|
||||||
// find and gather unconnected pads.
|
// find and gather unconnected pads.
|
||||||
if( m_doUnconnectedTest )
|
if( m_doUnconnectedTest )
|
||||||
testUnconnected();
|
testUnconnected();
|
||||||
|
|
||||||
|
// update the listboxes
|
||||||
|
updatePointers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************/
|
||||||
|
void DRC::ListUnconnectedPads()
|
||||||
|
/***************************************************************/
|
||||||
|
{
|
||||||
|
// erase the MARKERs here.
|
||||||
|
m_pcb->DeleteMARKERs();
|
||||||
|
|
||||||
|
testUnconnected();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DRC::updatePointers()
|
||||||
|
{
|
||||||
|
// update my pointers, m_mainWindow is the only unchangable one
|
||||||
|
m_drawPanel = m_mainWindow->DrawPanel;
|
||||||
|
m_pcb = m_mainWindow->m_Pcb;
|
||||||
|
|
||||||
|
m_ui->m_ClearanceListBox->SetList( new DRC_LIST_MARKERS( m_pcb ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void DRC::testTracks()
|
void DRC::testTracks()
|
||||||
{
|
{
|
||||||
for( TRACK* segm = m_pcb->m_Track; segm && segm->Next(); segm=segm->Next() )
|
for( TRACK* segm = m_pcb->m_Track; segm && segm->Next(); segm=segm->Next() )
|
||||||
|
|
|
@ -204,7 +204,55 @@ class WinEDA_DrawPanel;
|
||||||
class MARKER;
|
class MARKER;
|
||||||
class DrcDialog;
|
class DrcDialog;
|
||||||
|
|
||||||
typedef std::vector<DRC_ITEM*> DRC_LIST;
|
|
||||||
|
/**
|
||||||
|
* Class DRC_ITEM_LIST
|
||||||
|
* provides an abstract interface of a DRC_ITEM* list manager. The details
|
||||||
|
* of the actual list architecture are hidden from the caller. Any class
|
||||||
|
* that implements this interface can then be used by a DRCLISTBOX class without
|
||||||
|
* it knowing the actual architecture of the list.
|
||||||
|
*/
|
||||||
|
class DRC_ITEM_LIST
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function DeleteAllItems
|
||||||
|
* removes and deletes all the items in the list.
|
||||||
|
*/
|
||||||
|
virtual void DeleteAllItems() = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetItem
|
||||||
|
* retrieves a DRC_ITEM by pointer. The actual item remains owned by the
|
||||||
|
* list container.
|
||||||
|
* @param aIndex The 0 based index into the list of the desired item.
|
||||||
|
* @return const DRC_ITEM* - the desired item or NULL if aIndex is out of range.
|
||||||
|
*/
|
||||||
|
virtual const DRC_ITEM* GetItem( int aIndex ) = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function DeleteAllItems
|
||||||
|
* removes and deletes desired item from the list.
|
||||||
|
* @param aIndex The 0 based index into the list of the desired item which
|
||||||
|
* is to be deleted.
|
||||||
|
*/
|
||||||
|
virtual void DeleteItem( int aIndex ) = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetCount
|
||||||
|
* returns the number of items in the list.
|
||||||
|
*/
|
||||||
|
virtual int GetCount() = 0;
|
||||||
|
|
||||||
|
virtual ~DRC_ITEM_LIST() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -261,12 +309,7 @@ private:
|
||||||
* is a private helper function used to update needed pointers from the
|
* is a private helper function used to update needed pointers from the
|
||||||
* one pointer which is known not to change, m_mainWindow.
|
* one pointer which is known not to change, m_mainWindow.
|
||||||
*/
|
*/
|
||||||
void updatePointers()
|
void updatePointers();
|
||||||
{
|
|
||||||
// update my pointers, m_mainWindow is the only unchangable one
|
|
||||||
m_drawPanel = m_mainWindow->DrawPanel;
|
|
||||||
m_pcb = m_mainWindow->m_Pcb;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -415,10 +458,19 @@ public:
|
||||||
/**
|
/**
|
||||||
* Function ShowDialog
|
* Function ShowDialog
|
||||||
* opens a dialog and prompts the user, then if a test run button is
|
* opens a dialog and prompts the user, then if a test run button is
|
||||||
* clicked, runs the test(s) and creates the MARKERS.
|
* clicked, runs the test(s) and creates the MARKERS. The dialog is only
|
||||||
|
* created if it is not already in existence.
|
||||||
*/
|
*/
|
||||||
void ShowDialog();
|
void ShowDialog();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function DestroyDialog
|
||||||
|
* deletes this ui dialog box and zeros out its pointer to remember
|
||||||
|
* the state of the dialog's existence.
|
||||||
|
*/
|
||||||
|
void DestroyDialog();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetSettings
|
* Function SetSettings
|
||||||
|
@ -447,6 +499,14 @@ public:
|
||||||
*/
|
*/
|
||||||
void RunTests();
|
void RunTests();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function ListUnconnectedPad
|
||||||
|
* gathers a list of all the unconnected pads and shows them in the
|
||||||
|
* dialog, and optionally prints a report of such.
|
||||||
|
*/
|
||||||
|
void ListUnconnectedPads();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function WriteReport
|
* Function WriteReport
|
||||||
|
|
|
@ -350,7 +350,6 @@ void WinEDA_PcbFrame::Erase_Marqueurs()
|
||||||
/*******************************************/
|
/*******************************************/
|
||||||
{
|
{
|
||||||
m_Pcb->DeleteMARKERs();
|
m_Pcb->DeleteMARKERs();
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify(); // @todo : why mark this if MARKERs are not saved in the *.brd file?
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue