|
|
|
@ -1,9 +1,9 @@ |
|
|
|
/******************************************************/ |
|
|
|
/* Fonctions diverses (swap..) relatives au pistes */ |
|
|
|
/* et fonctions de test */ |
|
|
|
/******************************************************/ |
|
|
|
/******************************************************/ |
|
|
|
/* Fonctions diverses (swap..) relatives au pistes */ |
|
|
|
/* et fonctions de test */ |
|
|
|
/******************************************************/ |
|
|
|
|
|
|
|
/* Fichier PCBPISTE.CPP */ |
|
|
|
/* Fichier PCBPISTE.CPP */ |
|
|
|
|
|
|
|
#include "fctsys.h"
|
|
|
|
#include "gr_basic.h"
|
|
|
|
@ -17,11 +17,11 @@ |
|
|
|
static int New_Layer[32]; |
|
|
|
|
|
|
|
enum swap_layer_id { |
|
|
|
ID_SWAP_LAYER_EXECUTE = 1800, |
|
|
|
ID_SWAP_LAYER_CANCEL, |
|
|
|
ID_SWAP_LAYER_BUTTON_SELECT, |
|
|
|
ID_SWAP_LAYER_DESELECT, |
|
|
|
ID_SWAP_LAYER_SELECT |
|
|
|
ID_SWAP_LAYER_EXECUTE = 1800, |
|
|
|
ID_SWAP_LAYER_CANCEL, |
|
|
|
ID_SWAP_LAYER_BUTTON_SELECT, |
|
|
|
ID_SWAP_LAYER_DESELECT, |
|
|
|
ID_SWAP_LAYER_SELECT |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
@ -29,256 +29,277 @@ enum swap_layer_id { |
|
|
|
/* classe pour la frame de selection de layers */ |
|
|
|
/***********************************************/ |
|
|
|
|
|
|
|
class WinEDA_SwapLayerFrame: public wxDialog |
|
|
|
class WinEDA_SwapLayerFrame : public wxDialog |
|
|
|
{ |
|
|
|
private: |
|
|
|
WinEDA_BasePcbFrame *m_Parent; |
|
|
|
wxRadioBox * m_LayerList; |
|
|
|
WinEDA_BasePcbFrame* m_Parent; |
|
|
|
wxRadioBox* m_LayerList; |
|
|
|
|
|
|
|
public: |
|
|
|
|
|
|
|
// Constructor and destructor
|
|
|
|
WinEDA_SwapLayerFrame(WinEDA_BasePcbFrame *parent); |
|
|
|
~WinEDA_SwapLayerFrame() {}; |
|
|
|
// Constructor and destructor
|
|
|
|
WinEDA_SwapLayerFrame( WinEDA_BasePcbFrame * parent ); |
|
|
|
~WinEDA_SwapLayerFrame() { }; |
|
|
|
|
|
|
|
private: |
|
|
|
void Sel_Layer(wxCommandEvent& event); |
|
|
|
void Cancel(wxCommandEvent& event); |
|
|
|
void Execute(wxCommandEvent& event); |
|
|
|
DECLARE_EVENT_TABLE() |
|
|
|
void Sel_Layer( wxCommandEvent& event ); |
|
|
|
void Cancel( wxCommandEvent& event ); |
|
|
|
void Execute( wxCommandEvent& event ); |
|
|
|
|
|
|
|
DECLARE_EVENT_TABLE() |
|
|
|
}; |
|
|
|
/* Table des evenements pour WinEDA_SwapLayerFrame */ |
|
|
|
BEGIN_EVENT_TABLE(WinEDA_SwapLayerFrame, wxDialog) |
|
|
|
EVT_BUTTON(ID_SWAP_LAYER_EXECUTE, WinEDA_SwapLayerFrame::Execute) |
|
|
|
EVT_BUTTON(ID_SWAP_LAYER_CANCEL, WinEDA_SwapLayerFrame::Cancel) |
|
|
|
EVT_BUTTON(ID_SWAP_LAYER_DESELECT, WinEDA_SwapLayerFrame::Sel_Layer) |
|
|
|
EVT_BUTTON(ID_SWAP_LAYER_BUTTON_SELECT, WinEDA_SwapLayerFrame::Sel_Layer) |
|
|
|
EVT_RADIOBOX(ID_SWAP_LAYER_SELECT, WinEDA_SwapLayerFrame::Sel_Layer) |
|
|
|
BEGIN_EVENT_TABLE( WinEDA_SwapLayerFrame, wxDialog ) |
|
|
|
EVT_BUTTON( ID_SWAP_LAYER_EXECUTE, WinEDA_SwapLayerFrame::Execute ) |
|
|
|
EVT_BUTTON( ID_SWAP_LAYER_CANCEL, WinEDA_SwapLayerFrame::Cancel ) |
|
|
|
EVT_BUTTON( ID_SWAP_LAYER_DESELECT, WinEDA_SwapLayerFrame::Sel_Layer ) |
|
|
|
EVT_BUTTON( ID_SWAP_LAYER_BUTTON_SELECT, WinEDA_SwapLayerFrame::Sel_Layer ) |
|
|
|
EVT_RADIOBOX( ID_SWAP_LAYER_SELECT, WinEDA_SwapLayerFrame::Sel_Layer ) |
|
|
|
END_EVENT_TABLE() |
|
|
|
|
|
|
|
|
|
|
|
WinEDA_SwapLayerFrame::WinEDA_SwapLayerFrame(WinEDA_BasePcbFrame *parent): |
|
|
|
wxDialog(parent, -1, _("Swap Layers:"),wxPoint(-1,-1), |
|
|
|
wxSize(470, 450), DIALOG_STYLE ) |
|
|
|
WinEDA_SwapLayerFrame::WinEDA_SwapLayerFrame( WinEDA_BasePcbFrame* parent ) : |
|
|
|
wxDialog( parent, -1, _( "Swap Layers:" ), wxPoint( -1, -1 ), |
|
|
|
wxSize( 470, 450 ), DIALOG_STYLE ) |
|
|
|
{ |
|
|
|
#define START_Y 15
|
|
|
|
wxButton * Button; |
|
|
|
int ii; |
|
|
|
wxPoint pos; |
|
|
|
wxString g_Layer_Name_Pair[32]; |
|
|
|
wxSize winsize; |
|
|
|
|
|
|
|
m_Parent = parent; |
|
|
|
SetFont(*g_DialogFont); |
|
|
|
|
|
|
|
for ( ii = 0; ii < NB_LAYERS; ii++ ) |
|
|
|
{ |
|
|
|
g_Layer_Name_Pair[ii] = ReturnPcbLayerName(ii) + wxT(" -> ") + _("No Change"); |
|
|
|
} |
|
|
|
pos.x = 5; pos.y = START_Y; |
|
|
|
m_LayerList = new wxRadioBox(this, ID_SWAP_LAYER_SELECT, _("Layers"), |
|
|
|
pos, wxSize(-1,-1), 29, g_Layer_Name_Pair, 16, wxRA_SPECIFY_ROWS); |
|
|
|
|
|
|
|
winsize.y = m_LayerList->GetRect().GetBottom(); |
|
|
|
|
|
|
|
pos.x = m_LayerList->GetRect().GetRight() + 12; |
|
|
|
Button = new wxButton(this,ID_SWAP_LAYER_CANCEL, |
|
|
|
_("Cancel"), pos); |
|
|
|
Button->SetForegroundColour(*wxRED); |
|
|
|
winsize.x = MAX(winsize.x,Button->GetRect().GetRight()); |
|
|
|
|
|
|
|
pos.y += Button->GetSize().y + 5; |
|
|
|
Button = new wxButton(this,ID_SWAP_LAYER_EXECUTE, |
|
|
|
_("OK"), pos); |
|
|
|
Button->SetForegroundColour(*wxBLUE); |
|
|
|
winsize.x = MAX(winsize.x,Button->GetRect().GetRight()); |
|
|
|
|
|
|
|
pos.y += Button->GetSize().y + 15; |
|
|
|
Button = new wxButton(this,ID_SWAP_LAYER_DESELECT, |
|
|
|
_("Deselect"), pos); |
|
|
|
Button->SetForegroundColour(wxColour(0,100,0)); |
|
|
|
winsize.x = MAX(winsize.x,Button->GetRect().GetRight()); |
|
|
|
|
|
|
|
pos.y += Button->GetSize().y + 5; |
|
|
|
Button = new wxButton(this,ID_SWAP_LAYER_BUTTON_SELECT, |
|
|
|
_("Select"), pos); |
|
|
|
Button->SetForegroundColour(wxColour(0,100,100)); |
|
|
|
winsize.x = MAX(winsize.x,Button->GetRect().GetRight()); |
|
|
|
|
|
|
|
winsize.x += 10; winsize.y += 10; |
|
|
|
SetClientSize(winsize); |
|
|
|
wxButton* Button; |
|
|
|
int ii; |
|
|
|
wxPoint pos; |
|
|
|
wxString g_Layer_Name_Pair[32]; |
|
|
|
wxSize winsize; |
|
|
|
|
|
|
|
m_Parent = parent; |
|
|
|
SetFont( *g_DialogFont ); |
|
|
|
|
|
|
|
for( ii = 0; ii < NB_LAYERS; ii++ ) |
|
|
|
{ |
|
|
|
g_Layer_Name_Pair[ii] = ReturnPcbLayerName( ii ) + wxT( " -> " ) + _( "No Change" ); |
|
|
|
} |
|
|
|
|
|
|
|
pos.x = 5; pos.y = START_Y; |
|
|
|
m_LayerList = new wxRadioBox( this, ID_SWAP_LAYER_SELECT, _( "Layers" ), |
|
|
|
pos, wxSize( -1, |
|
|
|
-1 ), 29, g_Layer_Name_Pair, 16, wxRA_SPECIFY_ROWS ); |
|
|
|
|
|
|
|
winsize.y = m_LayerList->GetRect().GetBottom(); |
|
|
|
|
|
|
|
pos.x = m_LayerList->GetRect().GetRight() + 12; |
|
|
|
Button = new wxButton( this, ID_SWAP_LAYER_CANCEL, |
|
|
|
_( "Cancel" ), pos ); |
|
|
|
|
|
|
|
Button->SetForegroundColour( *wxRED ); |
|
|
|
winsize.x = MAX( winsize.x, Button->GetRect().GetRight() ); |
|
|
|
|
|
|
|
pos.y += Button->GetSize().y + 5; |
|
|
|
Button = new wxButton( this, ID_SWAP_LAYER_EXECUTE, |
|
|
|
_( "OK" ), pos ); |
|
|
|
|
|
|
|
Button->SetForegroundColour( *wxBLUE ); |
|
|
|
winsize.x = MAX( winsize.x, Button->GetRect().GetRight() ); |
|
|
|
|
|
|
|
pos.y += Button->GetSize().y + 15; |
|
|
|
Button = new wxButton( this, ID_SWAP_LAYER_DESELECT, |
|
|
|
_( "Deselect" ), pos ); |
|
|
|
|
|
|
|
Button->SetForegroundColour( wxColour( 0, 100, 0 ) ); |
|
|
|
winsize.x = MAX( winsize.x, Button->GetRect().GetRight() ); |
|
|
|
|
|
|
|
pos.y += Button->GetSize().y + 5; |
|
|
|
Button = new wxButton( this, ID_SWAP_LAYER_BUTTON_SELECT, |
|
|
|
_( "Select" ), pos ); |
|
|
|
|
|
|
|
Button->SetForegroundColour( wxColour( 0, 100, 100 ) ); |
|
|
|
winsize.x = MAX( winsize.x, Button->GetRect().GetRight() ); |
|
|
|
|
|
|
|
winsize.x += 10; winsize.y += 10; |
|
|
|
SetClientSize( winsize ); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/***************************************************************/ |
|
|
|
void WinEDA_SwapLayerFrame::Sel_Layer(wxCommandEvent& event) |
|
|
|
void WinEDA_SwapLayerFrame::Sel_Layer( wxCommandEvent& event ) |
|
|
|
/***************************************************************/ |
|
|
|
{ |
|
|
|
int ii, jj; |
|
|
|
|
|
|
|
ii = m_LayerList->GetSelection(); |
|
|
|
|
|
|
|
switch ( event.GetId()) |
|
|
|
{ |
|
|
|
case ID_SWAP_LAYER_DESELECT: |
|
|
|
if ( New_Layer[ii] != -1 ) |
|
|
|
{ |
|
|
|
New_Layer[ii] = -1; |
|
|
|
m_LayerList->SetString(ii, ReturnPcbLayerName(ii) + |
|
|
|
+ wxT(" -> ") + _("No Change") ); |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case ID_SWAP_LAYER_BUTTON_SELECT: |
|
|
|
case ID_SWAP_LAYER_SELECT: |
|
|
|
jj = m_Parent->SelectLayer(ii, -1, -1); |
|
|
|
if ( (jj < 0) || (jj >= 29) ) return; |
|
|
|
|
|
|
|
if ( ii != jj ) |
|
|
|
{ |
|
|
|
New_Layer[ii] = jj; |
|
|
|
m_LayerList->SetString(ii, |
|
|
|
ReturnPcbLayerName(ii) + wxT(" -> ") + ReturnPcbLayerName(jj) ); |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
int ii, jj; |
|
|
|
|
|
|
|
ii = m_LayerList->GetSelection(); |
|
|
|
|
|
|
|
switch( event.GetId() ) |
|
|
|
{ |
|
|
|
case ID_SWAP_LAYER_DESELECT: |
|
|
|
if( New_Layer[ii] != -1 ) |
|
|
|
{ |
|
|
|
New_Layer[ii] = -1; |
|
|
|
m_LayerList->SetString( ii, ReturnPcbLayerName( ii ) + |
|
|
|
+ wxT( " -> " ) + _( "No Change" ) ); |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case ID_SWAP_LAYER_BUTTON_SELECT: |
|
|
|
case ID_SWAP_LAYER_SELECT: |
|
|
|
jj = m_Parent->SelectLayer( ii, -1, -1 ); |
|
|
|
if( (jj < 0) || (jj >= 29) ) |
|
|
|
return; |
|
|
|
|
|
|
|
if( ii != jj ) |
|
|
|
{ |
|
|
|
New_Layer[ii] = jj; |
|
|
|
m_LayerList->SetString( ii, |
|
|
|
ReturnPcbLayerName( ii ) + wxT( " -> " ) + |
|
|
|
ReturnPcbLayerName( jj ) ); |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/*********************************************************/ |
|
|
|
void WinEDA_SwapLayerFrame::Cancel(wxCommandEvent& event) |
|
|
|
void WinEDA_SwapLayerFrame::Cancel( wxCommandEvent& event ) |
|
|
|
/*********************************************************/ |
|
|
|
{ |
|
|
|
EndModal(-1); |
|
|
|
EndModal( -1 ); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/*********************************************************/ |
|
|
|
void WinEDA_SwapLayerFrame::Execute(wxCommandEvent& event) |
|
|
|
void WinEDA_SwapLayerFrame::Execute( wxCommandEvent& event ) |
|
|
|
/*********************************************************/ |
|
|
|
{ |
|
|
|
EndModal(1); |
|
|
|
EndModal( 1 ); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/********************************************************/ |
|
|
|
void WinEDA_PcbFrame::Swap_Layers(wxCommandEvent & event) |
|
|
|
void WinEDA_PcbFrame::Swap_Layers( wxCommandEvent& event ) |
|
|
|
/********************************************************/ |
|
|
|
/* Swap layers */ |
|
|
|
{ |
|
|
|
int ii, jj ; |
|
|
|
TRACK * pt_segm ; |
|
|
|
DRAWSEGMENT * pt_drawsegm; |
|
|
|
EDA_BaseStruct * PtStruct; |
|
|
|
|
|
|
|
|
|
|
|
/* Init default values */ |
|
|
|
for ( ii = 0 ; ii < 32 ; ii++ ) New_Layer[ii] = -1 ; |
|
|
|
|
|
|
|
WinEDA_SwapLayerFrame * frame = new WinEDA_SwapLayerFrame(this); |
|
|
|
ii = frame->ShowModal(); frame->Destroy(); |
|
|
|
|
|
|
|
if ( ii != 1 ) return; |
|
|
|
|
|
|
|
/* Modifications des pistes */ |
|
|
|
pt_segm = (TRACK*) m_Pcb->m_Track; |
|
|
|
for ( ; pt_segm != NULL;pt_segm = (TRACK*)pt_segm->Pnext ) |
|
|
|
{ |
|
|
|
m_CurrentScreen->SetModify(); |
|
|
|
if( pt_segm->Type() == TYPEVIA ) |
|
|
|
{ |
|
|
|
SEGVIA * Via = (SEGVIA *) pt_segm; |
|
|
|
if ( Via->Shape() == VIA_NORMALE ) continue; |
|
|
|
int top_layer, bottom_layer; |
|
|
|
Via->ReturnLayerPair(&top_layer, &bottom_layer); |
|
|
|
if( New_Layer[bottom_layer] >= 0) |
|
|
|
bottom_layer = New_Layer[bottom_layer]; |
|
|
|
if( New_Layer[top_layer] >= 0) |
|
|
|
top_layer = New_Layer[top_layer]; |
|
|
|
Via->SetLayerPair(top_layer, bottom_layer); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
jj = pt_segm->m_Layer; |
|
|
|
if( New_Layer[jj] >= 0) pt_segm->m_Layer = New_Layer[jj]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/* Modifications des zones */ |
|
|
|
pt_segm = (TRACK*) m_Pcb->m_Zone; |
|
|
|
for ( ; pt_segm != NULL;pt_segm = (TRACK*)pt_segm->Pnext ) |
|
|
|
{ |
|
|
|
m_CurrentScreen->SetModify(); |
|
|
|
jj = pt_segm->m_Layer; |
|
|
|
if( New_Layer[jj] >= 0) pt_segm->m_Layer = New_Layer[jj]; |
|
|
|
} |
|
|
|
|
|
|
|
/* Modifications des autres segments */ |
|
|
|
PtStruct = m_Pcb->m_Drawings; |
|
|
|
for ( ; PtStruct != NULL ; PtStruct = PtStruct->Pnext ) |
|
|
|
{ |
|
|
|
if( PtStruct->Type() == TYPEDRAWSEGMENT ) |
|
|
|
{ |
|
|
|
m_CurrentScreen->SetModify(); |
|
|
|
pt_drawsegm = (DRAWSEGMENT *) PtStruct; |
|
|
|
jj = pt_drawsegm->m_Layer; |
|
|
|
if( New_Layer[jj] >= 0) pt_drawsegm->m_Layer = New_Layer[jj]; |
|
|
|
} |
|
|
|
} |
|
|
|
DrawPanel->Refresh(TRUE); |
|
|
|
int ii, jj; |
|
|
|
TRACK* pt_segm; |
|
|
|
DRAWSEGMENT* pt_drawsegm; |
|
|
|
EDA_BaseStruct* PtStruct; |
|
|
|
|
|
|
|
|
|
|
|
/* Init default values */ |
|
|
|
for( ii = 0; ii < 32; ii++ ) |
|
|
|
New_Layer[ii] = -1; |
|
|
|
|
|
|
|
WinEDA_SwapLayerFrame* frame = new WinEDA_SwapLayerFrame( this ); |
|
|
|
|
|
|
|
ii = frame->ShowModal(); frame->Destroy(); |
|
|
|
|
|
|
|
if( ii != 1 ) |
|
|
|
return; |
|
|
|
|
|
|
|
/* Modifications des pistes */ |
|
|
|
pt_segm = (TRACK*) m_Pcb->m_Track; |
|
|
|
for( ; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext ) |
|
|
|
{ |
|
|
|
m_CurrentScreen->SetModify(); |
|
|
|
if( pt_segm->Type() == TYPEVIA ) |
|
|
|
{ |
|
|
|
SEGVIA* Via = (SEGVIA*) pt_segm; |
|
|
|
if( Via->Shape() == VIA_NORMALE ) |
|
|
|
continue; |
|
|
|
int top_layer, bottom_layer; |
|
|
|
Via->ReturnLayerPair( &top_layer, &bottom_layer ); |
|
|
|
if( New_Layer[bottom_layer] >= 0 ) |
|
|
|
bottom_layer = New_Layer[bottom_layer]; |
|
|
|
if( New_Layer[top_layer] >= 0 ) |
|
|
|
top_layer = New_Layer[top_layer]; |
|
|
|
Via->SetLayerPair( top_layer, bottom_layer ); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
jj = pt_segm->m_Layer; |
|
|
|
if( New_Layer[jj] >= 0 ) |
|
|
|
pt_segm->m_Layer = New_Layer[jj]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/* Modifications des zones */ |
|
|
|
pt_segm = (TRACK*) m_Pcb->m_Zone; |
|
|
|
for( ; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext ) |
|
|
|
{ |
|
|
|
m_CurrentScreen->SetModify(); |
|
|
|
jj = pt_segm->m_Layer; |
|
|
|
if( New_Layer[jj] >= 0 ) |
|
|
|
pt_segm->m_Layer = New_Layer[jj]; |
|
|
|
} |
|
|
|
|
|
|
|
/* Modifications des autres segments */ |
|
|
|
PtStruct = m_Pcb->m_Drawings; |
|
|
|
for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext ) |
|
|
|
{ |
|
|
|
if( PtStruct->Type() == TYPEDRAWSEGMENT ) |
|
|
|
{ |
|
|
|
m_CurrentScreen->SetModify(); |
|
|
|
pt_drawsegm = (DRAWSEGMENT*) PtStruct; |
|
|
|
jj = pt_drawsegm->m_Layer; |
|
|
|
if( New_Layer[jj] >= 0 ) |
|
|
|
pt_drawsegm->m_Layer = New_Layer[jj]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
DrawPanel->Refresh( TRUE ); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/*********************************************************/ |
|
|
|
void WinEDA_PcbFrame::Liste_Equipot(wxCommandEvent & event) |
|
|
|
void WinEDA_PcbFrame::Liste_Equipot( wxCommandEvent& event ) |
|
|
|
/*********************************************************/ |
|
|
|
{ |
|
|
|
EQUIPOT * Equipot ; |
|
|
|
wxString msg; |
|
|
|
WinEDA_TextFrame * List; |
|
|
|
int ii, jj; |
|
|
|
|
|
|
|
msg = wxT("*"); |
|
|
|
Get_Message(_("Filter for net names:"),msg, this); |
|
|
|
if ( msg.IsEmpty() ) return; |
|
|
|
|
|
|
|
List = new WinEDA_TextFrame(this, _("List Nets") ); |
|
|
|
|
|
|
|
Equipot = (EQUIPOT*) m_Pcb->m_Equipots; |
|
|
|
for ( ; Equipot != NULL; Equipot = (EQUIPOT*)Equipot->Pnext ) |
|
|
|
{ |
|
|
|
wxString Line; |
|
|
|
/* calcul adr relative du nom de la pastille reference de la piste */ |
|
|
|
if( ! WildCompareString(msg, Equipot->m_Netname, FALSE ) ) continue ; |
|
|
|
|
|
|
|
Line.Printf( wxT("net_code = %3.3d [%.16s] "),Equipot->m_NetCode, |
|
|
|
Equipot->m_Netname.GetData()); |
|
|
|
List->Append(Line); |
|
|
|
} |
|
|
|
ii = List->ShowModal(); List->Destroy(); |
|
|
|
if (ii < 0) return; |
|
|
|
|
|
|
|
/* Recherche du numero de net rellement selectionné */ |
|
|
|
Equipot = (EQUIPOT*) m_Pcb->m_Equipots; |
|
|
|
for ( jj = 0; Equipot != NULL; Equipot = (EQUIPOT*)Equipot->Pnext ) |
|
|
|
{ |
|
|
|
/* calcul adr relative du nom de la pastille reference de la piste */ |
|
|
|
if( ! WildCompareString(msg, Equipot->m_Netname, FALSE) ) continue ; |
|
|
|
if ( ii == jj ) |
|
|
|
{ |
|
|
|
ii = Equipot->m_NetCode; |
|
|
|
break; |
|
|
|
} |
|
|
|
jj++; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
wxClientDC dc(DrawPanel); |
|
|
|
DrawPanel->PrepareGraphicContext(&dc); |
|
|
|
|
|
|
|
if(g_HightLigt_Status) Hight_Light(&dc); |
|
|
|
g_HightLigth_NetCode = ii; |
|
|
|
Hight_Light(&dc); |
|
|
|
EQUIPOT* Equipot; |
|
|
|
wxString msg; |
|
|
|
WinEDA_TextFrame* List; |
|
|
|
int ii, jj; |
|
|
|
|
|
|
|
msg = wxT( "*" ); |
|
|
|
Get_Message( _( "Filter for net names:" ), msg, this ); |
|
|
|
if( msg.IsEmpty() ) |
|
|
|
return; |
|
|
|
|
|
|
|
List = new WinEDA_TextFrame( this, _( "List Nets" ) ); |
|
|
|
|
|
|
|
Equipot = (EQUIPOT*) m_Pcb->m_Equipots; |
|
|
|
for( ; Equipot != NULL; Equipot = (EQUIPOT*) Equipot->Pnext ) |
|
|
|
{ |
|
|
|
wxString Line; |
|
|
|
/* calcul adr relative du nom de la pastille reference de la piste */ |
|
|
|
if( !WildCompareString( msg, Equipot->m_Netname, FALSE ) ) |
|
|
|
continue; |
|
|
|
|
|
|
|
Line.Printf( wxT( "net_code = %3.3d [%.16s] " ), Equipot->m_NetCode, |
|
|
|
Equipot->m_Netname.GetData() ); |
|
|
|
List->Append( Line ); |
|
|
|
} |
|
|
|
|
|
|
|
ii = List->ShowModal(); List->Destroy(); |
|
|
|
if( ii < 0 ) |
|
|
|
return; |
|
|
|
|
|
|
|
/* Recherche du numero de net rellement selectionné */ |
|
|
|
Equipot = (EQUIPOT*) m_Pcb->m_Equipots; |
|
|
|
for( jj = 0; Equipot != NULL; Equipot = (EQUIPOT*) Equipot->Pnext ) |
|
|
|
{ |
|
|
|
/* calcul adr relative du nom de la pastille reference de la piste */ |
|
|
|
if( !WildCompareString( msg, Equipot->m_Netname, FALSE ) ) |
|
|
|
continue; |
|
|
|
if( ii == jj ) |
|
|
|
{ |
|
|
|
ii = Equipot->m_NetCode; |
|
|
|
break; |
|
|
|
} |
|
|
|
jj++; |
|
|
|
} |
|
|
|
|
|
|
|
wxClientDC dc( DrawPanel ); |
|
|
|
|
|
|
|
DrawPanel->PrepareGraphicContext( &dc ); |
|
|
|
|
|
|
|
if( g_HightLigt_Status ) |
|
|
|
Hight_Light( &dc ); |
|
|
|
g_HightLigth_NetCode = ii; |
|
|
|
Hight_Light( &dc ); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|