see my 2007-Sep-20 change_log.txt
This commit is contained in:
parent
33939aebd9
commit
664a1f727b
|
@ -4,12 +4,20 @@ 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-Sep-20 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||||
|
================================================================================
|
||||||
|
+ eeschema
|
||||||
|
* beautify, add debug Show() functions, changed ReturnFieldName()
|
||||||
|
to return "const wxString&" for speed, added GetFieldValue().
|
||||||
|
* tracking down questionable behavior (a bug?) in erc regarding pwr_flag, still looking
|
||||||
|
|
||||||
|
|
||||||
2007-sept-20 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
2007-sept-20 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||||
================================================================================
|
================================================================================
|
||||||
+ all
|
+ all
|
||||||
* hotkeys handling finished
|
* hotkeys handling finished
|
||||||
+ pcbnew
|
+ pcbnew
|
||||||
* bug fix: a subtle bug in place via : partial drc only was made.
|
* bug fix: a subtle bug in place via : partial drc only was made.
|
||||||
|
|
||||||
|
|
||||||
2007-Sep-14 UPDATE Dick Hollenbeck <dick@softplc.com>
|
2007-Sep-14 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||||
|
@ -42,11 +50,11 @@ email address.
|
||||||
2007-sept-13 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
2007-sept-13 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||||
================================================================================
|
================================================================================
|
||||||
+ all
|
+ all
|
||||||
* EDA_BaseStruct.SetType() removed.
|
* EDA_BaseStruct.SetType() removed.
|
||||||
The m_StructType member of class EDA_BaseStruct is no more modified in kicad.
|
The m_StructType member of class EDA_BaseStruct is no more modified in kicad.
|
||||||
Now Virtual functions can be widely used.
|
Now Virtual functions can be widely used.
|
||||||
* The old EDA_BaseStruct.ReturnClassName() was removed.
|
* The old EDA_BaseStruct.ReturnClassName() was removed.
|
||||||
the virtual EDA_BaseStruct.GetClass() is used instead.
|
the virtual EDA_BaseStruct.GetClass() is used instead.
|
||||||
|
|
||||||
+ gerbview: hotkeys Ok.
|
+ gerbview: hotkeys Ok.
|
||||||
|
|
||||||
|
@ -106,10 +114,10 @@ email address.
|
||||||
================================================================================
|
================================================================================
|
||||||
+ eeschema & pcbnew
|
+ eeschema & pcbnew
|
||||||
Programmable hotkeys update.
|
Programmable hotkeys update.
|
||||||
some features are still subject to change (mainly path for config files: see 2007-aug-30 UPDATE))
|
some features are still subject to change (mainly path for config files: see 2007-aug-30 UPDATE))
|
||||||
The preference menu has a command to create and reread config hotkey files.
|
The preference menu has a command to create and reread config hotkey files.
|
||||||
the hotkey ? lists the current hotkeys.
|
the hotkey ? lists the current hotkeys.
|
||||||
|
|
||||||
|
|
||||||
2007-Sep-4 UPDATE Dick Hollenbeck <dick@softplc.com>
|
2007-Sep-4 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||||
================================================================================
|
================================================================================
|
||||||
|
@ -125,7 +133,7 @@ email address.
|
||||||
2007-sept-04 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
2007-sept-04 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||||
================================================================================
|
================================================================================
|
||||||
+ pcbnew
|
+ pcbnew
|
||||||
better comments in editrack-part2 (the todo remark solved)
|
better comments in editrack-part2 (the todo remark solved)
|
||||||
+ todo.txt: note about editrack-part2 modified (problem solved)
|
+ todo.txt: note about editrack-part2 modified (problem solved)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -555,3 +555,29 @@ EDA_BaseStruct* BASE_SCREEN::GetItemFromRedoList()
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
/**
|
||||||
|
* Function Show
|
||||||
|
* is used to output the object tree, currently for debugging only.
|
||||||
|
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||||
|
* of nesting of this object within the overall tree.
|
||||||
|
* @param os The ostream& to output to.
|
||||||
|
*/
|
||||||
|
void BASE_SCREEN::Show( int nestLevel, std::ostream& os )
|
||||||
|
{
|
||||||
|
EDA_BaseStruct* item = EEDrawList;
|
||||||
|
|
||||||
|
// for now, make it look like XML, expand on this later.
|
||||||
|
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() <<
|
||||||
|
">\n";
|
||||||
|
|
||||||
|
for( ; item; item = item->Next() )
|
||||||
|
{
|
||||||
|
item->Show( nestLevel+1, os );
|
||||||
|
}
|
||||||
|
|
||||||
|
NestedSpace( nestLevel, os ) << "</" << GetClass().Lower().mb_str() << ">\n";
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -188,11 +188,14 @@ void EDA_BaseStruct::Show( int nestLevel, std::ostream& os )
|
||||||
// for now, make it look like XML:
|
// for now, make it look like XML:
|
||||||
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() << ">\n";
|
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() << ">\n";
|
||||||
|
|
||||||
|
/*
|
||||||
EDA_BaseStruct* kid = m_Son;
|
EDA_BaseStruct* kid = m_Son;
|
||||||
for( ; kid; kid = kid->Pnext )
|
for( ; kid; kid = kid->Pnext )
|
||||||
{
|
{
|
||||||
kid->Show( nestLevel+1, os );
|
kid->Show( nestLevel+1, os );
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
NestedSpace( nestLevel+1, os ) << "Need ::Show() override, shown class is using EDA_BaseStruct::Show()\n";
|
||||||
|
|
||||||
NestedSpace( nestLevel, os ) << "</" << GetClass().Lower().mb_str() << ">\n";
|
NestedSpace( nestLevel, os ) << "</" << GetClass().Lower().mb_str() << ">\n";
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -90,11 +90,11 @@ class SCH_SCREEN : public BASE_SCREEN
|
||||||
public:
|
public:
|
||||||
SCH_SCREEN( int idtype, KICAD_T aType = SCREEN_STRUCT_TYPE );
|
SCH_SCREEN( int idtype, KICAD_T aType = SCREEN_STRUCT_TYPE );
|
||||||
~SCH_SCREEN();
|
~SCH_SCREEN();
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT("SCH_SCREEN");
|
return wxT("SCH_SCREEN");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void FreeDrawList(); // Free EESchema drawing list (does not delete the sub hierarchies)
|
void FreeDrawList(); // Free EESchema drawing list (does not delete the sub hierarchies)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*********************************/
|
/*********************************/
|
||||||
/* Module de nettoyage du schema */
|
/* Module de nettoyage du schema */
|
||||||
/*********************************/
|
/*********************************/
|
||||||
|
|
||||||
#include "fctsys.h"
|
#include "fctsys.h"
|
||||||
#include "gr_basic.h"
|
#include "gr_basic.h"
|
||||||
|
@ -15,243 +15,254 @@
|
||||||
|
|
||||||
|
|
||||||
/* Routines locales */
|
/* Routines locales */
|
||||||
static int TstAlignSegment(EDA_DrawLineStruct* RefSegm, EDA_DrawLineStruct* TstSegm);
|
static int TstAlignSegment( EDA_DrawLineStruct* RefSegm, EDA_DrawLineStruct* TstSegm );
|
||||||
|
|
||||||
/* Variable locales */
|
/* Variable locales */
|
||||||
|
|
||||||
|
|
||||||
/*******************************************/
|
/*******************************************/
|
||||||
bool SCH_SCREEN::SchematicCleanUp(wxDC * DC)
|
bool SCH_SCREEN::SchematicCleanUp( wxDC* DC )
|
||||||
/*******************************************/
|
/*******************************************/
|
||||||
/* Routine de nettoyage:
|
|
||||||
- regroupe les segments de fils (ou de bus) alignes en 1 seul segment
|
|
||||||
- Detecte les objets identiques superposes
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
EDA_BaseStruct *DrawList, * TstDrawList;
|
|
||||||
int flag;
|
|
||||||
bool Modify = FALSE;
|
|
||||||
|
|
||||||
DrawList = EEDrawList;
|
/* Routine de nettoyage:
|
||||||
for ( ;DrawList != NULL; DrawList = DrawList->Pnext )
|
* - regroupe les segments de fils (ou de bus) alignes en 1 seul segment
|
||||||
{
|
* - Detecte les objets identiques superposes
|
||||||
if( DrawList->Type() == DRAW_SEGMENT_STRUCT_TYPE )
|
*/
|
||||||
{
|
{
|
||||||
TstDrawList = DrawList->Pnext;
|
EDA_BaseStruct* DrawList, * TstDrawList;
|
||||||
while ( TstDrawList )
|
int flag;
|
||||||
{
|
bool Modify = FALSE;
|
||||||
if( TstDrawList->Type() == DRAW_SEGMENT_STRUCT_TYPE )
|
|
||||||
{
|
DrawList = EEDrawList;
|
||||||
flag = TstAlignSegment( (EDA_DrawLineStruct*)DrawList,
|
for( ; DrawList != NULL; DrawList = DrawList->Pnext )
|
||||||
(EDA_DrawLineStruct*)TstDrawList);
|
{
|
||||||
if (flag ) /* Suppression de TstSegm */
|
if( DrawList->Type() == DRAW_SEGMENT_STRUCT_TYPE )
|
||||||
{
|
{
|
||||||
/* keep the bits set in .m_Flags, because the deleted segment can be flagged */
|
TstDrawList = DrawList->Pnext;
|
||||||
DrawList->m_Flags |= TstDrawList->m_Flags;
|
while( TstDrawList )
|
||||||
EraseStruct(TstDrawList, this);
|
{
|
||||||
SetRefreshReq();
|
if( TstDrawList->Type() == DRAW_SEGMENT_STRUCT_TYPE )
|
||||||
TstDrawList = EEDrawList;
|
{
|
||||||
Modify = TRUE;
|
flag = TstAlignSegment( (EDA_DrawLineStruct*) DrawList,
|
||||||
}
|
(EDA_DrawLineStruct*) TstDrawList );
|
||||||
else TstDrawList = TstDrawList->Pnext;
|
if( flag ) /* Suppression de TstSegm */
|
||||||
}
|
{
|
||||||
else TstDrawList = TstDrawList->Pnext;
|
/* keep the bits set in .m_Flags, because the deleted segment can be flagged */
|
||||||
}
|
DrawList->m_Flags |= TstDrawList->m_Flags;
|
||||||
}
|
EraseStruct( TstDrawList, this );
|
||||||
}
|
SetRefreshReq();
|
||||||
EDA_Appl->SchematicFrame->TestDanglingEnds(EEDrawList, DC);
|
TstDrawList = EEDrawList;
|
||||||
return Modify;
|
Modify = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
TstDrawList = TstDrawList->Pnext;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
TstDrawList = TstDrawList->Pnext;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EDA_Appl->SchematicFrame->TestDanglingEnds( EEDrawList, DC );
|
||||||
|
return Modify;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************/
|
/***********************************************/
|
||||||
void BreakSegmentOnJunction( SCH_SCREEN * Screen )
|
void BreakSegmentOnJunction( SCH_SCREEN* Screen )
|
||||||
/************************************************/
|
/************************************************/
|
||||||
|
|
||||||
/* Routine creant des debuts / fin de segment (BUS ou WIRES) sur les jonctions
|
/* Routine creant des debuts / fin de segment (BUS ou WIRES) sur les jonctions
|
||||||
et les raccords
|
* et les raccords
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
EDA_BaseStruct *DrawList;
|
EDA_BaseStruct* DrawList;
|
||||||
|
|
||||||
if( Screen == NULL )
|
if( Screen == NULL )
|
||||||
{
|
{
|
||||||
DisplayError(NULL, wxT("BreakSegmentOnJunction() error: NULL screen"));
|
DisplayError( NULL, wxT( "BreakSegmentOnJunction() error: NULL screen" ) );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawList = Screen->EEDrawList;
|
DrawList = Screen->EEDrawList;
|
||||||
while ( DrawList )
|
while( DrawList )
|
||||||
{
|
{
|
||||||
switch( DrawList->Type() )
|
switch( DrawList->Type() )
|
||||||
{
|
{
|
||||||
case DRAW_JUNCTION_STRUCT_TYPE :
|
case DRAW_JUNCTION_STRUCT_TYPE:
|
||||||
#undef STRUCT
|
#undef STRUCT
|
||||||
#define STRUCT ((DrawJunctionStruct*)DrawList)
|
#define STRUCT ( (DrawJunctionStruct*) DrawList )
|
||||||
BreakSegment(Screen, STRUCT->m_Pos);
|
BreakSegment( Screen, STRUCT->m_Pos );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_BUSENTRY_STRUCT_TYPE :
|
case DRAW_BUSENTRY_STRUCT_TYPE:
|
||||||
#undef STRUCT
|
#undef STRUCT
|
||||||
#define STRUCT ((DrawBusEntryStruct*)DrawList)
|
#define STRUCT ( (DrawBusEntryStruct*) DrawList )
|
||||||
BreakSegment(Screen, STRUCT->m_Pos);
|
BreakSegment( Screen, STRUCT->m_Pos );
|
||||||
BreakSegment(Screen, STRUCT->m_End());
|
BreakSegment( Screen, STRUCT->m_End() );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_SEGMENT_STRUCT_TYPE :
|
case DRAW_SEGMENT_STRUCT_TYPE:
|
||||||
case DRAW_NOCONNECT_STRUCT_TYPE :
|
case DRAW_NOCONNECT_STRUCT_TYPE:
|
||||||
case DRAW_LABEL_STRUCT_TYPE :
|
case DRAW_LABEL_STRUCT_TYPE:
|
||||||
case DRAW_GLOBAL_LABEL_STRUCT_TYPE :
|
case DRAW_GLOBAL_LABEL_STRUCT_TYPE:
|
||||||
case DRAW_LIB_ITEM_STRUCT_TYPE :
|
case DRAW_LIB_ITEM_STRUCT_TYPE:
|
||||||
case DRAW_PICK_ITEM_STRUCT_TYPE :
|
case DRAW_PICK_ITEM_STRUCT_TYPE:
|
||||||
case DRAW_POLYLINE_STRUCT_TYPE :
|
case DRAW_POLYLINE_STRUCT_TYPE:
|
||||||
case DRAW_MARKER_STRUCT_TYPE :
|
case DRAW_MARKER_STRUCT_TYPE:
|
||||||
case DRAW_TEXT_STRUCT_TYPE :
|
case DRAW_TEXT_STRUCT_TYPE:
|
||||||
case DRAW_SHEET_STRUCT_TYPE :
|
case DRAW_SHEET_STRUCT_TYPE:
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE :
|
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default :
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
DrawList = DrawList->Pnext;
|
DrawList = DrawList->Pnext;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************/
|
/*********************************************************/
|
||||||
DrawPickedStruct * BreakSegment(SCH_SCREEN * screen,
|
DrawPickedStruct* BreakSegment( SCH_SCREEN* screen,
|
||||||
wxPoint breakpoint, bool PutInUndoList)
|
wxPoint breakpoint, bool PutInUndoList )
|
||||||
/*********************************************************/
|
/*********************************************************/
|
||||||
|
|
||||||
/* Coupe un segment ( BUS, WIRE ) en 2 au point breakpoint,
|
/* Coupe un segment ( BUS, WIRE ) en 2 au point breakpoint,
|
||||||
- si ce point est sur le segment
|
* - si ce point est sur le segment
|
||||||
- extremites non comprises
|
* - extremites non comprises
|
||||||
If PutInUndoList == TRUE, create a list of modifictions, for undo command
|
* If PutInUndoList == TRUE, create a list of modifictions, for undo command
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
EDA_BaseStruct *DrawList;
|
EDA_BaseStruct* DrawList;
|
||||||
EDA_DrawLineStruct * segment, * NewSegment;
|
EDA_DrawLineStruct* segment, * NewSegment;
|
||||||
int ox, oy, fx, fy;
|
int ox, oy, fx, fy;
|
||||||
DrawPickedStruct * List = NULL;
|
DrawPickedStruct* List = NULL;
|
||||||
|
|
||||||
DrawList = screen->EEDrawList;
|
|
||||||
while ( DrawList )
|
|
||||||
{
|
|
||||||
switch( DrawList->Type() )
|
|
||||||
{
|
|
||||||
case DRAW_SEGMENT_STRUCT_TYPE :
|
|
||||||
segment = (EDA_DrawLineStruct*)DrawList;
|
|
||||||
ox = segment->m_Start.x; oy = segment->m_Start.y;
|
|
||||||
fx = segment->m_End.x; fy = segment->m_End.y;
|
|
||||||
if( distance( fx - ox, fy - oy, breakpoint.x - ox, breakpoint.y - oy, 0 ) == 0 )
|
|
||||||
break;
|
|
||||||
/* Segment connecte: doit etre coupe en 2 si px,py n'est
|
|
||||||
pas une extremite */
|
|
||||||
if( (ox == breakpoint.x) && (oy == breakpoint.y ) ) break;
|
|
||||||
if( (fx == breakpoint.x) && (fy == breakpoint.y ) ) break;
|
|
||||||
/* Ici il faut couper le segment en 2 */
|
|
||||||
if ( PutInUndoList ) // First: put copy of the old segment in undo list
|
|
||||||
{
|
|
||||||
DrawPickedStruct * wrapper = new DrawPickedStruct();
|
|
||||||
wrapper->m_Flags = IS_CHANGED;
|
|
||||||
wrapper->m_PickedStruct = segment->GenCopy();
|
|
||||||
wrapper->m_Image = segment;
|
|
||||||
wrapper->m_PickedStruct->m_Image = segment;
|
|
||||||
wrapper->Pnext = List;
|
|
||||||
List = wrapper;
|
|
||||||
}
|
|
||||||
NewSegment = segment->GenCopy();
|
|
||||||
NewSegment->m_Start = breakpoint;
|
|
||||||
segment->m_End = NewSegment->m_Start;
|
|
||||||
NewSegment->Pnext = segment->Pnext;
|
|
||||||
segment->Pnext = NewSegment;
|
|
||||||
DrawList = NewSegment;
|
|
||||||
if ( PutInUndoList )
|
|
||||||
{
|
|
||||||
DrawPickedStruct * wrapper = new DrawPickedStruct();
|
|
||||||
wrapper->m_Flags = IS_NEW;
|
|
||||||
wrapper->m_Image = NewSegment;
|
|
||||||
wrapper->Pnext = List;
|
|
||||||
List = wrapper;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAW_JUNCTION_STRUCT_TYPE :
|
DrawList = screen->EEDrawList;
|
||||||
case DRAW_BUSENTRY_STRUCT_TYPE :
|
while( DrawList )
|
||||||
case DRAW_POLYLINE_STRUCT_TYPE :
|
{
|
||||||
break;
|
switch( DrawList->Type() )
|
||||||
|
{
|
||||||
|
case DRAW_SEGMENT_STRUCT_TYPE:
|
||||||
|
segment = (EDA_DrawLineStruct*) DrawList;
|
||||||
|
ox = segment->m_Start.x; oy = segment->m_Start.y;
|
||||||
|
fx = segment->m_End.x; fy = segment->m_End.y;
|
||||||
|
if( distance( fx - ox, fy - oy, breakpoint.x - ox, breakpoint.y - oy, 0 ) == 0 )
|
||||||
|
break;
|
||||||
|
|
||||||
default :
|
/* Segment connecte: doit etre coupe en 2 si px,py n'est
|
||||||
break;
|
* pas une extremite */
|
||||||
}
|
if( (ox == breakpoint.x) && (oy == breakpoint.y ) )
|
||||||
DrawList = DrawList->Pnext;
|
break;
|
||||||
}
|
if( (fx == breakpoint.x) && (fy == breakpoint.y ) )
|
||||||
|
break;
|
||||||
return List;
|
/* Ici il faut couper le segment en 2 */
|
||||||
|
if( PutInUndoList ) // First: put copy of the old segment in undo list
|
||||||
|
{
|
||||||
|
DrawPickedStruct* wrapper = new DrawPickedStruct();
|
||||||
|
|
||||||
|
wrapper->m_Flags = IS_CHANGED;
|
||||||
|
wrapper->m_PickedStruct = segment->GenCopy();
|
||||||
|
wrapper->m_Image = segment;
|
||||||
|
wrapper->m_PickedStruct->m_Image = segment;
|
||||||
|
wrapper->Pnext = List;
|
||||||
|
List = wrapper;
|
||||||
|
}
|
||||||
|
NewSegment = segment->GenCopy();
|
||||||
|
NewSegment->m_Start = breakpoint;
|
||||||
|
segment->m_End = NewSegment->m_Start;
|
||||||
|
NewSegment->Pnext = segment->Pnext;
|
||||||
|
segment->Pnext = NewSegment;
|
||||||
|
DrawList = NewSegment;
|
||||||
|
if( PutInUndoList )
|
||||||
|
{
|
||||||
|
DrawPickedStruct* wrapper = new DrawPickedStruct();
|
||||||
|
|
||||||
|
wrapper->m_Flags = IS_NEW;
|
||||||
|
wrapper->m_Image = NewSegment;
|
||||||
|
wrapper->Pnext = List;
|
||||||
|
List = wrapper;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DRAW_JUNCTION_STRUCT_TYPE:
|
||||||
|
case DRAW_BUSENTRY_STRUCT_TYPE:
|
||||||
|
case DRAW_POLYLINE_STRUCT_TYPE:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawList = DrawList->Pnext;
|
||||||
|
}
|
||||||
|
|
||||||
|
return List;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************/
|
/***********************************************************/
|
||||||
static int TstAlignSegment( EDA_DrawLineStruct* RefSegm,
|
static int TstAlignSegment( EDA_DrawLineStruct* RefSegm,
|
||||||
EDA_DrawLineStruct* TstSegm)
|
EDA_DrawLineStruct* TstSegm )
|
||||||
/***********************************************************/
|
/***********************************************************/
|
||||||
|
|
||||||
/* Search if the 2 segments RefSegm and TstSegm are on a line.
|
/* Search if the 2 segments RefSegm and TstSegm are on a line.
|
||||||
Retourn 0 if no
|
* Retourn 0 if no
|
||||||
1 if yes, and RefSegm is modified to be the equivalent segment
|
* 1 if yes, and RefSegm is modified to be the equivalent segment
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
if( RefSegm == TstSegm ) return(0);
|
if( RefSegm == TstSegm )
|
||||||
if( RefSegm->m_Layer != TstSegm->m_Layer ) return(0);
|
return 0;
|
||||||
|
if( RefSegm->m_Layer != TstSegm->m_Layer )
|
||||||
// search for a common end, and modify coordinates to ensure RefSegm->m_End == TstSegm->m_Start
|
return 0;
|
||||||
if ( RefSegm->m_Start == TstSegm->m_Start )
|
|
||||||
{
|
|
||||||
if ( RefSegm->m_End == TstSegm->m_End ) // trivial case: RefSegm and TstSegm are identical
|
|
||||||
return 1;
|
|
||||||
EXCHG(RefSegm->m_Start, RefSegm->m_End); // at this point, RefSegm->m_End == TstSegm->m_Start
|
|
||||||
}
|
|
||||||
else if ( RefSegm->m_Start == TstSegm->m_End )
|
|
||||||
{
|
|
||||||
EXCHG(RefSegm->m_Start, RefSegm->m_End);
|
|
||||||
EXCHG(TstSegm->m_Start, TstSegm->m_End); // at this point, RefSegm->m_End == TstSegm->m_Start
|
|
||||||
}
|
|
||||||
else if ( RefSegm->m_End == TstSegm->m_End )
|
|
||||||
{
|
|
||||||
EXCHG(TstSegm->m_Start, TstSegm->m_End); // at this point, RefSegm->m_End == TstSegm->m_Start
|
|
||||||
}
|
|
||||||
else if ( RefSegm->m_End != TstSegm->m_Start ) // No common end point, segments cannot be merged
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Test alignment: */
|
// search for a common end, and modify coordinates to ensure RefSegm->m_End == TstSegm->m_Start
|
||||||
if ( RefSegm->m_Start.y == RefSegm->m_End.y ) // Horizontal segment
|
if( RefSegm->m_Start == TstSegm->m_Start )
|
||||||
{
|
{
|
||||||
if ( TstSegm->m_Start.y == TstSegm->m_End.y )
|
if( RefSegm->m_End == TstSegm->m_End ) // trivial case: RefSegm and TstSegm are identical
|
||||||
{
|
return 1;
|
||||||
RefSegm->m_End = TstSegm->m_End;
|
EXCHG( RefSegm->m_Start, RefSegm->m_End ); // at this point, RefSegm->m_End == TstSegm->m_Start
|
||||||
return 1;
|
}
|
||||||
}
|
else if( RefSegm->m_Start == TstSegm->m_End )
|
||||||
}
|
{
|
||||||
|
EXCHG( RefSegm->m_Start, RefSegm->m_End );
|
||||||
else if ( RefSegm->m_Start.x == RefSegm->m_End.x ) // Vertical segment
|
EXCHG( TstSegm->m_Start, TstSegm->m_End ); // at this point, RefSegm->m_End == TstSegm->m_Start
|
||||||
{
|
}
|
||||||
if ( TstSegm->m_Start.x == TstSegm->m_End.x )
|
else if( RefSegm->m_End == TstSegm->m_End )
|
||||||
{
|
{
|
||||||
RefSegm->m_End = TstSegm->m_End;
|
EXCHG( TstSegm->m_Start, TstSegm->m_End ); // at this point, RefSegm->m_End == TstSegm->m_Start
|
||||||
return 1;
|
}
|
||||||
}
|
else if( RefSegm->m_End != TstSegm->m_Start ) // No common end point, segments cannot be merged
|
||||||
}
|
return 0;
|
||||||
|
|
||||||
else
|
/* Test alignment: */
|
||||||
{
|
if( RefSegm->m_Start.y == RefSegm->m_End.y ) // Horizontal segment
|
||||||
if (atan2(RefSegm->m_Start.x - RefSegm->m_End.x, RefSegm->m_Start.y - RefSegm->m_End.y) ==
|
{
|
||||||
atan2(TstSegm->m_Start.x - TstSegm->m_End.x, TstSegm->m_Start.y - TstSegm->m_End.y) )
|
if( TstSegm->m_Start.y == TstSegm->m_End.y )
|
||||||
{
|
{
|
||||||
RefSegm->m_End = TstSegm->m_End;
|
RefSegm->m_End = TstSegm->m_End;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if( RefSegm->m_Start.x == RefSegm->m_End.x ) // Vertical segment
|
||||||
return(0);
|
{
|
||||||
|
if( TstSegm->m_Start.x == TstSegm->m_End.x )
|
||||||
|
{
|
||||||
|
RefSegm->m_End = TstSegm->m_End;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if( atan2( RefSegm->m_Start.x - RefSegm->m_End.x, RefSegm->m_Start.y -
|
||||||
|
RefSegm->m_End.y ) ==
|
||||||
|
atan2( TstSegm->m_Start.x - TstSegm->m_End.x, TstSegm->m_Start.y - TstSegm->m_End.y ) )
|
||||||
|
{
|
||||||
|
RefSegm->m_End = TstSegm->m_End;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -143,6 +143,23 @@ wxString DrawMarkerStruct::GetComment()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
/**
|
||||||
|
* Function Show
|
||||||
|
* is used to output the object tree, currently for debugging only.
|
||||||
|
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||||
|
* of nesting of this object within the overall tree.
|
||||||
|
* @param os The ostream& to output to.
|
||||||
|
*/
|
||||||
|
void DrawMarkerStruct::Show( int nestLevel, std::ostream& os )
|
||||||
|
{
|
||||||
|
// for now, make it look like XML:
|
||||||
|
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() << m_Pos
|
||||||
|
<< "/>\n";
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/***************************/
|
/***************************/
|
||||||
/* Class EDA_DrawLineStruct */
|
/* Class EDA_DrawLineStruct */
|
||||||
/***************************/
|
/***************************/
|
||||||
|
@ -201,6 +218,28 @@ bool EDA_DrawLineStruct::IsOneEndPointAt( const wxPoint& pos )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
/**
|
||||||
|
* Function Show
|
||||||
|
* is used to output the object tree, currently for debugging only.
|
||||||
|
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||||
|
* of nesting of this object within the overall tree.
|
||||||
|
* @param os The ostream& to output to.
|
||||||
|
*/
|
||||||
|
void EDA_DrawLineStruct::Show( int nestLevel, std::ostream& os )
|
||||||
|
{
|
||||||
|
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() <<
|
||||||
|
" layer=\"" << m_Layer << '"' <<
|
||||||
|
" width=\"" << m_Width << '"' <<
|
||||||
|
" startIsDangling=\"" << m_StartIsDangling << '"' <<
|
||||||
|
" endIsDangling=\"" << m_EndIsDangling << '"' << ">" <<
|
||||||
|
" <start" << m_Start << "/>" <<
|
||||||
|
" <end" << m_End << "/>" <<
|
||||||
|
"</" << GetClass().Lower().mb_str() << ">\n";
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/****************************/
|
/****************************/
|
||||||
/* Class DrawPolylineStruct */
|
/* Class DrawPolylineStruct */
|
||||||
/****************************/
|
/****************************/
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
/* Definition de la representation du composant */
|
/* Definition de la representation du composant */
|
||||||
#define NUMBER_OF_FIELDS 12 /* Nombre de champs de texte affectes au composant */
|
#define NUMBER_OF_FIELDS 12 /* Nombre de champs de texte affectes au composant */
|
||||||
typedef enum {
|
enum NumFieldType {
|
||||||
REFERENCE = 0, /* Champ Reference of part, i.e. "IC21" */
|
REFERENCE = 0, /* Champ Reference of part, i.e. "IC21" */
|
||||||
VALUE, /* Champ Value of part, i.e. "3.3K" */
|
VALUE, /* Champ Value of part, i.e. "3.3K" */
|
||||||
FOOTPRINT, /* Champ Name Module PCB, i.e. "16DIP300" */
|
FOOTPRINT, /* Champ Name Module PCB, i.e. "16DIP300" */
|
||||||
|
@ -28,7 +28,7 @@ typedef enum {
|
||||||
FIELD6,
|
FIELD6,
|
||||||
FIELD7,
|
FIELD7,
|
||||||
FIELD8
|
FIELD8
|
||||||
} NumFieldType;
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Class to manage component fields.
|
/* Class to manage component fields.
|
||||||
|
@ -46,9 +46,10 @@ public:
|
||||||
public:
|
public:
|
||||||
PartTextStruct( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString );
|
PartTextStruct( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString );
|
||||||
~PartTextStruct();
|
~PartTextStruct();
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT( "PartTextStruct" );
|
return wxT( "PartText" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -77,10 +78,18 @@ public:
|
||||||
public:
|
public:
|
||||||
DrawPartStruct( KICAD_T struct_type, const wxPoint &pos );
|
DrawPartStruct( KICAD_T struct_type, const wxPoint &pos );
|
||||||
~DrawPartStruct();
|
~DrawPartStruct();
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT( "DrawPartStruct" );
|
return wxT( "DrawPart" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetReference
|
||||||
|
* returns a reference to the Reference
|
||||||
|
*/
|
||||||
|
const wxString& GetReference() { return m_Field[REFERENCE].m_Text; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -101,19 +110,30 @@ public:
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT( "EDA_SchComponentStruct" );
|
return wxT( "EDA_SchComponent" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
EDA_SchComponentStruct* GenCopy( void );
|
EDA_SchComponentStruct* GenCopy();
|
||||||
void SetRotationMiroir( int type );
|
void SetRotationMiroir( int type );
|
||||||
int GetRotationMiroir();
|
int GetRotationMiroir();
|
||||||
wxPoint GetScreenCoord( const wxPoint& coord );
|
wxPoint GetScreenCoord( const wxPoint& coord );
|
||||||
void Display_Infos( WinEDA_DrawFrame* frame );
|
void Display_Infos( WinEDA_DrawFrame* frame );
|
||||||
void ClearAnnotation();
|
void ClearAnnotation();
|
||||||
EDA_Rect GetBoundaryBox();
|
EDA_Rect GetBoundaryBox();
|
||||||
wxString ReturnFieldName( int FieldNumber );
|
|
||||||
|
|
||||||
|
const wxString& ReturnFieldName( int aFieldNdx ) const;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetFieldValue
|
||||||
|
* returns a reference to the field value.
|
||||||
|
* @param aFieldNdx An index into the array of fields, 0 - FIELD8
|
||||||
|
* @return const wxString& - the field value or wxEmptyString
|
||||||
|
*/
|
||||||
|
const wxString& GetFieldValue( int aFieldNdx ) const;
|
||||||
|
|
||||||
|
|
||||||
virtual void Draw( WinEDA_DrawPanel* panel,
|
virtual void Draw( WinEDA_DrawPanel* panel,
|
||||||
wxDC* DC,
|
wxDC* DC,
|
||||||
const wxPoint& offset,
|
const wxPoint& offset,
|
||||||
|
@ -122,6 +142,17 @@ public:
|
||||||
void SwapData( EDA_SchComponentStruct* copyitem );
|
void SwapData( EDA_SchComponentStruct* copyitem );
|
||||||
|
|
||||||
virtual void Place( WinEDA_DrawFrame* frame, wxDC* DC );
|
virtual void Place( WinEDA_DrawFrame* frame, wxDC* DC );
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
/**
|
||||||
|
* Function Show
|
||||||
|
* is used to output the object tree, currently for debugging only.
|
||||||
|
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||||
|
* of nesting of this object within the overall tree.
|
||||||
|
* @param os The ostream& to output to.
|
||||||
|
*/
|
||||||
|
void Show( int nestLevel, std::ostream& os );
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
1285
eeschema/erc.cpp
1285
eeschema/erc.cpp
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -272,8 +272,7 @@ bool WinEDA_SchematicFrame::LoadOneEEFile( SCH_SCREEN* screen, const wxString& F
|
||||||
if( !Failed )
|
if( !Failed )
|
||||||
{
|
{
|
||||||
PolylineStruct->Pnext = screen->EEDrawList;
|
PolylineStruct->Pnext = screen->EEDrawList;
|
||||||
screen->EEDrawList = (EDA_BaseStruct*)
|
screen->EEDrawList = (EDA_BaseStruct*) PolylineStruct;
|
||||||
PolylineStruct;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -441,6 +440,10 @@ bool WinEDA_SchematicFrame::LoadOneEEFile( SCH_SCREEN* screen, const wxString& F
|
||||||
|
|
||||||
screen->EEDrawList = Phead;
|
screen->EEDrawList = Phead;
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
screen->Show( 0, std::cout );
|
||||||
|
#endif
|
||||||
|
|
||||||
fclose( f );
|
fclose( f );
|
||||||
|
|
||||||
TestDanglingEnds( screen->EEDrawList, NULL );
|
TestDanglingEnds( screen->EEDrawList, NULL );
|
||||||
|
|
1793
eeschema/netlist.cpp
1793
eeschema/netlist.cpp
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,6 @@
|
||||||
/**********************************************/
|
/**********************************************/
|
||||||
/* Module de calcul de la Netliste: netlist.h */
|
/* Module de calcul de la Netliste: netlist.h */
|
||||||
/**********************************************/
|
/**********************************************/
|
||||||
|
|
||||||
#ifndef _NETLIST_H_
|
#ifndef _NETLIST_H_
|
||||||
#define _NETLIST_H_
|
#define _NETLIST_H_
|
||||||
|
@ -15,98 +15,99 @@
|
||||||
|
|
||||||
|
|
||||||
/* Indicateurs de type de netliste generee */
|
/* Indicateurs de type de netliste generee */
|
||||||
typedef enum
|
typedef enum {
|
||||||
{
|
NET_TYPE_NOT_INIT = 0,
|
||||||
NET_TYPE_NOT_INIT = 0,
|
NET_TYPE_PCBNEW,
|
||||||
NET_TYPE_PCBNEW,
|
NET_TYPE_ORCADPCB2,
|
||||||
NET_TYPE_ORCADPCB2,
|
NET_TYPE_CADSTAR,
|
||||||
NET_TYPE_CADSTAR,
|
NET_TYPE_SPICE,
|
||||||
NET_TYPE_SPICE,
|
NET_TYPE_CUSTOM1,
|
||||||
NET_TYPE_CUSTOM1,
|
NET_TYPE_CUSTOM2,
|
||||||
NET_TYPE_CUSTOM2,
|
NET_TYPE_CUSTOM3,
|
||||||
NET_TYPE_CUSTOM3,
|
NET_TYPE_CUSTOM4,
|
||||||
NET_TYPE_CUSTOM4,
|
NET_TYPE_CUSTOM5,
|
||||||
NET_TYPE_CUSTOM5,
|
NET_TYPE_CUSTOM6,
|
||||||
NET_TYPE_CUSTOM6,
|
NET_TYPE_CUSTOM7,
|
||||||
NET_TYPE_CUSTOM7,
|
NET_TYPE_CUSTOM8,
|
||||||
NET_TYPE_CUSTOM8,
|
NET_TYPE_MAX
|
||||||
NET_TYPE_MAX
|
} TypeNetForm;
|
||||||
} TypeNetForm ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Max pin number per component and footprint */
|
/* Max pin number per component and footprint */
|
||||||
#define MAXPIN 5000
|
#define MAXPIN 5000
|
||||||
|
|
||||||
typedef enum { /* Type des objets de Net */
|
typedef enum { /* Type des objets de Net */
|
||||||
NET_SEGMENT,
|
NET_SEGMENT,
|
||||||
NET_BUS,
|
NET_BUS,
|
||||||
NET_JONCTION,
|
NET_JONCTION,
|
||||||
NET_LABEL,
|
NET_LABEL,
|
||||||
NET_GLOBLABEL,
|
NET_GLOBLABEL,
|
||||||
NET_BUSLABELMEMBER,
|
NET_BUSLABELMEMBER,
|
||||||
NET_GLOBBUSLABELMEMBER,
|
NET_GLOBBUSLABELMEMBER,
|
||||||
NET_SHEETBUSLABELMEMBER,
|
NET_SHEETBUSLABELMEMBER,
|
||||||
NET_SHEETLABEL,
|
NET_SHEETLABEL,
|
||||||
NET_PINLABEL,
|
NET_PINLABEL,
|
||||||
NET_PIN,
|
NET_PIN,
|
||||||
NET_NOCONNECT
|
NET_NOCONNECT
|
||||||
} NetObjetType;
|
} NetObjetType;
|
||||||
|
|
||||||
typedef enum { /* Valeur du Flag de connection */
|
typedef enum { /* Valeur du Flag de connection */
|
||||||
UNCONNECT, /* Pin ou Label non connecte */
|
UNCONNECT, /* Pin ou Label non connecte */
|
||||||
NOCONNECT, /* Pin volontairement non connectee (Symb. NoConnect utilise) */
|
NOCONNECT, /* Pin volontairement non connectee (Symb. NoConnect utilise) */
|
||||||
CONNECT /* connexion normale */
|
CONNECT /* connexion normale */
|
||||||
} IsConnectType;
|
} IsConnectType;
|
||||||
|
|
||||||
|
|
||||||
/* Structure decrivant 1 element de connexion (pour netlist ) */
|
/* Structure decrivant 1 element de connexion (pour netlist ) */
|
||||||
class ObjetNetListStruct
|
class ObjetNetListStruct
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void * m_Comp; /* Pointeur sur la definition de l'objet */
|
void* m_Comp; /* Pointeur sur la definition de l'objet */
|
||||||
void * m_Link; /* Pour SheetLabelStruct: Pointeur sur la feuille de hierarchie
|
void* m_Link; /* Pour SheetLabelStruct: Pointeur sur la feuille de hierarchie
|
||||||
Pour les Pins: pointeur sur le composant */
|
* Pour les Pins: pointeur sur le composant */
|
||||||
int m_Flag; /* flag pour calculs internes */
|
int m_Flag; /* flag pour calculs internes */
|
||||||
SCH_SCREEN * m_Screen; /* Ecran d'appartenance */
|
SCH_SCREEN* m_Screen; /* Ecran d'appartenance */
|
||||||
NetObjetType m_Type;
|
NetObjetType m_Type;
|
||||||
int m_ElectricalType; /* Pour Pins et sheet labels: type electrique */
|
int m_ElectricalType; /* Pour Pins et sheet labels: type electrique */
|
||||||
int m_NetCode; /* pour elements simples */
|
int m_NetCode; /* pour elements simples */
|
||||||
int m_BusNetCode; /* pour connexions type bus */
|
int m_BusNetCode; /* pour connexions type bus */
|
||||||
int m_Member; /* pour les labels type BUSWIRE ( labels de bus eclate )
|
int m_Member; /* pour les labels type BUSWIRE ( labels de bus eclate )
|
||||||
numero de membre */
|
* numero de membre */
|
||||||
IsConnectType m_FlagOfConnection;
|
IsConnectType m_FlagOfConnection;
|
||||||
int m_SheetNumber; /* Sheet number for this item */
|
int m_SheetNumber; /* Sheet number for this item */
|
||||||
int m_NumInclude; /* Numero de sous schema correpondant a la sheet (Gestion des GLabels et Pin Sheet)*/
|
int m_NumInclude; /* Numero de sous schema correpondant a la sheet (Gestion des GLabels et Pin Sheet)*/
|
||||||
long m_PinNum; /* numero de pin( 4 octets -> 4 codes ascii) */
|
long m_PinNum; /* numero de pin( 4 octets -> 4 codes ascii) */
|
||||||
const wxString * m_Label; /* Tous types Labels:pointeur sur la wxString definissant le label */
|
const wxString* m_Label; /* Tous types Labels:pointeur sur la wxString definissant le label */
|
||||||
wxPoint m_Start, m_End;
|
wxPoint m_Start, m_End;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Structure decrivant 1 composant de la schematique (pour annotation ) */
|
/* Structure decrivant 1 composant de la schematique (pour annotation ) */
|
||||||
struct CmpListStruct
|
struct CmpListStruct
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
EDA_SchComponentStruct * m_Cmp; /* Pointeur sur le composant */
|
EDA_SchComponentStruct* m_Cmp; /* Pointeur sur le composant */
|
||||||
int m_NbParts; /* Nombre de parts par boitier */
|
int m_NbParts; /* Nombre de parts par boitier */
|
||||||
bool m_PartsLocked; // For multi part components: True if the part cannot be changed
|
bool m_PartsLocked; // For multi part components: True if the part cannot be changed
|
||||||
int m_Unit; /* Numero de part */
|
int m_Unit; /* Numero de part */
|
||||||
int m_Sheet; /* Numero de hierarchie */
|
int m_Sheet; /* Numero de hierarchie */
|
||||||
unsigned long m_TimeStamp; /* Signature temporelle */
|
unsigned long m_TimeStamp; /* Signature temporelle */
|
||||||
int m_IsNew; /* != 0 pour composants non annotes */
|
int m_IsNew; /* != 0 pour composants non annotes */
|
||||||
char m_TextValue[32]; /* Valeur */
|
char m_TextValue[32]; /* Valeur */
|
||||||
char m_TextRef[32]; /* Reference ( hors numero ) */
|
char m_TextRef[32]; /* Reference ( hors numero ) */
|
||||||
int m_NumRef; /* Numero de reference */
|
int m_NumRef; /* Numero de reference */
|
||||||
int m_Flag; /* flag pour calculs internes */
|
int m_Flag; /* flag pour calculs internes */
|
||||||
wxPoint m_Pos; /* position components */
|
wxPoint m_Pos; /* position components */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Global Variables */
|
/* Global Variables */
|
||||||
eda_global int g_NbrObjNet;
|
eda_global int g_NbrObjNet;
|
||||||
eda_global ObjetNetListStruct *g_TabObjNet;
|
eda_global ObjetNetListStruct* g_TabObjNet;
|
||||||
|
|
||||||
/* Prototypes: */
|
/* Prototypes: */
|
||||||
void WriteNetList(WinEDA_SchematicFrame * frame, const wxString & FileNameNL, bool use_netnames);
|
void WriteNetList( WinEDA_SchematicFrame* frame, const wxString& FileNameNL, bool use_netnames );
|
||||||
void FreeTabNetList(ObjetNetListStruct * TabNetItems, int NbrNetItems);
|
void FreeTabNetList( ObjetNetListStruct* TabNetItems, int NbrNetItems );
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -75,9 +75,10 @@ public:
|
||||||
public:
|
public:
|
||||||
EDA_DrawLineStruct( const wxPoint& pos, int layer );
|
EDA_DrawLineStruct( const wxPoint& pos, int layer );
|
||||||
~EDA_DrawLineStruct() { }
|
~EDA_DrawLineStruct() { }
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT( "EDA_DrawLineStruct" );
|
return wxT( "EDA_DrawLine" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -92,6 +93,17 @@ public:
|
||||||
|
|
||||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode,
|
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode,
|
||||||
int Color = -1 );
|
int Color = -1 );
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
/**
|
||||||
|
* Function Show
|
||||||
|
* is used to output the object tree, currently for debugging only.
|
||||||
|
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||||
|
* of nesting of this object within the overall tree.
|
||||||
|
* @param os The ostream& to output to.
|
||||||
|
*/
|
||||||
|
void Show( int nestLevel, std::ostream& os );
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -108,7 +120,7 @@ public:
|
||||||
~DrawMarkerStruct();
|
~DrawMarkerStruct();
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT( "DrawMarkerStruct" );
|
return wxT( "DrawMarker" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -116,6 +128,16 @@ public:
|
||||||
wxString GetComment();
|
wxString GetComment();
|
||||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||||
int draw_mode, int Color = -1 );
|
int draw_mode, int Color = -1 );
|
||||||
|
#if defined(DEBUG)
|
||||||
|
/**
|
||||||
|
* Function Show
|
||||||
|
* is used to output the object tree, currently for debugging only.
|
||||||
|
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||||
|
* of nesting of this object within the overall tree.
|
||||||
|
* @param os The ostream& to output to.
|
||||||
|
*/
|
||||||
|
void Show( int nestLevel, std::ostream& os );
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -129,7 +151,7 @@ public:
|
||||||
~DrawNoConnectStruct() { }
|
~DrawNoConnectStruct() { }
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT( "DrawNoConnectStruct" );
|
return wxT( "DrawNoConnect" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -154,9 +176,10 @@ public:
|
||||||
public:
|
public:
|
||||||
DrawBusEntryStruct( const wxPoint& pos, int shape, int id );
|
DrawBusEntryStruct( const wxPoint& pos, int shape, int id );
|
||||||
~DrawBusEntryStruct() { }
|
~DrawBusEntryStruct() { }
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT( "DrawBusEntryStruct" );
|
return wxT( "DrawBusEntry" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -177,9 +200,10 @@ public:
|
||||||
public:
|
public:
|
||||||
DrawPolylineStruct( int layer );
|
DrawPolylineStruct( int layer );
|
||||||
~DrawPolylineStruct();
|
~DrawPolylineStruct();
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT( "DrawPolylineStruct" );
|
return wxT( "DrawPolyline" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -197,9 +221,10 @@ public:
|
||||||
public:
|
public:
|
||||||
DrawJunctionStruct( const wxPoint& pos );
|
DrawJunctionStruct( const wxPoint& pos );
|
||||||
~DrawJunctionStruct() { }
|
~DrawJunctionStruct() { }
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT( "DrawJunctionStruct" );
|
return wxT( "DrawJunction" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -209,8 +234,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class DrawTextStruct : public EDA_BaseStruct
|
class DrawTextStruct : public EDA_BaseStruct, public EDA_TextStruct
|
||||||
, public EDA_TextStruct
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int m_Layer;
|
int m_Layer;
|
||||||
|
@ -224,7 +248,7 @@ public:
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT( "DrawTextStruct" );
|
return wxT( "DrawText" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -248,7 +272,7 @@ public:
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT( "DrawLabelStruct" );
|
return wxT( "DrawLabel" );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -264,7 +288,7 @@ public:
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT( "DrawGlobalLabelStruct" );
|
return wxT( "DrawGlobalLabel" );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ LibEDA_BaseStruct * LocatePin(const wxPoint & RefPos,
|
||||||
int Unit, int Convert, EDA_SchComponentStruct * DrawItem = NULL);
|
int Unit, int Convert, EDA_SchComponentStruct * DrawItem = NULL);
|
||||||
/* Routine de localisation d'une PIN de la PartLib pointee par Entry */
|
/* Routine de localisation d'une PIN de la PartLib pointee par Entry */
|
||||||
|
|
||||||
wxString ReturnDefaultFieldName(int FieldNumber);
|
const wxString& ReturnDefaultFieldName( int aFieldNdx );
|
||||||
|
|
||||||
|
|
||||||
/***************/
|
/***************/
|
||||||
|
|
|
@ -215,7 +215,7 @@ private:
|
||||||
char m_FlagRefreshReq; /* indique que l'ecran doit redessine */
|
char m_FlagRefreshReq; /* indique que l'ecran doit redessine */
|
||||||
char m_FlagModified; // indique modif du PCB,utilise pour eviter une sortie sans sauvegarde
|
char m_FlagModified; // indique modif du PCB,utilise pour eviter une sortie sans sauvegarde
|
||||||
char m_FlagSave; // indique sauvegarde auto faite
|
char m_FlagSave; // indique sauvegarde auto faite
|
||||||
EDA_BaseStruct* m_CurrentItem; ///< Current selected object
|
EDA_BaseStruct* m_CurrentItem; ///< Currently selected object
|
||||||
|
|
||||||
/* Valeurs du pas de grille et du zoom */
|
/* Valeurs du pas de grille et du zoom */
|
||||||
public:
|
public:
|
||||||
|
@ -260,16 +260,11 @@ public:
|
||||||
/**
|
/**
|
||||||
* Function SetCurItem
|
* Function SetCurItem
|
||||||
* sets the currently selected object, m_CurrentItem.
|
* sets the currently selected object, m_CurrentItem.
|
||||||
* This is intentionally not inlined so we can set breakpoints on the
|
|
||||||
* activity easier in base_screen.cpp.
|
|
||||||
* @param current Any object derived from EDA_BaseStruct
|
* @param current Any object derived from EDA_BaseStruct
|
||||||
*/
|
*/
|
||||||
void SetCurItem( EDA_BaseStruct* current )
|
void SetCurItem( EDA_BaseStruct* current ) { m_CurrentItem = current; }
|
||||||
{
|
|
||||||
m_CurrentItem = current;
|
|
||||||
}
|
|
||||||
|
|
||||||
EDA_BaseStruct* GetCurItem() const { return m_CurrentItem; }
|
EDA_BaseStruct* GetCurItem() const { return m_CurrentItem; }
|
||||||
|
|
||||||
|
|
||||||
/* fonctions relatives au zoom */
|
/* fonctions relatives au zoom */
|
||||||
int GetZoom(); /* retourne le coeff de zoom */
|
int GetZoom(); /* retourne le coeff de zoom */
|
||||||
|
@ -313,6 +308,18 @@ public:
|
||||||
{
|
{
|
||||||
return wxT( "BASE_SCREEN" );
|
return wxT( "BASE_SCREEN" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
/**
|
||||||
|
* Function Show
|
||||||
|
* is used to output the object tree, currently for debugging only.
|
||||||
|
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||||
|
* of nesting of this object within the overall tree.
|
||||||
|
* @param os The ostream& to output to.
|
||||||
|
*/
|
||||||
|
void Show( int nestLevel, std::ostream& os );
|
||||||
|
#endif
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -441,10 +441,10 @@ BOARD_ITEM* WinEDA_BasePcbFrame::PcbGeneralLocateAndDisplay()
|
||||||
{
|
{
|
||||||
wxMenu itemMenu;
|
wxMenu itemMenu;
|
||||||
|
|
||||||
int limit = MIN( MAX_ITEMS_IN_PICKER, m_Collector->GetCount() );
|
|
||||||
|
|
||||||
itemMenu.SetTitle( _("Selection Clarification") ); // does this work? not under Linux!
|
itemMenu.SetTitle( _("Selection Clarification") ); // does this work? not under Linux!
|
||||||
|
|
||||||
|
int limit = MIN( MAX_ITEMS_IN_PICKER, m_Collector->GetCount() );
|
||||||
|
|
||||||
for( int i=0; i<limit; ++i )
|
for( int i=0; i<limit; ++i )
|
||||||
{
|
{
|
||||||
wxString text;
|
wxString text;
|
||||||
|
|
|
@ -63,8 +63,8 @@ static wxMenu* Append_Track_Width_List()
|
||||||
* @return a pointeur to the menu
|
* @return a pointeur to the menu
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
#define TRACK_HISTORY_NUMBER_MAX 6
|
#define TRACK_HISTORY_NUMBER_MAX 6
|
||||||
#define VIA_HISTORY_NUMBER_MAX 4
|
#define VIA_HISTORY_NUMBER_MAX 4
|
||||||
int ii;
|
int ii;
|
||||||
wxString msg;
|
wxString msg;
|
||||||
wxMenu* trackwidth_menu;
|
wxMenu* trackwidth_menu;
|
||||||
|
@ -124,6 +124,7 @@ void WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
||||||
DrawPanel->CursorOff( &dc );
|
DrawPanel->CursorOff( &dc );
|
||||||
DrawPanel->m_CanStartBlock = -1; // Avoid to start a block coomand when clicking on menu
|
DrawPanel->m_CanStartBlock = -1; // Avoid to start a block coomand when clicking on menu
|
||||||
|
|
||||||
|
|
||||||
// If command in progress: Put the Cancel command (if needed) and End command
|
// If command in progress: Put the Cancel command (if needed) and End command
|
||||||
if( m_ID_current_state )
|
if( m_ID_current_state )
|
||||||
{
|
{
|
||||||
|
@ -160,14 +161,12 @@ void WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Select a proper item */
|
/* Select a proper item */
|
||||||
if( (item == NULL) || (item->m_Flags == 0) )
|
if( !item || !item->m_Flags )
|
||||||
{
|
{
|
||||||
item = PcbGeneralLocateAndDisplay();
|
item = PcbGeneralLocateAndDisplay();
|
||||||
SetCurItem(item);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
item = GetCurItem();
|
|
||||||
if( item )
|
if( item )
|
||||||
flags = item->m_Flags;
|
flags = item->m_Flags;
|
||||||
else
|
else
|
||||||
|
@ -183,10 +182,18 @@ void WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
||||||
if( m_HTOOL_current_state == ID_TOOLBARH_PCB_AUTOPLACE )
|
if( m_HTOOL_current_state == ID_TOOLBARH_PCB_AUTOPLACE )
|
||||||
{
|
{
|
||||||
aPopMenu->AppendSeparator();
|
aPopMenu->AppendSeparator();
|
||||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_AUTOPLACE_FIXE_MODULE, _( "Lock Module" ),
|
|
||||||
Locked_xpm );
|
if( !((MODULE*)item)->IsLocked() )
|
||||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_AUTOPLACE_FREE_MODULE, _( "Unlock Module" ),
|
{
|
||||||
Unlocked_xpm );
|
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_AUTOPLACE_FIXE_MODULE, _( "Lock Module" ),
|
||||||
|
Locked_xpm );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_AUTOPLACE_FREE_MODULE, _( "Unlock Module" ),
|
||||||
|
Unlocked_xpm );
|
||||||
|
}
|
||||||
|
|
||||||
if( !flags )
|
if( !flags )
|
||||||
aPopMenu->Append( ID_POPUP_PCB_AUTOPLACE_CURRENT_MODULE,
|
aPopMenu->Append( ID_POPUP_PCB_AUTOPLACE_CURRENT_MODULE,
|
||||||
_( "Auto place Module" ) );
|
_( "Auto place Module" ) );
|
||||||
|
|
Loading…
Reference in New Issue