dlist cleanups, start of edit component in schematic rework
This commit is contained in:
parent
4d3d0a8fcc
commit
3ef380f936
|
@ -1,4 +1,5 @@
|
|||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Name: 3d_class.cpp
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -37,6 +38,7 @@ S3D_Material::S3D_Material( Struct3D_Master * father, const wxString & name ):
|
|||
m_Name = name;
|
||||
}
|
||||
|
||||
|
||||
/***********************************/
|
||||
void S3D_Material::SetMaterial()
|
||||
/***********************************/
|
||||
|
@ -53,6 +55,7 @@ void S3D_Material::SetMaterial()
|
|||
glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE );
|
||||
}
|
||||
|
||||
|
||||
/****************************************************/
|
||||
void Struct3D_Master::Copy( Struct3D_Master* pattern )
|
||||
/****************************************************/
|
||||
|
@ -65,6 +68,7 @@ void Struct3D_Master::Copy(Struct3D_Master * pattern)
|
|||
m_Materials = NULL;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************/
|
||||
Struct3D_Master::Struct3D_Master( EDA_BaseStruct* StructFather ) :
|
||||
EDA_BaseStruct( StructFather, NOT_USED )
|
||||
|
@ -85,19 +89,18 @@ S3D_Material * nextmat;
|
|||
|
||||
for( ; m_3D_Drawings != NULL; m_3D_Drawings = next )
|
||||
{
|
||||
next = (Struct3D_Shape *) m_3D_Drawings->Pnext;
|
||||
next = m_3D_Drawings->Next();
|
||||
delete m_3D_Drawings;
|
||||
}
|
||||
|
||||
for( ; m_Materials != NULL; m_Materials = nextmat )
|
||||
{
|
||||
nextmat = (S3D_Material *) m_Materials->Pnext;
|
||||
nextmat = m_Materials->Next();
|
||||
delete m_Materials;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************/
|
||||
Struct3D_Shape::Struct3D_Shape( EDA_BaseStruct* StructFather ) :
|
||||
EDA_BaseStruct( StructFather, NOT_USED )
|
||||
|
@ -116,4 +119,3 @@ Struct3D_Shape:: ~Struct3D_Shape()
|
|||
delete m_3D_Coord;
|
||||
delete m_3D_CoordIndex;
|
||||
}
|
||||
|
||||
|
|
|
@ -214,7 +214,7 @@ GLuint Pcb3D_GLCanvas::CreateDrawGL_List()
|
|||
|
||||
/* draw graphic items */
|
||||
EDA_BaseStruct* PtStruct;
|
||||
for( PtStruct = pcb->m_Drawings; PtStruct != NULL; PtStruct = PtStruct->Pnext )
|
||||
for( PtStruct = pcb->m_Drawings; PtStruct != NULL; PtStruct = PtStruct->Next() )
|
||||
{
|
||||
switch( PtStruct->Type() )
|
||||
{
|
||||
|
@ -466,7 +466,7 @@ void MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas )
|
|||
/* Draw pads */
|
||||
glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE );
|
||||
glNormal3f( 0.0, 0.0, 1.0 ); // Normal is Z axis
|
||||
for( ; pad != NULL; pad = (D_PAD*) pad->Pnext )
|
||||
for( ; pad != NULL; pad = pad->Next() )
|
||||
{
|
||||
pad->Draw3D( glcanvas );
|
||||
}
|
||||
|
@ -477,9 +477,11 @@ void MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas )
|
|||
if( g_Parm_3D_Visu.m_Draw3DModule )
|
||||
{
|
||||
glPushMatrix();
|
||||
|
||||
glTranslatef( m_Pos.x * g_Parm_3D_Visu.m_BoardScale,
|
||||
-m_Pos.y * g_Parm_3D_Visu.m_BoardScale,
|
||||
g_Parm_3D_Visu.m_LayerZcoord[m_Layer] );
|
||||
|
||||
if( m_Orient )
|
||||
{
|
||||
glRotatef( (double) m_Orient / 10, 0.0, 0.0, 1.0 );
|
||||
|
@ -491,7 +493,7 @@ void MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas )
|
|||
}
|
||||
DataScale3D = g_Parm_3D_Visu.m_BoardScale * UNITS3D_TO_UNITSPCB;
|
||||
|
||||
for( ; Struct3D != NULL; Struct3D = (Struct3D_Master*) Struct3D->Pnext )
|
||||
for( ; Struct3D != NULL; Struct3D = Struct3D->Next() )
|
||||
{
|
||||
if( !Struct3D->m_Shape3DName.IsEmpty() )
|
||||
{
|
||||
|
@ -507,7 +509,7 @@ void MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas )
|
|||
{
|
||||
EDA_BaseStruct* Struct = m_Drawings;
|
||||
glNormal3f( 0.0, 0.0, 1.0 ); // Normal is Z axis
|
||||
for( ; Struct != NULL; Struct = Struct->Pnext )
|
||||
for( ; Struct != NULL; Struct = Struct->Next() )
|
||||
{
|
||||
switch( Struct->Type() )
|
||||
{
|
||||
|
|
|
@ -108,8 +108,7 @@ int Struct3D_Master:: ReadMaterial( FILE* file, int* LineNum )
|
|||
mat_name = CONV_FROM_UTF8( text );
|
||||
if( stricmp( command, "USE" ) == 0 )
|
||||
{
|
||||
for( material = m_Materials; material != NULL;
|
||||
material = (S3D_Material*) material->Pnext )
|
||||
for( material = m_Materials; material; material = material->Next() )
|
||||
{
|
||||
if( material->m_Name == mat_name )
|
||||
{
|
||||
|
@ -126,8 +125,8 @@ int Struct3D_Master:: ReadMaterial( FILE* file, int* LineNum )
|
|||
{
|
||||
material = new S3D_Material( this, mat_name );
|
||||
|
||||
material->Pnext = m_Materials;
|
||||
m_Materials = material;
|
||||
Insert( material );
|
||||
|
||||
while( GetLine( file, line, LineNum, 512 ) )
|
||||
{
|
||||
text = strtok( line, " \t\n\r" );
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#include "base_struct.h"
|
||||
|
||||
/* 3D modeler units -> PCB units conversion scale:
|
||||
1 "3D unit modeler" = 1 unit wings3d = 2,54 mm = 0.1 inch */
|
||||
* 1 "3D unit modeler" = 1 unit wings3d = 2,54 mm = 0.1 inch */
|
||||
#define UNITS3D_TO_UNITSPCB 1000
|
||||
|
||||
|
||||
|
@ -21,8 +21,7 @@ class S3D_Color /* This is a 3D color (R, G, G) 3 floats range 0 to 1.0*/
|
|||
public:
|
||||
double m_Red, m_Green, m_Blue;
|
||||
public:
|
||||
S3D_Color()
|
||||
{
|
||||
S3D_Color() {
|
||||
m_Red = m_Green = m_Blue = 0;
|
||||
}
|
||||
};
|
||||
|
@ -48,9 +47,14 @@ public:
|
|||
|
||||
public:
|
||||
S3D_Material( Struct3D_Master * father, const wxString &name );
|
||||
|
||||
S3D_Material* Next() const { return (S3D_Material*) Pnext; }
|
||||
S3D_Material* Back() const { return (S3D_Material*) Pback; }
|
||||
|
||||
void SetMaterial();
|
||||
};
|
||||
|
||||
|
||||
/*******************************************/
|
||||
class Struct3D_Master : public EDA_BaseStruct
|
||||
/*******************************************/
|
||||
|
@ -69,6 +73,15 @@ public:
|
|||
Struct3D_Master( EDA_BaseStruct * StructFather );
|
||||
~Struct3D_Master();
|
||||
|
||||
Struct3D_Master* Next() const { return (Struct3D_Master*) Pnext; }
|
||||
Struct3D_Master* Back() const { return (Struct3D_Master*) Pback; }
|
||||
|
||||
void Insert( S3D_Material* aMaterial )
|
||||
{
|
||||
aMaterial->SetNext( m_Materials );
|
||||
m_Materials = aMaterial;
|
||||
}
|
||||
|
||||
void Copy( Struct3D_Master* pattern );
|
||||
int ReadData();
|
||||
int ReadMaterial( FILE* file, int* LineNum );
|
||||
|
@ -77,7 +90,6 @@ public:
|
|||
int ReadAppearance( FILE* file, int* LineNum );
|
||||
int ReadGeometry( FILE* file, int* LineNum );
|
||||
void Set_Object_Coords( S3D_Vertex* coord, int nbcoord );
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -96,18 +108,21 @@ public:
|
|||
Struct3D_Shape( EDA_BaseStruct * StructFather );
|
||||
~Struct3D_Shape();
|
||||
|
||||
Struct3D_Shape* Next() const { return (Struct3D_Shape*) Pnext; }
|
||||
Struct3D_Shape* Back() const { return (Struct3D_Shape*) Pback; }
|
||||
|
||||
int ReadData( FILE* file, int* LineNum );
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*****************************************************************/
|
||||
/* Classe pour afficher et editer un Vertex (triplet de valeurs),*/
|
||||
/* en INCHES ou MM ou sans unites */
|
||||
/*****************************************************************/
|
||||
|
||||
/* internal_unit is the internal unit number by inch:
|
||||
- 1000 for EESchema
|
||||
- 10000 for PcbNew
|
||||
* - 1000 for EESchema
|
||||
* - 10000 for PcbNew
|
||||
*/
|
||||
class WinEDA_VertexCtrl
|
||||
{
|
||||
|
@ -118,6 +133,7 @@ private:
|
|||
wxStaticText* m_Text;
|
||||
|
||||
public:
|
||||
|
||||
// Constructor and destructor
|
||||
WinEDA_VertexCtrl( wxWindow * parent, const wxString &title,
|
||||
wxBoxSizer * BoxSizer,
|
||||
|
@ -132,5 +148,4 @@ public:
|
|||
};
|
||||
|
||||
|
||||
|
||||
#endif /* STRUCT_3D_H */
|
||||
|
|
|
@ -5,6 +5,30 @@ Started 2007-June-11
|
|||
Please add newer entries at the top, list the date and your name with
|
||||
email address.
|
||||
|
||||
2008-Nov-23 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||
================================================================================
|
||||
+all
|
||||
+ Made _protected_ EDA_BaseStruct's:
|
||||
EDA_BaseStruct* Pnext; /* Linked list: Link (next struct) */
|
||||
EDA_BaseStruct* Pback; /* Linked list: Link (previous struct) */
|
||||
EDA_BaseStruct* m_Parent; /* Linked list: Link (parent struct) */
|
||||
EDA_BaseStruct* m_Son; /* Linked list: Link (son struct) */
|
||||
+ Split TRACK::Draw() out for SEGVIA
|
||||
+ Added dlist.h & dlist.cpp for DLIST<> template. All the _inline_ list manipulation
|
||||
code throughout the package is rediculous. I don't mind list traversal, only
|
||||
list manipulation. DLIST<> templates can be used to consolidate reliable
|
||||
list manipulation operations and get this code out of the mainline.
|
||||
These functions are shared/inherited for any derivation, so only one copy exists
|
||||
in the final program image. To use, simply declare e.g. DLIST<D_PAD> or similar.
|
||||
See dlist.h, template class DLIST for function comments.
|
||||
+ added EDA_BaseStruct::m_List to assist in debugging list manipulation functions.
|
||||
+eeschema
|
||||
Started on the edit component in schematic editor. It is not complete and
|
||||
breaks the usefulness of the editor at this moment. Do not build this version
|
||||
if you want to fully use eeschema. I will get something working in another day,
|
||||
even if it is the old editor.
|
||||
|
||||
|
||||
2008-Nov-22 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||
================================================================================
|
||||
++pcbnew
|
||||
|
|
|
@ -16,6 +16,7 @@ set(COMMON_SRCS
|
|||
copy_to_clipboard.cpp
|
||||
dcsvg.cpp
|
||||
displlst.cpp
|
||||
dlist.cpp
|
||||
drawtxt.cpp
|
||||
edaappl.cpp
|
||||
eda_dde.cpp
|
||||
|
|
|
@ -446,14 +446,14 @@ void BASE_SCREEN::ClearUndoRedoList()
|
|||
|
||||
while( m_UndoList )
|
||||
{
|
||||
nextitem = m_UndoList->Pnext;
|
||||
nextitem = m_UndoList->Next();
|
||||
delete m_UndoList;
|
||||
m_UndoList = nextitem;
|
||||
}
|
||||
|
||||
while( m_RedoList )
|
||||
{
|
||||
nextitem = m_RedoList->Pnext;
|
||||
nextitem = m_RedoList->Next();
|
||||
delete m_RedoList;
|
||||
m_RedoList = nextitem;
|
||||
}
|
||||
|
@ -469,32 +469,33 @@ void BASE_SCREEN::AddItemToUndoList( EDA_BaseStruct* newitem )
|
|||
*/
|
||||
{
|
||||
int ii;
|
||||
EDA_BaseStruct* item, * nextitem;
|
||||
EDA_BaseStruct* item;
|
||||
EDA_BaseStruct* nextitem;
|
||||
|
||||
if( newitem == NULL )
|
||||
return;
|
||||
|
||||
newitem->Pnext = m_UndoList;
|
||||
newitem->SetNext( m_UndoList );
|
||||
m_UndoList = newitem;
|
||||
|
||||
/* Free first items, if count max reached */
|
||||
for( ii = 0, item = m_UndoList; ii < m_UndoRedoCountMax; ii++ )
|
||||
{
|
||||
if( item->Pnext == NULL )
|
||||
if( item->Next() == NULL )
|
||||
return;
|
||||
item = item->Pnext;
|
||||
item = item->Next();
|
||||
}
|
||||
|
||||
if( item == NULL )
|
||||
return;
|
||||
|
||||
nextitem = item->Pnext;
|
||||
item->Pnext = NULL; // Set end of chain
|
||||
nextitem = item->Next();
|
||||
item->SetNext( NULL ); // Set end of chain
|
||||
|
||||
// Delete the extra items
|
||||
for( item = nextitem; item != NULL; item = nextitem )
|
||||
{
|
||||
nextitem = item->Pnext;
|
||||
nextitem = item->Next();
|
||||
delete item;
|
||||
}
|
||||
}
|
||||
|
@ -510,26 +511,26 @@ void BASE_SCREEN::AddItemToRedoList( EDA_BaseStruct* newitem )
|
|||
if( newitem == NULL )
|
||||
return;
|
||||
|
||||
newitem->Pnext = m_RedoList;
|
||||
newitem->SetNext( m_RedoList );
|
||||
m_RedoList = newitem;
|
||||
/* Free first items, if count max reached */
|
||||
for( ii = 0, item = m_RedoList; ii < m_UndoRedoCountMax; ii++ )
|
||||
{
|
||||
if( item->Pnext == NULL )
|
||||
if( item->Next() == NULL )
|
||||
break;
|
||||
item = item->Pnext;
|
||||
item = item->Next();
|
||||
}
|
||||
|
||||
if( item == NULL )
|
||||
return;
|
||||
|
||||
nextitem = item->Pnext;
|
||||
item->Pnext = NULL; // Set end of chain
|
||||
nextitem = item->Next();
|
||||
item->SetNext( NULL ); // Set end of chain
|
||||
|
||||
// Delete the extra items
|
||||
for( item = nextitem; item != NULL; item = nextitem )
|
||||
{
|
||||
nextitem = item->Pnext;
|
||||
nextitem = item->Next();
|
||||
delete item;
|
||||
}
|
||||
}
|
||||
|
@ -542,7 +543,7 @@ EDA_BaseStruct* BASE_SCREEN::GetItemFromUndoList()
|
|||
EDA_BaseStruct* item = m_UndoList;
|
||||
|
||||
if( item )
|
||||
m_UndoList = item->Pnext;
|
||||
m_UndoList = item->Next();
|
||||
return item;
|
||||
}
|
||||
|
||||
|
@ -554,7 +555,7 @@ EDA_BaseStruct* BASE_SCREEN::GetItemFromRedoList()
|
|||
EDA_BaseStruct* item = m_RedoList;
|
||||
|
||||
if( item )
|
||||
m_RedoList = item->Pnext;
|
||||
m_RedoList = item->Next();
|
||||
return item;
|
||||
}
|
||||
|
||||
|
|
|
@ -43,15 +43,16 @@ void EDA_BaseStruct::InitVars()
|
|||
/********************************************/
|
||||
{
|
||||
m_StructType = TYPE_NOT_INIT;
|
||||
Pnext = NULL; /* Linked list: Link (next struct) */
|
||||
Pback = NULL; /* Linked list: Link (previous struct) */
|
||||
m_Parent = NULL; /* Linked list: Link (parent struct) */
|
||||
m_Son = NULL; /* Linked list: Link (son struct) */
|
||||
m_Image = NULL; /* Link to an image copy for undelete or abort command */
|
||||
m_Flags = 0; /* flags for editions and other */
|
||||
Pnext = NULL; // Linked list: Link (next struct)
|
||||
Pback = NULL; // Linked list: Link (previous struct)
|
||||
m_Parent = NULL; // Linked list: Link (parent struct)
|
||||
m_Son = NULL; // Linked list: Link (son struct)
|
||||
m_List = NULL; // I am not on any list yet
|
||||
m_Image = NULL; // Link to an image copy for undelete or abort command
|
||||
m_Flags = 0; // flags for editions and other
|
||||
m_TimeStamp = 0; // Time stamp used for logical links
|
||||
m_Status = 0;
|
||||
m_Selected = 0; /* Used by block commands, and selective editing */
|
||||
m_Selected = 0; // Used by block commands, and selective editing
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -254,7 +254,7 @@ void InitBlockLocateDatas( WinEDA_DrawPanel* Panel, const wxPoint& startpos )
|
|||
screen->BlockLocate.m_State = STATE_BLOCK_INIT;
|
||||
screen->BlockLocate.SetOrigin( startpos );
|
||||
screen->BlockLocate.SetSize( wxSize( 0, 0 ) );
|
||||
screen->BlockLocate.Pnext = NULL;
|
||||
screen->BlockLocate.SetNext( NULL );
|
||||
screen->BlockLocate.m_BlockDrawStruct = NULL;
|
||||
Panel->ManageCurseur = DrawAndSizingBlockOutlines;
|
||||
Panel->ForceCloseManageCurseur = AbortBlockCurrentCommand;
|
||||
|
|
|
@ -128,7 +128,7 @@ void DHEAD::Insert( EDA_BaseStruct* aNewElement, EDA_BaseStruct* aAfterMe )
|
|||
|
||||
void DHEAD::Remove( EDA_BaseStruct* aElement )
|
||||
{
|
||||
wxASSERT( aElement )
|
||||
wxASSERT( aElement );
|
||||
wxASSERT( aElement->GetList() == this );
|
||||
|
||||
if( aElement->Next() )
|
||||
|
|
|
@ -13,6 +13,7 @@ OBJECTS= \
|
|||
common_plot_functions.o\
|
||||
common_plotPS_functions.o\
|
||||
common_plotHPGL_functions.o\
|
||||
dlist.o \
|
||||
hotkeys_basic.o\
|
||||
drawtxt.o \
|
||||
about_kicad.o\
|
||||
|
|
|
@ -36,7 +36,8 @@ set(EESCHEMA_SRCS
|
|||
# dialog_cmp_graphic_properties.cpp
|
||||
dialog_create_component.cpp
|
||||
# dialog_edit_component_in_lib.cpp
|
||||
# dialog_edit_component_in_schematic.cpp
|
||||
dialog_edit_component_in_schematic_fbp.cpp
|
||||
dialog_edit_component_in_schematic.cpp
|
||||
# dialog_edit_label.cpp
|
||||
dialog_eeschema_config.cpp
|
||||
dialog_erc.cpp
|
||||
|
|
|
@ -64,7 +64,7 @@ void ReAnnotatePowerSymbolsOnly( void )
|
|||
sheet = SheetList.GetNext() )
|
||||
{
|
||||
EDA_BaseStruct* DrawList = sheet->LastDrawList();
|
||||
for( ; DrawList != NULL; DrawList = DrawList->Pnext )
|
||||
for( ; DrawList != NULL; DrawList = DrawList->Next() )
|
||||
{
|
||||
if( DrawList->Type() != TYPE_SCH_COMPONENT )
|
||||
continue;
|
||||
|
@ -207,7 +207,7 @@ void WinEDA_SchematicFrame::DeleteAnnotation( bool aCurrentSheetOnly, bool aRedr
|
|||
while( screen )
|
||||
{
|
||||
strct = screen->EEDrawList;
|
||||
for( ; strct; strct = strct->Pnext )
|
||||
for( ; strct; strct = strct->Next() )
|
||||
{
|
||||
if( strct->Type() == TYPE_SCH_COMPONENT )
|
||||
{
|
||||
|
@ -348,7 +348,7 @@ int ListeComposants( CmpListStruct* BaseListeCmp, DrawSheetPath* sheet )
|
|||
SCH_COMPONENT* DrawLibItem;
|
||||
EDA_LibComponentStruct* Entry;
|
||||
|
||||
for( ; DrawList; DrawList = DrawList->Pnext )
|
||||
for( ; DrawList; DrawList = DrawList->Next() )
|
||||
{
|
||||
if( DrawList->Type() == TYPE_SCH_COMPONENT )
|
||||
{
|
||||
|
|
|
@ -316,7 +316,7 @@ int WinEDA_SchematicFrame::HandleBlockEnd( wxDC* DC )
|
|||
if( block->m_Command == BLOCK_ABORT )
|
||||
{ /* clear struct.m_Flags */
|
||||
EDA_BaseStruct* Struct;
|
||||
for( Struct = GetScreen()->EEDrawList; Struct != NULL; Struct = Struct->Pnext )
|
||||
for( Struct = GetScreen()->EEDrawList; Struct != NULL; Struct = Struct->Next() )
|
||||
Struct->m_Flags = 0;
|
||||
}
|
||||
|
||||
|
@ -502,7 +502,7 @@ static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC,
|
|||
(SCH_ITEM*)PickedList->m_PickedStruct,
|
||||
PtBlock->m_MoveVector.x,
|
||||
PtBlock->m_MoveVector.y );
|
||||
PickedList = (DrawPickedStruct*) PickedList->Pnext;
|
||||
PickedList = (DrawPickedStruct*) PickedList->Next();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -535,7 +535,7 @@ static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC,
|
|||
(SCH_ITEM*)PickedList->m_PickedStruct,
|
||||
PtBlock->m_MoveVector.x,
|
||||
PtBlock->m_MoveVector.y );
|
||||
PickedList = (DrawPickedStruct*) PickedList->Pnext;
|
||||
PickedList = (DrawPickedStruct*) PickedList->Next();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -729,7 +729,7 @@ void MirrorOneStruct( SCH_ITEM * DrawStruct, wxPoint& Center )
|
|||
{
|
||||
MirrorYPoint( DrawSheetLabel->m_Pos, Center );
|
||||
DrawSheetLabel->m_Edge = DrawSheetLabel->m_Edge ? 0 : 1;
|
||||
DrawSheetLabel = (Hierarchical_PIN_Sheet_Struct*) DrawSheetLabel->Pnext;
|
||||
DrawSheetLabel = (Hierarchical_PIN_Sheet_Struct*) DrawSheetLabel->Next();
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -852,7 +852,7 @@ static SCH_ITEM * CopyStruct( WinEDA_DrawPanel* panel, wxDC* DC, BASE_SCREEN* sc
|
|||
}
|
||||
|
||||
SetStructFather( Struct, screen );
|
||||
PickedList = (DrawPickedStruct*) PickedList->Pnext;
|
||||
PickedList = (DrawPickedStruct*) PickedList->Next();
|
||||
}
|
||||
|
||||
RedrawStructList( panel, DC, NewDrawStruct, GR_DEFAULT_DRAWMODE );
|
||||
|
@ -860,7 +860,7 @@ static SCH_ITEM * CopyStruct( WinEDA_DrawPanel* panel, wxDC* DC, BASE_SCREEN* sc
|
|||
PickedList = (DrawPickedStruct*) NewDrawStruct;
|
||||
while( PickedList )
|
||||
{
|
||||
PickedList->m_PickedStruct->Pnext = screen->EEDrawList;
|
||||
PickedList->m_PickedStruct->SetNext( screen->EEDrawList );
|
||||
screen->EEDrawList = PickedList->m_PickedStruct;
|
||||
PickedList = PickedList->Next();
|
||||
}
|
||||
|
@ -888,7 +888,7 @@ static SCH_ITEM * CopyStruct( WinEDA_DrawPanel* panel, wxDC* DC, BASE_SCREEN* sc
|
|||
{
|
||||
DrawSheetStruct* sheet = (DrawSheetStruct*) NewDrawStruct;
|
||||
sheet->m_TimeStamp = GetTimeStamp();
|
||||
sheet->m_Son = NULL;
|
||||
sheet->SetSon( NULL );
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -901,7 +901,7 @@ static SCH_ITEM * CopyStruct( WinEDA_DrawPanel* panel, wxDC* DC, BASE_SCREEN* sc
|
|||
RedrawOneStruct( panel, DC, NewDrawStruct, GR_DEFAULT_DRAWMODE );
|
||||
|
||||
SetStructFather( NewDrawStruct, screen );
|
||||
NewDrawStruct->Pnext = screen->EEDrawList;
|
||||
NewDrawStruct->SetNext( screen->EEDrawList );
|
||||
screen->EEDrawList = NewDrawStruct;
|
||||
}
|
||||
|
||||
|
@ -934,7 +934,7 @@ void DeleteStruct( WinEDA_DrawPanel* panel, wxDC* DC, SCH_ITEM * DrawStruct )
|
|||
{
|
||||
/* Cette stucture est rattachee a une feuille, et n'est pas
|
||||
* accessible par la liste globale directement */
|
||||
frame->SaveCopyInUndoList( (SCH_ITEM*) ( (Hierarchical_PIN_Sheet_Struct*) DrawStruct )->m_Parent, IS_CHANGED );
|
||||
frame->SaveCopyInUndoList( (SCH_ITEM*) ( (Hierarchical_PIN_Sheet_Struct*) DrawStruct )->GetParent(), IS_CHANGED );
|
||||
frame->DeleteSheetLabel( DC ? true : false , (Hierarchical_PIN_Sheet_Struct*) DrawStruct );
|
||||
return;
|
||||
}
|
||||
|
@ -948,7 +948,8 @@ void DeleteStruct( WinEDA_DrawPanel* panel, wxDC* DC, SCH_ITEM * DrawStruct )
|
|||
SCH_ITEM * item = cur->m_PickedStruct;
|
||||
screen->RemoveFromDrawList( item );
|
||||
panel->PostDirtyRect( item->GetBoundingBox() );
|
||||
item->Pnext = item->Pback = NULL;
|
||||
item->SetNext( 0 );
|
||||
item->SetBack( 0 );
|
||||
item->m_Flags = IS_DELETED;
|
||||
}
|
||||
|
||||
|
@ -962,7 +963,9 @@ void DeleteStruct( WinEDA_DrawPanel* panel, wxDC* DC, SCH_ITEM * DrawStruct )
|
|||
panel->PostDirtyRect( DrawStruct->GetBoundingBox() );
|
||||
|
||||
/* Unlink the structure */
|
||||
DrawStruct->Pnext = DrawStruct->Pback = NULL; // Only one struct -> no link
|
||||
DrawStruct->SetNext( 0 );
|
||||
DrawStruct->SetBack( 0 ); // Only one struct -> no link
|
||||
|
||||
if( DrawStruct->Type() == DRAW_SHEET_STRUCT_TYPE )
|
||||
{
|
||||
frame->SaveCopyInUndoList( DrawStruct, IS_DELETED ); // Currently In TEST
|
||||
|
@ -1005,14 +1008,14 @@ SCH_ITEM * SaveStructListForPaste( SCH_ITEM * DrawStruct )
|
|||
EDA_BaseStruct* item = g_BlockSaveDataList, * next_item;
|
||||
while( item )
|
||||
{
|
||||
next_item = item->Pnext;
|
||||
next_item = item->Next();
|
||||
delete item;
|
||||
item = next_item;
|
||||
}
|
||||
}
|
||||
|
||||
g_BlockSaveDataList = DrawStructCopy;
|
||||
DrawStructCopy->m_Parent = NULL;
|
||||
DrawStructCopy->SetParent( NULL );
|
||||
|
||||
return DrawStructCopy;
|
||||
}
|
||||
|
@ -1051,14 +1054,14 @@ void WinEDA_SchematicFrame::PasteStruct( wxDC* DC )
|
|||
( (SCH_COMPONENT*) Struct )->ClearAnnotation(NULL);
|
||||
SetStructFather( Struct, GetScreen() );
|
||||
}
|
||||
PickedList = (DrawPickedStruct*) PickedList->Pnext;
|
||||
PickedList = (DrawPickedStruct*) PickedList->Next();
|
||||
}
|
||||
|
||||
RedrawStructList( DrawPanel, DC, DrawStruct, GR_DEFAULT_DRAWMODE );
|
||||
for( PickedList = (DrawPickedStruct*) DrawStruct; PickedList != NULL; )
|
||||
{
|
||||
SCH_ITEM * Struct = PickedList->m_PickedStruct;
|
||||
Struct->Pnext = GetScreen()->EEDrawList;
|
||||
Struct->SetNext( GetScreen()->EEDrawList );
|
||||
SetStructFather( Struct, GetScreen() );
|
||||
GetScreen()->EEDrawList = Struct;
|
||||
PickedList = PickedList->Next();
|
||||
|
@ -1076,7 +1079,7 @@ void WinEDA_SchematicFrame::PasteStruct( wxDC* DC )
|
|||
}
|
||||
SetStructFather( DrawStruct, GetScreen() );
|
||||
RedrawOneStruct( DrawPanel, DC, DrawStruct, GR_DEFAULT_DRAWMODE );
|
||||
DrawStruct->Pnext = GetScreen()->EEDrawList;
|
||||
DrawStruct->SetNext( GetScreen()->EEDrawList );
|
||||
GetScreen()->EEDrawList = DrawStruct;
|
||||
SaveCopyInUndoList( DrawStruct, IS_NEW );
|
||||
}
|
||||
|
@ -1343,7 +1346,7 @@ SCH_ITEM * DuplicateStruct( SCH_ITEM * DrawStruct )
|
|||
if( NewDrawStruct == NULL )
|
||||
NewDrawStruct = NewPickedItem;
|
||||
if( LastPickedItem )
|
||||
LastPickedItem->Pnext = NewPickedItem;
|
||||
LastPickedItem->SetNext( NewPickedItem );
|
||||
LastPickedItem = NewPickedItem;
|
||||
NewPickedItem->m_PickedStruct =
|
||||
DuplicateStruct( PickedList->m_PickedStruct );
|
||||
|
@ -1469,7 +1472,7 @@ static void CollectStructsToDrag( SCH_SCREEN* screen )
|
|||
{
|
||||
if( SLabel->Type() == DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE )
|
||||
AddPickedItem( screen, SLabel->m_Pos );
|
||||
SLabel = (Hierarchical_PIN_Sheet_Struct*) SLabel->Pnext;
|
||||
SLabel = (Hierarchical_PIN_Sheet_Struct*) SLabel->Next();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1495,7 +1498,7 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
|||
while( DrawStructs )
|
||||
{
|
||||
Struct = DrawStructs->m_PickedStruct;
|
||||
DrawStructs = (DrawPickedStruct*) DrawStructs->Pnext;
|
||||
DrawStructs = (DrawPickedStruct*) DrawStructs->Next();
|
||||
|
||||
switch( Struct->Type() )
|
||||
{
|
||||
|
@ -1537,8 +1540,7 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
|||
if( STRUCT->m_Pos != position )
|
||||
break;
|
||||
DrawStructs = new DrawPickedStruct( Struct );
|
||||
DrawStructs->Pnext =
|
||||
(DrawPickedStruct*) screen->BlockLocate.m_BlockDrawStruct;
|
||||
DrawStructs->SetNext( screen->BlockLocate.m_BlockDrawStruct );
|
||||
screen->BlockLocate.m_BlockDrawStruct = (EDA_BaseStruct*) DrawStructs;
|
||||
break;
|
||||
|
||||
|
@ -1550,8 +1552,7 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
|||
if( STRUCT->m_Start == position )
|
||||
{
|
||||
DrawStructs = new DrawPickedStruct( Struct );
|
||||
DrawStructs->Pnext =
|
||||
(DrawPickedStruct*) screen->BlockLocate.m_BlockDrawStruct;
|
||||
DrawStructs->SetNext( screen->BlockLocate.m_BlockDrawStruct );
|
||||
screen->BlockLocate.m_BlockDrawStruct = (EDA_BaseStruct*) DrawStructs;
|
||||
Struct->m_Flags = SELECTED | ENDPOINT | STARTPOINT;
|
||||
Struct->m_Flags &= ~STARTPOINT;
|
||||
|
@ -1559,8 +1560,7 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
|||
else if( STRUCT->m_End == position )
|
||||
{
|
||||
DrawStructs = new DrawPickedStruct( Struct );
|
||||
DrawStructs->Pnext =
|
||||
(DrawPickedStruct*) screen->BlockLocate.m_BlockDrawStruct;
|
||||
DrawStructs->SetNext( screen->BlockLocate.m_BlockDrawStruct );
|
||||
screen->BlockLocate.m_BlockDrawStruct = (EDA_BaseStruct*) DrawStructs;
|
||||
Struct->m_Flags = SELECTED | ENDPOINT | STARTPOINT;
|
||||
Struct->m_Flags &= ~ENDPOINT;
|
||||
|
@ -1581,8 +1581,7 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
|||
if( STRUCT->m_Pos != position )
|
||||
break;
|
||||
DrawStructs = new DrawPickedStruct( Struct );
|
||||
DrawStructs->Pnext =
|
||||
(DrawPickedStruct*) screen->BlockLocate.m_BlockDrawStruct;
|
||||
DrawStructs->SetNext( screen->BlockLocate.m_BlockDrawStruct );
|
||||
screen->BlockLocate.m_BlockDrawStruct = (EDA_BaseStruct*) DrawStructs;
|
||||
Struct->m_Flags |= SELECTED;
|
||||
break;
|
||||
|
@ -1596,8 +1595,7 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
|||
if( STRUCT->m_Pos != position )
|
||||
break;
|
||||
DrawStructs = new DrawPickedStruct( Struct );
|
||||
DrawStructs->Pnext =
|
||||
(DrawPickedStruct*) screen->BlockLocate.m_BlockDrawStruct;
|
||||
DrawStructs->SetNext( screen->BlockLocate.m_BlockDrawStruct );
|
||||
screen->BlockLocate.m_BlockDrawStruct = (EDA_BaseStruct*) DrawStructs;
|
||||
Struct->m_Flags |= SELECTED;
|
||||
break;
|
||||
|
@ -1622,8 +1620,7 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
|||
if( STRUCT->m_Pos != position )
|
||||
break;
|
||||
DrawStructs = new DrawPickedStruct( Struct );
|
||||
DrawStructs->Pnext =
|
||||
(DrawPickedStruct*) screen->BlockLocate.m_BlockDrawStruct;
|
||||
DrawStructs->SetNext( screen->BlockLocate.m_BlockDrawStruct );
|
||||
screen->BlockLocate.m_BlockDrawStruct = (EDA_BaseStruct*) DrawStructs;
|
||||
Struct->m_Flags |= SELECTED;
|
||||
break;
|
||||
|
@ -1636,8 +1633,7 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
|||
if( STRUCT->m_Pos != position )
|
||||
break;
|
||||
DrawStructs = new DrawPickedStruct( Struct );
|
||||
DrawStructs->Pnext =
|
||||
(DrawPickedStruct*) screen->BlockLocate.m_BlockDrawStruct;
|
||||
DrawStructs->SetNext( screen->BlockLocate.m_BlockDrawStruct );
|
||||
screen->BlockLocate.m_BlockDrawStruct = (EDA_BaseStruct*) DrawStructs;
|
||||
Struct->m_Flags |= SELECTED;
|
||||
break;
|
||||
|
|
|
@ -517,7 +517,7 @@ void CopyMarkedItems( EDA_LibComponentStruct* LibEntry, wxPoint offset )
|
|||
item->m_Selected = 0;
|
||||
LibEDA_BaseStruct* newitem = CopyDrawEntryStruct( NULL, item );
|
||||
newitem->m_Selected = IS_SELECTED;
|
||||
newitem->Pnext = LibEntry->m_Drawings;
|
||||
newitem->SetNext( LibEntry->m_Drawings );
|
||||
LibEntry->m_Drawings = newitem;
|
||||
}
|
||||
|
||||
|
|
|
@ -301,7 +301,7 @@ int BuildComponentsListFromSchematic( ListComponent* aList )
|
|||
|
||||
itemCount++;
|
||||
DrawLibItem = (SCH_COMPONENT*) SchItem;
|
||||
DrawLibItem->m_Parent = sheet->LastScreen();
|
||||
DrawLibItem->SetParent( sheet->LastScreen() );
|
||||
if( aList )
|
||||
{
|
||||
aList->m_Comp = DrawLibItem;
|
||||
|
@ -376,7 +376,7 @@ static int GenListeGLabels( ListLabel* list )
|
|||
list++;
|
||||
}
|
||||
itemCount++;
|
||||
SheetLabel = (Hierarchical_PIN_Sheet_Struct*) (SheetLabel->Pnext);
|
||||
SheetLabel = SheetLabel->Next();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -384,7 +384,7 @@ static int GenListeGLabels( ListLabel* list )
|
|||
default:
|
||||
break;
|
||||
}
|
||||
DrawList = DrawList->Pnext;
|
||||
DrawList = DrawList->Next();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -750,13 +750,13 @@ int WinEDA_Build_BOM_Frame::PrintComponentsListByRef( FILE* f,
|
|||
if( CompactForm )
|
||||
{
|
||||
fprintf( f, "%c%s", s_ExportSeparatorSymbol, CONV_TO_UTF8( msg ) );
|
||||
msg = m_Parent->GetXYSheetReferences( (BASE_SCREEN*)DrawLibItem->m_Parent, DrawLibItem->m_Pos );
|
||||
msg = m_Parent->GetXYSheetReferences( (BASE_SCREEN*)DrawLibItem->GetParent(), DrawLibItem->m_Pos );
|
||||
fprintf( f, "%c%s)", s_ExportSeparatorSymbol, CONV_TO_UTF8( msg ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf( f, " (Sheet %s)", CONV_TO_UTF8( msg ) );
|
||||
msg = m_Parent->GetXYSheetReferences( (BASE_SCREEN*)DrawLibItem->m_Parent, DrawLibItem->m_Pos );
|
||||
msg = m_Parent->GetXYSheetReferences( (BASE_SCREEN*)DrawLibItem->GetParent(), DrawLibItem->m_Pos );
|
||||
fprintf( f, " (loc %s)", CONV_TO_UTF8( msg ) );
|
||||
}
|
||||
}
|
||||
|
@ -837,7 +837,7 @@ int WinEDA_Build_BOM_Frame::PrintComponentsListByVal( FILE* f,
|
|||
{
|
||||
msg = aList[ii].m_SheetList.PathHumanReadable();
|
||||
fprintf( f, " (Sheet %s)", CONV_TO_UTF8( msg ) );
|
||||
msg = m_Parent->GetXYSheetReferences( (BASE_SCREEN*)DrawLibItem->m_Parent, DrawLibItem->m_Pos );
|
||||
msg = m_Parent->GetXYSheetReferences( (BASE_SCREEN*)DrawLibItem->GetParent(), DrawLibItem->m_Pos );
|
||||
fprintf( f, " (loc %s)", CONV_TO_UTF8( msg ) );
|
||||
}
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ SCH_ITEM* SCH_SCREEN::ExtractWires( bool CreateCopy )
|
|||
case DRAW_JUNCTION_STRUCT_TYPE:
|
||||
case DRAW_SEGMENT_STRUCT_TYPE:
|
||||
RemoveFromDrawList( item );
|
||||
item->Pnext = List;
|
||||
item->SetNext( List );
|
||||
List = item;
|
||||
if( CreateCopy )
|
||||
{
|
||||
|
@ -58,7 +58,7 @@ SCH_ITEM* SCH_SCREEN::ExtractWires( bool CreateCopy )
|
|||
new_item = ( (DrawJunctionStruct*) item )->GenCopy();
|
||||
else
|
||||
new_item = ( (EDA_DrawLineStruct*) item )->GenCopy();
|
||||
new_item->Pnext = EEDrawList;
|
||||
new_item->SetNext( EEDrawList );
|
||||
EEDrawList = new_item;
|
||||
}
|
||||
break;
|
||||
|
@ -79,7 +79,8 @@ static void RestoreOldWires( SCH_SCREEN* screen )
|
|||
/* Replace the wires in screen->EEDrawList by s_OldWiresList wires.
|
||||
*/
|
||||
{
|
||||
SCH_ITEM* item, * next_item;
|
||||
SCH_ITEM* item;
|
||||
SCH_ITEM* next_item;
|
||||
|
||||
for( item = screen->EEDrawList; item != NULL; item = next_item )
|
||||
{
|
||||
|
@ -101,7 +102,8 @@ static void RestoreOldWires( SCH_SCREEN* screen )
|
|||
while( s_OldWiresList )
|
||||
{
|
||||
next_item = s_OldWiresList->Next();
|
||||
s_OldWiresList->Pnext = screen->EEDrawList,
|
||||
|
||||
s_OldWiresList->SetNext( screen->EEDrawList );
|
||||
screen->EEDrawList = s_OldWiresList;
|
||||
s_OldWiresList = next_item;
|
||||
}
|
||||
|
@ -166,8 +168,8 @@ void WinEDA_SchematicFrame::BeginSegment( wxDC* DC, int type )
|
|||
{
|
||||
nextsegment = newsegment->GenCopy();
|
||||
nextsegment->m_Flags = IS_NEW;
|
||||
newsegment->Pnext = nextsegment;
|
||||
nextsegment->Pback = newsegment;
|
||||
newsegment->SetNext( nextsegment );
|
||||
nextsegment->SetBack( newsegment );
|
||||
}
|
||||
GetScreen()->SetCurItem( newsegment );
|
||||
DrawPanel->ManageCurseur = Segment_in_Ghost;
|
||||
|
@ -176,7 +178,7 @@ void WinEDA_SchematicFrame::BeginSegment( wxDC* DC, int type )
|
|||
}
|
||||
else /* Trace en cours: Placement d'un point supplementaire */
|
||||
{
|
||||
nextsegment = (EDA_DrawLineStruct*) oldsegment->Pnext;
|
||||
nextsegment = oldsegment->Next();
|
||||
if( !g_HVLines )
|
||||
{ /* if only one segment is needed and the current is has len = 0, do not create a new one*/
|
||||
if( oldsegment->IsNull() )
|
||||
|
@ -198,7 +200,7 @@ void WinEDA_SchematicFrame::BeginSegment( wxDC* DC, int type )
|
|||
}
|
||||
|
||||
/* Placement en liste generale */
|
||||
oldsegment->Pnext = GetScreen()->EEDrawList;
|
||||
oldsegment->SetNext( GetScreen()->EEDrawList );
|
||||
GetScreen()->EEDrawList = oldsegment;
|
||||
DrawPanel->CursorOff( DC ); // Erase schematic cursor
|
||||
RedrawOneStruct( DrawPanel, DC, oldsegment, GR_DEFAULT_DRAWMODE );
|
||||
|
@ -209,10 +211,10 @@ void WinEDA_SchematicFrame::BeginSegment( wxDC* DC, int type )
|
|||
{
|
||||
newsegment = nextsegment->GenCopy();
|
||||
nextsegment->m_Start = newsegment->m_End;
|
||||
nextsegment->Pnext = NULL;
|
||||
nextsegment->Pback = newsegment;
|
||||
newsegment->Pnext = nextsegment;
|
||||
newsegment->Pback = NULL;
|
||||
nextsegment->SetNext( NULL );
|
||||
nextsegment->SetBack( newsegment );
|
||||
newsegment->SetNext( nextsegment );
|
||||
newsegment->SetBack( NULL );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -256,16 +258,16 @@ void WinEDA_SchematicFrame::EndSegment( wxDC* DC )
|
|||
lastsegment = firstsegment;
|
||||
while( lastsegment )
|
||||
{
|
||||
EDA_DrawLineStruct* nextsegment = (EDA_DrawLineStruct*) lastsegment->Pnext;
|
||||
EDA_DrawLineStruct* nextsegment = lastsegment->Next();
|
||||
if( lastsegment->IsNull() )
|
||||
{
|
||||
EDA_DrawLineStruct* previous_segment = (EDA_DrawLineStruct*) lastsegment->Pback;
|
||||
EDA_DrawLineStruct* previous_segment = lastsegment->Back();
|
||||
if( firstsegment == lastsegment )
|
||||
firstsegment = nextsegment;
|
||||
if( nextsegment )
|
||||
nextsegment->Pback = NULL;
|
||||
nextsegment->SetBack( NULL );
|
||||
if( previous_segment )
|
||||
previous_segment->Pnext = nextsegment;
|
||||
previous_segment->SetNext( nextsegment );
|
||||
delete lastsegment;
|
||||
}
|
||||
lastsegment = nextsegment;
|
||||
|
@ -276,8 +278,8 @@ void WinEDA_SchematicFrame::EndSegment( wxDC* DC )
|
|||
while( segment )
|
||||
{
|
||||
lastsegment = segment;
|
||||
segment = (EDA_DrawLineStruct*) segment->Pnext;
|
||||
lastsegment->Pnext = GetScreen()->EEDrawList;
|
||||
segment = segment->Next();
|
||||
lastsegment->SetNext( GetScreen()->EEDrawList );
|
||||
GetScreen()->EEDrawList = lastsegment;
|
||||
}
|
||||
|
||||
|
@ -311,7 +313,7 @@ void WinEDA_SchematicFrame::EndSegment( wxDC* DC )
|
|||
g_ItemToRepeat = segment;
|
||||
}
|
||||
segment->m_Flags = 0;
|
||||
segment = (EDA_DrawLineStruct*) segment->Pnext;
|
||||
segment = segment->Next();
|
||||
}
|
||||
|
||||
// Automatic place of a junction on the end point, if needed
|
||||
|
@ -348,7 +350,7 @@ void WinEDA_SchematicFrame::EndSegment( wxDC* DC )
|
|||
break;
|
||||
}
|
||||
|
||||
item = item->Pnext;
|
||||
item = item->Next();
|
||||
}
|
||||
|
||||
|
||||
|
@ -386,7 +388,7 @@ static void Segment_in_Ghost( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
|||
{
|
||||
if( !segment->IsNull() ) // Redraw if segment lengtht != 0
|
||||
RedrawOneStruct( panel, DC, segment, g_XorMode, color );
|
||||
segment = (EDA_DrawLineStruct*) segment->Pnext;
|
||||
segment = segment->Next();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -403,7 +405,7 @@ static void Segment_in_Ghost( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
|||
{
|
||||
if( !segment->IsNull() ) // Redraw if segment lengtht != 0
|
||||
RedrawOneStruct( panel, DC, segment, g_XorMode, color );
|
||||
segment = (EDA_DrawLineStruct*) segment->Pnext;
|
||||
segment = segment->Next();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -416,7 +418,7 @@ static void ComputeBreakPoint( EDA_DrawLineStruct* segment, const wxPoint& new_p
|
|||
* with the 2 segments kept H or V only
|
||||
*/
|
||||
{
|
||||
EDA_DrawLineStruct* nextsegment = (EDA_DrawLineStruct*) segment->Pnext;
|
||||
EDA_DrawLineStruct* nextsegment = segment->Next();
|
||||
wxPoint middle_position = new_pos;
|
||||
|
||||
if( nextsegment == NULL )
|
||||
|
@ -543,7 +545,7 @@ DrawJunctionStruct* WinEDA_SchematicFrame::CreateNewJunctionStruct(
|
|||
RedrawOneStruct( DrawPanel, DC, NewJunction, GR_DEFAULT_DRAWMODE );
|
||||
DrawPanel->CursorOn( DC ); // Display schematic cursor
|
||||
|
||||
NewJunction->Pnext = GetScreen()->EEDrawList;
|
||||
NewJunction->SetNext( GetScreen()->EEDrawList );
|
||||
GetScreen()->EEDrawList = NewJunction;
|
||||
GetScreen()->SetModify();
|
||||
if( PutInUndoList )
|
||||
|
@ -568,7 +570,7 @@ DrawNoConnectStruct* WinEDA_SchematicFrame::CreateNewNoConnectStruct( wxDC* DC )
|
|||
RedrawOneStruct( DrawPanel, DC, NewNoConnect, GR_DEFAULT_DRAWMODE );
|
||||
DrawPanel->CursorOn( DC ); // Display schematic cursor
|
||||
|
||||
NewNoConnect->Pnext = GetScreen()->EEDrawList;
|
||||
NewNoConnect->SetNext( GetScreen()->EEDrawList );
|
||||
GetScreen()->EEDrawList = NewNoConnect;
|
||||
GetScreen()->SetModify();
|
||||
SaveCopyInUndoList( NewNoConnect, IS_NEW );
|
||||
|
@ -729,7 +731,7 @@ void WinEDA_SchematicFrame::RepeatDrawItem( wxDC* DC )
|
|||
|
||||
if( g_ItemToRepeat )
|
||||
{
|
||||
g_ItemToRepeat->Pnext = GetScreen()->EEDrawList;
|
||||
g_ItemToRepeat->SetNext( GetScreen()->EEDrawList );
|
||||
GetScreen()->EEDrawList = g_ItemToRepeat;
|
||||
TestDanglingEnds( GetScreen()->EEDrawList, NULL );
|
||||
RedrawOneStruct( DrawPanel, DC, g_ItemToRepeat, GR_DEFAULT_DRAWMODE );
|
||||
|
|
|
@ -146,7 +146,7 @@ DrawSheetStruct* DrawSheetStruct::GenCopy()
|
|||
|
||||
|
||||
newitem->m_Size = m_Size;
|
||||
newitem->m_Parent = m_Parent;
|
||||
newitem->SetParent( m_Parent );
|
||||
newitem->m_TimeStamp = GetTimeStamp();
|
||||
|
||||
newitem->m_FileName = m_FileName;
|
||||
|
@ -161,15 +161,15 @@ DrawSheetStruct* DrawSheetStruct::GenCopy()
|
|||
if( label )
|
||||
{
|
||||
Slabel = newitem->m_Label = label->GenCopy();
|
||||
Slabel->m_Parent = newitem;
|
||||
Slabel->SetParent( newitem );
|
||||
label = label->Next();
|
||||
}
|
||||
|
||||
while( label )
|
||||
{
|
||||
Slabel->Pnext = label->GenCopy();
|
||||
Slabel = (Hierarchical_PIN_Sheet_Struct*) Slabel->Pnext;
|
||||
Slabel->m_Parent = newitem;
|
||||
Slabel->SetNext( label->GenCopy() );
|
||||
Slabel = Slabel->Next();
|
||||
Slabel->SetParent( newitem );
|
||||
label = label->Next();
|
||||
}
|
||||
|
||||
|
@ -202,14 +202,14 @@ void DrawSheetStruct::SwapData( DrawSheetStruct* copyitem )
|
|||
Hierarchical_PIN_Sheet_Struct* label = m_Label;
|
||||
while( label )
|
||||
{
|
||||
label->m_Parent = this;
|
||||
label->SetParent( this );
|
||||
label = label->Next();
|
||||
}
|
||||
|
||||
label = copyitem->m_Label;
|
||||
while( label )
|
||||
{
|
||||
label->m_Parent = copyitem;
|
||||
label->SetParent( copyitem );
|
||||
label = label->Next();
|
||||
}
|
||||
}
|
||||
|
@ -257,13 +257,15 @@ void DrawSheetStruct::CleanupSheet( WinEDA_SchematicFrame* aFrame, bool aRedraw
|
|||
|
||||
EDA_BaseStruct* DrawStruct = m_AssociatedScreen->EEDrawList;
|
||||
SCH_HIERLABEL* HLabel = NULL;
|
||||
for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Pnext )
|
||||
for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Next() )
|
||||
{
|
||||
if( DrawStruct->Type() != TYPE_SCH_HIERLABEL )
|
||||
continue;
|
||||
|
||||
HLabel = (SCH_HIERLABEL*) DrawStruct;
|
||||
if( Pinsheet->m_Text.CmpNoCase( HLabel->m_Text ) == 0 )
|
||||
break; // Found!
|
||||
|
||||
HLabel = NULL;
|
||||
}
|
||||
|
||||
|
@ -375,7 +377,7 @@ int DrawSheetStruct::ComponentCount()
|
|||
if( m_AssociatedScreen )
|
||||
{
|
||||
EDA_BaseStruct* bs;
|
||||
for( bs = m_AssociatedScreen->EEDrawList; bs != NULL; bs = bs->Pnext )
|
||||
for( bs = m_AssociatedScreen->EEDrawList; bs != NULL; bs = bs->Next() )
|
||||
{
|
||||
if( bs->Type() == TYPE_SCH_COMPONENT )
|
||||
{
|
||||
|
@ -416,7 +418,7 @@ bool DrawSheetStruct::SearchHierarchy( wxString filename, SCH_SCREEN** screen )
|
|||
if( ss->SearchHierarchy( filename, screen ) )
|
||||
return true;
|
||||
}
|
||||
strct = strct->Pnext;
|
||||
strct = strct->Next();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
@ -446,7 +448,7 @@ bool DrawSheetStruct::LocatePathOfScreen( SCH_SCREEN* screen, DrawSheetPath* lis
|
|||
if( ss->LocatePathOfScreen( screen, list ) )
|
||||
return true;
|
||||
}
|
||||
strct = strct->Pnext;
|
||||
strct = strct->Next();
|
||||
}
|
||||
|
||||
list->Pop();
|
||||
|
@ -488,7 +490,7 @@ bool DrawSheetStruct::Load( WinEDA_SchematicFrame* frame )
|
|||
if( !sheetstruct->Load( frame ) )
|
||||
success = false;
|
||||
}
|
||||
bs = bs->Pnext;
|
||||
bs = bs->Next();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -506,7 +508,7 @@ int DrawSheetStruct::CountSheets()
|
|||
if( m_AssociatedScreen )
|
||||
{
|
||||
EDA_BaseStruct* strct = m_AssociatedScreen->EEDrawList;
|
||||
for( ; strct; strct = strct->Pnext )
|
||||
for( ; strct; strct = strct->Next() )
|
||||
{
|
||||
if( strct->Type() == DRAW_SHEET_STRUCT_TYPE )
|
||||
{
|
||||
|
@ -787,7 +789,7 @@ void DrawSheetPath::UpdateAllScreenReferences()
|
|||
component->GetField(REFERENCE)->m_Text = component->GetRef( this );
|
||||
component->m_Multi = component->GetUnitSelection( this );
|
||||
}
|
||||
t = t->Pnext;
|
||||
t = t->Next();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -196,7 +196,8 @@ EDA_LibComponentStruct::~EDA_LibComponentStruct()
|
|||
field = Fields; Fields = NULL;
|
||||
while( field )
|
||||
{
|
||||
TempField = field; field = (LibDrawField*) field->Pnext;
|
||||
TempField = field;
|
||||
field = field->Next();
|
||||
SAFE_DELETE( TempField );
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ void SetStructFather( EDA_BaseStruct* Struct, BASE_SCREEN* Screen )
|
|||
case DRAW_SHEET_STRUCT_TYPE:
|
||||
case DRAW_MARKER_STRUCT_TYPE:
|
||||
case DRAW_NOCONNECT_STRUCT_TYPE:
|
||||
Struct->m_Parent = Screen;
|
||||
Struct->SetParent( Screen );
|
||||
break;
|
||||
|
||||
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||
|
@ -138,9 +138,9 @@ void SCH_SCREEN::RemoveFromDrawList( SCH_ITEM * DrawStruct )
|
|||
EDA_BaseStruct* DrawList = EEDrawList;
|
||||
while( DrawList && DrawList->Next() )
|
||||
{
|
||||
if( DrawList->Pnext == DrawStruct )
|
||||
if( DrawList->Next() == DrawStruct )
|
||||
{
|
||||
DrawList->Pnext = DrawList->Pnext->Pnext;
|
||||
DrawList->SetNext( DrawList->Next()->Next() );
|
||||
break;
|
||||
}
|
||||
DrawList = DrawList->Next();
|
||||
|
@ -170,7 +170,7 @@ bool SCH_SCREEN::CheckIfOnDrawList( SCH_ITEM* st )
|
|||
void SCH_SCREEN::AddToDrawList( SCH_ITEM* st )
|
||||
/**************************************************************/
|
||||
{ //simple function to add to the head of the drawlist.
|
||||
st->Pnext = EEDrawList;
|
||||
st->SetNext( EEDrawList );
|
||||
EEDrawList = st;
|
||||
}
|
||||
|
||||
|
@ -262,7 +262,7 @@ void EDA_ScreenList::BuildScreenList( EDA_BaseStruct* s )
|
|||
{
|
||||
BuildScreenList( strct );
|
||||
}
|
||||
strct = strct->Pnext;
|
||||
strct = strct->Next();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -335,7 +335,7 @@ void EDA_SheetList::BuildSheetList( DrawSheetStruct* sheet )
|
|||
DrawSheetStruct* sht = (DrawSheetStruct*) strct;
|
||||
BuildSheetList( sht );
|
||||
}
|
||||
strct = strct->Pnext;
|
||||
strct = strct->Next();
|
||||
}
|
||||
}
|
||||
m_currList.Pop();
|
||||
|
|
|
@ -193,10 +193,15 @@ public:
|
|||
public:
|
||||
LibDrawPin();
|
||||
~LibDrawPin() { }
|
||||
|
||||
LibDrawPin* Next() const { return (LibDrawPin*) Pnext; }
|
||||
LibDrawPin* Back() const { return (LibDrawPin*) Pback; }
|
||||
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
return wxT( "LibDrawPin" );
|
||||
}
|
||||
|
||||
/**
|
||||
* Function Save
|
||||
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||
|
@ -451,8 +456,8 @@ public:
|
|||
|
||||
public:
|
||||
|
||||
LibDrawField* Next() { return (LibDrawField*) Pnext; }
|
||||
LibDrawField* Prev() { return (LibDrawField*) Pback; }
|
||||
LibDrawField* Next() const { return (LibDrawField*) Pnext; }
|
||||
LibDrawField* Back() const { return (LibDrawField*) Pback; }
|
||||
|
||||
|
||||
LibDrawField( int idfield = 2 );
|
||||
|
|
|
@ -167,14 +167,14 @@ DrawPickedStruct* BreakSegment( SCH_SCREEN* screen,
|
|||
wrapper->m_PickedStruct = segment->GenCopy();
|
||||
wrapper->m_Image = segment;
|
||||
wrapper->m_PickedStruct->m_Image = segment;
|
||||
wrapper->Pnext = List;
|
||||
wrapper->SetNext( List );
|
||||
List = wrapper;
|
||||
}
|
||||
NewSegment = segment->GenCopy();
|
||||
NewSegment->m_Start = breakpoint;
|
||||
segment->m_End = NewSegment->m_Start;
|
||||
NewSegment->Pnext = segment->Pnext;
|
||||
segment->Pnext = NewSegment;
|
||||
NewSegment->SetNext( segment->Next() );
|
||||
segment->SetNext( NewSegment );
|
||||
DrawList = NewSegment;
|
||||
if( PutInUndoList )
|
||||
{
|
||||
|
@ -182,7 +182,7 @@ DrawPickedStruct* BreakSegment( SCH_SCREEN* screen,
|
|||
|
||||
wrapper->m_Flags = IS_NEW;
|
||||
wrapper->m_Image = NewSegment;
|
||||
wrapper->Pnext = List;
|
||||
wrapper->SetNext( List );
|
||||
List = wrapper;
|
||||
}
|
||||
break;
|
||||
|
@ -196,7 +196,7 @@ DrawPickedStruct* BreakSegment( SCH_SCREEN* screen,
|
|||
break;
|
||||
}
|
||||
|
||||
DrawList = DrawList->Pnext;
|
||||
DrawList = DrawList->Next();
|
||||
}
|
||||
|
||||
return List;
|
||||
|
|
|
@ -72,10 +72,10 @@ SCH_COMPONENT::SCH_COMPONENT( const SCH_COMPONENT& aTemplate ) :
|
|||
Pnext = NULL;
|
||||
m_Son = NULL;
|
||||
|
||||
// Re-parent the fields, which before this were aTemplate's parent
|
||||
// Re-parent the fields, which before this had aTemplate as parent
|
||||
for( int i=0; i<GetFieldCount(); ++i )
|
||||
{
|
||||
GetField( i )->m_Parent = this;
|
||||
GetField( i )->SetParent( this );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -424,11 +424,11 @@ void SCH_COMPONENT::SwapData( SCH_COMPONENT* copyitem )
|
|||
// (after swap(), m_Parent member does not point to the right parent):
|
||||
for( int ii = 0; ii < copyitem->GetFieldCount(); ++ii )
|
||||
{
|
||||
copyitem->GetField(ii)->m_Parent = copyitem;
|
||||
copyitem->GetField(ii)->SetParent( copyitem );
|
||||
}
|
||||
for( int ii = 0; ii < GetFieldCount(); ++ii )
|
||||
{
|
||||
GetField(ii)->m_Parent = this;
|
||||
GetField(ii)->SetParent( this );
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -39,7 +39,11 @@ struct Error
|
|||
}
|
||||
};
|
||||
|
||||
/* Fields identifiers */
|
||||
|
||||
/**
|
||||
* Enum NumFieldType
|
||||
* is the numbered set of all fields a SCH_COMPONENT can hold
|
||||
*/
|
||||
enum NumFieldType {
|
||||
REFERENCE = 0, ///< Field Reference of part, i.e. "IC21"
|
||||
VALUE, ///< Field Value of part, i.e. "3.3K"
|
||||
|
@ -59,31 +63,36 @@ enum NumFieldType {
|
|||
};
|
||||
|
||||
|
||||
/// A container for several SCH_CMP_FIELD items
|
||||
typedef std::vector<SCH_CMP_FIELD> SCH_CMP_FIELDS;
|
||||
|
||||
|
||||
/**
|
||||
* Class SCH_COMPONENT
|
||||
* describes a real schematic component
|
||||
*/
|
||||
class SCH_COMPONENT : public SCH_ITEM
|
||||
{
|
||||
friend class DIALOG_EDIT_COMPONENT_IN_SCHEMATIC;
|
||||
|
||||
public:
|
||||
int m_Multi; /* In multi unit chip - which unit to draw. */
|
||||
int m_Multi; ///< In multi unit chip - which unit to draw.
|
||||
|
||||
wxPoint m_Pos;
|
||||
|
||||
wxString m_ChipName; /* Key to look for in the library, i.e. "74LS00". */
|
||||
wxString m_ChipName; ///< Key to look for in the library, i.e. "74LS00".
|
||||
|
||||
wxString m_PrefixString; /* C, R, U, Q etc - the first character which typically indicates what the component is.
|
||||
* determined, upon placement, from the library component.
|
||||
* determined, upon file load, by the first non-digits in the reference fields. */
|
||||
* determined, upon file load, by the first non-digits in the reference fields.
|
||||
*/
|
||||
|
||||
int m_Convert; /* Handle mutiple shape (for instance De Morgan conversion) */
|
||||
int m_Transform[2][2]; /* The rotation/mirror transformation matrix. */
|
||||
|
||||
private:
|
||||
|
||||
/** how many fields are fixed, or automatic and pre-made in the SCH_COMPONENT class */
|
||||
|
||||
typedef std::vector<SCH_CMP_FIELD> SCH_CMP_FIELDS;
|
||||
SCH_CMP_FIELDS m_Fields;
|
||||
SCH_CMP_FIELDS m_Fields; ///< variable length list of fields
|
||||
|
||||
|
||||
/* Hierarchical references.
|
||||
|
@ -200,11 +209,13 @@ public:
|
|||
|
||||
void Place( WinEDA_SchematicFrame* frame, wxDC* DC );
|
||||
|
||||
|
||||
// returns a unique ID, in the form of a path.
|
||||
wxString GetPath( DrawSheetPath* sheet );
|
||||
//returns the reference, for the given sheet path.
|
||||
|
||||
/**
|
||||
* Function GetRef
|
||||
* returns the reference, for the given sheet path.
|
||||
*/
|
||||
const wxString GetRef( DrawSheetPath* sheet );
|
||||
|
||||
// Set the reference, for the given sheet path.
|
||||
|
|
|
@ -54,7 +54,7 @@ SCH_ITEM * WinEDA_SchematicFrame:: SchematicGeneralLocateAndDisplay( bool Includ
|
|||
{
|
||||
case DRAW_PART_TEXT_STRUCT_TYPE:
|
||||
case COMPONENT_FIELD_DRAW_TYPE:
|
||||
LibItem = (SCH_COMPONENT*) DrawStruct->m_Parent;
|
||||
LibItem = (SCH_COMPONENT*) DrawStruct->GetParent();
|
||||
SendMessageToPCBNEW( DrawStruct,LibItem );
|
||||
break;
|
||||
|
||||
|
@ -168,7 +168,7 @@ SCH_ITEM* WinEDA_SchematicFrame:: SchematicGeneralLocateAndDisplay( const wxPoin
|
|||
if( DrawStruct )
|
||||
{
|
||||
SCH_CMP_FIELD* Field = (SCH_CMP_FIELD*) DrawStruct;
|
||||
LibItem = (SCH_COMPONENT*) Field->m_Parent;
|
||||
LibItem = (SCH_COMPONENT*) Field->GetParent();
|
||||
LibItem->Display_Infos( this );
|
||||
|
||||
return DrawStruct;
|
||||
|
|
|
@ -314,7 +314,7 @@ DanglingEndHandle* RebuildEndList( EDA_BaseStruct* DrawList )
|
|||
DanglingEndHandle* StartList = NULL, * item, * lastitem = NULL;
|
||||
EDA_BaseStruct* DrawItem;
|
||||
|
||||
for( DrawItem = DrawList; DrawItem != NULL; DrawItem = DrawItem->Pnext )
|
||||
for( DrawItem = DrawList; DrawItem != NULL; DrawItem = DrawItem->Next() )
|
||||
{
|
||||
switch( DrawItem->Type() )
|
||||
{
|
||||
|
|
|
@ -147,7 +147,7 @@ void WinEDA_SchematicFrame::DeleteConnection( wxDC* DC, bool DeleteFullConnectio
|
|||
/* Put this structure in the picked list: */
|
||||
PickedItem = new DrawPickedStruct( DelStruct );
|
||||
|
||||
PickedItem->Pnext = PickedList;
|
||||
PickedItem->SetNext( PickedList );
|
||||
PickedList = PickedItem;
|
||||
DelStruct = DelStruct->Next();
|
||||
screen->EEDrawList = DelStruct;
|
||||
|
@ -194,7 +194,7 @@ void WinEDA_SchematicFrame::DeleteConnection( wxDC* DC, bool DeleteFullConnectio
|
|||
EDA_BaseStruct* removed_struct;
|
||||
for( removed_struct = GetScreen()->EEDrawList;
|
||||
removed_struct != NULL;
|
||||
removed_struct = removed_struct->Pnext )
|
||||
removed_struct = removed_struct->Next() )
|
||||
{
|
||||
if( (removed_struct->m_Flags & STRUCT_DELETED) == 0 )
|
||||
continue;
|
||||
|
@ -214,7 +214,7 @@ void WinEDA_SchematicFrame::DeleteConnection( wxDC* DC, bool DeleteFullConnectio
|
|||
* and now is not connected, the wire can be deleted */
|
||||
for( removed_struct = GetScreen()->EEDrawList;
|
||||
removed_struct != NULL;
|
||||
removed_struct = removed_struct->Pnext )
|
||||
removed_struct = removed_struct->Next() )
|
||||
{
|
||||
if( (removed_struct->m_Flags & STRUCT_DELETED) == 0 )
|
||||
continue;
|
||||
|
@ -236,7 +236,7 @@ void WinEDA_SchematicFrame::DeleteConnection( wxDC* DC, bool DeleteFullConnectio
|
|||
/* Put this structure in the picked list: */
|
||||
PickedItem = new DrawPickedStruct( DelStruct );
|
||||
|
||||
PickedItem->Pnext = PickedList;
|
||||
PickedItem->SetNext( PickedList );
|
||||
PickedList = PickedItem;
|
||||
DelStruct = GetScreen()->EEDrawList;
|
||||
}
|
||||
|
@ -264,7 +264,7 @@ void WinEDA_SchematicFrame::DeleteConnection( wxDC* DC, bool DeleteFullConnectio
|
|||
/* Put this structure in the picked list: */
|
||||
PickedItem = new DrawPickedStruct( DelStruct );
|
||||
|
||||
PickedItem->Pnext = PickedList;
|
||||
PickedItem->SetNext( PickedList );
|
||||
PickedList = PickedItem;
|
||||
}
|
||||
#undef JUNCTION
|
||||
|
@ -292,7 +292,7 @@ void WinEDA_SchematicFrame::DeleteConnection( wxDC* DC, bool DeleteFullConnectio
|
|||
/* Put this structure in the picked list: */
|
||||
PickedItem = new DrawPickedStruct( DelStruct );
|
||||
|
||||
PickedItem->Pnext = PickedList;
|
||||
PickedItem->SetNext( PickedList );
|
||||
PickedList = PickedItem;
|
||||
}
|
||||
}
|
||||
|
@ -398,7 +398,7 @@ void EraseStruct( SCH_ITEM* DrawStruct, SCH_SCREEN* Screen )
|
|||
* accessible par la liste globale directement */
|
||||
//this structure has a sheet attached, which we must find.
|
||||
DrawList = Screen->EEDrawList;
|
||||
for( ; DrawList != NULL; DrawList = DrawList->Pnext )
|
||||
for( ; DrawList != NULL; DrawList = DrawList->Next() )
|
||||
{
|
||||
if( DrawList->Type() != DRAW_SHEET_STRUCT_TYPE )
|
||||
continue;
|
||||
|
@ -411,19 +411,19 @@ void EraseStruct( SCH_ITEM* DrawStruct, SCH_SCREEN* Screen )
|
|||
if( SheetLabel == (Hierarchical_PIN_Sheet_Struct*) DrawStruct )
|
||||
{
|
||||
( (DrawSheetStruct*) DrawList )->m_Label =
|
||||
(Hierarchical_PIN_Sheet_Struct*) SheetLabel->Pnext;
|
||||
(Hierarchical_PIN_Sheet_Struct*) SheetLabel->Next();
|
||||
|
||||
SAFE_DELETE( DrawStruct );
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
while( SheetLabel->Pnext ) /* Examen de la liste dependante */
|
||||
while( SheetLabel->Next() ) /* Examen de la liste dependante */
|
||||
{
|
||||
NextLabel = (Hierarchical_PIN_Sheet_Struct*) SheetLabel->Pnext;
|
||||
NextLabel = (Hierarchical_PIN_Sheet_Struct*) SheetLabel->Next();
|
||||
if( NextLabel == (Hierarchical_PIN_Sheet_Struct*) DrawStruct )
|
||||
{
|
||||
SheetLabel->Pnext = (EDA_BaseStruct*) NextLabel->Pnext;
|
||||
SheetLabel->SetNext( (EDA_BaseStruct*) NextLabel->Next() );
|
||||
SAFE_DELETE( DrawStruct );
|
||||
return;
|
||||
}
|
||||
|
@ -448,18 +448,18 @@ void EraseStruct( SCH_ITEM* DrawStruct, SCH_SCREEN* Screen )
|
|||
else
|
||||
{
|
||||
DrawList = Screen->EEDrawList;
|
||||
while( DrawList && DrawList->Pnext )
|
||||
while( DrawList && DrawList->Next() )
|
||||
{
|
||||
if( DrawList->Pnext == PickedList->m_PickedStruct )
|
||||
if( DrawList->Next() == PickedList->m_PickedStruct )
|
||||
{
|
||||
DrawList->Pnext = DrawList->Pnext->Pnext;
|
||||
DrawList->SetNext( DrawList->Next()->Next() );
|
||||
SAFE_DELETE( DrawStruct );
|
||||
return;
|
||||
}
|
||||
DrawList = DrawList->Pnext;
|
||||
DrawList = DrawList->Next();
|
||||
}
|
||||
}
|
||||
PickedList = (DrawPickedStruct*) PickedList->Pnext;
|
||||
PickedList = (DrawPickedStruct*) PickedList->Next();
|
||||
}
|
||||
}
|
||||
else // structure usuelle */
|
||||
|
@ -472,15 +472,15 @@ void EraseStruct( SCH_ITEM* DrawStruct, SCH_SCREEN* Screen )
|
|||
else
|
||||
{
|
||||
DrawList = Screen->EEDrawList;
|
||||
while( DrawList && DrawList->Pnext )
|
||||
while( DrawList && DrawList->Next() )
|
||||
{
|
||||
if( DrawList->Pnext == DrawStruct )
|
||||
if( DrawList->Next() == DrawStruct )
|
||||
{
|
||||
DrawList->Pnext = DrawStruct->Pnext;
|
||||
DrawList->SetNext( DrawStruct->Next() );
|
||||
SAFE_DELETE( DrawStruct );
|
||||
return;
|
||||
}
|
||||
DrawList = DrawList->Pnext;
|
||||
DrawList = DrawList->Next();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -557,9 +557,9 @@ void DeleteOneLibraryDrawStruct( WinEDA_DrawPanel* panel, wxDC* DC,
|
|||
{
|
||||
while( PreviousDrawItem )
|
||||
{
|
||||
if( PreviousDrawItem->Pnext == DrawItem )
|
||||
if( PreviousDrawItem->Next() == DrawItem )
|
||||
{
|
||||
PreviousDrawItem->Pnext = DrawItem->Pnext;
|
||||
PreviousDrawItem->SetNext( DrawItem->Next() );
|
||||
SAFE_DELETE( DrawItem );
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -18,8 +18,8 @@ void DeleteSubHierarchy(DrawSheetStruct * FirstSheet, bool confirm_deletion)
|
|||
/**************************************************************************/
|
||||
|
||||
/* Free (delete) all schematic data (include the sub hierarchy sheets )
|
||||
for the hierarchical sheet FirstSheet
|
||||
FirstSheet is not deleted.
|
||||
* for the hierarchical sheet FirstSheet
|
||||
* FirstSheet is not deleted.
|
||||
*/
|
||||
{
|
||||
EDA_BaseStruct* DrawStruct;
|
||||
|
@ -27,7 +27,8 @@ EDA_BaseStruct *EEDrawList;
|
|||
WinEDA_SchematicFrame* frame = g_EDA_Appl->m_SchematicFrame;
|
||||
wxString msg;
|
||||
|
||||
if( FirstSheet == NULL ) return;
|
||||
if( FirstSheet == NULL )
|
||||
return;
|
||||
|
||||
if( FirstSheet->Type() != DRAW_SHEET_STRUCT_TYPE )
|
||||
{
|
||||
|
@ -49,53 +50,61 @@ wxString msg;
|
|||
}
|
||||
|
||||
/* free the sub hierarchy */
|
||||
if(FirstSheet->m_AssociatedScreen){
|
||||
if( FirstSheet->m_AssociatedScreen )
|
||||
{
|
||||
EEDrawList = FirstSheet->m_AssociatedScreen->EEDrawList;
|
||||
while( EEDrawList != NULL )
|
||||
{
|
||||
DrawStruct = EEDrawList;
|
||||
EEDrawList = EEDrawList->Pnext;
|
||||
EEDrawList = EEDrawList->Next();
|
||||
if( DrawStruct->Type() == DRAW_SHEET_STRUCT_TYPE )
|
||||
{
|
||||
DeleteSubHierarchy( (DrawSheetStruct*) DrawStruct, confirm_deletion );
|
||||
}
|
||||
}
|
||||
|
||||
/* Effacement des elements de la feuille courante */
|
||||
FirstSheet->m_AssociatedScreen->FreeDrawList();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*********************************************************************/
|
||||
|
||||
//void ClearDrawList(EDA_BaseStruct *DrawList, bool confirm_deletion)
|
||||
/********************************************************************/
|
||||
/* free the draw list DrawList and the subhierarchies */
|
||||
|
||||
//this is redundant -- use FreeDrawList, a member of SCH_SCREEN
|
||||
|
||||
/*
|
||||
{
|
||||
EDA_BaseStruct *DrawStruct;
|
||||
|
||||
while (DrawList != NULL)
|
||||
{
|
||||
DrawStruct = DrawList;
|
||||
DrawList = DrawList->Pnext;
|
||||
|
||||
if( DrawStruct->Type() == DRAW_SHEET_STRUCT_TYPE)
|
||||
{
|
||||
DeleteSubHierarchy((DrawSheetStruct*) DrawStruct, confirm_deletion);
|
||||
}
|
||||
|
||||
delete DrawStruct;
|
||||
}
|
||||
}
|
||||
* {
|
||||
* EDA_BaseStruct *DrawStruct;
|
||||
*
|
||||
* while (DrawList != NULL)
|
||||
* {
|
||||
* DrawStruct = DrawList;
|
||||
* DrawList = DrawList->Pnext;
|
||||
*
|
||||
* if( DrawStruct->Type() == DRAW_SHEET_STRUCT_TYPE)
|
||||
* {
|
||||
* DeleteSubHierarchy((DrawSheetStruct*) DrawStruct, confirm_deletion);
|
||||
* }
|
||||
*
|
||||
* delete DrawStruct;
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
/********************************************************************/
|
||||
bool ClearProjectDrawList( SCH_SCREEN* screen, bool confirm_deletion )
|
||||
/********************************************************************/
|
||||
|
||||
/* free the draw list screen->EEDrawList and the subhierarchies
|
||||
clear the screen datas (filenames ..)
|
||||
* clear the screen datas (filenames ..)
|
||||
*/
|
||||
{
|
||||
if ( screen == NULL ) return(TRUE);
|
||||
if( screen == NULL )
|
||||
return TRUE;
|
||||
|
||||
screen->FreeDrawList();
|
||||
|
||||
|
@ -112,4 +121,3 @@ bool ClearProjectDrawList(SCH_SCREEN * screen, bool confirm_deletion)
|
|||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,310 +1,504 @@
|
|||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: dialog_edit_component_in_schematic.cpp
|
||||
// Purpose:
|
||||
// Author: jean-pierre Charras
|
||||
// Modified by:
|
||||
// Created: 03/03/2006 15:02:54
|
||||
// RCS-ID:
|
||||
// Copyright: License GNU
|
||||
// Licence:
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Generated by DialogBlocks (unregistered), 03/03/2006 15:02:54
|
||||
#include <wx/checklst.h>
|
||||
#include <wx/tooltip.h>
|
||||
|
||||
#include "fctsys.h"
|
||||
#include "gr_basic.h"
|
||||
|
||||
////@begin includes
|
||||
////@end includes
|
||||
#include "common.h"
|
||||
#include "program.h"
|
||||
#include "libcmp.h"
|
||||
#include "general.h"
|
||||
|
||||
#include "protos.h"
|
||||
|
||||
#include "dialog_edit_component_in_schematic.h"
|
||||
|
||||
////@begin XPM images
|
||||
////@end XPM images
|
||||
|
||||
/*!
|
||||
* WinEDA_ComponentPropertiesFrame type definition
|
||||
#define ID_ON_SELECT_FIELD 3000
|
||||
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
void InstallCmpeditFrame( WinEDA_SchematicFrame* parent, wxPoint& pos,
|
||||
SCH_COMPONENT* aComponent )
|
||||
/*********************************************************************/
|
||||
{
|
||||
parent->DrawPanel->m_IgnoreMouseEvents = TRUE;
|
||||
if( aComponent->Type() != TYPE_SCH_COMPONENT )
|
||||
{
|
||||
DisplayError( parent,
|
||||
wxT( "InstallCmpeditFrame() error: This struct is not a component" ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
wxASSERT( aComponent ); // this is no longer callable with NULL
|
||||
|
||||
DIALOG_EDIT_COMPONENT_IN_SCHEMATIC* frame =
|
||||
new DIALOG_EDIT_COMPONENT_IN_SCHEMATIC( parent );
|
||||
|
||||
frame->InitBuffers( aComponent );
|
||||
frame->ShowModal();
|
||||
frame->Destroy();
|
||||
}
|
||||
|
||||
parent->DrawPanel->MouseToCursorSchema();
|
||||
parent->DrawPanel->m_IgnoreMouseEvents = FALSE;
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
/*********************************************************************/
|
||||
void SCH_CMP_FIELD::Place( WinEDA_SchematicFrame* frame, wxDC* DC )
|
||||
/*********************************************************************/
|
||||
{
|
||||
frame->DrawPanel->ManageCurseur = NULL;
|
||||
frame->DrawPanel->ForceCloseManageCurseur = NULL;
|
||||
|
||||
SCH_COMPONENT* component = (SCH_COMPONENT*) m_Parent;
|
||||
|
||||
// save old component in undo list
|
||||
if( g_ItemToUndoCopy && g_ItemToUndoCopy->Type() == component->Type() )
|
||||
{
|
||||
component->SwapData( (SCH_COMPONENT*) g_ItemToUndoCopy );
|
||||
|
||||
frame->SaveCopyInUndoList( component, IS_CHANGED );
|
||||
|
||||
component->SwapData( (SCH_COMPONENT*) g_ItemToUndoCopy );
|
||||
}
|
||||
|
||||
m_AddExtraText = 0;
|
||||
if( m_FieldId == REFERENCE )
|
||||
{
|
||||
EDA_LibComponentStruct* part;
|
||||
|
||||
part = FindLibPart( component->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
|
||||
if( part )
|
||||
{
|
||||
if( part->m_UnitCount > 1 )
|
||||
m_AddExtraText = 1;
|
||||
}
|
||||
}
|
||||
|
||||
Draw( frame->DrawPanel, DC, wxPoint(0,0), GR_DEFAULT_DRAWMODE );
|
||||
m_Flags = 0;
|
||||
frame->GetScreen()->SetCurItem( NULL );
|
||||
frame->GetScreen()->SetModify();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC( wxWindow* parent ) :
|
||||
DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP( parent )
|
||||
{
|
||||
m_Parent = (WinEDA_SchematicFrame*) parent;
|
||||
|
||||
// fieldGrid->SetDefaultColSize( 160, true );
|
||||
// fieldGrid->SetColLabelValue( 0, _("Field Text") );
|
||||
|
||||
// set grid as read only.
|
||||
fieldGrid->EnableEditing( false );
|
||||
|
||||
// @todo make this conditional on 2.8.8 wxWidgets
|
||||
fieldGrid->SetRowLabelSize( wxGRID_AUTOSIZE );
|
||||
|
||||
// else fieldGrid->SetRowLabelSize( 140 ) or so
|
||||
|
||||
// select only a single row, and since table is only a single column wide
|
||||
// this means only one cell.
|
||||
fieldGrid->SetSelectionMode( wxGrid::wxGridSelectRows );
|
||||
|
||||
wxToolTip::Enable( true );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnGridCellLeftClick( wxGridEvent& event )
|
||||
{
|
||||
// TODO: Implement OnGridCellLeftClick
|
||||
}
|
||||
*/
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS( WinEDA_ComponentPropertiesFrame, wxDialog )
|
||||
void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::setSelectedFieldNdx( int aFieldNdx )
|
||||
{
|
||||
fieldGrid->SelectCol( 0 );
|
||||
fieldGrid->SelectRow( aFieldNdx );
|
||||
}
|
||||
|
||||
/*!
|
||||
* WinEDA_ComponentPropertiesFrame event table definition
|
||||
|
||||
int DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::getSelectedFieldNdx()
|
||||
{
|
||||
wxArrayInt array = fieldGrid->GetSelectedRows();
|
||||
if( !array.IsEmpty() )
|
||||
return array.Item(0);
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
/*****************************************************************************/
|
||||
void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp( wxCommandEvent& event )
|
||||
/*****************************************************************************/
|
||||
|
||||
/* Replace le composant en position normale, dimensions et positions
|
||||
* fields comme definies en librairie
|
||||
*/
|
||||
{
|
||||
EDA_LibComponentStruct* Entry;
|
||||
|
||||
BEGIN_EVENT_TABLE( WinEDA_ComponentPropertiesFrame, wxDialog )
|
||||
if( m_Cmp == NULL )
|
||||
return;
|
||||
|
||||
////@begin WinEDA_ComponentPropertiesFrame event table entries
|
||||
EVT_BUTTON( wxID_CANCEL, WinEDA_ComponentPropertiesFrame::OnCancelClick )
|
||||
Entry = FindLibPart( m_Cmp->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
|
||||
|
||||
EVT_BUTTON( ID_RESTORE_CMP_DEFAULTS, WinEDA_ComponentPropertiesFrame::OnRestoreCmpDefaultsClick )
|
||||
if( Entry == NULL )
|
||||
return;
|
||||
|
||||
EVT_BUTTON( wxID_OK, WinEDA_ComponentPropertiesFrame::OnOkClick )
|
||||
wxClientDC dc( m_Parent->DrawPanel );
|
||||
m_Parent->DrawPanel->PrepareGraphicContext( &dc );
|
||||
|
||||
////@end WinEDA_ComponentPropertiesFrame event table entries
|
||||
RedrawOneStruct( m_Parent->DrawPanel, &dc, m_Cmp, g_XorMode );
|
||||
|
||||
EVT_RADIOBOX(ID_ON_SELECT_FIELD, WinEDA_ComponentPropertiesFrame::SelectNewField)
|
||||
/* Mise aux valeurs par defaut des champs et orientation */
|
||||
m_Cmp->GetField( REFERENCE )->m_Pos.x =
|
||||
Entry->m_Prefix.m_Pos.x + m_Cmp->m_Pos.x;
|
||||
|
||||
END_EVENT_TABLE()
|
||||
m_Cmp->GetField( REFERENCE )->m_Pos.y =
|
||||
Entry->m_Prefix.m_Pos.y + m_Cmp->m_Pos.y;
|
||||
|
||||
/*!
|
||||
* WinEDA_ComponentPropertiesFrame constructors
|
||||
m_Cmp->GetField( REFERENCE )->m_Orient = Entry->m_Prefix.m_Orient;
|
||||
m_Cmp->GetField( REFERENCE )->m_Size = Entry->m_Prefix.m_Size;
|
||||
m_Cmp->GetField( REFERENCE )->m_HJustify = Entry->m_Prefix.m_HJustify;
|
||||
m_Cmp->GetField( REFERENCE )->m_VJustify = Entry->m_Prefix.m_VJustify;
|
||||
|
||||
m_Cmp->GetField( VALUE )->m_Pos.x =
|
||||
Entry->m_Name.m_Pos.x + m_Cmp->m_Pos.x;
|
||||
|
||||
m_Cmp->GetField( VALUE )->m_Pos.y =
|
||||
Entry->m_Name.m_Pos.y + m_Cmp->m_Pos.y;
|
||||
|
||||
m_Cmp->GetField( VALUE )->m_Orient = Entry->m_Name.m_Orient;
|
||||
m_Cmp->GetField( VALUE )->m_Size = Entry->m_Name.m_Size;
|
||||
m_Cmp->GetField( VALUE )->m_HJustify = Entry->m_Name.m_HJustify;
|
||||
m_Cmp->GetField( VALUE )->m_VJustify = Entry->m_Name.m_VJustify;
|
||||
|
||||
m_Cmp->SetRotationMiroir( CMP_NORMAL );
|
||||
|
||||
m_Parent->GetScreen()->SetModify();
|
||||
|
||||
RedrawOneStruct( m_Parent->DrawPanel, &dc, m_Cmp, GR_DEFAULT_DRAWMODE );
|
||||
EndModal( 1 );
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/********************************************************************************/
|
||||
void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::InitBuffers( SCH_COMPONENT* aComponent )
|
||||
/********************************************************************************/
|
||||
{
|
||||
m_Cmp = aComponent;
|
||||
|
||||
setSelectedFieldNdx( REFERENCE );
|
||||
|
||||
m_FieldBuf = aComponent->m_Fields;
|
||||
|
||||
m_FieldBuf[REFERENCE].m_Text = m_Cmp->GetRef( m_Parent->GetSheet() );
|
||||
|
||||
for( int ii = 0; ii < aComponent->GetFieldCount(); ++ii )
|
||||
{
|
||||
// make the editable field position relative to the component
|
||||
m_FieldBuf[ii].m_Pos -= m_Cmp->m_Pos;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
|
||||
/****************************************************************/
|
||||
void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyDataToPanel()
|
||||
/****************************************************************/
|
||||
{
|
||||
int fieldNdx = GetSelectedFieldNdx();
|
||||
|
||||
if( fieldNdx == -1 )
|
||||
return;
|
||||
|
||||
for( int ii = FIELD1; ii < NUMBER_OF_FIELDS; ii++ )
|
||||
{
|
||||
m_FieldSelection->SetString( ii, m_FieldName[ii] );
|
||||
}
|
||||
|
||||
if( fieldNdx == VALUE && m_LibEntry && m_LibEntry->m_Options == ENTRY_POWER )
|
||||
m_FieldTextCtrl->Enable( FALSE );
|
||||
|
||||
if( m_FieldFlags[fieldNdx] )
|
||||
m_ShowFieldTextCtrl->SetValue( TRUE );
|
||||
else
|
||||
m_ShowFieldTextCtrl->SetValue( FALSE );
|
||||
|
||||
// If the field value is empty and the position is zero, we set the
|
||||
// initial position as a small offset from the ref field, and orient
|
||||
// it the same as the ref field. That is likely to put it at least
|
||||
// close to the desired position.
|
||||
if( m_FieldBuf[fieldNdx].m_Pos == wxPoint( 0, 0 )
|
||||
&& m_FieldBuf[fieldNdx].m_Text.IsEmpty() )
|
||||
{
|
||||
m_VorientFieldText->SetValue( m_FieldOrient[REFERENCE] != 0 );
|
||||
m_FieldPositionCtrl->SetValue( m_FieldPosition[REFERENCE].x + 100,
|
||||
m_FieldPosition[REFERENCE].y + 100 );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_FieldPositionCtrl->SetValue( m_FieldPosition[fieldNdx].x, m_FieldPosition[fieldNdx].y );
|
||||
m_VorientFieldText->SetValue( m_FieldOrient[fieldNdx] != 0 );
|
||||
}
|
||||
|
||||
m_FieldNameCtrl->SetValue( m_FieldName[fieldNdx] );
|
||||
|
||||
if( fieldNdx < FIELD1 )
|
||||
m_FieldNameCtrl->Enable( FALSE );
|
||||
else
|
||||
m_FieldNameCtrl->Enable( TRUE );
|
||||
|
||||
m_FieldTextCtrl->SetValue( m_FieldText[fieldNdx] );
|
||||
m_FieldTextCtrl->SetValue( m_FieldSize[fieldNdx] );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/****************************************************************/
|
||||
void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelFieldToData()
|
||||
/****************************************************************/
|
||||
|
||||
/* Copy the values displayed on the panel field to the buffers according to
|
||||
* the current field number
|
||||
*/
|
||||
{
|
||||
int id = m_CurrentFieldId;
|
||||
|
||||
WinEDA_ComponentPropertiesFrame::WinEDA_ComponentPropertiesFrame( )
|
||||
m_FieldFlags[id] = m_ShowFieldTextCtrl->GetValue();
|
||||
m_FieldOrient[id] = m_VorientFieldText->GetValue();
|
||||
m_FieldText[id] = m_FieldTextCtrl->GetText();
|
||||
m_FieldName[id] = m_FieldNameCtrl->GetValue();
|
||||
m_FieldPosition[id] = m_FieldPositionCtrl->GetValue();
|
||||
m_FieldSize[id] = m_FieldTextCtrl->GetTextSize();
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************/
|
||||
void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::fillTableModel()
|
||||
/*************************************************************/
|
||||
{
|
||||
}
|
||||
|
||||
WinEDA_ComponentPropertiesFrame::WinEDA_ComponentPropertiesFrame( WinEDA_SchematicFrame* parent,
|
||||
SCH_COMPONENT * cmp,
|
||||
wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
m_Parent = parent;
|
||||
m_Cmp = cmp;
|
||||
m_LibEntry = FindLibPart(m_Cmp->m_ChipName.GetData(), wxEmptyString, FIND_ROOT);
|
||||
|
||||
InitBuffers();
|
||||
/**********************************************************/
|
||||
void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::buildPanelBasic()
|
||||
/**********************************************************/
|
||||
|
||||
Create(parent, id, caption, pos, size, style);
|
||||
|
||||
if ( m_LibEntry == NULL )
|
||||
{
|
||||
SetTitle(_("Component properties (Not found in lib)"));
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* WinEDA_ComponentPropertiesFrame creator
|
||||
/* create the basic panel for component properties editing
|
||||
*/
|
||||
|
||||
bool WinEDA_ComponentPropertiesFrame::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
m_FieldNameCtrl = NULL;
|
||||
////@begin WinEDA_ComponentPropertiesFrame member initialisation
|
||||
m_GeneralBoxSizer = NULL;
|
||||
m_NoteBook = NULL;
|
||||
m_PanelBasic = NULL;
|
||||
m_SelectUnit = NULL;
|
||||
m_OrientUnit = NULL;
|
||||
m_MirrorUnit = NULL;
|
||||
m_MsgPartLocked = NULL;
|
||||
m_ConvertButt = NULL;
|
||||
m_RefInLib = NULL;
|
||||
m_PanelField = NULL;
|
||||
m_ShowFieldTextCtrl = NULL;
|
||||
m_VorientFieldText = NULL;
|
||||
m_FieldDatasBoxSizer = NULL;
|
||||
m_FieldSelectionBoxSizer = NULL;
|
||||
m_btClose = NULL;
|
||||
////@end WinEDA_ComponentPropertiesFrame member initialisation
|
||||
int Nb_Max_Unit = m_SelectUnit->GetCount();
|
||||
int ii;
|
||||
|
||||
////@begin WinEDA_ComponentPropertiesFrame creation
|
||||
SetExtraStyle(wxWS_EX_BLOCK_EVENTS);
|
||||
wxDialog::Create( parent, id, caption, pos, size, style );
|
||||
int nb_units = m_LibEntry ? MAX( m_LibEntry->m_UnitCount, 1 ) : 0;
|
||||
|
||||
CreateControls();
|
||||
if (GetSizer())
|
||||
// Disable non existant units selection buttons
|
||||
for( ii = nb_units; ii < Nb_Max_Unit; ii++ )
|
||||
{
|
||||
GetSizer()->SetSizeHints(this);
|
||||
}
|
||||
Centre();
|
||||
////@end WinEDA_ComponentPropertiesFrame creation
|
||||
return true;
|
||||
m_SelectUnit->Enable( ii, FALSE );
|
||||
}
|
||||
|
||||
/*!
|
||||
* Control creation for WinEDA_ComponentPropertiesFrame
|
||||
if( m_Cmp->m_Multi <= Nb_Max_Unit )
|
||||
m_SelectUnit->SetSelection( m_Cmp->m_Multi - 1 );
|
||||
|
||||
ii = m_Cmp->GetRotationMiroir() & ~(CMP_MIROIR_X | CMP_MIROIR_Y);
|
||||
|
||||
if( ii == CMP_ORIENT_90 )
|
||||
m_OrientUnit->SetSelection( 1 );
|
||||
else if( ii == CMP_ORIENT_180 )
|
||||
m_OrientUnit->SetSelection( 2 );
|
||||
else if( ii == CMP_ORIENT_270 )
|
||||
m_OrientUnit->SetSelection( 3 );
|
||||
|
||||
ii = m_Cmp->GetRotationMiroir() & (CMP_MIROIR_X | CMP_MIROIR_Y);
|
||||
if( ii == CMP_MIROIR_X )
|
||||
m_MirrorUnit->SetSelection( 1 );
|
||||
else if( ii == CMP_MIROIR_Y )
|
||||
m_MirrorUnit->SetSelection( 2 );
|
||||
|
||||
// Positionnement de la selection normal/convert
|
||||
if( m_Cmp->m_Convert > 1 )
|
||||
m_ConvertButt->SetValue( TRUE );
|
||||
|
||||
if( (m_LibEntry == NULL) || LookForConvertPart( m_LibEntry ) <= 1 )
|
||||
{
|
||||
m_ConvertButt->Enable( FALSE );
|
||||
}
|
||||
|
||||
// Show the "Parts Locked" option:
|
||||
if( !m_LibEntry || !m_LibEntry->m_UnitSelectionLocked )
|
||||
{
|
||||
m_MsgPartLocked->Show( false );
|
||||
}
|
||||
|
||||
// Positionnement de la reference en librairie
|
||||
m_RefInLib->SetValue( m_Cmp->m_ChipName );
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::selectNewField( wxCommandEvent& event )
|
||||
/*************************************************************************/
|
||||
|
||||
/* called when changing the current field selected
|
||||
* Save the current field settings in buffer and display the new one
|
||||
*/
|
||||
|
||||
void WinEDA_ComponentPropertiesFrame::CreateControls()
|
||||
{
|
||||
SetFont(*g_DialogFont);
|
||||
|
||||
////@begin WinEDA_ComponentPropertiesFrame content construction
|
||||
// Generated by DialogBlocks, 29/04/2008 21:04:31 (unregistered)
|
||||
|
||||
WinEDA_ComponentPropertiesFrame* itemDialog1 = this;
|
||||
|
||||
m_GeneralBoxSizer = new wxBoxSizer(wxVERTICAL);
|
||||
itemDialog1->SetSizer(m_GeneralBoxSizer);
|
||||
|
||||
m_NoteBook = new wxNotebook( itemDialog1, ID_SCHEDIT_NOTEBOOK, wxDefaultPosition, wxDefaultSize, wxNB_DEFAULT|wxNB_TOP );
|
||||
|
||||
m_PanelBasic = new wxPanel( m_NoteBook, ID_PANEL_BASIC, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_PanelBasic->SetSizer(itemBoxSizer5);
|
||||
|
||||
wxArrayString m_SelectUnitStrings;
|
||||
m_SelectUnitStrings.Add(_("Unit 1"));
|
||||
m_SelectUnitStrings.Add(_("Unit 2"));
|
||||
m_SelectUnitStrings.Add(_("Unit 3"));
|
||||
m_SelectUnitStrings.Add(_("Unit 4"));
|
||||
m_SelectUnitStrings.Add(_("Unit 5"));
|
||||
m_SelectUnitStrings.Add(_("Unit 6"));
|
||||
m_SelectUnitStrings.Add(_("Unit 7"));
|
||||
m_SelectUnitStrings.Add(_("Unit 8"));
|
||||
m_SelectUnitStrings.Add(_("Unit 9"));
|
||||
m_SelectUnitStrings.Add(_("Unit 10"));
|
||||
m_SelectUnitStrings.Add(_("Unit 11"));
|
||||
m_SelectUnitStrings.Add(_("Unit 12"));
|
||||
m_SelectUnitStrings.Add(_("Unit 13"));
|
||||
m_SelectUnitStrings.Add(_("Unit 14"));
|
||||
m_SelectUnitStrings.Add(_("Unit 15"));
|
||||
m_SelectUnitStrings.Add(_("Unit 16"));
|
||||
m_SelectUnitStrings.Add(_("Unit 16"));
|
||||
m_SelectUnitStrings.Add(_("Unit 17"));
|
||||
m_SelectUnitStrings.Add(_("Unit 18"));
|
||||
m_SelectUnitStrings.Add(_("Unit 19"));
|
||||
m_SelectUnitStrings.Add(_("Unit 20"));
|
||||
m_SelectUnitStrings.Add(_("Unit 21"));
|
||||
m_SelectUnitStrings.Add(_("Unit 22"));
|
||||
m_SelectUnitStrings.Add(_("Unit 23"));
|
||||
m_SelectUnitStrings.Add(_("Unit 24"));
|
||||
m_SelectUnitStrings.Add(_("Unit 25"));
|
||||
m_SelectUnitStrings.Add(_("Unit 26"));
|
||||
m_SelectUnit = new wxRadioBox( m_PanelBasic, ID_RADIOBOX_UNIT, _("Unit:"), wxDefaultPosition, wxDefaultSize, m_SelectUnitStrings, 9, wxRA_SPECIFY_ROWS );
|
||||
m_SelectUnit->SetSelection(0);
|
||||
itemBoxSizer5->Add(m_SelectUnit, 0, wxGROW|wxALL, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer7 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer5->Add(itemBoxSizer7, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemBoxSizer7->Add(itemBoxSizer8, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
wxArrayString m_OrientUnitStrings;
|
||||
m_OrientUnitStrings.Add(_("0"));
|
||||
m_OrientUnitStrings.Add(_("+90"));
|
||||
m_OrientUnitStrings.Add(_("180"));
|
||||
m_OrientUnitStrings.Add(_("-90"));
|
||||
m_OrientUnit = new wxRadioBox( m_PanelBasic, ID_RADIOBOX_ORIENT, _("Orient:"), wxDefaultPosition, wxDefaultSize, m_OrientUnitStrings, 1, wxRA_SPECIFY_COLS );
|
||||
m_OrientUnit->SetSelection(0);
|
||||
itemBoxSizer8->Add(m_OrientUnit, 0, wxGROW|wxLEFT|wxRIGHT, 5);
|
||||
|
||||
wxArrayString m_MirrorUnitStrings;
|
||||
m_MirrorUnitStrings.Add(_("Normal"));
|
||||
m_MirrorUnitStrings.Add(_("Mirror --"));
|
||||
m_MirrorUnitStrings.Add(_("Mirror !"));
|
||||
m_MirrorUnit = new wxRadioBox( m_PanelBasic, ID_RADIOBOX_MIRROR, _("Mirror:"), wxDefaultPosition, wxDefaultSize, m_MirrorUnitStrings, 1, wxRA_SPECIFY_COLS );
|
||||
m_MirrorUnit->SetSelection(0);
|
||||
itemBoxSizer8->Add(m_MirrorUnit, 0, wxGROW|wxLEFT|wxRIGHT, 5);
|
||||
|
||||
m_MsgPartLocked = new wxStaticText( m_PanelBasic, wxID_STATIC, _("Parts are locked"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer7->Add(m_MsgPartLocked, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5);
|
||||
|
||||
m_ConvertButt = new wxCheckBox( m_PanelBasic, ID_CHECKBOX, _("Convert"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_ConvertButt->SetValue(false);
|
||||
itemBoxSizer7->Add(m_ConvertButt, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
wxStaticText* itemStaticText13 = new wxStaticText( m_PanelBasic, wxID_STATIC, _("Chip Name:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemStaticText13->SetForegroundColour(wxColour(202, 0, 0));
|
||||
itemBoxSizer7->Add(itemStaticText13, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
m_RefInLib = new wxTextCtrl( m_PanelBasic, ID_TEXTCTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer7->Add(m_RefInLib, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
|
||||
|
||||
m_NoteBook->AddPage(m_PanelBasic, _("Options"));
|
||||
|
||||
m_PanelField = new wxPanel( m_NoteBook, ID_PANEL_FIELD, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* itemBoxSizer16 = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_PanelField->SetSizer(itemBoxSizer16);
|
||||
|
||||
wxBoxSizer* itemBoxSizer17 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer16->Add(itemBoxSizer17, 0, wxALIGN_TOP|wxALL, 5);
|
||||
wxBoxSizer* itemBoxSizer18 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemBoxSizer17->Add(itemBoxSizer18, 0, wxGROW|wxALL, 5);
|
||||
m_ShowFieldTextCtrl = new wxCheckBox( m_PanelField, ID_CHECKBOX_SHOW_FILED, _("Show Text"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_ShowFieldTextCtrl->SetValue(false);
|
||||
itemBoxSizer18->Add(m_ShowFieldTextCtrl, 0, wxGROW|wxALL, 5);
|
||||
|
||||
m_VorientFieldText = new wxCheckBox( m_PanelField, ID_CHECKBOX_FILED_ORIENT, _("Vertical"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_VorientFieldText->SetValue(false);
|
||||
itemBoxSizer18->Add(m_VorientFieldText, 0, wxGROW|wxALL, 5);
|
||||
|
||||
m_FieldDatasBoxSizer = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer17->Add(m_FieldDatasBoxSizer, 0, wxGROW|wxALL, 5);
|
||||
|
||||
m_FieldSelectionBoxSizer = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer16->Add(m_FieldSelectionBoxSizer, 0, wxGROW|wxALL, 5);
|
||||
|
||||
m_NoteBook->AddPage(m_PanelField, _("Fields"));
|
||||
|
||||
m_GeneralBoxSizer->Add(m_NoteBook, 0, wxGROW|wxALL, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer23 = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_GeneralBoxSizer->Add(itemBoxSizer23, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
m_btClose = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_btClose->SetForegroundColour(wxColour(0, 0, 255));
|
||||
itemBoxSizer23->Add(m_btClose, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
wxButton* itemButton25 = new wxButton( itemDialog1, ID_RESTORE_CMP_DEFAULTS, _("Defaults"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemButton25->SetForegroundColour(wxColour(206, 0, 0));
|
||||
itemBoxSizer23->Add(itemButton25, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
wxButton* itemButton26 = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemButton26->SetForegroundColour(wxColour(0, 128, 0));
|
||||
itemBoxSizer23->Add(itemButton26, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
////@end WinEDA_ComponentPropertiesFrame content construction
|
||||
m_btClose->SetFocus();
|
||||
BuildPanelBasic();
|
||||
BuildPanelFields();
|
||||
CopyPanelFieldToData();
|
||||
m_CurrentFieldId = m_FieldSelection->GetSelection();
|
||||
CopyDataToPanelField();
|
||||
}
|
||||
|
||||
/*!
|
||||
* Should we show tooltips?
|
||||
|
||||
/***********************************************************************************/
|
||||
void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::ComponentPropertiesAccept( wxCommandEvent& event )
|
||||
/***********************************************************************************/
|
||||
|
||||
/* Update the new parameters for the current edited component
|
||||
*/
|
||||
|
||||
bool WinEDA_ComponentPropertiesFrame::ShowToolTips()
|
||||
{
|
||||
return true;
|
||||
wxPoint cmp_pos = m_Cmp->m_Pos;
|
||||
wxClientDC dc( m_Parent->DrawPanel );
|
||||
wxString newname;
|
||||
|
||||
/* save old cmp in undo list if not already in edit, or moving ... */
|
||||
if( m_Cmp->m_Flags == 0 )
|
||||
m_Parent->SaveCopyInUndoList( m_Cmp, IS_CHANGED );
|
||||
|
||||
CopyPanelFieldToData();
|
||||
|
||||
m_Parent->DrawPanel->PrepareGraphicContext( &dc );
|
||||
|
||||
|
||||
RedrawOneStruct( m_Parent->DrawPanel, &dc, m_Cmp, g_XorMode );
|
||||
|
||||
newname = m_RefInLib->GetValue();
|
||||
newname.MakeUpper();
|
||||
newname.Replace( wxT( " " ), wxT( "_" ) );
|
||||
|
||||
if( newname.IsEmpty() )
|
||||
DisplayError( this, _( "No Component Name!" ) );
|
||||
|
||||
else if( newname.CmpNoCase( m_Cmp->m_ChipName ) )
|
||||
{
|
||||
if( FindLibPart( newname.GetData(), wxEmptyString, FIND_ALIAS ) == NULL )
|
||||
{
|
||||
wxString message;
|
||||
message.Printf( _( "Component [%s] not found!" ), newname.GetData() );
|
||||
DisplayError( this, message );
|
||||
}
|
||||
else // Changement de composant!
|
||||
{
|
||||
m_Cmp->m_ChipName = newname;
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get bitmap resources
|
||||
*/
|
||||
// Mise a jour de la representation:
|
||||
if( m_ConvertButt->IsEnabled() )
|
||||
(m_ConvertButt->GetValue() == TRUE) ?
|
||||
m_Cmp->m_Convert = 2 : m_Cmp->m_Convert = 1;
|
||||
|
||||
wxBitmap WinEDA_ComponentPropertiesFrame::GetBitmapResource( const wxString& name )
|
||||
//Set the part selection in multiple part per pakcage
|
||||
if( m_Cmp->m_Multi )
|
||||
{
|
||||
// Bitmap retrieval
|
||||
////@begin WinEDA_ComponentPropertiesFrame bitmap retrieval
|
||||
wxUnusedVar(name);
|
||||
return wxNullBitmap;
|
||||
////@end WinEDA_ComponentPropertiesFrame bitmap retrieval
|
||||
int unit_selection = m_SelectUnit->GetSelection() + 1;
|
||||
m_Cmp->SetUnitSelection( m_Parent->GetSheet(), unit_selection );
|
||||
m_Cmp->m_Multi = unit_selection;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get icon resources
|
||||
*/
|
||||
|
||||
wxIcon WinEDA_ComponentPropertiesFrame::GetIconResource( const wxString& name )
|
||||
//Mise a jour de l'orientation:
|
||||
switch( m_OrientUnit->GetSelection() )
|
||||
{
|
||||
// Icon retrieval
|
||||
////@begin WinEDA_ComponentPropertiesFrame icon retrieval
|
||||
wxUnusedVar(name);
|
||||
return wxNullIcon;
|
||||
////@end WinEDA_ComponentPropertiesFrame icon retrieval
|
||||
}
|
||||
/*!
|
||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
|
||||
*/
|
||||
case 0:
|
||||
m_Cmp->SetRotationMiroir( CMP_ORIENT_0 );
|
||||
break;
|
||||
|
||||
void WinEDA_ComponentPropertiesFrame::OnCancelClick( wxCommandEvent& event )
|
||||
{
|
||||
EndModal( -1 );
|
||||
case 1:
|
||||
m_Cmp->SetRotationMiroir( CMP_ORIENT_90 );
|
||||
break;
|
||||
|
||||
case 2:
|
||||
m_Cmp->SetRotationMiroir( CMP_ORIENT_180 );
|
||||
break;
|
||||
|
||||
case 3:
|
||||
m_Cmp->SetRotationMiroir( CMP_ORIENT_270 );
|
||||
break;
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RESTORE_CMP_DEFAULTS
|
||||
*/
|
||||
|
||||
void WinEDA_ComponentPropertiesFrame::OnRestoreCmpDefaultsClick( wxCommandEvent& event )
|
||||
switch( m_MirrorUnit->GetSelection() )
|
||||
{
|
||||
SetInitCmp(event);
|
||||
case 0:
|
||||
break;
|
||||
|
||||
case 1:
|
||||
m_Cmp->SetRotationMiroir( CMP_MIROIR_X );
|
||||
break;
|
||||
|
||||
case 2:
|
||||
m_Cmp->SetRotationMiroir( CMP_MIROIR_Y );
|
||||
break;
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
|
||||
*/
|
||||
|
||||
void WinEDA_ComponentPropertiesFrame::OnOkClick( wxCommandEvent& event )
|
||||
// Mise a jour des textes (update the texts)
|
||||
for( int ii = REFERENCE; ii < NUMBER_OF_FIELDS; ii++ )
|
||||
{
|
||||
ComponentPropertiesAccept(event);
|
||||
if( ii == REFERENCE ) // la reference ne peut etre vide
|
||||
{
|
||||
if( !m_FieldText[ii].IsEmpty() )
|
||||
m_Cmp->SetRef(m_Parent->GetSheet(), m_FieldText[ii]);
|
||||
}
|
||||
else if( ii == VALUE ) // la valeur ne peut etre vide et ne peut etre change sur un POWER
|
||||
{
|
||||
EDA_LibComponentStruct* Entry = FindLibPart( m_Cmp->m_ChipName.GetData(
|
||||
), wxEmptyString, FIND_ROOT );
|
||||
if( Entry && (Entry->m_Options == ENTRY_POWER) )
|
||||
m_Cmp->GetField( ii )->m_Text = m_Cmp->m_ChipName;
|
||||
else if( !m_FieldText[ii].IsEmpty() )
|
||||
{
|
||||
m_Cmp->GetField( ii )->m_Text = m_FieldText[ii];
|
||||
}
|
||||
}
|
||||
else
|
||||
m_Cmp->GetField( ii )->m_Text = m_FieldText[ii];
|
||||
|
||||
if( ii >= FIELD1 && m_FieldName[ii] != ReturnDefaultFieldName( ii ) )
|
||||
m_Cmp->GetField( ii )->m_Name = m_FieldName[ii];
|
||||
else
|
||||
m_Cmp->GetField( ii )->m_Name.Empty();
|
||||
|
||||
m_Cmp->GetField( ii )->m_Size.x =
|
||||
m_Cmp->GetField( ii )->m_Size.y = m_FieldSize[ii];
|
||||
if( m_FieldFlags[ii] )
|
||||
m_Cmp->GetField( ii )->m_Attributs &= ~TEXT_NO_VISIBLE;
|
||||
else
|
||||
m_Cmp->GetField( ii )->m_Attributs |= TEXT_NO_VISIBLE;
|
||||
m_Cmp->GetField( ii )->m_Orient = m_FieldOrient[ii] ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ;
|
||||
m_Cmp->GetField( ii )->m_Pos = m_FieldPosition[ii];
|
||||
m_Cmp->GetField( ii )->m_Pos.x += cmp_pos.x;
|
||||
m_Cmp->GetField( ii )->m_Pos.y += cmp_pos.y;
|
||||
}
|
||||
|
||||
m_Parent->GetScreen()->SetModify();
|
||||
|
||||
RedrawOneStruct( m_Parent->DrawPanel, &dc, m_Cmp, GR_DEFAULT_DRAWMODE );
|
||||
m_Parent->TestDanglingEnds( m_Parent->GetScreen()->EEDrawList, &dc );
|
||||
|
||||
EndModal( 0 );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,158 +1,55 @@
|
|||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: dialog_edit_component_in_schematic.h
|
||||
// Purpose:
|
||||
// Author: jean-pierre Charras
|
||||
// Modified by:
|
||||
// Created: 03/03/2006 15:02:54
|
||||
// RCS-ID:
|
||||
// Copyright: License GNU
|
||||
// Licence:
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Generated by DialogBlocks (unregistered), 03/03/2006 15:02:54
|
||||
#ifndef __dialog_edit_component_in_schematic__
|
||||
#define __dialog_edit_component_in_schematic__
|
||||
|
||||
#ifndef _DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_H_
|
||||
#define _DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_H_
|
||||
|
||||
/*!
|
||||
* Includes
|
||||
#include "dialog_edit_component_in_schematic_fbp.h"
|
||||
|
||||
/**
|
||||
* class DIALOG_EDIT_COMPONENT_IN_SCHEMATIC
|
||||
* is hand coded and implements DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP which is maintained by
|
||||
* wxFormBuilder. Do not auto-generate this class or file, it is hand coded.
|
||||
*/
|
||||
|
||||
////@begin includes
|
||||
#include "wx/notebook.h"
|
||||
////@end includes
|
||||
|
||||
/*!
|
||||
* Forward declarations
|
||||
*/
|
||||
|
||||
////@begin forward declarations
|
||||
class wxBoxSizer;
|
||||
class wxNotebook;
|
||||
////@end forward declarations
|
||||
|
||||
/*!
|
||||
* Control identifiers
|
||||
*/
|
||||
|
||||
////@begin control identifiers
|
||||
#define ID_DIALOG 10000
|
||||
#define ID_SCHEDIT_NOTEBOOK 10001
|
||||
#define ID_PANEL_BASIC 10002
|
||||
#define ID_RADIOBOX_UNIT 10004
|
||||
#define ID_RADIOBOX_ORIENT 10005
|
||||
#define ID_RADIOBOX_MIRROR 10007
|
||||
#define ID_CHECKBOX 10008
|
||||
#define ID_TEXTCTRL 10009
|
||||
#define ID_PANEL_FIELD 10003
|
||||
#define ID_CHECKBOX_SHOW_FILED 10010
|
||||
#define ID_CHECKBOX_FILED_ORIENT 10011
|
||||
#define ID_RESTORE_CMP_DEFAULTS 10006
|
||||
#define SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_STYLE wxDEFAULT_DIALOG_STYLE|MAYBE_RESIZE_BORDER
|
||||
#define SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_TITLE _("Component Properties")
|
||||
#define SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_IDNAME ID_DIALOG
|
||||
#define SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_SIZE wxSize(400, 300)
|
||||
#define SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_POSITION wxDefaultPosition
|
||||
////@end control identifiers
|
||||
|
||||
/*!
|
||||
* Compatibility
|
||||
*/
|
||||
|
||||
#ifndef wxCLOSE_BOX
|
||||
#define wxCLOSE_BOX 0x1000
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* WinEDA_ComponentPropertiesFrame class declaration
|
||||
*/
|
||||
|
||||
class WinEDA_ComponentPropertiesFrame: public wxDialog
|
||||
class DIALOG_EDIT_COMPONENT_IN_SCHEMATIC : public DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( WinEDA_ComponentPropertiesFrame )
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
public:
|
||||
/// Constructors
|
||||
WinEDA_ComponentPropertiesFrame( );
|
||||
WinEDA_ComponentPropertiesFrame( WinEDA_SchematicFrame* parent,
|
||||
SCH_COMPONENT * cmp,
|
||||
wxWindowID id = SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_SIZE, long style = SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_STYLE );
|
||||
|
||||
/// Creation
|
||||
bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_SIZE, long style = SYMBOL_WINEDA_COMPONENTPROPERTIESFRAME_STYLE );
|
||||
|
||||
/// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
////@begin WinEDA_ComponentPropertiesFrame event handler declarations
|
||||
|
||||
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
|
||||
void OnCancelClick( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RESTORE_CMP_DEFAULTS
|
||||
void OnRestoreCmpDefaultsClick( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
|
||||
void OnOkClick( wxCommandEvent& event );
|
||||
|
||||
////@end WinEDA_ComponentPropertiesFrame event handler declarations
|
||||
|
||||
////@begin WinEDA_ComponentPropertiesFrame member function declarations
|
||||
|
||||
/// Retrieves bitmap resources
|
||||
wxBitmap GetBitmapResource( const wxString& name );
|
||||
|
||||
/// Retrieves icon resources
|
||||
wxIcon GetIconResource( const wxString& name );
|
||||
////@end WinEDA_ComponentPropertiesFrame member function declarations
|
||||
|
||||
/// Should we show tooltips?
|
||||
static bool ShowToolTips();
|
||||
|
||||
void InitBuffers();
|
||||
void BuildPanelBasic();
|
||||
void BuildPanelFields();
|
||||
void ComponentPropertiesAccept(wxCommandEvent& event);
|
||||
void SetInitCmp( wxCommandEvent& event );
|
||||
void CopyDataToPanelField();
|
||||
void CopyPanelFieldToData();
|
||||
void SelectNewField(wxCommandEvent& event);
|
||||
|
||||
////@begin WinEDA_ComponentPropertiesFrame member variables
|
||||
wxBoxSizer* m_GeneralBoxSizer;
|
||||
wxNotebook* m_NoteBook;
|
||||
wxPanel* m_PanelBasic;
|
||||
wxRadioBox* m_SelectUnit;
|
||||
wxRadioBox* m_OrientUnit;
|
||||
wxRadioBox* m_MirrorUnit;
|
||||
wxStaticText* m_MsgPartLocked;
|
||||
wxCheckBox* m_ConvertButt;
|
||||
wxTextCtrl* m_RefInLib;
|
||||
wxPanel* m_PanelField;
|
||||
wxCheckBox* m_ShowFieldTextCtrl;
|
||||
wxCheckBox* m_VorientFieldText;
|
||||
wxBoxSizer* m_FieldDatasBoxSizer;
|
||||
wxBoxSizer* m_FieldSelectionBoxSizer;
|
||||
wxButton* m_btClose;
|
||||
////@end WinEDA_ComponentPropertiesFrame member variables
|
||||
|
||||
WinEDA_SchematicFrame* m_Parent;
|
||||
SCH_COMPONENT* m_Cmp;
|
||||
EDA_LibComponentStruct* m_LibEntry;
|
||||
int m_CurrentFieldId;
|
||||
|
||||
wxRadioBox * m_FieldSelection;
|
||||
WinEDA_GraphicTextCtrl * m_FieldTextCtrl;
|
||||
WinEDA_EnterText * m_FieldNameCtrl;
|
||||
WinEDA_PositionCtrl * m_FieldPositionCtrl;
|
||||
wxString m_FieldText[NUMBER_OF_FIELDS];
|
||||
wxString m_FieldName[NUMBER_OF_FIELDS];
|
||||
wxPoint m_FieldPosition[NUMBER_OF_FIELDS];
|
||||
int m_FieldSize[NUMBER_OF_FIELDS];
|
||||
int m_FieldFlags[NUMBER_OF_FIELDS];
|
||||
int m_FieldOrient[NUMBER_OF_FIELDS];
|
||||
/// a copy of the edited component's SCH_CMP_FIELDs
|
||||
SCH_CMP_FIELDS m_FieldBuf;
|
||||
|
||||
void setSelectedFieldNdx( int aFieldNdx );
|
||||
|
||||
int getSelectedFieldNdx();
|
||||
|
||||
|
||||
/**
|
||||
* Function CopyDataToPanel
|
||||
* sets the values displayed on the panel according to
|
||||
* the current field number
|
||||
*/
|
||||
void copyDataToPanel();
|
||||
|
||||
|
||||
void fillTableModel();
|
||||
|
||||
protected:
|
||||
|
||||
// Handlers for DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP events.
|
||||
// void OnGridCellLeftClick( wxGridEvent& event );
|
||||
|
||||
public:
|
||||
/** Constructor */
|
||||
DIALOG_EDIT_COMPONENT_IN_SCHEMATIC( wxWindow* parent );
|
||||
|
||||
/**
|
||||
* Function InitBuffers
|
||||
* sets up to edit the given component.
|
||||
* @param aComponent The component to edit.
|
||||
*/
|
||||
void InitBuffers( SCH_COMPONENT* aComponent );
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
// _DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_H_
|
||||
#endif // __dialog_edit_component_in_schematic__
|
||||
|
|
|
@ -191,7 +191,7 @@ void WinEDA_PartPropertiesFrame::InitBuffers()
|
|||
while( Field )
|
||||
{
|
||||
CopyFieldDataToBuffer( Field );
|
||||
Field = (LibDrawField*) Field->Pnext;
|
||||
Field = Field->Next();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -753,7 +753,7 @@ void WinEDA_PartPropertiesFrame::PartPropertiesAccept( wxCommandEvent& event )
|
|||
LibDrawField* NextField, * previousField = NULL;
|
||||
while( Field )
|
||||
{
|
||||
NextField = (LibDrawField*) Field->Pnext;
|
||||
NextField = Field->Next();
|
||||
if( Field->m_FieldId == ii )
|
||||
{
|
||||
CopyBufferToFieldData( Field );
|
||||
|
@ -765,7 +765,7 @@ void WinEDA_PartPropertiesFrame::PartPropertiesAccept( wxCommandEvent& event )
|
|||
{
|
||||
SAFE_DELETE( Field );
|
||||
if( previousField )
|
||||
previousField->Pnext = NextField;
|
||||
previousField->SetNext( NextField );
|
||||
else
|
||||
CurrentLibEntry->Fields = NextField;
|
||||
}
|
||||
|
@ -789,7 +789,7 @@ void WinEDA_PartPropertiesFrame::PartPropertiesAccept( wxCommandEvent& event )
|
|||
Field = new LibDrawField( ii );
|
||||
|
||||
CopyBufferToFieldData( Field );
|
||||
Field->Pnext = CurrentLibEntry->Fields;
|
||||
Field->SetNext( CurrentLibEntry->Fields );
|
||||
CurrentLibEntry->Fields = Field;
|
||||
}
|
||||
}
|
||||
|
@ -805,7 +805,7 @@ void WinEDA_PartPropertiesFrame::PartPropertiesAccept( wxCommandEvent& event )
|
|||
if( Field->m_FieldId >= FIELD1 )
|
||||
if( Field->m_Text.IsEmpty() )
|
||||
Field->m_Text = wxT( "~" );
|
||||
Field = (LibDrawField*) Field->Pnext;
|
||||
Field = Field->Next();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1043,7 +1043,7 @@ bool WinEDA_PartPropertiesFrame::ChangeNbUnitsPerPackage( int MaxUnit )
|
|||
for( ii = OldNumUnits + 1; ii <= MaxUnit; ii++ )
|
||||
{
|
||||
NextDrawItem = CopyDrawEntryStruct( this, DrawItem );
|
||||
NextDrawItem->Pnext = CurrentLibEntry->m_Drawings;
|
||||
NextDrawItem->SetNext( CurrentLibEntry->m_Drawings );
|
||||
CurrentLibEntry->m_Drawings = NextDrawItem;
|
||||
NextDrawItem->m_Unit = ii;
|
||||
}
|
||||
|
@ -1090,7 +1090,7 @@ bool WinEDA_PartPropertiesFrame::SetUnsetConvert()
|
|||
}
|
||||
}
|
||||
NextDrawItem = CopyDrawEntryStruct( this, DrawItem );
|
||||
NextDrawItem->Pnext = CurrentLibEntry->m_Drawings;
|
||||
NextDrawItem->SetNext( CurrentLibEntry->m_Drawings );
|
||||
CurrentLibEntry->m_Drawings = NextDrawItem;
|
||||
NextDrawItem->m_Convert = 2;
|
||||
}
|
||||
|
|
|
@ -15,432 +15,13 @@
|
|||
#include "protos.h"
|
||||
|
||||
|
||||
/* Fonctions exportees */
|
||||
|
||||
/* Fonctions locales */
|
||||
static void AbortMoveCmpField( WinEDA_DrawPanel* Panel, wxDC* DC );
|
||||
static void MoveCmpField( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
||||
|
||||
/* variables locales */
|
||||
static SCH_CMP_FIELD* CurrentField;
|
||||
static int Multiflag;
|
||||
static int TextFieldSize = DEFAULT_SIZE_TEXT;
|
||||
static wxPoint OldPos;
|
||||
|
||||
|
||||
/************************************/
|
||||
/* class WinEDA_PartPropertiesFrame */
|
||||
/************************************/
|
||||
#define ID_ON_SELECT_FIELD 3000
|
||||
|
||||
#include "dialog_edit_component_in_schematic.cpp"
|
||||
|
||||
/**********************************************************************/
|
||||
void InstallCmpeditFrame( WinEDA_SchematicFrame* parent, wxPoint& pos,
|
||||
SCH_COMPONENT* cmp )
|
||||
/*********************************************************************/
|
||||
|
||||
/* Create the dialog box for the current component edition
|
||||
*/
|
||||
{
|
||||
parent->DrawPanel->m_IgnoreMouseEvents = TRUE;
|
||||
if( cmp->Type() != TYPE_SCH_COMPONENT )
|
||||
{
|
||||
DisplayError( parent,
|
||||
wxT( "InstallCmpeditFrame() error: This struct is not a component" ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
WinEDA_ComponentPropertiesFrame* frame =
|
||||
new WinEDA_ComponentPropertiesFrame( parent, cmp );
|
||||
frame->ShowModal();
|
||||
frame->Destroy();
|
||||
}
|
||||
|
||||
parent->DrawPanel->MouseToCursorSchema();
|
||||
parent->DrawPanel->m_IgnoreMouseEvents = FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************/
|
||||
void WinEDA_ComponentPropertiesFrame::InitBuffers()
|
||||
/*****************************************************/
|
||||
|
||||
/* Init the buffers to a default value,
|
||||
* or to values from Component!= NULL
|
||||
*/
|
||||
{
|
||||
int ii;
|
||||
|
||||
m_CurrentFieldId = REFERENCE;
|
||||
|
||||
/* Init default values */
|
||||
for( ii = 0; ii < NUMBER_OF_FIELDS; ii++ )
|
||||
{
|
||||
m_FieldSize[ii] = DEFAULT_SIZE_TEXT;
|
||||
m_FieldFlags[ii] = 1;
|
||||
m_FieldOrient[ii] = 0;
|
||||
}
|
||||
|
||||
if( m_Cmp == NULL )
|
||||
return;
|
||||
|
||||
for( ii = REFERENCE; ii < NUMBER_OF_FIELDS; ii++ )
|
||||
{
|
||||
m_FieldName[ii] = m_Cmp->ReturnFieldName( ii );
|
||||
|
||||
if(ii == REFERENCE)
|
||||
m_FieldText[ii] = m_Cmp->GetRef( m_Parent->GetSheet() );
|
||||
else
|
||||
m_FieldText[ii] = m_Cmp->GetField( ii )->m_Text;
|
||||
|
||||
m_FieldSize[ii] = m_Cmp->GetField( ii )->m_Size.x;
|
||||
m_FieldFlags[ii] = (m_Cmp->GetField( ii )->m_Attributs & TEXT_NO_VISIBLE) ? 0 : 1;
|
||||
m_FieldOrient[ii] = m_Cmp->GetField( ii )->m_Orient == TEXT_ORIENT_VERT ? 1 : 0;
|
||||
|
||||
if( m_Cmp->GetField( ii )->m_Text.IsEmpty() )
|
||||
continue;
|
||||
|
||||
// These values have meaning only if this field is not void:
|
||||
m_FieldPosition[ii] = m_Cmp->GetField( ii )->m_Pos;
|
||||
m_FieldPosition[ii].x -= m_Cmp->m_Pos.x;
|
||||
m_FieldPosition[ii].y -= m_Cmp->m_Pos.y;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************/
|
||||
void WinEDA_ComponentPropertiesFrame::CopyDataToPanelField()
|
||||
/****************************************************************/
|
||||
|
||||
/* Set the values displayed on the panel field according to
|
||||
* the current field number
|
||||
*/
|
||||
{
|
||||
int fieldId = m_CurrentFieldId;
|
||||
|
||||
for( int ii = FIELD1; ii < NUMBER_OF_FIELDS; ii++ ){
|
||||
m_FieldSelection->SetString( ii, m_FieldName[ii] );
|
||||
}
|
||||
|
||||
if( fieldId == VALUE && m_LibEntry && m_LibEntry->m_Options == ENTRY_POWER )
|
||||
m_FieldTextCtrl->Enable( FALSE );
|
||||
|
||||
if( m_FieldFlags[fieldId] )
|
||||
m_ShowFieldTextCtrl->SetValue( TRUE );
|
||||
else
|
||||
m_ShowFieldTextCtrl->SetValue( FALSE );
|
||||
|
||||
// If the field value is empty and the position is zero, we set the
|
||||
// initial position as a small offset from the ref field, and orient
|
||||
// it the same as the ref field. That is likely to put it at least
|
||||
// close to the desired position.
|
||||
if( ( m_FieldPosition[fieldId] == wxPoint( 0, 0 ) )
|
||||
&& m_FieldText[fieldId].IsEmpty() )
|
||||
{
|
||||
m_VorientFieldText->SetValue( m_FieldOrient[REFERENCE] != 0 );
|
||||
m_FieldPositionCtrl->SetValue( m_FieldPosition[REFERENCE].x + 100,
|
||||
m_FieldPosition[REFERENCE].y + 100 );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_FieldPositionCtrl->SetValue( m_FieldPosition[fieldId].x, m_FieldPosition[fieldId].y );
|
||||
m_VorientFieldText->SetValue( m_FieldOrient[fieldId] != 0 );
|
||||
}
|
||||
|
||||
m_FieldNameCtrl->SetValue( m_FieldName[fieldId] );
|
||||
if( fieldId < FIELD1 )
|
||||
m_FieldNameCtrl->Enable( FALSE );
|
||||
else
|
||||
m_FieldNameCtrl->Enable( TRUE );
|
||||
m_FieldTextCtrl->SetValue( m_FieldText[fieldId] );
|
||||
m_FieldTextCtrl->SetValue( m_FieldSize[fieldId] );
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************/
|
||||
void WinEDA_ComponentPropertiesFrame::CopyPanelFieldToData()
|
||||
/****************************************************************/
|
||||
|
||||
/* Copy the values displayed on the panel field to the buffers according to
|
||||
* the current field number
|
||||
*/
|
||||
{
|
||||
int id = m_CurrentFieldId;
|
||||
|
||||
m_FieldFlags[id] = m_ShowFieldTextCtrl->GetValue();
|
||||
m_FieldOrient[id] = m_VorientFieldText->GetValue();
|
||||
m_FieldText[id] = m_FieldTextCtrl->GetText();
|
||||
m_FieldName[id] = m_FieldNameCtrl->GetValue();
|
||||
m_FieldPosition[id] = m_FieldPositionCtrl->GetValue();
|
||||
m_FieldSize[id] = m_FieldTextCtrl->GetTextSize();
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************/
|
||||
void WinEDA_ComponentPropertiesFrame::BuildPanelFields()
|
||||
/*************************************************************/
|
||||
{
|
||||
int ii, FieldId;
|
||||
wxPoint field_pos;
|
||||
|
||||
m_CurrentFieldId = FieldId = REFERENCE;
|
||||
|
||||
// Create the box field selection:
|
||||
wxString fieldnamelist[NUMBER_OF_FIELDS];
|
||||
for( ii = 0; ii < NUMBER_OF_FIELDS; ii++ )
|
||||
{
|
||||
if( m_FieldName[ii].IsEmpty() )
|
||||
fieldnamelist[ii] = ReturnDefaultFieldName( ii );
|
||||
else
|
||||
fieldnamelist[ii] = m_FieldName[ii];
|
||||
}
|
||||
|
||||
m_FieldSelection = new wxRadioBox( m_PanelField, ID_ON_SELECT_FIELD,
|
||||
_( "Field to edit" ), wxDefaultPosition, wxDefaultSize,
|
||||
NUMBER_OF_FIELDS, fieldnamelist, 2, wxRA_SPECIFY_COLS );
|
||||
m_FieldSelectionBoxSizer->Add( m_FieldSelection, 0, wxGROW | wxALL, 5 );
|
||||
|
||||
// Create the box for field name display
|
||||
m_FieldNameCtrl = new WinEDA_EnterText( m_PanelField,
|
||||
_( "Field Name:" ), m_FieldName[FieldId],
|
||||
m_FieldDatasBoxSizer, wxSize( 200, -1 ) );
|
||||
if( FieldId < FIELD1 )
|
||||
m_FieldNameCtrl->Enable( FALSE );
|
||||
else
|
||||
m_FieldNameCtrl->Enable( TRUE );
|
||||
|
||||
// Create the box for text editing (text, size)
|
||||
m_FieldTextCtrl = new WinEDA_GraphicTextCtrl( m_PanelField,
|
||||
_(
|
||||
"Field Text:" ),
|
||||
m_FieldText[FieldId],
|
||||
m_FieldSize[FieldId],
|
||||
g_UnitMetric,
|
||||
m_FieldDatasBoxSizer, 200,
|
||||
m_Parent->m_InternalUnits );
|
||||
|
||||
// Create the box for text editing (position)
|
||||
m_FieldPositionCtrl = new WinEDA_PositionCtrl( m_PanelField, _( "Pos" ),
|
||||
m_FieldPosition[FieldId],
|
||||
g_UnitMetric,
|
||||
m_FieldDatasBoxSizer,
|
||||
m_Parent->m_InternalUnits );
|
||||
|
||||
CopyDataToPanelField();
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************/
|
||||
void WinEDA_ComponentPropertiesFrame::BuildPanelBasic()
|
||||
/**********************************************************/
|
||||
|
||||
/* create the basic panel for component properties editing
|
||||
*/
|
||||
{
|
||||
int Nb_Max_Unit = m_SelectUnit->GetCount();
|
||||
int ii;
|
||||
|
||||
int nb_units = m_LibEntry ? MAX( m_LibEntry->m_UnitCount, 1 ) : 0;
|
||||
|
||||
// Disable non existant units selection buttons
|
||||
for( ii = nb_units; ii < Nb_Max_Unit; ii++ )
|
||||
{
|
||||
m_SelectUnit->Enable( ii, FALSE );
|
||||
}
|
||||
|
||||
if( m_Cmp->m_Multi <= Nb_Max_Unit )
|
||||
m_SelectUnit->SetSelection( m_Cmp->m_Multi - 1 );
|
||||
|
||||
ii = m_Cmp->GetRotationMiroir() & ~(CMP_MIROIR_X | CMP_MIROIR_Y);
|
||||
|
||||
if( ii == CMP_ORIENT_90 )
|
||||
m_OrientUnit->SetSelection( 1 );
|
||||
else if( ii == CMP_ORIENT_180 )
|
||||
m_OrientUnit->SetSelection( 2 );
|
||||
else if( ii == CMP_ORIENT_270 )
|
||||
m_OrientUnit->SetSelection( 3 );
|
||||
|
||||
ii = m_Cmp->GetRotationMiroir() & (CMP_MIROIR_X | CMP_MIROIR_Y);
|
||||
if( ii == CMP_MIROIR_X )
|
||||
m_MirrorUnit->SetSelection( 1 );
|
||||
else if( ii == CMP_MIROIR_Y )
|
||||
m_MirrorUnit->SetSelection( 2 );
|
||||
|
||||
// Positionnement de la selection normal/convert
|
||||
if( m_Cmp->m_Convert > 1 )
|
||||
m_ConvertButt->SetValue( TRUE );
|
||||
|
||||
if( (m_LibEntry == NULL) || LookForConvertPart( m_LibEntry ) <= 1 )
|
||||
{
|
||||
m_ConvertButt->Enable( FALSE );
|
||||
}
|
||||
|
||||
// Show the "Parts Locked" option:
|
||||
if( !m_LibEntry || !m_LibEntry->m_UnitSelectionLocked )
|
||||
{
|
||||
m_MsgPartLocked->Show( false );
|
||||
}
|
||||
|
||||
// Positionnement de la reference en librairie
|
||||
m_RefInLib->SetValue( m_Cmp->m_ChipName );
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
void WinEDA_ComponentPropertiesFrame::SelectNewField( wxCommandEvent& event )
|
||||
/*************************************************************************/
|
||||
|
||||
/* called when changing the current field selected
|
||||
* Save the current field settings in buffer and display the new one
|
||||
*/
|
||||
{
|
||||
CopyPanelFieldToData();
|
||||
m_CurrentFieldId = m_FieldSelection->GetSelection();
|
||||
CopyDataToPanelField();
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************************/
|
||||
void WinEDA_ComponentPropertiesFrame::ComponentPropertiesAccept( wxCommandEvent& event )
|
||||
/***********************************************************************************/
|
||||
|
||||
/* Update the new parameters for the current edited component
|
||||
*/
|
||||
{
|
||||
wxPoint cmp_pos = m_Cmp->m_Pos;
|
||||
wxClientDC dc( m_Parent->DrawPanel );
|
||||
wxString newname;
|
||||
|
||||
/* save old cmp in undo list if not already in edit, or moving ... */
|
||||
if( m_Cmp->m_Flags == 0 )
|
||||
m_Parent->SaveCopyInUndoList( m_Cmp, IS_CHANGED );
|
||||
|
||||
CopyPanelFieldToData();
|
||||
|
||||
m_Parent->DrawPanel->PrepareGraphicContext( &dc );
|
||||
|
||||
|
||||
RedrawOneStruct( m_Parent->DrawPanel, &dc, m_Cmp, g_XorMode );
|
||||
|
||||
newname = m_RefInLib->GetValue();
|
||||
newname.MakeUpper();
|
||||
newname.Replace( wxT( " " ), wxT( "_" ) );
|
||||
|
||||
if( newname.IsEmpty() )
|
||||
DisplayError( this, _( "No Component Name!" ) );
|
||||
else if( newname.CmpNoCase( m_Cmp->m_ChipName ) )
|
||||
{
|
||||
if( FindLibPart( newname.GetData(), wxEmptyString, FIND_ALIAS ) == NULL )
|
||||
{
|
||||
wxString message;
|
||||
message.Printf( _( "Component [%s] not found!" ), newname.GetData() );
|
||||
DisplayError( this, message );
|
||||
}
|
||||
else // Changement de composant!
|
||||
{
|
||||
m_Cmp->m_ChipName = newname;
|
||||
}
|
||||
}
|
||||
|
||||
// Mise a jour de la representation:
|
||||
if( m_ConvertButt->IsEnabled() )
|
||||
(m_ConvertButt->GetValue() == TRUE) ?
|
||||
m_Cmp->m_Convert = 2 : m_Cmp->m_Convert = 1;
|
||||
|
||||
//Set the part selection in multiple part per pakcage
|
||||
if( m_Cmp->m_Multi )
|
||||
{
|
||||
int unit_selection = m_SelectUnit->GetSelection() + 1;
|
||||
m_Cmp->SetUnitSelection( m_Parent->GetSheet(), unit_selection );
|
||||
m_Cmp->m_Multi = unit_selection;
|
||||
}
|
||||
|
||||
//Mise a jour de l'orientation:
|
||||
switch( m_OrientUnit->GetSelection() )
|
||||
{
|
||||
case 0:
|
||||
m_Cmp->SetRotationMiroir( CMP_ORIENT_0 );
|
||||
break;
|
||||
|
||||
case 1:
|
||||
m_Cmp->SetRotationMiroir( CMP_ORIENT_90 );
|
||||
break;
|
||||
|
||||
case 2:
|
||||
m_Cmp->SetRotationMiroir( CMP_ORIENT_180 );
|
||||
break;
|
||||
|
||||
case 3:
|
||||
m_Cmp->SetRotationMiroir( CMP_ORIENT_270 );
|
||||
break;
|
||||
}
|
||||
|
||||
switch( m_MirrorUnit->GetSelection() )
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
case 1:
|
||||
m_Cmp->SetRotationMiroir( CMP_MIROIR_X );
|
||||
break;
|
||||
|
||||
case 2:
|
||||
m_Cmp->SetRotationMiroir( CMP_MIROIR_Y );
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
// Mise a jour des textes (update the texts)
|
||||
for( int ii = REFERENCE; ii < NUMBER_OF_FIELDS; ii++ )
|
||||
{
|
||||
if( ii == REFERENCE ) // la reference ne peut etre vide
|
||||
{
|
||||
if( !m_FieldText[ii].IsEmpty() )
|
||||
m_Cmp->SetRef(m_Parent->GetSheet(), m_FieldText[ii]);
|
||||
}
|
||||
else if( ii == VALUE ) // la valeur ne peut etre vide et ne peut etre change sur un POWER
|
||||
{
|
||||
EDA_LibComponentStruct* Entry = FindLibPart( m_Cmp->m_ChipName.GetData(
|
||||
), wxEmptyString, FIND_ROOT );
|
||||
if( Entry && (Entry->m_Options == ENTRY_POWER) )
|
||||
m_Cmp->GetField( ii )->m_Text = m_Cmp->m_ChipName;
|
||||
else if( !m_FieldText[ii].IsEmpty() )
|
||||
{
|
||||
m_Cmp->GetField( ii )->m_Text = m_FieldText[ii];
|
||||
}
|
||||
}
|
||||
else
|
||||
m_Cmp->GetField( ii )->m_Text = m_FieldText[ii];
|
||||
|
||||
if( ii >= FIELD1 && m_FieldName[ii] != ReturnDefaultFieldName( ii ) )
|
||||
m_Cmp->GetField( ii )->m_Name = m_FieldName[ii];
|
||||
else
|
||||
m_Cmp->GetField( ii )->m_Name.Empty();
|
||||
|
||||
m_Cmp->GetField( ii )->m_Size.x =
|
||||
m_Cmp->GetField( ii )->m_Size.y = m_FieldSize[ii];
|
||||
if( m_FieldFlags[ii] )
|
||||
m_Cmp->GetField( ii )->m_Attributs &= ~TEXT_NO_VISIBLE;
|
||||
else
|
||||
m_Cmp->GetField( ii )->m_Attributs |= TEXT_NO_VISIBLE;
|
||||
m_Cmp->GetField( ii )->m_Orient = m_FieldOrient[ii] ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ;
|
||||
m_Cmp->GetField( ii )->m_Pos = m_FieldPosition[ii];
|
||||
m_Cmp->GetField( ii )->m_Pos.x += cmp_pos.x;
|
||||
m_Cmp->GetField( ii )->m_Pos.y += cmp_pos.y;
|
||||
}
|
||||
|
||||
m_Parent->GetScreen()->SetModify();
|
||||
|
||||
RedrawOneStruct( m_Parent->DrawPanel, &dc, m_Cmp, GR_DEFAULT_DRAWMODE );
|
||||
m_Parent->TestDanglingEnds( m_Parent->GetScreen()->EEDrawList, &dc );
|
||||
|
||||
EndModal( 0 );
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************************/
|
||||
void WinEDA_SchematicFrame::StartMoveCmpField( SCH_CMP_FIELD* Field, wxDC* DC )
|
||||
void WinEDA_SchematicFrame::StartMoveCmpField( SCH_CMP_FIELD* aField, wxDC* DC )
|
||||
/************************************************************************************/
|
||||
|
||||
/* Prepare le deplacement du texte en cours d'edition
|
||||
|
@ -448,12 +29,11 @@ void WinEDA_SchematicFrame::StartMoveCmpField( SCH_CMP_FIELD* Field, wxDC* DC )
|
|||
{
|
||||
EDA_LibComponentStruct* Entry;
|
||||
|
||||
|
||||
CurrentField = Field;
|
||||
if( Field == NULL )
|
||||
SetCurrentField( aField );
|
||||
if( aField == NULL )
|
||||
return;
|
||||
|
||||
if( Field->m_Text == wxEmptyString )
|
||||
if( aField->m_Text == wxEmptyString )
|
||||
{
|
||||
DisplayError( this, _( "No Field to move" ), 10 );
|
||||
return;
|
||||
|
@ -461,48 +41,48 @@ void WinEDA_SchematicFrame::StartMoveCmpField( SCH_CMP_FIELD* Field, wxDC* DC )
|
|||
|
||||
wxPoint pos, newpos;
|
||||
int x1, y1;
|
||||
SCH_COMPONENT* Cmp = (SCH_COMPONENT*) CurrentField->m_Parent;
|
||||
SCH_COMPONENT* comp = (SCH_COMPONENT*) aField->GetParent();
|
||||
|
||||
SAFE_DELETE( g_ItemToUndoCopy );
|
||||
g_ItemToUndoCopy = Cmp->GenCopy();
|
||||
g_ItemToUndoCopy = comp->GenCopy();
|
||||
|
||||
pos = Cmp->m_Pos;
|
||||
pos = comp->m_Pos;
|
||||
|
||||
/* Les positions sont calculees par la matrice TRANSPOSEE de la matrice
|
||||
* de rotation-miroir */
|
||||
x1 = Field->m_Pos.x - pos.x;
|
||||
y1 = Field->m_Pos.y - pos.y;
|
||||
x1 = aField->m_Pos.x - pos.x;
|
||||
y1 = aField->m_Pos.y - pos.y;
|
||||
|
||||
// Empirically this is necessary. The Y coordinate appears to be inverted
|
||||
// under some circumstances, but that inversion is not preserved by all
|
||||
// combinations of mirroring and rotation. The following clause is true
|
||||
// when the number of rotations and the number of mirrorings are both odd.
|
||||
if( Cmp->m_Transform[1][0] * Cmp->m_Transform[0][1] < 0 )
|
||||
if( comp->m_Transform[1][0] * comp->m_Transform[0][1] < 0 )
|
||||
{
|
||||
y1 = -y1;
|
||||
}
|
||||
newpos.x = pos.x + Cmp->m_Transform[0][0] * x1 + Cmp->m_Transform[1][0] * y1;
|
||||
newpos.y = pos.y + Cmp->m_Transform[0][1] * x1 + Cmp->m_Transform[1][1] * y1;
|
||||
newpos.x = pos.x + comp->m_Transform[0][0] * x1 + comp->m_Transform[1][0] * y1;
|
||||
newpos.y = pos.y + comp->m_Transform[0][1] * x1 + comp->m_Transform[1][1] * y1;
|
||||
|
||||
DrawPanel->CursorOff( DC );
|
||||
GetScreen()->m_Curseur = newpos;
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
|
||||
OldPos = Field->m_Pos;
|
||||
Multiflag = 0;
|
||||
if( Field->m_FieldId == REFERENCE )
|
||||
m_OldPos = aField->m_Pos;
|
||||
m_Multiflag = 0;
|
||||
if( aField->m_FieldId == REFERENCE )
|
||||
{
|
||||
Entry = FindLibPart( Cmp->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
|
||||
Entry = FindLibPart( comp->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
|
||||
if( Entry != NULL )
|
||||
{
|
||||
if( Entry->m_UnitCount > 1 )
|
||||
Multiflag = 1;
|
||||
m_Multiflag = 1;
|
||||
}
|
||||
}
|
||||
|
||||
DrawPanel->ForceCloseManageCurseur = AbortMoveCmpField;
|
||||
DrawPanel->ManageCurseur = MoveCmpField;
|
||||
Field->m_Flags = IS_MOVED;
|
||||
aField->m_Flags = IS_MOVED;
|
||||
|
||||
DrawPanel->CursorOn( DC );
|
||||
}
|
||||
|
@ -513,7 +93,7 @@ void WinEDA_SchematicFrame::EditCmpFieldText( SCH_CMP_FIELD* Field, wxDC* DC )
|
|||
/**********************************************************************************/
|
||||
/* Edit the field Field (text, size) */
|
||||
{
|
||||
int FieldNumber, flag;
|
||||
int fieldNdx, flag;
|
||||
EDA_LibComponentStruct* Entry;
|
||||
|
||||
if( Field == NULL )
|
||||
|
@ -522,10 +102,10 @@ void WinEDA_SchematicFrame::EditCmpFieldText( SCH_CMP_FIELD* Field, wxDC* DC )
|
|||
return;
|
||||
}
|
||||
|
||||
SCH_COMPONENT* Cmp = (SCH_COMPONENT*) Field->m_Parent;
|
||||
SCH_COMPONENT* Cmp = (SCH_COMPONENT*) Field->GetParent();
|
||||
|
||||
FieldNumber = Field->m_FieldId;
|
||||
if( FieldNumber == VALUE )
|
||||
fieldNdx = Field->m_FieldId;
|
||||
if( fieldNdx == VALUE )
|
||||
{
|
||||
Entry = FindLibPart( Cmp->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
|
||||
if( Entry && (Entry->m_Options == ENTRY_POWER) )
|
||||
|
@ -539,7 +119,7 @@ void WinEDA_SchematicFrame::EditCmpFieldText( SCH_CMP_FIELD* Field, wxDC* DC )
|
|||
}
|
||||
|
||||
flag = 0;
|
||||
if( FieldNumber == REFERENCE )
|
||||
if( fieldNdx == REFERENCE )
|
||||
{
|
||||
Entry = FindLibPart( Cmp->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
|
||||
if( Entry != NULL )
|
||||
|
@ -568,20 +148,20 @@ void WinEDA_SchematicFrame::EditCmpFieldText( SCH_CMP_FIELD* Field, wxDC* DC )
|
|||
if( Field->m_Text.IsEmpty() )
|
||||
{
|
||||
Field->m_Pos = Cmp->m_Pos;
|
||||
Field->m_Size.x = Field->m_Size.y = TextFieldSize;
|
||||
Field->m_Size.x = Field->m_Size.y = m_TextFieldSize;
|
||||
}
|
||||
Field->m_Text = newtext;
|
||||
if( FieldNumber == REFERENCE ){
|
||||
if( fieldNdx == REFERENCE ){
|
||||
Cmp->SetRef(GetSheet(), newtext);
|
||||
}
|
||||
}
|
||||
else /* Nouveau texte NULL */
|
||||
{
|
||||
if( FieldNumber == REFERENCE )
|
||||
if( fieldNdx == REFERENCE )
|
||||
{
|
||||
DisplayError( this, _( "Reference needed !, No change" ) );
|
||||
}
|
||||
else if( FieldNumber == VALUE )
|
||||
else if( fieldNdx == VALUE )
|
||||
{
|
||||
DisplayError( this, _( "Value needed !, No change" ) );
|
||||
}
|
||||
|
@ -607,31 +187,36 @@ static void MoveCmpField( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
|||
{
|
||||
wxPoint pos;
|
||||
int x1, y1;
|
||||
int FieldNumber;
|
||||
int fieldNdx;
|
||||
|
||||
if( CurrentField == NULL )
|
||||
WinEDA_SchematicFrame* frame = (WinEDA_SchematicFrame*) panel->GetParent();
|
||||
SCH_CMP_FIELD* currentField = frame->GetCurrentField();
|
||||
|
||||
if( currentField == NULL )
|
||||
return;
|
||||
|
||||
SCH_COMPONENT* Cmp = (SCH_COMPONENT*) CurrentField->m_Parent;
|
||||
FieldNumber = CurrentField->m_FieldId;
|
||||
SCH_COMPONENT* component = (SCH_COMPONENT*) currentField->GetParent();
|
||||
fieldNdx = currentField->m_FieldId;
|
||||
|
||||
/* Effacement: */
|
||||
CurrentField->m_AddExtraText = Multiflag;
|
||||
// Effacement:
|
||||
currentField->m_AddExtraText = frame->m_Multiflag;
|
||||
if( erase )
|
||||
{
|
||||
CurrentField->Draw( panel, DC, wxPoint(0,0), g_XorMode );
|
||||
currentField->Draw( panel, DC, wxPoint(0,0), g_XorMode );
|
||||
}
|
||||
|
||||
pos = ( (SCH_COMPONENT*) CurrentField->m_Parent )->m_Pos;
|
||||
pos = ( (SCH_COMPONENT*) currentField->GetParent() )->m_Pos;
|
||||
|
||||
/* Les positions sont caculees par la matrice TRANSPOSEE de la matrice
|
||||
* de rotation-miroir */
|
||||
* de rotation-miroir
|
||||
*/
|
||||
x1 = panel->GetScreen()->m_Curseur.x - pos.x;
|
||||
y1 = panel->GetScreen()->m_Curseur.y - pos.y;
|
||||
CurrentField->m_Pos.x = pos.x + Cmp->m_Transform[0][0] * x1 + Cmp->m_Transform[1][0] * y1;
|
||||
CurrentField->m_Pos.y = pos.y + Cmp->m_Transform[0][1] * x1 + Cmp->m_Transform[1][1] * y1;
|
||||
|
||||
CurrentField->Draw( panel, DC, wxPoint(0,0), g_XorMode );
|
||||
currentField->m_Pos.x = pos.x + component->m_Transform[0][0] * x1 + component->m_Transform[1][0] * y1;
|
||||
currentField->m_Pos.y = pos.y + component->m_Transform[0][1] * x1 + component->m_Transform[1][1] * y1;
|
||||
|
||||
currentField->Draw( panel, DC, wxPoint(0,0), g_XorMode );
|
||||
}
|
||||
|
||||
|
||||
|
@ -641,15 +226,21 @@ static void AbortMoveCmpField( WinEDA_DrawPanel* Panel, wxDC* DC )
|
|||
{
|
||||
Panel->ForceCloseManageCurseur = NULL;
|
||||
Panel->ManageCurseur = NULL;
|
||||
if( CurrentField )
|
||||
|
||||
WinEDA_SchematicFrame* frame = (WinEDA_SchematicFrame*) Panel->GetParent();
|
||||
SCH_CMP_FIELD* currentField = frame->GetCurrentField();
|
||||
|
||||
if( currentField )
|
||||
{
|
||||
CurrentField->m_AddExtraText = Multiflag;
|
||||
CurrentField->Draw( Panel, DC, wxPoint(0,0), g_XorMode );
|
||||
CurrentField->m_Flags = 0;
|
||||
CurrentField->m_Pos = OldPos;
|
||||
CurrentField->Draw( Panel, DC, wxPoint(0,0), g_XorMode );
|
||||
currentField->m_AddExtraText = frame->m_Multiflag;
|
||||
currentField->Draw( Panel, DC, wxPoint(0,0), g_XorMode );
|
||||
currentField->m_Flags = 0;
|
||||
currentField->m_Pos = frame->m_OldPos;
|
||||
currentField->Draw( Panel, DC, wxPoint(0,0), g_XorMode );
|
||||
}
|
||||
CurrentField = NULL;
|
||||
|
||||
frame->SetCurrentField( NULL );
|
||||
|
||||
SAFE_DELETE( g_ItemToUndoCopy );
|
||||
}
|
||||
|
||||
|
@ -658,7 +249,7 @@ static void AbortMoveCmpField( WinEDA_DrawPanel* Panel, wxDC* DC )
|
|||
void WinEDA_SchematicFrame::RotateCmpField( SCH_CMP_FIELD* Field, wxDC* DC )
|
||||
/*********************************************************************************/
|
||||
{
|
||||
int FieldNumber, flag;
|
||||
int fieldNdx, flag;
|
||||
EDA_LibComponentStruct* Entry;
|
||||
|
||||
if( Field == NULL )
|
||||
|
@ -666,13 +257,13 @@ void WinEDA_SchematicFrame::RotateCmpField( SCH_CMP_FIELD* Field, wxDC* DC )
|
|||
if( Field->m_Text == wxEmptyString )
|
||||
return;
|
||||
|
||||
SCH_COMPONENT* Cmp = (SCH_COMPONENT*) Field->m_Parent;
|
||||
SCH_COMPONENT* Cmp = (SCH_COMPONENT*) Field->GetParent();
|
||||
|
||||
FieldNumber = Field->m_FieldId;
|
||||
fieldNdx = Field->m_FieldId;
|
||||
flag = 0;
|
||||
if( FieldNumber == REFERENCE )
|
||||
if( fieldNdx == REFERENCE )
|
||||
{
|
||||
Entry = FindLibPart( ( (SCH_COMPONENT*) Field->m_Parent )->m_ChipName.GetData(),
|
||||
Entry = FindLibPart( ( (SCH_COMPONENT*) Field->GetParent() )->m_ChipName.GetData(),
|
||||
wxEmptyString, FIND_ROOT );
|
||||
if( Entry != NULL )
|
||||
{
|
||||
|
@ -702,26 +293,27 @@ void WinEDA_SchematicFrame::RotateCmpField( SCH_CMP_FIELD* Field, wxDC* DC )
|
|||
void SCH_CMP_FIELD::Place( WinEDA_SchematicFrame* frame, wxDC* DC )
|
||||
/*********************************************************************/
|
||||
{
|
||||
int FieldNumber;
|
||||
int fieldNdx;
|
||||
EDA_LibComponentStruct* Entry;
|
||||
|
||||
frame->DrawPanel->ManageCurseur = NULL;
|
||||
frame->DrawPanel->ForceCloseManageCurseur = NULL;
|
||||
|
||||
SCH_COMPONENT* Cmp = (SCH_COMPONENT*) m_Parent;
|
||||
/* save old cmp in undo list */
|
||||
if( g_ItemToUndoCopy && ( g_ItemToUndoCopy->Type() == Cmp->Type()) )
|
||||
SCH_COMPONENT* component = (SCH_COMPONENT*) GetParent();
|
||||
|
||||
// save old cmp in undo list
|
||||
if( g_ItemToUndoCopy && ( g_ItemToUndoCopy->Type() == component->Type()) )
|
||||
{
|
||||
Cmp->SwapData( (SCH_COMPONENT*) g_ItemToUndoCopy );
|
||||
( (WinEDA_SchematicFrame*) frame )->SaveCopyInUndoList( Cmp, IS_CHANGED );
|
||||
Cmp->SwapData( (SCH_COMPONENT*) g_ItemToUndoCopy );
|
||||
component->SwapData( (SCH_COMPONENT*) g_ItemToUndoCopy );
|
||||
frame->SaveCopyInUndoList( component, IS_CHANGED );
|
||||
component->SwapData( (SCH_COMPONENT*) g_ItemToUndoCopy );
|
||||
}
|
||||
|
||||
FieldNumber = m_FieldId;
|
||||
fieldNdx = m_FieldId;
|
||||
m_AddExtraText = 0;
|
||||
if( FieldNumber == REFERENCE )
|
||||
if( fieldNdx == REFERENCE )
|
||||
{
|
||||
Entry = FindLibPart( Cmp->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
|
||||
Entry = FindLibPart( component->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
|
||||
if( Entry != NULL )
|
||||
{
|
||||
if( Entry->m_UnitCount > 1 )
|
||||
|
@ -733,7 +325,7 @@ void SCH_CMP_FIELD::Place( WinEDA_SchematicFrame* frame, wxDC* DC )
|
|||
m_Flags = 0;
|
||||
frame->GetScreen()->SetCurItem( NULL );
|
||||
frame->GetScreen()->SetModify();
|
||||
CurrentField = NULL;
|
||||
frame->SetCurrentField( NULL );
|
||||
}
|
||||
|
||||
|
||||
|
@ -813,6 +405,7 @@ void WinEDA_SchematicFrame::EditComponentValue( SCH_COMPONENT* Cmp, wxDC* DC )
|
|||
Cmp->Display_Infos( this );
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************************/
|
||||
void WinEDA_SchematicFrame::EditComponentFootprint( SCH_COMPONENT* Cmp, wxDC* DC )
|
||||
/*****************************************************************************************/
|
||||
|
@ -866,52 +459,4 @@ void WinEDA_SchematicFrame::EditComponentFootprint( SCH_COMPONENT* Cmp, wxDC* DC
|
|||
|
||||
Cmp->Display_Infos( this );
|
||||
}
|
||||
/*****************************************************************************/
|
||||
void WinEDA_ComponentPropertiesFrame::SetInitCmp( wxCommandEvent& event )
|
||||
/*****************************************************************************/
|
||||
|
||||
/* Replace le composant en position normale, dimensions et positions
|
||||
* fields comme definies en librairie
|
||||
*/
|
||||
{
|
||||
EDA_LibComponentStruct* Entry;
|
||||
|
||||
if( m_Cmp == NULL )
|
||||
return;
|
||||
|
||||
Entry = FindLibPart( m_Cmp->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
|
||||
|
||||
if( Entry == NULL )
|
||||
return;
|
||||
|
||||
wxClientDC dc( m_Parent->DrawPanel );
|
||||
m_Parent->DrawPanel->PrepareGraphicContext( &dc );
|
||||
|
||||
RedrawOneStruct( m_Parent->DrawPanel, &dc, m_Cmp, g_XorMode );
|
||||
|
||||
/* Mise aux valeurs par defaut des champs et orientation */
|
||||
m_Cmp->GetField( REFERENCE )->m_Pos.x =
|
||||
Entry->m_Prefix.m_Pos.x + m_Cmp->m_Pos.x;
|
||||
m_Cmp->GetField( REFERENCE )->m_Pos.y =
|
||||
Entry->m_Prefix.m_Pos.y + m_Cmp->m_Pos.y;
|
||||
m_Cmp->GetField( REFERENCE )->m_Orient = Entry->m_Prefix.m_Orient;
|
||||
m_Cmp->GetField( REFERENCE )->m_Size = Entry->m_Prefix.m_Size;
|
||||
m_Cmp->GetField( REFERENCE )->m_HJustify = Entry->m_Prefix.m_HJustify;
|
||||
m_Cmp->GetField( REFERENCE )->m_VJustify = Entry->m_Prefix.m_VJustify;
|
||||
|
||||
m_Cmp->GetField( VALUE )->m_Pos.x =
|
||||
Entry->m_Name.m_Pos.x + m_Cmp->m_Pos.x;
|
||||
m_Cmp->GetField( VALUE )->m_Pos.y =
|
||||
Entry->m_Name.m_Pos.y + m_Cmp->m_Pos.y;
|
||||
m_Cmp->GetField( VALUE )->m_Orient = Entry->m_Name.m_Orient;
|
||||
m_Cmp->GetField( VALUE )->m_Size = Entry->m_Name.m_Size;
|
||||
m_Cmp->GetField( VALUE )->m_HJustify = Entry->m_Name.m_HJustify;
|
||||
m_Cmp->GetField( VALUE )->m_VJustify = Entry->m_Name.m_VJustify;
|
||||
|
||||
m_Cmp->SetRotationMiroir( CMP_NORMAL );
|
||||
|
||||
m_Parent->GetScreen()->SetModify();
|
||||
|
||||
RedrawOneStruct( m_Parent->DrawPanel, &dc, m_Cmp, GR_DEFAULT_DRAWMODE );
|
||||
EndModal( 1 );
|
||||
}
|
||||
|
|
|
@ -378,7 +378,7 @@ void WinEDA_SchematicFrame::ConvertTextType( SCH_TEXT* Text,
|
|||
/* add the new text in linked list if old text is in list */
|
||||
if( (flags & IS_NEW) == 0 )
|
||||
{
|
||||
newtext->Pnext = GetScreen()->EEDrawList;
|
||||
newtext->SetNext( GetScreen()->EEDrawList );
|
||||
GetScreen()->EEDrawList = newtext;
|
||||
GetScreen()->SetModify();
|
||||
}
|
||||
|
|
|
@ -78,7 +78,7 @@ void CreateDummyCmp()
|
|||
Text->m_Text = wxT( "??" );
|
||||
|
||||
DummyCmp->m_Drawings = Square;
|
||||
Square->Pnext = Text;
|
||||
Square->SetNext( Text );
|
||||
}
|
||||
|
||||
|
||||
|
@ -153,7 +153,7 @@ void DrawLibEntry( WinEDA_DrawPanel* panel, wxDC* DC,
|
|||
if( (LibEntry->m_Name.m_Flags & IS_MOVED) == 0 )
|
||||
LibEntry->m_Name.Draw( panel, DC, aOffset, color, DrawMode, NULL, TransMat );
|
||||
|
||||
for( Field = LibEntry->Fields; Field != NULL; Field = (LibDrawField*) Field->Pnext )
|
||||
for( Field = LibEntry->Fields; Field != NULL; Field = Field->Next() )
|
||||
{
|
||||
if( Field->m_Text.IsEmpty() )
|
||||
return;
|
||||
|
|
|
@ -803,7 +803,8 @@ static LibEDA_BaseStruct* GetDrawEntry( WinEDA_DrawFrame* frame, FILE* f, char*
|
|||
Head = Tail = New;
|
||||
else
|
||||
{
|
||||
Tail->Pnext = New; Tail = New;
|
||||
Tail->SetNext( New );
|
||||
Tail = New;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -935,7 +936,7 @@ static bool GetLibEntryField( EDA_LibComponentStruct* LibEntry, char* line )
|
|||
|
||||
Field = new LibDrawField( NumOfField );
|
||||
|
||||
Field->Pnext = LibEntry->Fields;
|
||||
Field->SetNext( LibEntry->Fields );
|
||||
LibEntry->Fields = Field;
|
||||
break;
|
||||
}
|
||||
|
@ -1154,7 +1155,7 @@ void EDA_LibComponentStruct::SortDrawItems()
|
|||
Bufentry = BufentryBase;
|
||||
for( ii = 0; ii < nbitems; ii++ )
|
||||
{
|
||||
(*Bufentry)->Pnext = *(Bufentry + 1);
|
||||
(*Bufentry)->SetNext( *(Bufentry + 1) );
|
||||
Bufentry++;
|
||||
}
|
||||
|
||||
|
|
|
@ -428,7 +428,7 @@ void WinEDA_ErcFrame::DelERCMarkers( wxCommandEvent& event )
|
|||
|
||||
// Delete markers for the current screen
|
||||
DrawStruct = m_Parent->GetScreen()->EEDrawList;
|
||||
for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Pnext )
|
||||
for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Next() )
|
||||
{
|
||||
if( DrawStruct->Type() != DRAW_MARKER_STRUCT_TYPE )
|
||||
continue;
|
||||
|
@ -533,7 +533,7 @@ static void Diagnose( WinEDA_DrawPanel* panel, wxDC* DC,
|
|||
Marker->m_Type = MARQ_ERC;
|
||||
Marker->m_MarkFlags = WAR;
|
||||
screen = NetItemRef->m_SheetList.LastScreen();
|
||||
Marker->Pnext = screen->EEDrawList;
|
||||
Marker->SetNext( screen->EEDrawList );
|
||||
screen->EEDrawList = Marker;
|
||||
g_EESchemaVar.NbErrorErc++;
|
||||
g_EESchemaVar.NbWarningErc++;
|
||||
|
@ -741,7 +741,7 @@ static bool WriteDiagnosticERC( const wxString& FullFileName )
|
|||
fprintf( OutErc, "%s", CONV_TO_UTF8( msg ) );
|
||||
|
||||
DrawStruct = Sheet->LastDrawList();
|
||||
for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Pnext )
|
||||
for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Next() )
|
||||
{
|
||||
if( DrawStruct->Type() != DRAW_MARKER_STRUCT_TYPE )
|
||||
continue;
|
||||
|
|
|
@ -216,7 +216,7 @@ SCH_SCREEN* WinEDA_SchematicFrame::CreateNewScreen(
|
|||
NewScreen->m_Company = OldScreen->m_Company;
|
||||
NewScreen->m_TimeStamp = TimeStamp;
|
||||
|
||||
NewScreen->Pback = OldScreen;
|
||||
NewScreen->SetBack( OldScreen );
|
||||
|
||||
return NewScreen;
|
||||
}
|
||||
|
|
|
@ -218,7 +218,7 @@ SCH_COMPONENT* WinEDA_SchematicFrame::Load_Component( wxDC* DC,
|
|||
DrawLibItem->GetField( REFERENCE )->m_VJustify = Entry->m_Prefix.m_VJustify;
|
||||
|
||||
/* Init des autres champs si predefinis dans la librairie */
|
||||
for( Field = Entry->Fields; Field != NULL; Field = (LibDrawField*) Field->Pnext )
|
||||
for( Field = Entry->Fields; Field != NULL; Field = Field->Next() )
|
||||
{
|
||||
if( Field->m_Text.IsEmpty() && Field->m_Name.IsEmpty() )
|
||||
continue;
|
||||
|
|
|
@ -233,7 +233,7 @@ void WinEDA_HierFrame::BuildSheetList( DrawSheetPath* list,
|
|||
m_Tree->Expand( menu );
|
||||
list->Pop();
|
||||
}
|
||||
bs = bs->Pnext;
|
||||
bs = bs->Next();
|
||||
}
|
||||
|
||||
maxposx -= m_Tree->GetIndent();
|
||||
|
|
|
@ -25,34 +25,37 @@ EDA_LibComponentStruct * CopyItem;
|
|||
CopyItem = CopyLibEntryStruct( this, (EDA_LibComponentStruct*) ItemToCopy );
|
||||
GetScreen()->AddItemToUndoList( (EDA_BaseStruct*) CopyItem );
|
||||
/* Clear current flags (which can be temporary set by a current edit command) */
|
||||
for ( item = CopyItem->m_Drawings; item != NULL; item = item->Pnext )
|
||||
for( item = CopyItem->m_Drawings; item != NULL; item = item->Next() )
|
||||
item->m_Flags = 0;
|
||||
|
||||
|
||||
/* Clear redo list, because after new save there is no redo to do */
|
||||
while( GetScreen()->m_RedoList )
|
||||
{
|
||||
item = GetScreen()->m_RedoList->Pnext;
|
||||
item = GetScreen()->m_RedoList->Next();
|
||||
delete( GetScreen()->m_RedoList );
|
||||
GetScreen()->m_RedoList = item;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/******************************************************/
|
||||
bool WinEDA_LibeditFrame::GetComponentFromRedoList()
|
||||
/******************************************************/
|
||||
|
||||
/* Redo the last edition:
|
||||
- Place the current edited library component in undo list
|
||||
- Get old version of the current edited library component
|
||||
* - Place the current edited library component in undo list
|
||||
* - Get old version of the current edited library component
|
||||
* @return FALSE if nothing done, else TRUE
|
||||
*/
|
||||
{
|
||||
if ( GetScreen()->m_RedoList == NULL ) return FALSE;
|
||||
if( GetScreen()->m_RedoList == NULL )
|
||||
return FALSE;
|
||||
|
||||
GetScreen()->AddItemToUndoList( (EDA_BaseStruct*) CurrentLibEntry );
|
||||
CurrentLibEntry =
|
||||
(EDA_LibComponentStruct*) GetScreen()->GetItemFromRedoList();
|
||||
if ( CurrentLibEntry ) CurrentLibEntry->Pnext = NULL;
|
||||
if( CurrentLibEntry )
|
||||
CurrentLibEntry->SetNext( NULL );
|
||||
CurrentDrawItem = NULL;
|
||||
GetScreen()->SetModify();
|
||||
ReCreateHToolbar();
|
||||
|
@ -61,22 +64,26 @@ bool WinEDA_LibeditFrame::GetComponentFromRedoList()
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************/
|
||||
bool WinEDA_LibeditFrame::GetComponentFromUndoList()
|
||||
/******************************************************/
|
||||
|
||||
/* Undo the last edition:
|
||||
- Place the current edited library component in Redo list
|
||||
- Get old version of the current edited library component
|
||||
* - Place the current edited library component in Redo list
|
||||
* - Get old version of the current edited library component
|
||||
* @return FALSE if nothing done, else TRUE
|
||||
*/
|
||||
{
|
||||
if ( GetScreen()->m_UndoList == NULL ) return FALSE;
|
||||
if( GetScreen()->m_UndoList == NULL )
|
||||
return FALSE;
|
||||
|
||||
GetScreen()->AddItemToRedoList( (EDA_BaseStruct*) CurrentLibEntry );
|
||||
CurrentLibEntry =
|
||||
(EDA_LibComponentStruct*) GetScreen()->GetItemFromUndoList();
|
||||
|
||||
if ( CurrentLibEntry ) CurrentLibEntry->Pnext = NULL;
|
||||
if( CurrentLibEntry )
|
||||
CurrentLibEntry->SetNext( NULL );
|
||||
CurrentDrawItem = NULL;
|
||||
GetScreen()->SetModify();
|
||||
ReCreateHToolbar();
|
||||
|
|
|
@ -29,10 +29,10 @@ static wxPoint StartCursor, LastTextPosition;
|
|||
static void ExitMoveField( WinEDA_DrawPanel* Panel, wxDC* DC )
|
||||
/***********************************************************/
|
||||
{
|
||||
|
||||
Panel->ManageCurseur = NULL;
|
||||
Panel->ForceCloseManageCurseur = NULL;
|
||||
if(CurrentDrawItem == NULL) return;
|
||||
if( CurrentDrawItem == NULL )
|
||||
return;
|
||||
|
||||
wxPoint curpos;
|
||||
curpos = Panel->GetScreen()->m_Curseur;
|
||||
|
@ -45,7 +45,6 @@ static void ExitMoveField(WinEDA_DrawPanel * Panel, wxDC * DC)
|
|||
}
|
||||
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
void WinEDA_LibeditFrame::StartMoveField( wxDC* DC, LibDrawField* field )
|
||||
/****************************************************************************/
|
||||
|
@ -53,7 +52,8 @@ void WinEDA_LibeditFrame::StartMoveField(wxDC * DC, LibDrawField *field)
|
|||
{
|
||||
wxPoint startPos;
|
||||
|
||||
if( (CurrentLibEntry == NULL) || ( field == NULL ) ) return;
|
||||
if( (CurrentLibEntry == NULL) || ( field == NULL ) )
|
||||
return;
|
||||
CurrentDrawItem = field;
|
||||
LastTextPosition = field->m_Pos;
|
||||
CurrentDrawItem->m_Flags |= IS_MOVED;
|
||||
|
@ -72,6 +72,7 @@ wxPoint startPos;
|
|||
DrawPanel->CursorOn( DC );
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************/
|
||||
/* Routine d'affichage du texte 'Field' en cours de deplacement. */
|
||||
/* Routine normalement attachee au curseur */
|
||||
|
@ -81,7 +82,8 @@ static void ShowMoveField(WinEDA_DrawPanel * panel, wxDC *DC, bool erase)
|
|||
int color;
|
||||
LibDrawField* Field = (LibDrawField*) CurrentDrawItem;
|
||||
|
||||
if( (CurrentLibEntry == NULL) || (Field == NULL) ) return;
|
||||
if( (CurrentLibEntry == NULL) || (Field == NULL) )
|
||||
return;
|
||||
|
||||
switch( Field->m_FieldId )
|
||||
{
|
||||
|
@ -106,7 +108,8 @@ LibDrawField *Field = (LibDrawField *)CurrentDrawItem;
|
|||
TransMat[0][0] = 1; TransMat[1][1] = -1;
|
||||
TransMat[1][0] = TransMat[0][1] = 0;
|
||||
|
||||
if( Field->m_Attributs & TEXT_NO_VISIBLE ) color = DARKGRAY;
|
||||
if( Field->m_Attributs & TEXT_NO_VISIBLE )
|
||||
color = DARKGRAY;
|
||||
if( erase )
|
||||
Field->Draw( panel, DC, wxPoint( 0, 0 ),
|
||||
color,
|
||||
|
@ -123,13 +126,15 @@ LibDrawField *Field = (LibDrawField *)CurrentDrawItem;
|
|||
g_XorMode, &text, TransMat );
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************/
|
||||
void WinEDA_LibeditFrame::PlaceField( wxDC* DC, LibDrawField* Field )
|
||||
/*******************************************************************/
|
||||
{
|
||||
int color;
|
||||
|
||||
if(Field == NULL ) return;
|
||||
if( Field == NULL )
|
||||
return;
|
||||
|
||||
switch( Field->m_FieldId )
|
||||
{
|
||||
|
@ -149,7 +154,8 @@ int color;
|
|||
Field->m_Flags = 0;
|
||||
|
||||
|
||||
if( (Field->m_Attributs & TEXT_NO_VISIBLE) != 0 ) color = DARKGRAY;
|
||||
if( (Field->m_Attributs & TEXT_NO_VISIBLE) != 0 )
|
||||
color = DARKGRAY;
|
||||
Field->m_Pos.x = GetScreen()->m_Curseur.x;
|
||||
Field->m_Pos.y = -GetScreen()->m_Curseur.y;
|
||||
int LineWidth = MAX( Field->m_Width, g_DrawMinimunLineWidth );
|
||||
|
@ -180,7 +186,8 @@ void WinEDA_LibeditFrame::EditField(wxDC * DC, LibDrawField *Field)
|
|||
int color;
|
||||
int LineWidth = MAX( Field->m_Width, g_DrawMinimunLineWidth );
|
||||
|
||||
if( Field == NULL) return;
|
||||
if( Field == NULL )
|
||||
return;
|
||||
|
||||
switch( Field->m_FieldId )
|
||||
{
|
||||
|
@ -199,7 +206,8 @@ void WinEDA_LibeditFrame::EditField(wxDC * DC, LibDrawField *Field)
|
|||
break;
|
||||
}
|
||||
|
||||
if( Field->m_Attributs & TEXT_NO_VISIBLE ) color = DARKGRAY;
|
||||
if( Field->m_Attributs & TEXT_NO_VISIBLE )
|
||||
color = DARKGRAY;
|
||||
|
||||
Text = Field->m_Text;
|
||||
Get_Message( title, _( "Edit field" ), Text, this );
|
||||
|
@ -217,9 +225,11 @@ void WinEDA_LibeditFrame::EditField(wxDC * DC, LibDrawField *Field)
|
|||
SaveCopyInUndoList( CurrentLibEntry );
|
||||
Field->m_Text = Text;
|
||||
}
|
||||
else DisplayError(this, _("No new text: no change") );
|
||||
else
|
||||
DisplayError( this, _( "No new text: no change" ) );
|
||||
|
||||
if( Field->m_Flags == 0 ) GRSetDrawMode(DC, GR_DEFAULT_DRAWMODE);
|
||||
if( Field->m_Flags == 0 )
|
||||
GRSetDrawMode( DC, GR_DEFAULT_DRAWMODE );
|
||||
|
||||
DrawGraphicText( DrawPanel, DC, wxPoint( Field->m_Pos.x, -Field->m_Pos.y ),
|
||||
color, Field->m_Text,
|
||||
|
@ -229,22 +239,27 @@ void WinEDA_LibeditFrame::EditField(wxDC * DC, LibDrawField *Field)
|
|||
|
||||
GetScreen()->SetModify();
|
||||
|
||||
if ( Field->m_FieldId == VALUE ) ReCreateHToolbar();
|
||||
if( Field->m_FieldId == VALUE )
|
||||
ReCreateHToolbar();
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************/
|
||||
void WinEDA_LibeditFrame::RotateField( wxDC* DC, LibDrawField* Field )
|
||||
/********************************************************************/
|
||||
|
||||
/* Routine de modification de l'orientation ( Horiz ou Vert. ) du champ.
|
||||
si un champ est en cours d'edition, modif de celui ci.
|
||||
sinon Modif du champ pointe par la souris
|
||||
* si un champ est en cours d'edition, modif de celui ci.
|
||||
* sinon Modif du champ pointe par la souris
|
||||
*/
|
||||
{
|
||||
int color;
|
||||
|
||||
if( Field == NULL) return;
|
||||
if( Field == NULL )
|
||||
return;
|
||||
|
||||
GetScreen()->SetModify();
|
||||
|
||||
switch( Field->m_FieldId )
|
||||
{
|
||||
case REFERENCE:
|
||||
|
@ -260,7 +275,8 @@ int color;
|
|||
break;
|
||||
}
|
||||
|
||||
if( (Field->m_Attributs & TEXT_NO_VISIBLE) != 0 ) color = DARKGRAY;
|
||||
if( (Field->m_Attributs & TEXT_NO_VISIBLE) != 0 )
|
||||
color = DARKGRAY;
|
||||
|
||||
DrawPanel->CursorOff( DC );
|
||||
|
||||
|
@ -272,10 +288,13 @@ int LineWidth = MAX(Field->m_Width, g_DrawMinimunLineWidth);
|
|||
Field->m_Size,
|
||||
Field->m_HJustify, Field->m_VJustify, LineWidth );
|
||||
|
||||
if( Field->m_Orient) Field->m_Orient = 0;
|
||||
else Field->m_Orient = 1;
|
||||
if( Field->m_Orient )
|
||||
Field->m_Orient = 0;
|
||||
else
|
||||
Field->m_Orient = 1;
|
||||
|
||||
if( Field->m_Flags == 0 ) GRSetDrawMode(DC, GR_DEFAULT_DRAWMODE);
|
||||
if( Field->m_Flags == 0 )
|
||||
GRSetDrawMode( DC, GR_DEFAULT_DRAWMODE );
|
||||
|
||||
DrawGraphicText( DrawPanel, DC, wxPoint( Field->m_Pos.x, -Field->m_Pos.y ),
|
||||
color, Field->m_Text,
|
||||
|
@ -285,16 +304,18 @@ int LineWidth = MAX(Field->m_Width, g_DrawMinimunLineWidth);
|
|||
DrawPanel->CursorOn( DC );
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
LibDrawField* WinEDA_LibeditFrame::LocateField( EDA_LibComponentStruct* LibEntry )
|
||||
/****************************************************************************/
|
||||
|
||||
/* Locate the component fiels (ref, name or auxiliary fields) under the mouse cursor
|
||||
return:
|
||||
pointer on the field (or NULL )
|
||||
* return:
|
||||
* pointer on the field (or NULL )
|
||||
*/
|
||||
{
|
||||
|
||||
wxPoint refpos;
|
||||
|
||||
refpos.x = GetScreen()->m_Curseur.x;
|
||||
refpos.y = -GetScreen()->m_Curseur.y; // Y axis is from bottom to top in library
|
||||
/* Test reference */
|
||||
|
@ -306,28 +327,32 @@ LibDrawField * WinEDA_LibeditFrame::LocateField(EDA_LibComponentStruct *LibEntry
|
|||
return &LibEntry->m_Prefix;
|
||||
|
||||
/* Localisation des autres fields */
|
||||
for (LibDrawField * Field = LibEntry->Fields; Field != NULL;
|
||||
Field = (LibDrawField*)Field->Pnext)
|
||||
for( LibDrawField* field = LibEntry->Fields; field; field = field->Next() )
|
||||
{
|
||||
if ( Field->m_Text.IsEmpty() ) continue;
|
||||
if (Field->HitTest(refpos) )
|
||||
return(Field);
|
||||
if( field->m_Text.IsEmpty() )
|
||||
continue;
|
||||
|
||||
if( field->HitTest( refpos ) )
|
||||
return field;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************************/
|
||||
LibEDA_BaseStruct* WinEDA_LibeditFrame::LocateItemUsingCursor()
|
||||
/********************************************************************************/
|
||||
{
|
||||
LibEDA_BaseStruct* DrawEntry = CurrentDrawItem;
|
||||
|
||||
if ( CurrentLibEntry == NULL ) return NULL;
|
||||
if( CurrentLibEntry == NULL )
|
||||
return NULL;
|
||||
|
||||
if( (DrawEntry == NULL) || (DrawEntry->m_Flags == 0) )
|
||||
{ // Simple localisation des elements
|
||||
DrawEntry = LocatePin(GetScreen()->m_Curseur, CurrentLibEntry, CurrentUnit, CurrentConvert);
|
||||
DrawEntry = LocatePin(
|
||||
GetScreen()->m_Curseur, CurrentLibEntry, CurrentUnit, CurrentConvert );
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
DrawEntry = CurrentDrawItem = LocateDrawItem( (SCH_SCREEN*) GetScreen(),
|
||||
|
@ -336,7 +361,8 @@ LibEDA_BaseStruct* WinEDA_LibeditFrame::LocateItemUsingCursor()
|
|||
}
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
DrawEntry = CurrentDrawItem = LocateDrawItem((SCH_SCREEN*)GetScreen(), GetScreen()->m_Curseur, CurrentLibEntry,CurrentUnit,
|
||||
DrawEntry = CurrentDrawItem = LocateDrawItem( (SCH_SCREEN*) GetScreen(),
|
||||
GetScreen()->m_Curseur, CurrentLibEntry, CurrentUnit,
|
||||
CurrentConvert, LOCATE_ALL_DRAW_ITEM );
|
||||
}
|
||||
if( DrawEntry == NULL )
|
||||
|
|
|
@ -212,7 +212,7 @@ bool WinEDA_SchematicFrame::LoadOneEEFile( SCH_SCREEN* screen, const wxString& F
|
|||
|
||||
if( !Failed )
|
||||
{
|
||||
SegmentStruct->Pnext = screen->EEDrawList;
|
||||
SegmentStruct->SetNext( screen->EEDrawList );
|
||||
screen->EEDrawList = SegmentStruct;
|
||||
}
|
||||
break;
|
||||
|
@ -251,7 +251,7 @@ bool WinEDA_SchematicFrame::LoadOneEEFile( SCH_SCREEN* screen, const wxString& F
|
|||
{
|
||||
RaccordStruct->m_Size.x -= RaccordStruct->m_Pos.x;
|
||||
RaccordStruct->m_Size.y -= RaccordStruct->m_Pos.y;
|
||||
RaccordStruct->Pnext = screen->EEDrawList;
|
||||
RaccordStruct->SetNext( screen->EEDrawList );
|
||||
screen->EEDrawList = RaccordStruct;
|
||||
}
|
||||
break;
|
||||
|
@ -294,7 +294,7 @@ bool WinEDA_SchematicFrame::LoadOneEEFile( SCH_SCREEN* screen, const wxString& F
|
|||
|
||||
if( !Failed )
|
||||
{
|
||||
PolylineStruct->Pnext = screen->EEDrawList;
|
||||
PolylineStruct->SetNext( screen->EEDrawList );
|
||||
screen->EEDrawList = PolylineStruct;
|
||||
}
|
||||
break;
|
||||
|
@ -314,7 +314,7 @@ bool WinEDA_SchematicFrame::LoadOneEEFile( SCH_SCREEN* screen, const wxString& F
|
|||
}
|
||||
else
|
||||
{
|
||||
ConnectionStruct->Pnext = screen->EEDrawList;
|
||||
ConnectionStruct->SetNext( screen->EEDrawList );
|
||||
screen->EEDrawList = ConnectionStruct;
|
||||
}
|
||||
break;
|
||||
|
@ -331,7 +331,7 @@ bool WinEDA_SchematicFrame::LoadOneEEFile( SCH_SCREEN* screen, const wxString& F
|
|||
{
|
||||
NoConnectStruct = new DrawNoConnectStruct( pos );
|
||||
|
||||
NoConnectStruct->Pnext = screen->EEDrawList;
|
||||
NoConnectStruct->SetNext( screen->EEDrawList );
|
||||
screen->EEDrawList = NoConnectStruct;
|
||||
}
|
||||
break;
|
||||
|
@ -362,7 +362,7 @@ bool WinEDA_SchematicFrame::LoadOneEEFile( SCH_SCREEN* screen, const wxString& F
|
|||
sscanf( text + 3, "%X", &ii );
|
||||
MarkerStruct->m_MarkFlags = ii;
|
||||
}
|
||||
MarkerStruct->Pnext = screen->EEDrawList;
|
||||
MarkerStruct->SetNext( screen->EEDrawList );
|
||||
screen->EEDrawList = MarkerStruct;
|
||||
}
|
||||
break;
|
||||
|
@ -452,7 +452,7 @@ bool WinEDA_SchematicFrame::LoadOneEEFile( SCH_SCREEN* screen, const wxString& F
|
|||
}
|
||||
if( Struct )
|
||||
{
|
||||
Struct->Pnext = screen->EEDrawList;
|
||||
Struct->SetNext( screen->EEDrawList );
|
||||
screen->EEDrawList = Struct;
|
||||
}
|
||||
}
|
||||
|
@ -480,7 +480,7 @@ bool WinEDA_SchematicFrame::LoadOneEEFile( SCH_SCREEN* screen, const wxString& F
|
|||
{
|
||||
Pnext = screen->EEDrawList;
|
||||
screen->EEDrawList = screen->EEDrawList->Next();
|
||||
Pnext->Pnext = Phead;
|
||||
Pnext->SetNext( Phead );
|
||||
Phead = Pnext;
|
||||
}
|
||||
|
||||
|
@ -825,9 +825,9 @@ static int ReadPartDescr( wxWindow* frame, char* Line, FILE* f,
|
|||
|
||||
if( !Failed )
|
||||
{
|
||||
component->Pnext = Window->EEDrawList;
|
||||
component->SetNext( Window->EEDrawList );
|
||||
Window->EEDrawList = component;
|
||||
component->m_Parent = Window;
|
||||
component->SetParent( Window );
|
||||
}
|
||||
|
||||
return Failed; /* Fin lecture 1 composant */
|
||||
|
@ -965,7 +965,7 @@ static int ReadSheetDescr( wxWindow* frame, char* Line, FILE* f, BASE_SCREEN* Wi
|
|||
if( SheetStruct->m_Label == NULL )
|
||||
OldSheetLabel = SheetStruct->m_Label = SheetLabelStruct;
|
||||
else
|
||||
OldSheetLabel->Pnext = (EDA_BaseStruct*) SheetLabelStruct;
|
||||
OldSheetLabel->SetNext( (EDA_BaseStruct*) SheetLabelStruct );
|
||||
OldSheetLabel = SheetLabelStruct;
|
||||
|
||||
/* Lecture des coordonnees */
|
||||
|
@ -1017,9 +1017,9 @@ static int ReadSheetDescr( wxWindow* frame, char* Line, FILE* f, BASE_SCREEN* Wi
|
|||
}
|
||||
if( !Failed )
|
||||
{
|
||||
SheetStruct->Pnext = Window->EEDrawList;
|
||||
SheetStruct->SetNext( Window->EEDrawList );
|
||||
Window->EEDrawList = SheetStruct;
|
||||
SheetStruct->m_Parent = Window;
|
||||
SheetStruct->SetParent( Window );
|
||||
}
|
||||
return Failed; /* Fin lecture 1 composant */
|
||||
}
|
||||
|
|
|
@ -165,12 +165,12 @@ SCH_ITEM* PickStruct( EDA_Rect& block, BASE_SCREEN* screen, int SearchMask )
|
|||
/* Put this structure in the picked list: */
|
||||
PickedItem = new DrawPickedStruct( DrawStruct );
|
||||
|
||||
PickedItem->Pnext = PickedList;
|
||||
PickedItem->SetNext( PickedList );
|
||||
PickedList = PickedItem;
|
||||
}
|
||||
}
|
||||
|
||||
if( PickedList && PickedList->Pnext == NULL )
|
||||
if( PickedList && PickedList->Next() == NULL )
|
||||
{
|
||||
/* Only one item was picked - convert to scalar form (no list): */
|
||||
PickedItem = PickedList;
|
||||
|
@ -1192,7 +1192,7 @@ Hierarchical_PIN_Sheet_Struct* LocateSheetLabel( DrawSheetStruct* Sheet, const w
|
|||
&& (pos.x <= maxx)
|
||||
&& (pos.x >= minx) )
|
||||
return SheetLabel;
|
||||
SheetLabel = (Hierarchical_PIN_Sheet_Struct*) SheetLabel->Pnext;
|
||||
SheetLabel = SheetLabel->Next();
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
|
|
@ -289,7 +289,7 @@ void Write_GENERIC_NetList( WinEDA_SchematicFrame* frame,
|
|||
|
||||
for( sheet = SheetList.GetFirst(); sheet != NULL; sheet = SheetList.GetNext() )
|
||||
{
|
||||
for( SchItem = sheet->LastDrawList(); SchItem != NULL; SchItem = SchItem->Pnext )
|
||||
for( SchItem = sheet->LastDrawList(); SchItem != NULL; SchItem = SchItem->Next() )
|
||||
{
|
||||
SchItem = Component = FindNextComponentAndCreatPinList( SchItem, sheet );
|
||||
|
||||
|
@ -413,7 +413,7 @@ static void WriteNetListPspice( WinEDA_SchematicFrame* frame, FILE* f,
|
|||
|
||||
for( sheet = SheetList.GetFirst(); sheet != NULL; sheet = SheetList.GetNext() )
|
||||
{
|
||||
for( DrawList = sheet->LastDrawList(); DrawList != NULL; DrawList = DrawList->Pnext )
|
||||
for( DrawList = sheet->LastDrawList(); DrawList != NULL; DrawList = DrawList->Next() )
|
||||
{
|
||||
wxChar ident;
|
||||
if( DrawList->Type() != TYPE_SCH_TEXT )
|
||||
|
@ -467,7 +467,7 @@ static void WriteNetListPspice( WinEDA_SchematicFrame* frame, FILE* f,
|
|||
ClearUsedFlags(); /* Reset the flags FlagControlMulti in all schematic files*/
|
||||
for( sheet = SheetList.GetFirst(); sheet != NULL; sheet = SheetList.GetNext() )
|
||||
{
|
||||
for( DrawList = sheet->LastDrawList(); DrawList != NULL; DrawList = DrawList->Pnext )
|
||||
for( DrawList = sheet->LastDrawList(); DrawList != NULL; DrawList = DrawList->Next() )
|
||||
{
|
||||
DrawList = Component = FindNextComponentAndCreatPinList( DrawList, sheet );
|
||||
if( Component == NULL )
|
||||
|
@ -556,7 +556,7 @@ static void WriteNetListPCBNEW( WinEDA_SchematicFrame* frame, FILE* f, bool with
|
|||
|
||||
for( sheet = SheetList.GetFirst(); sheet != NULL; sheet = SheetList.GetNext() )
|
||||
{
|
||||
for( DrawList = sheet->LastDrawList(); DrawList != NULL; DrawList = DrawList->Pnext )
|
||||
for( DrawList = sheet->LastDrawList(); DrawList != NULL; DrawList = DrawList->Next() )
|
||||
{
|
||||
DrawList = Component = FindNextComponentAndCreatPinList( DrawList, sheet );
|
||||
if( Component == NULL )
|
||||
|
@ -771,7 +771,7 @@ static void FindAllsInstancesOfComponent( SCH_COMPONENT* Component_in,
|
|||
|
||||
for( sheet = SheetList.GetFirst(); sheet != NULL; sheet = SheetList.GetNext() )
|
||||
{
|
||||
for( SchItem = sheet->LastDrawList(); SchItem; SchItem = SchItem->Pnext )
|
||||
for( SchItem = sheet->LastDrawList(); SchItem; SchItem = SchItem->Next() )
|
||||
{
|
||||
if( SchItem->Type() != TYPE_SCH_COMPONENT )
|
||||
continue;
|
||||
|
@ -960,7 +960,7 @@ static void WriteNetListCADSTAR( WinEDA_SchematicFrame* frame, FILE* f )
|
|||
|
||||
for( sheet = SheetList.GetFirst(); sheet != NULL; sheet = SheetList.GetNext() )
|
||||
{
|
||||
for( DrawList = sheet->LastDrawList(); DrawList != NULL; DrawList = DrawList->Pnext )
|
||||
for( DrawList = sheet->LastDrawList(); DrawList != NULL; DrawList = DrawList->Next() )
|
||||
{
|
||||
DrawList = Component = FindNextComponentAndCreatPinList( DrawList, sheet );
|
||||
if( Component == NULL )
|
||||
|
|
|
@ -489,7 +489,7 @@ static int ListeObjetConnection( DrawSheetPath* sheetlist, ObjetNetListStruct* O
|
|||
DrawSheetPath list;
|
||||
|
||||
DrawList = sheetlist->LastScreen()->EEDrawList;
|
||||
for( ; DrawList; DrawList = DrawList->Pnext )
|
||||
for( ; DrawList; DrawList = DrawList->Next() )
|
||||
{
|
||||
switch( DrawList->Type() )
|
||||
{
|
||||
|
@ -678,7 +678,7 @@ static int ListeObjetConnection( DrawSheetPath* sheetlist, ObjetNetListStruct* O
|
|||
list.Push( STRUCT );
|
||||
SheetLabel = STRUCT->m_Label;
|
||||
for( ; SheetLabel != NULL;
|
||||
SheetLabel = (Hierarchical_PIN_Sheet_Struct*) SheetLabel->Pnext )
|
||||
SheetLabel = SheetLabel->Next() )
|
||||
{
|
||||
ii = IsBusLabel( SheetLabel->m_Text );
|
||||
if( ObjNet )
|
||||
|
|
|
@ -135,7 +135,7 @@ void WinEDA_LibeditFrame::InitEditOnePin()
|
|||
|
||||
/* Marquage des pins a traiter,Si edition d'une pin non deja selectionnee */
|
||||
Pin = (LibDrawPin*) CurrentLibEntry->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = (LibDrawPin*) Pin->Pnext )
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
continue;
|
||||
|
@ -200,7 +200,7 @@ void WinEDA_LibeditFrame::PlacePin( wxDC* DC )
|
|||
Pin = (LibDrawPin*) CurrentLibEntry->m_Drawings;
|
||||
|
||||
// Tst for an other pin in same new position:
|
||||
for( ; Pin != NULL; Pin = (LibDrawPin*) Pin->Pnext )
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
continue;
|
||||
|
@ -239,7 +239,7 @@ void WinEDA_LibeditFrame::PlacePin( wxDC* DC )
|
|||
|
||||
/* Put linked pins in new position, and clear flags */
|
||||
Pin = (LibDrawPin*) CurrentLibEntry->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = (LibDrawPin*) Pin->Pnext )
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
continue;
|
||||
|
@ -276,7 +276,7 @@ void WinEDA_PinPropertiesFrame::SetPinOrient( int neworient )
|
|||
RefPin->m_Orient = neworient;
|
||||
|
||||
Pin = (LibDrawPin*) CurrentLibEntry->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = (LibDrawPin*) Pin->Pnext )
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->m_Flags == 0 )
|
||||
continue;
|
||||
|
@ -302,7 +302,7 @@ void WinEDA_LibeditFrame::StartMovePin( wxDC* DC )
|
|||
|
||||
/* Marquage des pins a traiter */
|
||||
Pin = (LibDrawPin*) CurrentLibEntry->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = (LibDrawPin*) Pin->Pnext )
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
Pin->m_Flags = 0;
|
||||
if( Pin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
|
@ -381,7 +381,7 @@ void WinEDA_PinPropertiesFrame::SetPinShape( int newshape )
|
|||
CurrentPin->Display_Infos_DrawEntry( m_Parent );
|
||||
|
||||
Pin = (LibDrawPin*) CurrentLibEntry->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = (LibDrawPin*) Pin->Pnext )
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
continue;
|
||||
|
@ -414,7 +414,7 @@ void WinEDA_PinPropertiesFrame::SetPinType( int newtype )
|
|||
m_Parent->GetScreen()->SetModify();
|
||||
|
||||
Pin = (LibDrawPin*) CurrentLibEntry->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = (LibDrawPin*) Pin->Pnext )
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
continue;
|
||||
|
@ -450,7 +450,7 @@ void WinEDA_PinPropertiesFrame::SetPinName( const wxString& newname, int newsize
|
|||
|
||||
/* Traitement des autres pins */
|
||||
Pin = (LibDrawPin*) CurrentLibEntry->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = (LibDrawPin*) Pin->Pnext )
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
continue;
|
||||
|
@ -492,7 +492,7 @@ void WinEDA_PinPropertiesFrame::SetPinNum( const wxString& newnum, int newsize )
|
|||
m_Parent->GetScreen()->SetModify();
|
||||
|
||||
Pin = (LibDrawPin*) CurrentLibEntry->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = (LibDrawPin*) Pin->Pnext )
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
continue;
|
||||
|
@ -539,7 +539,8 @@ void WinEDA_LibeditFrame::DeletePin( wxDC* DC,
|
|||
{
|
||||
if( DrawItem->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
{
|
||||
DrawItem = DrawItem->Next(); continue;
|
||||
DrawItem = DrawItem->Next();
|
||||
continue;
|
||||
}
|
||||
Pin = (LibDrawPin*) DrawItem;
|
||||
DrawItem = DrawItem->Next();
|
||||
|
@ -602,7 +603,7 @@ void WinEDA_LibeditFrame::CreatePin( wxDC* DC )
|
|||
else
|
||||
CurrentPin->m_Attributs &= ~PINNOTDRAW;
|
||||
|
||||
CurrentPin->Pnext = CurrentLibEntry->m_Drawings;
|
||||
CurrentPin->SetNext( CurrentLibEntry->m_Drawings );
|
||||
CurrentLibEntry->m_Drawings = CurrentPin;
|
||||
CurrentLibEntry->SortDrawItems();
|
||||
|
||||
|
@ -725,7 +726,7 @@ void WinEDA_PinPropertiesFrame::SetAttributsPin( bool draw,
|
|||
CurrentPin->m_Attributs &= ~PINNOTDRAW;
|
||||
|
||||
Pin = (LibDrawPin*) CurrentLibEntry->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = (LibDrawPin*) Pin->Pnext )
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->m_Flags == 0 )
|
||||
continue;
|
||||
|
@ -765,7 +766,7 @@ void WinEDA_PinPropertiesFrame::NewSizePin( int newsize )
|
|||
if( g_EditPinByPinIsOn == FALSE )
|
||||
{
|
||||
Pin = (LibDrawPin*) CurrentLibEntry->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = (LibDrawPin*) Pin->Pnext )
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
continue;
|
||||
|
@ -805,7 +806,7 @@ static void CreateImagePins( LibDrawPin* Pin )
|
|||
NewPin->m_Convert = 1;
|
||||
else
|
||||
NewPin->m_Convert = 2;
|
||||
NewPin->Pnext = CurrentLibEntry->m_Drawings;
|
||||
NewPin->SetNext( CurrentLibEntry->m_Drawings );
|
||||
CurrentLibEntry->m_Drawings = NewPin;
|
||||
}
|
||||
|
||||
|
@ -821,7 +822,7 @@ static void CreateImagePins( LibDrawPin* Pin )
|
|||
if( CurrentConvert != 0 )
|
||||
NewPin->m_Convert = 1;
|
||||
NewPin->m_Unit = ii;
|
||||
NewPin->Pnext = CurrentLibEntry->m_Drawings;
|
||||
NewPin->SetNext( CurrentLibEntry->m_Drawings );
|
||||
CurrentLibEntry->m_Drawings = NewPin;
|
||||
|
||||
/* Creation pour la representation "Convert" */
|
||||
|
@ -832,7 +833,7 @@ static void CreateImagePins( LibDrawPin* Pin )
|
|||
NewPin->m_Convert = 2;
|
||||
if( Pin->m_Unit != 0 )
|
||||
NewPin->m_Unit = ii;
|
||||
NewPin->Pnext = CurrentLibEntry->m_Drawings;
|
||||
NewPin->SetNext( CurrentLibEntry->m_Drawings );
|
||||
CurrentLibEntry->m_Drawings = NewPin;
|
||||
}
|
||||
}
|
||||
|
@ -861,7 +862,7 @@ void WinEDA_LibeditFrame::GlobalSetPins( wxDC* DC,
|
|||
GetScreen()->SetModify();
|
||||
|
||||
Pin = (LibDrawPin*) CurrentLibEntry->m_Drawings;
|
||||
for( ; Pin != NULL; Pin = (LibDrawPin*) Pin->Pnext )
|
||||
for( ; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
continue;
|
||||
|
@ -911,7 +912,7 @@ void WinEDA_LibeditFrame::RepeatPinItem( wxDC* DC, LibDrawPin* SourcePin )
|
|||
return;
|
||||
|
||||
Pin = SourcePin->GenCopy();
|
||||
Pin->Pnext = CurrentLibEntry->m_Drawings;
|
||||
Pin->SetNext( CurrentLibEntry->m_Drawings );
|
||||
CurrentLibEntry->m_Drawings = Pin;
|
||||
Pin->m_Flags = IS_NEW;
|
||||
|
||||
|
@ -961,7 +962,8 @@ bool WinEDA_LibeditFrame::TestPins( EDA_LibComponentStruct* LibEntry )
|
|||
// Test des pins ( duplicates...)
|
||||
{
|
||||
int nb_pins, ii, error;
|
||||
LibDrawPin* Pin, ** PinList;
|
||||
LibDrawPin* Pin;
|
||||
LibDrawPin** PinList;
|
||||
wxString msg;
|
||||
|
||||
if( CurrentLibEntry == NULL )
|
||||
|
@ -969,7 +971,7 @@ bool WinEDA_LibeditFrame::TestPins( EDA_LibComponentStruct* LibEntry )
|
|||
|
||||
// Construction de la liste des pins:
|
||||
Pin = (LibDrawPin*) CurrentLibEntry->m_Drawings;
|
||||
for( nb_pins = 0; Pin != NULL; Pin = (LibDrawPin*) Pin->Pnext )
|
||||
for( nb_pins = 0; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() == COMPONENT_PIN_DRAW_TYPE )
|
||||
nb_pins++;
|
||||
|
@ -977,7 +979,7 @@ bool WinEDA_LibeditFrame::TestPins( EDA_LibComponentStruct* LibEntry )
|
|||
|
||||
PinList = (LibDrawPin**) MyZMalloc( (nb_pins + 1) * sizeof(LibDrawPin*) );
|
||||
Pin = (LibDrawPin*) CurrentLibEntry->m_Drawings;
|
||||
for( ii = 0; Pin != NULL; Pin = (LibDrawPin*) Pin->Pnext )
|
||||
for( ii = 0; Pin != NULL; Pin = Pin->Next() )
|
||||
{
|
||||
if( Pin->Type() == COMPONENT_PIN_DRAW_TYPE )
|
||||
PinList[ii++] = Pin;
|
||||
|
@ -993,23 +995,29 @@ bool WinEDA_LibeditFrame::TestPins( EDA_LibComponentStruct* LibEntry )
|
|||
wxString aux_msg, StringPinNum;
|
||||
LibDrawPin* curr_pin = PinList[ii];
|
||||
Pin = PinList[ii - 1];
|
||||
|
||||
if( Pin->m_PinNum != curr_pin->m_PinNum )
|
||||
continue;
|
||||
|
||||
if( Pin->m_Convert != curr_pin->m_Convert )
|
||||
continue;
|
||||
|
||||
if( Pin->m_Unit != curr_pin->m_Unit )
|
||||
continue;
|
||||
|
||||
error++;
|
||||
curr_pin->ReturnPinStringNum( StringPinNum );
|
||||
msg.Printf( _( "Duplicate Pin %4.4s (Pin %s loc %d, %d, and Pin %s loc %d, %d)" ),
|
||||
StringPinNum.GetData(),
|
||||
curr_pin->m_PinName.GetData(), curr_pin->m_Pos.x, -curr_pin->m_Pos.y,
|
||||
Pin->m_PinName.GetData(), Pin->m_Pos.x, -Pin->m_Pos.y );
|
||||
|
||||
if( CurrentLibEntry->m_UnitCount > 1 )
|
||||
{
|
||||
aux_msg.Printf( _( " Part %d" ), curr_pin->m_Unit );
|
||||
msg += aux_msg;
|
||||
}
|
||||
|
||||
if( g_AsDeMorgan )
|
||||
{
|
||||
if( curr_pin->m_Convert )
|
||||
|
@ -1017,6 +1025,7 @@ bool WinEDA_LibeditFrame::TestPins( EDA_LibComponentStruct* LibEntry )
|
|||
else
|
||||
msg += _( " Normal" );
|
||||
}
|
||||
|
||||
DisplayError( this, msg );
|
||||
}
|
||||
|
||||
|
|
|
@ -772,20 +772,26 @@ void PlotSheetStruct( DrawSheetStruct* Struct )
|
|||
|
||||
Move_Plume( Struct->m_Pos, 'U' );
|
||||
pos = Struct->m_Pos; pos.x += Struct->m_Size.x;
|
||||
|
||||
Move_Plume( pos, 'D' );
|
||||
pos.y += Struct->m_Size.y;
|
||||
|
||||
Move_Plume( pos, 'D' );
|
||||
pos = Struct->m_Pos; pos.y += Struct->m_Size.y;
|
||||
|
||||
Move_Plume( pos, 'D' );
|
||||
Move_Plume( Struct->m_Pos, 'D' );
|
||||
|
||||
Plume( 'U' );
|
||||
|
||||
/* Trace des textes : SheetName */
|
||||
Text = Struct->m_SheetName;
|
||||
size = wxSize( Struct->m_SheetNameSize, Struct->m_SheetNameSize );
|
||||
pos = Struct->m_Pos; pos.y -= 4;
|
||||
|
||||
if( (g_PlotFormat == PLOT_FORMAT_POST) && g_PlotPSColorOpt )
|
||||
SetColorMapPS( ReturnLayerColor( LAYER_SHEETNAME ) );
|
||||
|
||||
PlotGraphicText( g_PlotFormat, pos, txtcolor,
|
||||
Text, TEXT_ORIENT_HORIZ, size,
|
||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_BOTTOM );
|
||||
|
@ -793,8 +799,10 @@ void PlotSheetStruct( DrawSheetStruct* Struct )
|
|||
/* Trace des textes : FileName */
|
||||
Text = Struct->GetFileName();
|
||||
size = wxSize( Struct->m_FileNameSize, Struct->m_FileNameSize );
|
||||
|
||||
if( (g_PlotFormat == PLOT_FORMAT_POST) && g_PlotPSColorOpt )
|
||||
SetColorMapPS( ReturnLayerColor( LAYER_SHEETFILENAME ) );
|
||||
|
||||
PlotGraphicText( g_PlotFormat,
|
||||
wxPoint( Struct->m_Pos.x, Struct->m_Pos.y + Struct->m_Size.y + 4 ),
|
||||
txtcolor,
|
||||
|
@ -805,9 +813,10 @@ void PlotSheetStruct( DrawSheetStruct* Struct )
|
|||
SheetLabelStruct = Struct->m_Label;
|
||||
if( (g_PlotFormat == PLOT_FORMAT_POST) && g_PlotPSColorOpt )
|
||||
SetColorMapPS( ReturnLayerColor( Struct->m_Layer ) );
|
||||
|
||||
while( SheetLabelStruct != NULL )
|
||||
{
|
||||
PlotSheetLabelStruct( SheetLabelStruct );
|
||||
SheetLabelStruct = (Hierarchical_PIN_Sheet_Struct*) (SheetLabelStruct->Pnext);
|
||||
SheetLabelStruct = SheetLabelStruct->Next();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -572,7 +572,7 @@ void WinEDA_PlotHPGLFrame::Plot_Schematic_HPGL( int Select_PlotAll, int HPGL_She
|
|||
InitPlotParametresHPGL( PlotOffset, g_PlotScaleX, g_PlotScaleY );
|
||||
Plot_1_Page_HPGL( PlotFileName, screen );
|
||||
SetLocaleTo_Default( );
|
||||
screen = (BASE_SCREEN*) screen->Pnext;
|
||||
screen = screen->Next();
|
||||
if( Select_PlotAll == FALSE )
|
||||
break;
|
||||
}
|
||||
|
@ -721,7 +721,7 @@ void WinEDA_PlotHPGLFrame::Plot_1_Page_HPGL( const wxString& FullFileName,
|
|||
}
|
||||
|
||||
Plume( 'U' );
|
||||
DrawList = DrawList->Pnext;
|
||||
DrawList = DrawList->Next();
|
||||
}
|
||||
|
||||
/* fin */
|
||||
|
|
|
@ -401,7 +401,7 @@ void WinEDA_PlotPSFrame::CreatePSFile( int AllPages, int pagesize )
|
|||
|
||||
PlotOneSheetPS( PlotFileName, screen, RealSheet, BBox, plot_offset );
|
||||
|
||||
screen = (BASE_SCREEN*) screen->Pnext;
|
||||
screen = screen->Next();
|
||||
|
||||
if( AllPages == FALSE )
|
||||
break;
|
||||
|
|
|
@ -80,6 +80,9 @@ public:
|
|||
EDA_DrawLineStruct( const wxPoint& pos, int layer );
|
||||
~EDA_DrawLineStruct() { }
|
||||
|
||||
EDA_DrawLineStruct* Next() const { return (EDA_DrawLineStruct*) Pnext; }
|
||||
EDA_DrawLineStruct* Back() const { return (EDA_DrawLineStruct*) Pback; }
|
||||
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
return wxT( "EDA_DrawLine" );
|
||||
|
|
|
@ -310,10 +310,10 @@ EDA_LibComponentStruct* CopyLibEntryStruct( wxWindow* frame, EDA_LibComponentStr
|
|||
|
||||
/* Copie des champs */
|
||||
for( OldField = OldEntry->Fields; OldField != NULL;
|
||||
OldField = (LibDrawField*) OldField->Pnext )
|
||||
OldField = (LibDrawField*) OldField->Next() )
|
||||
{
|
||||
NewField = OldField->GenCopy();
|
||||
NewField->Pnext = NewStruct->Fields;
|
||||
NewField->SetNext( NewStruct->Fields );
|
||||
NewStruct->Fields = NewField;
|
||||
}
|
||||
|
||||
|
@ -330,10 +330,10 @@ EDA_LibComponentStruct* CopyLibEntryStruct( wxWindow* frame, EDA_LibComponentStr
|
|||
if( LastItem == NULL )
|
||||
NewStruct->m_Drawings = NewDrawings;
|
||||
else
|
||||
LastItem->Pnext = NewDrawings;
|
||||
LastItem->SetNext( NewDrawings );
|
||||
|
||||
LastItem = NewDrawings;
|
||||
NewDrawings->Pnext = NULL;
|
||||
NewDrawings->SetNext( NULL );
|
||||
}
|
||||
else // Should nevers occurs, just in case...
|
||||
{ // CopyDrawEntryStruct() was not able to duplicate the type of OldDrawings
|
||||
|
@ -395,7 +395,7 @@ bool EDA_LibComponentStruct::Save( FILE* aFile )
|
|||
m_Name.Save( aFile );
|
||||
|
||||
for( Field = Fields; Field!= NULL;
|
||||
Field = (LibDrawField*) Field->Pnext )
|
||||
Field = (LibDrawField*) Field->Next() )
|
||||
{
|
||||
if( Field->m_Text.IsEmpty() && Field->m_Name.IsEmpty() )
|
||||
continue;
|
||||
|
|
|
@ -217,7 +217,9 @@ void WinEDA_SchematicFrame::SaveCopyInUndoList( SCH_ITEM * ItemToCopy,
|
|||
break;
|
||||
|
||||
case IS_CHANGED: /* Create a copy of schematic */
|
||||
NewList->m_Son = CopyItem = DuplicateStruct( ItemToCopy );
|
||||
CopyItem = DuplicateStruct( ItemToCopy );
|
||||
NewList->SetSon( CopyItem );
|
||||
|
||||
if( ItemToCopy->Type() == DRAW_PICK_ITEM_STRUCT_TYPE )
|
||||
{
|
||||
DrawPickedStruct* PickedList = (DrawPickedStruct*) CopyItem;
|
||||
|
@ -239,7 +241,7 @@ void WinEDA_SchematicFrame::SaveCopyInUndoList( SCH_ITEM * ItemToCopy,
|
|||
case IS_NEW:
|
||||
if( ItemToCopy->Type() == DRAW_PICK_ITEM_STRUCT_TYPE )
|
||||
{
|
||||
NewList->m_Son = ItemToCopy;
|
||||
NewList->SetSon( ItemToCopy );
|
||||
DrawPickedStruct* PickedList = (DrawPickedStruct*) ItemToCopy;
|
||||
while( PickedList )
|
||||
{
|
||||
|
@ -258,11 +260,11 @@ void WinEDA_SchematicFrame::SaveCopyInUndoList( SCH_ITEM * ItemToCopy,
|
|||
|
||||
case IS_NEW | IS_CHANGED:
|
||||
case IS_WIRE_IMAGE:
|
||||
NewList->m_Son = ItemToCopy;
|
||||
NewList->SetSon( ItemToCopy );
|
||||
break;
|
||||
|
||||
case IS_DELETED:
|
||||
NewList->m_Son = ItemToCopy;
|
||||
NewList->SetSon( ItemToCopy );
|
||||
ItemToCopy->m_Flags = flag_type_command;
|
||||
if( ItemToCopy->Type() == DRAW_PICK_ITEM_STRUCT_TYPE )
|
||||
{
|
||||
|
@ -327,7 +329,7 @@ void WinEDA_SchematicFrame::PutDataInPreviousState( DrawPickedStruct* List )
|
|||
* Put data pointed by List in the previous state, i.e. the state memorised by List
|
||||
*/
|
||||
{
|
||||
SCH_ITEM* FirstItem = (SCH_ITEM*) List->m_Son;
|
||||
SCH_ITEM* FirstItem = (SCH_ITEM*) List->GetSon();
|
||||
SCH_ITEM* item;
|
||||
DrawPickedStruct* PickedList;
|
||||
|
||||
|
@ -374,7 +376,7 @@ void WinEDA_SchematicFrame::PutDataInPreviousState( DrawPickedStruct* List )
|
|||
FirstItem = (SCH_ITEM*)List->m_Image;
|
||||
( (SCH_SCREEN*) GetScreen() )->RemoveFromDrawList( FirstItem );
|
||||
FirstItem->m_Flags = IS_DELETED;
|
||||
List->m_Son = FirstItem;
|
||||
List->SetSon( FirstItem );
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -386,7 +388,7 @@ void WinEDA_SchematicFrame::PutDataInPreviousState( DrawPickedStruct* List )
|
|||
while( PickedList )
|
||||
{
|
||||
item = PickedList->m_PickedStruct;
|
||||
item->Pnext = GetScreen()->EEDrawList;
|
||||
item->SetNext( GetScreen()->EEDrawList );
|
||||
GetScreen()->EEDrawList = item;
|
||||
item->m_Flags = 0;
|
||||
PickedList->m_PickedStruct = NULL;
|
||||
|
@ -397,21 +399,21 @@ void WinEDA_SchematicFrame::PutDataInPreviousState( DrawPickedStruct* List )
|
|||
}
|
||||
else
|
||||
{
|
||||
FirstItem->Pnext = GetScreen()->EEDrawList;
|
||||
FirstItem->SetNext( GetScreen()->EEDrawList );
|
||||
GetScreen()->EEDrawList = FirstItem;
|
||||
FirstItem->m_Flags = 0;
|
||||
List->m_Image = List->m_Son;
|
||||
List->m_Son = NULL;
|
||||
List->m_Image = List->GetSon();
|
||||
List->SetSon( NULL );
|
||||
}
|
||||
break;
|
||||
|
||||
case IS_WIRE_IMAGE:
|
||||
/* Exchange the current wires and the oild wires */
|
||||
List->m_Son = ( (SCH_SCREEN*) GetScreen() )->ExtractWires( FALSE );
|
||||
List->SetSon( ( (SCH_SCREEN*) GetScreen() )->ExtractWires( FALSE ) );
|
||||
while( FirstItem )
|
||||
{
|
||||
SCH_ITEM* nextitem = FirstItem->Next();
|
||||
FirstItem->Pnext = GetScreen()->EEDrawList;
|
||||
FirstItem->SetNext( GetScreen()->EEDrawList );
|
||||
GetScreen()->EEDrawList = FirstItem;
|
||||
FirstItem->m_Flags = 0;
|
||||
FirstItem = nextitem;
|
||||
|
@ -445,7 +447,7 @@ void WinEDA_SchematicFrame::PutDataInPreviousState( DrawPickedStruct* List )
|
|||
|
||||
case IS_DELETED:
|
||||
item = PickedList->m_PickedStruct;
|
||||
item->Pnext = GetScreen()->EEDrawList;
|
||||
item->SetNext( GetScreen()->EEDrawList );
|
||||
GetScreen()->EEDrawList = item;
|
||||
item->m_Flags = 0;
|
||||
PickedList->m_PickedStruct = NULL;
|
||||
|
@ -513,8 +515,8 @@ void SCH_SCREEN::ClearUndoORRedoList( EDA_BaseStruct* List )
|
|||
|
||||
for( ; List != NULL; List = nextitem )
|
||||
{
|
||||
nextitem = List->Pnext;
|
||||
FirstItem = List->m_Son;
|
||||
nextitem = List->Next();
|
||||
FirstItem = List->GetSon();
|
||||
CmdType = List->m_Flags;
|
||||
|
||||
SAFE_DELETE( List );
|
||||
|
@ -571,7 +573,7 @@ void SCH_SCREEN::ClearUndoORRedoList( EDA_BaseStruct* List )
|
|||
{
|
||||
while( FirstItem )
|
||||
{
|
||||
EDA_BaseStruct* nextitem = FirstItem->Pnext;
|
||||
EDA_BaseStruct* nextitem = FirstItem->Next();
|
||||
delete FirstItem;
|
||||
FirstItem = nextitem;
|
||||
}
|
||||
|
@ -638,24 +640,25 @@ void SCH_SCREEN::AddItemToUndoList( EDA_BaseStruct* newitem )
|
|||
return;
|
||||
|
||||
if( m_UndoList )
|
||||
m_UndoList->Pback = newitem;
|
||||
newitem->Pnext = m_UndoList;
|
||||
newitem->Pback = NULL;
|
||||
m_UndoList->SetBack( newitem );
|
||||
|
||||
newitem->SetNext( m_UndoList );
|
||||
newitem->SetBack( NULL );
|
||||
m_UndoList = newitem;
|
||||
|
||||
/* Free oldest items, if count max reached */
|
||||
for( ii = 0, item = m_UndoList; ii < m_UndoRedoCountMax; ii++ )
|
||||
{
|
||||
if( item->Pnext == NULL )
|
||||
if( item->Next() == NULL )
|
||||
return;
|
||||
item = item->Pnext;
|
||||
item = item->Next();
|
||||
}
|
||||
|
||||
if( item == NULL )
|
||||
return;
|
||||
|
||||
nextitem = item->Pnext;
|
||||
item->Pnext = NULL; // Set end of chain
|
||||
nextitem = item->Next();
|
||||
item->SetNext( NULL ); // Set end of chain
|
||||
|
||||
// Delete the extra items
|
||||
ClearUndoORRedoList( nextitem );
|
||||
|
@ -672,22 +675,23 @@ void SCH_SCREEN::AddItemToRedoList( EDA_BaseStruct* newitem )
|
|||
if( newitem == NULL )
|
||||
return;
|
||||
|
||||
newitem->Pback = NULL;
|
||||
newitem->Pnext = m_RedoList;
|
||||
newitem->SetBack( NULL );
|
||||
newitem->SetNext( m_RedoList );
|
||||
m_RedoList = newitem;
|
||||
|
||||
/* Free first items, if count max reached */
|
||||
for( ii = 0, item = m_RedoList; ii < m_UndoRedoCountMax; ii++ )
|
||||
{
|
||||
if( item->Pnext == NULL )
|
||||
if( item->Next() == NULL )
|
||||
break;
|
||||
item = item->Pnext;
|
||||
item = item->Next();
|
||||
}
|
||||
|
||||
if( item == NULL )
|
||||
return;
|
||||
|
||||
nextitem = item->Pnext;
|
||||
item->Pnext = NULL; // Set end of chain
|
||||
nextitem = item->Next();
|
||||
item->SetNext( NULL ); // Set end of chain
|
||||
|
||||
// Delete the extra items
|
||||
ClearUndoORRedoList( nextitem );
|
||||
|
|
|
@ -140,6 +140,10 @@ WinEDA_SchematicFrame::WinEDA_SchematicFrame( wxWindow* father,
|
|||
m_Draw_Grid = g_ShowGrid; // TRUE to show a grid
|
||||
m_Draw_Sheet_Ref = TRUE; // TRUE to show sheet references
|
||||
m_CurrentSheet = new DrawSheetPath();
|
||||
m_CurrentField = NULL;
|
||||
m_Multiflag = 0;
|
||||
m_TextFieldSize = DEFAULT_SIZE_TEXT;
|
||||
|
||||
|
||||
CreateScreens();
|
||||
|
||||
|
|
|
@ -348,7 +348,7 @@ DrawSheetStruct* WinEDA_SchematicFrame::CreateSheet( wxDC* DC )
|
|||
|
||||
Sheet->m_Flags = IS_NEW | IS_RESIZED;
|
||||
Sheet->m_TimeStamp = GetTimeStamp();
|
||||
Sheet->m_Parent = GetScreen();
|
||||
Sheet->SetParent( GetScreen() );
|
||||
Sheet->m_AssociatedScreen = NULL;
|
||||
s_SheetMindx = SHEET_MIN_WIDTH;
|
||||
s_SheetMindy = SHEET_MIN_HEIGHT;
|
||||
|
@ -401,7 +401,7 @@ void WinEDA_SchematicFrame::ReSizeSheet( DrawSheetStruct* Sheet, wxDC* DC )
|
|||
(int) ( (sheetlabel->GetLength() +
|
||||
1) * sheetlabel->m_Size.x ) );
|
||||
s_SheetMindy = MAX( s_SheetMindy, sheetlabel->m_Pos.y - Sheet->m_Pos.y );
|
||||
sheetlabel = (Hierarchical_PIN_Sheet_Struct*) sheetlabel->Pnext;
|
||||
sheetlabel = sheetlabel->Next();
|
||||
}
|
||||
|
||||
DrawPanel->ManageCurseur = DeplaceSheet;
|
||||
|
@ -457,7 +457,7 @@ static void DeplaceSheet( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
|||
{
|
||||
if( SheetLabel->m_Edge )
|
||||
SheetLabel->m_Pos.x = Sheet->m_Pos.x + Sheet->m_Size.x;
|
||||
SheetLabel = (Hierarchical_PIN_Sheet_Struct*) SheetLabel->Pnext;
|
||||
SheetLabel = SheetLabel->Next();
|
||||
}
|
||||
}
|
||||
else /* Move Sheet */
|
||||
|
|
|
@ -171,7 +171,7 @@ static void ExitPinSheet( WinEDA_DrawPanel* Panel, wxDC* DC )
|
|||
*/
|
||||
void Hierarchical_PIN_Sheet_Struct::Place( WinEDA_SchematicFrame* frame, wxDC* DC )
|
||||
{
|
||||
DrawSheetStruct* Sheet = (DrawSheetStruct*) m_Parent;
|
||||
DrawSheetStruct* Sheet = (DrawSheetStruct*) GetParent();
|
||||
|
||||
if( m_Flags & IS_NEW ) /* ajout a la liste des structures */
|
||||
{
|
||||
|
@ -182,12 +182,12 @@ void Hierarchical_PIN_Sheet_Struct::Place( WinEDA_SchematicFrame* frame, wxDC* D
|
|||
Hierarchical_PIN_Sheet_Struct* pinsheet = Sheet->m_Label;
|
||||
while( pinsheet )
|
||||
{
|
||||
if( pinsheet->Pnext == NULL )
|
||||
if( pinsheet->Next() == NULL )
|
||||
{
|
||||
pinsheet->Pnext = this;
|
||||
pinsheet->SetNext( this );
|
||||
break;
|
||||
}
|
||||
pinsheet = (Hierarchical_PIN_Sheet_Struct*) pinsheet->Pnext;
|
||||
pinsheet = pinsheet->Next();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -242,7 +242,7 @@ static void Move_PinSheet( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
|||
if( SheetLabel == NULL )
|
||||
return;
|
||||
|
||||
DrawSheetStruct* Sheet = (DrawSheetStruct*) SheetLabel->m_Parent;
|
||||
DrawSheetStruct* Sheet = (DrawSheetStruct*) SheetLabel->GetParent();
|
||||
|
||||
if( Sheet == NULL )
|
||||
return;
|
||||
|
@ -362,7 +362,7 @@ Hierarchical_PIN_Sheet_Struct* WinEDA_SchematicFrame::Import_PinSheet( DrawSheet
|
|||
if(!Sheet->m_AssociatedScreen) return NULL;
|
||||
DrawStruct = Sheet->m_AssociatedScreen->EEDrawList;
|
||||
HLabel = NULL;
|
||||
for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Pnext )
|
||||
for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Next() )
|
||||
{
|
||||
if( DrawStruct->Type() != TYPE_SCH_HIERLABEL )
|
||||
continue;
|
||||
|
@ -370,7 +370,7 @@ Hierarchical_PIN_Sheet_Struct* WinEDA_SchematicFrame::Import_PinSheet( DrawSheet
|
|||
|
||||
/* Ici un G-Label a ete trouve: y a t-il un SheetLabel correspondant */
|
||||
SheetLabel = Sheet->m_Label;
|
||||
for( ; SheetLabel != NULL; SheetLabel = (Hierarchical_PIN_Sheet_Struct*) SheetLabel->Pnext )
|
||||
for( ; SheetLabel != NULL; SheetLabel = SheetLabel->Next() )
|
||||
{
|
||||
if( SheetLabel->m_Text.CmpNoCase( HLabel->m_Text ) == 0 )
|
||||
{
|
||||
|
@ -419,7 +419,7 @@ void WinEDA_SchematicFrame::DeleteSheetLabel( bool aRedraw,
|
|||
* si aRedraw == true, effacement a l'ecran du dessin
|
||||
*/
|
||||
{
|
||||
DrawSheetStruct* parent = (DrawSheetStruct*) aSheetLabelToDel->m_Parent;
|
||||
DrawSheetStruct* parent = (DrawSheetStruct*) aSheetLabelToDel->GetParent();
|
||||
|
||||
wxASSERT( parent );
|
||||
wxASSERT( parent->Type() == DRAW_SHEET_STRUCT_TYPE );
|
||||
|
@ -438,7 +438,7 @@ void WinEDA_SchematicFrame::DeleteSheetLabel( bool aRedraw,
|
|||
if( label == aSheetLabelToDel )
|
||||
{
|
||||
if( prev )
|
||||
prev->Pnext = label->Next();
|
||||
prev->SetNext( label->Next() );
|
||||
else
|
||||
parent->m_Label = label->Next();
|
||||
|
||||
|
|
|
@ -664,7 +664,7 @@ void WinEDA_LibeditFrame::EndDrawGraphicItem( wxDC* DC )
|
|||
if( CurrentDrawItem->m_Flags & IS_NEW )
|
||||
{
|
||||
SaveCopyInUndoList( CurrentLibEntry );
|
||||
CurrentDrawItem->Pnext = CurrentLibEntry->m_Drawings;
|
||||
CurrentDrawItem->SetNext( CurrentLibEntry->m_Drawings );
|
||||
CurrentLibEntry->m_Drawings = CurrentDrawItem;
|
||||
|
||||
switch( CurrentDrawItem->Type() )
|
||||
|
|
|
@ -103,9 +103,9 @@ void WinEDA_LibeditFrame::LoadOneSymbol( wxDC* DC )
|
|||
DrawEntry->m_Flags = IS_NEW;
|
||||
DrawEntry->m_Selected = IS_SELECTED;
|
||||
|
||||
if( DrawEntry->Pnext == NULL )
|
||||
if( DrawEntry->Next() == NULL )
|
||||
{ /* Fin de liste trouvee */
|
||||
DrawEntry->Pnext = CurrentLibEntry->m_Drawings;
|
||||
DrawEntry->SetNext( CurrentLibEntry->m_Drawings );
|
||||
CurrentLibEntry->m_Drawings = LibEntry->m_Drawings;
|
||||
LibEntry->m_Drawings = NULL;
|
||||
break;
|
||||
|
@ -235,7 +235,7 @@ void SuppressDuplicateDrawItem( EDA_LibComponentStruct* LibEntry )
|
|||
DEntryRef = LibEntry->m_Drawings;
|
||||
while( DEntryRef )
|
||||
{
|
||||
if( DEntryRef->Pnext == NULL )
|
||||
if( DEntryRef->Next() == NULL )
|
||||
return;
|
||||
DEntryCompare = DEntryRef->Next();
|
||||
if( DEntryCompare == NULL )
|
||||
|
|
|
@ -59,7 +59,7 @@ TRACK* WinEDA_GerberFrame::Delete_Segment( wxDC* DC, TRACK* Track )
|
|||
{
|
||||
// modification du trace
|
||||
Track = g_CurrentTrackSegment;
|
||||
g_CurrentTrackSegment = (TRACK*) g_CurrentTrackSegment->Pback;
|
||||
g_CurrentTrackSegment = g_CurrentTrackSegment->Back();
|
||||
|
||||
delete Track;
|
||||
|
||||
|
@ -68,12 +68,12 @@ TRACK* WinEDA_GerberFrame::Delete_Segment( wxDC* DC, TRACK* Track )
|
|||
if( g_TrackSegmentCount && (g_CurrentTrackSegment->Type() == TYPEVIA) )
|
||||
{
|
||||
Track = g_CurrentTrackSegment;
|
||||
g_CurrentTrackSegment = (TRACK*) g_CurrentTrackSegment->Pback;
|
||||
g_CurrentTrackSegment = g_CurrentTrackSegment->Back();
|
||||
delete Track;
|
||||
g_TrackSegmentCount--;
|
||||
}
|
||||
if( g_CurrentTrackSegment )
|
||||
g_CurrentTrackSegment->Pnext = NULL;
|
||||
g_CurrentTrackSegment->SetNext( NULL );
|
||||
|
||||
Affiche_Status_Box();
|
||||
|
||||
|
|
|
@ -161,7 +161,7 @@ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* aFile,
|
|||
drawitem->m_Start = track->m_Start;
|
||||
drawitem->m_End = track->m_End;
|
||||
drawitem->m_Width = track->m_Width;
|
||||
drawitem->Pnext = pcb->m_Drawings;
|
||||
drawitem->SetNext( pcb->m_Drawings );
|
||||
pcb->m_Drawings = drawitem;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -34,7 +34,7 @@ TRACK * pt_piste;
|
|||
|
||||
/* trace des pistes */
|
||||
pt_piste = Pcb->m_Track;
|
||||
for ( ; pt_piste != NULL ; pt_piste = (TRACK*) pt_piste->Pnext )
|
||||
for( ; pt_piste != NULL ; pt_piste = pt_piste->Next() )
|
||||
{
|
||||
// if( (printmasklayer & ReturnMaskLayer(pt_piste) ) == 0 ) continue;
|
||||
Trace_Segment(NULL, DC, pt_piste, drawmode);
|
||||
|
|
|
@ -59,7 +59,7 @@ BOARD_ITEM* WinEDA_GerberFrame::Locate( int typeloc )
|
|||
Track = TrackLocate;
|
||||
if( TrackLocate->Type() == TYPEVIA )
|
||||
break;
|
||||
TrackLocate = (TRACK*) TrackLocate->Pnext;
|
||||
TrackLocate = TrackLocate->Next();
|
||||
}
|
||||
|
||||
Track->Display_Infos( this );
|
||||
|
@ -185,7 +185,7 @@ TRACK* Locate_Pistes( TRACK* start_adresse, wxPoint ref, int Layer )
|
|||
TRACK* Track; /* pointeur sur les pistes */
|
||||
int l_piste; /* demi-largeur de la piste */
|
||||
|
||||
for( Track = start_adresse; Track != NULL; Track = (TRACK*) Track->Pnext )
|
||||
for( Track = start_adresse; Track != NULL; Track = Track->Next() )
|
||||
{
|
||||
if( Track->GetState( BUSY | DELETED ) )
|
||||
continue;
|
||||
|
@ -249,7 +249,7 @@ TRACK* Locate_Zone( TRACK* start_adresse, wxPoint ref, int layer )
|
|||
TRACK* Zone; /* pointeur sur les pistes */
|
||||
int l_segm; /* demi-largeur de la piste */
|
||||
|
||||
for( Zone = start_adresse; Zone != NULL; Zone = (TRACK*) Zone->Pnext )
|
||||
for( Zone = start_adresse; Zone != NULL; Zone = Zone->Next() )
|
||||
{
|
||||
/* calcul des coordonnees du segment teste */
|
||||
l_segm = Zone->m_Width >> 1; /* l_piste = demi largeur piste */
|
||||
|
@ -287,7 +287,7 @@ TEXTE_PCB* Locate_Texte_Pcb( TEXTE_PCB* pt_txt_pcb, int typeloc )
|
|||
|
||||
SET_REF_POS( ref );
|
||||
PtStruct = (EDA_BaseStruct*) pt_txt_pcb;
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext )
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Next() )
|
||||
{
|
||||
if( PtStruct->Type() != TYPETEXTE )
|
||||
continue;
|
||||
|
|
|
@ -817,8 +817,8 @@ bool GERBER::Execute_DCODE_Command( WinEDA_GerberFrame* frame, wxDC* DC,
|
|||
|
||||
last = (SEGZONE*) frame->m_Pcb->m_Zone;
|
||||
if( last )
|
||||
while( last->Pnext )
|
||||
last = (SEGZONE*) last->Pnext;
|
||||
while( last->Next() )
|
||||
last = (SEGZONE*) last->Next();
|
||||
|
||||
edge_poly->Insert( frame->m_Pcb, last );
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ void Draw_Track_Buffer( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb, int draw_
|
|||
dcode_hightlight = gerber->m_Selected_Tool;
|
||||
|
||||
Track = Pcb->m_Track;
|
||||
for( ; Track != NULL; Track = (TRACK*) Track->Pnext )
|
||||
for( ; Track != NULL; Track = Track->Next() )
|
||||
{
|
||||
if( printmasklayer != -1 )
|
||||
if( (Track->ReturnMaskLayer() & printmasklayer) == 0 )
|
||||
|
@ -226,7 +226,7 @@ void Affiche_DCodes_Pistes( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb, int d
|
|||
|
||||
GRSetDrawMode( DC, drawmode );
|
||||
track = Pcb->m_Track;
|
||||
for( ; track != NULL; track = (TRACK*) track->Pnext )
|
||||
for( ; track != NULL; track = track->Next() )
|
||||
{
|
||||
if( (track->m_Shape == S_ARC)
|
||||
|| (track->m_Shape == S_CIRCLE)
|
||||
|
|
|
@ -101,8 +101,11 @@ BOARD_ITEM* SaveItemEfface( BOARD_ITEM* PtItem, int nbitems )
|
|||
PtStruct->SetState( DELETED, ON );
|
||||
if( nbitems <= 1 )
|
||||
NextS = NULL; /* fin de chaine */
|
||||
PtStruct->Pnext = NextS;
|
||||
PtStruct->Pback = Back; Back = PtStruct;
|
||||
|
||||
PtStruct->SetNext( NextS );
|
||||
PtStruct->SetBack( Back );
|
||||
Back = PtStruct;
|
||||
|
||||
if( NextS == NULL )
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -92,6 +92,7 @@ class WinEDA_DrawFrame;
|
|||
class BOARD;
|
||||
class EDA_Rect;
|
||||
|
||||
|
||||
/**
|
||||
* Class INSPECTOR
|
||||
* is an abstract class that is used to inspect and possibly collect the
|
||||
|
@ -209,9 +210,11 @@ public:
|
|||
/* Basic Classes : used classes are derived from them */
|
||||
/******************************************************/
|
||||
|
||||
/** class EDA_BaseStruct
|
||||
* Basic class, not directly used.
|
||||
* All the kicad classes used to describe a shematic or a board item are derived from.
|
||||
class DHEAD;
|
||||
|
||||
/**
|
||||
* Class EDA_BaseStruct
|
||||
* is a base class for most all the kicad significant classes, used in schematics and boards.
|
||||
*/
|
||||
class EDA_BaseStruct
|
||||
{
|
||||
|
@ -223,13 +226,15 @@ private:
|
|||
*/
|
||||
KICAD_T m_StructType;
|
||||
|
||||
public:
|
||||
protected:
|
||||
EDA_BaseStruct* Pnext; /* Linked list: Link (next struct) */
|
||||
EDA_BaseStruct* Pback; /* Linked list: Link (previous struct) */
|
||||
EDA_BaseStruct* m_Parent; /* Linked list: Link (parent struct) */
|
||||
EDA_BaseStruct* m_Son; /* Linked list: Link (son struct) */
|
||||
EDA_BaseStruct* m_Image; /* Link to an image copy for undelete or abort command */
|
||||
DHEAD* m_List; ///< which DLIST I am on.
|
||||
|
||||
|
||||
public:
|
||||
int m_Flags; // flags for editing and other misc. uses
|
||||
#define IS_CHANGED (1 << 0)
|
||||
#define IS_LINKED (1 << 1)
|
||||
|
@ -248,6 +253,10 @@ public:
|
|||
#define CANDIDATE (1 << 14) ///< flag indiquant que la structure est connectee
|
||||
#define SKIP_STRUCT (1 << 15) ///< flag indiquant que la structure ne doit pas etre traitee
|
||||
#define DO_NOT_DRAW (1 << 16) ///< Used to disable draw function
|
||||
#define DRAW_ERASED (1 << 17) ///< draw in background color, used by classs TRACK in gerbview
|
||||
|
||||
|
||||
EDA_BaseStruct* m_Image; /* Link to an image copy for undelete or abort command */
|
||||
|
||||
unsigned long m_TimeStamp; // Time stamp used for logical links
|
||||
int m_Selected; /* Used by block commands, and selective editing */
|
||||
|
@ -276,8 +285,15 @@ public:
|
|||
|
||||
EDA_BaseStruct* Next() const { return (EDA_BaseStruct*) Pnext; }
|
||||
EDA_BaseStruct* Back() const { return (EDA_BaseStruct*) Pback; }
|
||||
EDA_BaseStruct* GetParent() const { return (EDA_BaseStruct*) m_Parent; }
|
||||
EDA_BaseStruct* GetParent() const { return m_Parent; }
|
||||
EDA_BaseStruct* GetSon() const { return m_Son; }
|
||||
DHEAD* GetList() const { return m_List; }
|
||||
|
||||
void SetNext( EDA_BaseStruct* aNext ) { Pnext = aNext; }
|
||||
void SetBack( EDA_BaseStruct* aBack ) { Pback = aBack; }
|
||||
void SetParent( EDA_BaseStruct* aParent ) { m_Parent = aParent; }
|
||||
void SetSon( EDA_BaseStruct* aSon ) { m_Son = aSon; }
|
||||
void SetList( DHEAD* aList ) { m_List = aList; }
|
||||
|
||||
/* Gestion de l'etat (status) de la structure (active, deleted..) */
|
||||
|
||||
|
|
|
@ -187,10 +187,14 @@ class BOARD_CONNECTED_ITEM: public BOARD_ITEM
|
|||
{
|
||||
protected:
|
||||
int m_NetCode; // Net number
|
||||
|
||||
int m_Subnet; /* In rastnest routines : for the current net,
|
||||
* block number (number common to the current connected items found) */
|
||||
* block number (number common to the current connected items found)
|
||||
*/
|
||||
|
||||
int m_ZoneSubnet; // variable used in rastnest computations : for the current net,
|
||||
// handle block number in zone connection
|
||||
|
||||
public:
|
||||
BOARD_CONNECTED_ITEM( BOARD_ITEM* StructFather, KICAD_T idtype );
|
||||
BOARD_CONNECTED_ITEM( const BOARD_CONNECTED_ITEM& src );
|
||||
|
|
|
@ -40,7 +40,7 @@ protected:
|
|||
EDA_BaseStruct* first; ///< first element in list, or NULL if list empty
|
||||
EDA_BaseStruct* last; ///< last elment in list, or NULL if empty
|
||||
unsigned count; ///< how many elements are in the list
|
||||
bool meOwner; ///< I must delete the objects in my destructor
|
||||
bool meOwner; ///< I must delete the objects I hold in my destructor
|
||||
|
||||
/**
|
||||
* Constructor DHEAD
|
||||
|
@ -113,6 +113,7 @@ public:
|
|||
* is the head of a doubly linked list. It contains pointers to the first
|
||||
* and last elements in a doubly linked list. The elements in the list must
|
||||
* be of class T or derived from T, and T must be derived from EDA_BaseStruct.
|
||||
* @see DHEAD for additional public functions.
|
||||
*/
|
||||
template <class T>
|
||||
class DLIST : public DHEAD
|
||||
|
|
|
@ -269,6 +269,10 @@ public:
|
|||
BASE_SCREEN( int idscreen, KICAD_T aType = SCREEN_STRUCT_TYPE );
|
||||
~BASE_SCREEN();
|
||||
|
||||
BASE_SCREEN* Next() const { return (BASE_SCREEN*) Pnext; }
|
||||
BASE_SCREEN* Back() const { return (BASE_SCREEN*) Pback; }
|
||||
|
||||
|
||||
/**
|
||||
* Function setCurItem
|
||||
* sets the currently selected object, m_CurrentItem.
|
||||
|
|
|
@ -49,10 +49,18 @@ class WinEDA_SchematicFrame : public WinEDA_DrawFrame
|
|||
{
|
||||
public:
|
||||
WinEDAChoiceBox* m_SelPartBox;
|
||||
DrawSheetPath* m_CurrentSheet; //which sheet we are presently working on.
|
||||
DrawSheetPath* m_CurrentSheet; ///< which sheet we are presently working on.
|
||||
int m_Multiflag;
|
||||
wxPoint m_OldPos;
|
||||
|
||||
|
||||
private:
|
||||
wxMenu* m_FilesMenu;
|
||||
|
||||
SCH_CMP_FIELD* m_CurrentField;
|
||||
int m_TextFieldSize;
|
||||
|
||||
|
||||
public:
|
||||
WinEDA_SchematicFrame( wxWindow* father, WinEDA_App* parent,
|
||||
const wxString& title,
|
||||
|
@ -81,6 +89,13 @@ public:
|
|||
int hotkey,
|
||||
EDA_BaseStruct* DrawStruct );
|
||||
|
||||
SCH_CMP_FIELD* GetCurrentField() { return m_CurrentField; }
|
||||
|
||||
void SetCurrentField( SCH_CMP_FIELD* aCurrentField )
|
||||
{
|
||||
m_CurrentField = aCurrentField;
|
||||
}
|
||||
|
||||
DrawSheetPath* GetSheet();
|
||||
|
||||
SCH_SCREEN* GetScreen() const;
|
||||
|
@ -105,8 +120,9 @@ public:
|
|||
bool
|
||||
IncludePin );
|
||||
|
||||
/** function FillFootprintFieldForAllInstancesofComponent
|
||||
* Search for component "aReference", and place a Footprint in Footprint field
|
||||
/**
|
||||
* Function FillFootprintFieldForAllInstancesofComponent
|
||||
* searches for component "aReference", and places a Footprint in Footprint field
|
||||
* @param aReference = reference of the component to initialise
|
||||
* @param aFootPrint = new value for the filed Fottprint component
|
||||
* @param aSetVisible = true to have the field visible, false to set the invisible flag
|
||||
|
@ -119,6 +135,7 @@ public:
|
|||
bool FillFootprintFieldForAllInstancesofComponent( const wxString& aReference,
|
||||
const wxString& aFootPrint,
|
||||
bool aSetVisible );
|
||||
|
||||
SCH_ITEM* FindComponentAndItem( const wxString& component_reference,
|
||||
bool Find_in_hierarchy,
|
||||
int SearchType,
|
||||
|
@ -131,7 +148,9 @@ public:
|
|||
|
||||
/* netlist generation */
|
||||
void* BuildNetListBase();
|
||||
/** Function DeleteAnnotation
|
||||
|
||||
/**
|
||||
* Function DeleteAnnotation
|
||||
* Remove current component annotations
|
||||
* @param aCurrentSheetOnly : if false: remove all annotations, else remove annotation relative to the current sheet only
|
||||
* @param aRedraw : true to refresh display
|
||||
|
@ -142,7 +161,8 @@ public:
|
|||
void InstallPreviousSheet();
|
||||
void InstallNextScreen( DrawSheetStruct* Sheet );
|
||||
|
||||
/** Function SetSheetNumberAndCount
|
||||
/**
|
||||
* Function SetSheetNumberAndCount
|
||||
* Set the m_ScreenNumber and m_NumberOfScreen members for screens
|
||||
* must be called after a delete or add sheet command, and when entering a sheet
|
||||
*/
|
||||
|
|
|
@ -40,9 +40,9 @@ void Affiche_Infos_Equipot( int netcode, WinEDA_BasePcbFrame* frame )
|
|||
Affiche_1_Parametre( frame, 30, _( "Net Code" ), txt, RED );
|
||||
|
||||
for( ii = 0, module = frame->m_Pcb->m_Modules; module != 0;
|
||||
module = (MODULE*) module->Pnext )
|
||||
module = module->Next() )
|
||||
{
|
||||
for( pad = module->m_Pads; pad != 0; pad = (D_PAD*) pad->Pnext )
|
||||
for( pad = module->m_Pads; pad != 0; pad = pad->Next() )
|
||||
{
|
||||
if( pad->GetNet() == netcode )
|
||||
ii++;
|
||||
|
@ -52,7 +52,7 @@ void Affiche_Infos_Equipot( int netcode, WinEDA_BasePcbFrame* frame )
|
|||
txt.Printf( wxT( "%d" ), ii );
|
||||
Affiche_1_Parametre( frame, 40, _( "Pads" ), txt, DARKGREEN );
|
||||
|
||||
for( ii = 0, Struct = frame->m_Pcb->m_Track; Struct != NULL; Struct = Struct->Pnext )
|
||||
for( ii = 0, Struct = frame->m_Pcb->m_Track; Struct != NULL; Struct = Struct->Next() )
|
||||
{
|
||||
ii++;
|
||||
if( Struct->Type() == TYPEVIA )
|
||||
|
|
|
@ -51,7 +51,7 @@ void WinEDA_PcbFrame::Attribut_Track( TRACK* track, wxDC* DC, bool Flag_On )
|
|||
{
|
||||
Track->SetState( SEGM_FIXE, Flag_On );
|
||||
Track->SetState( BUSY, OFF );
|
||||
Track = (TRACK*) Track->Pnext;
|
||||
Track = Track->Next();
|
||||
}
|
||||
|
||||
DrawPanel->CursorOn( DC ); // Display cursor shape
|
||||
|
@ -74,7 +74,7 @@ void WinEDA_PcbFrame::Attribut_net( wxDC* DC, int net_code, bool Flag_On )
|
|||
/* search the first segment for the selected net_code */
|
||||
if( net_code >= 0 )
|
||||
{
|
||||
for( ; Track != NULL; Track = (TRACK*) Track->Pnext )
|
||||
for( ; Track != NULL; Track = Track->Next() )
|
||||
{
|
||||
if( net_code == Track->GetNet() )
|
||||
break;
|
||||
|
|
|
@ -223,7 +223,7 @@ void WinEDA_PcbFrame::AutoMoveModulesOnPcb( wxDC* DC, bool PlaceModulesHorsPcb )
|
|||
}
|
||||
|
||||
Module = m_Pcb->m_Modules;
|
||||
for( ; Module != NULL; Module = (MODULE*) Module->Pnext ) // remise a jour du rect d'encadrement
|
||||
for( ; Module != NULL; Module = Module->Next() ) // remise a jour du rect d'encadrement
|
||||
{
|
||||
Module->Set_Rectangle_Encadrement();
|
||||
Module->SetRectangleExinscrit();
|
||||
|
@ -315,7 +315,7 @@ void WinEDA_PcbFrame::FixeModule( MODULE* Module, bool Fixe )
|
|||
else
|
||||
{
|
||||
Module = m_Pcb->m_Modules;
|
||||
for( ; Module != NULL; Module = (MODULE*) Module->Pnext )
|
||||
for( ; Module != NULL; Module = Module->Next() )
|
||||
{
|
||||
if( WildCompareString( ModulesMaskSelection, Module->m_Reference->m_Text ) )
|
||||
{
|
||||
|
@ -346,7 +346,7 @@ MODULE** GenListeModules( BOARD* Pcb, int* NbModules )
|
|||
* peut deplacer */
|
||||
Module = Pcb->m_Modules;
|
||||
NbMod = 0;
|
||||
for( ; Module != NULL; Module = (MODULE*) Module->Pnext )
|
||||
for( ; Module != NULL; Module = Module->Next() )
|
||||
NbMod++;
|
||||
|
||||
ListeMod = (MODULE**) MyZMalloc( (NbMod + 1) * sizeof(MODULE *) );
|
||||
|
@ -359,7 +359,7 @@ MODULE** GenListeModules( BOARD* Pcb, int* NbModules )
|
|||
|
||||
PtList = ListeMod;
|
||||
Module = Pcb->m_Modules;
|
||||
for( ; Module != NULL; Module = (MODULE*) Module->Pnext )
|
||||
for( ; Module != NULL; Module = Module->Next() )
|
||||
{
|
||||
*PtList = Module; PtList++;
|
||||
Module->SetRectangleExinscrit();
|
||||
|
|
|
@ -127,7 +127,7 @@ void WinEDA_PcbFrame::AutoPlaceModule( MODULE* Module, int place_mode, wxDC* DC
|
|||
|
||||
/* Compute module parmeters used in auto place */
|
||||
Module = m_Pcb->m_Modules;
|
||||
for( ; Module != NULL; Module = (MODULE*) Module->Pnext ) // remise a jour du rect d'encadrement
|
||||
for( ; Module != NULL; Module = Module->Next() ) // remise a jour du rect d'encadrement
|
||||
{
|
||||
Module->Set_Rectangle_Encadrement();
|
||||
Module->SetRectangleExinscrit();
|
||||
|
@ -143,7 +143,7 @@ void WinEDA_PcbFrame::AutoPlaceModule( MODULE* Module, int place_mode, wxDC* DC
|
|||
|
||||
/* Placement des modules fixes sur le plan de placement */
|
||||
Module = m_Pcb->m_Modules;
|
||||
for( ; Module != NULL; Module = (MODULE*) Module->Pnext )
|
||||
for( ; Module != NULL; Module = Module->Next() )
|
||||
{
|
||||
Module->m_ModuleStatus &= ~MODULE_to_PLACE;
|
||||
|
||||
|
@ -306,7 +306,7 @@ end_of_tst:
|
|||
g_GridRoutingSize = OldPasRoute;
|
||||
|
||||
Module = m_Pcb->m_Modules;
|
||||
for( ; Module != NULL; Module = (MODULE*) Module->Pnext )
|
||||
for( ; Module != NULL; Module = Module->Next() )
|
||||
{
|
||||
Module->Set_Rectangle_Encadrement();
|
||||
}
|
||||
|
@ -452,7 +452,7 @@ int WinEDA_PcbFrame::GenPlaceBoard()
|
|||
TmpSegm.SetLayer( -1 );
|
||||
TmpSegm.SetNet( -1 );
|
||||
TmpSegm.m_Width = g_GridRoutingSize / 2;
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext )
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Next() )
|
||||
{
|
||||
DRAWSEGMENT* DrawSegm;
|
||||
|
||||
|
@ -548,7 +548,7 @@ void WinEDA_PcbFrame::GenModuleOnBoard( MODULE* Module )
|
|||
/* Trace des pads et leur surface de securite */
|
||||
marge = g_DesignSettings.m_TrackClearence + g_DesignSettings.m_CurrentTrackWidth;
|
||||
|
||||
for( Pad = Module->m_Pads; Pad != NULL; Pad = (D_PAD*) Pad->Pnext )
|
||||
for( Pad = Module->m_Pads; Pad != NULL; Pad = Pad->Next() )
|
||||
{
|
||||
Place_1_Pad_Board( m_Pcb, Pad, CELL_is_MODULE, marge, WRITE_OR_CELL );
|
||||
}
|
||||
|
@ -619,7 +619,7 @@ int WinEDA_PcbFrame::RecherchePlacementModule( MODULE* Module, wxDC* DC )
|
|||
if( Module->GetLayer() == COPPER_LAYER_N )
|
||||
masque_otherlayer = CMP_LAYER;
|
||||
|
||||
for( Pad = Module->m_Pads; Pad != NULL; Pad = (D_PAD*) Pad->Pnext )
|
||||
for( Pad = Module->m_Pads; Pad != NULL; Pad = Pad->Next() )
|
||||
{
|
||||
if( (Pad->m_Masque_Layer & masque_otherlayer) == 0 )
|
||||
continue;
|
||||
|
@ -949,12 +949,12 @@ void Build_PlacedPads_List( BOARD* Pcb )
|
|||
|
||||
/* Calcul du nombre de pads utiles */
|
||||
Module = Pcb->m_Modules;
|
||||
for( ; Module != NULL; Module = (MODULE*) Module->Pnext )
|
||||
for( ; Module != NULL; Module = Module->Next() )
|
||||
{
|
||||
if( Module->m_ModuleStatus & MODULE_to_PLACE )
|
||||
continue;
|
||||
PtPad = (D_PAD*) Module->m_Pads;
|
||||
for( ; PtPad != NULL; PtPad = (D_PAD*) PtPad->Pnext )
|
||||
for( ; PtPad != NULL; PtPad = PtPad->Next() )
|
||||
{
|
||||
Pcb->m_NbPads++;
|
||||
}
|
||||
|
@ -969,17 +969,17 @@ void Build_PlacedPads_List( BOARD* Pcb )
|
|||
|
||||
/* Initialisation du buffer et des variables de travail */
|
||||
Module = Pcb->m_Modules;
|
||||
for( ; (Module != NULL) && (pt_liste_pad != NULL); Module = (MODULE*) Module->Pnext )
|
||||
for( ; (Module != NULL) && (pt_liste_pad != NULL); Module = Module->Next() )
|
||||
{
|
||||
if( Module->m_ModuleStatus & MODULE_to_PLACE )
|
||||
continue;
|
||||
PtPad = (D_PAD*) Module->m_Pads;
|
||||
for( ; PtPad != NULL; PtPad = (D_PAD*) PtPad->Pnext )
|
||||
for( ; PtPad != NULL; PtPad = PtPad->Next() )
|
||||
{
|
||||
*pt_liste_pad = PtPad;
|
||||
PtPad->SetSubNet( 0 );
|
||||
PtPad->SetSubRatsnest( 0 );
|
||||
PtPad->m_Parent = Module;
|
||||
PtPad->SetParent( Module );
|
||||
if( PtPad->GetNet() )
|
||||
Pcb->m_NbNodes++;
|
||||
pt_liste_pad++;
|
||||
|
|
|
@ -100,7 +100,7 @@ void WinEDA_PcbFrame::Autoroute( wxDC* DC, int mode )
|
|||
case ROUTE_MODULE:
|
||||
{
|
||||
D_PAD* pt_pad = (D_PAD*) Module->m_Pads;
|
||||
for( ; pt_pad != NULL; pt_pad = (D_PAD*) pt_pad->Pnext )
|
||||
for( ; pt_pad != NULL; pt_pad = pt_pad->Next() )
|
||||
{
|
||||
if( ptmp->pad_start == pt_pad )
|
||||
ptmp->status |= CH_ROUTE_REQ;
|
||||
|
|
|
@ -615,7 +615,7 @@ void WinEDA_BasePcbFrame::Block_Rotate( wxDC* DC )
|
|||
bool Show_Ratsnest_tmp = g_Show_Ratsnest; g_Show_Ratsnest = false;
|
||||
int Angle_Rot_Module = 900;
|
||||
module = m_Pcb->m_Modules;
|
||||
for( ; module != NULL; module = (MODULE*) module->Pnext )
|
||||
for( ; module != NULL; module = module->Next() )
|
||||
{
|
||||
if( ! module->HitTest( GetScreen()->BlockLocate ) )
|
||||
continue;
|
||||
|
@ -684,7 +684,7 @@ void WinEDA_BasePcbFrame::Block_Rotate( wxDC* DC )
|
|||
|
||||
/* Move and rotate the graphic items */
|
||||
PtStruct = m_Pcb->m_Drawings;
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext )
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Next() )
|
||||
{
|
||||
switch( PtStruct->Type() )
|
||||
{
|
||||
|
@ -780,7 +780,7 @@ void WinEDA_BasePcbFrame::Block_Invert( wxDC* DC )
|
|||
{
|
||||
bool Show_Ratsnest_tmp = g_Show_Ratsnest; g_Show_Ratsnest = false;
|
||||
module = m_Pcb->m_Modules;
|
||||
for( ; module != NULL; module = (MODULE*) module->Pnext )
|
||||
for( ; module != NULL; module = module->Next() )
|
||||
{
|
||||
if( ! module->HitTest( GetScreen()->BlockLocate ) )
|
||||
continue;
|
||||
|
@ -823,7 +823,7 @@ void WinEDA_BasePcbFrame::Block_Invert( wxDC* DC )
|
|||
track->SetLayer( ChangeSideNumLayer( track->GetLayer() ) );
|
||||
}
|
||||
}
|
||||
track = (TRACK*) track->Pnext;
|
||||
track = track->Next();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -841,7 +841,7 @@ void WinEDA_BasePcbFrame::Block_Invert( wxDC* DC )
|
|||
INVERT( track->m_End.y );
|
||||
track->SetLayer( ChangeSideNumLayer( track->GetLayer() ) );
|
||||
}
|
||||
track = (TRACK*) track->Pnext;
|
||||
track = track->Next();
|
||||
}
|
||||
for ( int ii = 0; ii < m_Pcb->GetAreaCount(); ii++ )
|
||||
{
|
||||
|
@ -860,7 +860,7 @@ void WinEDA_BasePcbFrame::Block_Invert( wxDC* DC )
|
|||
masque_layer &= ~EDGE_LAYER;
|
||||
|
||||
PtStruct = m_Pcb->m_Drawings;
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext )
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Next() )
|
||||
{
|
||||
switch( PtStruct->Type() )
|
||||
{
|
||||
|
@ -967,7 +967,7 @@ void WinEDA_BasePcbFrame::Block_Move( wxDC* DC )
|
|||
module = m_Pcb->m_Modules;
|
||||
oldpos = GetScreen()->m_Curseur;
|
||||
|
||||
for( ; module != NULL; module = (MODULE*) module->Pnext )
|
||||
for( ; module != NULL; module = module->Next() )
|
||||
{
|
||||
if( ! module->HitTest( GetScreen()->BlockLocate ) )
|
||||
continue;
|
||||
|
@ -995,7 +995,7 @@ void WinEDA_BasePcbFrame::Block_Move( wxDC* DC )
|
|||
track->m_Start += MoveVector;
|
||||
track->m_End += MoveVector;
|
||||
}
|
||||
track = (TRACK*) track->Pnext;
|
||||
track = track->Next();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1011,7 +1011,7 @@ void WinEDA_BasePcbFrame::Block_Move( wxDC* DC )
|
|||
track->m_Start += MoveVector;
|
||||
track->m_End += MoveVector;
|
||||
}
|
||||
track = (TRACK*) track->Pnext;
|
||||
track = track->Next();
|
||||
}
|
||||
for ( int ii = 0; ii < m_Pcb->GetAreaCount(); ii++ )
|
||||
{
|
||||
|
@ -1029,7 +1029,7 @@ void WinEDA_BasePcbFrame::Block_Move( wxDC* DC )
|
|||
masque_layer &= ~EDGE_LAYER;
|
||||
|
||||
PtStruct = m_Pcb->m_Drawings;
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext )
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Next() )
|
||||
{
|
||||
switch( PtStruct->Type() )
|
||||
{
|
||||
|
@ -1123,7 +1123,7 @@ void WinEDA_BasePcbFrame::Block_Duplicate( wxDC* DC )
|
|||
module = m_Pcb->m_Modules;
|
||||
oldpos = GetScreen()->m_Curseur;
|
||||
|
||||
for( ; module != NULL; module = (MODULE*) module->Pnext )
|
||||
for( ; module != NULL; module = module->Next() )
|
||||
{
|
||||
MODULE* new_module;
|
||||
if( ! module->HitTest( GetScreen()->BlockLocate ) )
|
||||
|
@ -1134,9 +1134,9 @@ void WinEDA_BasePcbFrame::Block_Duplicate( wxDC* DC )
|
|||
new_module = new MODULE( m_Pcb );
|
||||
new_module->Copy( module );
|
||||
new_module->m_TimeStamp = GetTimeStamp();
|
||||
new_module->Pnext = m_Pcb->m_Modules;
|
||||
new_module->Pback = m_Pcb;
|
||||
m_Pcb->m_Modules->Pback = new_module;
|
||||
new_module->SetNext( m_Pcb->m_Modules );
|
||||
new_module->SetBack( m_Pcb );
|
||||
m_Pcb->m_Modules->SetBack( new_module );
|
||||
m_Pcb->m_Modules = new_module;
|
||||
GetScreen()->m_Curseur = module->m_Pos + MoveVector;
|
||||
Place_Module( new_module, DC );
|
||||
|
@ -1208,7 +1208,7 @@ void WinEDA_BasePcbFrame::Block_Duplicate( wxDC* DC )
|
|||
masque_layer &= ~EDGE_LAYER;
|
||||
|
||||
PtStruct = m_Pcb->m_Drawings;
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext )
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Next() )
|
||||
{
|
||||
switch( PtStruct->Type() )
|
||||
{
|
||||
|
@ -1225,9 +1225,9 @@ void WinEDA_BasePcbFrame::Block_Duplicate( wxDC* DC )
|
|||
DRAWSEGMENT* new_drawsegment = new DRAWSEGMENT( m_Pcb );
|
||||
new_drawsegment->Copy( STRUCT );
|
||||
|
||||
new_drawsegment->Pnext = m_Pcb->m_Drawings;
|
||||
new_drawsegment->Pback = m_Pcb;
|
||||
m_Pcb->m_Drawings->Pback = new_drawsegment;
|
||||
new_drawsegment->SetNext( m_Pcb->m_Drawings );
|
||||
new_drawsegment->SetBack( m_Pcb );
|
||||
m_Pcb->m_Drawings->SetBack( new_drawsegment );
|
||||
m_Pcb->m_Drawings = new_drawsegment;
|
||||
new_drawsegment->m_Start += MoveVector;
|
||||
new_drawsegment->m_End += MoveVector;
|
||||
|
@ -1246,9 +1246,9 @@ void WinEDA_BasePcbFrame::Block_Duplicate( wxDC* DC )
|
|||
/* le texte est ici bon a etre deplace */
|
||||
TEXTE_PCB* new_pcbtext = new TEXTE_PCB( m_Pcb );
|
||||
new_pcbtext->Copy( STRUCT );
|
||||
new_pcbtext->Pnext = m_Pcb->m_Drawings;
|
||||
new_pcbtext->Pback = m_Pcb;
|
||||
m_Pcb->m_Drawings->Pback = new_pcbtext;
|
||||
new_pcbtext->SetNext( m_Pcb->m_Drawings );
|
||||
new_pcbtext->SetBack( m_Pcb );
|
||||
m_Pcb->m_Drawings->SetBack( new_pcbtext );
|
||||
m_Pcb->m_Drawings = new_pcbtext;
|
||||
/* Redessin du Texte */
|
||||
new_pcbtext->m_Pos += MoveVector;
|
||||
|
@ -1267,9 +1267,9 @@ void WinEDA_BasePcbFrame::Block_Duplicate( wxDC* DC )
|
|||
/* l'element est ici bon a etre efface */
|
||||
MIREPCB* new_mire = new MIREPCB( m_Pcb );
|
||||
new_mire->Copy( STRUCT );
|
||||
new_mire->Pnext = m_Pcb->m_Drawings;
|
||||
new_mire->Pback = m_Pcb;
|
||||
m_Pcb->m_Drawings->Pback = new_mire;
|
||||
new_mire->SetNext( m_Pcb->m_Drawings );
|
||||
new_mire->SetBack( m_Pcb );
|
||||
m_Pcb->m_Drawings->SetBack( new_mire );
|
||||
m_Pcb->m_Drawings = new_mire;
|
||||
new_mire->m_Pos += MoveVector;
|
||||
new_mire->Draw( DrawPanel, DC, GR_OR );
|
||||
|
@ -1287,9 +1287,9 @@ void WinEDA_BasePcbFrame::Block_Duplicate( wxDC* DC )
|
|||
/* l'element est ici bon a etre copie */
|
||||
COTATION* new_cotation = new COTATION( m_Pcb );
|
||||
new_cotation->Copy( STRUCT );
|
||||
new_cotation->Pnext = m_Pcb->m_Drawings;
|
||||
new_cotation->Pback = m_Pcb;
|
||||
m_Pcb->m_Drawings->Pback = new_cotation;
|
||||
new_cotation->SetNext( m_Pcb->m_Drawings );
|
||||
new_cotation->SetBack( m_Pcb );
|
||||
m_Pcb->m_Drawings->SetBack( new_cotation );
|
||||
m_Pcb->m_Drawings = new_cotation;
|
||||
new_cotation->Move( MoveVector );
|
||||
new_cotation->Draw( DrawPanel, DC, GR_OR );
|
||||
|
|
|
@ -404,9 +404,9 @@ void CopyMarkedItems( MODULE* module, wxPoint offset )
|
|||
D_PAD* NewPad = new D_PAD( module );
|
||||
NewPad->Copy( pad );
|
||||
NewPad->m_Selected = IS_SELECTED;
|
||||
NewPad->Pnext = module->m_Pads;
|
||||
NewPad->Pback = module;
|
||||
module->m_Pads->Pback = NewPad;
|
||||
NewPad->SetNext( module->m_Pads );
|
||||
NewPad->SetBack( module );
|
||||
module->m_Pads->SetBack( NewPad );
|
||||
module->m_Pads = NewPad;
|
||||
}
|
||||
|
||||
|
@ -438,9 +438,9 @@ void CopyMarkedItems( MODULE* module, wxPoint offset )
|
|||
if( NewStruct == NULL )
|
||||
break;
|
||||
NewStruct->m_Selected = IS_SELECTED;
|
||||
NewStruct->Pnext = module->m_Drawings;
|
||||
NewStruct->Pback = module;
|
||||
module->m_Drawings->Pback = module;
|
||||
NewStruct->SetNext( module->m_Drawings );
|
||||
NewStruct->SetBack( module );
|
||||
module->m_Drawings->SetBack( module );
|
||||
module->m_Drawings = NewStruct;
|
||||
}
|
||||
|
||||
|
|
|
@ -312,7 +312,7 @@ void PlaceCells( BOARD* Pcb, int net_code, int flag )
|
|||
|
||||
/* Put tracks and vias on matrix */
|
||||
pt_segm = Pcb->m_Track;
|
||||
for( ; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext )
|
||||
for( ; pt_segm != NULL; pt_segm = pt_segm->Next() )
|
||||
{
|
||||
if( net_code == pt_segm->GetNet() )
|
||||
continue;
|
||||
|
@ -323,7 +323,7 @@ void PlaceCells( BOARD* Pcb, int net_code, int flag )
|
|||
|
||||
/* Put zone filling on matrix */
|
||||
pt_segm = (TRACK*) Pcb->m_Zone;
|
||||
for( ; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext )
|
||||
for( ; pt_segm != NULL; pt_segm = pt_segm->Next() )
|
||||
{
|
||||
if( net_code == pt_segm->GetNet() )
|
||||
continue;
|
||||
|
|
|
@ -217,11 +217,11 @@ wxPoint& BOARD::GetPosition()
|
|||
void BOARD::UnLink()
|
||||
{
|
||||
/* Modification du chainage arriere */
|
||||
if( Pback )
|
||||
if( Back() )
|
||||
{
|
||||
if( Pback->Type() == TYPEPCB )
|
||||
if( Back()->Type() == TYPEPCB )
|
||||
{
|
||||
Pback->Pnext = Pnext;
|
||||
Back()->SetNext( Next() );
|
||||
}
|
||||
else /* Le chainage arriere pointe sur la structure "Pere" */
|
||||
{
|
||||
|
@ -230,10 +230,11 @@ void BOARD::UnLink()
|
|||
}
|
||||
|
||||
/* Modification du chainage avant */
|
||||
if( Pnext )
|
||||
Pnext->Pback = Pback;
|
||||
if( Next() )
|
||||
Next()->SetBack( Back() );
|
||||
|
||||
Pnext = Pback = NULL;
|
||||
SetNext( 0 );
|
||||
SetBack( 0 );
|
||||
}
|
||||
|
||||
|
||||
|
@ -249,13 +250,13 @@ void BOARD::Add( BOARD_ITEM* aBoardItem, int aControl )
|
|||
{
|
||||
// this one uses a vector
|
||||
case TYPEMARKER:
|
||||
aBoardItem->m_Parent = this;
|
||||
aBoardItem->SetParent( this );
|
||||
m_markers.push_back( (MARKER*) aBoardItem );
|
||||
break;
|
||||
|
||||
// this one uses a vector
|
||||
case TYPEZONE_CONTAINER:
|
||||
aBoardItem->m_Parent = this;
|
||||
aBoardItem->SetParent( this );
|
||||
m_ZoneDescriptorList.push_back( (ZONE_CONTAINER*) aBoardItem );
|
||||
break;
|
||||
|
||||
|
@ -270,11 +271,11 @@ void BOARD::Add( BOARD_ITEM* aBoardItem, int aControl )
|
|||
case TYPEMODULE:
|
||||
// this is an insert, not an append which may also be needed.
|
||||
{
|
||||
aBoardItem->Pback = this;
|
||||
aBoardItem->SetBack( this );
|
||||
BOARD_ITEM* next = m_Modules;
|
||||
aBoardItem->Pnext = next;
|
||||
aBoardItem->SetNext( next );
|
||||
if( next )
|
||||
next->Pback = aBoardItem;
|
||||
next->SetBack( aBoardItem );
|
||||
m_Modules = (MODULE*) aBoardItem;
|
||||
}
|
||||
break;
|
||||
|
@ -408,17 +409,16 @@ bool BOARD::ComputeBoundaryBox()
|
|||
*/
|
||||
{
|
||||
int rayon, cx, cy, d, xmin, ymin, xmax, ymax;
|
||||
bool Has_Items = FALSE;
|
||||
bool hasItems = FALSE;
|
||||
EDA_BaseStruct* PtStruct;
|
||||
DRAWSEGMENT* ptr;
|
||||
TRACK* Track;
|
||||
|
||||
xmin = ymin = 0x7FFFFFFFl;
|
||||
xmax = ymax = -0x7FFFFFFFl;
|
||||
|
||||
/* Analyse PCB edges*/
|
||||
PtStruct = m_Drawings;
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext )
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Next() )
|
||||
{
|
||||
if( PtStruct->Type() != TYPEDRAWSEGMENT )
|
||||
continue;
|
||||
|
@ -435,7 +435,7 @@ bool BOARD::ComputeBoundaryBox()
|
|||
ymin = MIN( ymin, cy - rayon );
|
||||
xmax = MAX( xmax, cx + rayon );
|
||||
ymax = MAX( ymax, cy + rayon );
|
||||
Has_Items = TRUE;
|
||||
hasItems = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -447,22 +447,22 @@ bool BOARD::ComputeBoundaryBox()
|
|||
cy = MAX( ptr->m_Start.y, ptr->m_End.y );
|
||||
xmax = MAX( xmax, cx + d );
|
||||
ymax = MAX( ymax, cy + d );
|
||||
Has_Items = TRUE;
|
||||
hasItems = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
/* Analyse footprints */
|
||||
MODULE* module = m_Modules;
|
||||
for( ; module != NULL; module = (MODULE*) module->Pnext )
|
||||
|
||||
for( MODULE* module = m_Modules; module; module = module->Next() )
|
||||
{
|
||||
Has_Items = TRUE;
|
||||
hasItems = TRUE;
|
||||
xmin = MIN( xmin, ( module->m_Pos.x + module->m_BoundaryBox.GetX() ) );
|
||||
ymin = MIN( ymin, ( module->m_Pos.y + module->m_BoundaryBox.GetY() ) );
|
||||
xmax = MAX( xmax, module->m_Pos.x + module->m_BoundaryBox.GetRight() );
|
||||
ymax = MAX( ymax, module->m_Pos.y + module->m_BoundaryBox.GetBottom() );
|
||||
|
||||
D_PAD* pt_pad = module->m_Pads;
|
||||
for( ; pt_pad != NULL; pt_pad = (D_PAD*) pt_pad->Pnext )
|
||||
|
||||
for( D_PAD* pt_pad = module->m_Pads; pt_pad; pt_pad = pt_pad->Next() )
|
||||
{
|
||||
const wxPoint& pos = pt_pad->GetPosition();
|
||||
|
||||
|
@ -475,35 +475,35 @@ bool BOARD::ComputeBoundaryBox()
|
|||
}
|
||||
|
||||
/* Analyse track and zones */
|
||||
for( Track = m_Track; Track != NULL; Track = (TRACK*) Track->Pnext )
|
||||
for( TRACK* track = m_Track; track; track = track->Next() )
|
||||
{
|
||||
d = (Track->m_Width / 2) + 1;
|
||||
cx = MIN( Track->m_Start.x, Track->m_End.x );
|
||||
cy = MIN( Track->m_Start.y, Track->m_End.y );
|
||||
d = (track->m_Width / 2) + 1;
|
||||
cx = MIN( track->m_Start.x, track->m_End.x );
|
||||
cy = MIN( track->m_Start.y, track->m_End.y );
|
||||
xmin = MIN( xmin, cx - d );
|
||||
ymin = MIN( ymin, cy - d );
|
||||
cx = MAX( Track->m_Start.x, Track->m_End.x );
|
||||
cy = MAX( Track->m_Start.y, Track->m_End.y );
|
||||
cx = MAX( track->m_Start.x, track->m_End.x );
|
||||
cy = MAX( track->m_Start.y, track->m_End.y );
|
||||
xmax = MAX( xmax, cx + d );
|
||||
ymax = MAX( ymax, cy + d );
|
||||
Has_Items = TRUE;
|
||||
hasItems = TRUE;
|
||||
}
|
||||
|
||||
for( Track = m_Zone; Track != NULL; Track = (TRACK*) Track->Pnext )
|
||||
for( TRACK* track = m_Zone; track; track = track->Next() )
|
||||
{
|
||||
d = (Track->m_Width / 2) + 1;
|
||||
cx = MIN( Track->m_Start.x, Track->m_End.x );
|
||||
cy = MIN( Track->m_Start.y, Track->m_End.y );
|
||||
d = (track->m_Width / 2) + 1;
|
||||
cx = MIN( track->m_Start.x, track->m_End.x );
|
||||
cy = MIN( track->m_Start.y, track->m_End.y );
|
||||
xmin = MIN( xmin, cx - d );
|
||||
ymin = MIN( ymin, cy - d );
|
||||
cx = MAX( Track->m_Start.x, Track->m_End.x );
|
||||
cy = MAX( Track->m_Start.y, Track->m_End.y );
|
||||
cx = MAX( track->m_Start.x, track->m_End.x );
|
||||
cy = MAX( track->m_Start.y, track->m_End.y );
|
||||
xmax = MAX( xmax, cx + d );
|
||||
ymax = MAX( ymax, cy + d );
|
||||
Has_Items = TRUE;
|
||||
hasItems = TRUE;
|
||||
}
|
||||
|
||||
if( !Has_Items && m_PcbFrame )
|
||||
if( !hasItems && m_PcbFrame )
|
||||
{
|
||||
if( m_PcbFrame->m_Draw_Sheet_Ref )
|
||||
{
|
||||
|
@ -525,7 +525,7 @@ bool BOARD::ComputeBoundaryBox()
|
|||
m_BoundaryBox.SetWidth( xmax - xmin );
|
||||
m_BoundaryBox.SetHeight( ymax - ymin );
|
||||
|
||||
return Has_Items;
|
||||
return hasItems;
|
||||
}
|
||||
|
||||
|
||||
|
@ -541,8 +541,6 @@ void BOARD::Display_Infos( WinEDA_DrawFrame* frame )
|
|||
#define POS_AFF_NBCONNECT 40
|
||||
#define POS_AFF_NBNOCONNECT 48
|
||||
|
||||
int nb_vias = 0, ii;
|
||||
EDA_BaseStruct* Struct;
|
||||
wxString txt;
|
||||
|
||||
frame->MsgPanel->EraseMsgBox();
|
||||
|
@ -550,10 +548,10 @@ void BOARD::Display_Infos( WinEDA_DrawFrame* frame )
|
|||
txt.Printf( wxT( "%d" ), m_NbPads );
|
||||
Affiche_1_Parametre( frame, POS_AFF_NBPADS, _( "Pads" ), txt, DARKGREEN );
|
||||
|
||||
for( ii = 0, Struct = m_Track; Struct != NULL; Struct = Struct->Pnext )
|
||||
int nb_vias = 0;
|
||||
for( BOARD_ITEM* item = m_Track; item; item = item->Next() )
|
||||
{
|
||||
ii++;
|
||||
if( Struct->Type() == TYPEVIA )
|
||||
if( item->Type() == TYPEVIA )
|
||||
nb_vias++;
|
||||
}
|
||||
|
||||
|
|
|
@ -35,24 +35,23 @@ COTATION::~COTATION()
|
|||
*/
|
||||
void COTATION::UnLink()
|
||||
{
|
||||
/* Modification du chainage arriere */
|
||||
if( Pback )
|
||||
if( Back() )
|
||||
{
|
||||
if( Pback->Type() != TYPEPCB )
|
||||
if( Back()->Type() != TYPEPCB )
|
||||
{
|
||||
Pback->Pnext = Pnext;
|
||||
Back()->SetNext( Next() );
|
||||
}
|
||||
else /* Le chainage arriere pointe sur la structure "Pere" */
|
||||
{
|
||||
( (BOARD*) Pback )->m_Drawings = (BOARD_ITEM*) Pnext;
|
||||
((BOARD*) Back() )->m_Drawings = Next();
|
||||
}
|
||||
}
|
||||
|
||||
/* Modification du chainage avant */
|
||||
if( Pnext )
|
||||
Pnext->Pback = Pback;
|
||||
if( Next() )
|
||||
Next()->SetBack( Back() );
|
||||
|
||||
Pnext = Pback = NULL;
|
||||
SetNext( 0 );
|
||||
SetBack( 0 );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -28,6 +28,9 @@ public:
|
|||
COTATION( BOARD_ITEM* StructFather );
|
||||
~COTATION();
|
||||
|
||||
COTATION* Next() const { return (COTATION*) Pnext; }
|
||||
COTATION* Back() const { return (COTATION*) Pback; }
|
||||
|
||||
wxPoint& GetPosition()
|
||||
{
|
||||
return m_Pos;
|
||||
|
|
|
@ -31,30 +31,25 @@ DRAWSEGMENT:: ~DRAWSEGMENT()
|
|||
|
||||
|
||||
void DRAWSEGMENT::UnLink()
|
||||
|
||||
/**
|
||||
* Function UnLink
|
||||
* remove item from linked list.
|
||||
*/
|
||||
{
|
||||
/* ereas back link */
|
||||
if( Pback )
|
||||
if( Back() )
|
||||
{
|
||||
if( Pback->Type() != TYPEPCB )
|
||||
if( Back()->Type() != TYPEPCB )
|
||||
{
|
||||
Pback->Pnext = Pnext;
|
||||
Back()->SetNext( Next() );
|
||||
}
|
||||
else /* Le chainage arriere pointe sur la structure "Pere" */
|
||||
{
|
||||
( (BOARD*) Pback )->m_Drawings = (BOARD_ITEM*) Pnext;
|
||||
( (BOARD*) Back() )->m_Drawings = Next();
|
||||
}
|
||||
}
|
||||
|
||||
/* erase forward link */
|
||||
if( Pnext )
|
||||
Pnext->Pback = Pback;
|
||||
if( Next() )
|
||||
Next()->SetBack( Back() );
|
||||
|
||||
Pnext = Pback = NULL;
|
||||
SetNext( 0 );
|
||||
SetBack( 0 );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@ public:
|
|||
DRAWSEGMENT( BOARD_ITEM* StructFather, KICAD_T idtype = TYPEDRAWSEGMENT );
|
||||
~DRAWSEGMENT();
|
||||
|
||||
DRAWSEGMENT* Next() const { return (DRAWSEGMENT*) Pnext; }
|
||||
DRAWSEGMENT* Back() const { return (DRAWSEGMENT*) Pback; }
|
||||
|
||||
/**
|
||||
* Function GetPosition
|
||||
|
@ -55,7 +57,10 @@ public:
|
|||
|
||||
bool ReadDrawSegmentDescr( FILE* File, int* LineNum );
|
||||
|
||||
/* remove this from the linked list */
|
||||
/**
|
||||
* Function UnLink
|
||||
* remove item from linked list.
|
||||
*/
|
||||
void UnLink();
|
||||
|
||||
void Copy( DRAWSEGMENT* source );
|
||||
|
|
|
@ -84,23 +84,24 @@ void EDGE_MODULE::UnLink()
|
|||
/********************************/
|
||||
{
|
||||
/* Modification du chainage arriere */
|
||||
if( Pback )
|
||||
if( Back() )
|
||||
{
|
||||
if( Pback->Type() != TYPEMODULE )
|
||||
if( Back()->Type() != TYPEMODULE )
|
||||
{
|
||||
Pback->Pnext = Pnext;
|
||||
Back()->SetNext( Next() );
|
||||
}
|
||||
else /* Le chainage arriere pointe sur la structure "Pere" */
|
||||
{
|
||||
( (MODULE*) Pback )->m_Drawings = (BOARD_ITEM*) Pnext;
|
||||
( (MODULE*) Back() )->m_Drawings = Next();
|
||||
}
|
||||
}
|
||||
|
||||
/* Modification du chainage avant */
|
||||
if( Pnext )
|
||||
Pnext->Pback = Pback;
|
||||
if( Next() )
|
||||
Next()->SetBack( Back() );
|
||||
|
||||
Pnext = Pback = NULL;
|
||||
SetNext( 0 );
|
||||
SetBack( 0 );
|
||||
}
|
||||
|
||||
|
||||
|
@ -275,7 +276,7 @@ void EDGE_MODULE::Display_Infos( WinEDA_DrawFrame* frame )
|
|||
if( !module )
|
||||
return;
|
||||
|
||||
BOARD* board = (BOARD*) module->m_Parent;
|
||||
BOARD* board = (BOARD*) module->GetParent();
|
||||
if( !board )
|
||||
return;
|
||||
|
||||
|
|
|
@ -29,6 +29,14 @@ public:
|
|||
EDGE_MODULE( EDGE_MODULE* edge );
|
||||
~EDGE_MODULE();
|
||||
|
||||
EDGE_MODULE* Next() const { return (EDGE_MODULE*) Pnext; }
|
||||
EDGE_MODULE* Back() const { return (EDGE_MODULE*) Pback; }
|
||||
|
||||
|
||||
/**
|
||||
* Function UnLink
|
||||
* remove item from linked list.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Function GetPosition
|
||||
|
|
|
@ -55,23 +55,24 @@ wxPoint& EQUIPOT::GetPosition()
|
|||
void EQUIPOT::UnLink()
|
||||
{
|
||||
/* Modification du chainage arriere */
|
||||
if( Pback )
|
||||
if( Back() )
|
||||
{
|
||||
if( Pback->Type() != TYPEPCB )
|
||||
if( Back()->Type() != TYPEPCB )
|
||||
{
|
||||
Pback->Pnext = Pnext;
|
||||
Back()->SetNext( Next() );
|
||||
}
|
||||
else /* Le chainage arriere pointe sur la structure "Pere" */
|
||||
{
|
||||
( (BOARD*) Pback )->m_Equipots = (EQUIPOT*) Pnext;
|
||||
( (BOARD*) Back() )->m_Equipots = Next();
|
||||
}
|
||||
}
|
||||
|
||||
/* Modification du chainage avant */
|
||||
if( Pnext )
|
||||
Pnext->Pback = Pback;
|
||||
if( Next() )
|
||||
Next()->SetBack( Back() );
|
||||
|
||||
Pnext = Pback = NULL;
|
||||
SetNext( 0 );
|
||||
SetBack( 0 );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -28,7 +28,8 @@ public:
|
|||
EQUIPOT( BOARD_ITEM* StructFather );
|
||||
~EQUIPOT();
|
||||
|
||||
EQUIPOT* Next() { return (EQUIPOT*) Pnext; }
|
||||
EQUIPOT* Next() const { return (EQUIPOT*) Pnext; }
|
||||
EQUIPOT* Back() const { return (EQUIPOT*) Pback; }
|
||||
|
||||
/**
|
||||
* Function GetPosition
|
||||
|
|
|
@ -25,29 +25,24 @@ MIREPCB::~MIREPCB()
|
|||
/***************************/
|
||||
void MIREPCB::UnLink()
|
||||
/***************************/
|
||||
|
||||
/* supprime du chainage la structure Struct
|
||||
* les structures arrieres et avant sont chainees directement
|
||||
*/
|
||||
{
|
||||
/* Modification du chainage arriere */
|
||||
if( Pback )
|
||||
if( Back() )
|
||||
{
|
||||
if( Pback->Type() != TYPEPCB )
|
||||
if( Back()->Type() != TYPEPCB )
|
||||
{
|
||||
Pback->Pnext = Pnext;
|
||||
Back()->SetNext( Next() );
|
||||
}
|
||||
else /* Le chainage arriere pointe sur la structure "Pere" */
|
||||
{
|
||||
( (BOARD*) Pback )->m_Drawings = (BOARD_ITEM*) Pnext;
|
||||
( (BOARD*) Back() )->m_Drawings = Next();
|
||||
}
|
||||
}
|
||||
|
||||
/* Modification du chainage avant */
|
||||
if( Pnext )
|
||||
Pnext->Pback = Pback;
|
||||
if( Next() )
|
||||
Next()->SetBack( Back() );
|
||||
|
||||
Pnext = Pback = NULL;
|
||||
SetNext( 0 );
|
||||
SetBack( 0 );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -19,6 +19,9 @@ public:
|
|||
MIREPCB( BOARD_ITEM* StructFather );
|
||||
~MIREPCB();
|
||||
|
||||
MIREPCB* Next() const { return (MIREPCB*) Pnext; }
|
||||
MIREPCB* Back() const { return (MIREPCB*) Pnext; }
|
||||
|
||||
wxPoint& GetPosition()
|
||||
{
|
||||
return m_Pos;
|
||||
|
|
|
@ -54,8 +54,6 @@ void MODULE::DrawAncre( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset
|
|||
/*************************************************/
|
||||
/* Class MODULE : description d'un composant pcb */
|
||||
/*************************************************/
|
||||
|
||||
/* Constructeur de la classe MODULE */
|
||||
MODULE::MODULE( BOARD* parent ) :
|
||||
BOARD_ITEM( parent, TYPEMODULE )
|
||||
{
|
||||
|
@ -71,53 +69,51 @@ MODULE::MODULE( BOARD* parent ) :
|
|||
m_Surface = 0;
|
||||
m_Link = 0;
|
||||
m_LastEdit_Time = time( NULL );
|
||||
|
||||
m_Reference = new TEXTE_MODULE( this, TEXT_is_REFERENCE );
|
||||
m_Reference->Pback = this;
|
||||
m_Reference->SetBack( this );
|
||||
|
||||
m_Value = new TEXTE_MODULE( this, TEXT_is_VALUE );
|
||||
m_Value->Pback = this;
|
||||
m_Value->SetBack( this );
|
||||
|
||||
m_3D_Drawings = new Struct3D_Master( this );
|
||||
}
|
||||
|
||||
|
||||
/* Destructeur */
|
||||
MODULE::~MODULE()
|
||||
{
|
||||
D_PAD* Pad;
|
||||
EDA_BaseStruct* Struct, * NextStruct;
|
||||
EDA_BaseStruct* item;
|
||||
EDA_BaseStruct* next;
|
||||
|
||||
delete m_Reference;
|
||||
delete m_Value;
|
||||
for( Struct = m_3D_Drawings; Struct != NULL; Struct = NextStruct )
|
||||
for( item = m_3D_Drawings; item; item = next )
|
||||
{
|
||||
NextStruct = Struct->Pnext;
|
||||
delete Struct;
|
||||
next = item->Next();
|
||||
delete item;
|
||||
}
|
||||
|
||||
/* effacement des pads */
|
||||
for( Pad = m_Pads; Pad != NULL; Pad = (D_PAD*) NextStruct )
|
||||
for( item = m_Pads; item; item = next )
|
||||
{
|
||||
NextStruct = Pad->Pnext;
|
||||
delete Pad;
|
||||
next = item->Next();
|
||||
delete item;
|
||||
}
|
||||
|
||||
/* effacement des elements de trace */
|
||||
for( Struct = m_Drawings; Struct != NULL; Struct = NextStruct )
|
||||
for( item = m_Drawings; item; item = next )
|
||||
{
|
||||
NextStruct = Struct->Pnext;
|
||||
next = item->Next();
|
||||
|
||||
switch( ( Struct->Type() ) )
|
||||
switch( item->Type() )
|
||||
{
|
||||
case TYPEEDGEMODULE:
|
||||
delete (EDGE_MODULE*) Struct;
|
||||
break;
|
||||
|
||||
case TYPETEXTEMODULE:
|
||||
delete (TEXTE_MODULE*) Struct;
|
||||
delete item;
|
||||
break;
|
||||
|
||||
default:
|
||||
DisplayError( NULL, wxT( "Warn: ItemType not handled in delete MODULE" ) );
|
||||
NextStruct = NULL;
|
||||
DisplayError( NULL, wxT( "Warning: Item Type not handled in delete MODULE" ) );
|
||||
next = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -128,7 +124,7 @@ MODULE::~MODULE()
|
|||
void MODULE::Copy( MODULE* Module )
|
||||
/*********************************/
|
||||
{
|
||||
D_PAD* pad, * lastpad;
|
||||
D_PAD* lastpad;
|
||||
|
||||
m_Pos = Module->m_Pos;
|
||||
m_Layer = Module->m_Layer;
|
||||
|
@ -148,28 +144,30 @@ void MODULE::Copy( MODULE* Module )
|
|||
m_Value->Copy( Module->m_Value );
|
||||
|
||||
/* Copie des structures auxiliaires: Pads */
|
||||
lastpad = NULL; pad = Module->m_Pads;
|
||||
for( ; pad != NULL; pad = (D_PAD*) pad->Pnext )
|
||||
lastpad = NULL;
|
||||
|
||||
for( D_PAD* pad = Module->m_Pads; pad; pad = pad->Next() )
|
||||
{
|
||||
D_PAD* newpad = new D_PAD( this );
|
||||
newpad->Copy( pad );
|
||||
|
||||
if( m_Pads == NULL )
|
||||
{
|
||||
newpad->Pback = this;
|
||||
m_Pads = (D_PAD*) newpad;
|
||||
newpad->SetBack( this );
|
||||
m_Pads = newpad;
|
||||
}
|
||||
else
|
||||
{
|
||||
newpad->Pback = lastpad;
|
||||
lastpad->Pnext = newpad;
|
||||
newpad->SetBack( lastpad );
|
||||
lastpad->SetNext( newpad );
|
||||
}
|
||||
lastpad = newpad;
|
||||
}
|
||||
|
||||
/* Copy des structures auxiliaires: Drawings */
|
||||
BOARD_ITEM* OldStruct = Module->m_Drawings;
|
||||
BOARD_ITEM* NewStruct, * LastStruct = NULL;
|
||||
|
||||
BOARD_ITEM* OldStruct = Module->m_Drawings;
|
||||
for( ; OldStruct; OldStruct = OldStruct->Next() )
|
||||
{
|
||||
NewStruct = NULL;
|
||||
|
@ -193,15 +191,16 @@ void MODULE::Copy( MODULE* Module )
|
|||
|
||||
if( NewStruct == NULL )
|
||||
break;
|
||||
|
||||
if( m_Drawings == NULL )
|
||||
{
|
||||
NewStruct->Pback = this;
|
||||
NewStruct->SetBack( this );
|
||||
m_Drawings = NewStruct;
|
||||
}
|
||||
else
|
||||
{
|
||||
NewStruct->Pback = LastStruct;
|
||||
LastStruct->Pnext = NewStruct;
|
||||
NewStruct->SetBack( LastStruct );
|
||||
LastStruct->SetNext( NewStruct );
|
||||
}
|
||||
LastStruct = NewStruct;
|
||||
}
|
||||
|
@ -211,14 +210,14 @@ void MODULE::Copy( MODULE* Module )
|
|||
|
||||
Struct3D_Master* Struct3D, * NewStruct3D, * CurrStruct3D;
|
||||
|
||||
Struct3D = (Struct3D_Master*) Module->m_3D_Drawings->Pnext;
|
||||
Struct3D = Module->m_3D_Drawings->Next();
|
||||
CurrStruct3D = m_3D_Drawings;
|
||||
for( ; Struct3D != NULL; Struct3D = (Struct3D_Master*) Struct3D->Pnext )
|
||||
for( ; Struct3D != NULL; Struct3D = Struct3D->Next() )
|
||||
{
|
||||
NewStruct3D = new Struct3D_Master( this );
|
||||
NewStruct3D->Copy( Struct3D );
|
||||
CurrStruct3D->Pnext = NewStruct3D;
|
||||
NewStruct3D->Pback = CurrStruct3D;
|
||||
CurrStruct3D->SetNext( NewStruct3D );
|
||||
NewStruct3D->SetBack( CurrStruct3D );
|
||||
CurrStruct3D = NewStruct3D;
|
||||
}
|
||||
|
||||
|
@ -233,12 +232,11 @@ void MODULE::Copy( MODULE* Module )
|
|||
*/
|
||||
void MODULE::UnLink()
|
||||
{
|
||||
/* Modification du chainage arriere */
|
||||
if( Pback )
|
||||
if( Back() )
|
||||
{
|
||||
if( Pback->Type() != TYPEPCB )
|
||||
if( Back()->Type() != TYPEPCB )
|
||||
{
|
||||
Pback->Pnext = Pnext;
|
||||
Back()->SetNext( Next() );
|
||||
}
|
||||
else /* Le chainage arriere pointe sur la structure "Pere" */
|
||||
{
|
||||
|
@ -248,18 +246,20 @@ void MODULE::UnLink()
|
|||
g_UnDeleteStack[g_UnDeleteStackPtr - 1] = Next();
|
||||
}
|
||||
else
|
||||
( (BOARD*) Pback )->m_Modules = (MODULE*) Pnext;
|
||||
( (BOARD*) Back() )->m_Modules = Next();
|
||||
}
|
||||
}
|
||||
|
||||
/* Modification du chainage avant */
|
||||
if( Pnext )
|
||||
Pnext->Pback = Pback;
|
||||
if( Next() )
|
||||
Next()->SetBack( Back() );
|
||||
|
||||
Pnext = Pback = NULL;
|
||||
SetNext( 0 );
|
||||
SetBack( 0 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**********************************************************/
|
||||
void MODULE::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||
int draw_mode, const wxPoint& offset )
|
||||
|
@ -276,13 +276,12 @@ void MODULE::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
|||
if( (m_Flags & DO_NOT_DRAW) )
|
||||
return;
|
||||
|
||||
/* Draw pads */
|
||||
D_PAD* pt_pad = m_Pads;
|
||||
for( ; pt_pad != NULL; pt_pad = (D_PAD*) pt_pad->Pnext )
|
||||
for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
|
||||
{
|
||||
if( pt_pad->m_Flags & IS_MOVED )
|
||||
if( pad->m_Flags & IS_MOVED )
|
||||
continue;
|
||||
pt_pad->Draw( panel, DC, draw_mode, offset );
|
||||
|
||||
pad->Draw( panel, DC, draw_mode, offset );
|
||||
}
|
||||
|
||||
// Draws foootprint anchor
|
||||
|
@ -453,7 +452,7 @@ int MODULE::Write_3D_Descr( FILE* File ) const
|
|||
char buf[512];
|
||||
Struct3D_Master* Struct3D = m_3D_Drawings;
|
||||
|
||||
for( ; Struct3D != NULL; Struct3D = (Struct3D_Master*) Struct3D->Pnext )
|
||||
for( ; Struct3D != NULL; Struct3D = Struct3D->Next() )
|
||||
{
|
||||
if( !Struct3D->m_Shape3DName.IsEmpty() )
|
||||
{
|
||||
|
@ -503,11 +502,12 @@ int MODULE::Read_3D_Descr( FILE* File, int* LineNum )
|
|||
if( !Struct3D->m_Shape3DName.IsEmpty() )
|
||||
{
|
||||
Struct3D_Master* NewStruct3D;
|
||||
while( Struct3D->Pnext )
|
||||
Struct3D = (Struct3D_Master*) Struct3D->Pnext;
|
||||
while( Struct3D->Next() )
|
||||
Struct3D = Struct3D->Next();
|
||||
|
||||
Struct3D->Pnext = NewStruct3D = new Struct3D_Master( this );
|
||||
NewStruct3D->Pback = Struct3D;
|
||||
NewStruct3D = new Struct3D_Master( this );
|
||||
Struct3D->SetNext( NewStruct3D );
|
||||
NewStruct3D->SetBack( Struct3D );
|
||||
Struct3D = NewStruct3D;
|
||||
}
|
||||
|
||||
|
@ -590,13 +590,13 @@ int MODULE::ReadDescr( FILE* File, int* LineNum )
|
|||
|
||||
if( LastPad == NULL )
|
||||
{
|
||||
ptpad->Pback = (EDA_BaseStruct*) this;
|
||||
ptpad->SetBack( this );
|
||||
m_Pads = ptpad;
|
||||
}
|
||||
else
|
||||
{
|
||||
ptpad->Pback = (EDA_BaseStruct*) LastPad;
|
||||
LastPad->Pnext = (EDA_BaseStruct*) ptpad;
|
||||
ptpad->SetBack( LastPad );
|
||||
LastPad->SetNext( ptpad );
|
||||
}
|
||||
LastPad = ptpad;
|
||||
continue;
|
||||
|
@ -683,13 +683,13 @@ int MODULE::ReadDescr( FILE* File, int* LineNum )
|
|||
DrawText = new TEXTE_MODULE( this );
|
||||
if( LastModStruct == NULL )
|
||||
{
|
||||
DrawText->Pback = this;
|
||||
DrawText->SetBack( this );
|
||||
m_Drawings = DrawText;
|
||||
}
|
||||
else
|
||||
{
|
||||
DrawText->Pback = LastModStruct;
|
||||
LastModStruct->Pnext = DrawText;
|
||||
DrawText->SetBack( LastModStruct );
|
||||
LastModStruct->SetNext( DrawText );
|
||||
}
|
||||
LastModStruct = DrawText;
|
||||
}
|
||||
|
@ -702,13 +702,13 @@ int MODULE::ReadDescr( FILE* File, int* LineNum )
|
|||
|
||||
if( LastModStruct == NULL )
|
||||
{
|
||||
DrawSegm->Pback = this;
|
||||
DrawSegm->SetBack( this );
|
||||
m_Drawings = DrawSegm;
|
||||
}
|
||||
else
|
||||
{
|
||||
DrawSegm->Pback = LastModStruct;
|
||||
LastModStruct->Pnext = DrawSegm;
|
||||
DrawSegm->SetBack( LastModStruct );
|
||||
LastModStruct->SetNext( DrawSegm );
|
||||
}
|
||||
|
||||
LastModStruct = DrawSegm;
|
||||
|
@ -757,8 +757,7 @@ void MODULE::SetPosition( const wxPoint& newpos )
|
|||
m_Value->m_Pos.y += deltaY;
|
||||
|
||||
/* deplacement des pastilles */
|
||||
D_PAD* pad = m_Pads;
|
||||
for( ; pad != NULL; pad = (D_PAD*) pad->Pnext )
|
||||
for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
|
||||
{
|
||||
pad->m_Pos.x += deltaX;
|
||||
pad->m_Pos.y += deltaY;
|
||||
|
@ -766,7 +765,7 @@ void MODULE::SetPosition( const wxPoint& newpos )
|
|||
|
||||
/* deplacement des dessins de l'empreinte : */
|
||||
EDA_BaseStruct* PtStruct = m_Drawings;
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext )
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Next() )
|
||||
{
|
||||
switch( PtStruct->Type() )
|
||||
{
|
||||
|
@ -809,8 +808,7 @@ void MODULE::SetOrientation( int newangle )
|
|||
NORMALIZE_ANGLE_POS( m_Orient );
|
||||
|
||||
/* deplacement et rotation des pastilles */
|
||||
D_PAD* pad = m_Pads;
|
||||
for( ; pad != NULL; pad = (D_PAD*) pad->Pnext )
|
||||
for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
|
||||
{
|
||||
px = pad->m_Pos0.x;
|
||||
py = pad->m_Pos0.y;
|
||||
|
@ -829,7 +827,7 @@ void MODULE::SetOrientation( int newangle )
|
|||
|
||||
/* deplacement des contours et textes de l'empreinte : */
|
||||
EDA_BaseStruct* PtStruct = m_Drawings;
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext )
|
||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Next() )
|
||||
{
|
||||
if( PtStruct->Type() == TYPEEDGEMODULE )
|
||||
{
|
||||
|
@ -862,25 +860,23 @@ void MODULE::Set_Rectangle_Encadrement()
|
|||
* en coord relatives / position ancre
|
||||
*/
|
||||
{
|
||||
EDGE_MODULE* pt_edge_mod;
|
||||
D_PAD* pad;
|
||||
int width;
|
||||
int cx, cy, uxf, uyf, rayon;
|
||||
int xmax, ymax;
|
||||
|
||||
|
||||
/* Init des pointeurs */
|
||||
pt_edge_mod = (EDGE_MODULE*) m_Drawings;
|
||||
|
||||
/* Init des coord du cadre a une valeur limite non nulle */
|
||||
m_BoundaryBox.m_Pos.x = -500; xmax = 500;
|
||||
m_BoundaryBox.m_Pos.y = -500; ymax = 500;
|
||||
|
||||
/* Contours: Recherche des coord min et max et mise a jour du cadre */
|
||||
for( ; pt_edge_mod != NULL; pt_edge_mod = (EDGE_MODULE*) pt_edge_mod->Pnext )
|
||||
for( EDGE_MODULE* pt_edge_mod = (EDGE_MODULE*) m_Drawings;
|
||||
pt_edge_mod; pt_edge_mod = pt_edge_mod->Next() )
|
||||
{
|
||||
if( pt_edge_mod->Type() != TYPEEDGEMODULE )
|
||||
continue;
|
||||
|
||||
width = pt_edge_mod->m_Width / 2;
|
||||
|
||||
switch( pt_edge_mod->m_Shape )
|
||||
|
@ -913,7 +909,7 @@ void MODULE::Set_Rectangle_Encadrement()
|
|||
}
|
||||
|
||||
/* Pads: Recherche des coord min et max et mise a jour du cadre */
|
||||
for( pad = m_Pads; pad != NULL; pad = (D_PAD*) pad->Pnext )
|
||||
for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
|
||||
{
|
||||
rayon = pad->m_Rayon;
|
||||
cx = pad->m_Pos0.x; cy = pad->m_Pos0.y;
|
||||
|
@ -940,8 +936,6 @@ void MODULE::SetRectangleExinscrit()
|
|||
* Met egalement a jour la surface (.m_Surface) du module.
|
||||
*/
|
||||
{
|
||||
EDGE_MODULE* EdgeMod;
|
||||
D_PAD* Pad;
|
||||
int width;
|
||||
int cx, cy, uxf, uyf, rayon;
|
||||
int xmax, ymax;
|
||||
|
@ -950,20 +944,20 @@ void MODULE::SetRectangleExinscrit()
|
|||
m_RealBoundaryBox.m_Pos.y = ymax = m_Pos.y;
|
||||
|
||||
/* Contours: Recherche des coord min et max et mise a jour du cadre */
|
||||
EdgeMod = (EDGE_MODULE*) m_Drawings;
|
||||
for( ; EdgeMod != NULL; EdgeMod = (EDGE_MODULE*) EdgeMod->Pnext )
|
||||
for( EDGE_MODULE* edge = (EDGE_MODULE*) m_Drawings; edge; edge = edge->Next() )
|
||||
{
|
||||
if( EdgeMod->Type() != TYPEEDGEMODULE )
|
||||
if( edge->Type() != TYPEEDGEMODULE )
|
||||
continue;
|
||||
width = EdgeMod->m_Width / 2;
|
||||
|
||||
switch( EdgeMod->m_Shape )
|
||||
width = edge->m_Width / 2;
|
||||
|
||||
switch( edge->m_Shape )
|
||||
{
|
||||
case S_ARC:
|
||||
case S_CIRCLE:
|
||||
{
|
||||
cx = EdgeMod->m_Start.x; cy = EdgeMod->m_Start.y; // centre
|
||||
uxf = EdgeMod->m_End.x; uyf = EdgeMod->m_End.y;
|
||||
cx = edge->m_Start.x; cy = edge->m_Start.y; // centre
|
||||
uxf = edge->m_End.x; uyf = edge->m_End.y;
|
||||
rayon = (int) hypot( (double) (cx - uxf), (double) (cy - uyf) );
|
||||
rayon += width;
|
||||
m_RealBoundaryBox.m_Pos.x = MIN( m_RealBoundaryBox.m_Pos.x, cx - rayon );
|
||||
|
@ -974,25 +968,29 @@ void MODULE::SetRectangleExinscrit()
|
|||
}
|
||||
|
||||
default:
|
||||
m_RealBoundaryBox.m_Pos.x = MIN( m_RealBoundaryBox.m_Pos.x, EdgeMod->m_Start.x - width );
|
||||
m_RealBoundaryBox.m_Pos.x = MIN( m_RealBoundaryBox.m_Pos.x, EdgeMod->m_End.x - width );
|
||||
m_RealBoundaryBox.m_Pos.y = MIN( m_RealBoundaryBox.m_Pos.y, EdgeMod->m_Start.y - width );
|
||||
m_RealBoundaryBox.m_Pos.y = MIN( m_RealBoundaryBox.m_Pos.y, EdgeMod->m_End.y - width );
|
||||
xmax = MAX( xmax, EdgeMod->m_Start.x + width );
|
||||
xmax = MAX( xmax, EdgeMod->m_End.x + width );
|
||||
ymax = MAX( ymax, EdgeMod->m_Start.y + width );
|
||||
ymax = MAX( ymax, EdgeMod->m_End.y + width );
|
||||
m_RealBoundaryBox.m_Pos.x = MIN( m_RealBoundaryBox.m_Pos.x, edge->m_Start.x - width );
|
||||
m_RealBoundaryBox.m_Pos.x = MIN( m_RealBoundaryBox.m_Pos.x, edge->m_End.x - width );
|
||||
m_RealBoundaryBox.m_Pos.y = MIN( m_RealBoundaryBox.m_Pos.y, edge->m_Start.y - width );
|
||||
m_RealBoundaryBox.m_Pos.y = MIN( m_RealBoundaryBox.m_Pos.y, edge->m_End.y - width );
|
||||
xmax = MAX( xmax, edge->m_Start.x + width );
|
||||
xmax = MAX( xmax, edge->m_End.x + width );
|
||||
ymax = MAX( ymax, edge->m_Start.y + width );
|
||||
ymax = MAX( ymax, edge->m_End.y + width );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Pads: Recherche des coord min et max et mise a jour du cadre */
|
||||
for( Pad = m_Pads; Pad != NULL; Pad = (D_PAD*) Pad->Pnext )
|
||||
for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
|
||||
{
|
||||
rayon = Pad->m_Rayon;
|
||||
cx = Pad->m_Pos.x; cy = Pad->m_Pos.y;
|
||||
rayon = pad->m_Rayon;
|
||||
|
||||
cx = pad->m_Pos.x;
|
||||
cy = pad->m_Pos.y;
|
||||
|
||||
m_RealBoundaryBox.m_Pos.x = MIN( m_RealBoundaryBox.m_Pos.x, cx - rayon );
|
||||
m_RealBoundaryBox.m_Pos.y = MIN( m_RealBoundaryBox.m_Pos.y, cy - rayon );
|
||||
|
||||
xmax = MAX( xmax, cx + rayon );
|
||||
ymax = MAX( ymax, cy + rayon );
|
||||
}
|
||||
|
@ -1022,12 +1020,11 @@ EDA_Rect MODULE::GetBoundingBox()
|
|||
text_area = m_Value->GetBoundingBox();
|
||||
area.Merge( text_area );
|
||||
|
||||
EDGE_MODULE* EdgeMod = (EDGE_MODULE*) m_Drawings;
|
||||
for( ; EdgeMod != NULL; EdgeMod = (EDGE_MODULE*) EdgeMod->Pnext )
|
||||
for( EDGE_MODULE* edge = (EDGE_MODULE*) m_Drawings; edge; edge = edge->Next() )
|
||||
{
|
||||
if( EdgeMod->Type() != TYPETEXTEMODULE )
|
||||
if( edge->Type() != TYPETEXTEMODULE )
|
||||
continue;
|
||||
text_area = ((TEXTE_MODULE*)EdgeMod)->GetBoundingBox();
|
||||
text_area = ((TEXTE_MODULE*)edge)->GetBoundingBox();
|
||||
area.Merge( text_area );
|
||||
}
|
||||
|
||||
|
@ -1086,7 +1083,7 @@ void MODULE::Display_Infos( WinEDA_DrawFrame* frame )
|
|||
while( PtStruct )
|
||||
{
|
||||
nbpad++;
|
||||
PtStruct = PtStruct->Pnext;
|
||||
PtStruct = PtStruct->Next();
|
||||
}
|
||||
|
||||
msg.Printf( wxT( "%d" ), nbpad );
|
||||
|
@ -1288,20 +1285,20 @@ void MODULE::Show( int nestLevel, std::ostream& os )
|
|||
|
||||
NestedSpace( nestLevel + 1, os ) << "<mpads>\n";
|
||||
p = m_Pads;
|
||||
for( ; p; p = p->Pnext )
|
||||
for( ; p; p = p->Next() )
|
||||
p->Show( nestLevel + 2, os );
|
||||
|
||||
NestedSpace( nestLevel + 1, os ) << "</mpads>\n";
|
||||
|
||||
NestedSpace( nestLevel + 1, os ) << "<mdrawings>\n";
|
||||
p = m_Drawings;
|
||||
for( ; p; p = p->Pnext )
|
||||
for( ; p; p = p->Next() )
|
||||
p->Show( nestLevel + 2, os );
|
||||
|
||||
NestedSpace( nestLevel + 1, os ) << "</mdrawings>\n";
|
||||
|
||||
p = m_Son;
|
||||
for( ; p; p = p->Pnext )
|
||||
for( ; p; p = p->Next() )
|
||||
{
|
||||
p->Show( nestLevel + 1, os );
|
||||
}
|
||||
|
|
|
@ -74,13 +74,24 @@ public:
|
|||
MODULE( MODULE* module );
|
||||
~MODULE();
|
||||
|
||||
MODULE* Next() const { return (MODULE*) Pnext; }
|
||||
MODULE* Back() const { return (MODULE*) Pback; }
|
||||
|
||||
void Copy( MODULE* Module ); // Copy structure
|
||||
|
||||
MODULE* Next() { return (MODULE*) Pnext; }
|
||||
|
||||
/** Function Set_Rectangle_Encadrement()
|
||||
* Calculates the bounding box
|
||||
* for orient 0 et origin = module anchor)
|
||||
/**
|
||||
* Function Add
|
||||
* adds the given item to this MODULE and takes ownership of its memory.
|
||||
* @param aBoardItem The item to add to this board.
|
||||
* @param doInsert If true, then insert, else append
|
||||
void Add( BOARD_ITEM* aBoardItem, bool doInsert = true );
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Function Set_Rectangle_Encadrement()
|
||||
* calculates the bounding box for orient 0 et origin = module anchor)
|
||||
*/
|
||||
void Set_Rectangle_Encadrement();
|
||||
|
||||
|
@ -89,6 +100,7 @@ public:
|
|||
* and also calculates the area value (used in automatic placement)
|
||||
*/
|
||||
void SetRectangleExinscrit();
|
||||
|
||||
/**
|
||||
* Function GetBoundingBox
|
||||
* returns the bounding box of this Footprint
|
||||
|
@ -156,7 +168,7 @@ public:
|
|||
|
||||
/**
|
||||
* Function Read_GPCB_Descr
|
||||
* Read a footprint description in GPCB format (newlib version)
|
||||
* reads a footprint description in GPCB format (newlib version)
|
||||
* @param CmpFullFileName = Full file name (there is one footprint per file.
|
||||
* this is also the footprint name
|
||||
* @return bool - true if success reading else false.
|
||||
|
|
|
@ -211,23 +211,24 @@ void D_PAD::UnLink()
|
|||
*/
|
||||
{
|
||||
/* Modification du chainage arriere */
|
||||
if( Pback )
|
||||
if( Back() )
|
||||
{
|
||||
if( Pback->Type() != TYPEMODULE )
|
||||
if( Back()->Type() != TYPEMODULE )
|
||||
{
|
||||
Pback->Pnext = Pnext;
|
||||
Back()->SetNext( Next() );
|
||||
}
|
||||
else /* Le chainage arriere pointe sur la structure "Pere" */
|
||||
{
|
||||
( (MODULE*) Pback )->m_Pads = (D_PAD*) Pnext;
|
||||
( (MODULE*) Back() )->m_Pads = Next();
|
||||
}
|
||||
}
|
||||
|
||||
/* Modification du chainage avant */
|
||||
if( Pnext )
|
||||
Pnext->Pback = Pback;
|
||||
if( Next() )
|
||||
Next()->SetBack( Back() );
|
||||
|
||||
Pnext = Pback = NULL;
|
||||
SetNext( 0 );
|
||||
SetBack( 0 );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -51,23 +51,24 @@ void TEXTE_PCB::Copy( TEXTE_PCB* source )
|
|||
void TEXTE_PCB::UnLink()
|
||||
{
|
||||
/* Modification du chainage arriere */
|
||||
if( Pback )
|
||||
if( Back() )
|
||||
{
|
||||
if( Pback->Type() != TYPEPCB )
|
||||
if( Back()->Type() != TYPEPCB )
|
||||
{
|
||||
Pback->Pnext = Pnext;
|
||||
Back()->SetNext( Next() );
|
||||
}
|
||||
else /* Le chainage arriere pointe sur la structure "Pere" */
|
||||
{
|
||||
( (BOARD*) Pback )->m_Drawings = (BOARD_ITEM*) Pnext;
|
||||
( (BOARD*) Back() )->m_Drawings = Next();
|
||||
}
|
||||
}
|
||||
|
||||
/* Modification du chainage avant */
|
||||
if( Pnext )
|
||||
Pnext->Pback = Pback;
|
||||
if( Next() )
|
||||
Next()->SetBack( Back() );
|
||||
|
||||
Pnext = Pback = NULL;
|
||||
SetNext( 0 );
|
||||
SetBack( 0 );
|
||||
}
|
||||
|
||||
|
||||
|
@ -175,7 +176,7 @@ void TEXTE_PCB::Display_Infos( WinEDA_DrawFrame* frame )
|
|||
wxASSERT( parent );
|
||||
|
||||
if( parent->Type() == TYPECOTATION )
|
||||
board = (BOARD*) parent->m_Parent;
|
||||
board = (BOARD*) parent->GetParent();
|
||||
else
|
||||
board = (BOARD*) parent;
|
||||
wxASSERT( board );
|
||||
|
|
|
@ -211,23 +211,24 @@ void TEXTE_MODULE::Copy( TEXTE_MODULE* source )
|
|||
void TEXTE_MODULE::UnLink()
|
||||
{
|
||||
/* Modification du chainage arriere */
|
||||
if( Pback )
|
||||
if( Back() )
|
||||
{
|
||||
if( Pback->Type() != TYPEMODULE )
|
||||
if( Back()->Type() != TYPEMODULE )
|
||||
{
|
||||
Pback->Pnext = Pnext;
|
||||
Back()->SetNext( Next() );
|
||||
}
|
||||
else /* Le chainage arriere pointe sur la structure "Pere" */
|
||||
{
|
||||
( (MODULE*) Pback )->m_Drawings = (BOARD_ITEM*) Pnext;
|
||||
( (MODULE*) Back() )->m_Drawings = Next();
|
||||
}
|
||||
}
|
||||
|
||||
/* Modification du chainage avant */
|
||||
if( Pnext )
|
||||
Pnext->Pback = Pback;
|
||||
if( Next() )
|
||||
Next()->SetBack( Back() );
|
||||
|
||||
Pnext = Pback = NULL;
|
||||
SetNext( 0 );
|
||||
SetBack( 0 );
|
||||
}
|
||||
|
||||
|
||||
|
@ -481,7 +482,7 @@ void TEXTE_MODULE::Display_Infos( WinEDA_DrawFrame* frame )
|
|||
if( !module )
|
||||
return;
|
||||
|
||||
BOARD* board = (BOARD*) module->m_Parent;
|
||||
BOARD* board = (BOARD*) module->GetParent();
|
||||
wxASSERT( board );
|
||||
|
||||
static const wxString text_type_msg[3] = {
|
||||
|
|
|
@ -33,6 +33,9 @@ public:
|
|||
TEXTE_MODULE( MODULE* parent, int text_type = TEXT_is_DIVERS );
|
||||
~TEXTE_MODULE();
|
||||
|
||||
TEXTE_MODULE* Next() const { return (TEXTE_MODULE*) Pnext; }
|
||||
TEXTE_MODULE* Back() const { return (TEXTE_MODULE*) Pback; }
|
||||
|
||||
/**
|
||||
* Function GetPosition
|
||||
* returns the position of this object.
|
||||
|
|
|
@ -409,11 +409,11 @@ void SEGVIA::ReturnLayerPair( int* top_layer, int* bottom_layer ) const
|
|||
void TRACK::UnLink()
|
||||
{
|
||||
/* Remove the back link */
|
||||
if( Pback )
|
||||
if( Back() )
|
||||
{
|
||||
if( Pback->Type() != TYPEPCB )
|
||||
if( Back()->Type() != TYPEPCB )
|
||||
{
|
||||
Pback->Pnext = Pnext;
|
||||
Back()->SetNext( Next() );
|
||||
}
|
||||
else /* Le chainage arriere pointe sur la structure "Pere" */
|
||||
{
|
||||
|
@ -426,26 +426,27 @@ void TRACK::UnLink()
|
|||
{
|
||||
if( Type() == TYPEZONE )
|
||||
{
|
||||
( (BOARD*) Pback )->m_Zone = (SEGZONE*) Pnext;
|
||||
( (BOARD*) Back() )->m_Zone = (SEGZONE*) Next();
|
||||
}
|
||||
else
|
||||
{
|
||||
( (BOARD*) Pback )->m_Track = (TRACK*) Pnext;
|
||||
( (BOARD*) Back() )->m_Track = Next();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Remove the forward link */
|
||||
if( Pnext )
|
||||
Pnext->Pback = Pback;
|
||||
if( Next() )
|
||||
Next()->SetBack( Back() );
|
||||
|
||||
Pnext = Pback = NULL;
|
||||
SetNext( 0 );
|
||||
SetBack( 0 );
|
||||
}
|
||||
|
||||
|
||||
/************************************************************/
|
||||
void TRACK::Insert( BOARD* Pcb, BOARD_ITEM* InsertPoint )
|
||||
void TRACK::Insert( BOARD* Pcb, TRACK* InsertPoint )
|
||||
/************************************************************/
|
||||
|
||||
/* insert this (and its linked segments is exists)
|
||||
|
@ -474,20 +475,20 @@ void TRACK::Insert( BOARD* Pcb, BOARD_ITEM* InsertPoint )
|
|||
}
|
||||
else
|
||||
{
|
||||
NextS = (TRACK*) InsertPoint->Pnext;
|
||||
NextS = InsertPoint->Next();
|
||||
Pback = InsertPoint;
|
||||
InsertPoint->Pnext = this;
|
||||
InsertPoint->SetNext( this );
|
||||
}
|
||||
|
||||
/* Set the forward link */
|
||||
track = this;
|
||||
while( track->Pnext ) // Search the end of added chain
|
||||
track = (TRACK*) track->Pnext;
|
||||
while( track->Next() ) // Search the end of added chain
|
||||
track = track->Next();
|
||||
|
||||
/* Link the end of chain */
|
||||
track->Pnext = NextS;
|
||||
track->SetNext( NextS );
|
||||
if( NextS )
|
||||
NextS->Pback = track;
|
||||
NextS->SetBack( track );
|
||||
}
|
||||
|
||||
|
||||
|
@ -626,12 +627,6 @@ bool TRACK::Save( FILE* aFile ) const
|
|||
/*********************************************************************/
|
||||
void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoint& notUsed )
|
||||
/*********************************************************************/
|
||||
|
||||
/** Draws the segment.
|
||||
* @param panel = current panel
|
||||
* @param DC = current device context
|
||||
* @param draw_mode = GR_XOR, GR_OR..
|
||||
*/
|
||||
{
|
||||
int l_piste;
|
||||
int color;
|
||||
|
@ -644,9 +639,6 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin
|
|||
|
||||
GRSetDrawMode( DC, draw_mode );
|
||||
|
||||
if( Type() == TYPEVIA )
|
||||
color = g_DesignSettings.m_ViaColor[m_Shape];
|
||||
else
|
||||
color = g_DesignSettings.m_LayerColor[m_Layer];
|
||||
|
||||
if( ( color & (ITEM_NOT_SHOW | HIGHT_LIGHT_FLAG) ) == ITEM_NOT_SHOW )
|
||||
|
@ -678,88 +670,6 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin
|
|||
|
||||
l_piste = m_Width >> 1;
|
||||
|
||||
if( Type() == TYPEVIA ) /* The via is drawn as a circle */
|
||||
{
|
||||
rayon = l_piste;
|
||||
if( rayon < zoom )
|
||||
rayon = zoom;
|
||||
|
||||
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color );
|
||||
if( rayon > (4 * zoom) )
|
||||
{
|
||||
int drill_rayon = GetDrillValue() / 2;
|
||||
int inner_rayon = rayon - (2 * zoom);
|
||||
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
|
||||
inner_rayon, color );
|
||||
|
||||
// Draw the via hole if the display option allows it
|
||||
if( DisplayOpt.m_DisplayViaMode != VIA_HOLE_NOT_SHOW )
|
||||
{
|
||||
if( (DisplayOpt.m_DisplayViaMode == ALL_VIA_HOLE_SHOW) || // Display all drill holes requested
|
||||
( (drill_rayon > 0 ) && ! IsDrillDefault() ) ) // Or Display non default holes requested
|
||||
{
|
||||
if( drill_rayon < inner_rayon ) // We can show the via hole
|
||||
{
|
||||
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
|
||||
drill_rayon, color );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( DisplayOpt.DisplayTrackIsol )
|
||||
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
|
||||
rayon + g_DesignSettings.m_TrackClearence, color );
|
||||
// for Micro Vias, draw a partial cross :
|
||||
// X on component layer, or + on copper layer
|
||||
// (so we can see 2 superimposed microvias ):
|
||||
if ( Shape() == VIA_MICROVIA )
|
||||
{
|
||||
int ax, ay, bx, by;
|
||||
if ( IsOnLayer(COPPER_LAYER_N) )
|
||||
{
|
||||
ax = rayon; ay = 0;
|
||||
bx = drill_rayon; by = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ax = ay = (rayon * 707) / 1000;
|
||||
bx = by = (drill_rayon * 707) / 1000;
|
||||
}
|
||||
/* lines | or \ */
|
||||
GRLine( &panel->m_ClipBox, DC, m_Start.x - ax , m_Start.y - ay,
|
||||
m_Start.x - bx , m_Start.y - by, 0, color );
|
||||
GRLine( &panel->m_ClipBox, DC, m_Start.x + bx , m_Start.y + by,
|
||||
m_Start.x + ax , m_Start.y + ay, 0, color );
|
||||
/* lines - or / */
|
||||
GRLine( &panel->m_ClipBox, DC, m_Start.x + ay, m_Start.y - ax ,
|
||||
m_Start.x + by, m_Start.y - bx, 0, color );
|
||||
GRLine( &panel->m_ClipBox, DC, m_Start.x - by, m_Start.y + bx ,
|
||||
m_Start.x - ay, m_Start.y + ax, 0, color );
|
||||
}
|
||||
// for Buried Vias, draw a partial line :
|
||||
// orient depending on layer pair
|
||||
// (so we can see superimposed buried vias ):
|
||||
if ( Shape() == VIA_BLIND_BURIED )
|
||||
{
|
||||
int ax = 0, ay = rayon, bx = 0, by = drill_rayon;
|
||||
int layer_top, layer_bottom ;
|
||||
((SEGVIA*)this)->ReturnLayerPair(&layer_top, &layer_bottom);
|
||||
/* lines for the top layer */
|
||||
RotatePoint( &ax, &ay, layer_top * 3600 / g_DesignSettings.m_CopperLayerCount);
|
||||
RotatePoint( &bx, &by, layer_top * 3600 / g_DesignSettings.m_CopperLayerCount);
|
||||
GRLine( &panel->m_ClipBox, DC, m_Start.x - ax , m_Start.y - ay,
|
||||
m_Start.x - bx , m_Start.y - by, 0, color );
|
||||
/* lines for the bottom layer */
|
||||
ax = 0; ay = rayon; bx = 0; by = drill_rayon;
|
||||
RotatePoint( &ax, &ay, layer_bottom * 3600 / g_DesignSettings.m_CopperLayerCount);
|
||||
RotatePoint( &bx, &by, layer_bottom * 3600 / g_DesignSettings.m_CopperLayerCount);
|
||||
GRLine( &panel->m_ClipBox, DC, m_Start.x - ax , m_Start.y - ay,
|
||||
m_Start.x - bx , m_Start.y - by, 0, color );
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if( m_Shape == S_CIRCLE )
|
||||
{
|
||||
rayon = (int) hypot( (double) (m_End.x - m_Start.x),
|
||||
|
@ -806,7 +716,7 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin
|
|||
m_End.x, m_End.y, m_Width, color );
|
||||
}
|
||||
|
||||
/* Shows clearance (for tracks and vias, not for zone segments */
|
||||
// Show clearance for tracks, not for zone segments
|
||||
if( ShowClearance( this ) )
|
||||
{
|
||||
GRCSegm( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
|
||||
|
@ -816,6 +726,139 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin
|
|||
}
|
||||
|
||||
|
||||
/*******************************************************************************************/
|
||||
void SEGVIA::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoint& notUsed )
|
||||
/*******************************************************************************************/
|
||||
{
|
||||
int color;
|
||||
int zoom;
|
||||
int rayon;
|
||||
int curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
|
||||
|
||||
if( Type() == TYPEZONE && !DisplayOpt.DisplayZones )
|
||||
return;
|
||||
|
||||
GRSetDrawMode( DC, draw_mode );
|
||||
|
||||
color = g_DesignSettings.m_ViaColor[m_Shape];
|
||||
|
||||
if( ( color & (ITEM_NOT_SHOW | HIGHT_LIGHT_FLAG) ) == ITEM_NOT_SHOW )
|
||||
return;
|
||||
|
||||
if( DisplayOpt.ContrastModeDisplay )
|
||||
{
|
||||
if( !IsOnLayer( curr_layer ) )
|
||||
{
|
||||
color &= ~MASKCOLOR;
|
||||
color |= DARKDARKGRAY;
|
||||
}
|
||||
}
|
||||
|
||||
if( draw_mode & GR_SURBRILL )
|
||||
{
|
||||
if( draw_mode & GR_AND )
|
||||
color &= ~HIGHT_LIGHT_FLAG;
|
||||
else
|
||||
color |= HIGHT_LIGHT_FLAG;
|
||||
}
|
||||
|
||||
if( color & HIGHT_LIGHT_FLAG )
|
||||
color = ColorRefs[color & MASKCOLOR].m_LightColor;
|
||||
|
||||
SetAlpha( &color, 150 );
|
||||
|
||||
zoom = panel->GetZoom();
|
||||
|
||||
rayon = m_Width >> 1;
|
||||
if( rayon < zoom )
|
||||
rayon = zoom;
|
||||
|
||||
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color );
|
||||
if( rayon > (4 * zoom) )
|
||||
{
|
||||
int drill_rayon = GetDrillValue() / 2;
|
||||
int inner_rayon = rayon - (2 * zoom);
|
||||
|
||||
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
|
||||
inner_rayon, color );
|
||||
|
||||
// Draw the via hole if the display option allows it
|
||||
if( DisplayOpt.m_DisplayViaMode != VIA_HOLE_NOT_SHOW )
|
||||
{
|
||||
if( (DisplayOpt.m_DisplayViaMode == ALL_VIA_HOLE_SHOW) || // Display all drill holes requested
|
||||
( (drill_rayon > 0 ) && ! IsDrillDefault() ) ) // Or Display non default holes requested
|
||||
{
|
||||
if( drill_rayon < inner_rayon ) // We can show the via hole
|
||||
{
|
||||
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
|
||||
drill_rayon, color );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( DisplayOpt.DisplayTrackIsol )
|
||||
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
|
||||
rayon + g_DesignSettings.m_TrackClearence, color );
|
||||
|
||||
// for Micro Vias, draw a partial cross :
|
||||
// X on component layer, or + on copper layer
|
||||
// (so we can see 2 superimposed microvias ):
|
||||
if( Shape() == VIA_MICROVIA )
|
||||
{
|
||||
int ax, ay, bx, by;
|
||||
|
||||
if( IsOnLayer(COPPER_LAYER_N) )
|
||||
{
|
||||
ax = rayon; ay = 0;
|
||||
bx = drill_rayon; by = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ax = ay = (rayon * 707) / 1000;
|
||||
bx = by = (drill_rayon * 707) / 1000;
|
||||
}
|
||||
|
||||
/* lines | or \ */
|
||||
GRLine( &panel->m_ClipBox, DC, m_Start.x - ax , m_Start.y - ay,
|
||||
m_Start.x - bx , m_Start.y - by, 0, color );
|
||||
GRLine( &panel->m_ClipBox, DC, m_Start.x + bx , m_Start.y + by,
|
||||
m_Start.x + ax , m_Start.y + ay, 0, color );
|
||||
|
||||
/* lines - or / */
|
||||
GRLine( &panel->m_ClipBox, DC, m_Start.x + ay, m_Start.y - ax ,
|
||||
m_Start.x + by, m_Start.y - bx, 0, color );
|
||||
GRLine( &panel->m_ClipBox, DC, m_Start.x - by, m_Start.y + bx ,
|
||||
m_Start.x - ay, m_Start.y + ax, 0, color );
|
||||
}
|
||||
|
||||
// for Buried Vias, draw a partial line :
|
||||
// orient depending on layer pair
|
||||
// (so we can see superimposed buried vias ):
|
||||
if( Shape() == VIA_BLIND_BURIED )
|
||||
{
|
||||
int ax = 0, ay = rayon, bx = 0, by = drill_rayon;
|
||||
int layer_top, layer_bottom;
|
||||
|
||||
((SEGVIA*)this)->ReturnLayerPair(&layer_top, &layer_bottom);
|
||||
|
||||
/* lines for the top layer */
|
||||
RotatePoint( &ax, &ay, layer_top * 3600 / g_DesignSettings.m_CopperLayerCount);
|
||||
RotatePoint( &bx, &by, layer_top * 3600 / g_DesignSettings.m_CopperLayerCount);
|
||||
GRLine( &panel->m_ClipBox, DC, m_Start.x - ax , m_Start.y - ay,
|
||||
m_Start.x - bx , m_Start.y - by, 0, color );
|
||||
|
||||
/* lines for the bottom layer */
|
||||
ax = 0; ay = rayon; bx = 0; by = drill_rayon;
|
||||
RotatePoint( &ax, &ay, layer_bottom * 3600 / g_DesignSettings.m_CopperLayerCount);
|
||||
RotatePoint( &bx, &by, layer_bottom * 3600 / g_DesignSettings.m_CopperLayerCount);
|
||||
GRLine( &panel->m_ClipBox, DC, m_Start.x - ax , m_Start.y - ay,
|
||||
m_Start.x - bx , m_Start.y - by, 0, color );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// see class_track.h
|
||||
void TRACK::Display_Infos( WinEDA_DrawFrame* frame )
|
||||
{
|
||||
|
|
|
@ -50,9 +50,9 @@ public:
|
|||
TRACK* Copy() const;
|
||||
|
||||
TRACK* Next() const { return (TRACK*) Pnext; }
|
||||
|
||||
TRACK* Back() const { return (TRACK*) Pback; }
|
||||
|
||||
|
||||
/**
|
||||
* Function GetPosition
|
||||
* returns the position of this object.
|
||||
|
@ -89,7 +89,7 @@ public:
|
|||
* @param aPcb The BOARD to insert into.
|
||||
* @param InsertPoint See above
|
||||
*/
|
||||
void Insert( BOARD* aPcb, BOARD_ITEM* InsertPoint );
|
||||
void Insert( BOARD* aPcb, TRACK* InsertPoint );
|
||||
|
||||
/**
|
||||
* Function GetBestInsertPoint
|
||||
|
@ -277,6 +277,9 @@ public:
|
|||
}
|
||||
|
||||
|
||||
void Draw( WinEDA_DrawPanel* panel, wxDC* DC, int aDrawMode, const wxPoint& offset = ZeroOffset );
|
||||
|
||||
|
||||
/**
|
||||
* Function IsOnLayer
|
||||
* tests to see if this object is on the given layer. Is virtual
|
||||
|
|
|
@ -53,7 +53,7 @@ static int Merge_Two_SubNets( TRACK* pt_start_conn, TRACK* pt_end_conn, int old_
|
|||
EXCHG( old_val, new_val );
|
||||
|
||||
pt_conn = pt_start_conn;
|
||||
for( ; pt_conn != NULL; pt_conn = (TRACK*) pt_conn->Pnext )
|
||||
for( ; pt_conn != NULL; pt_conn = pt_conn->Next() )
|
||||
{
|
||||
if( pt_conn->GetSubNet() != old_val )
|
||||
{
|
||||
|
@ -110,7 +110,7 @@ static void Propagate_SubNet( TRACK* pt_start_conn, TRACK* pt_end_conn )
|
|||
|
||||
/* Clear variables used in computations */
|
||||
pt_conn = pt_start_conn;
|
||||
for( ; pt_conn != NULL; pt_conn = (TRACK*) pt_conn->Pnext )
|
||||
for( ; pt_conn != NULL; pt_conn = pt_conn->Next() )
|
||||
{
|
||||
pt_conn->SetSubNet( 0 );
|
||||
PtStruct = pt_conn->start;
|
||||
|
@ -130,7 +130,7 @@ static void Propagate_SubNet( TRACK* pt_start_conn, TRACK* pt_end_conn )
|
|||
|
||||
/* Start of calculation */
|
||||
pt_conn = pt_start_conn;
|
||||
for( ; pt_conn != NULL; pt_conn = (TRACK*) pt_conn->Pnext )
|
||||
for( ; pt_conn != NULL; pt_conn = pt_conn->Next() )
|
||||
{
|
||||
/* First: handling connections to pads */
|
||||
PtStruct = pt_conn->start;
|
||||
|
@ -300,7 +300,7 @@ void WinEDA_BasePcbFrame::test_connexions( wxDC* DC )
|
|||
|
||||
Build_Pads_Info_Connections_By_Tracks( pt_start_conn, pt_end_conn );
|
||||
|
||||
pt_start_conn = (TRACK*) pt_end_conn->Pnext; // this is now the first segment of the next net
|
||||
pt_start_conn = pt_end_conn->Next(); // this is now the first segment of the next net
|
||||
}
|
||||
|
||||
Merge_SubNets_Connected_By_CopperAreas( m_Pcb );
|
||||
|
@ -391,7 +391,7 @@ static void Build_Pads_Info_Connections_By_Tracks( TRACK* pt_start_conn, TRACK*
|
|||
TRACK* Track;
|
||||
|
||||
/* Reset the old connections type track to track */
|
||||
for( Track = pt_start_conn; Track != NULL; Track = (TRACK*) Track->Pnext )
|
||||
for( Track = pt_start_conn; Track != NULL; Track = Track->Next() )
|
||||
{
|
||||
Track->SetSubNet( 0 );
|
||||
|
||||
|
@ -406,13 +406,13 @@ static void Build_Pads_Info_Connections_By_Tracks( TRACK* pt_start_conn, TRACK*
|
|||
}
|
||||
|
||||
/* Update connections type track to track */
|
||||
for( Track = pt_start_conn; Track != NULL; Track = (TRACK*) Track->Pnext )
|
||||
for( Track = pt_start_conn; Track != NULL; Track = Track->Next() )
|
||||
{
|
||||
if( Track->Type() == TYPEVIA ) // A via can connect many tracks, we must search for all track segments in this net
|
||||
{
|
||||
TRACK* pt_segm;
|
||||
int layermask = Track->ReturnMaskLayer();
|
||||
for( pt_segm = pt_start_conn; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext )
|
||||
for( pt_segm = pt_start_conn; pt_segm != NULL; pt_segm = pt_segm->Next() )
|
||||
{
|
||||
int curlayermask = pt_segm->ReturnMaskLayer();
|
||||
|
||||
|
@ -607,7 +607,7 @@ void WinEDA_BasePcbFrame::reattribution_reference_piste( int affiche )
|
|||
|
||||
/* Reset variables and flags used in computation */
|
||||
pt_piste = m_Pcb->m_Track;
|
||||
for( ; pt_piste != NULL; pt_piste = (TRACK*) pt_piste->Pnext )
|
||||
for( ; pt_piste != NULL; pt_piste = pt_piste->Next() )
|
||||
{
|
||||
pt_piste->SetState( BUSY | EDIT | BEGIN_ONPAD | END_ONPAD, OFF );
|
||||
pt_piste->SetZoneSubNet( 0 );
|
||||
|
@ -618,7 +618,7 @@ void WinEDA_BasePcbFrame::reattribution_reference_piste( int affiche )
|
|||
* if found, set the track net code to the pad netcode
|
||||
*/
|
||||
pt_piste = m_Pcb->m_Track;
|
||||
for( ; pt_piste != NULL; pt_piste = (TRACK*) pt_piste->Pnext )
|
||||
for( ; pt_piste != NULL; pt_piste = pt_piste->Next() )
|
||||
{
|
||||
flag = 0;
|
||||
masque_layer = g_TabOneLayerMask[pt_piste->GetLayer()];
|
||||
|
@ -821,7 +821,7 @@ static void RebuildTrackChain( BOARD* pcb )
|
|||
Liste = (TRACK**) MyZMalloc( (nbsegm + 1) * sizeof(TRACK*) );
|
||||
|
||||
ii = 0; Track = pcb->m_Track;
|
||||
for( ; Track != NULL; ii++, Track = (TRACK*) Track->Pnext )
|
||||
for( ; Track != NULL; ii++, Track = Track->Next() )
|
||||
{
|
||||
Liste[ii] = Track;
|
||||
}
|
||||
|
@ -832,13 +832,15 @@ static void RebuildTrackChain( BOARD* pcb )
|
|||
/* Update the linked list pointers */
|
||||
|
||||
Track = Liste[0];
|
||||
Track->Pback = pcb; Track->Pnext = Liste[1];
|
||||
Track->SetBack( pcb );
|
||||
Track->SetNext( Liste[1] );
|
||||
|
||||
pcb->m_Track = Track;
|
||||
for( ii = 1; ii < nbsegm; ii++ )
|
||||
{
|
||||
Track = Liste[ii];
|
||||
Track->Pback = Liste[ii - 1];
|
||||
Track->Pnext = Liste[ii + 1];
|
||||
Track->SetBack( Liste[ii - 1] );
|
||||
Track->SetNext( Liste[ii + 1] );
|
||||
}
|
||||
|
||||
MyFree( Liste );
|
||||
|
|
|
@ -280,10 +280,11 @@ COTATION* WinEDA_PcbFrame::Begin_Cotation( COTATION* Cotation, wxDC* DC )
|
|||
Cotation->m_Flags = 0;
|
||||
|
||||
/* Insertion de la structure dans le Chainage .Drawings du PCB */
|
||||
Cotation->Pback = m_Pcb;
|
||||
Cotation->Pnext = m_Pcb->m_Drawings;
|
||||
Cotation->SetBack( m_Pcb );
|
||||
Cotation->SetNext( m_Pcb->m_Drawings );
|
||||
|
||||
if( m_Pcb->m_Drawings )
|
||||
m_Pcb->m_Drawings->Pback = Cotation;
|
||||
m_Pcb->m_Drawings->SetBack( Cotation );
|
||||
m_Pcb->m_Drawings = Cotation;
|
||||
|
||||
GetScreen()->SetModify();
|
||||
|
|
|
@ -155,7 +155,7 @@ void WinEDA_PcbFrame::SendMessageToEESCHEMA( BOARD_ITEM* objectToSync )
|
|||
break;
|
||||
|
||||
case TYPEPAD:
|
||||
module = (MODULE*) objectToSync->m_Parent;
|
||||
module = (MODULE*) objectToSync->GetParent();
|
||||
pad = (D_PAD*) objectToSync;
|
||||
msg = pad->ReturnStringPadName();
|
||||
sprintf( cmd, "$PART: \"%s\" $PAD: \"%s\"",
|
||||
|
@ -166,7 +166,7 @@ void WinEDA_PcbFrame::SendMessageToEESCHEMA( BOARD_ITEM* objectToSync )
|
|||
case TYPETEXTEMODULE:
|
||||
#define REFERENCE 0
|
||||
#define VALUE 1
|
||||
module = (MODULE*) objectToSync->m_Parent;
|
||||
module = (MODULE*) objectToSync->GetParent();
|
||||
text_mod = (TEXTE_MODULE*) objectToSync;
|
||||
if( text_mod->m_Type == REFERENCE )
|
||||
text_key = "$REF:";
|
||||
|
|
|
@ -49,19 +49,19 @@ TRACK* WinEDA_PcbFrame::Delete_Segment( wxDC* DC, TRACK* Track )
|
|||
|
||||
// modification du trace
|
||||
Track = g_CurrentTrackSegment;
|
||||
g_CurrentTrackSegment = (TRACK*) g_CurrentTrackSegment->Pback;
|
||||
g_CurrentTrackSegment = g_CurrentTrackSegment->Back();
|
||||
delete Track;
|
||||
g_TrackSegmentCount--;
|
||||
|
||||
if( g_TwoSegmentTrackBuild )
|
||||
{
|
||||
// g_CurrentTrackSegment->Pback must not be a via, or we want delete also the via
|
||||
// g_CurrentTrackSegment->Back() must not be a via, or we want delete also the via
|
||||
if( (g_TrackSegmentCount >= 2)
|
||||
&& (g_CurrentTrackSegment->Type() != TYPEVIA)
|
||||
&& (g_CurrentTrackSegment->Pback->Type() == TYPEVIA) )
|
||||
&& (g_CurrentTrackSegment->Back()->Type() == TYPEVIA) )
|
||||
{
|
||||
Track = g_CurrentTrackSegment;
|
||||
g_CurrentTrackSegment = (TRACK*) g_CurrentTrackSegment->Pback;
|
||||
g_CurrentTrackSegment = g_CurrentTrackSegment->Back();
|
||||
delete Track;
|
||||
g_TrackSegmentCount--;
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ TRACK* WinEDA_PcbFrame::Delete_Segment( wxDC* DC, TRACK* Track )
|
|||
&& (g_CurrentTrackSegment->Type() == TYPEVIA) )
|
||||
{
|
||||
Track = g_CurrentTrackSegment;
|
||||
g_CurrentTrackSegment = (TRACK*) g_CurrentTrackSegment->Pback;
|
||||
g_CurrentTrackSegment = g_CurrentTrackSegment->Back();
|
||||
delete Track;
|
||||
g_TrackSegmentCount--;
|
||||
if( g_CurrentTrackSegment && (g_CurrentTrackSegment->Type() != TYPEVIA) )
|
||||
|
@ -79,7 +79,7 @@ TRACK* WinEDA_PcbFrame::Delete_Segment( wxDC* DC, TRACK* Track )
|
|||
}
|
||||
|
||||
if( g_CurrentTrackSegment )
|
||||
g_CurrentTrackSegment->Pnext = NULL;
|
||||
g_CurrentTrackSegment->SetNext( NULL );
|
||||
|
||||
// Rectification couche active qui a pu changer si une via
|
||||
// a ete effacee
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue