see changelog
This commit is contained in:
parent
7f453831d5
commit
8123d3a5eb
|
@ -5,6 +5,17 @@ Started 2007-June-11
|
||||||
Please add newer entries at the top, list the date and your name with
|
Please add newer entries at the top, list the date and your name with
|
||||||
email address.
|
email address.
|
||||||
|
|
||||||
|
2008-Apr-14 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||||
|
================================================================================
|
||||||
|
+eeschema
|
||||||
|
More code cleaning and Files cleaning and reorganization.
|
||||||
|
change DrawSheetLabelStruct class name to a better name: Hierarchical_PIN_Sheet_Struct
|
||||||
|
For simple Hierarchies, files are now compatables with old eescheam versions
|
||||||
|
In complex hierarchies, multiples parts per packages have still problems,
|
||||||
|
but i hope to solve that soon
|
||||||
|
(in fact all the last changes were made for that)
|
||||||
|
|
||||||
|
|
||||||
2008-Apr-14 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
2008-Apr-14 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||||
================================================================================
|
================================================================================
|
||||||
+eeschema
|
+eeschema
|
||||||
|
|
|
@ -569,7 +569,7 @@ EDA_BaseStruct* BASE_SCREEN::GetItemFromRedoList()
|
||||||
*/
|
*/
|
||||||
void BASE_SCREEN::Show( int nestLevel, std::ostream& os )
|
void BASE_SCREEN::Show( int nestLevel, std::ostream& os )
|
||||||
{
|
{
|
||||||
EDA_BaseStruct* item = EEDrawList;
|
EDA_BaseStruct* item = (EDA_BaseStruct*) EEDrawList; // @todo : use SCH_ITEM as type for item
|
||||||
|
|
||||||
// for now, make it look like XML, expand on this later.
|
// for now, make it look like XML, expand on this later.
|
||||||
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() <<
|
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() <<
|
||||||
|
|
|
@ -6,6 +6,22 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "sch_item_struct.h"
|
#include "sch_item_struct.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* Constructor and destructor for SCH_ITEM */
|
||||||
|
/* They are not inline because this creates problems with gcc at linking time
|
||||||
|
* in debug mode
|
||||||
|
*/
|
||||||
|
|
||||||
|
SCH_ITEM::SCH_ITEM( EDA_BaseStruct* aParent, KICAD_T aType ) :
|
||||||
|
EDA_BaseStruct( aParent, aType )
|
||||||
|
{
|
||||||
|
m_Layer = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
SCH_ITEM::~SCH_ITEM()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/**************************/
|
/**************************/
|
||||||
/* class DrawPickedStruct */
|
/* class DrawPickedStruct */
|
||||||
/**************************/
|
/**************************/
|
||||||
|
|
|
@ -13,10 +13,11 @@ set(EESCHEMA_SRCS
|
||||||
busentry.cpp
|
busentry.cpp
|
||||||
bus-wire-junction.cpp
|
bus-wire-junction.cpp
|
||||||
class_drawsheet.cpp
|
class_drawsheet.cpp
|
||||||
|
class_hierarchical_PIN_sheet.cpp
|
||||||
class_screen.cpp
|
class_screen.cpp
|
||||||
class_text-label.cpp
|
class_text-label.cpp
|
||||||
|
class_schematic_items.cpp
|
||||||
cleanup.cpp
|
cleanup.cpp
|
||||||
cmpclass.cpp
|
|
||||||
component_class.cpp
|
component_class.cpp
|
||||||
controle.cpp
|
controle.cpp
|
||||||
cross-probing.cpp
|
cross-probing.cpp
|
||||||
|
@ -34,7 +35,6 @@ set(EESCHEMA_SRCS
|
||||||
dialog_erc.cpp
|
dialog_erc.cpp
|
||||||
# dialog_find.cpp
|
# dialog_find.cpp
|
||||||
dialog_options.cpp
|
dialog_options.cpp
|
||||||
# divers.cpp
|
|
||||||
edit_component_in_lib.cpp
|
edit_component_in_lib.cpp
|
||||||
edit_component_in_schematic.cpp
|
edit_component_in_schematic.cpp
|
||||||
edit_label.cpp
|
edit_label.cpp
|
||||||
|
@ -43,7 +43,6 @@ set(EESCHEMA_SRCS
|
||||||
eelayer.cpp
|
eelayer.cpp
|
||||||
eelibs_draw_components.cpp
|
eelibs_draw_components.cpp
|
||||||
eelibs_read_libraryfiles.cpp
|
eelibs_read_libraryfiles.cpp
|
||||||
eeload.cpp
|
|
||||||
eeredraw.cpp
|
eeredraw.cpp
|
||||||
eeschema.cpp
|
eeschema.cpp
|
||||||
eestring.cpp
|
eestring.cpp
|
||||||
|
|
|
@ -607,7 +607,7 @@ void MirrorOneStruct( SCH_ITEM * DrawStruct, wxPoint& Center )
|
||||||
DrawBusEntryStruct* DrawRaccord;
|
DrawBusEntryStruct* DrawRaccord;
|
||||||
SCH_COMPONENT* DrawLibItem;
|
SCH_COMPONENT* DrawLibItem;
|
||||||
DrawSheetStruct* DrawSheet;
|
DrawSheetStruct* DrawSheet;
|
||||||
DrawSheetLabelStruct* DrawSheetLabel;
|
Hierarchical_PIN_Sheet_Struct* DrawSheetLabel;
|
||||||
DrawMarkerStruct* DrawMarker;
|
DrawMarkerStruct* DrawMarker;
|
||||||
DrawNoConnectStruct* DrawNoConnect;
|
DrawNoConnectStruct* DrawNoConnect;
|
||||||
SCH_TEXT* DrawText;
|
SCH_TEXT* DrawText;
|
||||||
|
@ -728,13 +728,13 @@ void MirrorOneStruct( SCH_ITEM * DrawStruct, wxPoint& Center )
|
||||||
{
|
{
|
||||||
MirrorYPoint( DrawSheetLabel->m_Pos, Center );
|
MirrorYPoint( DrawSheetLabel->m_Pos, Center );
|
||||||
DrawSheetLabel->m_Edge = DrawSheetLabel->m_Edge ? 0 : 1;
|
DrawSheetLabel->m_Edge = DrawSheetLabel->m_Edge ? 0 : 1;
|
||||||
DrawSheetLabel = (DrawSheetLabelStruct*) DrawSheetLabel->Pnext;
|
DrawSheetLabel = (Hierarchical_PIN_Sheet_Struct*) DrawSheetLabel->Pnext;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
DrawSheetLabel = (DrawSheetLabelStruct*) DrawStruct;
|
DrawSheetLabel = (Hierarchical_PIN_Sheet_Struct*) DrawStruct;
|
||||||
MirrorYPoint( DrawSheetLabel->m_Pos, Center );
|
MirrorYPoint( DrawSheetLabel->m_Pos, Center );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -876,7 +876,7 @@ static SCH_ITEM * CopyStruct( WinEDA_DrawPanel* panel, wxDC* DC, BASE_SCREEN* sc
|
||||||
case TYPE_SCH_LABEL:
|
case TYPE_SCH_LABEL:
|
||||||
case TYPE_SCH_GLOBALLABEL:
|
case TYPE_SCH_GLOBALLABEL:
|
||||||
case TYPE_SCH_HIERLABEL:
|
case TYPE_SCH_HIERLABEL:
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
case DRAW_PICK_ITEM_STRUCT_TYPE:
|
case DRAW_PICK_ITEM_STRUCT_TYPE:
|
||||||
case DRAW_MARKER_STRUCT_TYPE:
|
case DRAW_MARKER_STRUCT_TYPE:
|
||||||
case DRAW_NOCONNECT_STRUCT_TYPE:
|
case DRAW_NOCONNECT_STRUCT_TYPE:
|
||||||
|
@ -929,12 +929,12 @@ void DeleteStruct( WinEDA_DrawPanel* panel, wxDC* DC, SCH_ITEM * DrawStruct )
|
||||||
if( !DrawStruct )
|
if( !DrawStruct )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if( DrawStruct->Type() == DRAW_SHEETLABEL_STRUCT_TYPE )
|
if( DrawStruct->Type() == DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE )
|
||||||
{
|
{
|
||||||
/* Cette stucture est rattachee a une feuille, et n'est pas
|
/* Cette stucture est rattachee a une feuille, et n'est pas
|
||||||
* accessible par la liste globale directement */
|
* accessible par la liste globale directement */
|
||||||
frame->SaveCopyInUndoList( (SCH_ITEM*) ( (DrawSheetLabelStruct*) DrawStruct )->m_Parent, IS_CHANGED );
|
frame->SaveCopyInUndoList( (SCH_ITEM*) ( (Hierarchical_PIN_Sheet_Struct*) DrawStruct )->m_Parent, IS_CHANGED );
|
||||||
frame->DeleteSheetLabel( DC, (DrawSheetLabelStruct*) DrawStruct );
|
frame->DeleteSheetLabel( DC, (Hierarchical_PIN_Sheet_Struct*) DrawStruct );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1127,7 +1127,7 @@ bool PlaceStruct( BASE_SCREEN* screen, SCH_ITEM * DrawStruct )
|
||||||
case TYPE_SCH_HIERLABEL:
|
case TYPE_SCH_HIERLABEL:
|
||||||
case TYPE_SCH_COMPONENT:
|
case TYPE_SCH_COMPONENT:
|
||||||
case DRAW_SHEET_STRUCT_TYPE:
|
case DRAW_SHEET_STRUCT_TYPE:
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
case DRAW_MARKER_STRUCT_TYPE:
|
case DRAW_MARKER_STRUCT_TYPE:
|
||||||
case DRAW_NOCONNECT_STRUCT_TYPE:
|
case DRAW_NOCONNECT_STRUCT_TYPE:
|
||||||
MoveOneStruct( DrawStruct, move_vector );
|
MoveOneStruct( DrawStruct, move_vector );
|
||||||
|
@ -1162,7 +1162,7 @@ void MoveOneStruct( SCH_ITEM * DrawStruct, const wxPoint& move_vector )
|
||||||
DrawBusEntryStruct* DrawRaccord;
|
DrawBusEntryStruct* DrawRaccord;
|
||||||
SCH_COMPONENT* DrawLibItem;
|
SCH_COMPONENT* DrawLibItem;
|
||||||
DrawSheetStruct* DrawSheet;
|
DrawSheetStruct* DrawSheet;
|
||||||
DrawSheetLabelStruct* DrawSheetLabel;
|
Hierarchical_PIN_Sheet_Struct* DrawSheetLabel;
|
||||||
DrawMarkerStruct* DrawMarker;
|
DrawMarkerStruct* DrawMarker;
|
||||||
DrawNoConnectStruct* DrawNoConnect;
|
DrawNoConnectStruct* DrawNoConnect;
|
||||||
|
|
||||||
|
@ -1255,8 +1255,8 @@ void MoveOneStruct( SCH_ITEM * DrawStruct, const wxPoint& move_vector )
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
DrawSheetLabel = (DrawSheetLabelStruct*) DrawStruct;
|
DrawSheetLabel = (Hierarchical_PIN_Sheet_Struct*) DrawStruct;
|
||||||
DrawSheetLabel->m_Pos += move_vector;
|
DrawSheetLabel->m_Pos += move_vector;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1356,7 +1356,7 @@ SCH_ITEM * DuplicateStruct( SCH_ITEM * DrawStruct )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
case DRAW_PART_TEXT_STRUCT_TYPE:
|
case DRAW_PART_TEXT_STRUCT_TYPE:
|
||||||
case SCREEN_STRUCT_TYPE:
|
case SCREEN_STRUCT_TYPE:
|
||||||
default:
|
default:
|
||||||
|
@ -1467,12 +1467,12 @@ static void CollectStructsToDrag( SCH_SCREEN* screen )
|
||||||
|
|
||||||
if( Struct->Type() == DRAW_SHEET_STRUCT_TYPE )
|
if( Struct->Type() == DRAW_SHEET_STRUCT_TYPE )
|
||||||
{
|
{
|
||||||
DrawSheetLabelStruct* SLabel = ( (DrawSheetStruct*) Struct )->m_Label;
|
Hierarchical_PIN_Sheet_Struct* SLabel = ( (DrawSheetStruct*) Struct )->m_Label;
|
||||||
while( SLabel )
|
while( SLabel )
|
||||||
{
|
{
|
||||||
if( SLabel->Type() == DRAW_SHEETLABEL_STRUCT_TYPE )
|
if( SLabel->Type() == DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE )
|
||||||
AddPickedItem( screen, SLabel->m_Pos );
|
AddPickedItem( screen, SLabel->m_Pos );
|
||||||
SLabel = (DrawSheetLabelStruct*) SLabel->Pnext;
|
SLabel = (Hierarchical_PIN_Sheet_Struct*) SLabel->Pnext;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1611,7 +1611,7 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
||||||
case DRAW_SHEET_STRUCT_TYPE:
|
case DRAW_SHEET_STRUCT_TYPE:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_PICK_ITEM_STRUCT_TYPE:
|
case DRAW_PICK_ITEM_STRUCT_TYPE:
|
||||||
|
|
|
@ -789,7 +789,7 @@ static bool IsTerminalPoint( SCH_SCREEN* screen, const wxPoint& pos, int layer )
|
||||||
EDA_BaseStruct* item;
|
EDA_BaseStruct* item;
|
||||||
LibDrawPin* pin;
|
LibDrawPin* pin;
|
||||||
SCH_COMPONENT* LibItem = NULL;
|
SCH_COMPONENT* LibItem = NULL;
|
||||||
DrawSheetLabelStruct* pinsheet;
|
Hierarchical_PIN_Sheet_Struct* pinsheet;
|
||||||
wxPoint itempos;
|
wxPoint itempos;
|
||||||
|
|
||||||
switch( layer )
|
switch( layer )
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// Name: DrawSheet.cpp
|
// Name: class_drawsheet.cpp
|
||||||
// Purpose: member functions for DrawSheetStruct and DrawSheetLabelStruct
|
// Purpose: member functions for DrawSheetStruct
|
||||||
// header = class_screen.h
|
// header = class_drawsheet.h
|
||||||
// Author: jean-pierre Charras
|
// Author: jean-pierre Charras
|
||||||
// Modified by:
|
// Modified by:
|
||||||
// Created: 08/02/2006 18:37:02
|
// Created: 08/02/2006 18:37:02
|
||||||
// RCS-ID:
|
// RCS-ID:
|
||||||
// Copyright: License GNU
|
// Copyright:
|
||||||
// Licence:
|
// Licence: License GNU
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// For compilers that support precompilation, includes "wx/wx.h".
|
// For compilers that support precompilation, includes "wx/wx.h".
|
||||||
|
@ -56,11 +56,11 @@ DrawSheetStruct::DrawSheetStruct( const wxPoint& pos ) :
|
||||||
DrawSheetStruct::~DrawSheetStruct()
|
DrawSheetStruct::~DrawSheetStruct()
|
||||||
/**************************************/
|
/**************************************/
|
||||||
{
|
{
|
||||||
DrawSheetLabelStruct* label = m_Label, * next_label;
|
Hierarchical_PIN_Sheet_Struct* label = m_Label, * next_label;
|
||||||
|
|
||||||
while( label )
|
while( label )
|
||||||
{
|
{
|
||||||
next_label = (DrawSheetLabelStruct*) label->Pnext;
|
next_label = label->Next();
|
||||||
delete label;
|
delete label;
|
||||||
label = next_label;
|
label = next_label;
|
||||||
}
|
}
|
||||||
|
@ -76,82 +76,66 @@ DrawSheetStruct::~DrawSheetStruct()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************/
|
/**********************************************/
|
||||||
bool DrawSheetStruct::Save( FILE *f )
|
bool DrawSheetStruct::Save( FILE* f ) const
|
||||||
/***********************************************/
|
/***********************************************/
|
||||||
|
|
||||||
/* Routine utilisee dans la routine precedente.
|
/* Routine utilisee dans la routine precedente.
|
||||||
Assure la sauvegarde de la structure LibItemStruct
|
* Assure la sauvegarde de la structure LibItemStruct
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
int ii;
|
bool Success = true;
|
||||||
bool Failed = FALSE;
|
Hierarchical_PIN_Sheet_Struct* SheetLabel;
|
||||||
DrawSheetLabelStruct * SheetLabel;
|
|
||||||
|
|
||||||
fprintf(f, "$Sheet\n");
|
fprintf( f, "$Sheet\n" );
|
||||||
|
|
||||||
if (fprintf(f, "S %-4d %-4d %-4d %-4d\n",
|
if( fprintf( f, "S %-4d %-4d %-4d %-4d\n",
|
||||||
m_Pos.x,m_Pos.y,
|
m_Pos.x, m_Pos.y,
|
||||||
m_Size.x,m_Size.y) == EOF){
|
m_Size.x, m_Size.y ) == EOF )
|
||||||
Failed = TRUE; return(Failed);
|
{
|
||||||
|
Success = false;
|
||||||
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
//save the unique timestamp, like other shematic parts.
|
//save the unique timestamp, like other shematic parts.
|
||||||
if( fprintf(f, "U %8.8lX\n", m_TimeStamp) == EOF ){
|
if( fprintf( f, "U %8.8lX\n", m_TimeStamp ) == EOF )
|
||||||
Failed = TRUE; return(Failed);
|
{
|
||||||
|
Success = false; return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Generation de la liste des 2 textes (sheetname et filename) */
|
/* Generation de la liste des 2 textes (sheetname et filename) */
|
||||||
if ( ! m_SheetName.IsEmpty())
|
if( !m_SheetName.IsEmpty() )
|
||||||
{
|
{
|
||||||
if(fprintf(f,"F0 \"%s\" %d\n", CONV_TO_UTF8(m_SheetName), m_SheetNameSize) == EOF)
|
if( fprintf( f, "F0 \"%s\" %d\n", CONV_TO_UTF8( m_SheetName ), m_SheetNameSize ) == EOF )
|
||||||
{
|
{
|
||||||
Failed = TRUE; return(Failed);
|
Success = false; return Success;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( ! GetFileName().IsEmpty())
|
if( !m_FileName.IsEmpty() )
|
||||||
{
|
{
|
||||||
if(fprintf(f,"F1 \"%s\" %d\n", CONV_TO_UTF8(GetFileName()), m_FileNameSize) == EOF)
|
if( fprintf( f, "F1 \"%s\" %d\n", CONV_TO_UTF8( m_FileName ), m_FileNameSize ) == EOF )
|
||||||
{
|
{
|
||||||
Failed = TRUE; return(Failed);
|
Success = false; return Success;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Generation de la liste des labels (entrees) de la sous feuille */
|
/* Generation de la liste des labels (entrees) de la sous feuille */
|
||||||
ii = 2;
|
|
||||||
SheetLabel = m_Label;
|
SheetLabel = m_Label;
|
||||||
|
int l_id = 2;
|
||||||
while( SheetLabel != NULL )
|
while( SheetLabel != NULL )
|
||||||
{
|
{
|
||||||
int type = 'U', side = 'L';
|
SheetLabel->m_Number = l_id;
|
||||||
|
SheetLabel->Save( f );
|
||||||
if( SheetLabel->m_Text.IsEmpty() ) continue;
|
l_id++;
|
||||||
if( SheetLabel->m_Edge ) side = 'R';
|
SheetLabel = SheetLabel->Next();
|
||||||
|
|
||||||
switch(SheetLabel->m_Shape)
|
|
||||||
{
|
|
||||||
case NET_INPUT: type = 'I'; break;
|
|
||||||
case NET_OUTPUT: type = 'O'; break;
|
|
||||||
case NET_BIDI: type = 'B'; break;
|
|
||||||
case NET_TRISTATE: type = 'T'; break;
|
|
||||||
case NET_UNSPECIFIED: type = 'U'; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(fprintf(f,"F%d \"%s\" %c %c %-3d %-3d %-3d\n", ii,
|
|
||||||
CONV_TO_UTF8(SheetLabel->m_Text), type, side,
|
|
||||||
SheetLabel->m_Pos.x, SheetLabel->m_Pos.y,
|
|
||||||
SheetLabel->m_Size.x) == EOF)
|
|
||||||
{
|
|
||||||
Failed = TRUE; break;
|
|
||||||
}
|
|
||||||
ii++;
|
|
||||||
SheetLabel = (DrawSheetLabelStruct*)SheetLabel->Pnext;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(f, "$EndSheet\n");
|
fprintf( f, "$EndSheet\n" );
|
||||||
return(Failed);
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************/
|
/***********************************************/
|
||||||
DrawSheetStruct* DrawSheetStruct::GenCopy()
|
DrawSheetStruct* DrawSheetStruct::GenCopy()
|
||||||
/***********************************************/
|
/***********************************************/
|
||||||
|
@ -174,7 +158,7 @@ DrawSheetStruct* DrawSheetStruct::GenCopy()
|
||||||
|
|
||||||
newitem->m_Label = NULL;
|
newitem->m_Label = NULL;
|
||||||
|
|
||||||
DrawSheetLabelStruct* Slabel = NULL, * label = m_Label;
|
Hierarchical_PIN_Sheet_Struct* Slabel = NULL, * label = m_Label;
|
||||||
|
|
||||||
if( label )
|
if( label )
|
||||||
{
|
{
|
||||||
|
@ -186,7 +170,7 @@ DrawSheetStruct* DrawSheetStruct::GenCopy()
|
||||||
while( label )
|
while( label )
|
||||||
{
|
{
|
||||||
Slabel->Pnext = label->GenCopy();
|
Slabel->Pnext = label->GenCopy();
|
||||||
Slabel = (DrawSheetLabelStruct*) Slabel->Pnext;
|
Slabel = (Hierarchical_PIN_Sheet_Struct*) Slabel->Pnext;
|
||||||
Slabel->m_Parent = newitem;
|
Slabel->m_Parent = newitem;
|
||||||
label = label->Next();
|
label = label->Next();
|
||||||
}
|
}
|
||||||
|
@ -217,19 +201,19 @@ void DrawSheetStruct::SwapData( DrawSheetStruct* copyitem )
|
||||||
EXCHG( m_NbLabel, copyitem->m_NbLabel );
|
EXCHG( m_NbLabel, copyitem->m_NbLabel );
|
||||||
|
|
||||||
// Ensure sheet labels have their .m_Parent member poiuntin really on their parent, after swapping.
|
// Ensure sheet labels have their .m_Parent member poiuntin really on their parent, after swapping.
|
||||||
DrawSheetLabelStruct * label = m_Label;
|
Hierarchical_PIN_Sheet_Struct* label = m_Label;
|
||||||
while( label )
|
while( label )
|
||||||
{
|
{
|
||||||
label->m_Parent = this;
|
label->m_Parent = this;
|
||||||
label = label->Next();
|
label = label->Next();
|
||||||
}
|
}
|
||||||
|
|
||||||
label = copyitem->m_Label;
|
label = copyitem->m_Label;
|
||||||
while( label )
|
while( label )
|
||||||
{
|
{
|
||||||
label->m_Parent = copyitem;
|
label->m_Parent = copyitem;
|
||||||
label = label->Next();
|
label = label->Next();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -263,7 +247,7 @@ void DrawSheetStruct::CleanupSheet( WinEDA_SchematicFrame* frame, wxDC* DC )
|
||||||
* if DC != NULL, redraw Sheet
|
* if DC != NULL, redraw Sheet
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
DrawSheetLabelStruct* Pinsheet, * NextPinsheet;
|
Hierarchical_PIN_Sheet_Struct* Pinsheet, * NextPinsheet;
|
||||||
|
|
||||||
if( !IsOK( frame, _( "Ok to cleanup this sheet" ) ) )
|
if( !IsOK( frame, _( "Ok to cleanup this sheet" ) ) )
|
||||||
return;
|
return;
|
||||||
|
@ -273,8 +257,8 @@ void DrawSheetStruct::CleanupSheet( WinEDA_SchematicFrame* frame, wxDC* DC )
|
||||||
{
|
{
|
||||||
/* Search Hlabel corresponding to this Pinsheet */
|
/* Search Hlabel corresponding to this Pinsheet */
|
||||||
|
|
||||||
EDA_BaseStruct* DrawStruct = m_AssociatedScreen->EEDrawList;
|
EDA_BaseStruct* DrawStruct = m_AssociatedScreen->EEDrawList;
|
||||||
SCH_HIERLABEL* HLabel = NULL;
|
SCH_HIERLABEL* HLabel = NULL;
|
||||||
for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Pnext )
|
for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Pnext )
|
||||||
{
|
{
|
||||||
if( DrawStruct->Type() != TYPE_SCH_HIERLABEL )
|
if( DrawStruct->Type() != TYPE_SCH_HIERLABEL )
|
||||||
|
@ -285,7 +269,7 @@ void DrawSheetStruct::CleanupSheet( WinEDA_SchematicFrame* frame, wxDC* DC )
|
||||||
HLabel = NULL;
|
HLabel = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
NextPinsheet = (DrawSheetLabelStruct*) Pinsheet->Pnext;
|
NextPinsheet = Pinsheet->Next();
|
||||||
if( HLabel == NULL ) // Hlabel not found: delete pinsheet
|
if( HLabel == NULL ) // Hlabel not found: delete pinsheet
|
||||||
{
|
{
|
||||||
frame->GetScreen()->SetModify();
|
frame->GetScreen()->SetModify();
|
||||||
|
@ -302,7 +286,7 @@ void DrawSheetStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& of
|
||||||
/**************************************************************************************/
|
/**************************************************************************************/
|
||||||
/* Draw the hierarchical sheet shape */
|
/* Draw the hierarchical sheet shape */
|
||||||
{
|
{
|
||||||
DrawSheetLabelStruct* SheetLabelStruct;
|
Hierarchical_PIN_Sheet_Struct* SheetLabelStruct;
|
||||||
int txtcolor;
|
int txtcolor;
|
||||||
wxString Text;
|
wxString Text;
|
||||||
int color;
|
int color;
|
||||||
|
@ -316,7 +300,7 @@ void DrawSheetStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& of
|
||||||
GRSetDrawMode( DC, DrawMode );
|
GRSetDrawMode( DC, DrawMode );
|
||||||
|
|
||||||
GRRect( &panel->m_ClipBox, DC, pos.x, pos.y,
|
GRRect( &panel->m_ClipBox, DC, pos.x, pos.y,
|
||||||
pos.x + m_Size.x, pos.y + m_Size.y, LineWidth, color );
|
pos.x + m_Size.x, pos.y + m_Size.y, LineWidth, color );
|
||||||
|
|
||||||
/* Draw text : SheetName */
|
/* Draw text : SheetName */
|
||||||
if( Color > 0 )
|
if( Color > 0 )
|
||||||
|
@ -326,9 +310,9 @@ void DrawSheetStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& of
|
||||||
|
|
||||||
Text = wxT( "Sheet: " ) + m_SheetName;
|
Text = wxT( "Sheet: " ) + m_SheetName;
|
||||||
DrawGraphicText( panel, DC,
|
DrawGraphicText( panel, DC,
|
||||||
wxPoint( pos.x, pos.y - 8 ), txtcolor,
|
wxPoint( pos.x, pos.y - 8 ), txtcolor,
|
||||||
Text, TEXT_ORIENT_HORIZ, wxSize( m_SheetNameSize, m_SheetNameSize ),
|
Text, TEXT_ORIENT_HORIZ, wxSize( m_SheetNameSize, m_SheetNameSize ),
|
||||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_BOTTOM, LineWidth );
|
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_BOTTOM, LineWidth );
|
||||||
|
|
||||||
/* Draw text : FileName */
|
/* Draw text : FileName */
|
||||||
if( Color >= 0 )
|
if( Color >= 0 )
|
||||||
|
@ -337,37 +321,44 @@ void DrawSheetStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& of
|
||||||
txtcolor = ReturnLayerColor( LAYER_SHEETFILENAME );
|
txtcolor = ReturnLayerColor( LAYER_SHEETFILENAME );
|
||||||
Text = wxT( "File: " ) + m_FileName;
|
Text = wxT( "File: " ) + m_FileName;
|
||||||
DrawGraphicText( panel, DC,
|
DrawGraphicText( panel, DC,
|
||||||
wxPoint( pos.x, pos.y + m_Size.y + 4 ),
|
wxPoint( pos.x, pos.y + m_Size.y + 4 ),
|
||||||
txtcolor,
|
txtcolor,
|
||||||
Text, TEXT_ORIENT_HORIZ, wxSize( m_FileNameSize, m_FileNameSize ),
|
Text, TEXT_ORIENT_HORIZ, wxSize( m_FileNameSize, m_FileNameSize ),
|
||||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_TOP, LineWidth );
|
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_TOP, LineWidth );
|
||||||
|
|
||||||
|
|
||||||
/* Draw text : SheetLabel */
|
/* Draw text : SheetLabel */
|
||||||
SheetLabelStruct = m_Label;
|
SheetLabelStruct = m_Label;
|
||||||
while( SheetLabelStruct != NULL )
|
while( SheetLabelStruct != NULL )
|
||||||
{
|
{
|
||||||
if ( !(SheetLabelStruct->m_Flags & IS_MOVED) )
|
if( !(SheetLabelStruct->m_Flags & IS_MOVED) )
|
||||||
SheetLabelStruct->Draw( panel, DC, offset, DrawMode, Color );
|
SheetLabelStruct->Draw( panel, DC, offset, DrawMode, Color );
|
||||||
SheetLabelStruct = (DrawSheetLabelStruct*) (SheetLabelStruct->Pnext);
|
SheetLabelStruct = SheetLabelStruct->Next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EDA_Rect DrawSheetStruct::GetBoundingBox(){
|
|
||||||
int dx, dy;
|
|
||||||
// Determine length of texts
|
|
||||||
wxString Text1 = wxT( "Sheet: " ) + m_SheetName;
|
|
||||||
wxString Text2 = wxT( "File: " ) + m_FileName;
|
|
||||||
int textlen1 = 10 * Text1.Len() * m_SheetNameSize / 9;
|
|
||||||
int textlen2 = 10 * Text2.Len() * m_FileNameSize / 9;
|
|
||||||
textlen1 = MAX(textlen1, textlen2);
|
|
||||||
dx = MAX(m_Size.x, textlen1 );
|
|
||||||
dy = m_Size.y+m_SheetNameSize+m_FileNameSize+16;
|
|
||||||
|
|
||||||
EDA_Rect box(wxPoint(m_Pos.x,m_Pos.y-m_SheetNameSize-8), wxSize(dx,dy) );
|
/*****************************************/
|
||||||
|
EDA_Rect DrawSheetStruct::GetBoundingBox()
|
||||||
|
/*****************************************/
|
||||||
|
{
|
||||||
|
int dx, dy;
|
||||||
|
|
||||||
|
// Determine length of texts
|
||||||
|
wxString Text1 = wxT( "Sheet: " ) + m_SheetName;
|
||||||
|
wxString Text2 = wxT( "File: " ) + m_FileName;
|
||||||
|
int textlen1 = 10 * Text1.Len() * m_SheetNameSize / 9;
|
||||||
|
int textlen2 = 10 * Text2.Len() * m_FileNameSize / 9;
|
||||||
|
|
||||||
|
textlen1 = MAX( textlen1, textlen2 );
|
||||||
|
dx = MAX( m_Size.x, textlen1 );
|
||||||
|
dy = m_Size.y + m_SheetNameSize + m_FileNameSize + 16;
|
||||||
|
|
||||||
|
EDA_Rect box( wxPoint( m_Pos.x, m_Pos.y - m_SheetNameSize - 8 ), wxSize( dx, dy ) );
|
||||||
return box;
|
return box;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************************/
|
/**************************************************************************************/
|
||||||
void DrawSheetStruct::DeleteAnnotation( bool recurse )
|
void DrawSheetStruct::DeleteAnnotation( bool recurse )
|
||||||
/**************************************************************************************/
|
/**************************************************************************************/
|
||||||
|
@ -440,8 +431,8 @@ bool DrawSheetStruct::SearchHierarchy( wxString filename, SCH_SCREEN** screen )
|
||||||
if( strct->Type() == DRAW_SHEET_STRUCT_TYPE )
|
if( strct->Type() == DRAW_SHEET_STRUCT_TYPE )
|
||||||
{
|
{
|
||||||
DrawSheetStruct* ss = (DrawSheetStruct*) strct;
|
DrawSheetStruct* ss = (DrawSheetStruct*) strct;
|
||||||
if( ss->m_AssociatedScreen &&
|
if( ss->m_AssociatedScreen
|
||||||
ss->m_AssociatedScreen->m_FileName.CmpNoCase( filename ) == 0 )
|
&& ss->m_AssociatedScreen->m_FileName.CmpNoCase( filename ) == 0 )
|
||||||
{
|
{
|
||||||
*screen = ss->m_AssociatedScreen;
|
*screen = ss->m_AssociatedScreen;
|
||||||
return true;
|
return true;
|
||||||
|
@ -575,36 +566,35 @@ void DrawSheetStruct::SetFileName( const wxString& aFilename )
|
||||||
* - if new filename is already used (a complex hierarchy) : reference the sheet.
|
* - if new filename is already used (a complex hierarchy) : reference the sheet.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool DrawSheetStruct::ChangeFileName( WinEDA_SchematicFrame * aFrame, const wxString& aFileName )
|
bool DrawSheetStruct::ChangeFileName( WinEDA_SchematicFrame* aFrame, const wxString& aFileName )
|
||||||
{
|
{
|
||||||
if( (GetFileName() == aFileName) && m_AssociatedScreen )
|
if( (GetFileName() == aFileName) && m_AssociatedScreen )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
SCH_SCREEN* Screen_to_use = NULL;
|
SCH_SCREEN* Screen_to_use = NULL;
|
||||||
wxString msg;
|
wxString msg;
|
||||||
bool LoadFromFile = false;
|
bool LoadFromFile = false;
|
||||||
|
|
||||||
|
|
||||||
if( g_RootSheet->SearchHierarchy( aFileName, &Screen_to_use ) ) //do we reload the data from the existing hierarchy
|
if( g_RootSheet->SearchHierarchy( aFileName, &Screen_to_use ) ) //do we reload the data from the existing hierarchy
|
||||||
{
|
{
|
||||||
if(m_AssociatedScreen) //upon initial load, this will be null.
|
if( m_AssociatedScreen ) //upon initial load, this will be null.
|
||||||
{
|
{
|
||||||
msg.Printf( _(
|
msg.Printf( _(
|
||||||
"A Sub Hierarchy named %s exists, Use it (The data in this sheet will be replaced)?" ),
|
"A Sub Hierarchy named %s exists, Use it (The data in this sheet will be replaced)?" ),
|
||||||
aFileName.GetData() );
|
aFileName.GetData() );
|
||||||
if( ! IsOK( NULL, msg ) )
|
if( !IsOK( NULL, msg ) )
|
||||||
{
|
{
|
||||||
DisplayInfo(NULL, _("Sheet Filename Renaming Aborted"));
|
DisplayInfo( NULL, _( "Sheet Filename Renaming Aborted" ) );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( wxFileExists( aFileName ) ) //do we reload the data from an existing file
|
else if( wxFileExists( aFileName ) ) //do we reload the data from an existing file
|
||||||
{
|
{
|
||||||
msg.Printf( _(
|
msg.Printf( _(
|
||||||
"A file named %s exists, load it (otherwise keep current sheet data if possible)?" ),
|
"A file named %s exists, load it (otherwise keep current sheet data if possible)?" ),
|
||||||
aFileName.GetData() );
|
aFileName.GetData() );
|
||||||
if( IsOK( NULL, msg ) )
|
if( IsOK( NULL, msg ) )
|
||||||
{
|
{
|
||||||
LoadFromFile = true;
|
LoadFromFile = true;
|
||||||
|
@ -616,11 +606,12 @@ bool DrawSheetStruct::ChangeFileName( WinEDA_SchematicFrame * aFrame, const wxSt
|
||||||
}
|
}
|
||||||
|
|
||||||
// if an associated screen exists, shared between this sheet and others sheets, what we do ?
|
// if an associated screen exists, shared between this sheet and others sheets, what we do ?
|
||||||
if( m_AssociatedScreen && ( m_AssociatedScreen->m_RefCount > 1 ))
|
if( m_AssociatedScreen && ( m_AssociatedScreen->m_RefCount > 1 ) )
|
||||||
{
|
{
|
||||||
msg = _("This sheet uses shared data in a complex hierarchy" ) ;
|
msg = _( "This sheet uses shared data in a complex hierarchy" );
|
||||||
msg << wxT("\n");
|
msg << wxT( "\n" );
|
||||||
msg << _("Do we convert it in a simple hierarchical sheet (otherwise delete current sheet data)");
|
msg << _(
|
||||||
|
"Do we convert it in a simple hierarchical sheet (otherwise delete current sheet data)" );
|
||||||
if( IsOK( NULL, msg ) )
|
if( IsOK( NULL, msg ) )
|
||||||
{
|
{
|
||||||
LoadFromFile = true;
|
LoadFromFile = true;
|
||||||
|
@ -629,8 +620,8 @@ bool DrawSheetStruct::ChangeFileName( WinEDA_SchematicFrame * aFrame, const wxSt
|
||||||
aFrame->SaveEEFile( m_AssociatedScreen, FILE_SAVE_AS );
|
aFrame->SaveEEFile( m_AssociatedScreen, FILE_SAVE_AS );
|
||||||
m_AssociatedScreen->m_FileName = oldfilename;
|
m_AssociatedScreen->m_FileName = oldfilename;
|
||||||
}
|
}
|
||||||
m_AssociatedScreen->m_RefCount--; //be careful with these
|
m_AssociatedScreen->m_RefCount--; //be careful with these
|
||||||
m_AssociatedScreen = NULL; //will be created later
|
m_AssociatedScreen = NULL; //will be created later
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -645,9 +636,9 @@ bool DrawSheetStruct::ChangeFileName( WinEDA_SchematicFrame * aFrame, const wxSt
|
||||||
m_AssociatedScreen = NULL; //so that we reload..
|
m_AssociatedScreen = NULL; //so that we reload..
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( LoadFromFile )
|
if( LoadFromFile )
|
||||||
Load( aFrame );
|
Load( aFrame );
|
||||||
else if ( Screen_to_use )
|
else if( Screen_to_use )
|
||||||
{
|
{
|
||||||
m_AssociatedScreen = Screen_to_use;
|
m_AssociatedScreen = Screen_to_use;
|
||||||
m_AssociatedScreen->m_RefCount++;
|
m_AssociatedScreen->m_RefCount++;
|
||||||
|
@ -666,129 +657,6 @@ bool DrawSheetStruct::ChangeFileName( WinEDA_SchematicFrame * aFrame, const wxSt
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/************************/
|
|
||||||
/* DrawSheetLabelStruct */
|
|
||||||
/************************/
|
|
||||||
|
|
||||||
/*******************************************************************/
|
|
||||||
DrawSheetLabelStruct::DrawSheetLabelStruct( DrawSheetStruct* parent,
|
|
||||||
const wxPoint& pos, const wxString& text ) :
|
|
||||||
SCH_ITEM( NULL, DRAW_SHEETLABEL_STRUCT_TYPE )
|
|
||||||
, EDA_TextStruct( text )
|
|
||||||
/*******************************************************************/
|
|
||||||
{
|
|
||||||
m_Layer = LAYER_SHEETLABEL;
|
|
||||||
m_Pos = pos;
|
|
||||||
m_Edge = 0;
|
|
||||||
m_Shape = NET_INPUT;
|
|
||||||
m_IsDangling = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************/
|
|
||||||
DrawSheetLabelStruct* DrawSheetLabelStruct::GenCopy()
|
|
||||||
/***********************************************************/
|
|
||||||
{
|
|
||||||
DrawSheetLabelStruct* newitem =
|
|
||||||
new DrawSheetLabelStruct( (DrawSheetStruct*) m_Parent, m_Pos, m_Text );
|
|
||||||
|
|
||||||
newitem->m_Edge = m_Edge;
|
|
||||||
newitem->m_Shape = m_Shape;
|
|
||||||
|
|
||||||
return newitem;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/********************************************************************************************/
|
|
||||||
void DrawSheetLabelStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
|
||||||
int DrawMode, int Color )
|
|
||||||
/********************************************************************************************/
|
|
||||||
/* Routine de dessin des Labels type hierarchie */
|
|
||||||
{
|
|
||||||
int side, txtcolor;
|
|
||||||
int posx, tposx, posy, size2;
|
|
||||||
wxSize size;
|
|
||||||
int NbSegm, coord[20];
|
|
||||||
int LineWidth = g_DrawMinimunLineWidth;
|
|
||||||
|
|
||||||
if( Color >= 0 )
|
|
||||||
txtcolor = Color;
|
|
||||||
else
|
|
||||||
txtcolor = ReturnLayerColor( m_Layer );
|
|
||||||
GRSetDrawMode( DC, DrawMode );
|
|
||||||
|
|
||||||
posx = m_Pos.x + offset.x; posy = m_Pos.y + offset.y; size = m_Size;
|
|
||||||
if( !m_Text.IsEmpty() )
|
|
||||||
{
|
|
||||||
if( m_Edge )
|
|
||||||
{
|
|
||||||
tposx = posx - size.x;
|
|
||||||
side = GR_TEXT_HJUSTIFY_RIGHT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tposx = posx + size.x + (size.x / 8);
|
|
||||||
side = GR_TEXT_HJUSTIFY_LEFT;
|
|
||||||
}
|
|
||||||
DrawGraphicText( panel, DC, wxPoint( tposx, posy ), txtcolor,
|
|
||||||
m_Text, TEXT_ORIENT_HORIZ, size,
|
|
||||||
side, GR_TEXT_VJUSTIFY_CENTER, LineWidth );
|
|
||||||
}
|
|
||||||
/* dessin du symbole de connexion */
|
|
||||||
|
|
||||||
if( m_Edge )
|
|
||||||
{
|
|
||||||
size.x = -size.x;
|
|
||||||
size.y = -size.y;
|
|
||||||
}
|
|
||||||
|
|
||||||
coord[0] = posx; coord[1] = posy; size2 = size.x / 2;
|
|
||||||
NbSegm = 0;
|
|
||||||
|
|
||||||
switch( m_Shape )
|
|
||||||
{
|
|
||||||
case 0: /* input |> */
|
|
||||||
coord[2] = posx; coord[3] = posy - size2;
|
|
||||||
coord[4] = posx + size2; coord[5] = posy - size2;
|
|
||||||
coord[6] = posx + size.x; coord[7] = posy;
|
|
||||||
coord[8] = posx + size2; coord[9] = posy + size2;
|
|
||||||
coord[10] = posx; coord[11] = posy + size2;
|
|
||||||
coord[12] = coord[0]; coord[13] = coord[1];
|
|
||||||
NbSegm = 7;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1: /* output <| */
|
|
||||||
coord[2] = posx + size2; coord[3] = posy - size2;
|
|
||||||
coord[4] = posx + size.x; coord[5] = posy - size2;
|
|
||||||
coord[6] = posx + size.x; coord[7] = posy + size2;
|
|
||||||
coord[8] = posx + size2; coord[9] = posy + size2;
|
|
||||||
coord[10] = coord[0]; coord[11] = coord[1];
|
|
||||||
NbSegm = 6;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: /* bidi <> */
|
|
||||||
case 3: /* TriSt <> */
|
|
||||||
coord[2] = posx + size2; coord[3] = posy - size2;
|
|
||||||
coord[4] = posx + size.x; coord[5] = posy;
|
|
||||||
coord[6] = posx + size2; coord[7] = posy + size2;
|
|
||||||
coord[8] = coord[0]; coord[9] = coord[1];
|
|
||||||
NbSegm = 5;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default: /* unsp []*/
|
|
||||||
coord[2] = posx; coord[3] = posy - size2;
|
|
||||||
coord[4] = posx + size.x; coord[5] = posy - size2;
|
|
||||||
coord[6] = posx + size.x; coord[7] = posy + size2;
|
|
||||||
coord[8] = posx; coord[9] = posy + size2;
|
|
||||||
coord[10] = coord[0]; coord[11] = coord[1];
|
|
||||||
NbSegm = 6;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
int FillShape = FALSE;
|
|
||||||
GRPoly( &panel->m_ClipBox, DC, NbSegm, coord, FillShape, LineWidth, txtcolor, txtcolor ); /* Poly Non rempli */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************/
|
/**********************************************/
|
||||||
/* class to handle a series of sheets *********/
|
/* class to handle a series of sheets *********/
|
||||||
|
|
|
@ -14,33 +14,43 @@
|
||||||
extern DrawSheetStruct* g_RootSheet;
|
extern DrawSheetStruct* g_RootSheet;
|
||||||
|
|
||||||
|
|
||||||
class DrawSheetLabelStruct : public SCH_ITEM,
|
class Hierarchical_PIN_Sheet_Struct : public SCH_ITEM,
|
||||||
public EDA_TextStruct
|
public EDA_TextStruct
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int m_Edge, m_Shape;
|
int m_Edge, m_Shape;
|
||||||
bool m_IsDangling; // TRUE non connected
|
bool m_IsDangling; // TRUE non connected
|
||||||
|
int m_Number; // used to numbered labels when writing data on file . m_Number >= 2
|
||||||
|
// value 0 is for sheet name and 1 for sheet filename
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DrawSheetLabelStruct( DrawSheetStruct* parent,
|
Hierarchical_PIN_Sheet_Struct( DrawSheetStruct* parent,
|
||||||
const wxPoint& pos = wxPoint( 0, 0 ),
|
const wxPoint& pos = wxPoint( 0, 0 ),
|
||||||
const wxString& text = wxEmptyString );
|
const wxString& text = wxEmptyString );
|
||||||
|
|
||||||
~DrawSheetLabelStruct() { }
|
~Hierarchical_PIN_Sheet_Struct() { }
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT( "DrawSheetLabelStruct" );
|
return wxT( "Hierarchical_PIN_Sheet_Struct" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DrawSheetLabelStruct* GenCopy();
|
Hierarchical_PIN_Sheet_Struct* GenCopy();
|
||||||
|
|
||||||
DrawSheetLabelStruct* Next()
|
Hierarchical_PIN_Sheet_Struct* Next()
|
||||||
{ return (DrawSheetLabelStruct*) Pnext; }
|
{ return (Hierarchical_PIN_Sheet_Struct*) Pnext; }
|
||||||
|
|
||||||
void Place( WinEDA_DrawFrame* frame, wxDC* DC );
|
void Place( WinEDA_DrawFrame* frame, wxDC* DC );
|
||||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||||
int draw_mode, int Color = -1 );
|
int draw_mode, int Color = -1 );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,7 +75,7 @@ public:
|
||||||
wxPoint m_Pos;
|
wxPoint m_Pos;
|
||||||
wxSize m_Size; /* Position and Size of sheet symbol */
|
wxSize m_Size; /* Position and Size of sheet symbol */
|
||||||
int m_Layer;
|
int m_Layer;
|
||||||
DrawSheetLabelStruct* m_Label; /* Points de connection, linked list.*/
|
Hierarchical_PIN_Sheet_Struct* m_Label; /* Points de connection, linked list.*/
|
||||||
int m_NbLabel; /* Nombre de points de connexion */
|
int m_NbLabel; /* Nombre de points de connexion */
|
||||||
SCH_SCREEN* m_AssociatedScreen; /* Associated Screen which handle the physical data
|
SCH_SCREEN* m_AssociatedScreen; /* Associated Screen which handle the physical data
|
||||||
* In complex hierarchies we can have many DrawSheetStruct using the same data
|
* In complex hierarchies we can have many DrawSheetStruct using the same data
|
||||||
|
@ -81,12 +91,13 @@ public:
|
||||||
return wxT( "DrawSheetStruct" );
|
return wxT( "DrawSheetStruct" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Function Save
|
/**
|
||||||
* Write on file a DrawSheetStruct description
|
* Function Save
|
||||||
* @param f = output file
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
* return an error: false if ok, true if error
|
* @param aFile The FILE to write to.
|
||||||
*/
|
* @return bool - true if success writing else false.
|
||||||
bool Save( FILE *f );
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
void Place( WinEDA_DrawFrame* frame, wxDC* DC );
|
void Place( WinEDA_DrawFrame* frame, wxDC* DC );
|
||||||
DrawSheetStruct* GenCopy();
|
DrawSheetStruct* GenCopy();
|
||||||
|
|
|
@ -0,0 +1,201 @@
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Name: class_hierarchical_PIN_sheet.cpp
|
||||||
|
// Purpose: member functions Hierarchical_PIN_Sheet_Struct
|
||||||
|
// header = class_drawsheet.h
|
||||||
|
// Author: jean-pierre Charras
|
||||||
|
// Modified by:
|
||||||
|
// Created: 08/02/2006 18:37:02
|
||||||
|
// RCS-ID:
|
||||||
|
// Copyright: License GNU
|
||||||
|
// Licence:
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// For compilers that support precompilation, includes "wx/wx.h".
|
||||||
|
#include "wx/wxprec.h"
|
||||||
|
|
||||||
|
#ifdef __BORLANDC__
|
||||||
|
#pragma hdrstop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WX_PRECOMP
|
||||||
|
#include "wx/wx.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "fctsys.h"
|
||||||
|
#include "gr_basic.h"
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
#include "program.h"
|
||||||
|
#include "libcmp.h"
|
||||||
|
#include "general.h"
|
||||||
|
|
||||||
|
#include "protos.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************/
|
||||||
|
Hierarchical_PIN_Sheet_Struct::Hierarchical_PIN_Sheet_Struct( DrawSheetStruct* parent,
|
||||||
|
const wxPoint& pos, const wxString& text ) :
|
||||||
|
SCH_ITEM( NULL, DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE ),
|
||||||
|
EDA_TextStruct( text )
|
||||||
|
/*******************************************************************/
|
||||||
|
{
|
||||||
|
m_Layer = LAYER_SHEETLABEL;
|
||||||
|
m_Pos = pos;
|
||||||
|
m_Edge = 0;
|
||||||
|
m_Shape = NET_INPUT;
|
||||||
|
m_IsDangling = TRUE;
|
||||||
|
m_Number = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************/
|
||||||
|
Hierarchical_PIN_Sheet_Struct* Hierarchical_PIN_Sheet_Struct::GenCopy()
|
||||||
|
/***********************************************************/
|
||||||
|
{
|
||||||
|
Hierarchical_PIN_Sheet_Struct* newitem =
|
||||||
|
new Hierarchical_PIN_Sheet_Struct( (DrawSheetStruct*) m_Parent, m_Pos, m_Text );
|
||||||
|
|
||||||
|
newitem->m_Edge = m_Edge;
|
||||||
|
newitem->m_Shape = m_Shape;
|
||||||
|
newitem->m_Number = m_Number;
|
||||||
|
|
||||||
|
return newitem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************************************************************/
|
||||||
|
void Hierarchical_PIN_Sheet_Struct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||||
|
int DrawMode, int Color )
|
||||||
|
/********************************************************************************************/
|
||||||
|
/* Routine de dessin des Labels type hierarchie */
|
||||||
|
{
|
||||||
|
int side, txtcolor;
|
||||||
|
int posx, tposx, posy, size2;
|
||||||
|
wxSize size;
|
||||||
|
int NbSegm, coord[20];
|
||||||
|
int LineWidth = g_DrawMinimunLineWidth;
|
||||||
|
|
||||||
|
if( Color >= 0 )
|
||||||
|
txtcolor = Color;
|
||||||
|
else
|
||||||
|
txtcolor = ReturnLayerColor( m_Layer );
|
||||||
|
GRSetDrawMode( DC, DrawMode );
|
||||||
|
|
||||||
|
posx = m_Pos.x + offset.x; posy = m_Pos.y + offset.y; size = m_Size;
|
||||||
|
if( !m_Text.IsEmpty() )
|
||||||
|
{
|
||||||
|
if( m_Edge )
|
||||||
|
{
|
||||||
|
tposx = posx - size.x;
|
||||||
|
side = GR_TEXT_HJUSTIFY_RIGHT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tposx = posx + size.x + (size.x / 8);
|
||||||
|
side = GR_TEXT_HJUSTIFY_LEFT;
|
||||||
|
}
|
||||||
|
DrawGraphicText( panel, DC, wxPoint( tposx, posy ), txtcolor,
|
||||||
|
m_Text, TEXT_ORIENT_HORIZ, size,
|
||||||
|
side, GR_TEXT_VJUSTIFY_CENTER, LineWidth );
|
||||||
|
}
|
||||||
|
/* dessin du symbole de connexion */
|
||||||
|
|
||||||
|
if( m_Edge )
|
||||||
|
{
|
||||||
|
size.x = -size.x;
|
||||||
|
size.y = -size.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
coord[0] = posx; coord[1] = posy; size2 = size.x / 2;
|
||||||
|
NbSegm = 0;
|
||||||
|
|
||||||
|
switch( m_Shape )
|
||||||
|
{
|
||||||
|
case 0: /* input |> */
|
||||||
|
coord[2] = posx; coord[3] = posy - size2;
|
||||||
|
coord[4] = posx + size2; coord[5] = posy - size2;
|
||||||
|
coord[6] = posx + size.x; coord[7] = posy;
|
||||||
|
coord[8] = posx + size2; coord[9] = posy + size2;
|
||||||
|
coord[10] = posx; coord[11] = posy + size2;
|
||||||
|
coord[12] = coord[0]; coord[13] = coord[1];
|
||||||
|
NbSegm = 7;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1: /* output <| */
|
||||||
|
coord[2] = posx + size2; coord[3] = posy - size2;
|
||||||
|
coord[4] = posx + size.x; coord[5] = posy - size2;
|
||||||
|
coord[6] = posx + size.x; coord[7] = posy + size2;
|
||||||
|
coord[8] = posx + size2; coord[9] = posy + size2;
|
||||||
|
coord[10] = coord[0]; coord[11] = coord[1];
|
||||||
|
NbSegm = 6;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: /* bidi <> */
|
||||||
|
case 3: /* TriSt <> */
|
||||||
|
coord[2] = posx + size2; coord[3] = posy - size2;
|
||||||
|
coord[4] = posx + size.x; coord[5] = posy;
|
||||||
|
coord[6] = posx + size2; coord[7] = posy + size2;
|
||||||
|
coord[8] = coord[0]; coord[9] = coord[1];
|
||||||
|
NbSegm = 5;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: /* unsp []*/
|
||||||
|
coord[2] = posx; coord[3] = posy - size2;
|
||||||
|
coord[4] = posx + size.x; coord[5] = posy - size2;
|
||||||
|
coord[6] = posx + size.x; coord[7] = posy + size2;
|
||||||
|
coord[8] = posx; coord[9] = posy + size2;
|
||||||
|
coord[10] = coord[0]; coord[11] = coord[1];
|
||||||
|
NbSegm = 6;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
int FillShape = FALSE;
|
||||||
|
GRPoly( &panel->m_ClipBox, DC, NbSegm, coord, FillShape, LineWidth, txtcolor, txtcolor ); /* Poly Non rempli */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Hierarchical_PIN_Sheet_Struct::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
int type = 'U', side = 'L';
|
||||||
|
|
||||||
|
if( m_Text.IsEmpty() )
|
||||||
|
return true;
|
||||||
|
if( m_Edge )
|
||||||
|
side = 'R';
|
||||||
|
|
||||||
|
switch( m_Shape )
|
||||||
|
{
|
||||||
|
case NET_INPUT:
|
||||||
|
type = 'I'; break;
|
||||||
|
|
||||||
|
case NET_OUTPUT:
|
||||||
|
type = 'O'; break;
|
||||||
|
|
||||||
|
case NET_BIDI:
|
||||||
|
type = 'B'; break;
|
||||||
|
|
||||||
|
case NET_TRISTATE:
|
||||||
|
type = 'T'; break;
|
||||||
|
|
||||||
|
case NET_UNSPECIFIED:
|
||||||
|
type = 'U'; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( fprintf( aFile, "F%d \"%s\" %c %c %-3d %-3d %-3d\n", m_Number,
|
||||||
|
CONV_TO_UTF8( m_Text ), type, side,
|
||||||
|
m_Pos.x, m_Pos.y,
|
||||||
|
m_Size.x ) == EOF )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -13,6 +13,10 @@
|
||||||
|
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
|
|
||||||
|
/****************************/
|
||||||
|
/* class DrawBusEntryStruct */
|
||||||
|
/***************************/
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************/
|
/*******************************************************************/
|
||||||
DrawBusEntryStruct::DrawBusEntryStruct( const wxPoint& pos, int shape, int id ) :
|
DrawBusEntryStruct::DrawBusEntryStruct( const wxPoint& pos, int shape, int id ) :
|
||||||
|
@ -37,7 +41,7 @@ DrawBusEntryStruct::DrawBusEntryStruct( const wxPoint& pos, int shape, int id )
|
||||||
|
|
||||||
|
|
||||||
/*************************************/
|
/*************************************/
|
||||||
wxPoint DrawBusEntryStruct::m_End()
|
wxPoint DrawBusEntryStruct::m_End() const
|
||||||
/*************************************/
|
/*************************************/
|
||||||
|
|
||||||
// retourne la coord de fin du raccord
|
// retourne la coord de fin du raccord
|
||||||
|
@ -61,6 +65,39 @@ DrawBusEntryStruct* DrawBusEntryStruct::GenCopy()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool DrawBusEntryStruct::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
bool success = true;
|
||||||
|
|
||||||
|
const char* layer = "Wire";
|
||||||
|
const char* width = "Line";
|
||||||
|
|
||||||
|
if( GetLayer() == LAYER_BUS )
|
||||||
|
{
|
||||||
|
layer = "Bus"; width = "Bus";
|
||||||
|
}
|
||||||
|
|
||||||
|
if( fprintf( aFile, "Entry %s %s\n", layer, width ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
if( fprintf( aFile, "\t%-4d %-4d %-4d %-4d\n",
|
||||||
|
m_Pos.x, m_Pos.y,
|
||||||
|
m_End().x, m_End().y ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/****************************/
|
/****************************/
|
||||||
/* class DrawJunctionStruct */
|
/* class DrawJunctionStruct */
|
||||||
/***************************/
|
/***************************/
|
||||||
|
@ -86,6 +123,37 @@ DrawJunctionStruct* DrawJunctionStruct::GenCopy()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool DrawJunctionStruct::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
bool success = true;
|
||||||
|
|
||||||
|
if( fprintf( aFile, "Connection ~ %-4d %-4d\n", m_Pos.x, m_Pos.y ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EDA_Rect DrawJunctionStruct::GetBoundingBox()
|
||||||
|
{
|
||||||
|
int width = DRAWJUNCTION_SIZE * 2;
|
||||||
|
int xmin = m_Pos.x - DRAWJUNCTION_SIZE;
|
||||||
|
int ymin = m_Pos.y - DRAWJUNCTION_SIZE;
|
||||||
|
|
||||||
|
EDA_Rect ret( wxPoint( xmin, ymin ), wxSize( width, width ) );
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*****************************/
|
/*****************************/
|
||||||
/* class DrawNoConnectStruct */
|
/* class DrawNoConnectStruct */
|
||||||
/*****************************/
|
/*****************************/
|
||||||
|
@ -107,6 +175,25 @@ DrawNoConnectStruct* DrawNoConnectStruct::GenCopy()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool DrawNoConnectStruct::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
bool success = true;
|
||||||
|
|
||||||
|
if( fprintf( aFile, "NoConn ~ %-4d %-4d\n", m_Pos.x, m_Pos.y ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**************************/
|
/**************************/
|
||||||
/* class DrawMarkerStruct */
|
/* class DrawMarkerStruct */
|
||||||
/**************************/
|
/**************************/
|
||||||
|
@ -143,7 +230,8 @@ wxString DrawMarkerStruct::GetComment()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined (DEBUG)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Show
|
* Function Show
|
||||||
* is used to output the object tree, currently for debugging only.
|
* is used to output the object tree, currently for debugging only.
|
||||||
|
@ -154,11 +242,36 @@ wxString DrawMarkerStruct::GetComment()
|
||||||
void DrawMarkerStruct::Show( int nestLevel, std::ostream& os )
|
void DrawMarkerStruct::Show( int nestLevel, std::ostream& os )
|
||||||
{
|
{
|
||||||
// for now, make it look like XML:
|
// for now, make it look like XML:
|
||||||
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() << m_Pos
|
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() << m_Pos
|
||||||
<< "/>\n";
|
<< "/>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool DrawMarkerStruct::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
bool success = true;
|
||||||
|
wxString msg;
|
||||||
|
|
||||||
|
if( fprintf( aFile, "Kmarq %c %-4d %-4d \"%s\" F=%X\n",
|
||||||
|
m_Type + 'A',
|
||||||
|
m_Pos.x, m_Pos.y,
|
||||||
|
CONV_TO_UTF8( m_Comment ), m_MarkFlags ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***************************/
|
/***************************/
|
||||||
/* Class EDA_DrawLineStruct */
|
/* Class EDA_DrawLineStruct */
|
||||||
|
@ -218,7 +331,8 @@ bool EDA_DrawLineStruct::IsOneEndPointAt( const wxPoint& pos )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined (DEBUG)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Show
|
* Function Show
|
||||||
* is used to output the object tree, currently for debugging only.
|
* is used to output the object tree, currently for debugging only.
|
||||||
|
@ -229,65 +343,70 @@ bool EDA_DrawLineStruct::IsOneEndPointAt( const wxPoint& pos )
|
||||||
void EDA_DrawLineStruct::Show( int nestLevel, std::ostream& os )
|
void EDA_DrawLineStruct::Show( int nestLevel, std::ostream& os )
|
||||||
{
|
{
|
||||||
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() <<
|
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() <<
|
||||||
" layer=\"" << m_Layer << '"' <<
|
" layer=\"" << m_Layer << '"' <<
|
||||||
" width=\"" << m_Width << '"' <<
|
" width=\"" << m_Width << '"' <<
|
||||||
" startIsDangling=\"" << m_StartIsDangling << '"' <<
|
" startIsDangling=\"" << m_StartIsDangling << '"' <<
|
||||||
" endIsDangling=\"" << m_EndIsDangling << '"' << ">" <<
|
" endIsDangling=\"" << m_EndIsDangling << '"' << ">" <<
|
||||||
" <start" << m_Start << "/>" <<
|
" <start" << m_Start << "/>" <<
|
||||||
" <end" << m_End << "/>" <<
|
" <end" << m_End << "/>" <<
|
||||||
"</" << GetClass().Lower().mb_str() << ">\n";
|
"</" << GetClass().Lower().mb_str() << ">\n";
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
EDA_Rect EDA_DrawLineStruct::GetBoundingBox()
|
EDA_Rect EDA_DrawLineStruct::GetBoundingBox()
|
||||||
{
|
{
|
||||||
int width = 25;
|
int width = 25;
|
||||||
|
|
||||||
int xmin = MIN( m_Start.x, m_End.x ) - width;
|
int xmin = MIN( m_Start.x, m_End.x ) - width;
|
||||||
int ymin = MIN( m_Start.y, m_End.y ) - width;
|
int ymin = MIN( m_Start.y, m_End.y ) - width;
|
||||||
|
|
||||||
int xmax = MAX( m_Start.x, m_End.x ) + width;
|
int xmax = MAX( m_Start.x, m_End.x ) + width;
|
||||||
int ymax = MAX( m_Start.y, m_End.y ) + width;
|
int ymax = MAX( m_Start.y, m_End.y ) + width;
|
||||||
|
|
||||||
// return a rectangle which is [pos,dim) in nature. therefore the +1
|
// return a rectangle which is [pos,dim) in nature. therefore the +1
|
||||||
EDA_Rect ret( wxPoint( xmin, ymin ), wxSize( xmax-xmin+1, ymax-ymin+1 ) );
|
EDA_Rect ret( wxPoint( xmin, ymin ), wxSize( xmax - xmin + 1, ymax - ymin + 1 ) );
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
EDA_Rect DrawJunctionStruct::GetBoundingBox()
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool EDA_DrawLineStruct::Save( FILE* aFile ) const
|
||||||
{
|
{
|
||||||
int width = DRAWJUNCTION_SIZE * 2;
|
bool success = true;
|
||||||
int xmin = m_Pos.x - DRAWJUNCTION_SIZE ;
|
|
||||||
int ymin = m_Pos.y - DRAWJUNCTION_SIZE;
|
|
||||||
|
|
||||||
EDA_Rect ret( wxPoint( xmin, ymin ), wxSize( width, width ) );
|
const char* layer = "Notes";
|
||||||
|
const char* width = "Line";
|
||||||
|
|
||||||
return ret;
|
if( GetLayer() == LAYER_WIRE )
|
||||||
};
|
layer = "Wire";
|
||||||
|
if( GetLayer() == LAYER_BUS )
|
||||||
|
layer = "Bus";
|
||||||
EDA_Rect SCH_COMPONENT::GetBoundingBox()
|
if( m_Width != GR_NORM_WIDTH )
|
||||||
{
|
layer = "Bus";
|
||||||
const int PADDING = 40;
|
if( fprintf( aFile, "Wire %s %s\n", layer, width ) == EOF )
|
||||||
|
|
||||||
// This gives a reasonable approximation (but some things are missing so...
|
|
||||||
EDA_Rect ret = GetBoundaryBox();
|
|
||||||
|
|
||||||
// Include BoundingBoxes of fields
|
|
||||||
for( int i = REFERENCE; i < NUMBER_OF_FIELDS; i++ )
|
|
||||||
{
|
{
|
||||||
ret.Merge( m_Field[i].GetBoundaryBox() );
|
success = false;
|
||||||
|
}
|
||||||
|
if (fprintf( aFile, "\t%-4d %-4d %-4d %-4d\n",
|
||||||
|
m_Start.x,m_Start.y,
|
||||||
|
m_End.x,m_End.y) == EOF)
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ... add padding
|
return success;
|
||||||
ret.Inflate(PADDING, PADDING);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/****************************/
|
/****************************/
|
||||||
/* Class DrawPolylineStruct */
|
/* Class DrawPolylineStruct */
|
||||||
/****************************/
|
/****************************/
|
||||||
|
@ -345,3 +464,43 @@ DrawPolylineStruct* DrawPolylineStruct::GenCopy()
|
||||||
|
|
||||||
return newitem;
|
return newitem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool DrawPolylineStruct::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
bool success = true;
|
||||||
|
|
||||||
|
const char* layer = "Notes";
|
||||||
|
const char* width = "Line";
|
||||||
|
|
||||||
|
if( GetLayer() == LAYER_WIRE )
|
||||||
|
layer = "Wire";
|
||||||
|
if( GetLayer() == LAYER_BUS )
|
||||||
|
layer = "Bus";
|
||||||
|
if( m_Width != GR_NORM_WIDTH )
|
||||||
|
width = "Bus";
|
||||||
|
if( fprintf( aFile, "Poly %s %s %d\n",
|
||||||
|
width, layer, m_NumOfPoints ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
for( int ii = 0; ii < m_NumOfPoints; ii++ )
|
||||||
|
{
|
||||||
|
if( fprintf( aFile, "\t%-4d %-4d\n",
|
||||||
|
m_Points[ii * 2],
|
||||||
|
m_Points[ii * 2 + 1] ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
|
@ -31,7 +31,7 @@ void SetStructFather( EDA_BaseStruct* Struct, BASE_SCREEN* Screen )
|
||||||
Struct->m_Parent = Screen;
|
Struct->m_Parent = Screen;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
case DRAW_PICK_ITEM_STRUCT_TYPE:
|
case DRAW_PICK_ITEM_STRUCT_TYPE:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,13 @@ public:
|
||||||
virtual void ClearUndoRedoList();
|
virtual void ClearUndoRedoList();
|
||||||
virtual void AddItemToUndoList( EDA_BaseStruct* item );
|
virtual void AddItemToUndoList( EDA_BaseStruct* item );
|
||||||
virtual void AddItemToRedoList( EDA_BaseStruct* item );
|
virtual void AddItemToRedoList( EDA_BaseStruct* item );
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -115,40 +115,6 @@ void SCH_TEXT::Place( WinEDA_DrawFrame* frame, wxDC* DC )
|
||||||
SCH_ITEM::Place( frame, DC );
|
SCH_ITEM::Place( frame, DC );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
SCH_LABEL::SCH_LABEL( const wxPoint& pos, const wxString& text ) :
|
|
||||||
SCH_TEXT( pos, text, TYPE_SCH_LABEL )
|
|
||||||
/****************************************************************************/
|
|
||||||
{
|
|
||||||
m_Layer = LAYER_LOCLABEL;
|
|
||||||
m_Shape = NET_INPUT;
|
|
||||||
m_IsDangling = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************/
|
|
||||||
SCH_GLOBALLABEL::SCH_GLOBALLABEL( const wxPoint& pos, const wxString& text ) :
|
|
||||||
SCH_TEXT( pos, text, TYPE_SCH_GLOBALLABEL )
|
|
||||||
/***********************************************************************************/
|
|
||||||
{
|
|
||||||
m_Layer = LAYER_GLOBLABEL;
|
|
||||||
m_Shape = NET_BIDI;
|
|
||||||
m_IsDangling = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************/
|
|
||||||
SCH_HIERLABEL::SCH_HIERLABEL( const wxPoint& pos, const wxString& text ) :
|
|
||||||
SCH_TEXT( pos, text, TYPE_SCH_HIERLABEL )
|
|
||||||
/***********************************************************************************/
|
|
||||||
{
|
|
||||||
m_Layer = LAYER_HIERLABEL;
|
|
||||||
m_Shape = NET_INPUT;
|
|
||||||
m_IsDangling = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************************/
|
/*******************************************************************************************/
|
||||||
void SCH_TEXT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
void SCH_TEXT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||||
int DrawMode, int Color )
|
int DrawMode, int Color )
|
||||||
|
@ -209,6 +175,126 @@ void SCH_TEXT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool SCH_TEXT::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
bool success = true;
|
||||||
|
if( fprintf( aFile, "Text Notes %-4d %-4d %-4d %-4d ~\n%s\n",
|
||||||
|
m_Pos.x, m_Pos.y,
|
||||||
|
m_Orient, m_Size.x,
|
||||||
|
CONV_TO_UTF8( m_Text ) ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************/
|
||||||
|
SCH_LABEL::SCH_LABEL( const wxPoint& pos, const wxString& text ) :
|
||||||
|
SCH_TEXT( pos, text, TYPE_SCH_LABEL )
|
||||||
|
/****************************************************************************/
|
||||||
|
{
|
||||||
|
m_Layer = LAYER_LOCLABEL;
|
||||||
|
m_Shape = NET_INPUT;
|
||||||
|
m_IsDangling = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool SCH_LABEL::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
bool success = true;
|
||||||
|
char shape = '~';
|
||||||
|
if( fprintf( aFile, "Text Label %-4d %-4d %-4d %-4d %c\n%s\n",
|
||||||
|
m_Pos.x, m_Pos.y,
|
||||||
|
m_Orient, m_Size.x, shape,
|
||||||
|
CONV_TO_UTF8( m_Text ) ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************************/
|
||||||
|
SCH_GLOBALLABEL::SCH_GLOBALLABEL( const wxPoint& pos, const wxString& text ) :
|
||||||
|
SCH_TEXT( pos, text, TYPE_SCH_GLOBALLABEL )
|
||||||
|
/***********************************************************************************/
|
||||||
|
{
|
||||||
|
m_Layer = LAYER_GLOBLABEL;
|
||||||
|
m_Shape = NET_BIDI;
|
||||||
|
m_IsDangling = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool SCH_GLOBALLABEL::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
bool success = true;
|
||||||
|
if( fprintf( aFile, "Text GLabel %-4d %-4d %-4d %-4d %s\n%s\n",
|
||||||
|
m_Pos.x, m_Pos.y,
|
||||||
|
m_Orient, m_Size.x,
|
||||||
|
SheetLabelType[m_Shape],
|
||||||
|
CONV_TO_UTF8( m_Text ) ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************************/
|
||||||
|
SCH_HIERLABEL::SCH_HIERLABEL( const wxPoint& pos, const wxString& text ) :
|
||||||
|
SCH_TEXT( pos, text, TYPE_SCH_HIERLABEL )
|
||||||
|
/***********************************************************************************/
|
||||||
|
{
|
||||||
|
m_Layer = LAYER_HIERLABEL;
|
||||||
|
m_Shape = NET_INPUT;
|
||||||
|
m_IsDangling = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool SCH_HIERLABEL::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
bool success = true;
|
||||||
|
if( fprintf( aFile, "Text HLabel %-4d %-4d %-4d %-4d %s\n%s\n",
|
||||||
|
m_Pos.x, m_Pos.y,
|
||||||
|
m_Orient, m_Size.x,
|
||||||
|
SheetLabelType[m_Shape],
|
||||||
|
CONV_TO_UTF8( m_Text ) ) == EOF )
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************************************/
|
/*********************************************************************************************/
|
||||||
void SCH_LABEL::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
void SCH_LABEL::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||||
int DrawMode, int Color )
|
int DrawMode, int Color )
|
||||||
|
|
|
@ -103,6 +103,15 @@ public:
|
||||||
|
|
||||||
virtual void Place( WinEDA_DrawFrame* frame, wxDC* DC );
|
virtual void Place( WinEDA_DrawFrame* frame, wxDC* DC );
|
||||||
EDA_Rect GetBoundingBox();
|
EDA_Rect GetBoundingBox();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -118,6 +127,14 @@ public:
|
||||||
{
|
{
|
||||||
return wxT( "SCH_LABEL" );
|
return wxT( "SCH_LABEL" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -145,6 +162,14 @@ public:
|
||||||
*/
|
*/
|
||||||
void CreateGraphicShape( int* corner_list, const wxPoint & Pos );
|
void CreateGraphicShape( int* corner_list, const wxPoint & Pos );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
EDA_Rect GetBoundingBox();
|
EDA_Rect GetBoundingBox();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -174,6 +199,14 @@ public:
|
||||||
*/
|
*/
|
||||||
void CreateGraphicShape( int* corner_list, const wxPoint & Pos );
|
void CreateGraphicShape( int* corner_list, const wxPoint & Pos );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
EDA_Rect GetBoundingBox();
|
EDA_Rect GetBoundingBox();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -113,7 +113,7 @@ void BreakSegmentOnJunction( SCH_SCREEN* Screen )
|
||||||
case DRAW_MARKER_STRUCT_TYPE:
|
case DRAW_MARKER_STRUCT_TYPE:
|
||||||
case TYPE_SCH_TEXT:
|
case TYPE_SCH_TEXT:
|
||||||
case DRAW_SHEET_STRUCT_TYPE:
|
case DRAW_SHEET_STRUCT_TYPE:
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
/* Methodes de base de gestion des classes des elements de schematique */
|
/* component_class.cpp : handle the class SCH_COMPONENT */
|
||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
|
|
||||||
#include "fctsys.h"
|
#include "fctsys.h"
|
||||||
|
@ -17,6 +17,7 @@
|
||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
|
|
||||||
#include <wx/arrimpl.cpp>
|
#include <wx/arrimpl.cpp>
|
||||||
|
#include <wx/tokenzr.h>
|
||||||
|
|
||||||
WX_DEFINE_OBJARRAY( ArrayOfSheetLists );
|
WX_DEFINE_OBJARRAY( ArrayOfSheetLists );
|
||||||
|
|
||||||
|
@ -31,8 +32,27 @@ WX_DEFINE_OBJARRAY( ArrayOfSheetLists );
|
||||||
*/
|
*/
|
||||||
void SCH_COMPONENT::AddHierarchicalReference( const wxString& path, const wxString& ref )
|
void SCH_COMPONENT::AddHierarchicalReference( const wxString& path, const wxString& ref )
|
||||||
{
|
{
|
||||||
m_Paths.Add( path );
|
|
||||||
m_References.Add( ref );
|
wxString h_path, h_ref;
|
||||||
|
wxStringTokenizer tokenizer;
|
||||||
|
wxString separators( wxT( " " ) );
|
||||||
|
|
||||||
|
// Search for an existing path and remove it if found (should not occur)
|
||||||
|
for( unsigned ii = 0; ii<m_PathsAndReferences.GetCount(); ii++ )
|
||||||
|
{
|
||||||
|
tokenizer.SetString( m_PathsAndReferences[ii], separators );
|
||||||
|
h_path = tokenizer.GetNextToken();
|
||||||
|
if( h_path.Cmp( path ) == 0 )
|
||||||
|
{
|
||||||
|
m_PathsAndReferences.RemoveAt(ii);
|
||||||
|
ii --;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h_ref = path + wxT( " " ) + ref;
|
||||||
|
|
||||||
|
h_ref << wxT( " " ) << m_Multi;
|
||||||
|
m_PathsAndReferences.Add( h_ref );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -100,17 +120,21 @@ wxString SCH_COMPONENT::GetPath( DrawSheetPath* sheet )
|
||||||
const wxString SCH_COMPONENT::GetRef( DrawSheetPath* sheet )
|
const wxString SCH_COMPONENT::GetRef( DrawSheetPath* sheet )
|
||||||
/********************************************************************/
|
/********************************************************************/
|
||||||
{
|
{
|
||||||
wxString path = GetPath( sheet );
|
wxString path = GetPath( sheet );
|
||||||
unsigned int i;
|
wxString h_path, h_ref;
|
||||||
|
wxStringTokenizer tokenizer;
|
||||||
|
wxString separators( wxT( " " ) );
|
||||||
|
|
||||||
for( i = 0; i<m_Paths.GetCount(); i++ )
|
for( unsigned ii = 0; ii<m_PathsAndReferences.GetCount(); ii++ )
|
||||||
{
|
{
|
||||||
if( m_Paths[i].Cmp( path ) == 0 )
|
tokenizer.SetString( m_PathsAndReferences[ii], separators );
|
||||||
|
h_path = tokenizer.GetNextToken();
|
||||||
|
if( h_path.Cmp( path ) == 0 )
|
||||||
{
|
{
|
||||||
/*printf("GetRef path: %s ref: %s\n",
|
h_ref = tokenizer.GetNextToken();
|
||||||
* CONV_TO_UTF8(m_Paths[i]),
|
|
||||||
* CONV_TO_UTF8(m_References[i])); */
|
//printf("GetRef hpath: %s\n",CONV_TO_UTF8(m_PathsAndReferences[ii]));
|
||||||
return m_References[i];
|
return h_ref;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,25 +157,34 @@ void SCH_COMPONENT::SetRef( DrawSheetPath* sheet, const wxString& ref )
|
||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
{
|
{
|
||||||
//check to see if it is already there before inserting it
|
//check to see if it is already there before inserting it
|
||||||
wxString path = GetPath( sheet );
|
wxString path = GetPath( sheet );
|
||||||
|
|
||||||
// printf( "SetRef path: %s ref: %s\n", CONV_TO_UTF8( path ), CONV_TO_UTF8( ref ) ); // Debug
|
// printf( "SetRef path: %s ref: %s\n", CONV_TO_UTF8( path ), CONV_TO_UTF8( ref ) ); // Debug
|
||||||
unsigned int i;
|
bool notInArray = true;
|
||||||
bool notInArray = true;
|
|
||||||
|
|
||||||
for( i = 0; i<m_Paths.GetCount(); i++ )
|
wxString h_path, h_ref;
|
||||||
|
wxStringTokenizer tokenizer;
|
||||||
|
wxString separators( wxT( " " ) );
|
||||||
|
|
||||||
|
for( unsigned ii = 0; ii<m_PathsAndReferences.GetCount(); ii++ )
|
||||||
{
|
{
|
||||||
if( m_Paths[i].Cmp( path ) == 0 )
|
tokenizer.SetString( m_PathsAndReferences[ii], separators );
|
||||||
|
h_path = tokenizer.GetNextToken();
|
||||||
|
if( h_path.Cmp( path ) == 0 )
|
||||||
{
|
{
|
||||||
//just update the reference text, not the timestamp.
|
//just update the reference text, not the timestamp.
|
||||||
m_References.RemoveAt( i );
|
h_ref = h_path + wxT( " " ) + ref;
|
||||||
m_References.Insert( ref, i );
|
h_ref += wxT( " " );
|
||||||
|
tokenizer.GetNextToken(); // Skip old reference
|
||||||
|
h_ref += tokenizer.GetNextToken(); // Add part selection
|
||||||
|
// Ann the part selection
|
||||||
|
m_PathsAndReferences[ii] = h_ref;
|
||||||
notInArray = false;
|
notInArray = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( notInArray )
|
if( notInArray )
|
||||||
AddHierarchicalReference(path, ref);
|
AddHierarchicalReference( path, ref );
|
||||||
|
|
||||||
if( m_Field[REFERENCE].m_Text.IsEmpty()
|
if( m_Field[REFERENCE].m_Text.IsEmpty()
|
||||||
|| ( abs( m_Field[REFERENCE].m_Pos.x - m_Pos.x ) +
|
|| ( abs( m_Field[REFERENCE].m_Pos.x - m_Pos.x ) +
|
||||||
|
@ -204,14 +237,14 @@ SCH_COMPONENT::SCH_COMPONENT( const wxPoint& aPos ) :
|
||||||
/* initialisation des Fields */
|
/* initialisation des Fields */
|
||||||
for( ii = 0; ii < NUMBER_OF_FIELDS; ii++ )
|
for( ii = 0; ii < NUMBER_OF_FIELDS; ii++ )
|
||||||
{
|
{
|
||||||
m_Field[ii].m_Pos = m_Pos;
|
m_Field[ii].m_Pos = m_Pos;
|
||||||
m_Field[ii].SetLayer(LAYER_FIELDS);
|
m_Field[ii].SetLayer( LAYER_FIELDS );
|
||||||
m_Field[ii].m_FieldId = REFERENCE + ii;
|
m_Field[ii].m_FieldId = REFERENCE + ii;
|
||||||
m_Field[ii].m_Parent = this;
|
m_Field[ii].m_Parent = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Field[VALUE].SetLayer(LAYER_VALUEPART);
|
m_Field[VALUE].SetLayer( LAYER_VALUEPART );
|
||||||
m_Field[REFERENCE].SetLayer(LAYER_REFERENCEPART);
|
m_Field[REFERENCE].SetLayer( LAYER_REFERENCEPART );
|
||||||
|
|
||||||
m_PrefixString = wxString( _( "U" ) );
|
m_PrefixString = wxString( _( "U" ) );
|
||||||
}
|
}
|
||||||
|
@ -347,27 +380,35 @@ void SCH_COMPONENT::ClearAnnotation()
|
||||||
/* Suppress annotation ( i.i IC23 changed to IC? and part reset to 1)
|
/* Suppress annotation ( i.i IC23 changed to IC? and part reset to 1)
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
wxString defRef = m_PrefixString;
|
wxString defRef = m_PrefixString;
|
||||||
|
bool KeepMulti = false;
|
||||||
|
EDA_LibComponentStruct* Entry;
|
||||||
|
|
||||||
|
Entry = FindLibPart( m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
|
||||||
|
|
||||||
|
if( Entry && Entry->m_UnitSelectionLocked )
|
||||||
|
KeepMulti = true;
|
||||||
|
|
||||||
while( defRef.Last() == '?' )
|
while( defRef.Last() == '?' )
|
||||||
defRef.RemoveLast();
|
defRef.RemoveLast();
|
||||||
|
|
||||||
defRef.Append( wxT( "?" ) );
|
defRef.Append( wxT( "?" ) );
|
||||||
m_References.Empty();
|
|
||||||
unsigned int i;
|
wxString multi = wxT( "1" );
|
||||||
for( i = 0; i< m_Paths.GetCount(); i++ )
|
wxString NewHref;
|
||||||
|
for( unsigned int ii = 0; ii< m_PathsAndReferences.GetCount(); ii++ )
|
||||||
{
|
{
|
||||||
m_References.Add( defRef );
|
if( KeepMulti ) // Get and keep part selection
|
||||||
|
multi = m_PathsAndReferences[ii].AfterLast( wxChar( ' ' ) );
|
||||||
|
NewHref = m_PathsAndReferences[ii].BeforeFirst( wxChar( ' ' ) );
|
||||||
|
NewHref << wxT( " " ) << defRef << wxT( " " ) << multi;
|
||||||
|
m_PathsAndReferences[ii] = NewHref;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Field[REFERENCE].m_Text = defRef; //for drawing.
|
m_Field[REFERENCE].m_Text = defRef; //for drawing.
|
||||||
EDA_LibComponentStruct* Entry;
|
|
||||||
Entry = FindLibPart( m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
|
|
||||||
|
|
||||||
if( !Entry || !Entry->m_UnitSelectionLocked )
|
if( !KeepMulti )
|
||||||
{
|
|
||||||
m_Multi = 1;
|
m_Multi = 1;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -618,7 +659,7 @@ wxPoint SCH_COMPONENT::GetScreenCoord( const wxPoint& coord )
|
||||||
|
|
||||||
/* Renvoie la coordonn<6E>e du point coord, en fonction de l'orientation
|
/* Renvoie la coordonn<6E>e du point coord, en fonction de l'orientation
|
||||||
* du composant (rotation, miroir).
|
* du composant (rotation, miroir).
|
||||||
* Les coord sont toujours relatives <EFBFBD> l'ancre (coord 0,0) du composant
|
* Les coord sont toujours relatives a l'ancre (coord 0,0) du composant
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
wxPoint screenpos;
|
wxPoint screenpos;
|
||||||
|
@ -674,8 +715,8 @@ PartTextStruct::PartTextStruct( const wxPoint& pos, const wxString& text ) :
|
||||||
EDA_TextStruct( text )
|
EDA_TextStruct( text )
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
{
|
{
|
||||||
m_Pos = pos;
|
m_Pos = pos;
|
||||||
m_FieldId = 0;
|
m_FieldId = 0;
|
||||||
m_AddExtraText = false;
|
m_AddExtraText = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -829,24 +870,82 @@ EDA_Rect PartTextStruct::GetBoundaryBox() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**********************************/
|
/**
|
||||||
bool SCH_COMPONENT::Save( FILE* f )
|
* Function Save
|
||||||
/**********************************/
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool PartTextStruct::Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
char hjustify = 'C';
|
||||||
|
|
||||||
/** Function Save
|
if( m_HJustify == GR_TEXT_HJUSTIFY_LEFT )
|
||||||
* Write on file a SCH_COMPONENT decscription
|
hjustify = 'L';
|
||||||
* @param f = output file
|
else if( m_HJustify == GR_TEXT_HJUSTIFY_RIGHT )
|
||||||
* return an error: false if ok, true if error
|
hjustify = 'R';
|
||||||
|
char vjustify = 'C';
|
||||||
|
if( m_VJustify == GR_TEXT_VJUSTIFY_BOTTOM )
|
||||||
|
vjustify = 'B';
|
||||||
|
else if( m_VJustify == GR_TEXT_VJUSTIFY_TOP )
|
||||||
|
vjustify = 'T';
|
||||||
|
if( fprintf( aFile, "F %d \"%s\" %c %-3d %-3d %-3d %4.4X %c %c", m_FieldId,
|
||||||
|
CONV_TO_UTF8( m_Text ),
|
||||||
|
m_Orient == TEXT_ORIENT_HORIZ ? 'H' : 'V',
|
||||||
|
m_Pos.x, m_Pos.y,
|
||||||
|
m_Size.x,
|
||||||
|
m_Attributs,
|
||||||
|
hjustify, vjustify ) == EOF )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Save field name, if necessary
|
||||||
|
if( m_FieldId >= FIELD1 && !m_Name.IsEmpty() )
|
||||||
|
{
|
||||||
|
wxString fieldname = ReturnDefaultFieldName( m_FieldId );
|
||||||
|
if( fieldname != m_Name )
|
||||||
|
{
|
||||||
|
if( fprintf( aFile, " \"%s\"", CONV_TO_UTF8( m_Name ) ) == EOF )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( fprintf( aFile, "\n" ) == EOF )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
|
bool SCH_COMPONENT::Save( FILE* f ) const
|
||||||
|
/****************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
int ii, Failed = FALSE;
|
int ii, Success = true;
|
||||||
char Name1[256], Name2[256];
|
char Name1[256], Name2[256];
|
||||||
int hjustify, vjustify;
|
wxArrayString reference_fields;
|
||||||
|
static wxString delimiters( wxT( " " ) );
|
||||||
|
|
||||||
//this is redundant with the AR entries below, but it makes the
|
//this is redundant with the AR entries below, but it makes the
|
||||||
//files backwards-compatible.
|
//files backwards-compatible.
|
||||||
if( m_References.GetCount() > 0 )
|
if( m_PathsAndReferences.GetCount() > 0 )
|
||||||
strncpy( Name1, CONV_TO_UTF8( m_References[0] ), sizeof(Name1) );
|
{
|
||||||
|
reference_fields = wxStringTokenize( m_PathsAndReferences[0], delimiters );
|
||||||
|
strncpy( Name1, CONV_TO_UTF8( reference_fields[1] ), sizeof(Name1) );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( m_Field[REFERENCE].m_Text.IsEmpty() )
|
if( m_Field[REFERENCE].m_Text.IsEmpty() )
|
||||||
|
@ -874,88 +973,73 @@ bool SCH_COMPONENT::Save( FILE* f )
|
||||||
|
|
||||||
if( fprintf( f, "L %s %s\n", Name2, Name1 ) == EOF )
|
if( fprintf( f, "L %s %s\n", Name2, Name1 ) == EOF )
|
||||||
{
|
{
|
||||||
Failed = TRUE;
|
Success = false;
|
||||||
return Failed;
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Generation de numero d'unit, convert et Time Stamp*/
|
/* Generation de numero d'unit, convert et Time Stamp*/
|
||||||
if( fprintf( f, "U %d %d %8.8lX\n", m_Multi, m_Convert, m_TimeStamp ) == EOF )
|
if( fprintf( f, "U %d %d %8.8lX\n", m_Multi, m_Convert, m_TimeStamp ) == EOF )
|
||||||
{
|
{
|
||||||
Failed = TRUE; return Failed;
|
Success = false;
|
||||||
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Sortie de la position */
|
/* Save the position */
|
||||||
if( fprintf( f, "P %d %d\n", m_Pos.x, m_Pos.y ) == EOF )
|
if( fprintf( f, "P %d %d\n", m_Pos.x, m_Pos.y ) == EOF )
|
||||||
{
|
{
|
||||||
Failed = TRUE; return Failed;
|
Success = false;
|
||||||
|
return Success;
|
||||||
}
|
}
|
||||||
unsigned int i;
|
|
||||||
for( i = 0; i< m_References.GetCount(); i++ )
|
/* If this is a complex hierarchy; save hierarchical references.
|
||||||
|
* but for simple hierarchies it is not necessary.
|
||||||
|
* the reference inf is already saved
|
||||||
|
* this is usefull for old eeschema version compatibility
|
||||||
|
*/
|
||||||
|
if( m_PathsAndReferences.GetCount() > 1 )
|
||||||
{
|
{
|
||||||
/*format:
|
for( unsigned int ii = 0; ii< m_PathsAndReferences.GetCount(); ii++ )
|
||||||
* AR Path="/140/2" Ref="C99"
|
|
||||||
* where 140 is the uid of the contianing sheet
|
|
||||||
* and 2 is the timestamp of this component.
|
|
||||||
* (timestamps are actually 8 hex chars)
|
|
||||||
* Ref is the conventional component reference for this 'path'
|
|
||||||
*/
|
|
||||||
if( fprintf( f, "AR Path=\"%s\" Ref=\"%s\" \n",
|
|
||||||
CONV_TO_UTF8( m_Paths[i] ),
|
|
||||||
CONV_TO_UTF8( m_References[i] ) ) == EOF )
|
|
||||||
{
|
{
|
||||||
Failed = TRUE; break;
|
/*format:
|
||||||
|
* AR Path="/140/2" Ref="C99" Part="1"
|
||||||
|
* where 140 is the uid of the containing sheet
|
||||||
|
* and 2 is the timestamp of this component.
|
||||||
|
* (timestamps are actually 8 hex chars)
|
||||||
|
* Ref is the conventional component reference for this 'path'
|
||||||
|
* Part is the conventional component part selection for this 'path'
|
||||||
|
*/
|
||||||
|
reference_fields = wxStringTokenize( m_PathsAndReferences[ii], delimiters );
|
||||||
|
if( fprintf( f, "AR Path=\"%s\" Ref=\"%s\" Part=\"%s\" \n",
|
||||||
|
CONV_TO_UTF8( reference_fields[0] ),
|
||||||
|
CONV_TO_UTF8( reference_fields[1] ),
|
||||||
|
CONV_TO_UTF8( reference_fields[2] )
|
||||||
|
) == EOF )
|
||||||
|
{
|
||||||
|
Success = false;
|
||||||
|
return Success;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for( ii = 0; ii < NUMBER_OF_FIELDS; ii++ )
|
for( ii = 0; ii < NUMBER_OF_FIELDS; ii++ )
|
||||||
{
|
{
|
||||||
PartTextStruct* field = &m_Field[ii];
|
const PartTextStruct* field = &m_Field[ii];
|
||||||
if( field->m_Text.IsEmpty() )
|
if( field->m_Text.IsEmpty() )
|
||||||
continue;
|
continue;
|
||||||
hjustify = 'C';
|
if( !field->Save( f ) )
|
||||||
if( field->m_HJustify == GR_TEXT_HJUSTIFY_LEFT )
|
|
||||||
hjustify = 'L';
|
|
||||||
else if( field->m_HJustify == GR_TEXT_HJUSTIFY_RIGHT )
|
|
||||||
hjustify = 'R';
|
|
||||||
vjustify = 'C';
|
|
||||||
if( field->m_VJustify == GR_TEXT_VJUSTIFY_BOTTOM )
|
|
||||||
vjustify = 'B';
|
|
||||||
else if( field->m_VJustify == GR_TEXT_VJUSTIFY_TOP )
|
|
||||||
vjustify = 'T';
|
|
||||||
if( fprintf( f, "F %d \"%s\" %c %-3d %-3d %-3d %4.4X %c %c", ii,
|
|
||||||
CONV_TO_UTF8( field->m_Text ),
|
|
||||||
field->m_Orient == TEXT_ORIENT_HORIZ ? 'H' : 'V',
|
|
||||||
field->m_Pos.x, field->m_Pos.y,
|
|
||||||
field->m_Size.x,
|
|
||||||
field->m_Attributs,
|
|
||||||
hjustify, vjustify ) == EOF )
|
|
||||||
{
|
{
|
||||||
Failed = TRUE; break;
|
Success = false; break;
|
||||||
}
|
|
||||||
|
|
||||||
// Save field name, if necessary
|
|
||||||
if( ii >= FIELD1 && !field->m_Name.IsEmpty() )
|
|
||||||
{
|
|
||||||
wxString fieldname = ReturnDefaultFieldName( ii );
|
|
||||||
if( fieldname != field->m_Name )
|
|
||||||
if( fprintf( f, " \"%s\"", CONV_TO_UTF8( field->m_Name ) ) == EOF )
|
|
||||||
{
|
|
||||||
Failed = TRUE; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if( fprintf( f, "\n" ) == EOF )
|
|
||||||
{
|
|
||||||
Failed = TRUE; break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( Failed )
|
if( !Success )
|
||||||
return Failed;
|
return Success;
|
||||||
|
|
||||||
/* Generation du num unit, position, box ( ancienne norme )*/
|
/* Generation du num unit, position, box ( ancienne norme )*/
|
||||||
if( fprintf( f, "\t%-4d %-4d %-4d\n", m_Multi, m_Pos.x, m_Pos.y ) == EOF )
|
if( fprintf( f, "\t%-4d %-4d %-4d\n", m_Multi, m_Pos.x, m_Pos.y ) == EOF )
|
||||||
{
|
{
|
||||||
Failed = TRUE; return Failed;
|
Success = false;
|
||||||
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( fprintf( f, "\t%-4d %-4d %-4d %-4d\n",
|
if( fprintf( f, "\t%-4d %-4d %-4d %-4d\n",
|
||||||
|
@ -964,9 +1048,30 @@ bool SCH_COMPONENT::Save( FILE* f )
|
||||||
m_Transform[1][0],
|
m_Transform[1][0],
|
||||||
m_Transform[1][1] ) == EOF )
|
m_Transform[1][1] ) == EOF )
|
||||||
{
|
{
|
||||||
Failed = TRUE; return Failed;
|
Success = false;
|
||||||
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf( f, "$EndComp\n" );
|
fprintf( f, "$EndComp\n" );
|
||||||
return Failed;
|
return Success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EDA_Rect SCH_COMPONENT::GetBoundingBox()
|
||||||
|
{
|
||||||
|
const int PADDING = 40;
|
||||||
|
|
||||||
|
// This gives a reasonable approximation (but some things are missing so...
|
||||||
|
EDA_Rect ret = GetBoundaryBox();
|
||||||
|
|
||||||
|
// Include BoundingBoxes of fields
|
||||||
|
for( int i = REFERENCE; i < NUMBER_OF_FIELDS; i++ )
|
||||||
|
{
|
||||||
|
ret.Merge( m_Field[i].GetBoundaryBox() );
|
||||||
|
}
|
||||||
|
|
||||||
|
// ... add padding
|
||||||
|
ret.Inflate( PADDING, PADDING );
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,10 +41,10 @@ class PartTextStruct : public SCH_ITEM,
|
||||||
public EDA_TextStruct
|
public EDA_TextStruct
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int m_FieldId; // Field indicator type (REFERENCE, VALUE or other id)
|
int m_FieldId; // Field indicator type (REFERENCE, VALUE or other id)
|
||||||
wxString m_Name; /* Field name (ref, value,pcb, sheet, filed 1..
|
wxString m_Name; /* Field name (ref, value,pcb, sheet, filed 1..
|
||||||
* and for fields 1 to 8 the name is editable */
|
* and for fields 1 to 8 the name is editable */
|
||||||
bool m_AddExtraText; // Mainly for REFERENCE, add extar info (for REFERENCE: add part selection text
|
bool m_AddExtraText; // Mainly for REFERENCE, add extar info (for REFERENCE: add part selection text
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PartTextStruct( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString );
|
PartTextStruct( const wxPoint& pos = wxPoint( 0, 0 ), const wxString& text = wxEmptyString );
|
||||||
|
@ -62,14 +62,22 @@ public:
|
||||||
EDA_Rect GetBoundaryBox() const;
|
EDA_Rect GetBoundaryBox() const;
|
||||||
bool IsVoid();
|
bool IsVoid();
|
||||||
void SwapData( PartTextStruct* copyitem );
|
void SwapData( PartTextStruct* copyitem );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Draw
|
* Function Draw
|
||||||
*/
|
*/
|
||||||
void Draw( WinEDA_DrawPanel* panel,
|
void Draw( WinEDA_DrawPanel* panel,
|
||||||
wxDC* DC,
|
wxDC* DC,
|
||||||
const wxPoint& offset,
|
const wxPoint& offset,
|
||||||
int draw_mode,
|
int draw_mode,
|
||||||
int Color = -1 );
|
int Color = -1 );
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -98,8 +106,16 @@ public:
|
||||||
int m_Transform[2][2]; /* The rotation/mirror transformation matrix. */
|
int m_Transform[2][2]; /* The rotation/mirror transformation matrix. */
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wxArrayString m_Paths; // /sheet1/C102, /sh2/sh1/U32 etc.
|
|
||||||
wxArrayString m_References; // C102, U32 etc.
|
/* Hierarchical references.
|
||||||
|
* format is
|
||||||
|
* path reference multi
|
||||||
|
* with:
|
||||||
|
* path = /<timestamp1>/<timestamp2> (subsheet path, = / for the root scheet)
|
||||||
|
* reference = reference for this path (C23, R5, U78 ... )
|
||||||
|
* multi = part selection in multi parts per package (0 or 1 for àne part per package)
|
||||||
|
*/
|
||||||
|
wxArrayString m_PathsAndReferences;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SCH_COMPONENT( const wxPoint& pos = wxPoint( 0, 0 ) );
|
SCH_COMPONENT( const wxPoint& pos = wxPoint( 0, 0 ) );
|
||||||
|
@ -110,12 +126,14 @@ public:
|
||||||
return wxT( "SCH_COMPONENT" );
|
return wxT( "SCH_COMPONENT" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Function Save
|
|
||||||
* Write on file a SCH_COMPONENT decscription
|
/**
|
||||||
* @param f = output file
|
* Function Save
|
||||||
* return an error: false if ok, true if error
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
*/
|
* @param aFile The FILE to write to.
|
||||||
bool Save( FILE *f );
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
SCH_COMPONENT* GenCopy();
|
SCH_COMPONENT* GenCopy();
|
||||||
void SetRotationMiroir( int type );
|
void SetRotationMiroir( int type );
|
||||||
|
@ -152,8 +170,8 @@ public:
|
||||||
//returns a unique ID, in the form of a path.
|
//returns a unique ID, in the form of a path.
|
||||||
wxString GetPath( DrawSheetPath* sheet );
|
wxString GetPath( DrawSheetPath* sheet );
|
||||||
const wxString GetRef( DrawSheetPath* sheet );
|
const wxString GetRef( DrawSheetPath* sheet );
|
||||||
void SetRef( DrawSheetPath* sheet, const wxString & ref );
|
void SetRef( DrawSheetPath* sheet, const wxString& ref );
|
||||||
void AddHierarchicalReference(const wxString & path, const wxString & ref);
|
void AddHierarchicalReference( const wxString& path, const wxString& ref );
|
||||||
int GetUnitSelection( DrawSheetPath* aSheet );
|
int GetUnitSelection( DrawSheetPath* aSheet );
|
||||||
void SetUnitSelection( DrawSheetPath* aSheet, int aUnitSelection );
|
void SetUnitSelection( DrawSheetPath* aSheet, int aUnitSelection );
|
||||||
|
|
||||||
|
|
|
@ -435,7 +435,7 @@ DanglingEndHandle* RebuildEndList( EDA_BaseStruct* DrawList )
|
||||||
{
|
{
|
||||||
#undef STRUCT
|
#undef STRUCT
|
||||||
#define STRUCT ( (DrawSheetStruct*) DrawItem )
|
#define STRUCT ( (DrawSheetStruct*) DrawItem )
|
||||||
DrawSheetLabelStruct* pinsheet = STRUCT->m_Label;
|
Hierarchical_PIN_Sheet_Struct* pinsheet = STRUCT->m_Label;
|
||||||
while( pinsheet )
|
while( pinsheet )
|
||||||
{
|
{
|
||||||
item = new DanglingEndHandle( SHEET_LABEL_END );
|
item = new DanglingEndHandle( SHEET_LABEL_END );
|
||||||
|
@ -447,7 +447,7 @@ DanglingEndHandle* RebuildEndList( EDA_BaseStruct* DrawList )
|
||||||
else
|
else
|
||||||
StartList = item;
|
StartList = item;
|
||||||
lastitem = item;
|
lastitem = item;
|
||||||
pinsheet = (DrawSheetLabelStruct*) pinsheet->Pnext;
|
pinsheet = (Hierarchical_PIN_Sheet_Struct*) pinsheet->Pnext;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -382,7 +382,7 @@ void EraseStruct( SCH_ITEM* DrawStruct, SCH_SCREEN* Screen )
|
||||||
{
|
{
|
||||||
EDA_BaseStruct* DrawList;
|
EDA_BaseStruct* DrawList;
|
||||||
DrawPickedStruct* PickedList = NULL;
|
DrawPickedStruct* PickedList = NULL;
|
||||||
DrawSheetLabelStruct* SheetLabel, * NextLabel;
|
Hierarchical_PIN_Sheet_Struct* SheetLabel, * NextLabel;
|
||||||
|
|
||||||
if( DrawStruct == NULL )
|
if( DrawStruct == NULL )
|
||||||
return;
|
return;
|
||||||
|
@ -392,7 +392,7 @@ void EraseStruct( SCH_ITEM* DrawStruct, SCH_SCREEN* Screen )
|
||||||
|
|
||||||
Screen->SetModify();
|
Screen->SetModify();
|
||||||
|
|
||||||
if( DrawStruct->Type() == DRAW_SHEETLABEL_STRUCT_TYPE )
|
if( DrawStruct->Type() == DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE )
|
||||||
{
|
{
|
||||||
/* Cette stucture est rattachee a une feuille, et n'est pas
|
/* Cette stucture est rattachee a une feuille, et n'est pas
|
||||||
* accessible par la liste globale directement */
|
* accessible par la liste globale directement */
|
||||||
|
@ -408,10 +408,10 @@ void EraseStruct( SCH_ITEM* DrawStruct, SCH_SCREEN* Screen )
|
||||||
if( SheetLabel == NULL )
|
if( SheetLabel == NULL )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if( SheetLabel == (DrawSheetLabelStruct*) DrawStruct )
|
if( SheetLabel == (Hierarchical_PIN_Sheet_Struct*) DrawStruct )
|
||||||
{
|
{
|
||||||
( (DrawSheetStruct*) DrawList )->m_Label =
|
( (DrawSheetStruct*) DrawList )->m_Label =
|
||||||
(DrawSheetLabelStruct*) SheetLabel->Pnext;
|
(Hierarchical_PIN_Sheet_Struct*) SheetLabel->Pnext;
|
||||||
|
|
||||||
SAFE_DELETE( DrawStruct );
|
SAFE_DELETE( DrawStruct );
|
||||||
return;
|
return;
|
||||||
|
@ -420,8 +420,8 @@ void EraseStruct( SCH_ITEM* DrawStruct, SCH_SCREEN* Screen )
|
||||||
{
|
{
|
||||||
while( SheetLabel->Pnext ) /* Examen de la liste dependante */
|
while( SheetLabel->Pnext ) /* Examen de la liste dependante */
|
||||||
{
|
{
|
||||||
NextLabel = (DrawSheetLabelStruct*) SheetLabel->Pnext;
|
NextLabel = (Hierarchical_PIN_Sheet_Struct*) SheetLabel->Pnext;
|
||||||
if( NextLabel == (DrawSheetLabelStruct*) DrawStruct )
|
if( NextLabel == (Hierarchical_PIN_Sheet_Struct*) DrawStruct )
|
||||||
{
|
{
|
||||||
SheetLabel->Pnext = (EDA_BaseStruct*) NextLabel->Pnext;
|
SheetLabel->Pnext = (EDA_BaseStruct*) NextLabel->Pnext;
|
||||||
SAFE_DELETE( DrawStruct );
|
SAFE_DELETE( DrawStruct );
|
||||||
|
|
|
@ -896,7 +896,7 @@ static int GenListeGLabels( ListLabel* List )
|
||||||
{
|
{
|
||||||
int ItemCount = 0;
|
int ItemCount = 0;
|
||||||
EDA_BaseStruct* DrawList;
|
EDA_BaseStruct* DrawList;
|
||||||
DrawSheetLabelStruct* SheetLabel;
|
Hierarchical_PIN_Sheet_Struct* SheetLabel;
|
||||||
DrawSheetPath* sheet;
|
DrawSheetPath* sheet;
|
||||||
|
|
||||||
/* Build the screen list */
|
/* Build the screen list */
|
||||||
|
@ -931,14 +931,14 @@ static int GenListeGLabels( ListLabel* List )
|
||||||
{
|
{
|
||||||
if( List )
|
if( List )
|
||||||
{
|
{
|
||||||
List->m_LabelType = DRAW_SHEETLABEL_STRUCT_TYPE;
|
List->m_LabelType = DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE;
|
||||||
snprintf( List->m_SheetPath, sizeof(List->m_SheetPath),
|
snprintf( List->m_SheetPath, sizeof(List->m_SheetPath),
|
||||||
"%s", CONV_TO_UTF8( path ) );
|
"%s", CONV_TO_UTF8( path ) );
|
||||||
List->m_Label = SheetLabel;
|
List->m_Label = SheetLabel;
|
||||||
List++;
|
List++;
|
||||||
}
|
}
|
||||||
ItemCount++;
|
ItemCount++;
|
||||||
SheetLabel = (DrawSheetLabelStruct*) (SheetLabel->Pnext);
|
SheetLabel = (Hierarchical_PIN_Sheet_Struct*) (SheetLabel->Pnext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1060,13 +1060,13 @@ static int ListTriGLabelByVal( ListLabel* Objet1, ListLabel* Objet2 )
|
||||||
int ii;
|
int ii;
|
||||||
const wxString* Text1, * Text2;
|
const wxString* Text1, * Text2;
|
||||||
|
|
||||||
if( Objet1->m_LabelType == DRAW_SHEETLABEL_STRUCT_TYPE )
|
if( Objet1->m_LabelType == DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE )
|
||||||
Text1 = &( (DrawSheetLabelStruct*) Objet1->m_Label )->m_Text;
|
Text1 = &( (Hierarchical_PIN_Sheet_Struct*) Objet1->m_Label )->m_Text;
|
||||||
else
|
else
|
||||||
Text1 = &( (SCH_TEXT*) Objet1->m_Label )->m_Text;
|
Text1 = &( (SCH_TEXT*) Objet1->m_Label )->m_Text;
|
||||||
|
|
||||||
if( Objet2->m_LabelType == DRAW_SHEETLABEL_STRUCT_TYPE )
|
if( Objet2->m_LabelType == DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE )
|
||||||
Text2 = &( (DrawSheetLabelStruct*) Objet2->m_Label )->m_Text;
|
Text2 = &( (Hierarchical_PIN_Sheet_Struct*) Objet2->m_Label )->m_Text;
|
||||||
else
|
else
|
||||||
Text2 = &( (SCH_TEXT*) Objet2->m_Label )->m_Text;
|
Text2 = &( (SCH_TEXT*) Objet2->m_Label )->m_Text;
|
||||||
|
|
||||||
|
@ -1099,13 +1099,13 @@ static int ListTriGLabelBySheet( ListLabel* Objet1, ListLabel* Objet2 )
|
||||||
|
|
||||||
if( ii == 0 )
|
if( ii == 0 )
|
||||||
{
|
{
|
||||||
if( Objet1->m_LabelType == DRAW_SHEETLABEL_STRUCT_TYPE )
|
if( Objet1->m_LabelType == DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE )
|
||||||
Text1 = &( (DrawSheetLabelStruct*) Objet1->m_Label )->m_Text;
|
Text1 = &( (Hierarchical_PIN_Sheet_Struct*) Objet1->m_Label )->m_Text;
|
||||||
else
|
else
|
||||||
Text1 = &( (SCH_TEXT*) Objet1->m_Label )->m_Text;
|
Text1 = &( (SCH_TEXT*) Objet1->m_Label )->m_Text;
|
||||||
|
|
||||||
if( Objet2->m_LabelType == DRAW_SHEETLABEL_STRUCT_TYPE )
|
if( Objet2->m_LabelType == DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE )
|
||||||
Text2 = &( (DrawSheetLabelStruct*) Objet2->m_Label )->m_Text;
|
Text2 = &( (Hierarchical_PIN_Sheet_Struct*) Objet2->m_Label )->m_Text;
|
||||||
else
|
else
|
||||||
Text2 = &( (SCH_TEXT*) Objet2->m_Label )->m_Text;
|
Text2 = &( (SCH_TEXT*) Objet2->m_Label )->m_Text;
|
||||||
|
|
||||||
|
@ -1378,7 +1378,7 @@ static int PrintListeGLabel( FILE* f, ListLabel* List, int NbItems )
|
||||||
{
|
{
|
||||||
int ii, jj;
|
int ii, jj;
|
||||||
SCH_LABEL* DrawTextItem;
|
SCH_LABEL* DrawTextItem;
|
||||||
DrawSheetLabelStruct* DrawSheetLabel;
|
Hierarchical_PIN_Sheet_Struct* DrawSheetLabel;
|
||||||
ListLabel* LabelItem;
|
ListLabel* LabelItem;
|
||||||
wxString msg, sheetpath;
|
wxString msg, sheetpath;
|
||||||
wxString labeltype;
|
wxString labeltype;
|
||||||
|
@ -1408,9 +1408,9 @@ static int PrintListeGLabel( FILE* f, ListLabel* List, int NbItems )
|
||||||
fprintf( f, CONV_TO_UTF8( msg ) );
|
fprintf( f, CONV_TO_UTF8( msg ) );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
{
|
{
|
||||||
DrawSheetLabel = (DrawSheetLabelStruct*) LabelItem->m_Label;
|
DrawSheetLabel = (Hierarchical_PIN_Sheet_Struct*) LabelItem->m_Label;
|
||||||
jj = DrawSheetLabel->m_Shape;
|
jj = DrawSheetLabel->m_Shape;
|
||||||
if( jj < 0 )
|
if( jj < 0 )
|
||||||
jj = NET_TMAX;
|
jj = NET_TMAX;
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
/************************************************/
|
|
||||||
/* Routines diverses */
|
|
||||||
/************************************************/
|
|
||||||
|
|
||||||
#include "fctsys.h"
|
|
||||||
#include "gr_basic.h"
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
#include "program.h"
|
|
||||||
#include "libcmp.h"
|
|
||||||
#include "general.h"
|
|
||||||
|
|
||||||
#include "protos.h"
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************/
|
|
||||||
void SetFlagModify(BASE_SCREEN * Window)
|
|
||||||
/**************************************/
|
|
||||||
/* Mise a 1 du flag modified de l'ecran Window, et de la date de la feuille
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
if( Window == NULL ) return;
|
|
||||||
Window->SetModify();
|
|
||||||
|
|
||||||
/* Mise a jour des dates */
|
|
||||||
Window->m_Date = GenDate();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -477,7 +477,7 @@ static bool IsTerminalPoint( SCH_SCREEN* screen, const wxPoint& pos, int layer )
|
||||||
EDA_BaseStruct* item;
|
EDA_BaseStruct* item;
|
||||||
LibDrawPin* pin;
|
LibDrawPin* pin;
|
||||||
DrawLibItemStruct* LibItem = NULL;
|
DrawLibItemStruct* LibItem = NULL;
|
||||||
DrawSheetLabelStruct* pinsheet;
|
Hierarchical_PIN_Sheet_Struct* pinsheet;
|
||||||
wxPoint itempos;
|
wxPoint itempos;
|
||||||
|
|
||||||
switch( layer )
|
switch( layer )
|
||||||
|
|
|
@ -524,7 +524,7 @@ void DrawStructsInGhost( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
case DRAW_MARKER_STRUCT_TYPE:
|
case DRAW_MARKER_STRUCT_TYPE:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -126,11 +126,14 @@ bool WinEDA_SchematicFrame::LoadOneEEFile( SCH_SCREEN* screen, const wxString& F
|
||||||
MsgDiag = FullFileName + _( " was created by a more recent version of EESchema and may not load correctly. Please consider updating!");
|
MsgDiag = FullFileName + _( " was created by a more recent version of EESchema and may not load correctly. Please consider updating!");
|
||||||
DisplayInfo( this, MsgDiag);
|
DisplayInfo( this, MsgDiag);
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
|
// Compile it if the new versiopn is unreadable by previous eeschema versions
|
||||||
else if ( ver < EESCHEMA_VERSION )
|
else if ( ver < EESCHEMA_VERSION )
|
||||||
{
|
{
|
||||||
MsgDiag = FullFileName + _( " was created by an older version of EESchema. It will be stored in the new file format when you save this file again.");
|
MsgDiag = FullFileName + _( " was created by an older version of EESchema. It will be stored in the new file format when you save this file again.");
|
||||||
DisplayInfo( this, MsgDiag);
|
DisplayInfo( this, MsgDiag);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
LineCount++;
|
LineCount++;
|
||||||
if( fgets( Line, 1024 - 1, f ) == NULL || strncmp( Line, "LIBS:", 5 ) != 0 )
|
if( fgets( Line, 1024 - 1, f ) == NULL || strncmp( Line, "LIBS:", 5 ) != 0 )
|
||||||
|
@ -792,7 +795,7 @@ static int ReadSheetDescr( wxWindow* frame, char* Line, FILE* f, BASE_SCREEN* Wi
|
||||||
int ii, fieldref, size;
|
int ii, fieldref, size;
|
||||||
char Name1[256], Char1[256], Char2[256];
|
char Name1[256], Char1[256], Char2[256];
|
||||||
DrawSheetStruct* SheetStruct;
|
DrawSheetStruct* SheetStruct;
|
||||||
DrawSheetLabelStruct* SheetLabelStruct, * OldSheetLabel = NULL;
|
Hierarchical_PIN_Sheet_Struct* SheetLabelStruct, * OldSheetLabel = NULL;
|
||||||
int Failed = FALSE;
|
int Failed = FALSE;
|
||||||
char* ptcar;
|
char* ptcar;
|
||||||
|
|
||||||
|
@ -901,7 +904,7 @@ static int ReadSheetDescr( wxWindow* frame, char* Line, FILE* f, BASE_SCREEN* Wi
|
||||||
|
|
||||||
if( fieldref > 1 )
|
if( fieldref > 1 )
|
||||||
{
|
{
|
||||||
SheetLabelStruct = new DrawSheetLabelStruct( SheetStruct,
|
SheetLabelStruct = new Hierarchical_PIN_Sheet_Struct( SheetStruct,
|
||||||
wxPoint( 0, 0 ), CONV_FROM_UTF8( Name1 ) );
|
wxPoint( 0, 0 ), CONV_FROM_UTF8( Name1 ) );
|
||||||
if( SheetStruct->m_Label == NULL )
|
if( SheetStruct->m_Label == NULL )
|
||||||
OldSheetLabel = SheetStruct->m_Label = SheetLabelStruct;
|
OldSheetLabel = SheetStruct->m_Label = SheetLabelStruct;
|
||||||
|
|
|
@ -655,7 +655,7 @@ bool DrawStructInBox( int x1, int y1, int x2, int y2,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_PICK_ITEM_STRUCT_TYPE:
|
case DRAW_PICK_ITEM_STRUCT_TYPE:
|
||||||
|
@ -1170,14 +1170,14 @@ LibEDA_BaseStruct* LocatePin( const wxPoint& RefPos,
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************/
|
/***********************************************************************************/
|
||||||
DrawSheetLabelStruct* LocateSheetLabel( DrawSheetStruct* Sheet, const wxPoint& pos )
|
Hierarchical_PIN_Sheet_Struct* LocateSheetLabel( DrawSheetStruct* Sheet, const wxPoint& pos )
|
||||||
/***********************************************************************************/
|
/***********************************************************************************/
|
||||||
{
|
{
|
||||||
int size, dy, minx, maxx;
|
int size, dy, minx, maxx;
|
||||||
DrawSheetLabelStruct* SheetLabel;
|
Hierarchical_PIN_Sheet_Struct* SheetLabel;
|
||||||
|
|
||||||
SheetLabel = Sheet->m_Label;
|
SheetLabel = Sheet->m_Label;
|
||||||
while( (SheetLabel) && (SheetLabel->Type()==DRAW_SHEETLABEL_STRUCT_TYPE) )
|
while( (SheetLabel) && (SheetLabel->Type()==DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE) )
|
||||||
{
|
{
|
||||||
size = ( SheetLabel->GetLength() + 1 ) * SheetLabel->m_Size.x;
|
size = ( SheetLabel->GetLength() + 1 ) * SheetLabel->m_Size.x;
|
||||||
if( SheetLabel->m_Edge )
|
if( SheetLabel->m_Edge )
|
||||||
|
@ -1190,7 +1190,7 @@ DrawSheetLabelStruct* LocateSheetLabel( DrawSheetStruct* Sheet, const wxPoint& p
|
||||||
&& (pos.x <= maxx)
|
&& (pos.x <= maxx)
|
||||||
&& (pos.x >= minx) )
|
&& (pos.x >= minx) )
|
||||||
return SheetLabel;
|
return SheetLabel;
|
||||||
SheetLabel = (DrawSheetLabelStruct*) SheetLabel->Pnext;
|
SheetLabel = (Hierarchical_PIN_Sheet_Struct*) SheetLabel->Pnext;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1228,12 +1228,12 @@ LibDrawPin* LocateAnyPin( SCH_ITEM* DrawList, const wxPoint& RefPos,
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
DrawSheetLabelStruct* LocateAnyPinSheet( const wxPoint& RefPos,
|
Hierarchical_PIN_Sheet_Struct* LocateAnyPinSheet( const wxPoint& RefPos,
|
||||||
SCH_ITEM* DrawList )
|
SCH_ITEM* DrawList )
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
{
|
{
|
||||||
SCH_ITEM* DrawStruct;
|
SCH_ITEM* DrawStruct;
|
||||||
DrawSheetLabelStruct* PinSheet = NULL;
|
Hierarchical_PIN_Sheet_Struct* PinSheet = NULL;
|
||||||
|
|
||||||
for( DrawStruct = DrawList; DrawStruct != NULL; DrawStruct = DrawStruct->Next() )
|
for( DrawStruct = DrawList; DrawStruct != NULL; DrawStruct = DrawStruct->Next() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,8 +19,9 @@ OBJECTS = eeschema.o\
|
||||||
dangling_ends.o\
|
dangling_ends.o\
|
||||||
cross-probing.o\
|
cross-probing.o\
|
||||||
setpage.o\
|
setpage.o\
|
||||||
cmpclass.o\
|
class_schematic_items.o\
|
||||||
class_drawsheet.o\
|
class_drawsheet.o\
|
||||||
|
class_hierarchical_PIN_sheet.o\
|
||||||
class_text-label.o\
|
class_text-label.o\
|
||||||
component_class.o\
|
component_class.o\
|
||||||
libclass.o\
|
libclass.o\
|
||||||
|
@ -38,7 +39,6 @@ OBJECTS = eeschema.o\
|
||||||
bus-wire-junction.o \
|
bus-wire-junction.o \
|
||||||
eelibs_read_libraryfiles.o \
|
eelibs_read_libraryfiles.o \
|
||||||
eelibs_draw_components.o \
|
eelibs_draw_components.o \
|
||||||
eeload.o\
|
|
||||||
block.o\
|
block.o\
|
||||||
block_libedit.o\
|
block_libedit.o\
|
||||||
eeredraw.o\
|
eeredraw.o\
|
||||||
|
@ -165,8 +165,6 @@ eelibs_read_libraryfiles.o: eelibs_read_libraryfiles.cpp $(DEPEND)
|
||||||
|
|
||||||
eelibs_draw_components.o: eelibs_draw_components.cpp $(DEPEND)
|
eelibs_draw_components.o: eelibs_draw_components.cpp $(DEPEND)
|
||||||
|
|
||||||
eeload.o: eeload.cpp $(DEPEND)
|
|
||||||
|
|
||||||
block.o: block.cpp $(DEPEND)
|
block.o: block.cpp $(DEPEND)
|
||||||
|
|
||||||
block_libedit.o: block_libedit.cpp $(DEPEND)
|
block_libedit.o: block_libedit.cpp $(DEPEND)
|
||||||
|
|
|
@ -451,7 +451,7 @@ static int ListeObjetConnection( WinEDA_SchematicFrame* frame, DrawSheetPath* sh
|
||||||
int TransMat[2][2], PartX, PartY, x2, y2;
|
int TransMat[2][2], PartX, PartY, x2, y2;
|
||||||
EDA_LibComponentStruct* Entry;
|
EDA_LibComponentStruct* Entry;
|
||||||
LibEDA_BaseStruct* DEntry;
|
LibEDA_BaseStruct* DEntry;
|
||||||
DrawSheetLabelStruct* SheetLabel;
|
Hierarchical_PIN_Sheet_Struct* SheetLabel;
|
||||||
DrawSheetPath list;
|
DrawSheetPath list;
|
||||||
|
|
||||||
DrawList = sheetlist->LastScreen()->EEDrawList;
|
DrawList = sheetlist->LastScreen()->EEDrawList;
|
||||||
|
@ -653,7 +653,7 @@ static int ListeObjetConnection( WinEDA_SchematicFrame* frame, DrawSheetPath* sh
|
||||||
list.Push(STRUCT);
|
list.Push(STRUCT);
|
||||||
SheetLabel = STRUCT->m_Label;
|
SheetLabel = STRUCT->m_Label;
|
||||||
for( ; SheetLabel != NULL;
|
for( ; SheetLabel != NULL;
|
||||||
SheetLabel = (DrawSheetLabelStruct*) SheetLabel->Pnext )
|
SheetLabel = (Hierarchical_PIN_Sheet_Struct*) SheetLabel->Pnext )
|
||||||
{
|
{
|
||||||
ii = IsBusLabel( SheetLabel->m_Text );
|
ii = IsBusLabel( SheetLabel->m_Text );
|
||||||
if( ObjNet )
|
if( ObjNet )
|
||||||
|
@ -677,7 +677,7 @@ static int ListeObjetConnection( WinEDA_SchematicFrame* frame, DrawSheetPath* sh
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
DisplayError( frame, wxT( "Netlist: Type DRAW_SHEETLABEL inattendu" ) );
|
DisplayError( frame, wxT( "Netlist: Type DRAW_SHEETLABEL inattendu" ) );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ void WinEDA_SchematicFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
case TYPE_SCH_GLOBALLABEL:
|
case TYPE_SCH_GLOBALLABEL:
|
||||||
case TYPE_SCH_HIERLABEL:
|
case TYPE_SCH_HIERLABEL:
|
||||||
case TYPE_SCH_TEXT:
|
case TYPE_SCH_TEXT:
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
case DRAW_SHEET_STRUCT_TYPE:
|
case DRAW_SHEET_STRUCT_TYPE:
|
||||||
case DRAW_BUSENTRY_STRUCT_TYPE:
|
case DRAW_BUSENTRY_STRUCT_TYPE:
|
||||||
case DRAW_JUNCTION_STRUCT_TYPE:
|
case DRAW_JUNCTION_STRUCT_TYPE:
|
||||||
|
@ -266,7 +266,7 @@ void WinEDA_SchematicFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||||
GetScreen()->SetCurItem(
|
GetScreen()->SetCurItem(
|
||||||
Create_PinSheet( (DrawSheetStruct*) DrawStruct, DC ) );
|
Create_PinSheet( (DrawSheetStruct*) DrawStruct, DC ) );
|
||||||
}
|
}
|
||||||
else if( (DrawStruct->Type() == DRAW_SHEETLABEL_STRUCT_TYPE)
|
else if( (DrawStruct->Type() == DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE)
|
||||||
&& (DrawStruct->m_Flags != 0) )
|
&& (DrawStruct->m_Flags != 0) )
|
||||||
{
|
{
|
||||||
DrawStruct->Place( this, DC );
|
DrawStruct->Place( this, DC );
|
||||||
|
|
|
@ -52,7 +52,7 @@ static void AddMenusForWire( wxMenu* PopMenu, EDA_DrawLineStruct* Wire,
|
||||||
static void AddMenusForBus( wxMenu* PopMenu, EDA_DrawLineStruct* Bus,
|
static void AddMenusForBus( wxMenu* PopMenu, EDA_DrawLineStruct* Bus,
|
||||||
WinEDA_SchematicFrame* frame );
|
WinEDA_SchematicFrame* frame );
|
||||||
static void AddMenusForHierchicalSheet( wxMenu* PopMenu, DrawSheetStruct* Sheet );
|
static void AddMenusForHierchicalSheet( wxMenu* PopMenu, DrawSheetStruct* Sheet );
|
||||||
static void AddMenusForPinSheet( wxMenu* PopMenu, DrawSheetLabelStruct* PinSheet );
|
static void AddMenusForPinSheet( wxMenu* PopMenu, Hierarchical_PIN_Sheet_Struct* PinSheet );
|
||||||
static void AddMenusForText( wxMenu* PopMenu, SCH_TEXT* Text );
|
static void AddMenusForText( wxMenu* PopMenu, SCH_TEXT* Text );
|
||||||
static void AddMenusForLabel( wxMenu* PopMenu, SCH_LABEL* Label );
|
static void AddMenusForLabel( wxMenu* PopMenu, SCH_LABEL* Label );
|
||||||
static void AddMenusForGLabel( wxMenu* PopMenu, SCH_GLOBALLABEL* GLabel );
|
static void AddMenusForGLabel( wxMenu* PopMenu, SCH_GLOBALLABEL* GLabel );
|
||||||
|
@ -107,7 +107,7 @@ bool WinEDA_SchematicFrame::OnRightClick( const wxPoint& MousePos,
|
||||||
DrawStruct = SchematicGeneralLocateAndDisplay( FALSE );
|
DrawStruct = SchematicGeneralLocateAndDisplay( FALSE );
|
||||||
if( DrawStruct && (DrawStruct->Type() == DRAW_SHEET_STRUCT_TYPE) )
|
if( DrawStruct && (DrawStruct->Type() == DRAW_SHEET_STRUCT_TYPE) )
|
||||||
{
|
{
|
||||||
DrawSheetLabelStruct* slabel;
|
Hierarchical_PIN_Sheet_Struct* slabel;
|
||||||
slabel = LocateSheetLabel( (DrawSheetStruct*) DrawStruct,
|
slabel = LocateSheetLabel( (DrawSheetStruct*) DrawStruct,
|
||||||
GetScreen()->m_Curseur );
|
GetScreen()->m_Curseur );
|
||||||
if( slabel )
|
if( slabel )
|
||||||
|
@ -242,8 +242,8 @@ bool WinEDA_SchematicFrame::OnRightClick( const wxPoint& MousePos,
|
||||||
AddMenusForHierchicalSheet( PopMenu, (DrawSheetStruct*) DrawStruct );
|
AddMenusForHierchicalSheet( PopMenu, (DrawSheetStruct*) DrawStruct );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
AddMenusForPinSheet( PopMenu, (DrawSheetLabelStruct*) DrawStruct );
|
AddMenusForPinSheet( PopMenu, (Hierarchical_PIN_Sheet_Struct*) DrawStruct );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -608,7 +608,7 @@ void AddMenusForHierchicalSheet( wxMenu* PopMenu, DrawSheetStruct* Sheet )
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
void AddMenusForPinSheet( wxMenu* PopMenu, DrawSheetLabelStruct* PinSheet )
|
void AddMenusForPinSheet( wxMenu* PopMenu, Hierarchical_PIN_Sheet_Struct* PinSheet )
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
/* Add menu commands for a Pin Sheet (or Sheet label)
|
/* Add menu commands for a Pin Sheet (or Sheet label)
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
|
|
||||||
/* Variables locales : */
|
/* Variables locales : */
|
||||||
static void PlotSheetLabelStruct( DrawSheetLabelStruct* Struct );
|
static void PlotSheetLabelStruct( Hierarchical_PIN_Sheet_Struct* Struct );
|
||||||
static void PlotTextField( SCH_COMPONENT* DrawLibItem,
|
static void PlotTextField( SCH_COMPONENT* DrawLibItem,
|
||||||
int FieldNumber, int IsMulti, int DrawMode );
|
int FieldNumber, int IsMulti, int DrawMode );
|
||||||
static void PlotPinSymbol( int posX, int posY, int len, int orient, int Shape );
|
static void PlotPinSymbol( int posX, int posY, int len, int orient, int Shape );
|
||||||
|
@ -661,7 +661,7 @@ void PlotTextStruct( EDA_BaseStruct* Struct )
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************/
|
/***********************************************************/
|
||||||
static void PlotSheetLabelStruct( DrawSheetLabelStruct* Struct )
|
static void PlotSheetLabelStruct( Hierarchical_PIN_Sheet_Struct* Struct )
|
||||||
/***********************************************************/
|
/***********************************************************/
|
||||||
/* Routine de dessin des Sheet Labels type hierarchie */
|
/* Routine de dessin des Sheet Labels type hierarchie */
|
||||||
{
|
{
|
||||||
|
@ -739,7 +739,7 @@ void PlotSheetStruct( DrawSheetStruct* Struct )
|
||||||
/*************************************************/
|
/*************************************************/
|
||||||
/* Routine de dessin du bloc type hierarchie */
|
/* Routine de dessin du bloc type hierarchie */
|
||||||
{
|
{
|
||||||
DrawSheetLabelStruct* SheetLabelStruct;
|
Hierarchical_PIN_Sheet_Struct* SheetLabelStruct;
|
||||||
int txtcolor = -1;
|
int txtcolor = -1;
|
||||||
wxSize size;
|
wxSize size;
|
||||||
wxString Text;
|
wxString Text;
|
||||||
|
@ -788,6 +788,6 @@ void PlotSheetStruct( DrawSheetStruct* Struct )
|
||||||
while( SheetLabelStruct != NULL )
|
while( SheetLabelStruct != NULL )
|
||||||
{
|
{
|
||||||
PlotSheetLabelStruct( SheetLabelStruct );
|
PlotSheetLabelStruct( SheetLabelStruct );
|
||||||
SheetLabelStruct = (DrawSheetLabelStruct*) (SheetLabelStruct->Pnext);
|
SheetLabelStruct = (Hierarchical_PIN_Sheet_Struct*) (SheetLabelStruct->Pnext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -647,7 +647,7 @@ wxString msg;
|
||||||
|
|
||||||
case DRAW_PICK_ITEM_STRUCT_TYPE : break;
|
case DRAW_PICK_ITEM_STRUCT_TYPE : break;
|
||||||
case DRAW_POLYLINE_STRUCT_TYPE : break;
|
case DRAW_POLYLINE_STRUCT_TYPE : break;
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE : break;
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE : break;
|
||||||
case DRAW_MARKER_STRUCT_TYPE : break;
|
case DRAW_MARKER_STRUCT_TYPE : break;
|
||||||
|
|
||||||
case DRAW_SHEET_STRUCT_TYPE :
|
case DRAW_SHEET_STRUCT_TYPE :
|
||||||
|
|
|
@ -483,7 +483,7 @@ wxPoint StartPos, EndPos;
|
||||||
|
|
||||||
case DRAW_PICK_ITEM_STRUCT_TYPE : break;
|
case DRAW_PICK_ITEM_STRUCT_TYPE : break;
|
||||||
case DRAW_POLYLINE_STRUCT_TYPE : break;
|
case DRAW_POLYLINE_STRUCT_TYPE : break;
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE: break;
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE: break;
|
||||||
case DRAW_MARKER_STRUCT_TYPE : break;
|
case DRAW_MARKER_STRUCT_TYPE : break;
|
||||||
|
|
||||||
case DRAW_SHEET_STRUCT_TYPE :
|
case DRAW_SHEET_STRUCT_TYPE :
|
||||||
|
|
|
@ -98,6 +98,14 @@ public:
|
||||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode,
|
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode,
|
||||||
int Color = -1 );
|
int Color = -1 );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
/**
|
/**
|
||||||
* Function Show
|
* Function Show
|
||||||
|
@ -132,6 +140,14 @@ public:
|
||||||
wxString GetComment();
|
wxString GetComment();
|
||||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||||
int draw_mode, int Color = -1 );
|
int draw_mode, int Color = -1 );
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
/**
|
/**
|
||||||
* Function Show
|
* Function Show
|
||||||
|
@ -162,6 +178,15 @@ public:
|
||||||
DrawNoConnectStruct* GenCopy();
|
DrawNoConnectStruct* GenCopy();
|
||||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||||
int draw_mode, int Color = -1 );
|
int draw_mode, int Color = -1 );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
EDA_Rect GetBoundingBox();
|
EDA_Rect GetBoundingBox();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -188,9 +213,18 @@ public:
|
||||||
|
|
||||||
|
|
||||||
DrawBusEntryStruct* GenCopy();
|
DrawBusEntryStruct* GenCopy();
|
||||||
wxPoint m_End(); // retourne la coord de fin du raccord
|
wxPoint m_End() const ; // retourne la coord de fin du raccord
|
||||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||||
int draw_mode, int Color = -1 );
|
int draw_mode, int Color = -1 );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
EDA_Rect GetBoundingBox();
|
EDA_Rect GetBoundingBox();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -214,6 +248,15 @@ public:
|
||||||
DrawPolylineStruct* GenCopy();
|
DrawPolylineStruct* GenCopy();
|
||||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||||
int draw_mode, int Color = -1 );
|
int draw_mode, int Color = -1 );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class DrawJunctionStruct : public SCH_ITEM
|
class DrawJunctionStruct : public SCH_ITEM
|
||||||
|
@ -235,6 +278,15 @@ public:
|
||||||
DrawJunctionStruct* GenCopy();
|
DrawJunctionStruct* GenCopy();
|
||||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
|
||||||
int draw_mode, int Color = -1 );
|
int draw_mode, int Color = -1 );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -151,11 +151,11 @@ SCH_ITEM * PickStruct(const wxPoint & refpos, BASE_SCREEN* screen, int SearchMas
|
||||||
LibEDA_BaseStruct * LocateDrawItem(SCH_SCREEN * Screen, const wxPoint & refpoint,
|
LibEDA_BaseStruct * LocateDrawItem(SCH_SCREEN * Screen, const wxPoint & refpoint,
|
||||||
EDA_LibComponentStruct * LibEntry, int Unit, int Convert, int masque);
|
EDA_LibComponentStruct * LibEntry, int Unit, int Convert, int masque);
|
||||||
|
|
||||||
DrawSheetLabelStruct * LocateSheetLabel(DrawSheetStruct *Sheet, const wxPoint & pos);
|
Hierarchical_PIN_Sheet_Struct * LocateSheetLabel(DrawSheetStruct *Sheet, const wxPoint & pos);
|
||||||
LibDrawPin * LocateAnyPin(SCH_ITEM *DrawList, const wxPoint & RefPos,
|
LibDrawPin * LocateAnyPin(SCH_ITEM *DrawList, const wxPoint & RefPos,
|
||||||
SCH_COMPONENT ** libpart = NULL );
|
SCH_COMPONENT ** libpart = NULL );
|
||||||
|
|
||||||
DrawSheetLabelStruct * LocateAnyPinSheet(const wxPoint & RefPos,
|
Hierarchical_PIN_Sheet_Struct * LocateAnyPinSheet(const wxPoint & RefPos,
|
||||||
SCH_ITEM *DrawList);
|
SCH_ITEM *DrawList);
|
||||||
|
|
||||||
int distance(int dx, int dy, int spot_cX, int spot_cY, int seuil);
|
int distance(int dx, int dy, int spot_cX, int spot_cY, int seuil);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*********************************************/
|
/*********************************************/
|
||||||
/* eesave.cpp Module to Save EESchema files */
|
/* eesave.cpp Module to Save EESchema files */
|
||||||
/*********************************************/
|
/*********************************************/
|
||||||
|
|
||||||
#include "fctsys.h"
|
#include "fctsys.h"
|
||||||
#include "gr_basic.h"
|
#include "gr_basic.h"
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
|
|
||||||
/* Fonctions Locales */
|
/* Fonctions Locales */
|
||||||
static void SaveLayers(FILE *f);
|
static void SaveLayers( FILE* f );
|
||||||
|
|
||||||
/* Variables locales */
|
/* Variables locales */
|
||||||
|
|
||||||
|
@ -23,307 +23,259 @@ static void SaveLayers(FILE *f);
|
||||||
* FileSave controls how the file is to be saved - under what name. *
|
* FileSave controls how the file is to be saved - under what name. *
|
||||||
* Returns TRUE if the file has been saved. *
|
* Returns TRUE if the file has been saved. *
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
bool WinEDA_SchematicFrame::SaveEEFile(SCH_SCREEN *screen, int FileSave)
|
bool WinEDA_SchematicFrame::SaveEEFile( SCH_SCREEN* screen, int FileSave )
|
||||||
{
|
{
|
||||||
wxString msg;
|
wxString msg;
|
||||||
wxString Name, BakName;
|
wxString Name, BakName;
|
||||||
const wxChar **LibNames;
|
FILE* f;
|
||||||
const char * layer, *width;
|
|
||||||
int ii, shape;
|
|
||||||
bool Failed = FALSE;
|
|
||||||
EDA_BaseStruct *Phead;
|
|
||||||
Ki_PageDescr * PlotSheet;
|
|
||||||
FILE *f;
|
|
||||||
wxString dirbuf;
|
wxString dirbuf;
|
||||||
|
|
||||||
if ( screen == NULL ) screen = (SCH_SCREEN*)GetScreen();
|
if( screen == NULL )
|
||||||
|
screen = (SCH_SCREEN*) GetScreen();
|
||||||
|
|
||||||
/* If no name exists in the window yet - save as new. */
|
/* If no name exists in the window yet - save as new. */
|
||||||
if( screen->m_FileName.IsEmpty() ) FileSave = FILE_SAVE_NEW;
|
if( screen->m_FileName.IsEmpty() )
|
||||||
|
FileSave = FILE_SAVE_NEW;
|
||||||
|
|
||||||
switch (FileSave)
|
switch( FileSave )
|
||||||
{
|
{
|
||||||
case FILE_SAVE_AS:
|
case FILE_SAVE_AS:
|
||||||
dirbuf = wxGetCwd() + STRING_DIR_SEP;
|
dirbuf = wxGetCwd() + STRING_DIR_SEP;
|
||||||
Name = MakeFileName(dirbuf, screen->m_FileName, g_SchExtBuffer);
|
Name = MakeFileName( dirbuf, screen->m_FileName, g_SchExtBuffer );
|
||||||
/* Rename the old file to a '.bak' one: */
|
/* Rename the old file to a '.bak' one: */
|
||||||
BakName = Name;
|
BakName = Name;
|
||||||
if ( wxFileExists(Name) )
|
if( wxFileExists( Name ) )
|
||||||
{
|
|
||||||
ChangeFileNameExt(BakName, wxT(".bak"));
|
|
||||||
wxRemoveFile(BakName); /* delete Old .bak file */
|
|
||||||
if( ! wxRenameFile(Name, BakName) ){
|
|
||||||
DisplayError(this, wxT("Warning: unable to rename old file"), 10);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FILE_SAVE_NEW:
|
|
||||||
{
|
{
|
||||||
wxString mask = wxT("*") + g_SchExtBuffer;
|
ChangeFileNameExt( BakName, wxT( ".bak" ) );
|
||||||
Name = EDA_FileSelector(_("Schematic files:"),
|
wxRemoveFile( BakName ); /* delete Old .bak file */
|
||||||
wxEmptyString, /* Chemin par defaut */
|
if( !wxRenameFile( Name, BakName ) )
|
||||||
screen->m_FileName, /* nom fichier par defaut, et resultat */
|
{
|
||||||
g_SchExtBuffer, /* extension par defaut */
|
DisplayError( this, wxT( "Warning: unable to rename old file" ), 10 );
|
||||||
mask, /* Masque d'affichage */
|
}
|
||||||
this,
|
|
||||||
wxFD_SAVE,
|
|
||||||
FALSE
|
|
||||||
);
|
|
||||||
if ( Name.IsEmpty() ) return FALSE;
|
|
||||||
|
|
||||||
screen->m_FileName = Name;
|
|
||||||
dirbuf = wxGetCwd() + STRING_DIR_SEP;
|
|
||||||
Name = MakeFileName(dirbuf, Name, g_SchExtBuffer);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default: break;
|
case FILE_SAVE_NEW:
|
||||||
|
{
|
||||||
|
wxString mask = wxT( "*" ) + g_SchExtBuffer;
|
||||||
|
Name = EDA_FileSelector( _( "Schematic files:" ),
|
||||||
|
wxEmptyString, /* Chemin par defaut */
|
||||||
|
screen->m_FileName, /* nom fichier par defaut, et resultat */
|
||||||
|
g_SchExtBuffer, /* extension par defaut */
|
||||||
|
mask, /* Masque d'affichage */
|
||||||
|
this,
|
||||||
|
wxFD_SAVE,
|
||||||
|
FALSE
|
||||||
|
);
|
||||||
|
if( Name.IsEmpty() )
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
screen->m_FileName = Name;
|
||||||
|
dirbuf = wxGetCwd() + STRING_DIR_SEP;
|
||||||
|
Name = MakeFileName( dirbuf, Name, g_SchExtBuffer );
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((f = wxFopen(Name, wxT("wt"))) == NULL)
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ( f = wxFopen( Name, wxT( "wt" ) ) ) == NULL )
|
||||||
{
|
{
|
||||||
msg = _("Failed to create file ") + Name;
|
msg = _( "Failed to create file " ) + Name;
|
||||||
DisplayError(this, msg);
|
DisplayError( this, msg );
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
msg = _("Save file ") + Name;
|
if( FileSave == FILE_SAVE_NEW )
|
||||||
Affiche_Message(msg);
|
screen->m_FileName = Name;
|
||||||
|
|
||||||
|
bool success = screen->Save( f );
|
||||||
|
if( !success )
|
||||||
|
DisplayError( this, _( "File write operation failed." ) );
|
||||||
|
else
|
||||||
|
screen->ClrModify();
|
||||||
|
|
||||||
|
|
||||||
|
fclose( f );
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************/
|
||||||
|
bool SCH_SCREEN::Save( FILE* aFile ) const
|
||||||
|
/*****************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
const wxChar** LibNames;
|
||||||
|
wxString Name, msg;
|
||||||
|
int ii;
|
||||||
|
bool Failed = FALSE;
|
||||||
|
EDA_BaseStruct* Phead;
|
||||||
|
Ki_PageDescr* PlotSheet;
|
||||||
|
|
||||||
LibNames = GetLibNames();
|
LibNames = GetLibNames();
|
||||||
BakName.Empty(); // temporary buffer!
|
for( ii = 0; LibNames[ii] != NULL; ii++ )
|
||||||
for (ii = 0; LibNames[ii] != NULL; ii++)
|
|
||||||
{
|
{
|
||||||
if (ii > 0) BakName += wxT(",");
|
if( ii > 0 )
|
||||||
BakName += LibNames[ii];
|
Name += wxT( "," );
|
||||||
|
Name += LibNames[ii];
|
||||||
}
|
}
|
||||||
MyFree( LibNames);
|
|
||||||
|
|
||||||
if (fprintf(f, "%s %s %d\n", EESCHEMA_FILE_STAMP,
|
MyFree( LibNames );
|
||||||
SCHEMATIC_HEAD_STRING, EESCHEMA_VERSION) == EOF ||
|
|
||||||
fprintf(f, "LIBS:%s\n", CONV_TO_UTF8(BakName)) == EOF)
|
// Creates header
|
||||||
|
if( fprintf( aFile, "%s %s %d\n", EESCHEMA_FILE_STAMP,
|
||||||
|
SCHEMATIC_HEAD_STRING, EESCHEMA_VERSION ) == EOF
|
||||||
|
|| fprintf( aFile, "LIBS:%s\n", CONV_TO_UTF8( Name ) ) == EOF )
|
||||||
{
|
{
|
||||||
DisplayError(this, _("File write operation failed."));
|
|
||||||
fclose(f);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
screen->ClrModify();
|
SaveLayers( aFile );
|
||||||
|
|
||||||
SaveLayers(f);
|
/* Write page info */
|
||||||
/* Sauvegarde des dimensions du schema, des textes du cartouche.. */
|
|
||||||
|
|
||||||
PlotSheet = screen->m_CurrentSheetDesc;
|
PlotSheet = m_CurrentSheetDesc;
|
||||||
fprintf(f,"$Descr %s %d %d\n",CONV_TO_UTF8(PlotSheet->m_Name),
|
fprintf( aFile, "$Descr %s %d %d\n", CONV_TO_UTF8( PlotSheet->m_Name ),
|
||||||
PlotSheet->m_Size.x, PlotSheet->m_Size.y);
|
PlotSheet->m_Size.x, PlotSheet->m_Size.y );
|
||||||
|
|
||||||
fprintf(f,"Sheet %d %d\n",screen->m_ScreenNumber, screen->m_NumberOfScreen);
|
fprintf( aFile, "Sheet %d %d\n", m_ScreenNumber, m_NumberOfScreen );
|
||||||
fprintf(f,"Title \"%s\"\n",CONV_TO_UTF8(screen->m_Title));
|
fprintf( aFile, "Title \"%s\"\n", CONV_TO_UTF8( m_Title ) );
|
||||||
fprintf(f,"Date \"%s\"\n",CONV_TO_UTF8(screen->m_Date));
|
fprintf( aFile, "Date \"%s\"\n", CONV_TO_UTF8( m_Date ) );
|
||||||
fprintf(f,"Rev \"%s\"\n",CONV_TO_UTF8(screen->m_Revision));
|
fprintf( aFile, "Rev \"%s\"\n", CONV_TO_UTF8( m_Revision ) );
|
||||||
fprintf(f,"Comp \"%s\"\n",CONV_TO_UTF8(screen->m_Company));
|
fprintf( aFile, "Comp \"%s\"\n", CONV_TO_UTF8( m_Company ) );
|
||||||
fprintf(f,"Comment1 \"%s\"\n", CONV_TO_UTF8(screen->m_Commentaire1));
|
fprintf( aFile, "Comment1 \"%s\"\n", CONV_TO_UTF8( m_Commentaire1 ) );
|
||||||
fprintf(f,"Comment2 \"%s\"\n", CONV_TO_UTF8(screen->m_Commentaire2));
|
fprintf( aFile, "Comment2 \"%s\"\n", CONV_TO_UTF8( m_Commentaire2 ) );
|
||||||
fprintf(f,"Comment3 \"%s\"\n", CONV_TO_UTF8(screen->m_Commentaire3));
|
fprintf( aFile, "Comment3 \"%s\"\n", CONV_TO_UTF8( m_Commentaire3 ) );
|
||||||
fprintf(f,"Comment4 \"%s\"\n", CONV_TO_UTF8(screen->m_Commentaire4));
|
fprintf( aFile, "Comment4 \"%s\"\n", CONV_TO_UTF8( m_Commentaire4 ) );
|
||||||
|
|
||||||
fprintf(f,"$EndDescr\n");
|
fprintf( aFile, "$EndDescr\n" );
|
||||||
|
|
||||||
/* Sauvegarde des elements du dessin */
|
/* Saving schematic items */
|
||||||
Phead = screen->EEDrawList;
|
Phead = EEDrawList;
|
||||||
while (Phead)
|
while( Phead )
|
||||||
|
{
|
||||||
|
switch( Phead->Type() )
|
||||||
{
|
{
|
||||||
switch(Phead->Type())
|
case TYPE_SCH_COMPONENT: /* Its a library item. */
|
||||||
{
|
if( !( (SCH_COMPONENT*) Phead )->Save( aFile ) )
|
||||||
case TYPE_SCH_COMPONENT: /* Its a library item. */
|
Failed = TRUE;
|
||||||
((SCH_COMPONENT *) Phead)->Save( f );
|
break;
|
||||||
break;
|
|
||||||
|
case DRAW_SHEET_STRUCT_TYPE: /* Its a Sheet item. */
|
||||||
case DRAW_SHEET_STRUCT_TYPE: /* Its a Sheet item. */
|
if( !( (DrawSheetStruct*) Phead )->Save( aFile ) )
|
||||||
((DrawSheetStruct *) Phead)->Save( f );
|
Failed = TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_SEGMENT_STRUCT_TYPE: /* Its a Segment item. */
|
case DRAW_SEGMENT_STRUCT_TYPE: /* Its a Segment item. */
|
||||||
#undef STRUCT
|
#undef STRUCT
|
||||||
#define STRUCT ((EDA_DrawLineStruct *) Phead)
|
#define STRUCT ( (EDA_DrawLineStruct*) Phead )
|
||||||
layer = "Notes"; width = "Line";
|
if( !STRUCT->Save( aFile ) )
|
||||||
if (STRUCT->GetLayer() == LAYER_WIRE) layer = "Wire";
|
Failed = TRUE;
|
||||||
if (STRUCT->GetLayer() == LAYER_BUS) layer = "Bus";
|
break;
|
||||||
if( STRUCT->m_Width != GR_NORM_WIDTH) layer = "Bus";
|
|
||||||
if (fprintf(f, "Wire %s %s\n", layer, width ) == EOF)
|
case DRAW_BUSENTRY_STRUCT_TYPE: /* Its a Raccord item. */
|
||||||
{
|
#undef STRUCT
|
||||||
Failed = TRUE; break;
|
#define STRUCT ( (DrawBusEntryStruct*) Phead )
|
||||||
}
|
if( !STRUCT->Save( aFile ) )
|
||||||
if (fprintf(f, "\t%-4d %-4d %-4d %-4d\n",
|
Failed = TRUE;
|
||||||
STRUCT->m_Start.x,STRUCT->m_Start.y,
|
break;
|
||||||
STRUCT->m_End.x,STRUCT->m_End.y) == EOF)
|
|
||||||
{
|
case DRAW_POLYLINE_STRUCT_TYPE: /* Its a polyline item. */
|
||||||
Failed = TRUE; break;
|
#undef STRUCT
|
||||||
}
|
#define STRUCT ( (DrawPolylineStruct*) Phead )
|
||||||
break;
|
if( !STRUCT->Save( aFile ) )
|
||||||
|
Failed = TRUE;
|
||||||
case DRAW_BUSENTRY_STRUCT_TYPE: /* Its a Raccord item. */
|
break;
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ((DrawBusEntryStruct *) Phead)
|
case DRAW_JUNCTION_STRUCT_TYPE: /* Its a connection item. */
|
||||||
layer = "Wire"; width = "Line";
|
#undef STRUCT
|
||||||
if (STRUCT->GetLayer() == LAYER_BUS)
|
#define STRUCT ( (DrawJunctionStruct*) Phead )
|
||||||
{
|
if( !STRUCT->Save( aFile ) )
|
||||||
layer = "Bus"; width = "Bus";
|
Failed = TRUE;
|
||||||
}
|
break;
|
||||||
|
|
||||||
if (fprintf(f, "Entry %s %s\n", layer, width) == EOF)
|
case DRAW_NOCONNECT_STRUCT_TYPE: /* Its a NoConnection item. */
|
||||||
{
|
#undef STRUCT
|
||||||
Failed = TRUE; break;
|
#define STRUCT ( (DrawNoConnectStruct*) Phead )
|
||||||
}
|
if( !STRUCT->Save( aFile ) )
|
||||||
if( fprintf(f, "\t%-4d %-4d %-4d %-4d\n",
|
Failed = TRUE;
|
||||||
STRUCT->m_Pos.x,STRUCT->m_Pos.y,
|
break;
|
||||||
STRUCT->m_End().x,STRUCT->m_End().y) == EOF)
|
|
||||||
{
|
case TYPE_SCH_TEXT: /* Its a text item. */
|
||||||
Failed = TRUE; break;
|
#undef STRUCT
|
||||||
}
|
#define STRUCT ( (SCH_TEXT*) Phead )
|
||||||
break;
|
if( !STRUCT->Save( aFile ) )
|
||||||
|
Failed = TRUE;
|
||||||
case DRAW_POLYLINE_STRUCT_TYPE: /* Its a polyline item. */
|
break;
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ((DrawPolylineStruct *) Phead)
|
|
||||||
layer = "Notes"; width = "Line";
|
case TYPE_SCH_LABEL: /* Its a label item. */
|
||||||
if (STRUCT->GetLayer() == LAYER_WIRE) layer = "Wire";
|
#undef STRUCT
|
||||||
if (STRUCT->GetLayer() == LAYER_BUS) layer = "Bus";
|
#define STRUCT ( (SCH_LABEL*) Phead )
|
||||||
if( STRUCT->m_Width != GR_NORM_WIDTH) width = "Bus";
|
if( !STRUCT->Save( aFile ) )
|
||||||
if (fprintf(f, "Poly %s %s %d\n",
|
Failed = TRUE;
|
||||||
width, layer, STRUCT->m_NumOfPoints) == EOF)
|
break;
|
||||||
{
|
|
||||||
Failed = TRUE; break;
|
case TYPE_SCH_GLOBALLABEL: /* Its a Global label item. */
|
||||||
}
|
#undef STRUCT
|
||||||
for (ii = 0; ii < STRUCT->m_NumOfPoints; ii++)
|
#define STRUCT ( (SCH_GLOBALLABEL*) Phead )
|
||||||
{
|
if( !STRUCT->Save( aFile ) )
|
||||||
if (fprintf(f, "\t%-4d %-4d\n",
|
Failed = TRUE;
|
||||||
STRUCT->m_Points[ii*2],
|
break;
|
||||||
STRUCT->m_Points[ii*2+1]) == EOF)
|
|
||||||
{
|
case TYPE_SCH_HIERLABEL: /* Its a Hierarchical label item. */
|
||||||
Failed = TRUE;
|
#undef STRUCT
|
||||||
break;
|
#define STRUCT ( (SCH_HIERLABEL*) Phead )
|
||||||
}
|
if( !STRUCT->Save( aFile ) )
|
||||||
}
|
Failed = TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_JUNCTION_STRUCT_TYPE: /* Its a connection item. */
|
case DRAW_MARKER_STRUCT_TYPE: /* Its a marker item. */
|
||||||
#undef STRUCT
|
#undef STRUCT
|
||||||
#define STRUCT ((DrawJunctionStruct *) Phead)
|
#define STRUCT ( (DrawMarkerStruct*) Phead )
|
||||||
if (fprintf(f, "Connection ~ %-4d %-4d\n",
|
if( !STRUCT->Save( aFile ) )
|
||||||
STRUCT->m_Pos.x, STRUCT->m_Pos.y) == EOF)
|
Failed = TRUE;
|
||||||
{
|
break;
|
||||||
Failed = TRUE;
|
|
||||||
}
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
break;
|
case DRAW_PICK_ITEM_STRUCT_TYPE:
|
||||||
|
break;
|
||||||
case DRAW_NOCONNECT_STRUCT_TYPE: /* Its a NoConnection item. */
|
|
||||||
#undef STRUCT
|
default:
|
||||||
#define STRUCT ((DrawNoConnectStruct *) Phead)
|
break;
|
||||||
if (fprintf(f, "NoConn ~ %-4d %-4d\n",
|
}
|
||||||
STRUCT->m_Pos.x, STRUCT->m_Pos.y) == EOF)
|
|
||||||
{
|
if( Failed )
|
||||||
Failed = TRUE;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TYPE_SCH_TEXT: /* Its a text item. */
|
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ((SCH_TEXT *) Phead)
|
|
||||||
if (fprintf(f, "Text Notes %-4d %-4d %-4d %-4d ~\n%s\n",
|
|
||||||
STRUCT->m_Pos.x, STRUCT->m_Pos.y,
|
|
||||||
STRUCT->m_Orient, STRUCT->m_Size.x,
|
|
||||||
CONV_TO_UTF8(STRUCT->m_Text)) == EOF)
|
|
||||||
Failed = TRUE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
|
||||||
case TYPE_SCH_LABEL: /* Its a label item. */
|
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ((SCH_LABEL *) Phead)
|
|
||||||
shape = '~';
|
|
||||||
if (fprintf(f, "Text Label %-4d %-4d %-4d %-4d %c\n%s\n",
|
|
||||||
STRUCT->m_Pos.x, STRUCT->m_Pos.y,
|
|
||||||
STRUCT->m_Orient, STRUCT->m_Size.x, shape,
|
|
||||||
CONV_TO_UTF8(STRUCT->m_Text)) == EOF)
|
|
||||||
Failed = TRUE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TYPE_SCH_GLOBALLABEL: /* Its a Global label item. */
|
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ((SCH_GLOBALLABEL *) Phead)
|
|
||||||
shape = STRUCT->m_Shape;
|
|
||||||
if (fprintf(f, "Text GLabel %-4d %-4d %-4d %-4d %s\n%s\n",
|
|
||||||
STRUCT->m_Pos.x, STRUCT->m_Pos.y,
|
|
||||||
STRUCT->m_Orient, STRUCT->m_Size.x,
|
|
||||||
SheetLabelType[shape],
|
|
||||||
CONV_TO_UTF8(STRUCT->m_Text)) == EOF)
|
|
||||||
Failed = TRUE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TYPE_SCH_HIERLABEL: /* Its a Hierarchical label item. */
|
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ((SCH_HIERLABEL *) Phead)
|
|
||||||
shape = STRUCT->m_Shape;
|
|
||||||
if (fprintf(f, "Text HLabel %-4d %-4d %-4d %-4d %s\n%s\n",
|
|
||||||
STRUCT->m_Pos.x, STRUCT->m_Pos.y,
|
|
||||||
STRUCT->m_Orient, STRUCT->m_Size.x,
|
|
||||||
SheetLabelType[shape],
|
|
||||||
CONV_TO_UTF8(STRUCT->m_Text)) == EOF)
|
|
||||||
Failed = TRUE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAW_MARKER_STRUCT_TYPE: /* Its a marker item. */
|
|
||||||
#undef STRUCT
|
|
||||||
#define STRUCT ((DrawMarkerStruct *) Phead)
|
|
||||||
if( STRUCT->GetComment() ) msg = STRUCT->GetComment();
|
|
||||||
else msg.Empty();
|
|
||||||
if (fprintf(f, "Kmarq %c %-4d %-4d \"%s\" F=%X\n",
|
|
||||||
(int) STRUCT->m_Type + 'A',
|
|
||||||
STRUCT->m_Pos.x, STRUCT->m_Pos.y,
|
|
||||||
CONV_TO_UTF8(msg), STRUCT->m_MarkFlags) == EOF)
|
|
||||||
{
|
|
||||||
Failed = TRUE;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE :
|
|
||||||
case DRAW_PICK_ITEM_STRUCT_TYPE :
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Failed)
|
|
||||||
{
|
|
||||||
DisplayError(this, _("File write operation failed."));
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
Phead = Phead->Pnext;
|
Phead = Phead->Pnext;
|
||||||
}
|
}
|
||||||
if (fprintf(f, "$EndSCHEMATC\n") == EOF) Failed = TRUE;
|
|
||||||
|
|
||||||
fclose(f);
|
if( fprintf( aFile, "$EndSCHEMATC\n" ) == EOF )
|
||||||
|
Failed = TRUE;
|
||||||
if (FileSave == FILE_SAVE_NEW) screen->m_FileName = Name;
|
|
||||||
|
|
||||||
return !Failed;
|
return !Failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/****************************/
|
/****************************/
|
||||||
static void SaveLayers(FILE *f)
|
static void SaveLayers( FILE* f )
|
||||||
/****************************/
|
/****************************/
|
||||||
|
|
||||||
/* Save a Layer Structure to a file
|
/* Save a Layer Structure to a file
|
||||||
theses infos are not used in eeschema
|
* theses infos are not used in eeschema
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
fprintf(f,"EELAYER %2d %2d\n", g_LayerDescr.NumberOfLayers,g_LayerDescr.CurrentLayer);
|
fprintf( f, "EELAYER %2d %2d\n", g_LayerDescr.NumberOfLayers, g_LayerDescr.CurrentLayer );
|
||||||
fprintf(f,"EELAYER END\n");
|
fprintf( f, "EELAYER END\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -384,13 +384,13 @@ void WinEDA_SchematicFrame::Process_Special_Functions( wxCommandEvent& event )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_SCH_EDIT_PINSHEET:
|
case ID_POPUP_SCH_EDIT_PINSHEET:
|
||||||
Edit_PinSheet( (DrawSheetLabelStruct*)
|
Edit_PinSheet( (Hierarchical_PIN_Sheet_Struct*)
|
||||||
GetScreen()->GetCurItem(), &dc );
|
GetScreen()->GetCurItem(), &dc );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_POPUP_SCH_MOVE_PINSHEET:
|
case ID_POPUP_SCH_MOVE_PINSHEET:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
StartMove_PinSheet( (DrawSheetLabelStruct*)
|
StartMove_PinSheet( (Hierarchical_PIN_Sheet_Struct*)
|
||||||
GetScreen()->GetCurItem(), &dc );
|
GetScreen()->GetCurItem(), &dc );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -781,7 +781,7 @@ void WinEDA_SchematicFrame::Process_Move_Item( SCH_ITEM* DrawStruct, wxDC* DC )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_MARKER_STRUCT_TYPE:
|
case DRAW_MARKER_STRUCT_TYPE:
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
default:
|
default:
|
||||||
wxString msg;
|
wxString msg;
|
||||||
msg.Printf(
|
msg.Printf(
|
||||||
|
|
|
@ -141,11 +141,11 @@ void SwapData( EDA_BaseStruct* Item )
|
||||||
EXCHG( SOURCE->m_Pos, DEST->m_Pos );
|
EXCHG( SOURCE->m_Pos, DEST->m_Pos );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_SHEETLABEL_STRUCT_TYPE:
|
case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE:
|
||||||
#undef SOURCE
|
#undef SOURCE
|
||||||
#undef DEST
|
#undef DEST
|
||||||
#define SOURCE ( (DrawSheetLabelStruct*) Item )
|
#define SOURCE ( (Hierarchical_PIN_Sheet_Struct*) Item )
|
||||||
#define DEST ( (DrawSheetLabelStruct*) image )
|
#define DEST ( (Hierarchical_PIN_Sheet_Struct*) image )
|
||||||
EXCHG( SOURCE->m_Edge, DEST->m_Edge );
|
EXCHG( SOURCE->m_Edge, DEST->m_Edge );
|
||||||
EXCHG( SOURCE->m_Shape, DEST->m_Shape );
|
EXCHG( SOURCE->m_Shape, DEST->m_Shape );
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -400,7 +400,7 @@ DrawSheetStruct* WinEDA_SchematicFrame::CreateSheet( wxDC* DC )
|
||||||
void WinEDA_SchematicFrame::ReSizeSheet( DrawSheetStruct* Sheet, wxDC* DC )
|
void WinEDA_SchematicFrame::ReSizeSheet( DrawSheetStruct* Sheet, wxDC* DC )
|
||||||
/*******************************************************************************/
|
/*******************************************************************************/
|
||||||
{
|
{
|
||||||
DrawSheetLabelStruct* sheetlabel;
|
Hierarchical_PIN_Sheet_Struct* sheetlabel;
|
||||||
|
|
||||||
if( Sheet == NULL )
|
if( Sheet == NULL )
|
||||||
return;
|
return;
|
||||||
|
@ -430,7 +430,7 @@ void WinEDA_SchematicFrame::ReSizeSheet( DrawSheetStruct* Sheet, wxDC* DC )
|
||||||
(int) ( (sheetlabel->GetLength() +
|
(int) ( (sheetlabel->GetLength() +
|
||||||
1) * sheetlabel->m_Size.x ) );
|
1) * sheetlabel->m_Size.x ) );
|
||||||
s_SheetMindy = MAX( s_SheetMindy, sheetlabel->m_Pos.y - Sheet->m_Pos.y );
|
s_SheetMindy = MAX( s_SheetMindy, sheetlabel->m_Pos.y - Sheet->m_Pos.y );
|
||||||
sheetlabel = (DrawSheetLabelStruct*) sheetlabel->Pnext;
|
sheetlabel = (Hierarchical_PIN_Sheet_Struct*) sheetlabel->Pnext;
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawPanel->ManageCurseur = DeplaceSheet;
|
DrawPanel->ManageCurseur = DeplaceSheet;
|
||||||
|
@ -467,7 +467,7 @@ void WinEDA_SchematicFrame::StartMoveSheet( DrawSheetStruct* Sheet, wxDC* DC )
|
||||||
static void DeplaceSheet( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
static void DeplaceSheet( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
||||||
{
|
{
|
||||||
wxPoint move_vector;
|
wxPoint move_vector;
|
||||||
DrawSheetLabelStruct* SheetLabel;
|
Hierarchical_PIN_Sheet_Struct* SheetLabel;
|
||||||
BASE_SCREEN* screen = panel->m_Parent->GetScreen();
|
BASE_SCREEN* screen = panel->m_Parent->GetScreen();
|
||||||
|
|
||||||
DrawSheetStruct* Sheet = (DrawSheetStruct*)
|
DrawSheetStruct* Sheet = (DrawSheetStruct*)
|
||||||
|
@ -488,7 +488,7 @@ static void DeplaceSheet( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
||||||
{
|
{
|
||||||
if( SheetLabel->m_Edge )
|
if( SheetLabel->m_Edge )
|
||||||
SheetLabel->m_Pos.x = Sheet->m_Pos.x + Sheet->m_Size.x;
|
SheetLabel->m_Pos.x = Sheet->m_Pos.x + Sheet->m_Size.x;
|
||||||
SheetLabel = (DrawSheetLabelStruct*) SheetLabel->Pnext;
|
SheetLabel = (Hierarchical_PIN_Sheet_Struct*) SheetLabel->Pnext;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else /* Move Sheet */
|
else /* Move Sheet */
|
||||||
|
|
|
@ -39,7 +39,7 @@ class WinEDA_PinSheetPropertiesFrame : public wxDialog
|
||||||
private:
|
private:
|
||||||
|
|
||||||
WinEDA_SchematicFrame* m_Parent;
|
WinEDA_SchematicFrame* m_Parent;
|
||||||
DrawSheetLabelStruct* m_CurrentPinSheet;
|
Hierarchical_PIN_Sheet_Struct* m_CurrentPinSheet;
|
||||||
wxRadioBox* m_PinSheetType;
|
wxRadioBox* m_PinSheetType;
|
||||||
wxRadioBox* m_PinSheetShape;
|
wxRadioBox* m_PinSheetShape;
|
||||||
WinEDA_GraphicTextCtrl* m_TextWin;
|
WinEDA_GraphicTextCtrl* m_TextWin;
|
||||||
|
@ -48,7 +48,7 @@ public:
|
||||||
|
|
||||||
// Constructor and destructor
|
// Constructor and destructor
|
||||||
WinEDA_PinSheetPropertiesFrame( WinEDA_SchematicFrame* parent,
|
WinEDA_PinSheetPropertiesFrame( WinEDA_SchematicFrame* parent,
|
||||||
DrawSheetLabelStruct* curr_pinsheet,
|
Hierarchical_PIN_Sheet_Struct* curr_pinsheet,
|
||||||
const wxPoint& framepos = wxPoint( -1, -1 ) );
|
const wxPoint& framepos = wxPoint( -1, -1 ) );
|
||||||
~WinEDA_PinSheetPropertiesFrame() { };
|
~WinEDA_PinSheetPropertiesFrame() { };
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ END_EVENT_TABLE()
|
||||||
/**********************************************************************************/
|
/**********************************************************************************/
|
||||||
WinEDA_PinSheetPropertiesFrame::WinEDA_PinSheetPropertiesFrame(
|
WinEDA_PinSheetPropertiesFrame::WinEDA_PinSheetPropertiesFrame(
|
||||||
WinEDA_SchematicFrame* parent,
|
WinEDA_SchematicFrame* parent,
|
||||||
DrawSheetLabelStruct* curr_pinsheet,
|
Hierarchical_PIN_Sheet_Struct* curr_pinsheet,
|
||||||
const wxPoint& framepos ) :
|
const wxPoint& framepos ) :
|
||||||
wxDialog( parent, -1, _( "PinSheet Properties:" ), framepos, wxSize( 340, 220 ),
|
wxDialog( parent, -1, _( "PinSheet Properties:" ), framepos, wxSize( 340, 220 ),
|
||||||
DIALOG_STYLE )
|
DIALOG_STYLE )
|
||||||
|
@ -142,7 +142,7 @@ static void ExitPinSheet( WinEDA_DrawPanel* Panel, wxDC* DC )
|
||||||
/* Routine de sortie du Menu d'Edition Des NETS (Labels) SHEET
|
/* Routine de sortie du Menu d'Edition Des NETS (Labels) SHEET
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
DrawSheetLabelStruct* SheetLabel = (DrawSheetLabelStruct*)
|
Hierarchical_PIN_Sheet_Struct* SheetLabel = (Hierarchical_PIN_Sheet_Struct*)
|
||||||
Panel->GetScreen()->GetCurItem();
|
Panel->GetScreen()->GetCurItem();
|
||||||
|
|
||||||
if( SheetLabel == NULL )
|
if( SheetLabel == NULL )
|
||||||
|
@ -169,7 +169,7 @@ static void ExitPinSheet( WinEDA_DrawPanel* Panel, wxDC* DC )
|
||||||
* de deplacement
|
* de deplacement
|
||||||
* Si le NetSheet est nouveau, il est pointe par NewSheetLabel
|
* Si le NetSheet est nouveau, il est pointe par NewSheetLabel
|
||||||
*/
|
*/
|
||||||
void DrawSheetLabelStruct::Place( WinEDA_DrawFrame* frame, wxDC* DC )
|
void Hierarchical_PIN_Sheet_Struct::Place( WinEDA_DrawFrame* frame, wxDC* DC )
|
||||||
{
|
{
|
||||||
DrawSheetStruct* Sheet = (DrawSheetStruct*) m_Parent;
|
DrawSheetStruct* Sheet = (DrawSheetStruct*) m_Parent;
|
||||||
|
|
||||||
|
@ -179,7 +179,7 @@ void DrawSheetLabelStruct::Place( WinEDA_DrawFrame* frame, wxDC* DC )
|
||||||
Sheet->m_Label = this;
|
Sheet->m_Label = this;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DrawSheetLabelStruct* pinsheet = Sheet->m_Label;
|
Hierarchical_PIN_Sheet_Struct* pinsheet = Sheet->m_Label;
|
||||||
while( pinsheet )
|
while( pinsheet )
|
||||||
{
|
{
|
||||||
if( pinsheet->Pnext == NULL )
|
if( pinsheet->Pnext == NULL )
|
||||||
|
@ -187,7 +187,7 @@ void DrawSheetLabelStruct::Place( WinEDA_DrawFrame* frame, wxDC* DC )
|
||||||
pinsheet->Pnext = this;
|
pinsheet->Pnext = this;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
pinsheet = (DrawSheetLabelStruct*) pinsheet->Pnext;
|
pinsheet = (Hierarchical_PIN_Sheet_Struct*) pinsheet->Pnext;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -215,7 +215,7 @@ void DrawSheetLabelStruct::Place( WinEDA_DrawFrame* frame, wxDC* DC )
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************/
|
/*******************************************************************************/
|
||||||
void WinEDA_SchematicFrame::StartMove_PinSheet( DrawSheetLabelStruct* SheetLabel,
|
void WinEDA_SchematicFrame::StartMove_PinSheet( Hierarchical_PIN_Sheet_Struct* SheetLabel,
|
||||||
wxDC* DC )
|
wxDC* DC )
|
||||||
/*******************************************************************************/
|
/*******************************************************************************/
|
||||||
/* Initialise un deplacement de NetSheet */
|
/* Initialise un deplacement de NetSheet */
|
||||||
|
@ -236,7 +236,7 @@ void WinEDA_SchematicFrame::StartMove_PinSheet( DrawSheetLabelStruct* SheetLabel
|
||||||
|
|
||||||
static void Move_PinSheet( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
static void Move_PinSheet( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
||||||
{
|
{
|
||||||
DrawSheetLabelStruct* SheetLabel = (DrawSheetLabelStruct*)
|
Hierarchical_PIN_Sheet_Struct* SheetLabel = (Hierarchical_PIN_Sheet_Struct*)
|
||||||
panel->m_Parent->GetScreen()->GetCurItem();
|
panel->m_Parent->GetScreen()->GetCurItem();
|
||||||
|
|
||||||
if( SheetLabel == NULL )
|
if( SheetLabel == NULL )
|
||||||
|
@ -268,7 +268,7 @@ static void Move_PinSheet( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
void WinEDA_SchematicFrame::Edit_PinSheet( DrawSheetLabelStruct* SheetLabel,
|
void WinEDA_SchematicFrame::Edit_PinSheet( Hierarchical_PIN_Sheet_Struct* SheetLabel,
|
||||||
wxDC* DC )
|
wxDC* DC )
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
/* Modification du texte d'un net sheet */
|
/* Modification du texte d'un net sheet */
|
||||||
|
@ -288,7 +288,7 @@ void WinEDA_SchematicFrame::Edit_PinSheet( DrawSheetLabelStruct* SheetLabel,
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
DrawSheetLabelStruct* WinEDA_SchematicFrame::Create_PinSheet(
|
Hierarchical_PIN_Sheet_Struct* WinEDA_SchematicFrame::Create_PinSheet(
|
||||||
DrawSheetStruct* Sheet, wxDC* DC )
|
DrawSheetStruct* Sheet, wxDC* DC )
|
||||||
/**************************************************************/
|
/**************************************************************/
|
||||||
|
|
||||||
|
@ -297,7 +297,7 @@ DrawSheetLabelStruct* WinEDA_SchematicFrame::Create_PinSheet(
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
wxString Line, Text;
|
wxString Line, Text;
|
||||||
DrawSheetLabelStruct* NewSheetLabel;
|
Hierarchical_PIN_Sheet_Struct* NewSheetLabel;
|
||||||
|
|
||||||
switch( CurrentTypeLabel )
|
switch( CurrentTypeLabel )
|
||||||
{
|
{
|
||||||
|
@ -332,7 +332,7 @@ DrawSheetLabelStruct* WinEDA_SchematicFrame::Create_PinSheet(
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
|
|
||||||
/* Creation en memoire */
|
/* Creation en memoire */
|
||||||
NewSheetLabel = new DrawSheetLabelStruct( Sheet, wxPoint( 0, 0 ), Line );
|
NewSheetLabel = new Hierarchical_PIN_Sheet_Struct( Sheet, wxPoint( 0, 0 ), Line );
|
||||||
NewSheetLabel->m_Flags = IS_NEW;
|
NewSheetLabel->m_Flags = IS_NEW;
|
||||||
NewSheetLabel->m_Size = NetSheetTextSize;
|
NewSheetLabel->m_Size = NetSheetTextSize;
|
||||||
NewSheetLabel->m_Shape = CurrentTypeLabel;
|
NewSheetLabel->m_Shape = CurrentTypeLabel;
|
||||||
|
@ -348,7 +348,7 @@ DrawSheetLabelStruct* WinEDA_SchematicFrame::Create_PinSheet(
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
DrawSheetLabelStruct* WinEDA_SchematicFrame::Import_PinSheet( DrawSheetStruct* Sheet, wxDC* DC )
|
Hierarchical_PIN_Sheet_Struct* WinEDA_SchematicFrame::Import_PinSheet( DrawSheetStruct* Sheet, wxDC* DC )
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
/* Permet de creer automatiquement les Sheet Labels a partir des Labels Globaux
|
/* Permet de creer automatiquement les Sheet Labels a partir des Labels Globaux
|
||||||
|
@ -356,7 +356,7 @@ DrawSheetLabelStruct* WinEDA_SchematicFrame::Import_PinSheet( DrawSheetStruct* S
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
EDA_BaseStruct* DrawStruct;
|
EDA_BaseStruct* DrawStruct;
|
||||||
DrawSheetLabelStruct* NewSheetLabel, * SheetLabel = NULL;
|
Hierarchical_PIN_Sheet_Struct* NewSheetLabel, * SheetLabel = NULL;
|
||||||
SCH_HIERLABEL* HLabel = NULL;
|
SCH_HIERLABEL* HLabel = NULL;
|
||||||
|
|
||||||
if(!Sheet->m_AssociatedScreen) return NULL;
|
if(!Sheet->m_AssociatedScreen) return NULL;
|
||||||
|
@ -370,7 +370,7 @@ DrawSheetLabelStruct* WinEDA_SchematicFrame::Import_PinSheet( DrawSheetStruct* S
|
||||||
|
|
||||||
/* Ici un G-Label a ete trouve: y a t-il un SheetLabel correspondant */
|
/* Ici un G-Label a ete trouve: y a t-il un SheetLabel correspondant */
|
||||||
SheetLabel = Sheet->m_Label;
|
SheetLabel = Sheet->m_Label;
|
||||||
for( ; SheetLabel != NULL; SheetLabel = (DrawSheetLabelStruct*) SheetLabel->Pnext )
|
for( ; SheetLabel != NULL; SheetLabel = (Hierarchical_PIN_Sheet_Struct*) SheetLabel->Pnext )
|
||||||
{
|
{
|
||||||
if( SheetLabel->m_Text.CmpNoCase( HLabel->m_Text ) == 0 )
|
if( SheetLabel->m_Text.CmpNoCase( HLabel->m_Text ) == 0 )
|
||||||
{
|
{
|
||||||
|
@ -393,7 +393,7 @@ DrawSheetLabelStruct* WinEDA_SchematicFrame::Import_PinSheet( DrawSheetStruct* S
|
||||||
|
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
/* Creation en memoire */
|
/* Creation en memoire */
|
||||||
NewSheetLabel = new DrawSheetLabelStruct( Sheet, wxPoint( 0, 0 ), HLabel->m_Text );
|
NewSheetLabel = new Hierarchical_PIN_Sheet_Struct( Sheet, wxPoint( 0, 0 ), HLabel->m_Text );
|
||||||
NewSheetLabel->m_Flags = IS_NEW;
|
NewSheetLabel->m_Flags = IS_NEW;
|
||||||
NewSheetLabel->m_Size = NetSheetTextSize;
|
NewSheetLabel->m_Size = NetSheetTextSize;
|
||||||
CurrentTypeLabel = NewSheetLabel->m_Shape = HLabel->m_Shape;
|
CurrentTypeLabel = NewSheetLabel->m_Shape = HLabel->m_Shape;
|
||||||
|
@ -409,18 +409,18 @@ DrawSheetLabelStruct* WinEDA_SchematicFrame::Import_PinSheet( DrawSheetStruct* S
|
||||||
|
|
||||||
/**************************************************************/
|
/**************************************************************/
|
||||||
void WinEDA_SchematicFrame::DeleteSheetLabel( wxDC* DC,
|
void WinEDA_SchematicFrame::DeleteSheetLabel( wxDC* DC,
|
||||||
DrawSheetLabelStruct* SheetLabelToDel )
|
Hierarchical_PIN_Sheet_Struct* SheetLabelToDel )
|
||||||
/**************************************************************/
|
/**************************************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Routine de suppression de 1 Structure type (DrawSheetLabelStruct.
|
* Routine de suppression de 1 Structure type (Hierarchical_PIN_Sheet_Struct.
|
||||||
* Cette Structure ne peut etre mise en pile "undelete" car il ne serait pas
|
* Cette Structure ne peut etre mise en pile "undelete" car il ne serait pas
|
||||||
* possible de la ratacher a la 'DrawSheetStruct' d'origine
|
* possible de la ratacher a la 'DrawSheetStruct' d'origine
|
||||||
* si DC != NULL, effacement a l'ecran du dessin
|
* si DC != NULL, effacement a l'ecran du dessin
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
EDA_BaseStruct* DrawStruct;
|
EDA_BaseStruct* DrawStruct;
|
||||||
DrawSheetLabelStruct* SheetLabel, * NextLabel;
|
Hierarchical_PIN_Sheet_Struct* SheetLabel, * NextLabel;
|
||||||
|
|
||||||
if( DC )
|
if( DC )
|
||||||
RedrawOneStruct( DrawPanel, DC, SheetLabelToDel, g_XorMode );
|
RedrawOneStruct( DrawPanel, DC, SheetLabelToDel, g_XorMode );
|
||||||
|
@ -441,12 +441,12 @@ void WinEDA_SchematicFrame::DeleteSheetLabel( wxDC* DC,
|
||||||
SheetLabel = ( (DrawSheetStruct*) DrawStruct )->m_Label;
|
SheetLabel = ( (DrawSheetStruct*) DrawStruct )->m_Label;
|
||||||
if( SheetLabel == SheetLabelToDel )
|
if( SheetLabel == SheetLabelToDel )
|
||||||
( (DrawSheetStruct*) DrawStruct )->m_Label =
|
( (DrawSheetStruct*) DrawStruct )->m_Label =
|
||||||
(DrawSheetLabelStruct*) SheetLabel->Pnext;
|
(Hierarchical_PIN_Sheet_Struct*) SheetLabel->Pnext;
|
||||||
|
|
||||||
else
|
else
|
||||||
while( SheetLabel ) /* Examen de la liste dependante et suppression chainage */
|
while( SheetLabel ) /* Examen de la liste dependante et suppression chainage */
|
||||||
{
|
{
|
||||||
NextLabel = (DrawSheetLabelStruct*) SheetLabel->Pnext;
|
NextLabel = (Hierarchical_PIN_Sheet_Struct*) SheetLabel->Pnext;
|
||||||
if( NextLabel == SheetLabelToDel )
|
if( NextLabel == SheetLabelToDel )
|
||||||
{
|
{
|
||||||
SheetLabel->Pnext = NextLabel->Pnext;
|
SheetLabel->Pnext = NextLabel->Pnext;
|
||||||
|
|
|
@ -56,7 +56,7 @@ enum KICAD_T {
|
||||||
DRAW_SEGMENT_STRUCT_TYPE,
|
DRAW_SEGMENT_STRUCT_TYPE,
|
||||||
DRAW_BUSENTRY_STRUCT_TYPE,
|
DRAW_BUSENTRY_STRUCT_TYPE,
|
||||||
DRAW_SHEET_STRUCT_TYPE,
|
DRAW_SHEET_STRUCT_TYPE,
|
||||||
DRAW_SHEETLABEL_STRUCT_TYPE,
|
DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE,
|
||||||
DRAW_MARKER_STRUCT_TYPE,
|
DRAW_MARKER_STRUCT_TYPE,
|
||||||
DRAW_NOCONNECT_STRUCT_TYPE,
|
DRAW_NOCONNECT_STRUCT_TYPE,
|
||||||
DRAW_PART_TEXT_STRUCT_TYPE,
|
DRAW_PART_TEXT_STRUCT_TYPE,
|
||||||
|
|
|
@ -21,13 +21,9 @@ protected:
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SCH_ITEM( EDA_BaseStruct* aParent, KICAD_T aType ) :
|
SCH_ITEM( EDA_BaseStruct* aParent, KICAD_T aType );
|
||||||
EDA_BaseStruct( aParent, aType ),
|
|
||||||
m_Layer( 0 )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
~SCH_ITEM(){}
|
~SCH_ITEM();
|
||||||
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
|
@ -62,6 +58,13 @@ public:
|
||||||
/* fonction de placement */
|
/* fonction de placement */
|
||||||
virtual void Place( WinEDA_DrawFrame* frame, wxDC* DC );
|
virtual void Place( WinEDA_DrawFrame* frame, wxDC* DC );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* writes the data structures for this object out to a FILE in "*.brd" format.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
virtual bool Save( FILE* aFile ) const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -110,6 +113,16 @@ public:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Save
|
||||||
|
* Do nothing, needed for SCH_ITEM compat.
|
||||||
|
* @param aFile The FILE to write to.
|
||||||
|
* @return bool - true if success writing else false.
|
||||||
|
*/
|
||||||
|
bool Save( FILE* aFile ) const
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
void Show( int nestLevel, std::ostream& os );
|
void Show( int nestLevel, std::ostream& os );
|
||||||
|
|
|
@ -195,14 +195,14 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void StartMoveSheet( DrawSheetStruct* sheet, wxDC* DC );
|
void StartMoveSheet( DrawSheetStruct* sheet, wxDC* DC );
|
||||||
DrawSheetLabelStruct* Create_PinSheet( DrawSheetStruct* Sheet, wxDC* DC );
|
Hierarchical_PIN_Sheet_Struct* Create_PinSheet( DrawSheetStruct* Sheet, wxDC* DC );
|
||||||
void Edit_PinSheet( DrawSheetLabelStruct* SheetLabel, wxDC* DC );
|
void Edit_PinSheet( Hierarchical_PIN_Sheet_Struct* SheetLabel, wxDC* DC );
|
||||||
void StartMove_PinSheet( DrawSheetLabelStruct* SheetLabel, wxDC* DC );
|
void StartMove_PinSheet( Hierarchical_PIN_Sheet_Struct* SheetLabel, wxDC* DC );
|
||||||
void Place_PinSheet( DrawSheetLabelStruct* SheetLabel, wxDC* DC );
|
void Place_PinSheet( Hierarchical_PIN_Sheet_Struct* SheetLabel, wxDC* DC );
|
||||||
DrawSheetLabelStruct* Import_PinSheet( DrawSheetStruct* Sheet, wxDC* DC );
|
Hierarchical_PIN_Sheet_Struct* Import_PinSheet( DrawSheetStruct* Sheet, wxDC* DC );
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void DeleteSheetLabel( wxDC* DC, DrawSheetLabelStruct* SheetLabelToDel );
|
void DeleteSheetLabel( wxDC* DC, Hierarchical_PIN_Sheet_Struct* SheetLabelToDel );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ class SCH_TEXT;
|
||||||
class EDA_DrawLineStruct;
|
class EDA_DrawLineStruct;
|
||||||
class DrawSheetStruct;
|
class DrawSheetStruct;
|
||||||
class DrawSheetPath;
|
class DrawSheetPath;
|
||||||
class DrawSheetLabelStruct;
|
class Hierarchical_PIN_Sheet_Struct;
|
||||||
class SCH_COMPONENT;
|
class SCH_COMPONENT;
|
||||||
class LibDrawField;
|
class LibDrawField;
|
||||||
class PartTextStruct;
|
class PartTextStruct;
|
||||||
|
|
|
@ -13,6 +13,17 @@
|
||||||
wxPoint BOARD_ITEM::ZeroOffset(0,0);
|
wxPoint BOARD_ITEM::ZeroOffset(0,0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// define SCH_ITEM::Place() (defined and used in eeschema but not for pcbnew)
|
||||||
|
// this is an ugly workaround to a linking problem in debug mode
|
||||||
|
// which needs to define SCH_ITEM::Place() when not really used.
|
||||||
|
#include "sch_item_struct.h"
|
||||||
|
void SCH_ITEM::Place( WinEDA_DrawFrame* frame, wxDC* DC )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************/
|
/*****************/
|
||||||
/* Class BOARD: */
|
/* Class BOARD: */
|
||||||
/*****************/
|
/*****************/
|
||||||
|
|
Loading…
Reference in New Issue