2nd of 3 commits for DrcDialog rework
This commit is contained in:
parent
cea3f06a9d
commit
128521f0fe
|
@ -4,6 +4,21 @@ 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-Nov-30 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||||
|
================================================================================
|
||||||
|
+pcbnew
|
||||||
|
* added virtual GetPosition() to BOARD_ITEM and derivatives.
|
||||||
|
* added classes DRC, REPORT_ISSUE, DRC_ITEM and rearranged drc.cpp entirely
|
||||||
|
to comprize the DRC class. The result has finer granularity of functions
|
||||||
|
and each is fairly well documented in English, see drc_stuff.h.
|
||||||
|
Keeping old stuff commented out at bottom of drc.cpp until some more usage
|
||||||
|
and testing is done.
|
||||||
|
* Made the DRC dialog modeless, so it can sit off to the side while the MARKER
|
||||||
|
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:
|
||||||
|
|
|
@ -456,6 +456,13 @@ public:
|
||||||
BOARD_ITEM* Back() const { return (BOARD_ITEM*) Pback; }
|
BOARD_ITEM* Back() const { return (BOARD_ITEM*) Pback; }
|
||||||
BOARD_ITEM* GetParent() const { return (BOARD_ITEM*) m_Parent; }
|
BOARD_ITEM* GetParent() const { return (BOARD_ITEM*) m_Parent; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPosition
|
||||||
|
* returns the position of this object.
|
||||||
|
* @return wxPoint& - The position of this object, non-const so it
|
||||||
|
* can be changed
|
||||||
|
*/
|
||||||
|
virtual wxPoint& GetPosition() = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function GetLayer
|
* Function GetLayer
|
||||||
|
|
|
@ -199,8 +199,11 @@ enum DisplayViaMode {
|
||||||
class BOARD : public BOARD_ITEM
|
class BOARD : public BOARD_ITEM
|
||||||
{
|
{
|
||||||
friend class WinEDA_PcbFrame;
|
friend class WinEDA_PcbFrame;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<MARKER*> m_markers; ///< MARKERs which we own 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
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
WinEDA_BasePcbFrame* m_PcbFrame; // Window de visualisation
|
WinEDA_BasePcbFrame* m_PcbFrame; // Window de visualisation
|
||||||
|
@ -233,6 +236,14 @@ public:
|
||||||
BOARD( EDA_BaseStruct* StructFather, WinEDA_BasePcbFrame* frame );
|
BOARD( EDA_BaseStruct* StructFather, WinEDA_BasePcbFrame* frame );
|
||||||
~BOARD();
|
~BOARD();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPosition
|
||||||
|
* is here to satisfy BOARD_ITEM's requirements, but this implementation
|
||||||
|
* is a dummy.
|
||||||
|
* @return const wxPoint& of (0,0)
|
||||||
|
*/
|
||||||
|
wxPoint& GetPosition();
|
||||||
|
|
||||||
/* supprime du chainage la structure Struct */
|
/* supprime du chainage la structure Struct */
|
||||||
void UnLink();
|
void UnLink();
|
||||||
|
|
||||||
|
@ -275,7 +286,16 @@ public:
|
||||||
int GetNumSegmTrack();
|
int GetNumSegmTrack();
|
||||||
int GetNumSegmZone();
|
int GetNumSegmZone();
|
||||||
int GetNumNoconnect(); // retourne le nombre de connexions manquantes
|
int GetNumNoconnect(); // retourne le nombre de connexions manquantes
|
||||||
int GetNumRatsnests(); // retourne le nombre de chevelus
|
|
||||||
|
/**
|
||||||
|
* Function GetNumRatsnests
|
||||||
|
* @return int - The number of rats
|
||||||
|
*/
|
||||||
|
int GetNumRatsnests()
|
||||||
|
{
|
||||||
|
return m_NbLinks;
|
||||||
|
}
|
||||||
|
|
||||||
int GetNumNodes(); // retourne le nombre de pads a netcode > 0
|
int GetNumNodes(); // retourne le nombre de pads a netcode > 0
|
||||||
|
|
||||||
// Calcul du rectangle d'encadrement:
|
// Calcul du rectangle d'encadrement:
|
||||||
|
@ -407,7 +427,18 @@ public:
|
||||||
DRAWSEGMENT( BOARD_ITEM* StructFather, KICAD_T idtype = TYPEDRAWSEGMENT );
|
DRAWSEGMENT( BOARD_ITEM* StructFather, KICAD_T idtype = TYPEDRAWSEGMENT );
|
||||||
~DRAWSEGMENT();
|
~DRAWSEGMENT();
|
||||||
|
|
||||||
// Read/write data
|
|
||||||
|
/**
|
||||||
|
* Function GetPosition
|
||||||
|
* returns the position of this object.
|
||||||
|
* Required by pure virtual BOARD_ITEM::GetPosition()
|
||||||
|
* @return const wxPoint& - The position of this object.
|
||||||
|
*/
|
||||||
|
wxPoint& GetPosition()
|
||||||
|
{
|
||||||
|
return m_Start;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Save
|
* Function Save
|
||||||
|
|
|
@ -101,6 +101,7 @@ class Ki_PageDescr;
|
||||||
class Ki_HotkeyInfo;
|
class Ki_HotkeyInfo;
|
||||||
class GENERAL_COLLECTOR;
|
class GENERAL_COLLECTOR;
|
||||||
class GENERAL_COLLECTORS_GUIDE;
|
class GENERAL_COLLECTORS_GUIDE;
|
||||||
|
class DRC;
|
||||||
|
|
||||||
|
|
||||||
enum id_librarytype {
|
enum id_librarytype {
|
||||||
|
@ -574,6 +575,9 @@ private:
|
||||||
bool m_SelViaSizeBox_Changed;
|
bool m_SelViaSizeBox_Changed;
|
||||||
wxMenu* m_FilesMenu;
|
wxMenu* m_FilesMenu;
|
||||||
|
|
||||||
|
DRC* m_drc; ///< the DRC controller, see drc.cpp
|
||||||
|
|
||||||
|
|
||||||
// we'll use lower case function names for private member functions.
|
// we'll use lower case function names for private member functions.
|
||||||
void createPopUpMenuForFootprints( MODULE* aModule, wxMenu* aPopMenu );
|
void createPopUpMenuForFootprints( MODULE* aModule, wxMenu* aPopMenu );
|
||||||
void createPopUpMenuForFpTexts( TEXTE_MODULE* aText, wxMenu* aPopMenu );
|
void createPopUpMenuForFpTexts( TEXTE_MODULE* aText, wxMenu* aPopMenu );
|
||||||
|
@ -655,7 +659,6 @@ public:
|
||||||
MODULE* ListAndSelectModuleName();
|
MODULE* ListAndSelectModuleName();
|
||||||
void Liste_Equipot( wxCommandEvent& event );
|
void Liste_Equipot( wxCommandEvent& event );
|
||||||
void Swap_Layers( wxCommandEvent& event );
|
void Swap_Layers( wxCommandEvent& event );
|
||||||
int Test_DRC( wxDC* DC, bool TestPad2Pad, bool TestZone );
|
|
||||||
void Install_Test_DRC_Frame( wxDC* DC );
|
void Install_Test_DRC_Frame( wxDC* DC );
|
||||||
void Trace_Pcb( wxDC* DC, int mode );
|
void Trace_Pcb( wxDC* DC, int mode );
|
||||||
|
|
||||||
|
@ -719,6 +722,8 @@ public:
|
||||||
bool PlaceDraggedTrackSegment( TRACK* Track, wxDC* DC );
|
bool PlaceDraggedTrackSegment( TRACK* Track, wxDC* DC );
|
||||||
void Start_DragTrackSegmentAndKeepSlope( TRACK* track, wxDC* DC );
|
void Start_DragTrackSegmentAndKeepSlope( TRACK* track, wxDC* DC );
|
||||||
void SwitchLayer( wxDC* DC, int layer );
|
void SwitchLayer( wxDC* DC, int layer );
|
||||||
|
int Add_45_degrees_Segment( wxDC* DC, TRACK* pt_segm );
|
||||||
|
bool Genere_Pad_Connexion( wxDC* DC, int layer );
|
||||||
|
|
||||||
// zone handling
|
// zone handling
|
||||||
EDGE_ZONE* Del_SegmEdgeZone( wxDC* DC, EDGE_ZONE* edge_zone );
|
EDGE_ZONE* Del_SegmEdgeZone( wxDC* DC, EDGE_ZONE* edge_zone );
|
||||||
|
|
|
@ -865,22 +865,25 @@ float WinEDA_PcbFrame::Compute_Ratsnest_PlaceModule( wxDC* DC )
|
||||||
CHEVELU* pt_local_chevelu;
|
CHEVELU* pt_local_chevelu;
|
||||||
int ii;
|
int ii;
|
||||||
float cout, icout;
|
float cout, icout;
|
||||||
int ox, oy, fx, fy, dx, dy;
|
int ox, oy;
|
||||||
|
int fx, fy;
|
||||||
|
int dx, dy;
|
||||||
|
|
||||||
if( (m_Pcb->m_Status_Pcb & CHEVELU_LOCAL_OK) == 0 )
|
if( (m_Pcb->m_Status_Pcb & CHEVELU_LOCAL_OK) == 0 )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
pt_local_chevelu = local_liste_chevelu;
|
pt_local_chevelu = local_liste_chevelu;
|
||||||
ii = nb_local_chevelu; cout = 0;
|
ii = nb_local_chevelu;
|
||||||
|
cout = 0;
|
||||||
|
|
||||||
while( ii-- > 0 )
|
while( ii-- > 0 )
|
||||||
{
|
{
|
||||||
if( !(pt_local_chevelu->status & LOCAL_CHEVELU) )
|
if( !(pt_local_chevelu->status & LOCAL_CHEVELU) )
|
||||||
{
|
{
|
||||||
ox = pt_local_chevelu->pad_start->m_Pos.x - g_Offset_Module.x;
|
ox = pt_local_chevelu->pad_start->GetPosition().x - g_Offset_Module.x;
|
||||||
oy = pt_local_chevelu->pad_start->m_Pos.y - g_Offset_Module.y;
|
oy = pt_local_chevelu->pad_start->GetPosition().y - g_Offset_Module.y;
|
||||||
fx = pt_local_chevelu->pad_end->m_Pos.x;
|
fx = pt_local_chevelu->pad_end->GetPosition().x;
|
||||||
fy = pt_local_chevelu->pad_end->m_Pos.y;
|
fy = pt_local_chevelu->pad_end->GetPosition().y;
|
||||||
|
|
||||||
if( AutoPlaceShowAll )
|
if( AutoPlaceShowAll )
|
||||||
{
|
{
|
||||||
|
@ -889,12 +892,18 @@ float WinEDA_PcbFrame::Compute_Ratsnest_PlaceModule( wxDC* DC )
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Evaluation du cout du chevelu: */
|
/* Evaluation du cout du chevelu: */
|
||||||
dx = fx - ox; dy = fy - oy;
|
dx = fx - ox;
|
||||||
dx = abs( dx ); dy = abs( dy );
|
dy = fy - oy;
|
||||||
|
|
||||||
|
dx = abs( dx );
|
||||||
|
dy = abs( dy );
|
||||||
|
|
||||||
if( dx < dy )
|
if( dx < dy )
|
||||||
EXCHG( dx, dy );/* dx >= dy */
|
EXCHG( dx, dy );/* dx >= dy */
|
||||||
|
|
||||||
/* cout de la distance: */
|
/* cout de la distance: */
|
||||||
icout = (float) dx * dx;
|
icout = (float) dx * dx;
|
||||||
|
|
||||||
/* cout de l'inclinaison */
|
/* cout de l'inclinaison */
|
||||||
icout += 3 * (float) dy * dy;
|
icout += 3 * (float) dy * dy;
|
||||||
icout = sqrt( icout );
|
icout = sqrt( icout );
|
||||||
|
|
|
@ -55,9 +55,10 @@ public:
|
||||||
void SetNet( int aNetCode )
|
void SetNet( int aNetCode )
|
||||||
{
|
{
|
||||||
m_NetCode = aNetCode;
|
m_NetCode = aNetCode;
|
||||||
};
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************/
|
/****************************************************************/
|
||||||
/* description d'un point de piste pour le suivi des connexions */
|
/* description d'un point de piste pour le suivi des connexions */
|
||||||
/****************************************************************/
|
/****************************************************************/
|
||||||
|
@ -81,9 +82,6 @@ enum StatusPcbFlags {
|
||||||
DO_NOT_SHOW_GENERAL_RASTNEST = 0x20 /* Do not display the general rastnest (used in module moves) */
|
DO_NOT_SHOW_GENERAL_RASTNEST = 0x20 /* Do not display the general rastnest (used in module moves) */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define OK_DRC 0
|
|
||||||
#define BAD_DRC 1
|
|
||||||
|
|
||||||
|
|
||||||
/* Commandes d'autoplacement / autorouage possibles */
|
/* Commandes d'autoplacement / autorouage possibles */
|
||||||
enum CommandOpt {
|
enum CommandOpt {
|
||||||
|
@ -170,4 +168,5 @@ eda_global BOARDHEAD Board; /* 2-sided board */
|
||||||
#include "ar_protos.h"
|
#include "ar_protos.h"
|
||||||
|
|
||||||
|
|
||||||
#endif /* AUTOROUT_H */
|
#endif // AUTOROUT_H
|
||||||
|
|
||||||
|
|
|
@ -471,8 +471,8 @@ void MoveMarkedItems( MODULE* module, wxPoint offset )
|
||||||
{
|
{
|
||||||
if( pad->m_Selected == 0 )
|
if( pad->m_Selected == 0 )
|
||||||
continue;
|
continue;
|
||||||
pad->m_Pos.x += offset.x;
|
pad->GetPosition().x += offset.x;
|
||||||
pad->m_Pos.y += offset.y;
|
pad->GetPosition().y += offset.y;
|
||||||
pad->m_Pos0.x += offset.x;
|
pad->m_Pos0.x += offset.x;
|
||||||
pad->m_Pos0.y += offset.y;
|
pad->m_Pos0.y += offset.y;
|
||||||
}
|
}
|
||||||
|
@ -486,8 +486,8 @@ void MoveMarkedItems( MODULE* module, wxPoint offset )
|
||||||
switch( item->Type() )
|
switch( item->Type() )
|
||||||
{
|
{
|
||||||
case TYPETEXTEMODULE:
|
case TYPETEXTEMODULE:
|
||||||
( (TEXTE_MODULE*) item )->m_Pos.x += offset.x;
|
( (TEXTE_MODULE*) item )->GetPosition().x += offset.x;
|
||||||
( (TEXTE_MODULE*) item )->m_Pos.y += offset.y;
|
( (TEXTE_MODULE*) item )->GetPosition().y += offset.y;
|
||||||
( (TEXTE_MODULE*) item )->m_Pos0.x += offset.x;
|
( (TEXTE_MODULE*) item )->m_Pos0.x += offset.x;
|
||||||
( (TEXTE_MODULE*) item )->m_Pos0.y += offset.y;
|
( (TEXTE_MODULE*) item )->m_Pos0.y += offset.y;
|
||||||
break;
|
break;
|
||||||
|
@ -495,10 +495,13 @@ void MoveMarkedItems( MODULE* module, wxPoint offset )
|
||||||
case TYPEEDGEMODULE:
|
case TYPEEDGEMODULE:
|
||||||
( (EDGE_MODULE*) item )->m_Start.x += offset.x;
|
( (EDGE_MODULE*) item )->m_Start.x += offset.x;
|
||||||
( (EDGE_MODULE*) item )->m_Start.y += offset.y;
|
( (EDGE_MODULE*) item )->m_Start.y += offset.y;
|
||||||
|
|
||||||
( (EDGE_MODULE*) item )->m_End.x += offset.x;
|
( (EDGE_MODULE*) item )->m_End.x += offset.x;
|
||||||
( (EDGE_MODULE*) item )->m_End.y += offset.y;
|
( (EDGE_MODULE*) item )->m_End.y += offset.y;
|
||||||
|
|
||||||
( (EDGE_MODULE*) item )->m_Start0.x += offset.x;
|
( (EDGE_MODULE*) item )->m_Start0.x += offset.x;
|
||||||
( (EDGE_MODULE*) item )->m_Start0.y += offset.y;
|
( (EDGE_MODULE*) item )->m_Start0.y += offset.y;
|
||||||
|
|
||||||
( (EDGE_MODULE*) item )->m_End0.x += offset.x;
|
( (EDGE_MODULE*) item )->m_End0.x += offset.x;
|
||||||
( (EDGE_MODULE*) item )->m_End0.y += offset.y;
|
( (EDGE_MODULE*) item )->m_End0.y += offset.y;
|
||||||
break;
|
break;
|
||||||
|
@ -565,8 +568,8 @@ void MirrorMarkedItems( MODULE* module, wxPoint offset )
|
||||||
{
|
{
|
||||||
if( pad->m_Selected == 0 )
|
if( pad->m_Selected == 0 )
|
||||||
continue;
|
continue;
|
||||||
SETMIRROR( pad->m_Pos.x );
|
SETMIRROR( pad->GetPosition().x );
|
||||||
pad->m_Pos0.x = pad->m_Pos.x;
|
pad->m_Pos0.x = pad->GetPosition().x;
|
||||||
pad->m_Offset.x = -pad->m_Offset.x;
|
pad->m_Offset.x = -pad->m_Offset.x;
|
||||||
pad->m_DeltaSize.x = -pad->m_DeltaSize.x;
|
pad->m_DeltaSize.x = -pad->m_DeltaSize.x;
|
||||||
pad->m_Orient = 1800 - pad->m_Orient;
|
pad->m_Orient = 1800 - pad->m_Orient;
|
||||||
|
@ -590,8 +593,8 @@ void MirrorMarkedItems( MODULE* module, wxPoint offset )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TYPETEXTEMODULE:
|
case TYPETEXTEMODULE:
|
||||||
SETMIRROR( ( (TEXTE_MODULE*) item )->m_Pos.x );
|
SETMIRROR( ( (TEXTE_MODULE*) item )->GetPosition().x );
|
||||||
( (TEXTE_MODULE*) item )->m_Pos0.x = ( (TEXTE_MODULE*) item )->m_Pos.x;
|
( (TEXTE_MODULE*) item )->m_Pos0.x = ( (TEXTE_MODULE*) item )->GetPosition().x;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -621,8 +624,8 @@ void RotateMarkedItems( MODULE* module, wxPoint offset )
|
||||||
{
|
{
|
||||||
if( pad->m_Selected == 0 )
|
if( pad->m_Selected == 0 )
|
||||||
continue;
|
continue;
|
||||||
ROTATE( pad->m_Pos );
|
ROTATE( pad->GetPosition() );
|
||||||
pad->m_Pos0 = pad->m_Pos;
|
pad->m_Pos0 = pad->GetPosition();
|
||||||
pad->m_Orient += 900;
|
pad->m_Orient += 900;
|
||||||
NORMALIZE_ANGLE( pad->m_Orient );
|
NORMALIZE_ANGLE( pad->m_Orient );
|
||||||
}
|
}
|
||||||
|
@ -643,8 +646,8 @@ void RotateMarkedItems( MODULE* module, wxPoint offset )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TYPETEXTEMODULE:
|
case TYPETEXTEMODULE:
|
||||||
ROTATE( ( (TEXTE_MODULE*) item )->m_Pos );
|
ROTATE( ( (TEXTE_MODULE*) item )->GetPosition() );
|
||||||
( (TEXTE_MODULE*) item )->m_Pos0 = ( (TEXTE_MODULE*) item )->m_Pos;
|
( (TEXTE_MODULE*) item )->m_Pos0 = ( (TEXTE_MODULE*) item )->GetPosition();
|
||||||
( (TEXTE_MODULE*) item )->m_Orient += 900;
|
( (TEXTE_MODULE*) item )->m_Orient += 900;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -696,7 +699,7 @@ int MarkItemsInBloc( MODULE* module, EDA_Rect& Rect )
|
||||||
for( ; pad != NULL; pad = pad->Next() )
|
for( ; pad != NULL; pad = pad->Next() )
|
||||||
{
|
{
|
||||||
pad->m_Selected = 0;
|
pad->m_Selected = 0;
|
||||||
pos = pad->m_Pos;
|
pos = pad->GetPosition();
|
||||||
if( Rect.Inside( pos ) )
|
if( Rect.Inside( pos ) )
|
||||||
{
|
{
|
||||||
pad->m_Selected = IS_SELECTED;
|
pad->m_Selected = IS_SELECTED;
|
||||||
|
@ -727,7 +730,7 @@ int MarkItemsInBloc( MODULE* module, EDA_Rect& Rect )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TYPETEXTEMODULE:
|
case TYPETEXTEMODULE:
|
||||||
pos = ( (TEXTE_MODULE*) item )->m_Pos;
|
pos = ( (TEXTE_MODULE*) item )->GetPosition();
|
||||||
if( Rect.Inside( pos ) )
|
if( Rect.Inside( pos ) )
|
||||||
{
|
{
|
||||||
item->m_Selected = IS_SELECTED;
|
item->m_Selected = IS_SELECTED;
|
||||||
|
|
|
@ -360,38 +360,38 @@ int Build_Work( BOARD* Pcb, CHEVELU* pt_base_chevelu )
|
||||||
current_net_code = pt_pad->GetNet();
|
current_net_code = pt_pad->GetNet();
|
||||||
pt_ch = pt_rats;
|
pt_ch = pt_rats;
|
||||||
|
|
||||||
r1 = (pt_pad->m_Pos.y - Pcb->m_BoundaryBox.m_Pos.y + demi_pas ) / g_GridRoutingSize;
|
r1 = (pt_pad->GetPosition().y - Pcb->m_BoundaryBox.m_Pos.y + demi_pas ) / g_GridRoutingSize;
|
||||||
if( r1 < 0 || r1 >= Nrows )
|
if( r1 < 0 || r1 >= Nrows )
|
||||||
{
|
{
|
||||||
msg.Printf( wxT( "erreur : row = %d ( padY %d pcbY %d) " ), r1,
|
msg.Printf( wxT( "erreur : row = %d ( padY %d pcbY %d) " ), r1,
|
||||||
pt_pad->m_Pos.y, Pcb->m_BoundaryBox.m_Pos.y );
|
pt_pad->GetPosition().y, Pcb->m_BoundaryBox.m_Pos.y );
|
||||||
DisplayError( NULL, msg );
|
DisplayError( NULL, msg );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
c1 = (pt_pad->m_Pos.x - Pcb->m_BoundaryBox.m_Pos.x + demi_pas ) / g_GridRoutingSize;
|
c1 = (pt_pad->GetPosition().x - Pcb->m_BoundaryBox.m_Pos.x + demi_pas ) / g_GridRoutingSize;
|
||||||
if( c1 < 0 || c1 >= Ncols )
|
if( c1 < 0 || c1 >= Ncols )
|
||||||
{
|
{
|
||||||
msg.Printf( wxT( "erreur : col = %d ( padX %d pcbX %d) " ), c1,
|
msg.Printf( wxT( "erreur : col = %d ( padX %d pcbX %d) " ), c1,
|
||||||
pt_pad->m_Pos.x, Pcb->m_BoundaryBox.m_Pos.x );
|
pt_pad->GetPosition().x, Pcb->m_BoundaryBox.m_Pos.x );
|
||||||
DisplayError( NULL, msg );
|
DisplayError( NULL, msg );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
pt_pad = pt_rats->pad_end;
|
pt_pad = pt_rats->pad_end;
|
||||||
|
|
||||||
r2 = (pt_pad->m_Pos.y - Pcb->m_BoundaryBox.m_Pos.y + demi_pas ) / g_GridRoutingSize;
|
r2 = (pt_pad->GetPosition().y - Pcb->m_BoundaryBox.m_Pos.y + demi_pas ) / g_GridRoutingSize;
|
||||||
if( r2 < 0 || r2 >= Nrows )
|
if( r2 < 0 || r2 >= Nrows )
|
||||||
{
|
{
|
||||||
msg.Printf( wxT( "erreur : row = %d ( padY %d pcbY %d) " ), r2,
|
msg.Printf( wxT( "erreur : row = %d ( padY %d pcbY %d) " ), r2,
|
||||||
pt_pad->m_Pos.y, Pcb->m_BoundaryBox.m_Pos.y );
|
pt_pad->GetPosition().y, Pcb->m_BoundaryBox.m_Pos.y );
|
||||||
DisplayError( NULL, msg );
|
DisplayError( NULL, msg );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
c2 = (pt_pad->m_Pos.x - Pcb->m_BoundaryBox.m_Pos.x + demi_pas ) / g_GridRoutingSize;
|
c2 = (pt_pad->GetPosition().x - Pcb->m_BoundaryBox.m_Pos.x + demi_pas ) / g_GridRoutingSize;
|
||||||
if( c2 < 0 || c2 >= Ncols )
|
if( c2 < 0 || c2 >= Ncols )
|
||||||
{
|
{
|
||||||
msg.Printf( wxT( "erreur : col = %d ( padX %d pcbX %d) " ), c2,
|
msg.Printf( wxT( "erreur : col = %d ( padX %d pcbX %d) " ), c2,
|
||||||
pt_pad->m_Pos.x, Pcb->m_BoundaryBox.m_Pos.x );
|
pt_pad->GetPosition().x, Pcb->m_BoundaryBox.m_Pos.x );
|
||||||
DisplayError( NULL, msg );
|
DisplayError( NULL, msg );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,6 +79,13 @@ BOARD::~BOARD()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wxPoint& BOARD::GetPosition()
|
||||||
|
{
|
||||||
|
static wxPoint dummy(0,0);
|
||||||
|
return dummy; // a reference
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void BOARD::UnLink()
|
void BOARD::UnLink()
|
||||||
{
|
{
|
||||||
/* Modification du chainage arriere */
|
/* Modification du chainage arriere */
|
||||||
|
@ -108,6 +115,7 @@ void BOARD::Add( BOARD_ITEM* aBoardItem, int aControl )
|
||||||
{
|
{
|
||||||
// this one uses a vector
|
// this one uses a vector
|
||||||
case TYPEMARKER:
|
case TYPEMARKER:
|
||||||
|
aBoardItem->m_Parent = this;
|
||||||
m_markers.push_back( (MARKER*) aBoardItem );
|
m_markers.push_back( (MARKER*) aBoardItem );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -188,13 +196,6 @@ int BOARD::GetNumNoconnect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// retourne le nombre de chevelus
|
|
||||||
int BOARD::GetNumRatsnests()
|
|
||||||
{
|
|
||||||
return m_NbLinks;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// retourne le nombre de pads a netcode > 0
|
// retourne le nombre de pads a netcode > 0
|
||||||
int BOARD::GetNumNodes()
|
int BOARD::GetNumNodes()
|
||||||
{
|
{
|
||||||
|
@ -273,11 +274,13 @@ bool BOARD::ComputeBoundaryBox()
|
||||||
D_PAD* pt_pad = module->m_Pads;
|
D_PAD* pt_pad = module->m_Pads;
|
||||||
for( ; pt_pad != NULL; pt_pad = (D_PAD*) pt_pad->Pnext )
|
for( ; pt_pad != NULL; pt_pad = (D_PAD*) pt_pad->Pnext )
|
||||||
{
|
{
|
||||||
|
const wxPoint& pos = pt_pad->GetPosition();
|
||||||
|
|
||||||
d = pt_pad->m_Rayon;
|
d = pt_pad->m_Rayon;
|
||||||
xmin = MIN( xmin, pt_pad->m_Pos.x - d );
|
xmin = MIN( xmin, pos.x - d );
|
||||||
ymin = MIN( ymin, pt_pad->m_Pos.y - d );
|
ymin = MIN( ymin, pos.y - d );
|
||||||
xmax = MAX( xmax, pt_pad->m_Pos.x + d );
|
xmax = MAX( xmax, pos.x + d );
|
||||||
ymax = MAX( ymax, pt_pad->m_Pos.y + d );
|
ymax = MAX( ymax, pos.y + d );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -195,7 +195,8 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TYPEMARKER:
|
case TYPEMARKER:
|
||||||
text << _( "Marker" ) << wxT( " @(" ) << ((MARKER*)item)->m_Pos.x << wxT(",") << ((MARKER*)item)->m_Pos.y << wxT(")");
|
text << _( "Marker" ) << wxT( " @(" ) << ((MARKER*)item)->GetPos().x
|
||||||
|
<< wxT(",") << ((MARKER*)item)->GetPos().y << wxT(")");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TYPECOTATION:
|
case TYPECOTATION:
|
||||||
|
|
|
@ -28,6 +28,12 @@ public:
|
||||||
COTATION( BOARD_ITEM* StructFather );
|
COTATION( BOARD_ITEM* StructFather );
|
||||||
~COTATION();
|
~COTATION();
|
||||||
|
|
||||||
|
wxPoint& GetPosition()
|
||||||
|
{
|
||||||
|
return m_Pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool ReadCotationDescr( FILE* File, int* LineNum );
|
bool ReadCotationDescr( FILE* File, int* LineNum );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -29,6 +29,18 @@ public:
|
||||||
EDGE_MODULE( EDGE_MODULE* edge );
|
EDGE_MODULE( EDGE_MODULE* edge );
|
||||||
~EDGE_MODULE();
|
~EDGE_MODULE();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPosition
|
||||||
|
* returns the position of this object.
|
||||||
|
* @return const wxPoint& - The position of this object.
|
||||||
|
*/
|
||||||
|
wxPoint& GetPosition()
|
||||||
|
{
|
||||||
|
return m_Start;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* supprime du chainage la structure Struct */
|
/* supprime du chainage la structure Struct */
|
||||||
void UnLink();
|
void UnLink();
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,13 @@ EQUIPOT::~EQUIPOT()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wxPoint& EQUIPOT::GetPosition()
|
||||||
|
{
|
||||||
|
static wxPoint dummy;
|
||||||
|
return dummy;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void EQUIPOT::UnLink()
|
void EQUIPOT::UnLink()
|
||||||
{
|
{
|
||||||
/* Modification du chainage arriere */
|
/* Modification du chainage arriere */
|
||||||
|
|
|
@ -30,6 +30,16 @@ public:
|
||||||
|
|
||||||
EQUIPOT* Next() { return (EQUIPOT*) Pnext; }
|
EQUIPOT* Next() { return (EQUIPOT*) Pnext; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPosition
|
||||||
|
* returns the position of this object.
|
||||||
|
* @return wxPoint& - The position of this object, non-const so it
|
||||||
|
* can be changed
|
||||||
|
* A dummy to satisfy pure virtual BOARD::GetPosition()
|
||||||
|
*/
|
||||||
|
wxPoint& GetPosition();
|
||||||
|
|
||||||
|
|
||||||
/* Effacement memoire de la structure */
|
/* Effacement memoire de la structure */
|
||||||
void UnLink();
|
void UnLink();
|
||||||
|
|
||||||
|
|
|
@ -38,8 +38,7 @@ static char Default_MarkerBitmap[] =
|
||||||
/* Classe MARKER */
|
/* Classe MARKER */
|
||||||
/*******************/
|
/*******************/
|
||||||
|
|
||||||
MARKER::MARKER( BOARD_ITEM* StructFather ) :
|
void MARKER::init()
|
||||||
BOARD_ITEM( StructFather, TYPEMARKER )
|
|
||||||
{
|
{
|
||||||
m_Bitmap = NULL;
|
m_Bitmap = NULL;
|
||||||
m_Type = 0;
|
m_Type = 0;
|
||||||
|
@ -49,6 +48,26 @@ MARKER::MARKER( BOARD_ITEM* StructFather ) :
|
||||||
m_Size.y = Default_MarkerBitmap[1];
|
m_Size.y = Default_MarkerBitmap[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MARKER::MARKER( BOARD_ITEM* StructFather ) :
|
||||||
|
BOARD_ITEM( StructFather, TYPEMARKER ),
|
||||||
|
m_drc()
|
||||||
|
{
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MARKER::MARKER( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
|
const wxString& aText, const wxPoint& aPos,
|
||||||
|
const wxString& bText, const wxPoint& bPos ) :
|
||||||
|
BOARD_ITEM( NULL, TYPEMARKER ) // parent set during BOARD::Add()
|
||||||
|
{
|
||||||
|
init();
|
||||||
|
|
||||||
|
SetData( aErrorCode, aMarkerPos,
|
||||||
|
aText, aPos,
|
||||||
|
bText, bPos );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Effacement memoire de la structure */
|
/* Effacement memoire de la structure */
|
||||||
MARKER::~MARKER()
|
MARKER::~MARKER()
|
||||||
|
@ -59,6 +78,19 @@ MARKER::~MARKER()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MARKER::SetData( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
|
const wxString& aText, const wxPoint& aPos,
|
||||||
|
const wxString& bText, const wxPoint& bPos )
|
||||||
|
{
|
||||||
|
m_drc.SetData( aErrorCode, aMarkerPos,
|
||||||
|
aText, bText,
|
||||||
|
aPos, bPos );
|
||||||
|
|
||||||
|
// @todo: switch on error code to set error code specific color, and possibly bitmap.
|
||||||
|
m_Color = WHITE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* supprime du chainage la structure Struct
|
/* supprime du chainage la structure Struct
|
||||||
* les structures arrieres et avant sont chainees directement
|
* les structures arrieres et avant sont chainees directement
|
||||||
*/
|
*/
|
||||||
|
@ -78,7 +110,7 @@ void MARKER::Display_Infos( WinEDA_DrawFrame* frame )
|
||||||
Affiche_1_Parametre( frame, text_pos, _( "Type" ), _("Marker"), DARKCYAN );
|
Affiche_1_Parametre( frame, text_pos, _( "Type" ), _("Marker"), DARKCYAN );
|
||||||
|
|
||||||
text_pos = 12;
|
text_pos = 12;
|
||||||
Affiche_1_Parametre( frame, text_pos, _( "Marker Error Text" ), m_Diag, RED );
|
Affiche_1_Parametre( frame, text_pos, _( "Marker Error Text" ), GetOneLineMessage(), RED );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -96,8 +128,10 @@ bool MARKER::HitTest( const wxPoint& refPos )
|
||||||
TrueSize.y *= ActiveScreen->GetZoom();
|
TrueSize.y *= ActiveScreen->GetZoom();
|
||||||
}
|
}
|
||||||
|
|
||||||
int dx = refPos.x - m_Pos.x;
|
wxPoint pos = GetPosition();
|
||||||
int dy = refPos.y - m_Pos.y;
|
|
||||||
|
int dx = refPos.x - pos.x;
|
||||||
|
int dy = refPos.y - pos.y;
|
||||||
|
|
||||||
/* is refPos in the box: Marker size to right an bottom,
|
/* is refPos in the box: Marker size to right an bottom,
|
||||||
or size/2 to left or top */
|
or size/2 to left or top */
|
||||||
|
@ -130,8 +164,8 @@ void MARKER::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int DrawMode )
|
||||||
|
|
||||||
GRSetDrawMode( DC, DrawMode );
|
GRSetDrawMode( DC, DrawMode );
|
||||||
|
|
||||||
px = GRMapX( m_Pos.x );
|
px = GRMapX( GetPosition().x );
|
||||||
py = GRMapY( m_Pos.y );
|
py = GRMapY( GetPosition().y );
|
||||||
|
|
||||||
/* Get the bitmap size */
|
/* Get the bitmap size */
|
||||||
m_Size.x = *(pt_bitmap++);
|
m_Size.x = *(pt_bitmap++);
|
||||||
|
|
|
@ -7,39 +7,106 @@
|
||||||
|
|
||||||
#include "base_struct.h"
|
#include "base_struct.h"
|
||||||
|
|
||||||
|
#include "drc_stuff.h"
|
||||||
|
|
||||||
class MARKER : public BOARD_ITEM
|
class MARKER : public BOARD_ITEM
|
||||||
{
|
{
|
||||||
private:
|
protected:
|
||||||
wxString m_Diag; /* Associated text (comment) */
|
char* m_Bitmap; ///< Shape (bitmap)
|
||||||
|
|
||||||
public:
|
|
||||||
wxPoint m_Pos;
|
|
||||||
char* m_Bitmap; /* Shape (bitmap) */
|
|
||||||
int m_Type;
|
int m_Type;
|
||||||
int m_Color; /* color */
|
int m_Color; ///< color
|
||||||
wxSize m_Size; /* Size of the graphic symbol */
|
wxSize m_Size; ///< Size of the graphic symbol
|
||||||
|
|
||||||
|
DRC_ITEM m_drc;
|
||||||
|
|
||||||
|
void init();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
MARKER( BOARD_ITEM* StructFather );
|
MARKER( BOARD_ITEM* StructFather );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
* @param aErrorCode The categorizing identifier for an error
|
||||||
|
* @param aMarkerPos The position of the MARKER on the BOARD
|
||||||
|
* @param aText Text describing the first of two objects
|
||||||
|
* @param aPos The position of the first of two objects
|
||||||
|
* @param bText Text describing the second of the two conflicting objects
|
||||||
|
* @param bPos The position of the second of two objects
|
||||||
|
*/
|
||||||
|
MARKER( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
|
const wxString& aText, const wxPoint& aPos,
|
||||||
|
const wxString& bText, const wxPoint& bPos );
|
||||||
|
|
||||||
~MARKER();
|
~MARKER();
|
||||||
|
|
||||||
void UnLink();
|
void UnLink();
|
||||||
void Draw( WinEDA_DrawPanel* panel, wxDC* DC, int DrawMode );
|
void Draw( WinEDA_DrawPanel* panel, wxDC* DC, int DrawMode );
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPosition
|
||||||
|
* returns the position of this MARKER.
|
||||||
|
*/
|
||||||
|
wxPoint& GetPosition()
|
||||||
|
{
|
||||||
|
return (wxPoint&) m_drc.GetPosition();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPos
|
||||||
|
* returns the position of this MARKER, const.
|
||||||
|
*/
|
||||||
|
const wxPoint& GetPos() const
|
||||||
|
{
|
||||||
|
return m_drc.GetPosition();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function SetData
|
||||||
|
* fills in all the reportable data associated with a MARKER.
|
||||||
|
* @param aErrorCode The categorizing identifier for an error
|
||||||
|
* @param aMarkerPos The position of the MARKER on the BOARD
|
||||||
|
* @param aText Text describing the first of two objects
|
||||||
|
* @param aPos The position of the first of two objects
|
||||||
|
* @param bText Text describing the second of the two conflicting objects
|
||||||
|
* @param bPos The position of the second of two objects
|
||||||
|
*/
|
||||||
|
void SetData( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
|
const wxString& aText, const wxPoint& aPos,
|
||||||
|
const wxString& bText, const wxPoint& bPos );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function GetMessage
|
* Function GetMessage
|
||||||
* @return const wxString& - the diagnostic message
|
* @return const wxString& - the diagnostic message
|
||||||
*/
|
*/
|
||||||
const wxString& GetMessage()
|
const wxString GetOneLineMessage()
|
||||||
{
|
{
|
||||||
return m_Diag;
|
return m_drc.ShowText();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetReporter
|
||||||
|
* returns the REPORT_ISSUE held within this MARKER so that its
|
||||||
|
* interface may be used.
|
||||||
|
* @return const& REPORT_ISSUE
|
||||||
|
*/
|
||||||
|
const REPORT_ISSUE& GetReporter() const
|
||||||
|
{
|
||||||
|
return m_drc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
void SetMessage( const wxString& aMsg )
|
void SetMessage( const wxString& aMsg )
|
||||||
{
|
{
|
||||||
m_Diag = aMsg;
|
m_Diag = aMsg;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -75,4 +142,4 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // end #ifndef CLASS_MARKER_H
|
#endif // CLASS_MARKER_H
|
||||||
|
|
|
@ -19,6 +19,12 @@ public:
|
||||||
MIREPCB( BOARD_ITEM* StructFather );
|
MIREPCB( BOARD_ITEM* StructFather );
|
||||||
~MIREPCB();
|
~MIREPCB();
|
||||||
|
|
||||||
|
wxPoint& GetPosition()
|
||||||
|
{
|
||||||
|
return m_Pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Save
|
* Function Save
|
||||||
* writes the data structures for this object out to a FILE in "*.brd" format.
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
|
|
@ -37,6 +37,7 @@ enum Mod_Attribut /* Attributs d'un module */
|
||||||
|
|
||||||
class MODULE : public BOARD_ITEM
|
class MODULE : public BOARD_ITEM
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxPoint m_Pos; // Real coord on board
|
wxPoint m_Pos; // Real coord on board
|
||||||
D_PAD* m_Pads; /* Pad list (linked list) */
|
D_PAD* m_Pads; /* Pad list (linked list) */
|
||||||
|
@ -82,6 +83,18 @@ public:
|
||||||
void SetRectangleExinscrit();/* mise a jour du rect d'encadrement
|
void SetRectangleExinscrit();/* mise a jour du rect d'encadrement
|
||||||
* et de la surface en coord reelles */
|
* et de la surface en coord reelles */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPosition
|
||||||
|
* returns the position of this object.
|
||||||
|
* Required by pure virtual BOARD_ITEM::GetPosition()
|
||||||
|
* @return const wxPoint& - The position of this object.
|
||||||
|
*/
|
||||||
|
wxPoint& GetPosition()
|
||||||
|
{
|
||||||
|
return m_Pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// deplacements
|
// deplacements
|
||||||
void SetPosition( const wxPoint& newpos );
|
void SetPosition( const wxPoint& newpos );
|
||||||
void SetOrientation( int newangle );
|
void SetOrientation( int newangle );
|
||||||
|
|
|
@ -38,7 +38,7 @@ D_PAD::D_PAD( MODULE* parent ) :
|
||||||
|
|
||||||
if( m_Parent && (m_Parent->Type() == TYPEMODULE) )
|
if( m_Parent && (m_Parent->Type() == TYPEMODULE) )
|
||||||
{
|
{
|
||||||
m_Pos = ( (MODULE*) m_Parent )->m_Pos;
|
m_Pos = ( (MODULE*) m_Parent )->GetPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_PadShape = CIRCLE; // forme CERCLE, RECT OVALE TRAPEZE ou libre
|
m_PadShape = CIRCLE; // forme CERCLE, RECT OVALE TRAPEZE ou libre
|
||||||
|
@ -75,8 +75,8 @@ void D_PAD::ComputeRayon()
|
||||||
|
|
||||||
case RECT:
|
case RECT:
|
||||||
case TRAPEZE:
|
case TRAPEZE:
|
||||||
m_Rayon = (int) (sqrt( (float) m_Size.y * m_Size.y
|
m_Rayon = (int) (sqrt( (double) m_Size.y * m_Size.y
|
||||||
+ (float) m_Size.x * m_Size.x ) / 2);
|
+ (double) m_Size.x * m_Size.x ) / 2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,7 @@ const wxPoint D_PAD::ReturnShapePos()
|
||||||
|
|
||||||
// retourne la position de la forme (pastilles excentrees)
|
// retourne la position de la forme (pastilles excentrees)
|
||||||
{
|
{
|
||||||
if( (m_Offset.x == 0) && (m_Offset.y == 0) )
|
if( m_Offset.x == 0 && m_Offset.y == 0 )
|
||||||
return m_Pos;
|
return m_Pos;
|
||||||
|
|
||||||
wxPoint shape_pos;
|
wxPoint shape_pos;
|
||||||
|
|
|
@ -24,7 +24,10 @@ class D_PAD : public BOARD_ITEM
|
||||||
private:
|
private:
|
||||||
int m_NetCode; // Net number for fast comparisons
|
int m_NetCode; // Net number for fast comparisons
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
wxPoint m_Pos; // pad Position on board
|
||||||
|
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
unsigned long m_NumPadName;
|
unsigned long m_NumPadName;
|
||||||
|
@ -42,7 +45,6 @@ public:
|
||||||
int m_PadShape; // Shape: CIRCLE, RECT, OVAL, TRAPEZOID
|
int m_PadShape; // Shape: CIRCLE, RECT, OVAL, TRAPEZOID
|
||||||
int m_DrillShape; // Shape CIRCLE, OVAL
|
int m_DrillShape; // Shape CIRCLE, OVAL
|
||||||
|
|
||||||
wxPoint m_Pos; // pad Position on board
|
|
||||||
wxSize m_Drill; // Drill diam (drill shape = CIRCLE) or drill size(shape = OVAL)
|
wxSize m_Drill; // Drill diam (drill shape = CIRCLE) or drill size(shape = OVAL)
|
||||||
// for drill shape = CIRCLE, drill diam = m_Drill.x
|
// for drill shape = CIRCLE, drill diam = m_Drill.x
|
||||||
|
|
||||||
|
@ -72,6 +74,21 @@ public:
|
||||||
|
|
||||||
D_PAD* Next() { return (D_PAD*) Pnext; }
|
D_PAD* Next() { return (D_PAD*) Pnext; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPosition
|
||||||
|
* returns the position of this object.
|
||||||
|
* @return const wxPoint& - The position of this object.
|
||||||
|
*/
|
||||||
|
wxPoint& GetPosition()
|
||||||
|
{
|
||||||
|
return m_Pos;
|
||||||
|
}
|
||||||
|
void SetPosition( const wxPoint& aPos )
|
||||||
|
{
|
||||||
|
m_Pos = aPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* remove from linked list */
|
/* remove from linked list */
|
||||||
void UnLink();
|
void UnLink();
|
||||||
|
|
||||||
|
@ -87,6 +104,7 @@ public:
|
||||||
bool Save( FILE* aFile ) const;
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* drawing functions */
|
/* drawing functions */
|
||||||
void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode );
|
void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode );
|
||||||
void Draw3D( Pcb3D_GLCanvas* glcanvas );
|
void Draw3D( Pcb3D_GLCanvas* glcanvas );
|
||||||
|
|
|
@ -13,6 +13,19 @@ public:
|
||||||
TEXTE_PCB( TEXTE_PCB* textepcb );
|
TEXTE_PCB( TEXTE_PCB* textepcb );
|
||||||
~TEXTE_PCB();
|
~TEXTE_PCB();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPosition
|
||||||
|
* returns the position of this object.
|
||||||
|
* @return wxPoint& - The position of this object, non-const so it
|
||||||
|
* can be changed
|
||||||
|
*/
|
||||||
|
wxPoint& GetPosition()
|
||||||
|
{
|
||||||
|
return m_Pos; // within EDA_TextStruct
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* supprime du chainage la structure Struct */
|
/* supprime du chainage la structure Struct */
|
||||||
void UnLink();
|
void UnLink();
|
||||||
|
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
class TEXTE_MODULE : public BOARD_ITEM
|
class TEXTE_MODULE : public BOARD_ITEM
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int m_Width;
|
|
||||||
wxPoint m_Pos; // Real coord
|
wxPoint m_Pos; // Real coord
|
||||||
|
int m_Width;
|
||||||
wxPoint m_Pos0; // coord du debut du texte /ancre, orient 0
|
wxPoint m_Pos0; // coord du debut du texte /ancre, orient 0
|
||||||
char m_Unused; // unused (reserved for future extensions)
|
char m_Unused; // unused (reserved for future extensions)
|
||||||
char m_Miroir; // vue normale / miroir
|
char m_Miroir; // vue normale / miroir
|
||||||
|
@ -31,6 +31,18 @@ public:
|
||||||
TEXTE_MODULE( MODULE* parent, int text_type = TEXT_is_DIVERS );
|
TEXTE_MODULE( MODULE* parent, int text_type = TEXT_is_DIVERS );
|
||||||
~TEXTE_MODULE();
|
~TEXTE_MODULE();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPosition
|
||||||
|
* returns the position of this object.
|
||||||
|
* Required by pure virtual BOARD_ITEM::GetPosition()
|
||||||
|
* @return const wxPoint& - The position of this object.
|
||||||
|
*/
|
||||||
|
wxPoint& GetPosition()
|
||||||
|
{
|
||||||
|
return m_Pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* supprime du chainage la structure Struct */
|
/* supprime du chainage la structure Struct */
|
||||||
void UnLink();
|
void UnLink();
|
||||||
|
|
||||||
|
|
|
@ -144,21 +144,6 @@ bool TRACK::IsNull()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************/
|
|
||||||
double TRACK::GetLength() const
|
|
||||||
/*************************************************************/
|
|
||||||
{
|
|
||||||
int dx = m_Start.x - m_End.x;
|
|
||||||
int dy = m_Start.y - m_End.y;
|
|
||||||
|
|
||||||
double dist = ( (double) dx * dx ) + ( (double) dy * dy );
|
|
||||||
|
|
||||||
dist = sqrt( dist );
|
|
||||||
|
|
||||||
return dist;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************/
|
/*************************************************************/
|
||||||
int TRACK::IsPointOnEnds( const wxPoint& point, int min_dist )
|
int TRACK::IsPointOnEnds( const wxPoint& point, int min_dist )
|
||||||
/*************************************************************/
|
/*************************************************************/
|
||||||
|
|
|
@ -55,6 +55,16 @@ public:
|
||||||
|
|
||||||
TRACK* Back() const { return (TRACK*) Pback; }
|
TRACK* Back() const { return (TRACK*) Pback; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPosition
|
||||||
|
* returns the position of this object.
|
||||||
|
* @return const wxPoint& - The position of this object.
|
||||||
|
*/
|
||||||
|
wxPoint& GetPosition()
|
||||||
|
{
|
||||||
|
return m_Start; // it had to be start or end.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* supprime du chainage la structure Struct */
|
/* supprime du chainage la structure Struct */
|
||||||
void UnLink();
|
void UnLink();
|
||||||
|
@ -122,7 +132,12 @@ public:
|
||||||
* returns the length of the track using the hypotenuse calculation.
|
* returns the length of the track using the hypotenuse calculation.
|
||||||
* @return double - the length of the track
|
* @return double - the length of the track
|
||||||
*/
|
*/
|
||||||
double GetLength() const;
|
double GetLength() const
|
||||||
|
{
|
||||||
|
int dx = m_Start.x - m_End.x;
|
||||||
|
int dy = m_Start.y - m_End.y;
|
||||||
|
return hypot( dx, dy );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Display on screen: */
|
/* Display on screen: */
|
||||||
|
@ -255,8 +270,16 @@ public:
|
||||||
void SetLayerPair( int top_layer, int bottom_layer );
|
void SetLayerPair( int top_layer, int bottom_layer );
|
||||||
void ReturnLayerPair( int* top_layer, int* bottom_layer ) const;
|
void ReturnLayerPair( int* top_layer, int* bottom_layer ) const;
|
||||||
|
|
||||||
const wxPoint& GetPos() const { return m_Start; }
|
/**
|
||||||
void SetPos( const wxPoint& aPoint ) { m_Start=aPoint; m_End=aPoint; }
|
* Function GetPosition
|
||||||
|
* returns the position of this object.
|
||||||
|
* @return const wxPoint& - The position of this object.
|
||||||
|
*/
|
||||||
|
wxPoint& GetPosition()
|
||||||
|
{
|
||||||
|
return m_Start;
|
||||||
|
}
|
||||||
|
void SetPosition( const wxPoint& aPoint ) { m_Start=aPoint; m_End=aPoint; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function GetClass
|
* Function GetClass
|
||||||
|
|
|
@ -985,12 +985,12 @@ static void ConnectDanglingEndToVia( BOARD* pcb )
|
||||||
|
|
||||||
// if the other track's m_End does not match the via position, and the track's m_Start is
|
// if the other track's m_End does not match the via position, and the track's m_Start is
|
||||||
// within the bounds of the via, and the other track has no start
|
// within the bounds of the via, and the other track has no start
|
||||||
if( other->m_End!=via->GetPos() && via->HitTest( other->m_Start ) && !other->start )
|
if( other->m_End!=via->GetPosition() && via->HitTest( other->m_Start ) && !other->start )
|
||||||
{
|
{
|
||||||
TRACK* newTrack = other->Copy();
|
TRACK* newTrack = other->Copy();
|
||||||
newTrack->Insert( pcb, other );
|
newTrack->Insert( pcb, other );
|
||||||
|
|
||||||
newTrack->m_End = via->GetPos();
|
newTrack->m_End = via->GetPosition();
|
||||||
|
|
||||||
newTrack->start = other;
|
newTrack->start = other;
|
||||||
newTrack->end = via;
|
newTrack->end = via;
|
||||||
|
@ -1007,12 +1007,12 @@ static void ConnectDanglingEndToVia( BOARD* pcb )
|
||||||
|
|
||||||
// if the other track's m_Start does not match the via position, and the track's m_End is
|
// if the other track's m_Start does not match the via position, and the track's m_End is
|
||||||
// within the bounds of the via, and the other track has no end
|
// within the bounds of the via, and the other track has no end
|
||||||
else if( other->m_Start!=via->GetPos() && via->HitTest( other->m_End ) && !other->end )
|
else if( other->m_Start!=via->GetPosition() && via->HitTest( other->m_End ) && !other->end )
|
||||||
{
|
{
|
||||||
TRACK* newTrack = other->Copy();
|
TRACK* newTrack = other->Copy();
|
||||||
newTrack->Insert( pcb, other );
|
newTrack->Insert( pcb, other );
|
||||||
|
|
||||||
newTrack->m_Start = via->GetPos();
|
newTrack->m_Start = via->GetPosition();
|
||||||
|
|
||||||
newTrack->start = via;
|
newTrack->start = via;
|
||||||
newTrack->end = other;
|
newTrack->end = other;
|
||||||
|
|
|
@ -58,7 +58,7 @@ void RemoteCommand( const char* cmdline )
|
||||||
|
|
||||||
frame->DrawPanel->PrepareGraphicContext( &dc );
|
frame->DrawPanel->PrepareGraphicContext( &dc );
|
||||||
frame->DrawPanel->CursorOff( &dc );
|
frame->DrawPanel->CursorOff( &dc );
|
||||||
frame->GetScreen()->m_Curseur = module->m_Pos;
|
frame->GetScreen()->m_Curseur = module->GetPosition();
|
||||||
frame->DrawPanel->CursorOn( &dc );
|
frame->DrawPanel->CursorOn( &dc );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,7 +96,7 @@ void RemoteCommand( const char* cmdline )
|
||||||
frame->Hight_Light( &dc ); /* hightlighted the new one */
|
frame->Hight_Light( &dc ); /* hightlighted the new one */
|
||||||
|
|
||||||
frame->DrawPanel->CursorOff( &dc );
|
frame->DrawPanel->CursorOff( &dc );
|
||||||
frame->GetScreen()->m_Curseur = pad->m_Pos;
|
frame->GetScreen()->m_Curseur = pad->GetPosition();
|
||||||
frame->DrawPanel->CursorOn( &dc );
|
frame->DrawPanel->CursorOn( &dc );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -123,63 +123,62 @@ public:
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* WinEDA_DrcFrame type definition
|
* DrcDialog type definition
|
||||||
*/
|
*/
|
||||||
|
|
||||||
IMPLEMENT_DYNAMIC_CLASS( WinEDA_DrcFrame, wxDialog )
|
IMPLEMENT_DYNAMIC_CLASS( DrcDialog, wxDialog )
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* WinEDA_DrcFrame event table definition
|
* DrcDialog event table definition
|
||||||
*/
|
*/
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE( WinEDA_DrcFrame, wxDialog )
|
BEGIN_EVENT_TABLE( DrcDialog, wxDialog )
|
||||||
|
|
||||||
////@begin WinEDA_DrcFrame event table entries
|
////@begin DrcDialog event table entries
|
||||||
EVT_INIT_DIALOG( WinEDA_DrcFrame::OnInitDialog )
|
EVT_INIT_DIALOG( DrcDialog::OnInitDialog )
|
||||||
|
EVT_WINDOW_DESTROY( DrcDialog::OnDestroy )
|
||||||
|
|
||||||
EVT_CHECKBOX( ID_CHECKBOX, WinEDA_DrcFrame::OnReportCheckBoxClicked )
|
EVT_CHECKBOX( ID_CHECKBOX, DrcDialog::OnReportCheckBoxClicked )
|
||||||
|
|
||||||
EVT_BUTTON( ID_BUTTON_BROWSE_RPT_FILE, WinEDA_DrcFrame::OnButtonBrowseRptFileClick )
|
EVT_BUTTON( ID_BUTTON_BROWSE_RPT_FILE, DrcDialog::OnButtonBrowseRptFileClick )
|
||||||
|
|
||||||
EVT_BUTTON( ID_STARTDRC, WinEDA_DrcFrame::OnStartdrcClick )
|
EVT_BUTTON( ID_STARTDRC, DrcDialog::OnStartdrcClick )
|
||||||
|
|
||||||
EVT_BUTTON( ID_LIST_UNCONNECTED, WinEDA_DrcFrame::OnListUnconnectedClick )
|
EVT_BUTTON( ID_LIST_UNCONNECTED, DrcDialog::OnListUnconnectedClick )
|
||||||
|
|
||||||
EVT_BUTTON( ID_DELETE_ALL, WinEDA_DrcFrame::OnDeleteAllClick )
|
EVT_BUTTON( ID_DELETE_ALL, DrcDialog::OnDeleteAllClick )
|
||||||
|
|
||||||
EVT_BUTTON( wxID_CANCEL, WinEDA_DrcFrame::OnCancelClick )
|
EVT_BUTTON( wxID_CANCEL, DrcDialog::OnCancelClick )
|
||||||
|
|
||||||
EVT_BUTTON( wxID_OK, WinEDA_DrcFrame::OnOkClick )
|
EVT_BUTTON( wxID_OK, DrcDialog::OnOkClick )
|
||||||
|
|
||||||
////@end WinEDA_DrcFrame event table entries
|
////@end DrcDialog event table entries
|
||||||
|
|
||||||
|
|
||||||
// outside bracket: DialogBlocks does not know about the listbox events on a custom list box.
|
// outside bracket: DialogBlocks does not know about the listbox events on a custom list box.
|
||||||
EVT_LISTBOX( ID_CLEARANCE_LIST, WinEDA_DrcFrame::OnMarkerSelectionEvent)
|
EVT_LISTBOX( ID_CLEARANCE_LIST, DrcDialog::OnMarkerSelectionEvent)
|
||||||
EVT_LISTBOX( ID_UNCONNECTED_LIST, WinEDA_DrcFrame::OnUnconnectedSelectionEvent)
|
EVT_LISTBOX( ID_UNCONNECTED_LIST, DrcDialog::OnUnconnectedSelectionEvent)
|
||||||
|
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* WinEDA_DrcFrame constructors
|
* DrcDialog constructors
|
||||||
*/
|
*/
|
||||||
|
|
||||||
WinEDA_DrcFrame::WinEDA_DrcFrame( )
|
DrcDialog::DrcDialog( )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
WinEDA_DrcFrame::WinEDA_DrcFrame( DRC_TESTER* aDrc_tester, WinEDA_PcbFrame* parent, wxDC * panelDC,
|
DrcDialog::DrcDialog( DRC* aTester, WinEDA_PcbFrame* parent,
|
||||||
wxWindowID id,
|
wxWindowID id,
|
||||||
const wxString& caption,
|
const wxString& caption,
|
||||||
const wxPoint& pos,
|
const wxPoint& pos,
|
||||||
const wxSize& size,
|
const wxSize& size,
|
||||||
long style )
|
long style )
|
||||||
{
|
{
|
||||||
m_Tester = aDrc_tester;
|
m_tester = aTester;
|
||||||
|
|
||||||
m_Parent = parent;
|
m_Parent = parent;
|
||||||
m_DC = panelDC;
|
|
||||||
AbortDrc = FALSE;
|
|
||||||
|
|
||||||
Create(parent, id, caption, pos, size, style);
|
Create(parent, id, caption, pos, size, style);
|
||||||
|
|
||||||
|
@ -191,9 +190,9 @@ WinEDA_DrcFrame::WinEDA_DrcFrame( DRC_TESTER* aDrc_tester, WinEDA_PcbFrame* pare
|
||||||
* WinEDA_DrcFrame creator
|
* WinEDA_DrcFrame creator
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool WinEDA_DrcFrame::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
|
bool DrcDialog::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
|
||||||
{
|
{
|
||||||
////@begin WinEDA_DrcFrame member initialisation
|
////@begin DrcDialog member initialisation
|
||||||
m_MainSizer = NULL;
|
m_MainSizer = NULL;
|
||||||
m_CommandSizer = NULL;
|
m_CommandSizer = NULL;
|
||||||
m_ClearenceTitle = NULL;
|
m_ClearenceTitle = NULL;
|
||||||
|
@ -202,16 +201,17 @@ bool WinEDA_DrcFrame::Create( wxWindow* parent, wxWindowID id, const wxString& c
|
||||||
m_RptFilenameCtrl = NULL;
|
m_RptFilenameCtrl = NULL;
|
||||||
m_BrowseButton = NULL;
|
m_BrowseButton = NULL;
|
||||||
m_Pad2PadTestCtrl = NULL;
|
m_Pad2PadTestCtrl = NULL;
|
||||||
m_UnconnectedTestCtrl = NULL;
|
|
||||||
m_ZonesTestCtrl = NULL;
|
m_ZonesTestCtrl = NULL;
|
||||||
|
m_UnconnectedTestCtrl = NULL;
|
||||||
|
m_DeleteAllButton = NULL;
|
||||||
m_DeleteCurrentMarkerButton = NULL;
|
m_DeleteCurrentMarkerButton = NULL;
|
||||||
m_ClearanceListBox = NULL;
|
m_ClearanceListBox = NULL;
|
||||||
m_UnconnectedListBox = NULL;
|
m_UnconnectedListBox = NULL;
|
||||||
StdDialogButtonSizer = NULL;
|
StdDialogButtonSizer = NULL;
|
||||||
////@end WinEDA_DrcFrame member initialisation
|
////@end DrcDialog member initialisation
|
||||||
|
|
||||||
|
|
||||||
////@begin WinEDA_DrcFrame creation
|
////@begin DrcDialog creation
|
||||||
SetExtraStyle(wxWS_EX_BLOCK_EVENTS);
|
SetExtraStyle(wxWS_EX_BLOCK_EVENTS);
|
||||||
wxDialog::Create( parent, id, caption, pos, size, style );
|
wxDialog::Create( parent, id, caption, pos, size, style );
|
||||||
|
|
||||||
|
@ -221,7 +221,7 @@ bool WinEDA_DrcFrame::Create( wxWindow* parent, wxWindowID id, const wxString& c
|
||||||
GetSizer()->SetSizeHints(this);
|
GetSizer()->SetSizeHints(this);
|
||||||
}
|
}
|
||||||
Centre();
|
Centre();
|
||||||
////@end WinEDA_DrcFrame creation
|
////@end DrcDialog creation
|
||||||
|
|
||||||
|
|
||||||
// m_ClearanceListBox->SetList( &gList );
|
// m_ClearanceListBox->SetList( &gList );
|
||||||
|
@ -234,14 +234,14 @@ bool WinEDA_DrcFrame::Create( wxWindow* parent, wxWindowID id, const wxString& c
|
||||||
* Control creation for WinEDA_DrcFrame
|
* Control creation for WinEDA_DrcFrame
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void WinEDA_DrcFrame::CreateControls()
|
void DrcDialog::CreateControls()
|
||||||
{
|
{
|
||||||
SetFont( *g_DialogFont );
|
SetFont( *g_DialogFont );
|
||||||
|
|
||||||
////@begin WinEDA_DrcFrame content construction
|
////@begin DrcDialog content construction
|
||||||
// Generated by DialogBlocks, Tue 27 Nov 2007 00:10:16 CST (unregistered)
|
// Generated by DialogBlocks, Fri 30 Nov 2007 18:52:20 CST (unregistered)
|
||||||
|
|
||||||
WinEDA_DrcFrame* itemDialog1 = this;
|
DrcDialog* itemDialog1 = this;
|
||||||
|
|
||||||
m_MainSizer = new wxBoxSizer(wxVERTICAL);
|
m_MainSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
itemDialog1->SetSizer(m_MainSizer);
|
itemDialog1->SetSizer(m_MainSizer);
|
||||||
|
@ -251,7 +251,7 @@ void WinEDA_DrcFrame::CreateControls()
|
||||||
|
|
||||||
wxStaticBox* itemStaticBoxSizer4Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Options"));
|
wxStaticBox* itemStaticBoxSizer4Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Options"));
|
||||||
wxStaticBoxSizer* itemStaticBoxSizer4 = new wxStaticBoxSizer(itemStaticBoxSizer4Static, wxHORIZONTAL);
|
wxStaticBoxSizer* itemStaticBoxSizer4 = new wxStaticBoxSizer(itemStaticBoxSizer4Static, wxHORIZONTAL);
|
||||||
m_CommandSizer->Add(itemStaticBoxSizer4, 20, wxGROW|wxTOP|wxBOTTOM, 8);
|
m_CommandSizer->Add(itemStaticBoxSizer4, 3, wxGROW|wxTOP|wxBOTTOM, 8);
|
||||||
|
|
||||||
wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
|
||||||
itemStaticBoxSizer4->Add(itemBoxSizer5, 2, wxGROW|wxALL, 5);
|
itemStaticBoxSizer4->Add(itemBoxSizer5, 2, wxGROW|wxALL, 5);
|
||||||
|
@ -262,139 +262,138 @@ void WinEDA_DrcFrame::CreateControls()
|
||||||
m_ClearenceTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Clearance"), wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
|
m_ClearenceTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Clearance"), wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
|
||||||
itemBoxSizer6->Add(m_ClearenceTitle, 0, wxALIGN_TOP|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
itemBoxSizer6->Add(m_ClearenceTitle, 0, wxALIGN_TOP|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||||
|
|
||||||
itemBoxSizer6->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 10);
|
|
||||||
|
|
||||||
m_SetClearance = new wxTextCtrl( itemDialog1, ID_TEXTCTRL1, _T(""), wxDefaultPosition, wxSize(144, -1), 0 );
|
m_SetClearance = new wxTextCtrl( itemDialog1, ID_TEXTCTRL1, _T(""), wxDefaultPosition, wxSize(144, -1), 0 );
|
||||||
if (WinEDA_DrcFrame::ShowToolTips())
|
if (DrcDialog::ShowToolTips())
|
||||||
m_SetClearance->SetToolTip(_("In the clearance units, enter the clearance distance"));
|
m_SetClearance->SetToolTip(_("In the clearance units, enter the clearance distance"));
|
||||||
itemBoxSizer6->Add(m_SetClearance, 1, wxALIGN_TOP|wxLEFT|wxRIGHT|wxBOTTOM|wxADJUST_MINSIZE, 5);
|
itemBoxSizer6->Add(m_SetClearance, 1, wxALIGN_TOP|wxLEFT|wxRIGHT|wxBOTTOM|wxADJUST_MINSIZE, 5);
|
||||||
|
|
||||||
wxStaticBox* itemStaticBoxSizer10Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Create Report File"));
|
wxStaticBox* itemStaticBoxSizer9Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Create Report File"));
|
||||||
wxStaticBoxSizer* itemStaticBoxSizer10 = new wxStaticBoxSizer(itemStaticBoxSizer10Static, wxHORIZONTAL);
|
wxStaticBoxSizer* itemStaticBoxSizer9 = new wxStaticBoxSizer(itemStaticBoxSizer9Static, wxHORIZONTAL);
|
||||||
itemBoxSizer5->Add(itemStaticBoxSizer10, 1, wxGROW|wxALL, 5);
|
itemBoxSizer5->Add(itemStaticBoxSizer9, 1, wxGROW|wxALL, 5);
|
||||||
|
|
||||||
m_CreateRptCtrl = new wxCheckBox( itemDialog1, ID_CHECKBOX, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
|
m_CreateRptCtrl = new wxCheckBox( itemDialog1, ID_CHECKBOX, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
m_CreateRptCtrl->SetValue(false);
|
m_CreateRptCtrl->SetValue(false);
|
||||||
if (WinEDA_DrcFrame::ShowToolTips())
|
if (DrcDialog::ShowToolTips())
|
||||||
m_CreateRptCtrl->SetToolTip(_("Enable writing report to this file"));
|
m_CreateRptCtrl->SetToolTip(_("Enable writing report to this file"));
|
||||||
itemStaticBoxSizer10->Add(m_CreateRptCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
|
itemStaticBoxSizer9->Add(m_CreateRptCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
|
||||||
|
|
||||||
m_RptFilenameCtrl = new wxTextCtrl( itemDialog1, ID_TEXTCTRL3, _T(""), wxDefaultPosition, wxSize(250, -1), 0 );
|
m_RptFilenameCtrl = new wxTextCtrl( itemDialog1, ID_TEXTCTRL3, _T(""), wxDefaultPosition, wxSize(250, -1), 0 );
|
||||||
if (WinEDA_DrcFrame::ShowToolTips())
|
if (DrcDialog::ShowToolTips())
|
||||||
m_RptFilenameCtrl->SetToolTip(_("Enter the report filename"));
|
m_RptFilenameCtrl->SetToolTip(_("Enter the report filename"));
|
||||||
itemStaticBoxSizer10->Add(m_RptFilenameCtrl, 2, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM, 5);
|
itemStaticBoxSizer9->Add(m_RptFilenameCtrl, 2, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM, 5);
|
||||||
|
|
||||||
m_BrowseButton = new wxButton( itemDialog1, ID_BUTTON_BROWSE_RPT_FILE, _("..."), wxDefaultPosition, wxSize(35, -1), 0 );
|
m_BrowseButton = new wxButton( itemDialog1, ID_BUTTON_BROWSE_RPT_FILE, _("..."), wxDefaultPosition, wxSize(35, -1), 0 );
|
||||||
if (WinEDA_DrcFrame::ShowToolTips())
|
if (DrcDialog::ShowToolTips())
|
||||||
m_BrowseButton->SetToolTip(_("Pick a filename interactively"));
|
m_BrowseButton->SetToolTip(_("Pick a filename interactively"));
|
||||||
itemStaticBoxSizer10->Add(m_BrowseButton, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM|wxADJUST_MINSIZE, 5);
|
itemStaticBoxSizer9->Add(m_BrowseButton, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM|wxADJUST_MINSIZE, 5);
|
||||||
|
|
||||||
wxStaticBox* itemStaticBoxSizer14Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Include Tests For:"));
|
wxStaticBox* itemStaticBoxSizer13Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Include Tests For:"));
|
||||||
wxStaticBoxSizer* itemStaticBoxSizer14 = new wxStaticBoxSizer(itemStaticBoxSizer14Static, wxVERTICAL);
|
wxStaticBoxSizer* itemStaticBoxSizer13 = new wxStaticBoxSizer(itemStaticBoxSizer13Static, wxVERTICAL);
|
||||||
itemStaticBoxSizer4->Add(itemStaticBoxSizer14, 0, wxGROW|wxALL, 5);
|
itemStaticBoxSizer4->Add(itemStaticBoxSizer13, 0, wxGROW|wxALL, 5);
|
||||||
|
|
||||||
m_Pad2PadTestCtrl = new wxCheckBox( itemDialog1, ID_CHECKBOX2, _("Clearances"), wxDefaultPosition, wxDefaultSize, 0 );
|
m_Pad2PadTestCtrl = new wxCheckBox( itemDialog1, ID_CHECKBOX2, _("Pad to pad"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
m_Pad2PadTestCtrl->SetValue(false);
|
m_Pad2PadTestCtrl->SetValue(false);
|
||||||
if (WinEDA_DrcFrame::ShowToolTips())
|
if (DrcDialog::ShowToolTips())
|
||||||
m_Pad2PadTestCtrl->SetToolTip(_("Test pad to pad, pad to track, and track to track clearances"));
|
m_Pad2PadTestCtrl->SetToolTip(_("Include tests for clearances between pad to pads"));
|
||||||
itemStaticBoxSizer14->Add(m_Pad2PadTestCtrl, 0, wxGROW|wxALL, 5);
|
itemStaticBoxSizer13->Add(m_Pad2PadTestCtrl, 0, wxGROW|wxALL, 5);
|
||||||
|
|
||||||
m_UnconnectedTestCtrl = new wxCheckBox( itemDialog1, ID_CHECKBOX3, _("Unconnected"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
||||||
m_UnconnectedTestCtrl->SetValue(false);
|
|
||||||
if (WinEDA_DrcFrame::ShowToolTips())
|
|
||||||
m_UnconnectedTestCtrl->SetToolTip(_("Find unconnected pads and tracks"));
|
|
||||||
itemStaticBoxSizer14->Add(m_UnconnectedTestCtrl, 0, wxGROW|wxALL, 5);
|
|
||||||
|
|
||||||
m_ZonesTestCtrl = new wxCheckBox( itemDialog1, ID_CHECKBOX7, _("Zones"), wxDefaultPosition, wxDefaultSize, 0 );
|
m_ZonesTestCtrl = new wxCheckBox( itemDialog1, ID_CHECKBOX7, _("Zones"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
m_ZonesTestCtrl->SetValue(false);
|
m_ZonesTestCtrl->SetValue(false);
|
||||||
if (WinEDA_DrcFrame::ShowToolTips())
|
if (DrcDialog::ShowToolTips())
|
||||||
m_ZonesTestCtrl->SetToolTip(_("Include zones in clearance or unconnected tests"));
|
m_ZonesTestCtrl->SetToolTip(_("Include zones in clearance or unconnected tests"));
|
||||||
itemStaticBoxSizer14->Add(m_ZonesTestCtrl, 0, wxGROW|wxALL, 5);
|
itemStaticBoxSizer13->Add(m_ZonesTestCtrl, 0, wxGROW|wxALL, 5);
|
||||||
|
|
||||||
wxBoxSizer* itemBoxSizer18 = new wxBoxSizer(wxVERTICAL);
|
m_UnconnectedTestCtrl = new wxCheckBox( itemDialog1, ID_CHECKBOX3, _("Unconnected pads"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
m_CommandSizer->Add(itemBoxSizer18, 0, wxALIGN_TOP|wxALL, 5);
|
m_UnconnectedTestCtrl->SetValue(false);
|
||||||
|
if (DrcDialog::ShowToolTips())
|
||||||
|
m_UnconnectedTestCtrl->SetToolTip(_("Find unconnected pads"));
|
||||||
|
itemStaticBoxSizer13->Add(m_UnconnectedTestCtrl, 0, wxGROW|wxALL, 5);
|
||||||
|
|
||||||
wxButton* itemButton19 = new wxButton( itemDialog1, ID_STARTDRC, _("Start DRC"), wxDefaultPosition, wxDefaultSize, 0 );
|
wxBoxSizer* itemBoxSizer17 = new wxBoxSizer(wxVERTICAL);
|
||||||
if (WinEDA_DrcFrame::ShowToolTips())
|
m_CommandSizer->Add(itemBoxSizer17, 0, wxALIGN_TOP|wxALL, 5);
|
||||||
itemButton19->SetToolTip(_("Start the Design Rule Checker"));
|
|
||||||
itemButton19->SetForegroundColour(wxColour(202, 0, 0));
|
|
||||||
itemBoxSizer18->Add(itemButton19, 0, wxGROW|wxALL, 5);
|
|
||||||
|
|
||||||
wxButton* itemButton20 = new wxButton( itemDialog1, ID_LIST_UNCONNECTED, _("List Unconnected"), wxDefaultPosition, wxDefaultSize, 0 );
|
wxButton* itemButton18 = new wxButton( itemDialog1, ID_STARTDRC, _("Start DRC"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
if (WinEDA_DrcFrame::ShowToolTips())
|
if (DrcDialog::ShowToolTips())
|
||||||
itemButton20->SetToolTip(_("List unconnected pads or tracks"));
|
itemButton18->SetToolTip(_("Start the Design Rule Checker"));
|
||||||
itemButton20->SetForegroundColour(wxColour(0, 0, 255));
|
itemButton18->SetForegroundColour(wxColour(202, 0, 0));
|
||||||
itemBoxSizer18->Add(itemButton20, 0, wxGROW|wxALL, 5);
|
itemBoxSizer17->Add(itemButton18, 0, wxGROW|wxALL, 5);
|
||||||
|
|
||||||
wxButton* itemButton21 = new wxButton( itemDialog1, ID_DELETE_ALL, _("Delete All Markers"), wxDefaultPosition, wxDefaultSize, 0 );
|
wxButton* itemButton19 = new wxButton( itemDialog1, ID_LIST_UNCONNECTED, _("List Unconnected"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
if (WinEDA_DrcFrame::ShowToolTips())
|
if (DrcDialog::ShowToolTips())
|
||||||
itemButton21->SetToolTip(_("Delete every marker"));
|
itemButton19->SetToolTip(_("List unconnected pads or tracks"));
|
||||||
itemButton21->SetForegroundColour(wxColour(0, 128, 0));
|
itemButton19->SetForegroundColour(wxColour(0, 0, 255));
|
||||||
itemBoxSizer18->Add(itemButton21, 0, wxGROW|wxALL, 5);
|
itemBoxSizer17->Add(itemButton19, 0, wxGROW|wxALL, 5);
|
||||||
|
|
||||||
|
m_DeleteAllButton = new wxButton( itemDialog1, ID_DELETE_ALL, _("Delete All Markers"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
if (DrcDialog::ShowToolTips())
|
||||||
|
m_DeleteAllButton->SetToolTip(_("Delete every marker"));
|
||||||
|
m_DeleteAllButton->SetForegroundColour(wxColour(0, 128, 0));
|
||||||
|
itemBoxSizer17->Add(m_DeleteAllButton, 0, wxGROW|wxALL, 5);
|
||||||
|
|
||||||
m_DeleteCurrentMarkerButton = new wxButton( itemDialog1, ID_DELETE_ONE, _("Delete Current Marker"), wxDefaultPosition, wxDefaultSize, 0 );
|
m_DeleteCurrentMarkerButton = new wxButton( itemDialog1, ID_DELETE_ONE, _("Delete Current Marker"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
if (WinEDA_DrcFrame::ShowToolTips())
|
if (DrcDialog::ShowToolTips())
|
||||||
m_DeleteCurrentMarkerButton->SetToolTip(_("Delete the marker selected in the listBox below"));
|
m_DeleteCurrentMarkerButton->SetToolTip(_("Delete the marker selected in the listBox below"));
|
||||||
m_DeleteCurrentMarkerButton->Enable(false);
|
m_DeleteCurrentMarkerButton->Enable(false);
|
||||||
itemBoxSizer18->Add(m_DeleteCurrentMarkerButton, 0, wxGROW|wxALL, 5);
|
itemBoxSizer17->Add(m_DeleteCurrentMarkerButton, 0, wxGROW|wxALL, 5);
|
||||||
|
|
||||||
wxStaticText* itemStaticText23 = 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(itemStaticText23, 0, wxGROW|wxLEFT|wxRIGHT|wxADJUST_MINSIZE, 10);
|
m_MainSizer->Add(itemStaticText22, 0, wxGROW|wxLEFT|wxRIGHT|wxADJUST_MINSIZE, 10);
|
||||||
|
|
||||||
wxNotebook* itemNotebook24 = new wxNotebook( itemDialog1, ID_NOTEBOOK1, wxDefaultPosition, wxDefaultSize, wxNB_DEFAULT|wxRAISED_BORDER );
|
wxNotebook* itemNotebook23 = new wxNotebook( itemDialog1, ID_NOTEBOOK1, wxDefaultPosition, wxDefaultSize, wxNB_DEFAULT|wxRAISED_BORDER );
|
||||||
#if !wxCHECK_VERSION(2,5,2)
|
#if !wxCHECK_VERSION(2,5,2)
|
||||||
wxNotebookSizer* itemNotebook24Sizer = new wxNotebookSizer(itemNotebook24);
|
wxNotebookSizer* itemNotebook23Sizer = new wxNotebookSizer(itemNotebook23);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
m_ClearanceListBox = new DRCLISTBOX( itemNotebook24, ID_CLEARANCE_LIST, wxDefaultPosition, wxSize(100, 300), wxSUNKEN_BORDER|wxHSCROLL|wxVSCROLL );
|
m_ClearanceListBox = new DRCLISTBOX( itemNotebook23, ID_CLEARANCE_LIST, wxDefaultPosition, wxSize(100, 300), wxSUNKEN_BORDER|wxHSCROLL|wxVSCROLL );
|
||||||
if (WinEDA_DrcFrame::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"));
|
||||||
|
|
||||||
itemNotebook24->AddPage(m_ClearanceListBox, _("Distance Problem Markers"));
|
itemNotebook23->AddPage(m_ClearanceListBox, _("Distance Problem Markers"));
|
||||||
|
|
||||||
m_UnconnectedListBox = new DRCLISTBOX( itemNotebook24, ID_UNCONNECTED_LIST, wxDefaultPosition, wxSize(100, 100), wxSUNKEN_BORDER|wxHSCROLL|wxVSCROLL );
|
m_UnconnectedListBox = new DRCLISTBOX( itemNotebook23, ID_UNCONNECTED_LIST, wxDefaultPosition, wxSize(100, 100), wxSUNKEN_BORDER|wxHSCROLL|wxVSCROLL );
|
||||||
if (WinEDA_DrcFrame::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"));
|
||||||
|
|
||||||
itemNotebook24->AddPage(m_UnconnectedListBox, _("Unconnected"));
|
itemNotebook23->AddPage(m_UnconnectedListBox, _("Unconnected"));
|
||||||
|
|
||||||
#if !wxCHECK_VERSION(2,5,2)
|
#if !wxCHECK_VERSION(2,5,2)
|
||||||
m_MainSizer->Add(itemNotebook24Sizer, 5, wxGROW|wxALL, 5);
|
m_MainSizer->Add(itemNotebook23Sizer, 5, wxGROW|wxALL, 5);
|
||||||
#else
|
#else
|
||||||
m_MainSizer->Add(itemNotebook24, 5, wxGROW|wxALL, 5);
|
m_MainSizer->Add(itemNotebook23, 5, wxGROW|wxALL, 5);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
StdDialogButtonSizer = new wxStdDialogButtonSizer;
|
StdDialogButtonSizer = new wxStdDialogButtonSizer;
|
||||||
|
|
||||||
m_MainSizer->Add(StdDialogButtonSizer, 0, wxGROW|wxALL, 10);
|
m_MainSizer->Add(StdDialogButtonSizer, 0, wxGROW|wxALL, 10);
|
||||||
wxButton* itemButton28 = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
|
wxButton* itemButton27 = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
itemButton28->SetForegroundColour(wxColour(0, 0, 255));
|
itemButton27->SetForegroundColour(wxColour(0, 0, 255));
|
||||||
StdDialogButtonSizer->AddButton(itemButton28);
|
StdDialogButtonSizer->AddButton(itemButton27);
|
||||||
|
|
||||||
wxButton* itemButton29 = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
|
wxButton* itemButton28 = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
itemButton29->SetDefault();
|
itemButton28->SetDefault();
|
||||||
StdDialogButtonSizer->AddButton(itemButton29);
|
StdDialogButtonSizer->AddButton(itemButton28);
|
||||||
|
|
||||||
StdDialogButtonSizer->Realize();
|
StdDialogButtonSizer->Realize();
|
||||||
|
|
||||||
// Set validators
|
|
||||||
m_CreateRptCtrl->SetValidator( wxGenericValidator(& s_CreateRptFileOpt) );
|
|
||||||
m_Pad2PadTestCtrl->SetValidator( wxGenericValidator(& s_Pad2PadTestOpt) );
|
|
||||||
m_UnconnectedTestCtrl->SetValidator( wxGenericValidator(& s_UnconnectedTestOpt) );
|
|
||||||
m_ZonesTestCtrl->SetValidator( wxGenericValidator(& s_ZonesTestOpt) );
|
|
||||||
// Connect events and objects
|
// Connect events and objects
|
||||||
m_ClearanceListBox->Connect(ID_CLEARANCE_LIST, wxEVT_LEFT_DCLICK, wxMouseEventHandler(WinEDA_DrcFrame::OnLeftDClickClearance), NULL, this);
|
itemDialog1->Connect(ID_DIALOG, wxEVT_DESTROY, wxWindowDestroyEventHandler(DrcDialog::OnDestroy), NULL, this);
|
||||||
m_ClearanceListBox->Connect(ID_CLEARANCE_LIST, wxEVT_RIGHT_UP, wxMouseEventHandler(WinEDA_DrcFrame::OnRightUpClearance), NULL, this);
|
m_ClearanceListBox->Connect(ID_CLEARANCE_LIST, wxEVT_LEFT_DCLICK, wxMouseEventHandler(DrcDialog::OnLeftDClickClearance), NULL, this);
|
||||||
m_UnconnectedListBox->Connect(ID_UNCONNECTED_LIST, wxEVT_LEFT_DCLICK, wxMouseEventHandler(WinEDA_DrcFrame::OnLeftDClickUnconnected), NULL, this);
|
m_ClearanceListBox->Connect(ID_CLEARANCE_LIST, wxEVT_RIGHT_UP, wxMouseEventHandler(DrcDialog::OnRightUpClearance), NULL, this);
|
||||||
m_UnconnectedListBox->Connect(ID_UNCONNECTED_LIST, wxEVT_RIGHT_UP, wxMouseEventHandler(WinEDA_DrcFrame::OnRightUpUnconnected), NULL, this);
|
m_UnconnectedListBox->Connect(ID_UNCONNECTED_LIST, wxEVT_LEFT_DCLICK, wxMouseEventHandler(DrcDialog::OnLeftDClickUnconnected), NULL, this);
|
||||||
////@end WinEDA_DrcFrame content construction
|
m_UnconnectedListBox->Connect(ID_UNCONNECTED_LIST, wxEVT_RIGHT_UP, wxMouseEventHandler(DrcDialog::OnRightUpUnconnected), NULL, this);
|
||||||
|
////@end DrcDialog content construction
|
||||||
|
|
||||||
|
// @todo this is expanding the Clearance text, so we need to recalc sizers.
|
||||||
|
AddUnitSymbol(*m_ClearenceTitle);
|
||||||
|
|
||||||
|
Layout(); // adding the units above expanded Clearance text, now resize.
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Should we show tooltips?
|
* Should we show tooltips?
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool WinEDA_DrcFrame::ShowToolTips()
|
bool DrcDialog::ShowToolTips()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -403,34 +402,34 @@ bool WinEDA_DrcFrame::ShowToolTips()
|
||||||
* Get bitmap resources
|
* Get bitmap resources
|
||||||
*/
|
*/
|
||||||
|
|
||||||
wxBitmap WinEDA_DrcFrame::GetBitmapResource( const wxString& name )
|
wxBitmap DrcDialog::GetBitmapResource( const wxString& name )
|
||||||
{
|
{
|
||||||
// Bitmap retrieval
|
// Bitmap retrieval
|
||||||
////@begin WinEDA_DrcFrame bitmap retrieval
|
////@begin DrcDialog bitmap retrieval
|
||||||
wxUnusedVar(name);
|
wxUnusedVar(name);
|
||||||
return wxNullBitmap;
|
return wxNullBitmap;
|
||||||
////@end WinEDA_DrcFrame bitmap retrieval
|
////@end DrcDialog bitmap retrieval
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Get icon resources
|
* Get icon resources
|
||||||
*/
|
*/
|
||||||
|
|
||||||
wxIcon WinEDA_DrcFrame::GetIconResource( const wxString& name )
|
wxIcon DrcDialog::GetIconResource( const wxString& name )
|
||||||
{
|
{
|
||||||
// Icon retrieval
|
// Icon retrieval
|
||||||
////@begin WinEDA_DrcFrame icon retrieval
|
////@begin DrcDialog icon retrieval
|
||||||
wxUnusedVar(name);
|
wxUnusedVar(name);
|
||||||
return wxNullIcon;
|
return wxNullIcon;
|
||||||
////@end WinEDA_DrcFrame 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 WinEDA_DrcFrame::OnStartdrcClick( wxCommandEvent& event )
|
void DrcDialog::OnStartdrcClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
TestDrc(event);
|
CmdDrc();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -438,7 +437,7 @@ void WinEDA_DrcFrame::OnStartdrcClick( wxCommandEvent& event )
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
void WinEDA_DrcFrame::OnStopControlDrcClick( wxCommandEvent& event )
|
void DrcDialog::OnStopControlDrcClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
if( DrcInProgress )
|
if( DrcInProgress )
|
||||||
AbortDrc = TRUE;
|
AbortDrc = TRUE;
|
||||||
|
@ -451,7 +450,7 @@ void WinEDA_DrcFrame::OnStopControlDrcClick( wxCommandEvent& event )
|
||||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_ERASE_DRC_MARKERS
|
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_ERASE_DRC_MARKERS
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void WinEDA_DrcFrame::OnDeleteAllClick( wxCommandEvent& event )
|
void DrcDialog::OnDeleteAllClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
DelDRCMarkers(event);
|
DelDRCMarkers(event);
|
||||||
}
|
}
|
||||||
|
@ -460,7 +459,7 @@ void WinEDA_DrcFrame::OnDeleteAllClick( wxCommandEvent& event )
|
||||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_LIST_UNCONNECTED_PADS
|
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_LIST_UNCONNECTED_PADS
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void WinEDA_DrcFrame::OnListUnconnectedClick( wxCommandEvent& event )
|
void DrcDialog::OnListUnconnectedClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
ListUnconnectedPads(event);
|
ListUnconnectedPads(event);
|
||||||
}
|
}
|
||||||
|
@ -469,7 +468,7 @@ void WinEDA_DrcFrame::OnListUnconnectedClick( wxCommandEvent& event )
|
||||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON_BROWSE_RPT_FILE
|
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON_BROWSE_RPT_FILE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void WinEDA_DrcFrame::OnButtonBrowseRptFileClick( wxCommandEvent& event )
|
void DrcDialog::OnButtonBrowseRptFileClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
wxString FileName;
|
wxString FileName;
|
||||||
wxString Mask(wxT("*"));
|
wxString Mask(wxT("*"));
|
||||||
|
@ -492,7 +491,6 @@ void WinEDA_DrcFrame::OnButtonBrowseRptFileClick( wxCommandEvent& event )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_RptFilenameCtrl->SetValue(FileName);
|
m_RptFilenameCtrl->SetValue(FileName);
|
||||||
s_RptFilename = FileName;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -500,12 +498,8 @@ void WinEDA_DrcFrame::OnButtonBrowseRptFileClick( wxCommandEvent& event )
|
||||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
|
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void WinEDA_DrcFrame::OnOkClick( wxCommandEvent& event )
|
void DrcDialog::OnOkClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
s_Pad2PadTestOpt = m_Pad2PadTestCtrl->IsChecked();
|
|
||||||
s_UnconnectedTestOpt = m_UnconnectedTestCtrl->IsChecked();
|
|
||||||
s_ZonesTestOpt = m_ZonesTestCtrl->IsChecked();
|
|
||||||
s_CreateRptFileOpt = m_CreateRptCtrl->IsChecked();
|
|
||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -514,7 +508,7 @@ void WinEDA_DrcFrame::OnOkClick( wxCommandEvent& event )
|
||||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
|
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void WinEDA_DrcFrame::OnCancelClick( wxCommandEvent& event )
|
void DrcDialog::OnCancelClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL in WinEDA_DrcFrame.
|
////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL in WinEDA_DrcFrame.
|
||||||
// Before editing this code, remove the block markers.
|
// Before editing this code, remove the block markers.
|
||||||
|
@ -527,10 +521,8 @@ void WinEDA_DrcFrame::OnCancelClick( wxCommandEvent& event )
|
||||||
* wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX1
|
* wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void WinEDA_DrcFrame::OnReportCheckBoxClicked( wxCommandEvent& event )
|
void DrcDialog::OnReportCheckBoxClicked( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
// @todo: see if the checkbox is selected, if so, enable the report name field
|
|
||||||
// and browse button, else disable them.
|
|
||||||
if( m_CreateRptCtrl->IsChecked() )
|
if( m_CreateRptCtrl->IsChecked() )
|
||||||
{
|
{
|
||||||
m_RptFilenameCtrl->Enable(true);
|
m_RptFilenameCtrl->Enable(true);
|
||||||
|
@ -549,21 +541,18 @@ void WinEDA_DrcFrame::OnReportCheckBoxClicked( wxCommandEvent& event )
|
||||||
* wxEVT_INIT_DIALOG event handler for ID_DIALOG
|
* wxEVT_INIT_DIALOG event handler for ID_DIALOG
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void WinEDA_DrcFrame::OnInitDialog( wxInitDialogEvent& event )
|
void DrcDialog::OnInitDialog( wxInitDialogEvent& event )
|
||||||
{
|
{
|
||||||
wxCommandEvent junk;
|
wxCommandEvent junk;
|
||||||
|
|
||||||
// Set the initial status of the browse button and the text
|
// Set the initial "enabled" status of the browse button and the text
|
||||||
// field for report name
|
// field for report name
|
||||||
OnReportCheckBoxClicked( junk );
|
OnReportCheckBoxClicked( junk );
|
||||||
|
|
||||||
AddUnitSymbol(*m_ClearenceTitle);
|
|
||||||
m_RptFilenameCtrl->SetValue(s_RptFilename);
|
|
||||||
|
|
||||||
m_SetClearance->SetFocus();
|
m_SetClearance->SetFocus();
|
||||||
|
|
||||||
// deselect the existing text, seems SetFocus() wants to emulate
|
// deselect the existing text, seems SetFocus() wants to emulate
|
||||||
// Microsoft, which is not desireable here.
|
// Microsoft and select all text, which is not desireable here.
|
||||||
m_SetClearance->SetSelection(0,0);
|
m_SetClearance->SetSelection(0,0);
|
||||||
|
|
||||||
event.Skip();
|
event.Skip();
|
||||||
|
@ -574,7 +563,7 @@ void WinEDA_DrcFrame::OnInitDialog( wxInitDialogEvent& event )
|
||||||
* wxEVT_LEFT_DCLICK event handler for ID_CLEARANCE_LIST
|
* wxEVT_LEFT_DCLICK event handler for ID_CLEARANCE_LIST
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void WinEDA_DrcFrame::OnLeftDClickClearance( wxMouseEvent& event )
|
void DrcDialog::OnLeftDClickClearance( wxMouseEvent& event )
|
||||||
{
|
{
|
||||||
int selection = m_ClearanceListBox->GetSelection();
|
int selection = m_ClearanceListBox->GetSelection();
|
||||||
|
|
||||||
|
@ -595,7 +584,7 @@ void WinEDA_DrcFrame::OnLeftDClickClearance( wxMouseEvent& event )
|
||||||
* wxEVT_RIGHT_UP event handler for ID_CLEARANCE_LIST
|
* wxEVT_RIGHT_UP event handler for ID_CLEARANCE_LIST
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void WinEDA_DrcFrame::OnRightUpUnconnected( wxMouseEvent& event )
|
void DrcDialog::OnRightUpUnconnected( wxMouseEvent& event )
|
||||||
{
|
{
|
||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
@ -605,7 +594,7 @@ void WinEDA_DrcFrame::OnRightUpUnconnected( wxMouseEvent& event )
|
||||||
* wxEVT_RIGHT_UP event handler for ID_CLEARANCE_LIST
|
* wxEVT_RIGHT_UP event handler for ID_CLEARANCE_LIST
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void WinEDA_DrcFrame::OnRightUpClearance( wxMouseEvent& event )
|
void DrcDialog::OnRightUpClearance( wxMouseEvent& event )
|
||||||
{
|
{
|
||||||
////@begin wxEVT_RIGHT_UP event handler for ID_CLEARANCE_LIST in WinEDA_DrcFrame.
|
////@begin wxEVT_RIGHT_UP event handler for ID_CLEARANCE_LIST in WinEDA_DrcFrame.
|
||||||
// Before editing this code, remove the block markers.
|
// Before editing this code, remove the block markers.
|
||||||
|
@ -618,7 +607,7 @@ void WinEDA_DrcFrame::OnRightUpClearance( wxMouseEvent& event )
|
||||||
* wxEVT_LEFT_DCLICK event handler for ID_UNCONNECTED_LIST
|
* wxEVT_LEFT_DCLICK event handler for ID_UNCONNECTED_LIST
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void WinEDA_DrcFrame::OnLeftDClickUnconnected( wxMouseEvent& event )
|
void DrcDialog::OnLeftDClickUnconnected( wxMouseEvent& event )
|
||||||
{
|
{
|
||||||
int selection = m_UnconnectedListBox->GetSelection();
|
int selection = m_UnconnectedListBox->GetSelection();
|
||||||
|
|
||||||
|
@ -631,7 +620,7 @@ void WinEDA_DrcFrame::OnLeftDClickUnconnected( wxMouseEvent& event )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void WinEDA_DrcFrame::OnMarkerSelectionEvent( wxCommandEvent& event )
|
void DrcDialog::OnMarkerSelectionEvent( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
int selection = event.GetSelection();
|
int selection = event.GetSelection();
|
||||||
|
|
||||||
|
@ -645,7 +634,7 @@ void WinEDA_DrcFrame::OnMarkerSelectionEvent( wxCommandEvent& event )
|
||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WinEDA_DrcFrame::OnUnconnectedSelectionEvent( wxCommandEvent& event )
|
void DrcDialog::OnUnconnectedSelectionEvent( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
int selection = event.GetSelection();
|
int selection = event.GetSelection();
|
||||||
|
|
||||||
|
@ -657,3 +646,16 @@ void WinEDA_DrcFrame::OnUnconnectedSelectionEvent( wxCommandEvent& event )
|
||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* wxEVT_DESTROY event handler for ID_DIALOG
|
||||||
|
*/
|
||||||
|
|
||||||
|
void DrcDialog::OnDestroy( wxWindowDestroyEvent& event )
|
||||||
|
{
|
||||||
|
////@begin wxEVT_DESTROY event handler for ID_DIALOG in WinEDA_DrcFrame.
|
||||||
|
// Before editing this code, remove the block markers.
|
||||||
|
event.Skip();
|
||||||
|
////@end wxEVT_DESTROY event handler for ID_DIALOG in WinEDA_DrcFrame.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
////@begin includes
|
////@begin includes
|
||||||
#include "wx/valgen.h"
|
|
||||||
#include "wx/notebook.h"
|
#include "wx/notebook.h"
|
||||||
////@end includes
|
////@end includes
|
||||||
|
|
||||||
|
@ -50,8 +49,8 @@ class wxStdDialogButtonSizer;
|
||||||
#define ID_TEXTCTRL3 10014
|
#define ID_TEXTCTRL3 10014
|
||||||
#define ID_BUTTON_BROWSE_RPT_FILE 10018
|
#define ID_BUTTON_BROWSE_RPT_FILE 10018
|
||||||
#define ID_CHECKBOX2 10019
|
#define ID_CHECKBOX2 10019
|
||||||
#define ID_CHECKBOX3 10020
|
|
||||||
#define ID_CHECKBOX7 10021
|
#define ID_CHECKBOX7 10021
|
||||||
|
#define ID_CHECKBOX3 10011
|
||||||
#define ID_STARTDRC 10006
|
#define ID_STARTDRC 10006
|
||||||
#define ID_LIST_UNCONNECTED 10003
|
#define ID_LIST_UNCONNECTED 10003
|
||||||
#define ID_DELETE_ALL 10005
|
#define ID_DELETE_ALL 10005
|
||||||
|
@ -59,14 +58,14 @@ 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_WINEDA_DRCFRAME_STYLE wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER
|
#define SYMBOL_DRCDIALOG_STYLE wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxMAXIMIZE_BOX|wxMINIMIZE_BOX
|
||||||
#define SYMBOL_WINEDA_DRCFRAME_TITLE _("DRC Control")
|
#define SYMBOL_DRCDIALOG_TITLE _("DRC Control")
|
||||||
#define SYMBOL_WINEDA_DRCFRAME_IDNAME ID_DIALOG
|
#define SYMBOL_DRCDIALOG_IDNAME ID_DIALOG
|
||||||
#define SYMBOL_WINEDA_DRCFRAME_SIZE wxSize(400, 300)
|
#define SYMBOL_DRCDIALOG_SIZE wxSize(400, 300)
|
||||||
#define SYMBOL_WINEDA_DRCFRAME_POSITION wxDefaultPosition
|
#define SYMBOL_DRCDIALOG_POSITION wxDefaultPosition
|
||||||
////@end control identifiers
|
////@end control identifiers
|
||||||
|
|
||||||
#define ID_DRCLISTCTRL 10001 // outside @end control identifiers since DialogBlocks knows not DRCLISTBOX
|
#define ID_DRCLISTCTRL 14000 // outside @end control identifiers since DialogBlocks knows not DRCLISTBOX
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Compatibility
|
* Compatibility
|
||||||
|
@ -77,35 +76,38 @@ class wxStdDialogButtonSizer;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* WinEDA_DrcFrame class declaration
|
* DrcDialog class declaration
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class WinEDA_DrcFrame: public wxDialog
|
class DrcDialog: public wxDialog
|
||||||
{
|
{
|
||||||
DECLARE_DYNAMIC_CLASS( WinEDA_DrcFrame )
|
DECLARE_DYNAMIC_CLASS( DrcDialog )
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/// Constructors
|
/// Constructors
|
||||||
WinEDA_DrcFrame( );
|
DrcDialog( );
|
||||||
WinEDA_DrcFrame( DRC_TESTER* aDrc_tester, WinEDA_PcbFrame* parent, wxDC * panelDC,
|
DrcDialog( DRC* aTester, WinEDA_PcbFrame* parent,
|
||||||
wxWindowID id = SYMBOL_WINEDA_DRCFRAME_IDNAME,
|
wxWindowID id = SYMBOL_DRCDIALOG_IDNAME,
|
||||||
const wxString& caption = SYMBOL_WINEDA_DRCFRAME_TITLE,
|
const wxString& caption = SYMBOL_DRCDIALOG_TITLE,
|
||||||
const wxPoint& pos = SYMBOL_WINEDA_DRCFRAME_POSITION,
|
const wxPoint& pos = SYMBOL_DRCDIALOG_POSITION,
|
||||||
const wxSize& size = SYMBOL_WINEDA_DRCFRAME_SIZE,
|
const wxSize& size = SYMBOL_DRCDIALOG_SIZE,
|
||||||
long style = SYMBOL_WINEDA_DRCFRAME_STYLE );
|
long style = SYMBOL_DRCDIALOG_STYLE );
|
||||||
|
|
||||||
/// Creation
|
/// Creation
|
||||||
bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WINEDA_DRCFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_DRCFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_DRCFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_DRCFRAME_SIZE, long style = SYMBOL_WINEDA_DRCFRAME_STYLE );
|
bool Create( wxWindow* parent, wxWindowID id = SYMBOL_DRCDIALOG_IDNAME, const wxString& caption = SYMBOL_DRCDIALOG_TITLE, const wxPoint& pos = SYMBOL_DRCDIALOG_POSITION, const wxSize& size = SYMBOL_DRCDIALOG_SIZE, long style = SYMBOL_DRCDIALOG_STYLE );
|
||||||
|
|
||||||
/// Creates the controls and sizers
|
/// Creates the controls and sizers
|
||||||
void CreateControls();
|
void CreateControls();
|
||||||
|
|
||||||
////@begin WinEDA_DrcFrame event handler declarations
|
////@begin DrcDialog event handler declarations
|
||||||
|
|
||||||
/// 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 );
|
||||||
|
|
||||||
|
@ -139,16 +141,16 @@ public:
|
||||||
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
|
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
|
||||||
void OnOkClick( wxCommandEvent& event );
|
void OnOkClick( wxCommandEvent& event );
|
||||||
|
|
||||||
////@end WinEDA_DrcFrame event handler declarations
|
////@end DrcDialog event handler declarations
|
||||||
|
|
||||||
////@begin WinEDA_DrcFrame member function declarations
|
////@begin DrcDialog member function declarations
|
||||||
|
|
||||||
/// Retrieves bitmap resources
|
/// Retrieves bitmap resources
|
||||||
wxBitmap GetBitmapResource( const wxString& name );
|
wxBitmap GetBitmapResource( const wxString& name );
|
||||||
|
|
||||||
/// Retrieves icon resources
|
/// Retrieves icon resources
|
||||||
wxIcon GetIconResource( const wxString& name );
|
wxIcon GetIconResource( const wxString& name );
|
||||||
////@end WinEDA_DrcFrame member function declarations
|
////@end DrcDialog member function declarations
|
||||||
|
|
||||||
void OnMarkerSelectionEvent( wxCommandEvent& event );
|
void OnMarkerSelectionEvent( wxCommandEvent& event );
|
||||||
void OnUnconnectedSelectionEvent( wxCommandEvent& event );
|
void OnUnconnectedSelectionEvent( wxCommandEvent& event );
|
||||||
|
@ -156,11 +158,11 @@ public:
|
||||||
/// Should we show tooltips?
|
/// Should we show tooltips?
|
||||||
static bool ShowToolTips();
|
static bool ShowToolTips();
|
||||||
|
|
||||||
void TestDrc(wxCommandEvent & event);
|
void CmdDrc();
|
||||||
void DelDRCMarkers(wxCommandEvent & event);
|
void DelDRCMarkers(wxCommandEvent & event);
|
||||||
void ListUnconnectedPads(wxCommandEvent & event);
|
void ListUnconnectedPads(wxCommandEvent & event);
|
||||||
|
|
||||||
////@begin WinEDA_DrcFrame member variables
|
////@begin DrcDialog member variables
|
||||||
wxBoxSizer* m_MainSizer;
|
wxBoxSizer* m_MainSizer;
|
||||||
wxBoxSizer* m_CommandSizer;
|
wxBoxSizer* m_CommandSizer;
|
||||||
wxStaticText* m_ClearenceTitle;
|
wxStaticText* m_ClearenceTitle;
|
||||||
|
@ -169,18 +171,18 @@ public:
|
||||||
wxTextCtrl* m_RptFilenameCtrl;
|
wxTextCtrl* m_RptFilenameCtrl;
|
||||||
wxButton* m_BrowseButton;
|
wxButton* m_BrowseButton;
|
||||||
wxCheckBox* m_Pad2PadTestCtrl;
|
wxCheckBox* m_Pad2PadTestCtrl;
|
||||||
wxCheckBox* m_UnconnectedTestCtrl;
|
|
||||||
wxCheckBox* m_ZonesTestCtrl;
|
wxCheckBox* m_ZonesTestCtrl;
|
||||||
|
wxCheckBox* m_UnconnectedTestCtrl;
|
||||||
|
wxButton* m_DeleteAllButton;
|
||||||
wxButton* m_DeleteCurrentMarkerButton;
|
wxButton* m_DeleteCurrentMarkerButton;
|
||||||
DRCLISTBOX* m_ClearanceListBox;
|
DRCLISTBOX* m_ClearanceListBox;
|
||||||
DRCLISTBOX* m_UnconnectedListBox;
|
DRCLISTBOX* m_UnconnectedListBox;
|
||||||
wxStdDialogButtonSizer* StdDialogButtonSizer;
|
wxStdDialogButtonSizer* StdDialogButtonSizer;
|
||||||
////@end WinEDA_DrcFrame member variables
|
////@end DrcDialog member variables
|
||||||
|
|
||||||
|
|
||||||
DRC_TESTER* m_Tester;
|
DRC* m_tester;
|
||||||
WinEDA_PcbFrame* m_Parent;
|
WinEDA_PcbFrame* m_Parent;
|
||||||
wxDC* m_DC;
|
|
||||||
int m_UnconnectedCount;
|
int m_UnconnectedCount;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -218,10 +218,11 @@
|
||||||
<string name="id-suffix">""</string>
|
<string name="id-suffix">""</string>
|
||||||
<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||WinEDA_DrcFrame"</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">"WinEDA_DrcFrame"</string>
|
<string name="proxy-Class">"DrcDialog"</string>
|
||||||
<string name="proxy-Base class">"wxDialog"</string>
|
<string name="proxy-Base class">"wxDialog"</string>
|
||||||
<string name="proxy-Window kind">"wxDialog"</string>
|
<string name="proxy-Window kind">"wxDialog"</string>
|
||||||
<string name="proxy-Implementation filename">"dialog_drc.cpp"</string>
|
<string name="proxy-Implementation filename">"dialog_drc.cpp"</string>
|
||||||
|
@ -253,8 +254,8 @@
|
||||||
<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">0</bool>
|
||||||
<bool name="proxy-wxMAXIMIZE_BOX">0</bool>
|
<bool name="proxy-wxMAXIMIZE_BOX">1</bool>
|
||||||
<bool name="proxy-wxMINIMIZE_BOX">0</bool>
|
<bool name="proxy-wxMINIMIZE_BOX">1</bool>
|
||||||
<bool name="proxy-wxDIALOG_MODAL">0</bool>
|
<bool name="proxy-wxDIALOG_MODAL">0</bool>
|
||||||
<bool name="proxy-wxNO_BORDER">0</bool>
|
<bool name="proxy-wxNO_BORDER">0</bool>
|
||||||
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
|
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
|
||||||
|
@ -344,7 +345,7 @@
|
||||||
<string name="proxy-Orientation">"Horizontal"</string>
|
<string name="proxy-Orientation">"Horizontal"</string>
|
||||||
<string name="proxy-AlignH">"Expand"</string>
|
<string name="proxy-AlignH">"Expand"</string>
|
||||||
<string name="proxy-AlignV">"Expand"</string>
|
<string name="proxy-AlignV">"Expand"</string>
|
||||||
<long name="proxy-Stretch factor">20</long>
|
<long name="proxy-Stretch factor">3</long>
|
||||||
<long name="proxy-Border">8</long>
|
<long name="proxy-Border">8</long>
|
||||||
<bool name="proxy-wxLEFT">0</bool>
|
<bool name="proxy-wxLEFT">0</bool>
|
||||||
<bool name="proxy-wxRIGHT">0</bool>
|
<bool name="proxy-wxRIGHT">0</bool>
|
||||||
|
@ -474,32 +475,6 @@
|
||||||
<string name="proxy-Custom arguments">""</string>
|
<string name="proxy-Custom arguments">""</string>
|
||||||
<string name="proxy-Custom ctor arguments">""</string>
|
<string name="proxy-Custom ctor arguments">""</string>
|
||||||
</document>
|
</document>
|
||||||
<document>
|
|
||||||
<string name="title">"Spacer"</string>
|
|
||||||
<string name="type">"dialog-control-document"</string>
|
|
||||||
<string name="filename">""</string>
|
|
||||||
<string name="icon-name">"spacer"</string>
|
|
||||||
<long name="is-transient">0</long>
|
|
||||||
<long name="owns-file">1</long>
|
|
||||||
<long name="title-mode">0</long>
|
|
||||||
<long name="locked">0</long>
|
|
||||||
<string name="created">"26/11/2007"</string>
|
|
||||||
<string name="proxy-type">"wbSpacerProxy"</string>
|
|
||||||
<long name="proxy-Width">5</long>
|
|
||||||
<long name="proxy-Height">5</long>
|
|
||||||
<string name="proxy-AlignH">"Centre"</string>
|
|
||||||
<string name="proxy-AlignV">"Centre"</string>
|
|
||||||
<long name="proxy-Stretch factor">0</long>
|
|
||||||
<long name="proxy-Border">10</long>
|
|
||||||
<bool name="proxy-wxLEFT">1</bool>
|
|
||||||
<bool name="proxy-wxRIGHT">1</bool>
|
|
||||||
<bool name="proxy-wxTOP">0</bool>
|
|
||||||
<bool name="proxy-wxBOTTOM">0</bool>
|
|
||||||
<bool name="proxy-wxSHAPED">0</bool>
|
|
||||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
|
||||||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
|
||||||
<string name="proxy-Platform">"<Any platform>"</string>
|
|
||||||
</document>
|
|
||||||
<document>
|
<document>
|
||||||
<string name="title">"wxTextCtrl: ID_TEXTCTRL1"</string>
|
<string name="title">"wxTextCtrl: ID_TEXTCTRL1"</string>
|
||||||
<string name="type">"dialog-control-document"</string>
|
<string name="type">"dialog-control-document"</string>
|
||||||
|
@ -628,13 +603,13 @@
|
||||||
<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">"wbCheckBoxProxy"</string>
|
<string name="proxy-type">"wbCheckBoxProxy"</string>
|
||||||
<string name="event-handler-0">"wxEVT_COMMAND_CHECKBOX_CLICKED|OnReportCheckBoxClicked|NONE||WinEDA_DrcFrame"</string>
|
<string name="event-handler-0">"wxEVT_COMMAND_CHECKBOX_CLICKED|OnReportCheckBoxClicked|NONE||DrcDialog"</string>
|
||||||
<string name="proxy-Id name">"ID_CHECKBOX"</string>
|
<string name="proxy-Id name">"ID_CHECKBOX"</string>
|
||||||
<long name="proxy-Id value">10004</long>
|
<long name="proxy-Id value">10004</long>
|
||||||
<string name="proxy-Name">""</string>
|
<string name="proxy-Name">""</string>
|
||||||
<string name="proxy-Class">"wxCheckBox"</string>
|
<string name="proxy-Class">"wxCheckBox"</string>
|
||||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||||
<bool name="proxy-External implementation">1</bool>
|
<bool name="proxy-External implementation">0</bool>
|
||||||
<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>
|
||||||
|
@ -643,8 +618,8 @@
|
||||||
<bool name="proxy-Initial value">0</bool>
|
<bool name="proxy-Initial value">0</bool>
|
||||||
<string name="proxy-Help text">""</string>
|
<string name="proxy-Help text">""</string>
|
||||||
<string name="proxy-Tooltip text">"Enable writing report to this file"</string>
|
<string name="proxy-Tooltip text">"Enable writing report to this file"</string>
|
||||||
<string name="proxy-Data variable">"s_CreateRptFileOpt"</string>
|
<string name="proxy-Data variable">""</string>
|
||||||
<string name="proxy-Data validator">"wxGenericValidator(& %VARIABLE%)"</string>
|
<string name="proxy-Data validator">""</string>
|
||||||
<string name="proxy-Data source">""</string>
|
<string name="proxy-Data source">""</string>
|
||||||
<string name="proxy-Data class name">""</string>
|
<string name="proxy-Data class name">""</string>
|
||||||
<string name="proxy-Data class implementation filename">""</string>
|
<string name="proxy-Data class implementation filename">""</string>
|
||||||
|
@ -775,7 +750,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|OnButtonBrowseRptFileClick|NONE||WinEDA_DrcFrame"</string>
|
<string name="event-handler-0">"wxEVT_COMMAND_BUTTON_CLICKED|OnButtonBrowseRptFileClick|NONE||DrcDialog"</string>
|
||||||
<string name="proxy-Id name">"ID_BUTTON_BROWSE_RPT_FILE"</string>
|
<string name="proxy-Id name">"ID_BUTTON_BROWSE_RPT_FILE"</string>
|
||||||
<long name="proxy-Id value">10018</long>
|
<long name="proxy-Id value">10018</long>
|
||||||
<string name="proxy-Name">""</string>
|
<string name="proxy-Name">""</string>
|
||||||
|
@ -888,76 +863,12 @@
|
||||||
<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">"m_Pad2PadTestCtrl"</string>
|
<string name="proxy-Member variable name">"m_Pad2PadTestCtrl"</string>
|
||||||
<string name="proxy-Label">"Clearances"</string>
|
<string name="proxy-Label">"Pad to pad"</string>
|
||||||
<bool name="proxy-Initial value">0</bool>
|
<bool name="proxy-Initial value">0</bool>
|
||||||
<string name="proxy-Help text">""</string>
|
<string name="proxy-Help text">""</string>
|
||||||
<string name="proxy-Tooltip text">"Test pad to pad, pad to track, and track to track clearances"</string>
|
<string name="proxy-Tooltip text">"Include tests for clearances between pad to pads"</string>
|
||||||
<string name="proxy-Data variable">"s_Pad2PadTestOpt"</string>
|
<string name="proxy-Data variable">""</string>
|
||||||
<string name="proxy-Data validator">"wxGenericValidator(& %VARIABLE%)"</string>
|
<string name="proxy-Data validator">""</string>
|
||||||
<string name="proxy-Data source">""</string>
|
|
||||||
<string name="proxy-Data class name">""</string>
|
|
||||||
<string name="proxy-Data class implementation filename">""</string>
|
|
||||||
<string name="proxy-Data class header filename">""</string>
|
|
||||||
<string name="proxy-Data class manager window">""</string>
|
|
||||||
<string name="proxy-Background colour">""</string>
|
|
||||||
<string name="proxy-Foreground colour">""</string>
|
|
||||||
<string name="proxy-Font">""</string>
|
|
||||||
<bool name="proxy-Hidden">0</bool>
|
|
||||||
<bool name="proxy-Enabled">1</bool>
|
|
||||||
<string name="proxy-Platform">"<Any platform>"</string>
|
|
||||||
<bool name="proxy-wxALIGN_RIGHT">0</bool>
|
|
||||||
<bool name="proxy-wxCHK_2STATE">0</bool>
|
|
||||||
<bool name="proxy-wxCHK_3STATE">0</bool>
|
|
||||||
<bool name="proxy-wxCHK_ALLOW_3RD_STATE_FOR_USER">0</bool>
|
|
||||||
<bool name="proxy-wxWANTS_CHARS">0</bool>
|
|
||||||
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
|
|
||||||
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
|
|
||||||
<string name="proxy-Custom styles">""</string>
|
|
||||||
<long name="proxy-X">-1</long>
|
|
||||||
<long name="proxy-Y">-1</long>
|
|
||||||
<long name="proxy-Width">-1</long>
|
|
||||||
<long name="proxy-Height">-1</long>
|
|
||||||
<string name="proxy-AlignH">"Expand"</string>
|
|
||||||
<string name="proxy-AlignV">"Centre"</string>
|
|
||||||
<long name="proxy-Stretch factor">0</long>
|
|
||||||
<long name="proxy-Border">5</long>
|
|
||||||
<bool name="proxy-wxLEFT">1</bool>
|
|
||||||
<bool name="proxy-wxRIGHT">1</bool>
|
|
||||||
<bool name="proxy-wxTOP">1</bool>
|
|
||||||
<bool name="proxy-wxBOTTOM">1</bool>
|
|
||||||
<bool name="proxy-wxSHAPED">0</bool>
|
|
||||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
|
||||||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
|
||||||
<string name="proxy-Custom arguments">""</string>
|
|
||||||
<string name="proxy-Custom ctor arguments">""</string>
|
|
||||||
</document>
|
|
||||||
<document>
|
|
||||||
<string name="title">"wxCheckBox: ID_CHECKBOX3"</string>
|
|
||||||
<string name="type">"dialog-control-document"</string>
|
|
||||||
<string name="filename">""</string>
|
|
||||||
<string name="icon-name">"checkbox"</string>
|
|
||||||
<long name="is-transient">0</long>
|
|
||||||
<long name="owns-file">1</long>
|
|
||||||
<long name="title-mode">0</long>
|
|
||||||
<long name="locked">0</long>
|
|
||||||
<string name="created">"25/11/2007"</string>
|
|
||||||
<string name="proxy-type">"wbCheckBoxProxy"</string>
|
|
||||||
<string name="proxy-Id name">"ID_CHECKBOX3"</string>
|
|
||||||
<long name="proxy-Id value">10020</long>
|
|
||||||
<string name="proxy-Name">""</string>
|
|
||||||
<string name="proxy-Class">"wxCheckBox"</string>
|
|
||||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
|
||||||
<bool name="proxy-External implementation">1</bool>
|
|
||||||
<bool name="proxy-Separate files">0</bool>
|
|
||||||
<string name="proxy-Implementation filename">""</string>
|
|
||||||
<string name="proxy-Header filename">""</string>
|
|
||||||
<string name="proxy-Member variable name">"m_UnconnectedTestCtrl"</string>
|
|
||||||
<string name="proxy-Label">"Unconnected"</string>
|
|
||||||
<bool name="proxy-Initial value">0</bool>
|
|
||||||
<string name="proxy-Help text">""</string>
|
|
||||||
<string name="proxy-Tooltip text">"Find unconnected pads and tracks"</string>
|
|
||||||
<string name="proxy-Data variable">"s_UnconnectedTestOpt"</string>
|
|
||||||
<string name="proxy-Data validator">"wxGenericValidator(& %VARIABLE%)"</string>
|
|
||||||
<string name="proxy-Data source">""</string>
|
<string name="proxy-Data source">""</string>
|
||||||
<string name="proxy-Data class name">""</string>
|
<string name="proxy-Data class name">""</string>
|
||||||
<string name="proxy-Data class implementation filename">""</string>
|
<string name="proxy-Data class implementation filename">""</string>
|
||||||
|
@ -1020,8 +931,72 @@
|
||||||
<bool name="proxy-Initial value">0</bool>
|
<bool name="proxy-Initial value">0</bool>
|
||||||
<string name="proxy-Help text">""</string>
|
<string name="proxy-Help text">""</string>
|
||||||
<string name="proxy-Tooltip text">"Include zones in clearance or unconnected tests"</string>
|
<string name="proxy-Tooltip text">"Include zones in clearance or unconnected tests"</string>
|
||||||
<string name="proxy-Data variable">"s_ZonesTestOpt"</string>
|
<string name="proxy-Data variable">""</string>
|
||||||
<string name="proxy-Data validator">"wxGenericValidator(& %VARIABLE%)"</string>
|
<string name="proxy-Data validator">""</string>
|
||||||
|
<string name="proxy-Data source">""</string>
|
||||||
|
<string name="proxy-Data class name">""</string>
|
||||||
|
<string name="proxy-Data class implementation filename">""</string>
|
||||||
|
<string name="proxy-Data class header filename">""</string>
|
||||||
|
<string name="proxy-Data class manager window">""</string>
|
||||||
|
<string name="proxy-Background colour">""</string>
|
||||||
|
<string name="proxy-Foreground colour">""</string>
|
||||||
|
<string name="proxy-Font">""</string>
|
||||||
|
<bool name="proxy-Hidden">0</bool>
|
||||||
|
<bool name="proxy-Enabled">1</bool>
|
||||||
|
<string name="proxy-Platform">"<Any platform>"</string>
|
||||||
|
<bool name="proxy-wxALIGN_RIGHT">0</bool>
|
||||||
|
<bool name="proxy-wxCHK_2STATE">0</bool>
|
||||||
|
<bool name="proxy-wxCHK_3STATE">0</bool>
|
||||||
|
<bool name="proxy-wxCHK_ALLOW_3RD_STATE_FOR_USER">0</bool>
|
||||||
|
<bool name="proxy-wxWANTS_CHARS">0</bool>
|
||||||
|
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
|
||||||
|
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
|
||||||
|
<string name="proxy-Custom styles">""</string>
|
||||||
|
<long name="proxy-X">-1</long>
|
||||||
|
<long name="proxy-Y">-1</long>
|
||||||
|
<long name="proxy-Width">-1</long>
|
||||||
|
<long name="proxy-Height">-1</long>
|
||||||
|
<string name="proxy-AlignH">"Expand"</string>
|
||||||
|
<string name="proxy-AlignV">"Centre"</string>
|
||||||
|
<long name="proxy-Stretch factor">0</long>
|
||||||
|
<long name="proxy-Border">5</long>
|
||||||
|
<bool name="proxy-wxLEFT">1</bool>
|
||||||
|
<bool name="proxy-wxRIGHT">1</bool>
|
||||||
|
<bool name="proxy-wxTOP">1</bool>
|
||||||
|
<bool name="proxy-wxBOTTOM">1</bool>
|
||||||
|
<bool name="proxy-wxSHAPED">0</bool>
|
||||||
|
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||||
|
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||||
|
<string name="proxy-Custom arguments">""</string>
|
||||||
|
<string name="proxy-Custom ctor arguments">""</string>
|
||||||
|
</document>
|
||||||
|
<document>
|
||||||
|
<string name="title">"wxCheckBox: ID_CHECKBOX3"</string>
|
||||||
|
<string name="type">"dialog-control-document"</string>
|
||||||
|
<string name="filename">""</string>
|
||||||
|
<string name="icon-name">"checkbox"</string>
|
||||||
|
<long name="is-transient">0</long>
|
||||||
|
<long name="owns-file">1</long>
|
||||||
|
<long name="title-mode">0</long>
|
||||||
|
<long name="locked">0</long>
|
||||||
|
<string name="created">"30/11/2007"</string>
|
||||||
|
<string name="proxy-type">"wbCheckBoxProxy"</string>
|
||||||
|
<string name="proxy-Id name">"ID_CHECKBOX3"</string>
|
||||||
|
<long name="proxy-Id value">10011</long>
|
||||||
|
<string name="proxy-Name">""</string>
|
||||||
|
<string name="proxy-Class">"wxCheckBox"</string>
|
||||||
|
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||||
|
<bool name="proxy-External implementation">1</bool>
|
||||||
|
<bool name="proxy-Separate files">0</bool>
|
||||||
|
<string name="proxy-Implementation filename">""</string>
|
||||||
|
<string name="proxy-Header filename">""</string>
|
||||||
|
<string name="proxy-Member variable name">"m_UnconnectedTestCtrl"</string>
|
||||||
|
<string name="proxy-Label">"Unconnected pads"</string>
|
||||||
|
<bool name="proxy-Initial value">0</bool>
|
||||||
|
<string name="proxy-Help text">""</string>
|
||||||
|
<string name="proxy-Tooltip text">"Find unconnected pads"</string>
|
||||||
|
<string name="proxy-Data variable">""</string>
|
||||||
|
<string name="proxy-Data validator">""</string>
|
||||||
<string name="proxy-Data source">""</string>
|
<string name="proxy-Data source">""</string>
|
||||||
<string name="proxy-Data class name">""</string>
|
<string name="proxy-Data class name">""</string>
|
||||||
<string name="proxy-Data class implementation filename">""</string>
|
<string name="proxy-Data class implementation filename">""</string>
|
||||||
|
@ -1097,7 +1072,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|OnStartdrcClick|||WinEDA_DrcFrame"</string>
|
<string name="event-handler-0">"wxEVT_COMMAND_BUTTON_CLICKED|OnStartdrcClick|||DrcDialog"</string>
|
||||||
<string name="proxy-Id name">"ID_STARTDRC"</string>
|
<string name="proxy-Id name">"ID_STARTDRC"</string>
|
||||||
<long name="proxy-Id value">10006</long>
|
<long name="proxy-Id value">10006</long>
|
||||||
<string name="proxy-Name">""</string>
|
<string name="proxy-Name">""</string>
|
||||||
|
@ -1164,7 +1139,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|OnListUnconnectedClick|||WinEDA_DrcFrame"</string>
|
<string name="event-handler-0">"wxEVT_COMMAND_BUTTON_CLICKED|OnListUnconnectedClick|||DrcDialog"</string>
|
||||||
<string name="proxy-Id name">"ID_LIST_UNCONNECTED"</string>
|
<string name="proxy-Id name">"ID_LIST_UNCONNECTED"</string>
|
||||||
<long name="proxy-Id value">10003</long>
|
<long name="proxy-Id value">10003</long>
|
||||||
<string name="proxy-Name">""</string>
|
<string name="proxy-Name">""</string>
|
||||||
|
@ -1231,7 +1206,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|OnDeleteAllClick|||WinEDA_DrcFrame"</string>
|
<string name="event-handler-0">"wxEVT_COMMAND_BUTTON_CLICKED|OnDeleteAllClick|||DrcDialog"</string>
|
||||||
<string name="proxy-Id name">"ID_DELETE_ALL"</string>
|
<string name="proxy-Id name">"ID_DELETE_ALL"</string>
|
||||||
<long name="proxy-Id value">10005</long>
|
<long name="proxy-Id value">10005</long>
|
||||||
<string name="proxy-Name">""</string>
|
<string name="proxy-Name">""</string>
|
||||||
|
@ -1241,7 +1216,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_DeleteAllButton"</string>
|
||||||
<string name="proxy-Label">"Delete All Markers"</string>
|
<string name="proxy-Label">"Delete All Markers"</string>
|
||||||
<bool name="proxy-Default">0</bool>
|
<bool name="proxy-Default">0</bool>
|
||||||
<string name="proxy-Help text">""</string>
|
<string name="proxy-Help text">""</string>
|
||||||
|
@ -1511,8 +1486,8 @@
|
||||||
<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">"wbForeignCtrlProxy"</string>
|
<string name="proxy-type">"wbForeignCtrlProxy"</string>
|
||||||
<string name="event-handler-0">"wxEVT_LEFT_DCLICK|OnLeftDClickClearance|NONE||WinEDA_DrcFrame"</string>
|
<string name="event-handler-0">"wxEVT_LEFT_DCLICK|OnLeftDClickClearance|NONE||DrcDialog"</string>
|
||||||
<string name="event-handler-1">"wxEVT_RIGHT_UP|OnRightUpClearance|NONE||WinEDA_DrcFrame"</string>
|
<string name="event-handler-1">"wxEVT_RIGHT_UP|OnRightUpClearance|NONE||DrcDialog"</string>
|
||||||
<string name="proxy-Id name">"ID_CLEARANCE_LIST"</string>
|
<string name="proxy-Id name">"ID_CLEARANCE_LIST"</string>
|
||||||
<long name="proxy-Id value">10001</long>
|
<long name="proxy-Id value">10001</long>
|
||||||
<string name="proxy-Name">""</string>
|
<string name="proxy-Name">""</string>
|
||||||
|
@ -1585,8 +1560,8 @@
|
||||||
<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">"wbForeignCtrlProxy"</string>
|
<string name="proxy-type">"wbForeignCtrlProxy"</string>
|
||||||
<string name="event-handler-0">"wxEVT_LEFT_DCLICK|OnLeftDClickUnconnected|NONE||WinEDA_DrcFrame"</string>
|
<string name="event-handler-0">"wxEVT_LEFT_DCLICK|OnLeftDClickUnconnected|NONE||DrcDialog"</string>
|
||||||
<string name="event-handler-1">"wxEVT_RIGHT_UP|OnRightUpUnconnected|NONE||WinEDA_DrcFrame"</string>
|
<string name="event-handler-1">"wxEVT_RIGHT_UP|OnRightUpUnconnected|NONE||DrcDialog"</string>
|
||||||
<string name="proxy-Id name">"ID_UNCONNECTED_LIST"</string>
|
<string name="proxy-Id name">"ID_UNCONNECTED_LIST"</string>
|
||||||
<long name="proxy-Id value">10009</long>
|
<long name="proxy-Id value">10009</long>
|
||||||
<string name="proxy-Name">""</string>
|
<string name="proxy-Name">""</string>
|
||||||
|
@ -1692,7 +1667,7 @@
|
||||||
<long name="locked">1</long>
|
<long name="locked">1</long>
|
||||||
<string name="created">"13/11/2007"</string>
|
<string name="created">"13/11/2007"</string>
|
||||||
<string name="proxy-type">"wbButtonProxy"</string>
|
<string name="proxy-type">"wbButtonProxy"</string>
|
||||||
<string name="event-handler-0">"wxEVT_COMMAND_BUTTON_CLICKED|OnCancelClick|NONE||WinEDA_DrcFrame"</string>
|
<string name="event-handler-0">"wxEVT_COMMAND_BUTTON_CLICKED|OnCancelClick|NONE||DrcDialog"</string>
|
||||||
<string name="proxy-Id name">"wxID_CANCEL"</string>
|
<string name="proxy-Id name">"wxID_CANCEL"</string>
|
||||||
<long name="proxy-Id value">5101</long>
|
<long name="proxy-Id value">5101</long>
|
||||||
<string name="proxy-Name">""</string>
|
<string name="proxy-Name">""</string>
|
||||||
|
@ -1759,7 +1734,7 @@
|
||||||
<long name="locked">1</long>
|
<long name="locked">1</long>
|
||||||
<string name="created">"26/11/2007"</string>
|
<string name="created">"26/11/2007"</string>
|
||||||
<string name="proxy-type">"wbButtonProxy"</string>
|
<string name="proxy-type">"wbButtonProxy"</string>
|
||||||
<string name="event-handler-0">"wxEVT_COMMAND_BUTTON_CLICKED|OnOkClick|NONE||WinEDA_DrcFrame"</string>
|
<string name="event-handler-0">"wxEVT_COMMAND_BUTTON_CLICKED|OnOkClick|NONE||DrcDialog"</string>
|
||||||
<string name="proxy-Id name">"wxID_OK"</string>
|
<string name="proxy-Id name">"wxID_OK"</string>
|
||||||
<long name="proxy-Id value">5100</long>
|
<long name="proxy-Id value">5100</long>
|
||||||
<string name="proxy-Name">""</string>
|
<string name="proxy-Name">""</string>
|
||||||
|
|
1932
pcbnew/drc.cpp
1932
pcbnew/drc.cpp
File diff suppressed because it is too large
Load Diff
|
@ -29,9 +29,30 @@
|
||||||
#include "fctsys.h"
|
#include "fctsys.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define OK_DRC 0
|
||||||
|
#define BAD_DRC 1
|
||||||
|
|
||||||
|
|
||||||
/// DRC error codes:
|
/// DRC error codes:
|
||||||
#define DRCE_ 1
|
#define DRCE_ 1
|
||||||
|
#define DRCE_UNCONNECTED_PADS 2
|
||||||
|
#define DRCE_TRACK_NEAR_THROUGH_HOLE 3 ///< thru hole is too close to track
|
||||||
|
#define DRCE_TRACK_NEAR_PAD 4 ///< pad too close to track
|
||||||
|
#define DRCE_TRACK_NEAR_VIA 5 ///< track too close to via
|
||||||
|
#define DRCE_VIA_NEAR_VIA 6 ///< via too close to via
|
||||||
|
#define DRCE_VIA_NEAR_TRACK 7 ///< via too close to track
|
||||||
|
#define DRCE_TRACK_ENDS1 8 ///< @todo say what this problem is
|
||||||
|
#define DRCE_TRACK_ENDS2 9 ///< @todo say what this problem is
|
||||||
|
#define DRCE_TRACK_ENDS3 10 ///< @todo say what this problem is
|
||||||
|
#define DRCE_TRACK_ENDS4 11 ///< @todo say what this problem is
|
||||||
|
#define DRCE_TRACK_UNKNOWN1 12 ///< @todo check source code and change this comment
|
||||||
|
#define DRCE_TRACKS_CROSSING 13 ///< tracks are crossing
|
||||||
|
#define DRCE_ENDS_PROBLEM1 14 ///< track ends are too close
|
||||||
|
#define DRCE_ENDS_PROBLEM2 15 ///< track ends are too close
|
||||||
|
#define DRCE_ENDS_PROBLEM3 16 ///< track ends are too close
|
||||||
|
#define DRCE_ENDS_PROBLEM4 17 ///< track ends are too close
|
||||||
|
#define DRCE_ENDS_PROBLEM5 18 ///< track ends are too close
|
||||||
|
#define DRCE_PAD_NEAR_PAD1 19 ///< pad too close to pad
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -53,13 +74,21 @@ public:
|
||||||
virtual wxString ShowHtml() const = 0;
|
virtual wxString ShowHtml() const = 0;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function ShowText
|
||||||
|
* translates this object into a text string suitable for showing
|
||||||
|
* in the status panel.
|
||||||
|
* @return wxString - the simple non-html text.
|
||||||
|
*/
|
||||||
|
virtual wxString ShowText() const = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function ShowText
|
* Function ShowText
|
||||||
* translates this object into a text string suitable for saving
|
* translates this object into a text string suitable for saving
|
||||||
* to disk in a report.
|
* to disk in a report.
|
||||||
* @return wxString - the simple non-html text.
|
* @return wxString - the simple non-html text.
|
||||||
*/
|
*/
|
||||||
virtual wxString ShowText() const = 0;
|
virtual wxString ShowReport() const = 0;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -94,9 +123,23 @@ protected:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
DRC_ITEM() :
|
||||||
|
m_ErrorCode(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
DRC_ITEM( int aErrorCode, const wxPoint& aIssuePos,
|
DRC_ITEM( int aErrorCode, const wxPoint& aIssuePos,
|
||||||
const wxString& aText, const wxString& bText,
|
const wxString& aText, const wxString& bText,
|
||||||
const wxPoint& aPos, const wxPoint& bPos )
|
const wxPoint& aPos, const wxPoint& bPos )
|
||||||
|
{
|
||||||
|
SetData( aErrorCode, aIssuePos,
|
||||||
|
aText, bText,
|
||||||
|
aPos, bPos );
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetData( int aErrorCode, const wxPoint& aIssuePos,
|
||||||
|
const wxString& aText, const wxString& bText,
|
||||||
|
const wxPoint& aPos, const wxPoint& bPos )
|
||||||
{
|
{
|
||||||
m_ErrorCode = aErrorCode;
|
m_ErrorCode = aErrorCode;
|
||||||
m_Pos = aIssuePos;
|
m_Pos = aIssuePos;
|
||||||
|
@ -106,6 +149,7 @@ public:
|
||||||
m_BPos = bPos;
|
m_BPos = bPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----<Interface REPORT_ISSUE>---------------------------------------
|
//-----<Interface REPORT_ISSUE>---------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -136,6 +180,25 @@ public:
|
||||||
{
|
{
|
||||||
wxString ret;
|
wxString ret;
|
||||||
|
|
||||||
|
ret.Printf( wxT("%s %s: %s AND %s: %s"),
|
||||||
|
GetErrorText().GetData(),
|
||||||
|
ShowCoord( m_APos ).GetData(), m_AText.GetData(),
|
||||||
|
ShowCoord( m_BPos ).GetData(), m_BText.GetData() );
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function ShowText
|
||||||
|
* translates this object into a text string suitable for saving
|
||||||
|
* to disk in a report.
|
||||||
|
* @return wxString - the simple non-html text.
|
||||||
|
*/
|
||||||
|
wxString ShowReport() const
|
||||||
|
{
|
||||||
|
wxString ret;
|
||||||
|
|
||||||
ret.Printf( wxT("%s\n %s: %s\n %s: %s\n"),
|
ret.Printf( wxT("%s\n %s: %s\n %s: %s\n"),
|
||||||
GetErrorText().GetData(),
|
GetErrorText().GetData(),
|
||||||
ShowCoord( m_APos ).GetData(), m_AText.GetData(),
|
ShowCoord( m_APos ).GetData(), m_AText.GetData(),
|
||||||
|
@ -144,9 +207,10 @@ public:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function GetPosition
|
* Function GetPosition
|
||||||
* @return const wxPoint& - the position of this report item within
|
* @return wxPoint& - the position of this report item within
|
||||||
* the drawing.
|
* the drawing.
|
||||||
*/
|
*/
|
||||||
const wxPoint& GetPosition() const
|
const wxPoint& GetPosition() const
|
||||||
|
@ -176,30 +240,32 @@ public:
|
||||||
|
|
||||||
class WinEDA_DrawPanel;
|
class WinEDA_DrawPanel;
|
||||||
class MARKER;
|
class MARKER;
|
||||||
|
class DrcDialog;
|
||||||
|
|
||||||
/// A smart pointer to a DRC_ITEM
|
|
||||||
//typedef OWNER<DRC_ITEM> DRC_ITEM_OWNER;
|
|
||||||
|
|
||||||
/// A list of DRC_ITEM_PTRs
|
|
||||||
typedef std::vector<DRC_ITEM*> DRC_LIST;
|
typedef std::vector<DRC_ITEM*> DRC_LIST;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class DRC_TESTER
|
* Class DRC
|
||||||
* performs all the DRC tests, and can optionally generate a DRC test report
|
* is the Design Rule Checker, and performs all the DRC tests. The output of
|
||||||
* to a disk file. This class is given access to the windows and the BOARD
|
* the checking goes to the BOARD file in the form of two MARKER lists. Those
|
||||||
* that it needs via its constructor or access functions.
|
* two lists are displayable in the drc dialog box. And they can optionally
|
||||||
|
* be sent to a text file on disk.
|
||||||
|
* This class is given access to the windows and the BOARD
|
||||||
|
* that it needs via its constructor or public access functions.
|
||||||
*/
|
*/
|
||||||
class DRC_TESTER
|
class DRC
|
||||||
{
|
{
|
||||||
protected:
|
friend class DrcDialog;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// protected or private functions() are lowercase first character.
|
||||||
|
|
||||||
bool m_doPad2PadTest;
|
bool m_doPad2PadTest;
|
||||||
bool m_doUnconnectedTest;
|
bool m_doUnconnectedTest;
|
||||||
bool m_doZonesTest;
|
bool m_doZonesTest;
|
||||||
bool m_doCreateRptFile;
|
bool m_doCreateRptFile;
|
||||||
|
|
||||||
FILE* m_rptFile;
|
|
||||||
|
|
||||||
wxString m_rptFilename;
|
wxString m_rptFilename;
|
||||||
|
|
||||||
int m_errorCount;
|
int m_errorCount;
|
||||||
|
@ -214,7 +280,7 @@ protected:
|
||||||
int m_finy; // coord relatives de l'extremite du segm de reference
|
int m_finy; // coord relatives de l'extremite du segm de reference
|
||||||
|
|
||||||
int m_segmAngle; // angle d'inclinaison du segment de reference en 0,1 degre
|
int m_segmAngle; // angle d'inclinaison du segment de reference en 0,1 degre
|
||||||
int m_segmLong; // longueur du segment de reference
|
int m_segmLength; // length of the reference segment
|
||||||
|
|
||||||
int m_xcliplo;
|
int m_xcliplo;
|
||||||
int m_ycliplo;
|
int m_ycliplo;
|
||||||
|
@ -223,77 +289,203 @@ protected:
|
||||||
|
|
||||||
int m_unconnectedCount;
|
int m_unconnectedCount;
|
||||||
|
|
||||||
DRC_LIST* m_drcList;
|
WinEDA_PcbFrame* m_mainWindow;
|
||||||
|
|
||||||
WinEDA_DrawPanel* m_drawPanel;
|
WinEDA_DrawPanel* m_drawPanel;
|
||||||
|
BOARD* m_pcb;
|
||||||
|
DrcDialog* m_ui;
|
||||||
|
|
||||||
public:
|
/**
|
||||||
DRC_TESTER()
|
* Function updatePointers
|
||||||
|
* is a private helper function used to update needed pointers from the
|
||||||
|
* one pointer which is known not to change, m_mainWindow.
|
||||||
|
*/
|
||||||
|
void updatePointers()
|
||||||
{
|
{
|
||||||
m_doPad2PadTest = true;
|
// update my pointers, m_mainWindow is the only unchangable one
|
||||||
m_doUnconnectedTest = true;
|
m_drawPanel = m_mainWindow->DrawPanel;
|
||||||
m_doZonesTest = false;
|
m_pcb = m_mainWindow->m_Pcb;
|
||||||
m_doCreateRptFile = false;
|
|
||||||
|
|
||||||
m_rptFile = 0;
|
|
||||||
|
|
||||||
m_errorCount = 0;
|
|
||||||
|
|
||||||
m_currentMarker = 0;
|
|
||||||
|
|
||||||
m_aboartDRC = false;
|
|
||||||
m_drcInProgress = false;
|
|
||||||
m_spotcx = 0;
|
|
||||||
m_spotcy = 0;
|
|
||||||
m_finx = 0;
|
|
||||||
m_finy = 0; // coord relatives de l'extremite du segm de reference
|
|
||||||
|
|
||||||
m_segmAngle = 0; // angle d'inclinaison du segment de reference en 0,1 degre
|
|
||||||
m_segmLong = 0; // longueur du segment de reference
|
|
||||||
|
|
||||||
m_xcliplo = 0;
|
|
||||||
m_ycliplo = 0;
|
|
||||||
m_xcliphi = 0;
|
|
||||||
m_ycliphi = 0; // coord de la surface de securite du segment a comparer
|
|
||||||
|
|
||||||
m_unconnectedCount = 0;
|
|
||||||
|
|
||||||
m_drcList = new DRC_LIST();
|
|
||||||
|
|
||||||
m_drawPanel = 0;
|
|
||||||
|
|
||||||
for( int i=0; i<12; ++i )
|
|
||||||
{
|
|
||||||
DRC_ITEM* ditem = new DRC_ITEM( 2, wxPoint(12000,3000),
|
|
||||||
wxString( wxT("A item") ), wxString( wxT("B item") ),
|
|
||||||
wxPoint(12000,3000), wxPoint(13000,3000));
|
|
||||||
|
|
||||||
m_drcList->push_back( ditem );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetTests
|
* Function fillMarker
|
||||||
* sets all the test flags and may be called before running the tests.
|
* optionally creates a marker and fills it in with information,
|
||||||
|
* but does not add it to the BOARD. Use this to report any kind of
|
||||||
|
* DRC problem, or unconnected pad problem.
|
||||||
|
*
|
||||||
|
* @param aTrack The reference track
|
||||||
|
* @param aItem Another item on the BOARD, such as a SEGVIA, SEGZONE,
|
||||||
|
* or TRACK.
|
||||||
|
* @param aErrorCode A categorizing identifier for the particular type
|
||||||
|
* of error that is being reported.
|
||||||
|
* @param fillMe A MARKER* which is to be filled in, or NULL if one is to
|
||||||
|
* first be allocated, then filled.
|
||||||
|
*/
|
||||||
|
MARKER* fillMarker( TRACK* aTrack, BOARD_ITEM* aItem, int aErrorCode, MARKER* fillMe );
|
||||||
|
|
||||||
|
MARKER* fillMarker( D_PAD* aPad, D_PAD* bPad, int aErrorCode, MARKER* fillMe );
|
||||||
|
|
||||||
|
|
||||||
|
//-----<categorical group tests>-----------------------------------------
|
||||||
|
|
||||||
|
void testTracks();
|
||||||
|
|
||||||
|
void testPad2Pad();
|
||||||
|
|
||||||
|
void testUnconnected();
|
||||||
|
|
||||||
|
void testZones();
|
||||||
|
|
||||||
|
|
||||||
|
//-----<single "item" tests>-----------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function doPadToPadsDrc
|
||||||
|
* tests the clearance between aRefPad and other pads.
|
||||||
|
* The pad list must be sorted by x coordinate.
|
||||||
|
* @param aRefPad The pad to test
|
||||||
|
* @param aStart The start of the pad list to test against
|
||||||
|
* @param aEnd Marks the end of the list and is not included
|
||||||
|
* @param max_size The size of the biggest pad (used to stop the test when the X distance is > max_size)
|
||||||
|
*/
|
||||||
|
bool doPadToPadsDrc( D_PAD* aRefPad, LISTE_PAD* aStart,
|
||||||
|
LISTE_PAD* aEnd, int max_size );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function DoTrackDrc
|
||||||
|
* tests the current segment.
|
||||||
|
* @param aRefSeg The segment to test
|
||||||
|
* @param aStart The head of a list of tracks to test against (usually BOARD::m_Track)
|
||||||
|
* @return bool - true if no poblems, else false and m_currentMarker is
|
||||||
|
* filled in with the problem information.
|
||||||
|
*/
|
||||||
|
bool doTrackDrc( TRACK* aRefSeg, TRACK* aStart );
|
||||||
|
|
||||||
|
|
||||||
|
//-----<single tests>----------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function checkClearancePadToPad
|
||||||
|
* @param aRefPad The reference pad to check
|
||||||
|
* @param aPad Another pad to check against
|
||||||
|
* @return bool - true if clearance between aRefPad and pad is >= dist_min, else false
|
||||||
|
*/
|
||||||
|
bool checkClearancePadToPad( D_PAD* aRefPad, D_PAD* aPad, const int dist_min );
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function checkClearanceSegmToPad
|
||||||
|
* check the distance from a pad to segment. This function uses several
|
||||||
|
* instance variable not passed in:
|
||||||
|
* segmLength = length of the segment being tested
|
||||||
|
* segmAngle = angle d'inclinaison du segment;
|
||||||
|
* finx, finy = end coordinate of the segment
|
||||||
|
* spot_cX, spot_cY = position of pad / origin of segment
|
||||||
|
* @param pad_to_test Is the pad involved in the check
|
||||||
|
* @param w_segm Hhalf width of the segment to test
|
||||||
|
* @param dist_min Is the minimum clearance needed
|
||||||
|
*
|
||||||
|
* @return false distance >= dist_min,
|
||||||
|
* true if distance < dist_min
|
||||||
|
*/
|
||||||
|
bool checkClearanceSegmToPad( const D_PAD* pad_to_test, int w_segm, int dist_min );
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function checkMarginToCircle
|
||||||
|
* @todo this translation is no good, fix this:
|
||||||
|
* calculates the distance from a circle (via or round end of track) to the
|
||||||
|
* segment of reference on the right hand side.
|
||||||
|
*
|
||||||
|
* @param cx The x coordinate of the circle's center
|
||||||
|
* @param cy The y coordinate of the circle's center
|
||||||
|
* @param radius A "keep out" radius centered over the circle
|
||||||
|
* @param length The length of the segment (i.e. coordinate of end)
|
||||||
|
* @return bool - true if distance >= radius, else
|
||||||
|
* false when distance < radius
|
||||||
|
*/
|
||||||
|
static bool checkMarginToCircle( int cx, int cy, int radius, int length );
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function checkLine
|
||||||
|
* tests to see if one track is in contact with another track.
|
||||||
|
*
|
||||||
|
* Cette routine controle si la ligne (x1,y1 x2,y2) a une partie s'inscrivant
|
||||||
|
* dans le cadre (xcliplo,ycliplo xcliphi,ycliphi) (variables globales,
|
||||||
|
* locales a ce fichier)
|
||||||
|
*/
|
||||||
|
bool checkLine( int x1, int y1, int x2, int y2 );
|
||||||
|
|
||||||
|
//-----</single tests>---------------------------------------------
|
||||||
|
|
||||||
|
public:
|
||||||
|
DRC( WinEDA_PcbFrame* aPcbWindow );
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Drc
|
||||||
|
* tests the current segment and returns the result and displays the error
|
||||||
|
* in the status panel only if one exists.
|
||||||
|
* @param aRefSeg The current segment to test.
|
||||||
|
* @param aList The track list to test (usually m_Pcb->m_Track)
|
||||||
|
* @return int - BAD_DRC (1) if DRC error or OK_DRC (0) if OK
|
||||||
|
*/
|
||||||
|
int Drc( TRACK* aRefSeg, TRACK* aList );
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function DrcBlind
|
||||||
|
* tests the current segment and returns the result. Any error is not
|
||||||
|
* displayed in the status panel.
|
||||||
|
* @param aRefSeg The current segment to test.
|
||||||
|
* @param aList The track list to test (usually m_Pcb->m_Track)
|
||||||
|
* @return int - BAD_DRC (1) if DRC error or OK_DRC (0) if OK
|
||||||
|
*/
|
||||||
|
int DrcBlind( TRACK* aRefSeg, TRACK* aList )
|
||||||
|
{
|
||||||
|
updatePointers();
|
||||||
|
|
||||||
|
return doTrackDrc( aRefSeg, aList ) ? OK_DRC : BAD_DRC;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function ShowDialog
|
||||||
|
* opens a dialog and prompts the user, then if a test run button is
|
||||||
|
* clicked, runs the test(s) and creates the MARKERS.
|
||||||
|
*/
|
||||||
|
void ShowDialog();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function SetSettings
|
||||||
|
* saves all the UI or test settings and may be called before running the tests.
|
||||||
* @param aPad2PadTest Tells whether to test pad to pad distances.
|
* @param aPad2PadTest Tells whether to test pad to pad distances.
|
||||||
* @param aUnconnectedTest Tells whether to list unconnected pads.
|
* @param aUnconnectedTest Tells whether to list unconnected pads.
|
||||||
* @param aZonesTest Tells whether to test zones.
|
* @param aZonesTest Tells whether to test zones.
|
||||||
* @param aRptFilename If non-Empty, is the name of the file to
|
* @param aReportName A string telling the disk file report name entered.
|
||||||
* save the report to. If Empty, means save no report.
|
* @param aSaveReport A boolean telling whether to generate disk file report.
|
||||||
*/
|
*/
|
||||||
void SetTests( bool aPad2PadTest, bool aUnconnectedTest, bool aZonesTest, const wxString& aRptFilename )
|
void SetSettings( bool aPad2PadTest, bool aUnconnectedTest,
|
||||||
|
bool aZonesTest, const wxString& aReportName, bool aSaveReport )
|
||||||
{
|
{
|
||||||
m_doPad2PadTest = aPad2PadTest;
|
m_doPad2PadTest = aPad2PadTest;
|
||||||
m_doUnconnectedTest = aUnconnectedTest;
|
m_doUnconnectedTest = aUnconnectedTest;
|
||||||
m_doZonesTest = aZonesTest;
|
m_doZonesTest = aZonesTest;
|
||||||
|
m_rptFilename = aReportName;
|
||||||
m_rptFilename = aRptFilename;
|
m_doCreateRptFile = aSaveReport;
|
||||||
if( m_rptFilename.IsEmpty() )
|
|
||||||
m_doCreateRptFile = false;
|
|
||||||
else
|
|
||||||
m_doCreateRptFile = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RunTests();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function WriteReport
|
||||||
|
* outputs the MARKER items with commentary to an open text file.
|
||||||
|
* @param fpOut The text file to write the report to.
|
||||||
|
*/
|
||||||
|
void WriteReport( FILE* fpOut );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
/* Edition des pistes: Routines de modification de dimensions: */
|
/* Edition des pistes: Routines de modification de dimensions: */
|
||||||
/* Modif de largeurs de segment, piste, net , zone et diam Via */
|
/* Modif de largeurs de segment, piste, net , zone et diam Via */
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
|
|
||||||
#include "fctsys.h"
|
#include "fctsys.h"
|
||||||
#include "gr_basic.h"
|
#include "gr_basic.h"
|
||||||
|
@ -15,17 +15,18 @@
|
||||||
/* Routines Locales */
|
/* Routines Locales */
|
||||||
|
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
int WinEDA_PcbFrame::Edit_TrackSegm_Width(wxDC * DC, TRACK * pt_segm)
|
int WinEDA_PcbFrame::Edit_TrackSegm_Width( wxDC* DC, TRACK* pt_segm )
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
/* Routine to modify one track segment width or one via diameter.
|
|
||||||
Basic routine used by other routines when editing tracks or vias
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
int errdrc = OK_DRC;
|
|
||||||
int old_w, consigne ;
|
|
||||||
|
|
||||||
DrawPanel->CursorOff(DC); // Erase cursor shape
|
/* Routine to modify one track segment width or one via diameter.
|
||||||
pt_segm->Draw(DrawPanel, DC, GR_XOR) ; // Erase old track shape
|
* Basic routine used by other routines when editing tracks or vias
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int errdrc = OK_DRC;
|
||||||
|
int old_w, consigne;
|
||||||
|
|
||||||
|
DrawPanel->CursorOff( DC ); // Erase cursor shape
|
||||||
|
pt_segm->Draw( DrawPanel, DC, GR_XOR ); // Erase old track shape
|
||||||
|
|
||||||
/* Test DRC and width change */
|
/* Test DRC and width change */
|
||||||
old_w = pt_segm->m_Width;
|
old_w = pt_segm->m_Width;
|
||||||
|
@ -35,122 +36,137 @@ int old_w, consigne ;
|
||||||
consigne = pt_segm->m_Width = g_DesignSettings.m_CurrentViaSize;
|
consigne = pt_segm->m_Width = g_DesignSettings.m_CurrentViaSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( old_w < consigne) /* DRC utile puisque augm de dimension */
|
if( old_w < consigne ) /* DRC utile puisque augm de dimension */
|
||||||
{
|
{
|
||||||
if(Drc_On) errdrc = Drc(this, DC, pt_segm, m_Pcb->m_Track,1);
|
if( Drc_On )
|
||||||
if(errdrc == BAD_DRC) pt_segm->m_Width = old_w;
|
errdrc = m_drc->Drc( pt_segm, m_Pcb->m_Track );
|
||||||
else GetScreen()->SetModify();
|
if( errdrc == BAD_DRC )
|
||||||
|
pt_segm->m_Width = old_w;
|
||||||
|
else
|
||||||
|
GetScreen()->SetModify();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
GetScreen()->SetModify(); /* Correction systematiquement faite si reduction */
|
||||||
|
|
||||||
else GetScreen()->SetModify(); /* Correction systematiquement faite si reduction */
|
pt_segm->Draw( DrawPanel, DC, GR_OR ); // Display new track shape
|
||||||
|
DrawPanel->CursorOn( DC ); // Display cursor shape
|
||||||
pt_segm->Draw(DrawPanel, DC, GR_OR) ; // Display new track shape
|
return errdrc;
|
||||||
DrawPanel->CursorOn(DC); // Display cursor shape
|
|
||||||
return(errdrc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************/
|
/*****************************************************************/
|
||||||
void WinEDA_PcbFrame::Edit_Track_Width(wxDC * DC,TRACK * pt_segm)
|
void WinEDA_PcbFrame::Edit_Track_Width( wxDC* DC, TRACK* pt_segm )
|
||||||
/*****************************************************************/
|
/*****************************************************************/
|
||||||
{
|
{
|
||||||
int ii;
|
int ii;
|
||||||
TRACK * pt_track;
|
TRACK* pt_track;
|
||||||
int errdrc;
|
int errdrc;
|
||||||
int nb_segm, nb_segm_modifies = 0, nb_segm_non_modifies = 0;
|
int nb_segm, nb_segm_modifies = 0, nb_segm_non_modifies = 0;
|
||||||
|
|
||||||
if( pt_segm == NULL) return;
|
if( pt_segm == NULL )
|
||||||
|
return;
|
||||||
|
|
||||||
pt_track = Marque_Une_Piste(this, DC, pt_segm, &nb_segm, 0);
|
pt_track = Marque_Une_Piste( this, DC, pt_segm, &nb_segm, 0 );
|
||||||
for(ii = 0; ii < nb_segm; ii++, pt_track = (TRACK*) pt_track->Pnext)
|
for( ii = 0; ii < nb_segm; ii++, pt_track = (TRACK*) pt_track->Pnext )
|
||||||
{
|
{
|
||||||
pt_track->SetState(BUSY,OFF);
|
pt_track->SetState( BUSY, OFF );
|
||||||
errdrc = Edit_TrackSegm_Width(DC, pt_track);
|
errdrc = Edit_TrackSegm_Width( DC, pt_track );
|
||||||
if(errdrc == BAD_DRC) nb_segm_non_modifies++;
|
if( errdrc == BAD_DRC )
|
||||||
else nb_segm_modifies++;
|
nb_segm_non_modifies++;
|
||||||
|
else
|
||||||
|
nb_segm_modifies++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************/
|
/***********************************************************/
|
||||||
void WinEDA_PcbFrame::Edit_Net_Width(wxDC * DC, int Netcode)
|
void WinEDA_PcbFrame::Edit_Net_Width( wxDC* DC, int Netcode )
|
||||||
/***********************************************************/
|
/***********************************************************/
|
||||||
{
|
{
|
||||||
TRACK *pt_segm;
|
TRACK* pt_segm;
|
||||||
int errdrc;
|
int errdrc;
|
||||||
int nb_segm_modifies = 0;
|
int nb_segm_modifies = 0;
|
||||||
int nb_segm_non_modifies = 0;
|
int nb_segm_non_modifies = 0;
|
||||||
|
|
||||||
if (Netcode <= 0 ) return;
|
if( Netcode <= 0 )
|
||||||
|
return;
|
||||||
|
|
||||||
if( ! IsOK(this, _("Change track width (entire NET) ?") ) ) return;
|
if( !IsOK( this, _( "Change track width (entire NET) ?" ) ) )
|
||||||
|
return;
|
||||||
|
|
||||||
/* balayage des segments */
|
/* balayage des segments */
|
||||||
for( pt_segm = m_Pcb->m_Track; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext )
|
for( pt_segm = m_Pcb->m_Track; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext )
|
||||||
{
|
{
|
||||||
if ( Netcode != pt_segm->GetNet() ) /* mauvaise piste */
|
if( Netcode != pt_segm->GetNet() ) /* mauvaise piste */
|
||||||
continue ;
|
continue;
|
||||||
/* piste d'un net trouvee */
|
/* piste d'un net trouvee */
|
||||||
errdrc = Edit_TrackSegm_Width(DC, pt_segm);
|
errdrc = Edit_TrackSegm_Width( DC, pt_segm );
|
||||||
if(errdrc == BAD_DRC) nb_segm_non_modifies++;
|
if( errdrc == BAD_DRC )
|
||||||
else nb_segm_modifies++;
|
nb_segm_non_modifies++;
|
||||||
|
else
|
||||||
|
nb_segm_modifies++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
bool WinEDA_PcbFrame::Resize_Pistes_Vias(wxDC * DC, bool Track, bool Via)
|
bool WinEDA_PcbFrame::Resize_Pistes_Vias( wxDC* DC, bool Track, bool Via )
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
/* remet a jour la largeur des pistes et/ou le diametre des vias
|
/* remet a jour la largeur des pistes et/ou le diametre des vias
|
||||||
Si piste == 0 , pas de cht sur les pistes
|
* Si piste == 0 , pas de cht sur les pistes
|
||||||
Si via == 0 , pas de cht sur les vias
|
* Si via == 0 , pas de cht sur les vias
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
TRACK * pt_segm ;
|
TRACK* pt_segm;
|
||||||
int errdrc;
|
int errdrc;
|
||||||
int nb_segm_modifies = 0;
|
int nb_segm_modifies = 0;
|
||||||
int nb_segm_non_modifies = 0;
|
int nb_segm_non_modifies = 0;
|
||||||
|
|
||||||
if ( Track && Via)
|
if( Track && Via )
|
||||||
{
|
{
|
||||||
if( ! IsOK(this, _("Edit All Tracks and Vias Sizes")) ) return FALSE;
|
if( !IsOK( this, _( "Edit All Tracks and Vias Sizes" ) ) )
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
else if( Via )
|
||||||
else if ( Via )
|
|
||||||
{
|
{
|
||||||
if( ! IsOK(this, _("Edit All Via Sizes")) ) return FALSE;
|
if( !IsOK( this, _( "Edit All Via Sizes" ) ) )
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( Track )
|
else if( Track )
|
||||||
{
|
{
|
||||||
if( ! IsOK(this, _("Edit All Track Sizes")) ) return FALSE;
|
if( !IsOK( this, _( "Edit All Track Sizes" ) ) )
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
pt_segm = m_Pcb->m_Track ;
|
pt_segm = m_Pcb->m_Track;
|
||||||
for ( ; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext )
|
for( ; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext )
|
||||||
{
|
{
|
||||||
if( pt_segm->Type() == TYPEVIA ) /* mise a jour du diametre de la via */
|
if( pt_segm->Type() == TYPEVIA ) /* mise a jour du diametre de la via */
|
||||||
{
|
{
|
||||||
if ( Via )
|
if( Via )
|
||||||
{
|
{
|
||||||
errdrc = Edit_TrackSegm_Width(DC, pt_segm);
|
errdrc = Edit_TrackSegm_Width( DC, pt_segm );
|
||||||
if(errdrc == BAD_DRC) nb_segm_non_modifies++;
|
if( errdrc == BAD_DRC )
|
||||||
else nb_segm_modifies++;
|
nb_segm_non_modifies++;
|
||||||
|
else
|
||||||
|
nb_segm_modifies++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else /* mise a jour de la largeur du segment */
|
else /* mise a jour de la largeur du segment */
|
||||||
{
|
{
|
||||||
if ( Track )
|
if( Track )
|
||||||
{
|
{
|
||||||
errdrc = Edit_TrackSegm_Width(DC, pt_segm);
|
errdrc = Edit_TrackSegm_Width( DC, pt_segm );
|
||||||
if(errdrc == BAD_DRC) nb_segm_non_modifies++;
|
if( errdrc == BAD_DRC )
|
||||||
else nb_segm_modifies++;
|
nb_segm_non_modifies++;
|
||||||
|
else
|
||||||
|
nb_segm_modifies++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( nb_segm_modifies ) return TRUE;
|
if( nb_segm_modifies )
|
||||||
|
return TRUE;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -123,8 +123,9 @@ void WinEDA_PcbFrame::ExChange_Track_Layer( TRACK* pt_segm, wxDC* DC )
|
||||||
else if( pt_segm->GetLayer() == l2 )
|
else if( pt_segm->GetLayer() == l2 )
|
||||||
pt_segm->SetLayer( l1 );
|
pt_segm->SetLayer( l1 );
|
||||||
|
|
||||||
if( (Drc_On) && ( Drc( this, DC, pt_segm, m_Pcb->m_Track, 1 ) == BAD_DRC ) )
|
if( Drc_On && BAD_DRC==m_drc->Drc( pt_segm, m_Pcb->m_Track ) )
|
||||||
{ /* Annulation du changement */
|
{
|
||||||
|
/* Annulation du changement */
|
||||||
ii = 0; pt_segm = pt_track;
|
ii = 0; pt_segm = pt_track;
|
||||||
for( ; ii < nb_segm; ii++, pt_segm = (TRACK*) pt_segm->Pnext )
|
for( ; ii < nb_segm; ii++, pt_segm = (TRACK*) pt_segm->Pnext )
|
||||||
{
|
{
|
||||||
|
@ -197,12 +198,13 @@ void WinEDA_PcbFrame::Other_Layer_Route( TRACK* track, wxDC* DC )
|
||||||
/* Is the current segment Ok (no DRC error) ? */
|
/* Is the current segment Ok (no DRC error) ? */
|
||||||
if( Drc_On )
|
if( Drc_On )
|
||||||
{
|
{
|
||||||
if( Drc( this, DC, g_CurrentTrackSegment, m_Pcb->m_Track, 1 ) == BAD_DRC )
|
if( BAD_DRC==m_drc->Drc( g_CurrentTrackSegment, m_Pcb->m_Track ) )
|
||||||
/* DRC error, the change layer is not made */
|
/* DRC error, the change layer is not made */
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if( g_TwoSegmentTrackBuild && g_CurrentTrackSegment->Back() ) // We must handle 2 segments
|
if( g_TwoSegmentTrackBuild && g_CurrentTrackSegment->Back() ) // We must handle 2 segments
|
||||||
{
|
{
|
||||||
if( Drc( this, DC, g_CurrentTrackSegment->Back(), m_Pcb->m_Track, 1 ) == BAD_DRC )
|
if( BAD_DRC == m_drc->Drc( g_CurrentTrackSegment->Back(), m_Pcb->m_Track ) )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -248,7 +250,7 @@ void WinEDA_PcbFrame::Other_Layer_Route( TRACK* track, wxDC* DC )
|
||||||
Via->SetLayerPair( COPPER_LAYER_N, LAYER_CMP_N );
|
Via->SetLayerPair( COPPER_LAYER_N, LAYER_CMP_N );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( Drc_On &&( Drc( this, DC, Via, m_Pcb->m_Track, 1 ) == BAD_DRC ) )
|
if( Drc_On && BAD_DRC==m_drc->Drc( Via, m_Pcb->m_Track ) )
|
||||||
{
|
{
|
||||||
/* DRC fault: the Via cannot be placed here ... */
|
/* DRC fault: the Via cannot be placed here ... */
|
||||||
delete Via;
|
delete Via;
|
||||||
|
|
|
@ -11,14 +11,13 @@
|
||||||
#include "autorout.h"
|
#include "autorout.h"
|
||||||
|
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
|
#include "drc_stuff.h"
|
||||||
|
|
||||||
|
|
||||||
/* Routines Locales */
|
/* Routines Locales */
|
||||||
static void Exit_Editrack( WinEDA_DrawPanel* panel, wxDC* DC );
|
static void Exit_Editrack( WinEDA_DrawPanel* panel, wxDC* DC );
|
||||||
void ShowNewTrackWhenMovingCursor( WinEDA_DrawPanel* panel,
|
void ShowNewTrackWhenMovingCursor( WinEDA_DrawPanel* panel,
|
||||||
wxDC* DC, bool erase );
|
wxDC* DC, bool erase );
|
||||||
static int Add_45_degrees_Segment( WinEDA_BasePcbFrame* frame, wxDC* DC,
|
|
||||||
TRACK* ptfinsegment );
|
|
||||||
static void ComputeBreakPoint( TRACK* track, int n );
|
static void ComputeBreakPoint( TRACK* track, int n );
|
||||||
static TRACK* DeleteNullTrackSegments( BOARD* pcb, TRACK* track, int* segmcount );
|
static TRACK* DeleteNullTrackSegments( BOARD* pcb, TRACK* track, int* segmcount );
|
||||||
static void EnsureEndTrackOnPad( D_PAD* Pad );
|
static void EnsureEndTrackOnPad( D_PAD* Pad );
|
||||||
|
@ -160,22 +159,27 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* track, wxDC* DC )
|
||||||
g_CurrentTrackSegment->Display_Infos( this );
|
g_CurrentTrackSegment->Display_Infos( this );
|
||||||
SetCurItem( g_CurrentTrackSegment );
|
SetCurItem( g_CurrentTrackSegment );
|
||||||
DrawPanel->ManageCurseur( DrawPanel, DC, FALSE );
|
DrawPanel->ManageCurseur( DrawPanel, DC, FALSE );
|
||||||
if( Drc_On && (Drc( this, DC, g_CurrentTrackSegment, m_Pcb->m_Track, 1 ) == BAD_DRC) )
|
|
||||||
|
if( Drc_On )
|
||||||
|
{
|
||||||
|
if( BAD_DRC == m_drc->Drc( g_CurrentTrackSegment, m_Pcb->m_Track ) )
|
||||||
{
|
{
|
||||||
return g_CurrentTrackSegment;
|
return g_CurrentTrackSegment;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else /* Track in progress : segment coordinates are updated by ShowNewTrackWhenMovingCursor*/
|
else /* Track in progress : segment coordinates are updated by ShowNewTrackWhenMovingCursor*/
|
||||||
{
|
{
|
||||||
/* Tst for a D.R.C. error: */
|
/* Tst for a D.R.C. error: */
|
||||||
if( Drc_On )
|
if( Drc_On )
|
||||||
{
|
{
|
||||||
if( Drc( this, DC, g_CurrentTrackSegment, m_Pcb->m_Track, 1 ) == BAD_DRC )
|
if( BAD_DRC == m_drc->Drc( g_CurrentTrackSegment, m_Pcb->m_Track ) )
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if( g_TwoSegmentTrackBuild // We must handle 2 segments
|
if( g_TwoSegmentTrackBuild // We must handle 2 segments
|
||||||
&& g_CurrentTrackSegment->Back() )
|
&& g_CurrentTrackSegment->Back() )
|
||||||
{
|
{
|
||||||
if( Drc( this, DC, g_CurrentTrackSegment->Back(), m_Pcb->m_Track, 1 ) == BAD_DRC )
|
if( BAD_DRC == m_drc->Drc( g_CurrentTrackSegment->Back(), m_Pcb->m_Track ) )
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -196,7 +200,7 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* track, wxDC* DC )
|
||||||
|
|
||||||
if( g_Raccord_45_Auto )
|
if( g_Raccord_45_Auto )
|
||||||
{
|
{
|
||||||
if( Add_45_degrees_Segment( this, DC, g_CurrentTrackSegment ) != 0 )
|
if( Add_45_degrees_Segment( DC, g_CurrentTrackSegment ) != 0 )
|
||||||
g_TrackSegmentCount++;
|
g_TrackSegmentCount++;
|
||||||
}
|
}
|
||||||
Track = g_CurrentTrackSegment->Copy();
|
Track = g_CurrentTrackSegment->Copy();
|
||||||
|
@ -229,7 +233,7 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* track, wxDC* DC )
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
int Add_45_degrees_Segment( WinEDA_BasePcbFrame* frame, wxDC* DC, TRACK* pt_segm )
|
int WinEDA_PcbFrame::Add_45_degrees_Segment( wxDC* DC, TRACK* pt_segm )
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
|
|
||||||
/* rectifie un virage a 90 et le modifie par 2 coudes a 45
|
/* rectifie un virage a 90 et le modifie par 2 coudes a 45
|
||||||
|
@ -260,9 +264,9 @@ int Add_45_degrees_Segment( WinEDA_BasePcbFrame* frame, wxDC* DC, TRACK* pt_segm
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
pas_45 = frame->GetScreen()->GetGrid().x / 2;
|
pas_45 = GetScreen()->GetGrid().x / 2;
|
||||||
if( pas_45 < pt_segm->m_Width )
|
if( pas_45 < pt_segm->m_Width )
|
||||||
pas_45 = frame->GetScreen()->GetGrid().x;
|
pas_45 = GetScreen()->GetGrid().x;
|
||||||
while( pas_45 < pt_segm->m_Width )
|
while( pas_45 < pt_segm->m_Width )
|
||||||
pas_45 *= 2;
|
pas_45 *= 2;
|
||||||
|
|
||||||
|
@ -309,7 +313,7 @@ int Add_45_degrees_Segment( WinEDA_BasePcbFrame* frame, wxDC* DC, TRACK* pt_segm
|
||||||
else
|
else
|
||||||
NewTrack->m_End.x -= pas_45;
|
NewTrack->m_End.x -= pas_45;
|
||||||
|
|
||||||
if( Drc_On && (Drc( frame, DC, pt_segm, frame->m_Pcb->m_Track, 1 ) == BAD_DRC) )
|
if( Drc_On && BAD_DRC==m_drc->Drc( pt_segm, m_Pcb->m_Track ) )
|
||||||
{
|
{
|
||||||
delete NewTrack;
|
delete NewTrack;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -317,7 +321,7 @@ int Add_45_degrees_Segment( WinEDA_BasePcbFrame* frame, wxDC* DC, TRACK* pt_segm
|
||||||
|
|
||||||
Previous->m_End = NewTrack->m_Start;
|
Previous->m_End = NewTrack->m_Start;
|
||||||
pt_segm->m_Start = NewTrack->m_End;
|
pt_segm->m_Start = NewTrack->m_End;
|
||||||
NewTrack->Insert( frame->m_Pcb, Previous );
|
NewTrack->Insert( m_Pcb, Previous );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -345,7 +349,7 @@ int Add_45_degrees_Segment( WinEDA_BasePcbFrame* frame, wxDC* DC, TRACK* pt_segm
|
||||||
else
|
else
|
||||||
NewTrack->m_End.y -= pas_45;
|
NewTrack->m_End.y -= pas_45;
|
||||||
|
|
||||||
if( Drc_On && (Drc( frame, DC, NewTrack, frame->m_Pcb->m_Track, 1 ) == BAD_DRC) )
|
if( Drc_On && BAD_DRC==m_drc->Drc( NewTrack, m_Pcb->m_Track ) )
|
||||||
{
|
{
|
||||||
delete NewTrack;
|
delete NewTrack;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -353,7 +357,7 @@ int Add_45_degrees_Segment( WinEDA_BasePcbFrame* frame, wxDC* DC, TRACK* pt_segm
|
||||||
|
|
||||||
Previous->m_End = NewTrack->m_Start;
|
Previous->m_End = NewTrack->m_Start;
|
||||||
pt_segm->m_Start = NewTrack->m_End;
|
pt_segm->m_Start = NewTrack->m_End;
|
||||||
NewTrack->Insert( frame->m_Pcb, Previous );
|
NewTrack->Insert( m_Pcb, Previous );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -378,7 +382,7 @@ void WinEDA_PcbFrame::End_Route( TRACK* track, wxDC* DC )
|
||||||
if( track == NULL )
|
if( track == NULL )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if( Drc_On && Drc( this, DC, g_CurrentTrackSegment, m_Pcb->m_Track, 1 )==BAD_DRC )
|
if( Drc_On && BAD_DRC==m_drc->Drc( g_CurrentTrackSegment, m_Pcb->m_Track) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Sauvegarde des coord du point terminal de la piste */
|
/* Sauvegarde des coord du point terminal de la piste */
|
||||||
|
|
|
@ -75,7 +75,7 @@ void WinEDA_PcbFindFrame::FindItem( wxCommandEvent& event )
|
||||||
if( marker )
|
if( marker )
|
||||||
{
|
{
|
||||||
foundItem = marker;
|
foundItem = marker;
|
||||||
locate_pos = marker->m_Pos;
|
locate_pos = marker->GetPosition();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -89,7 +89,7 @@ void WinEDA_PcbFindFrame::FindItem( wxCommandEvent& event )
|
||||||
if( StartCount > s_ItemCount )
|
if( StartCount > s_ItemCount )
|
||||||
{
|
{
|
||||||
foundItem = module;
|
foundItem = module;
|
||||||
locate_pos = module->m_Pos;
|
locate_pos = module->GetPosition();
|
||||||
s_ItemCount++;
|
s_ItemCount++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -351,5 +351,6 @@ void WinEDA_PcbFrame::Erase_Marqueurs()
|
||||||
{
|
{
|
||||||
m_Pcb->DeleteMARKERs();
|
m_Pcb->DeleteMARKERs();
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -783,14 +783,14 @@ bool WinEDA_PcbFrame::PlaceDraggedTrackSegment( TRACK* Track, wxDC* DC )
|
||||||
// DRC control:
|
// DRC control:
|
||||||
if( Drc_On )
|
if( Drc_On )
|
||||||
{
|
{
|
||||||
errdrc = Drc( this, DC, Track, m_Pcb->m_Track, 1 );
|
errdrc = m_drc->Drc( Track, m_Pcb->m_Track );
|
||||||
if( errdrc == BAD_DRC )
|
if( errdrc == BAD_DRC )
|
||||||
return FALSE;
|
return FALSE;
|
||||||
/* Redraw the dragged segments */
|
/* Redraw the dragged segments */
|
||||||
pt_drag = g_DragSegmentList;
|
pt_drag = g_DragSegmentList;
|
||||||
for( ; pt_drag != NULL; pt_drag = pt_drag->Pnext )
|
for( ; pt_drag != NULL; pt_drag = pt_drag->Pnext )
|
||||||
{
|
{
|
||||||
errdrc = Drc( this, DC, pt_drag->m_Segm, m_Pcb->m_Track, 1 );
|
errdrc = m_drc->Drc( pt_drag->m_Segm, m_Pcb->m_Track );
|
||||||
if( errdrc == BAD_DRC )
|
if( errdrc == BAD_DRC )
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "bitmaps.h"
|
#include "bitmaps.h"
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
#include "id.h"
|
#include "id.h"
|
||||||
|
#include "drc_stuff.h"
|
||||||
|
|
||||||
|
|
||||||
/*******************************/
|
/*******************************/
|
||||||
|
@ -192,6 +193,8 @@ WinEDA_PcbFrame::WinEDA_PcbFrame( wxWindow* father, WinEDA_App* parent,
|
||||||
m_SelTrackWidthBox_Changed = FALSE;
|
m_SelTrackWidthBox_Changed = FALSE;
|
||||||
m_SelViaSizeBox_Changed = FALSE;
|
m_SelViaSizeBox_Changed = FALSE;
|
||||||
|
|
||||||
|
m_drc = new DRC( this ); // these 2 objects point to each other
|
||||||
|
|
||||||
m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill;
|
m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill;
|
||||||
m_DisplayPadFill = DisplayOpt.DisplayPadFill;
|
m_DisplayPadFill = DisplayOpt.DisplayPadFill;
|
||||||
m_DisplayPadNum = DisplayOpt.DisplayPadNum;
|
m_DisplayPadNum = DisplayOpt.DisplayPadNum;
|
||||||
|
@ -237,6 +240,7 @@ WinEDA_PcbFrame::~WinEDA_PcbFrame()
|
||||||
{
|
{
|
||||||
m_Parent->m_PcbFrame = NULL;
|
m_Parent->m_PcbFrame = NULL;
|
||||||
m_CurrentScreen = ScreenPcb;
|
m_CurrentScreen = ScreenPcb;
|
||||||
|
delete m_drc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -380,8 +380,8 @@ static int Route_1_Trace( WinEDA_PcbFrame* pcbframe, wxDC* DC,
|
||||||
int cY = (g_GridRoutingSize * row_source) + pcbframe->m_Pcb->m_BoundaryBox.m_Pos.y;
|
int cY = (g_GridRoutingSize * row_source) + pcbframe->m_Pcb->m_BoundaryBox.m_Pos.y;
|
||||||
int dx = pt_cur_ch->pad_start->m_Size.x / 2;
|
int dx = pt_cur_ch->pad_start->m_Size.x / 2;
|
||||||
int dy = pt_cur_ch->pad_start->m_Size.y / 2;
|
int dy = pt_cur_ch->pad_start->m_Size.y / 2;
|
||||||
int px = pt_cur_ch->pad_start->m_Pos.x;
|
int px = pt_cur_ch->pad_start->GetPosition().x;
|
||||||
int py = pt_cur_ch->pad_start->m_Pos.y;
|
int py = pt_cur_ch->pad_start->GetPosition().y;
|
||||||
|
|
||||||
if( ( (pt_cur_ch->pad_start->m_Orient / 900) & 1 ) != 0 )
|
if( ( (pt_cur_ch->pad_start->m_Orient / 900) & 1 ) != 0 )
|
||||||
EXCHG( dx, dy );
|
EXCHG( dx, dy );
|
||||||
|
@ -392,8 +392,8 @@ static int Route_1_Trace( WinEDA_PcbFrame* pcbframe, wxDC* DC,
|
||||||
cY = (g_GridRoutingSize * row_target) + pcbframe->m_Pcb->m_BoundaryBox.m_Pos.y;
|
cY = (g_GridRoutingSize * row_target) + pcbframe->m_Pcb->m_BoundaryBox.m_Pos.y;
|
||||||
dx = pt_cur_ch->pad_end->m_Size.x / 2;
|
dx = pt_cur_ch->pad_end->m_Size.x / 2;
|
||||||
dy = pt_cur_ch->pad_end->m_Size.y / 2;
|
dy = pt_cur_ch->pad_end->m_Size.y / 2;
|
||||||
px = pt_cur_ch->pad_end->m_Pos.x;
|
px = pt_cur_ch->pad_end->GetPosition().x;
|
||||||
py = pt_cur_ch->pad_end->m_Pos.y;
|
py = pt_cur_ch->pad_end->GetPosition().y;
|
||||||
if( ( (pt_cur_ch->pad_end->m_Orient / 900) & 1 ) != 0 )
|
if( ( (pt_cur_ch->pad_end->m_Orient / 900) & 1 ) != 0 )
|
||||||
EXCHG( dx, dy );
|
EXCHG( dx, dy );
|
||||||
|
|
||||||
|
@ -968,14 +968,13 @@ static void OrCell_Trace( BOARD* pcb, int col, int row,
|
||||||
/* Replacement sur le centre du pad si hors grille */
|
/* Replacement sur le centre du pad si hors grille */
|
||||||
dx1 = g_CurrentTrackSegment->m_End.x - g_CurrentTrackSegment->m_Start.x;
|
dx1 = g_CurrentTrackSegment->m_End.x - g_CurrentTrackSegment->m_Start.x;
|
||||||
dy1 = g_CurrentTrackSegment->m_End.y - g_CurrentTrackSegment->m_Start.y;
|
dy1 = g_CurrentTrackSegment->m_End.y - g_CurrentTrackSegment->m_Start.y;
|
||||||
dx0 = pt_cur_ch->pad_end->m_Pos.x - g_CurrentTrackSegment->m_Start.x;
|
dx0 = pt_cur_ch->pad_end->GetPosition().x - g_CurrentTrackSegment->m_Start.x;
|
||||||
dy0 = pt_cur_ch->pad_end->m_Pos.y - g_CurrentTrackSegment->m_Start.y;
|
dy0 = pt_cur_ch->pad_end->GetPosition().y - g_CurrentTrackSegment->m_Start.y;
|
||||||
|
|
||||||
/* si aligne: modif du point origine */
|
/* si aligne: modif du point origine */
|
||||||
if( abs( dx0 * dy1 ) == abs( dx1 * dy0 ) ) /* Alignes ! */
|
if( abs( dx0 * dy1 ) == abs( dx1 * dy0 ) ) /* Alignes ! */
|
||||||
{
|
{
|
||||||
g_CurrentTrackSegment->m_Start.x = pt_cur_ch->pad_end->m_Pos.x;
|
g_CurrentTrackSegment->m_Start = pt_cur_ch->pad_end->GetPosition();
|
||||||
g_CurrentTrackSegment->m_Start.y = pt_cur_ch->pad_end->m_Pos.y;
|
|
||||||
}
|
}
|
||||||
else /* Creation d'un segment suppl raccord */
|
else /* Creation d'un segment suppl raccord */
|
||||||
{
|
{
|
||||||
|
@ -983,10 +982,9 @@ static void OrCell_Trace( BOARD* pcb, int col, int row,
|
||||||
g_TrackSegmentCount++;
|
g_TrackSegmentCount++;
|
||||||
NewTrack->Insert( pcb, g_CurrentTrackSegment );
|
NewTrack->Insert( pcb, g_CurrentTrackSegment );
|
||||||
|
|
||||||
g_CurrentTrackSegment->m_Start.x = pt_cur_ch->pad_end->m_Pos.x;
|
g_CurrentTrackSegment->m_Start = pt_cur_ch->pad_end->GetPosition();
|
||||||
g_CurrentTrackSegment->m_Start.y = pt_cur_ch->pad_end->m_Pos.y;
|
|
||||||
NewTrack->m_Start.x = g_CurrentTrackSegment->m_End.x;
|
NewTrack->m_Start = g_CurrentTrackSegment->m_End;
|
||||||
NewTrack->m_Start.y = g_CurrentTrackSegment->m_End.y;
|
|
||||||
|
|
||||||
g_CurrentTrackSegment = NewTrack;
|
g_CurrentTrackSegment = NewTrack;
|
||||||
}
|
}
|
||||||
|
@ -1053,26 +1051,25 @@ static void Place_Piste_en_Buffer( WinEDA_PcbFrame* pcbframe, wxDC* DC )
|
||||||
dy1 = g_CurrentTrackSegment->m_End.y - g_CurrentTrackSegment->m_Start.y;
|
dy1 = g_CurrentTrackSegment->m_End.y - g_CurrentTrackSegment->m_Start.y;
|
||||||
/* Replacement sur le centre du pad si hors grille */
|
/* Replacement sur le centre du pad si hors grille */
|
||||||
|
|
||||||
dx0 = pt_cur_ch->pad_start->m_Pos.x - g_CurrentTrackSegment->m_Start.x;
|
dx0 = pt_cur_ch->pad_start->GetPosition().x - g_CurrentTrackSegment->m_Start.x;
|
||||||
dy0 = pt_cur_ch->pad_start->m_Pos.y - g_CurrentTrackSegment->m_Start.y;
|
dy0 = pt_cur_ch->pad_start->GetPosition().y - g_CurrentTrackSegment->m_Start.y;
|
||||||
|
|
||||||
/* si aligne: modif du point origine */
|
/* si aligne: modif du point origine */
|
||||||
if( abs( dx0 * dy1 ) == abs( dx1 * dy0 ) ) /* Alignes ! */
|
if( abs( dx0 * dy1 ) == abs( dx1 * dy0 ) ) /* Alignes ! */
|
||||||
{
|
{
|
||||||
g_CurrentTrackSegment->m_End.x = pt_cur_ch->pad_start->m_Pos.x;
|
g_CurrentTrackSegment->m_End = pt_cur_ch->pad_start->GetPosition();
|
||||||
g_CurrentTrackSegment->m_End.y = pt_cur_ch->pad_start->m_Pos.y;
|
|
||||||
}
|
}
|
||||||
else /* Creation d'un segment suppl raccord */
|
else /* Creation d'un segment suppl raccord */
|
||||||
{
|
{
|
||||||
TRACK* NewTrack = g_CurrentTrackSegment->Copy();
|
TRACK* NewTrack = g_CurrentTrackSegment->Copy();
|
||||||
NewTrack->Insert( pcbframe->m_Pcb, g_CurrentTrackSegment );
|
NewTrack->Insert( pcbframe->m_Pcb, g_CurrentTrackSegment );
|
||||||
|
|
||||||
NewTrack->m_End.x = pt_cur_ch->pad_start->m_Pos.x;
|
NewTrack->m_End = pt_cur_ch->pad_start->GetPosition();
|
||||||
NewTrack->m_End.y = pt_cur_ch->pad_start->m_Pos.y;
|
|
||||||
NewTrack->m_Start.x = g_CurrentTrackSegment->m_End.x;
|
|
||||||
NewTrack->m_Start.y = g_CurrentTrackSegment->m_End.y;
|
|
||||||
|
|
||||||
g_CurrentTrackSegment = NewTrack; g_TrackSegmentCount++;
|
NewTrack->m_Start = g_CurrentTrackSegment->m_End;
|
||||||
|
|
||||||
|
g_CurrentTrackSegment = NewTrack;
|
||||||
|
g_TrackSegmentCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,6 @@ static void Display_Zone_Netname( WinEDA_PcbFrame* frame );
|
||||||
static void Exit_Zones( WinEDA_DrawPanel* Panel, wxDC* DC );
|
static void Exit_Zones( WinEDA_DrawPanel* Panel, wxDC* DC );
|
||||||
static void Show_Zone_Edge_While_MoveMouse( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
static void Show_Zone_Edge_While_MoveMouse( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
||||||
static void Genere_Segments_Zone( WinEDA_PcbFrame* frame, wxDC* DC, int net_code );
|
static void Genere_Segments_Zone( WinEDA_PcbFrame* frame, wxDC* DC, int net_code );
|
||||||
static bool Genere_Pad_Connexion( WinEDA_PcbFrame* frame, wxDC* DC, int layer );
|
|
||||||
|
|
||||||
/* Local variables */
|
/* Local variables */
|
||||||
static bool Zone_Debug = FALSE;
|
static bool Zone_Debug = FALSE;
|
||||||
|
@ -1037,7 +1036,7 @@ void WinEDA_PcbFrame::Fill_Zone( wxDC* DC )
|
||||||
/* Create the thermal reliefs */
|
/* Create the thermal reliefs */
|
||||||
g_DesignSettings.m_CurrentTrackWidth = lp_tmp;
|
g_DesignSettings.m_CurrentTrackWidth = lp_tmp;
|
||||||
if( Zone_Exclude_Pads && s_Zone_Create_Thermal_Relief )
|
if( Zone_Exclude_Pads && s_Zone_Create_Thermal_Relief )
|
||||||
Genere_Pad_Connexion( this, DC, GetScreen()->m_Active_Layer );
|
Genere_Pad_Connexion( DC, GetScreen()->m_Active_Layer );
|
||||||
|
|
||||||
g_DesignSettings.m_TrackClearence = save_isol;
|
g_DesignSettings.m_TrackClearence = save_isol;
|
||||||
|
|
||||||
|
@ -1313,7 +1312,7 @@ int Propagation( WinEDA_PcbFrame* frame )
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
static bool Genere_Pad_Connexion( WinEDA_PcbFrame* frame, wxDC* DC, int layer )
|
bool WinEDA_PcbFrame::Genere_Pad_Connexion( wxDC* DC, int layer )
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
/* Create the thermal relief for each pad in the zone:
|
/* Create the thermal relief for each pad in the zone:
|
||||||
|
@ -1329,16 +1328,16 @@ static bool Genere_Pad_Connexion( WinEDA_PcbFrame* frame, wxDC* DC, int layer )
|
||||||
int sommet[4][2];
|
int sommet[4][2];
|
||||||
wxString msg;
|
wxString msg;
|
||||||
|
|
||||||
if( frame->m_Pcb->m_Zone == NULL )
|
if( m_Pcb->m_Zone == NULL )
|
||||||
return FALSE; /* error: no zone */
|
return FALSE; /* error: no zone */
|
||||||
|
|
||||||
if( frame->m_Pcb->m_Zone->m_TimeStamp != s_TimeStamp ) /* error: this is not the new zone */
|
if( m_Pcb->m_Zone->m_TimeStamp != s_TimeStamp ) /* error: this is not the new zone */
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* Count the pads, i.e. the thermal relief to create count, and displays it */
|
/* Count the pads, i.e. the thermal relief to create count, and displays it */
|
||||||
Affiche_1_Parametre( frame, 50, wxT( "NPads" ), wxT( " " ), CYAN );
|
Affiche_1_Parametre( this, 50, wxT( "NPads" ), wxT( " " ), CYAN );
|
||||||
pt_liste_pad = (LISTE_PAD*) frame->m_Pcb->m_Pads;
|
pt_liste_pad = (LISTE_PAD*) m_Pcb->m_Pads;
|
||||||
for( ii = 0, Npads = 0; ii < frame->m_Pcb->m_NbPads; ii++, pt_liste_pad++ )
|
for( ii = 0, Npads = 0; ii < m_Pcb->m_NbPads; ii++, pt_liste_pad++ )
|
||||||
{
|
{
|
||||||
pt_pad = *pt_liste_pad;
|
pt_pad = *pt_liste_pad;
|
||||||
|
|
||||||
|
@ -1353,12 +1352,12 @@ static bool Genere_Pad_Connexion( WinEDA_PcbFrame* frame, wxDC* DC, int layer )
|
||||||
}
|
}
|
||||||
|
|
||||||
msg.Printf( wxT( "%d" ), Npads );
|
msg.Printf( wxT( "%d" ), Npads );
|
||||||
Affiche_1_Parametre( frame, -1, wxEmptyString, msg, CYAN );
|
Affiche_1_Parametre( this, -1, wxEmptyString, msg, CYAN );
|
||||||
|
|
||||||
/* Create the thermal reliefs */
|
/* Create the thermal reliefs */
|
||||||
Affiche_1_Parametre( frame, 57, wxT( "Pads" ), wxT( " " ), CYAN );
|
Affiche_1_Parametre( this, 57, wxT( "Pads" ), wxT( " " ), CYAN );
|
||||||
pt_liste_pad = (LISTE_PAD*) frame->m_Pcb->m_Pads;
|
pt_liste_pad = (LISTE_PAD*) m_Pcb->m_Pads;
|
||||||
for( ii = 0, Npads = 0; ii < frame->m_Pcb->m_NbPads; ii++, pt_liste_pad++ )
|
for( ii = 0, Npads = 0; ii < m_Pcb->m_NbPads; ii++, pt_liste_pad++ )
|
||||||
{
|
{
|
||||||
pt_pad = *pt_liste_pad;
|
pt_pad = *pt_liste_pad;
|
||||||
|
|
||||||
|
@ -1370,11 +1369,17 @@ static bool Genere_Pad_Connexion( WinEDA_PcbFrame* frame, wxDC* DC, int layer )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Create the theram relief for the current pad */
|
/* Create the theram relief for the current pad */
|
||||||
Npads++; msg.Printf( wxT( "%d" ), Npads );
|
Npads++;
|
||||||
Affiche_1_Parametre( frame, -1, wxEmptyString, msg, CYAN );
|
|
||||||
cX = pt_pad->m_Pos.x; cY = pt_pad->m_Pos.y;
|
msg.Printf( wxT( "%d" ), Npads );
|
||||||
|
Affiche_1_Parametre( this, -1, wxEmptyString, msg, CYAN );
|
||||||
|
|
||||||
|
cX = pt_pad->GetPosition().x;
|
||||||
|
cY = pt_pad->GetPosition().y;
|
||||||
|
|
||||||
dx = pt_pad->m_Size.x / 2;
|
dx = pt_pad->m_Size.x / 2;
|
||||||
dy = pt_pad->m_Size.y / 2;
|
dy = pt_pad->m_Size.y / 2;
|
||||||
|
|
||||||
dx += g_DesignSettings.m_TrackClearence + g_GridRoutingSize;
|
dx += g_DesignSettings.m_TrackClearence + g_GridRoutingSize;
|
||||||
dy += g_DesignSettings.m_TrackClearence + g_GridRoutingSize;
|
dy += g_DesignSettings.m_TrackClearence + g_GridRoutingSize;
|
||||||
|
|
||||||
|
@ -1395,7 +1400,7 @@ static bool Genere_Pad_Connexion( WinEDA_PcbFrame* frame, wxDC* DC, int layer )
|
||||||
{
|
{
|
||||||
RotatePoint( &sommet[jj][0], &sommet[jj][1], angle );
|
RotatePoint( &sommet[jj][0], &sommet[jj][1], angle );
|
||||||
|
|
||||||
pt_track = new SEGZONE( frame->m_Pcb );
|
pt_track = new SEGZONE( m_Pcb );
|
||||||
|
|
||||||
pt_track->SetLayer( layer );
|
pt_track->SetLayer( layer );
|
||||||
pt_track->m_Width = g_DesignSettings.m_CurrentTrackWidth;
|
pt_track->m_Width = g_DesignSettings.m_CurrentTrackWidth;
|
||||||
|
@ -1407,20 +1412,22 @@ static bool Genere_Pad_Connexion( WinEDA_PcbFrame* frame, wxDC* DC, int layer )
|
||||||
pt_track->m_TimeStamp = s_TimeStamp;
|
pt_track->m_TimeStamp = s_TimeStamp;
|
||||||
|
|
||||||
/* Test if the segment is allowed */
|
/* Test if the segment is allowed */
|
||||||
if( Drc( frame, DC, pt_track, frame->m_Pcb->m_Track, 0 ) == BAD_DRC )
|
if( BAD_DRC==m_drc->DrcBlind( pt_track, m_Pcb->m_Track ) )
|
||||||
{
|
{
|
||||||
delete pt_track; continue;
|
delete pt_track;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Search for a zone segment */
|
/* Search for a zone segment */
|
||||||
loctrack = Locate_Zone( frame->m_Pcb->m_Zone, pt_track->m_End, layer );
|
loctrack = Locate_Zone( m_Pcb->m_Zone, pt_track->m_End, layer );
|
||||||
if( (loctrack == NULL) || (loctrack->m_TimeStamp != s_TimeStamp) )
|
if( (loctrack == NULL) || (loctrack->m_TimeStamp != s_TimeStamp) )
|
||||||
{
|
{
|
||||||
delete pt_track; continue;
|
delete pt_track;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
pt_track->Insert( frame->m_Pcb, NULL );
|
pt_track->Insert( m_Pcb, NULL );
|
||||||
pt_track->Draw( frame->DrawPanel, DC, GR_OR );
|
pt_track->Draw( DrawPanel, DC, GR_OR );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue