Component library object encapsulation work.
This commit is contained in:
parent
a6a34f3509
commit
3fed7b9dd9
|
@ -4,6 +4,16 @@ KiCad ChangeLog 2010
|
|||
Please add newer entries at the top, list the date and your name with
|
||||
email address.
|
||||
|
||||
2010-dec-07 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
|
||||
================================================================================
|
||||
++EESchema
|
||||
* Finish encapsulating LIB_FIELD object.
|
||||
* Encapsulated all members currently in use in LIB_PIN object.
|
||||
++Common
|
||||
* Add SetModified() helper to EDA_BaseStruct object that checks for a parent
|
||||
object and sets it's modified status as well.
|
||||
|
||||
|
||||
2010-dec-02 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
|
||||
================================================================================
|
||||
++EESchema
|
||||
|
|
|
@ -20,9 +20,7 @@ enum textbox {
|
|||
};
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
EDA_BaseStruct::EDA_BaseStruct( EDA_BaseStruct* parent, KICAD_T idType )
|
||||
/******************************************************************************/
|
||||
{
|
||||
InitVars();
|
||||
m_StructType = idType;
|
||||
|
@ -30,9 +28,7 @@ EDA_BaseStruct::EDA_BaseStruct( EDA_BaseStruct* parent, KICAD_T idType )
|
|||
}
|
||||
|
||||
|
||||
/********************************************/
|
||||
EDA_BaseStruct::EDA_BaseStruct( KICAD_T idType )
|
||||
/********************************************/
|
||||
{
|
||||
InitVars();
|
||||
m_StructType = idType;
|
||||
|
@ -51,9 +47,7 @@ EDA_BaseStruct::EDA_BaseStruct( const EDA_BaseStruct& base )
|
|||
}
|
||||
|
||||
|
||||
/********************************************/
|
||||
void EDA_BaseStruct::InitVars()
|
||||
/********************************************/
|
||||
{
|
||||
m_StructType = TYPE_NOT_INIT;
|
||||
Pnext = NULL; // Linked list: Link (next struct)
|
||||
|
@ -69,6 +63,16 @@ void EDA_BaseStruct::InitVars()
|
|||
}
|
||||
|
||||
|
||||
void EDA_BaseStruct::SetModified()
|
||||
{
|
||||
m_Flags |= IS_CHANGED;
|
||||
|
||||
// If this a child object, then the parent modification state also needs to be set.
|
||||
if( m_Parent )
|
||||
m_Parent->SetModified();
|
||||
}
|
||||
|
||||
|
||||
// see base_struct.h
|
||||
SEARCH_RESULT EDA_BaseStruct::IterateForward( EDA_BaseStruct* listStart,
|
||||
INSPECTOR* inspector,
|
||||
|
|
|
@ -898,7 +898,7 @@ static LIB_PIN* GetNextPinPosition( SCH_COMPONENT* aDrawLibItem,
|
|||
|
||||
/* Calculate the pin position (according to the component orientation)
|
||||
*/
|
||||
aPosition = DefaultTransform.TransformCoordinate( Pin->m_Pos ) + CmpPosition;
|
||||
aPosition = DefaultTransform.TransformCoordinate( Pin->GetPosition() ) + CmpPosition;
|
||||
return Pin;
|
||||
}
|
||||
|
||||
|
|
|
@ -756,7 +756,7 @@ static bool IsTerminalPoint( SCH_SCREEN* screen, const wxPoint& pos, int layer )
|
|||
{
|
||||
// Calculate the exact position of the connection point of the pin,
|
||||
// depending on orientation of the component.
|
||||
itempos = LibItem->GetScreenCoord( pin->m_Pos );
|
||||
itempos = LibItem->GetScreenCoord( pin->GetPosition() );
|
||||
itempos.x += LibItem->m_Pos.x;
|
||||
itempos.y += LibItem->m_Pos.y;
|
||||
if( ( itempos.x == pos.x ) && ( itempos.y == pos.y ) )
|
||||
|
|
|
@ -417,11 +417,11 @@ void LIB_COMPONENT::RemoveDrawItem( LIB_DRAW_ITEM* aItem, WinEDA_DrawPanel* aPan
|
|||
{
|
||||
LIB_FIELD* field = (LIB_FIELD*) aItem;
|
||||
|
||||
if( field->m_FieldId < MANDATORY_FIELDS )
|
||||
if( field->GetId() < MANDATORY_FIELDS )
|
||||
{
|
||||
wxLogWarning( _( "An attempt was made to remove the %s field \
|
||||
from component %s in library %s." ),
|
||||
GetChars( field->m_Name ), GetChars( GetName() ),
|
||||
GetChars( field->GetName() ), GetChars( GetName() ),
|
||||
GetChars( GetLibraryName() ) );
|
||||
return;
|
||||
}
|
||||
|
@ -609,7 +609,7 @@ bool LIB_COMPONENT::Save( FILE* aFile )
|
|||
// fieldnames.
|
||||
if( !fields[i].m_Text.IsEmpty() )
|
||||
{
|
||||
fields[i].m_FieldId = fieldId++;
|
||||
fields[i].SetId( fieldId++ );
|
||||
if( !fields[i].Save( aFile ) )
|
||||
return false;
|
||||
}
|
||||
|
@ -916,9 +916,9 @@ bool LIB_COMPONENT::LoadField( char* aLine, wxString& aErrorMsg )
|
|||
return false;
|
||||
}
|
||||
|
||||
if( field->m_FieldId < MANDATORY_FIELDS )
|
||||
if( field->GetId() < MANDATORY_FIELDS )
|
||||
{
|
||||
LIB_FIELD* fixedField = GetField( field->m_FieldId );
|
||||
LIB_FIELD* fixedField = GetField( field->GetId() );
|
||||
|
||||
// this will fire only if somebody broke a constructor or editor.
|
||||
// MANDATORY_FIELDS are always present in ram resident components, no
|
||||
|
@ -927,7 +927,7 @@ bool LIB_COMPONENT::LoadField( char* aLine, wxString& aErrorMsg )
|
|||
|
||||
*fixedField = *field;
|
||||
|
||||
if( field->m_FieldId == VALUE )
|
||||
if( field->GetId() == VALUE )
|
||||
m_name = field->m_Text;
|
||||
|
||||
SAFE_DELETE( field );
|
||||
|
@ -1055,7 +1055,7 @@ void LIB_COMPONENT::GetFields( LIB_FIELD_LIST& aList )
|
|||
continue;
|
||||
|
||||
field = ( LIB_FIELD* ) &item;
|
||||
if( (unsigned) field->m_FieldId < MANDATORY_FIELDS )
|
||||
if( (unsigned) field->GetId() < MANDATORY_FIELDS )
|
||||
continue; // was added above
|
||||
|
||||
aList.push_back( *field );
|
||||
|
@ -1072,7 +1072,7 @@ LIB_FIELD* LIB_COMPONENT::GetField( int aId )
|
|||
|
||||
LIB_FIELD* field = ( LIB_FIELD* ) &item;
|
||||
|
||||
if( field->m_FieldId == aId )
|
||||
if( field->GetId() == aId )
|
||||
return field;
|
||||
}
|
||||
|
||||
|
@ -1089,7 +1089,7 @@ LIB_FIELD* LIB_COMPONENT::FindField( const wxString& aFieldName )
|
|||
|
||||
LIB_FIELD* field = ( LIB_FIELD* ) &item;
|
||||
|
||||
if( field->m_Name == aFieldName )
|
||||
if( field->GetName() == aFieldName )
|
||||
return field;
|
||||
}
|
||||
|
||||
|
@ -1262,7 +1262,7 @@ void LIB_COMPONENT::DeleteSelectedItems()
|
|||
{
|
||||
#if 0 // Set to 1 to allows fields deletion on block delete or other global command
|
||||
LIB_FIELD& field = ( LIB_FIELD& ) *item;
|
||||
if( (field.m_FieldId == REFERENCE) || (field.m_FieldId == VALUE) ||
|
||||
if( (field.GetId() == REFERENCE) || (field.m_FieldId == VALUE) ||
|
||||
(field.m_Attributs & TEXT_NO_VISIBLE) )
|
||||
#endif
|
||||
item->m_Selected = 0;
|
||||
|
|
|
@ -130,7 +130,8 @@ void WinEDA_SchematicFrame::SendMessageToPCBNEW( EDA_BaseStruct* objectToSync,
|
|||
break;
|
||||
|
||||
Pin = (LIB_PIN*) objectToSync;
|
||||
if( Pin->m_PinNum )
|
||||
|
||||
if( Pin->GetNumber() )
|
||||
{
|
||||
wxString pinnum;
|
||||
Pin->ReturnPinStringNum( pinnum );
|
||||
|
|
|
@ -64,10 +64,11 @@ LIB_PIN* WinEDA_SchematicFrame::LocatePinEnd( SCH_ITEM* DrawList, const wxPoint&
|
|||
wxPoint pinpos;
|
||||
|
||||
Pin = LocateAnyPin( DrawList, pos, &DrawLibItem );
|
||||
|
||||
if( !Pin )
|
||||
return NULL;
|
||||
|
||||
pinpos = Pin->m_Pos;
|
||||
pinpos = Pin->GetPosition();
|
||||
|
||||
if( DrawLibItem == NULL )
|
||||
NEGATE( pinpos.y ); // In libraries Y axis is bottom to top
|
||||
|
@ -78,5 +79,6 @@ LIB_PIN* WinEDA_SchematicFrame::LocatePinEnd( SCH_ITEM* DrawList, const wxPoint&
|
|||
|
||||
if( pos == pinpos )
|
||||
return Pin;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -249,7 +249,7 @@ An alias %s already exists!\nCannot update this component" ),
|
|||
// back into the component
|
||||
for( unsigned i = MANDATORY_FIELDS; i < m_FieldsBuf.size(); )
|
||||
{
|
||||
if( m_FieldsBuf[i].m_Name.IsEmpty() || m_FieldsBuf[i].m_Text.IsEmpty() )
|
||||
if( m_FieldsBuf[i].GetName().IsEmpty() || m_FieldsBuf[i].m_Text.IsEmpty() )
|
||||
{
|
||||
m_FieldsBuf.erase( m_FieldsBuf.begin() + i );
|
||||
continue;
|
||||
|
@ -262,7 +262,7 @@ An alias %s already exists!\nCannot update this component" ),
|
|||
for( unsigned i=0; i<m_FieldsBuf.size(); ++i )
|
||||
{
|
||||
printf( "save[%d].name:'%s' value:'%s'\n", i,
|
||||
CONV_TO_UTF8( m_FieldsBuf[i].m_Name ),
|
||||
CONV_TO_UTF8( m_FieldsBuf[i].GetName() ),
|
||||
CONV_TO_UTF8( m_FieldsBuf[i].m_Text ) );
|
||||
}
|
||||
#endif
|
||||
|
@ -296,7 +296,7 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::addFieldButtonHandler( wxCommandEvent&
|
|||
LIB_FIELD blank( fieldNdx );
|
||||
|
||||
m_FieldsBuf.push_back( blank );
|
||||
m_FieldsBuf[fieldNdx].m_Name = TEMPLATE_FIELDNAME::GetDefaultFieldName(fieldNdx);
|
||||
m_FieldsBuf[fieldNdx].SetName( TEMPLATE_FIELDNAME::GetDefaultFieldName( fieldNdx ) );
|
||||
|
||||
setRowItem( fieldNdx, m_FieldsBuf[fieldNdx] );
|
||||
|
||||
|
@ -423,7 +423,7 @@ static LIB_FIELD* findfield( const LIB_FIELD_LIST& aList, const wxString& aField
|
|||
|
||||
for( unsigned i=0; i<aList.size(); ++i )
|
||||
{
|
||||
if( aFieldName == aList[i].m_Name )
|
||||
if( aFieldName == aList[i].GetName() )
|
||||
{
|
||||
field = &aList[i]; // best to avoid casting here.
|
||||
break;
|
||||
|
@ -437,7 +437,7 @@ LIB_FIELD* DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::findField( const wxString& aField
|
|||
{
|
||||
for( unsigned i=0; i<m_FieldsBuf.size(); ++i )
|
||||
{
|
||||
if( aFieldName == m_FieldsBuf[i].m_Name )
|
||||
if( aFieldName == m_FieldsBuf[i].GetName() )
|
||||
return &m_FieldsBuf[i];
|
||||
}
|
||||
return NULL;
|
||||
|
@ -455,7 +455,7 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::InitBuffers()
|
|||
#if defined(DEBUG)
|
||||
for( unsigned i=0; i<cmpFields.size(); ++i )
|
||||
{
|
||||
printf( "cmpFields[%d].name:%s\n", i, CONV_TO_UTF8( cmpFields[i].m_Name ) );
|
||||
printf( "cmpFields[%d].name:%s\n", i, CONV_TO_UTF8( cmpFields[i].GetName() ) );
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -483,7 +483,7 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::InitBuffers()
|
|||
// fixed fields:
|
||||
for( int i=0; i<MANDATORY_FIELDS; ++i )
|
||||
{
|
||||
D( printf( "add fixed:%s\n", CONV_TO_UTF8( cmpFields[i].m_Name ) ); )
|
||||
D( printf( "add fixed:%s\n", CONV_TO_UTF8( cmpFields[i].GetName() ) ); )
|
||||
m_FieldsBuf.push_back( cmpFields[i] );
|
||||
}
|
||||
|
||||
|
@ -510,7 +510,7 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::InitBuffers()
|
|||
{
|
||||
D( printf( "add template:%s\n", CONV_TO_UTF8( it->m_Name ) ); )
|
||||
|
||||
fld.m_Name = it->m_Name;
|
||||
fld.SetName( it->m_Name );
|
||||
fld.m_Text = it->m_Value; // empty? ok too.
|
||||
|
||||
if( !it->m_Visible )
|
||||
|
@ -520,7 +520,7 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::InitBuffers()
|
|||
}
|
||||
else
|
||||
{
|
||||
D( printf( "match template:%s\n", CONV_TO_UTF8( libField->m_Name )); )
|
||||
D( printf( "match template:%s\n", CONV_TO_UTF8( libField->GetName() ) ); )
|
||||
fld = *libField; // copy values from component, m_Name too
|
||||
}
|
||||
|
||||
|
@ -532,11 +532,11 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::InitBuffers()
|
|||
for( unsigned i=MANDATORY_FIELDS; i<cmpFields.size(); ++i )
|
||||
{
|
||||
LIB_FIELD* cmp = &cmpFields[i];
|
||||
LIB_FIELD* buf = findField( cmp->m_Name );
|
||||
LIB_FIELD* buf = findField( cmp->GetName() );
|
||||
|
||||
if( !buf )
|
||||
{
|
||||
D( printf( "add cmp:%s\n", CONV_TO_UTF8( cmp->m_Name )); )
|
||||
D( printf( "add cmp:%s\n", CONV_TO_UTF8( cmp->GetName() ) ); )
|
||||
m_FieldsBuf.push_back( *cmp );
|
||||
}
|
||||
}
|
||||
|
@ -578,7 +578,7 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::setRowItem( int aFieldNdx, const LIB_FI
|
|||
fieldListCtrl->SetItem( ndx, COLUMN_TEXT, wxEmptyString );
|
||||
}
|
||||
|
||||
fieldListCtrl->SetItem( aFieldNdx, COLUMN_FIELD_NAME, aField.m_Name );
|
||||
fieldListCtrl->SetItem( aFieldNdx, COLUMN_FIELD_NAME, aField.GetName() );
|
||||
fieldListCtrl->SetItem( aFieldNdx, COLUMN_TEXT, aField.m_Text );
|
||||
|
||||
// recompute the column widths here, after setting texts
|
||||
|
@ -629,17 +629,19 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::copySelectedFieldToPanel()
|
|||
|
||||
// Field names have become more important than field ids, so we cannot
|
||||
// mangle the names in the buffer but we can do so in the panel.
|
||||
if( field.m_FieldId == VALUE )
|
||||
{ // This field is the lib name and the default value when loading this component in schematic
|
||||
// The value is now not editable here (in this dialog) because changing it is equivalent to create
|
||||
// a new component or alias. This is handles in libedir, not in this dialog.
|
||||
fieldNameTextCtrl->SetValue( field.m_Name + wxT( " / " ) + _( "Chip Name" ) );
|
||||
if( field.GetId() == VALUE )
|
||||
{
|
||||
// This field is the lib name and the default value when loading this component in
|
||||
// schematic. The value is now not editable here (in this dialog) because changing
|
||||
// it is equivalent to create a new component or alias. This is handles in libedir,
|
||||
// not in this dialog.
|
||||
fieldNameTextCtrl->SetValue( field.GetName() + wxT( " / " ) + _( "Chip Name" ) );
|
||||
fieldValueTextCtrl->Enable( false );
|
||||
}
|
||||
else
|
||||
{
|
||||
fieldValueTextCtrl->Enable( true );
|
||||
fieldNameTextCtrl->SetValue( field.m_Name );
|
||||
fieldNameTextCtrl->SetValue( field.GetName() );
|
||||
}
|
||||
|
||||
// if fieldNdx == REFERENCE, VALUE, FOOTPRINT, or DATASHEET, then disable field name editing
|
||||
|
@ -731,8 +733,8 @@ bool DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::copyPanelToSelectedField()
|
|||
|
||||
// FieldNameTextCtrl has a tricked value in it for VALUE index, do not copy it back.
|
||||
// It has the "Chip Name" appended.
|
||||
if( field.m_FieldId >= MANDATORY_FIELDS )
|
||||
field.m_Name = fieldNameTextCtrl->GetValue();
|
||||
if( field.GetId() >= MANDATORY_FIELDS )
|
||||
field.SetName( fieldNameTextCtrl->GetValue() );
|
||||
|
||||
setRowItem( fieldNdx, field ); // update fieldListCtrl
|
||||
|
||||
|
|
|
@ -100,6 +100,7 @@ void WinEDA_SchematicFrame::EditCmpFieldText( SCH_FIELD* Field, wxDC* DC )
|
|||
SCH_COMPONENT* Cmp = (SCH_COMPONENT*) Field->GetParent();
|
||||
|
||||
fieldNdx = Field->m_FieldId;
|
||||
|
||||
if( fieldNdx == VALUE )
|
||||
{
|
||||
Entry = CMP_LIBRARY::FindLibraryComponent( Cmp->m_ChipName );
|
||||
|
|
|
@ -147,10 +147,12 @@ SCH_ITEM* WinEDA_SchematicFrame::FindComponentAndItem( const wxString& component
|
|||
pos = pSch->m_Pos; /* temporary: will be changed if
|
||||
* the pin is found */
|
||||
pin = pSch->GetPin( text_to_find );
|
||||
|
||||
if( pin == NULL )
|
||||
break;
|
||||
|
||||
NotFound = FALSE;
|
||||
pos += pin->m_Pos;
|
||||
pos += pin->GetPosition();
|
||||
break;
|
||||
|
||||
case 2: // find reference
|
||||
|
|
|
@ -301,6 +301,8 @@ public:
|
|||
*/
|
||||
wxPoint GetPosition() const { return DoGetPosition(); }
|
||||
|
||||
void SetPosition( const wxPoint& aPosition ) { DoMove( aPosition ); }
|
||||
|
||||
/**
|
||||
* Mirror the draw object along the horizontal (X) axis about a point.
|
||||
*
|
||||
|
|
|
@ -47,8 +47,7 @@ LIB_FIELD::LIB_FIELD(LIB_COMPONENT * aParent, int idfield ) :
|
|||
}
|
||||
|
||||
|
||||
LIB_FIELD::LIB_FIELD( int idfield ) :
|
||||
LIB_DRAW_ITEM( COMPONENT_FIELD_DRAW_TYPE, NULL )
|
||||
LIB_FIELD::LIB_FIELD( int idfield ) : LIB_DRAW_ITEM( COMPONENT_FIELD_DRAW_TYPE, NULL )
|
||||
{
|
||||
Init( idfield );
|
||||
}
|
||||
|
@ -56,14 +55,14 @@ LIB_FIELD::LIB_FIELD( int idfield ) :
|
|||
|
||||
LIB_FIELD::LIB_FIELD( const LIB_FIELD& field ) : LIB_DRAW_ITEM( field )
|
||||
{
|
||||
m_FieldId = field.m_FieldId;
|
||||
m_id = field.m_id;
|
||||
m_Pos = field.m_Pos;
|
||||
m_Size = field.m_Size;
|
||||
m_Thickness = field.m_Thickness;
|
||||
m_Orient = field.m_Orient;
|
||||
m_Attributs = field.m_Attributs;
|
||||
m_Text = field.m_Text;
|
||||
m_Name = field.m_Name;
|
||||
m_name = field.m_name;
|
||||
m_HJustify = field.m_HJustify;
|
||||
m_VJustify = field.m_VJustify;
|
||||
m_Italic = field.m_Italic;
|
||||
|
@ -78,7 +77,7 @@ LIB_FIELD::~LIB_FIELD()
|
|||
|
||||
void LIB_FIELD::Init( int id )
|
||||
{
|
||||
m_FieldId = id;
|
||||
m_id = id;
|
||||
m_Size.x = m_Size.y = DEFAULT_SIZE_TEXT;
|
||||
m_typeName = _( "Field" );
|
||||
m_Orient = TEXT_ORIENT_HORIZ;
|
||||
|
@ -88,7 +87,7 @@ void LIB_FIELD::Init( int id )
|
|||
// fields in RAM must always have names, because we are trying to get
|
||||
// less dependent on field ids and more dependent on names.
|
||||
// Plus assumptions are made in the field editors.
|
||||
m_Name = TEMPLATE_FIELDNAME::GetDefaultFieldName( id );
|
||||
m_name = TEMPLATE_FIELDNAME::GetDefaultFieldName( id );
|
||||
}
|
||||
|
||||
|
||||
|
@ -98,12 +97,14 @@ bool LIB_FIELD::Save( FILE* ExportFile )
|
|||
wxString text = m_Text;
|
||||
|
||||
hjustify = 'C';
|
||||
|
||||
if( m_HJustify == GR_TEXT_HJUSTIFY_LEFT )
|
||||
hjustify = 'L';
|
||||
else if( m_HJustify == GR_TEXT_HJUSTIFY_RIGHT )
|
||||
hjustify = 'R';
|
||||
|
||||
vjustify = 'C';
|
||||
|
||||
if( m_VJustify == GR_TEXT_VJUSTIFY_BOTTOM )
|
||||
vjustify = 'B';
|
||||
else if( m_VJustify == GR_TEXT_VJUSTIFY_TOP )
|
||||
|
@ -113,7 +114,7 @@ bool LIB_FIELD::Save( FILE* ExportFile )
|
|||
text = wxT( "~" );
|
||||
|
||||
if( fprintf( ExportFile, "F%d \"%s\" %d %d %d %c %c %c %c%c%c",
|
||||
m_FieldId, CONV_TO_UTF8( text ), m_Pos.x, m_Pos.y, m_Size.x,
|
||||
m_id, CONV_TO_UTF8( text ), m_Pos.x, m_Pos.y, m_Size.x,
|
||||
m_Orient == 0 ? 'H' : 'V',
|
||||
(m_Attributs & TEXT_NO_VISIBLE ) ? 'I' : 'V',
|
||||
hjustify, vjustify,
|
||||
|
@ -126,11 +127,11 @@ bool LIB_FIELD::Save( FILE* ExportFile )
|
|||
* Just because default name depends on the language and can change from
|
||||
* a country to an other
|
||||
*/
|
||||
wxString defName = TEMPLATE_FIELDNAME::GetDefaultFieldName( m_FieldId );
|
||||
wxString defName = TEMPLATE_FIELDNAME::GetDefaultFieldName( m_id );
|
||||
|
||||
if( m_FieldId >= FIELD1 && !m_Name.IsEmpty()
|
||||
&& m_Name != defName
|
||||
&& fprintf( ExportFile, " \"%s\"", CONV_TO_UTF8( m_Name ) ) < 0 )
|
||||
if( m_id >= FIELD1 && !m_name.IsEmpty()
|
||||
&& m_name != defName
|
||||
&& fprintf( ExportFile, " \"%s\"", CONV_TO_UTF8( m_name ) ) < 0 )
|
||||
return false;
|
||||
|
||||
if( fprintf( ExportFile, "\n" ) < 0 )
|
||||
|
@ -150,7 +151,7 @@ bool LIB_FIELD::Load( char* line, wxString& errorMsg )
|
|||
char fieldUserName[1024];
|
||||
char* text;
|
||||
|
||||
if( sscanf( line + 1, "%d", &m_FieldId ) != 1 || m_FieldId < 0 )
|
||||
if( sscanf( line + 1, "%d", &m_id ) != 1 || m_id < 0 )
|
||||
{
|
||||
errorMsg = wxT( "invalid field header" );
|
||||
return false;
|
||||
|
@ -191,7 +192,7 @@ bool LIB_FIELD::Load( char* line, wxString& errorMsg )
|
|||
if( cnt < 5 )
|
||||
{
|
||||
errorMsg.Printf( wxT( "field %d does not have the correct number of parameters" ),
|
||||
m_FieldId );
|
||||
m_id );
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -260,17 +261,17 @@ bool LIB_FIELD::Load( char* line, wxString& errorMsg )
|
|||
}
|
||||
|
||||
// fields in RAM must always have names.
|
||||
if( m_FieldId < MANDATORY_FIELDS )
|
||||
if( m_id < MANDATORY_FIELDS )
|
||||
{
|
||||
// Fields in RAM must always have names, because we are trying to get
|
||||
// less dependent on field ids and more dependent on names.
|
||||
// Plus assumptions are made in the field editors.
|
||||
m_Name = TEMPLATE_FIELDNAME::GetDefaultFieldName( m_FieldId );
|
||||
m_name = TEMPLATE_FIELDNAME::GetDefaultFieldName( m_id );
|
||||
}
|
||||
else
|
||||
{
|
||||
ReadDelimitedText( fieldUserName, line, sizeof( fieldUserName ) );
|
||||
m_Name = CONV_FROM_UTF8( fieldUserName );
|
||||
m_name = CONV_FROM_UTF8( fieldUserName );
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -369,13 +370,15 @@ bool LIB_FIELD::HitTest( const wxPoint& refPos )
|
|||
bool LIB_FIELD::HitTest( wxPoint aPosRef, int aThreshold, const TRANSFORM& aTransform )
|
||||
{
|
||||
int extraCharCount = 0;
|
||||
|
||||
// Reference designator text has one or 2 additional character (displays
|
||||
// U? or U?A)
|
||||
if( m_FieldId == REFERENCE )
|
||||
if( m_id == REFERENCE )
|
||||
{
|
||||
extraCharCount++;
|
||||
m_Text.Append('?');
|
||||
LIB_COMPONENT* parent = (LIB_COMPONENT*)m_Parent;
|
||||
|
||||
if ( parent && ( parent->GetPartCount() > 1 ) )
|
||||
{
|
||||
m_Text.Append('A');
|
||||
|
@ -386,6 +389,7 @@ bool LIB_FIELD::HitTest( wxPoint aPosRef, int aThreshold, const TRANSFORM& aTran
|
|||
wxPoint physicalpos = aTransform.TransformCoordinate( m_Pos );
|
||||
wxPoint tmp = m_Pos;
|
||||
m_Pos = physicalpos;
|
||||
|
||||
/* The text orientation may need to be flipped if the
|
||||
* transformation matrix causes xy axes to be flipped.
|
||||
* this simple algo works only for schematic matrix (rot 90 or/and mirror)
|
||||
|
@ -405,9 +409,10 @@ bool LIB_FIELD::HitTest( wxPoint aPosRef, int aThreshold, const TRANSFORM& aTran
|
|||
return hit;
|
||||
}
|
||||
|
||||
|
||||
LIB_DRAW_ITEM* LIB_FIELD::DoGenCopy()
|
||||
{
|
||||
LIB_FIELD* newfield = new LIB_FIELD( m_FieldId );
|
||||
LIB_FIELD* newfield = new LIB_FIELD( m_id );
|
||||
|
||||
Copy( newfield );
|
||||
|
||||
|
@ -429,7 +434,7 @@ void LIB_FIELD::Copy( LIB_FIELD* Target ) const
|
|||
Target->m_Orient = m_Orient;
|
||||
Target->m_Attributs = m_Attributs;
|
||||
Target->m_Text = m_Text;
|
||||
Target->m_Name = m_Name;
|
||||
Target->m_name = m_name;
|
||||
Target->m_HJustify = m_HJustify;
|
||||
Target->m_VJustify = m_VJustify;
|
||||
Target->m_Italic = m_Italic;
|
||||
|
@ -443,8 +448,8 @@ int LIB_FIELD::DoCompare( const LIB_DRAW_ITEM& other ) const
|
|||
|
||||
const LIB_FIELD* tmp = ( LIB_FIELD* ) &other;
|
||||
|
||||
if( m_FieldId != tmp->m_FieldId )
|
||||
return m_FieldId - tmp->m_FieldId;
|
||||
if( m_id != tmp->m_id )
|
||||
return m_id - tmp->m_id;
|
||||
|
||||
int result = m_Text.CmpNoCase( tmp->m_Text );
|
||||
|
||||
|
@ -511,7 +516,7 @@ void LIB_FIELD::DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill,
|
|||
*/
|
||||
wxString LIB_FIELD::GetFullText( int unit )
|
||||
{
|
||||
if( m_FieldId != REFERENCE )
|
||||
if( m_id != REFERENCE )
|
||||
return m_Text;
|
||||
|
||||
wxString text = m_Text;
|
||||
|
@ -547,7 +552,7 @@ int LIB_FIELD::GetDefaultColor()
|
|||
{
|
||||
int color;
|
||||
|
||||
switch( m_FieldId )
|
||||
switch( m_id )
|
||||
{
|
||||
case REFERENCE:
|
||||
color = ReturnLayerColor( LAYER_REFERENCEPART );
|
||||
|
@ -579,11 +584,11 @@ void LIB_FIELD::Rotate()
|
|||
}
|
||||
|
||||
|
||||
wxString LIB_FIELD::GetName()
|
||||
wxString LIB_FIELD::GetName() const
|
||||
{
|
||||
wxString name;
|
||||
|
||||
switch( m_FieldId )
|
||||
switch( m_id )
|
||||
{
|
||||
case REFERENCE:
|
||||
name = _( "Reference" );
|
||||
|
@ -602,16 +607,30 @@ wxString LIB_FIELD::GetName()
|
|||
break;
|
||||
|
||||
default:
|
||||
if( m_Name.IsEmpty() )
|
||||
name.Printf( _( "Field%d" ), m_FieldId );
|
||||
if( m_name.IsEmpty() )
|
||||
name.Printf( _( "Field%d" ), m_id );
|
||||
else
|
||||
name = m_Name;
|
||||
name = m_name;
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
void LIB_FIELD::SetName( const wxString& aName )
|
||||
{
|
||||
// Mandatory field names are fixed.
|
||||
if( m_id > MANDATORY_FIELDS )
|
||||
return;
|
||||
|
||||
if( m_name != aName )
|
||||
{
|
||||
m_name = aName;
|
||||
SetModified();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LIB_FIELD::SetText( const wxString& aText )
|
||||
{
|
||||
if( aText == m_Text )
|
||||
|
@ -619,7 +638,7 @@ void LIB_FIELD::SetText( const wxString& aText )
|
|||
|
||||
wxString oldName = m_Text;
|
||||
|
||||
if( m_FieldId == VALUE && m_Parent != NULL )
|
||||
if( m_id == VALUE && m_Parent != NULL )
|
||||
{
|
||||
LIB_COMPONENT* parent = GetParent();
|
||||
|
||||
|
@ -729,4 +748,3 @@ void LIB_FIELD::DisplayInfo( WinEDA_DrawFrame* aFrame )
|
|||
// Display field text:
|
||||
aFrame->AppendMsgPanel( _( "Value" ), m_Text, BROWN );
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
#ifndef CLASS_LIBENTRY_FIELDS_H
|
||||
#define CLASS_LIBENTRY_FIELDS_H
|
||||
|
||||
//#include "general.h"
|
||||
#include "lib_draw_item.h"
|
||||
|
||||
|
||||
|
@ -18,6 +17,9 @@
|
|||
*/
|
||||
class LIB_FIELD : public LIB_DRAW_ITEM, public EDA_TextStruct
|
||||
{
|
||||
int m_id; ///< @see enum NumFieldType
|
||||
wxString m_name; ///< Name (not the field text value itself, that is .m_Text)
|
||||
|
||||
wxString m_savedText; ///< Temporary storage for the string when edition.
|
||||
bool m_rotate; ///< Flag to indicate a rotation occurred while editing.
|
||||
bool m_updateText; ///< Flag to indicate text change occurred while editing.
|
||||
|
@ -35,11 +37,6 @@ class LIB_FIELD : public LIB_DRAW_ITEM, public EDA_TextStruct
|
|||
*/
|
||||
void calcEdit( const wxPoint& aPosition );
|
||||
|
||||
public:
|
||||
int m_FieldId; ///< @see enum NumFieldType
|
||||
|
||||
wxString m_Name; ///< Name (not the field text value itself, that is .m_Text)
|
||||
|
||||
public:
|
||||
|
||||
LIB_FIELD( int idfield = 2 );
|
||||
|
@ -62,11 +59,28 @@ public:
|
|||
*
|
||||
* The first four field IDs are reserved and therefore always return their respective
|
||||
* names. The user definable fields will return FieldN where N is the ID of the field
|
||||
* when the m_Name member is empty.
|
||||
* when the m_name member is empty.
|
||||
*
|
||||
* @return Name of the field.
|
||||
*/
|
||||
wxString GetName();
|
||||
wxString GetName() const;
|
||||
|
||||
/**
|
||||
* Function SetName
|
||||
*
|
||||
* Sets a user definable field name to \a aName.
|
||||
*
|
||||
* Reserved fields such as value and reference are not renamed. If the field name is
|
||||
* changed, the field modified flag is set. If the field is the child of a component,
|
||||
* the parent component's modified flag is also set.
|
||||
*
|
||||
* @param aName - User defined field name.
|
||||
*/
|
||||
void SetName( const wxString& aName );
|
||||
|
||||
int GetId() { return m_id; }
|
||||
|
||||
void SetId( int aId ) { m_id = aId; }
|
||||
|
||||
/**
|
||||
* Function GetPenSize virtual pure
|
||||
|
@ -133,9 +147,9 @@ public:
|
|||
|
||||
void operator=( const LIB_FIELD& field )
|
||||
{
|
||||
m_FieldId = field.m_FieldId;
|
||||
m_id = field.m_id;
|
||||
m_Text = field.m_Text;
|
||||
m_Name = field.m_Name;
|
||||
m_name = field.m_name;
|
||||
m_Pos = field.m_Pos;
|
||||
m_Size = field.m_Size;
|
||||
m_Thickness = field.m_Thickness;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -80,6 +80,18 @@ enum DrawPinOrient {
|
|||
|
||||
class LIB_PIN : public LIB_DRAW_ITEM
|
||||
{
|
||||
wxPoint m_position; ///< Position of the pin.
|
||||
int m_length; ///< Length of the pin.
|
||||
int m_orientation; ///< Pin orientation (Up, Down, Left, Right)
|
||||
int m_shape; ///< Bitwise ORed of pin shapes (see enum DrawPinShape)
|
||||
int m_width; ///< Line width of the pin.
|
||||
int m_type; ///< Electrical type of the pin. See enum ElectricPinType.
|
||||
int m_attributes; ///< Set bit 0 to indicate pin is invisible.
|
||||
wxString m_name;
|
||||
long m_number; ///< Pin number defined as 4 ASCII characters like "12", "anod",
|
||||
///< "G6", or "12". It is stored as "12\0\0" and does not
|
||||
///< depend on endian type.
|
||||
|
||||
/**
|
||||
* Draw the pin.
|
||||
*/
|
||||
|
@ -87,15 +99,6 @@ class LIB_PIN : public LIB_DRAW_ITEM
|
|||
int aColor, int aDrawMode, void* aData, const TRANSFORM& aTransform );
|
||||
|
||||
public:
|
||||
int m_PinLen; /* Pin length */
|
||||
int m_Orient; /* Pin orientation (Up, Down, Left, Right) */
|
||||
int m_PinShape; /* Bitwise ORed: Pin shape (see enum DrawPinShape) */
|
||||
int m_PinType; /* Electrical pin properties */
|
||||
int m_Attributs; /* bit 0 != 0: pin invisible */
|
||||
long m_PinNum; /* Pin number: 4 ASCII code like "12" or "anod"
|
||||
* or "G6" "12" is stored as "12\0\0" ans does not
|
||||
* depend on endian type*/
|
||||
wxString m_PinName;
|
||||
int m_PinNumSize;
|
||||
int m_PinNameSize; /* Pin num and Pin name sizes */
|
||||
|
||||
|
@ -107,10 +110,6 @@ public:
|
|||
char m_PinNumPositionOpt;
|
||||
char m_PinNamePositionOpt;
|
||||
|
||||
wxPoint m_Pos; /* Position or centre (Arc and Circle) or start
|
||||
* point (segments) */
|
||||
int m_Width; /* Line width */
|
||||
|
||||
public:
|
||||
LIB_PIN( LIB_COMPONENT * aParent );
|
||||
LIB_PIN( const LIB_PIN& aPin );
|
||||
|
@ -165,17 +164,13 @@ public:
|
|||
* Pin numbers are coded as a long or 4 ASCII characters. Used to print
|
||||
* or draw the pin number.
|
||||
*
|
||||
* @param aStringBuffer - the wxString to store the pin num as an unicode
|
||||
* string
|
||||
* @param aStringBuffer - the wxString to store the pin num as an unicode string
|
||||
*/
|
||||
void ReturnPinStringNum( wxString& aStringBuffer ) const;
|
||||
|
||||
long GetNumber() const { return m_number; }
|
||||
|
||||
wxString GetNumber()
|
||||
{
|
||||
return ReturnPinStringNum( m_PinNum );
|
||||
}
|
||||
|
||||
wxString GetNumberString() const { return ReturnPinStringNum( m_number ); }
|
||||
|
||||
/**
|
||||
* Function ReturnPinStringNum (static function)
|
||||
|
@ -188,6 +183,8 @@ public:
|
|||
|
||||
void SetPinNumFromString( wxString& aBuffer );
|
||||
|
||||
wxString GetName() const { return m_name; }
|
||||
|
||||
/**
|
||||
* Set the pin name.
|
||||
*
|
||||
|
@ -227,25 +224,29 @@ public:
|
|||
*/
|
||||
void SetNumberTextSize( int aSize );
|
||||
|
||||
int GetOrientation() const { return m_orientation; }
|
||||
|
||||
/**
|
||||
* Set orientation on the pin.
|
||||
*
|
||||
* This will also update the orientation of the pins marked by
|
||||
* EnableEditMode().
|
||||
* This will also update the orientation of the pins marked by EnableEditMode().
|
||||
*
|
||||
* @param aOrientation - The orientation of the pin.
|
||||
*/
|
||||
void SetOrientation( int aOrientation );
|
||||
|
||||
int GetShape() const { return m_shape; }
|
||||
|
||||
/**
|
||||
* Set the draw style of the pin.
|
||||
* Set the shape of the pin to \a aShape.
|
||||
*
|
||||
* This will also update the draw style of the pins marked by
|
||||
* EnableEditMode().
|
||||
* This will also update the draw style of the pins marked by EnableEditMode().
|
||||
*
|
||||
* @param aStyle - The draw style of the pin.
|
||||
* @param aShape - The draw shape of the pin. See enum DrawPinShape.
|
||||
*/
|
||||
void SetDrawStyle( int aStyle );
|
||||
void SetShape( int aShape );
|
||||
|
||||
int GetType() const { return m_type; }
|
||||
|
||||
/**
|
||||
* Set the electrical type of the pin.
|
||||
|
@ -255,7 +256,7 @@ public:
|
|||
*
|
||||
* @param aType - The electrical type of the pin.
|
||||
*/
|
||||
void SetElectricalType( int aType );
|
||||
void SetType( int aType );
|
||||
|
||||
/**
|
||||
* Set the pin length.
|
||||
|
@ -266,6 +267,8 @@ public:
|
|||
*/
|
||||
void SetLength( int aLength );
|
||||
|
||||
int GetLength() { return m_length; }
|
||||
|
||||
/**
|
||||
* Set the pin part number.
|
||||
*
|
||||
|
@ -320,7 +323,7 @@ public:
|
|||
*
|
||||
* @return True if draw object is visible otherwise false.
|
||||
*/
|
||||
bool IsVisible() { return ( m_Attributs & PINNOTDRAW ) == 0; }
|
||||
bool IsVisible() { return ( m_attributes & PINNOTDRAW ) == 0; }
|
||||
|
||||
/**
|
||||
* @return the size of the "pen" that be used to draw or plot this item.
|
||||
|
@ -436,12 +439,12 @@ protected:
|
|||
virtual void DoOffset( const wxPoint& aOffset );
|
||||
virtual bool DoTestInside( EDA_Rect& aRect ) const;
|
||||
virtual void DoMove( const wxPoint& aPosition );
|
||||
virtual wxPoint DoGetPosition() const { return m_Pos; }
|
||||
virtual wxPoint DoGetPosition() const { return m_position; }
|
||||
virtual void DoMirrorHorizontal( const wxPoint& aCenter );
|
||||
virtual void DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
|
||||
const TRANSFORM& aTransform );
|
||||
virtual int DoGetWidth() const { return m_Width; }
|
||||
virtual void DoSetWidth( int aWidth ) { m_Width = aWidth; }
|
||||
virtual int DoGetWidth() const { return m_width; }
|
||||
virtual void DoSetWidth( int aWidth );
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ void LIB_EDIT_FRAME::EditField( wxDC* DC, LIB_FIELD* aField )
|
|||
|
||||
// Editing the component value field is equivalent to creating a new component based
|
||||
// on the current component. Set the dialog message to inform the user.
|
||||
if( aField->m_FieldId == VALUE )
|
||||
if( aField->GetId() == VALUE )
|
||||
{
|
||||
caption = _( "Component Name" );
|
||||
title = _( "Enter a name to create a new component based on this one." );
|
||||
|
@ -51,7 +51,7 @@ void LIB_EDIT_FRAME::EditField( wxDC* DC, LIB_FIELD* aField )
|
|||
|
||||
text.Replace( wxT( " " ), wxT( "_" ) );
|
||||
|
||||
if( ( aField->m_FieldId == REFERENCE || aField->m_FieldId == VALUE ) && text.IsEmpty ( ) )
|
||||
if( ( aField->GetId() == REFERENCE || aField->GetId() == VALUE ) && text.IsEmpty ( ) )
|
||||
{
|
||||
title.Printf( _( "A %s field cannot be empty." ), GetChars(aField->GetName().Lower() ) );
|
||||
DisplayError( this, title );
|
||||
|
@ -64,7 +64,7 @@ void LIB_EDIT_FRAME::EditField( wxDC* DC, LIB_FIELD* aField )
|
|||
* the old one. Rename the component and remove any conflicting aliases to prevent name
|
||||
* errors when updating the library.
|
||||
*/
|
||||
if( aField->m_FieldId == VALUE )
|
||||
if( aField->GetId() == VALUE )
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
|
|
|
@ -445,7 +445,7 @@ static bool sortPinsByNum( NETLIST_OBJECT* aPin1, NETLIST_OBJECT* aPin2 )
|
|||
static bool sortPinsByNumber( LIB_PIN* aPin1, LIB_PIN* aPin2 )
|
||||
{
|
||||
// return "lhs < rhs"
|
||||
return RefDesStringCompare( aPin1->GetNumber(), aPin2->GetNumber() ) < 0;
|
||||
return RefDesStringCompare( aPin1->GetNumberString(), aPin2->GetNumberString() ) < 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -758,7 +758,7 @@ XNODE* EXPORT_HELP::makeGenericLibParts()
|
|||
{
|
||||
XNODE* xfield;
|
||||
xfields->AddChild( xfield = node( sField, fieldList[i].m_Text ) );
|
||||
xfield->AddAttribute( sName, fieldList[i].m_Name );
|
||||
xfield->AddAttribute( sName, fieldList[i].GetName() );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -778,7 +778,7 @@ XNODE* EXPORT_HELP::makeGenericLibParts()
|
|||
XNODE* pin;
|
||||
|
||||
pins->AddChild( pin = node( sPin ) );
|
||||
pin->AddAttribute( sNum, pinList[i]->GetNumber() );
|
||||
pin->AddAttribute( sNum, pinList[i]->GetNumberString() );
|
||||
|
||||
// caution: construction work site here, drive slowly
|
||||
}
|
||||
|
@ -1489,7 +1489,7 @@ bool EXPORT_HELP::addPinToComponentPinList( SCH_COMPONENT* aComponent,
|
|||
if( pin->m_Link != aComponent )
|
||||
continue;
|
||||
|
||||
if( pin->m_PinNum != aPin->m_PinNum )
|
||||
if( pin->m_PinNum != aPin->GetNumber() )
|
||||
continue;
|
||||
|
||||
// most expensive test at the end.
|
||||
|
|
|
@ -641,7 +641,7 @@ static void AddConnectedObjects( SCH_SHEET_PATH* sheetlist,
|
|||
if( pin->GetConvert() && ( pin->GetConvert() != DrawLibItem->m_Convert ) )
|
||||
continue;
|
||||
|
||||
wxPoint pos2 = DrawLibItem->m_Transform.TransformCoordinate( pin->m_Pos ) +
|
||||
wxPoint pos2 = DrawLibItem->m_Transform.TransformCoordinate( pin->GetPosition() ) +
|
||||
DrawLibItem->m_Pos;
|
||||
|
||||
new_item = new NETLIST_OBJECT();
|
||||
|
@ -650,15 +650,14 @@ static void AddConnectedObjects( SCH_SHEET_PATH* sheetlist,
|
|||
new_item->m_SheetList = *sheetlist;
|
||||
new_item->m_Type = NET_PIN;
|
||||
new_item->m_Link = DrawLibItem;
|
||||
new_item->m_ElectricalType = pin->m_PinType;
|
||||
new_item->m_PinNum = pin->m_PinNum;
|
||||
new_item->m_Label = pin->m_PinName;
|
||||
new_item->m_ElectricalType = pin->GetType();
|
||||
new_item->m_PinNum = pin->GetNumber();
|
||||
new_item->m_Label = pin->GetName();
|
||||
new_item->m_Start = new_item->m_End = pos2;
|
||||
|
||||
aNetItemBuffer.push_back( new_item );
|
||||
|
||||
if( ( (int) pin->m_PinType == (int) PIN_POWER_IN )
|
||||
&& ( pin->m_Attributs & PINNOTDRAW ) )
|
||||
if( ( (int) pin->GetType() == (int) PIN_POWER_IN ) && !pin->IsVisible() )
|
||||
{
|
||||
/* There is an associated PIN_LABEL. */
|
||||
new_item = new NETLIST_OBJECT();
|
||||
|
@ -666,7 +665,7 @@ static void AddConnectedObjects( SCH_SHEET_PATH* sheetlist,
|
|||
new_item->m_Comp = NULL;
|
||||
new_item->m_SheetList = *sheetlist;
|
||||
new_item->m_Type = NET_PINLABEL;
|
||||
new_item->m_Label = pin->m_PinName;
|
||||
new_item->m_Label = pin->GetName();
|
||||
new_item->m_Start = pos2;
|
||||
new_item->m_End = new_item->m_Start;
|
||||
|
||||
|
|
|
@ -51,12 +51,13 @@ void LIB_EDIT_FRAME::OnRotatePin( wxCommandEvent& event )
|
|||
LIB_PIN* pin = (LIB_PIN*) m_drawItem;
|
||||
|
||||
// Save old pin orientation
|
||||
LastPinOrient = pin -> m_Orient;
|
||||
LastPinOrient = pin->GetOrientation();
|
||||
|
||||
if( !pin->InEditMode() )
|
||||
SaveCopyInUndoList( pin->GetParent() );
|
||||
|
||||
// Get the actual pin orientation index
|
||||
int orientationIndex = pin -> GetOrientationCodeIndex(pin -> m_Orient);
|
||||
int orientationIndex = pin->GetOrientationCodeIndex( pin->GetOrientation() );
|
||||
|
||||
// Compute the next orientation, swap lower two bits for the right order
|
||||
orientationIndex = ((orientationIndex & 2) >> 1) | ((orientationIndex & 1) << 1);
|
||||
|
@ -64,7 +65,7 @@ void LIB_EDIT_FRAME::OnRotatePin( wxCommandEvent& event )
|
|||
orientationIndex = ((orientationIndex & 2) >> 1) | ((orientationIndex & 1) << 1);
|
||||
|
||||
// Set the new orientation
|
||||
pin->SetOrientation(pin->GetOrientationCode(orientationIndex));
|
||||
pin->SetOrientation( pin->GetOrientationCode( orientationIndex ) );
|
||||
|
||||
OnModify( );
|
||||
pin->DisplayInfo( this );
|
||||
|
@ -86,23 +87,23 @@ void LIB_EDIT_FRAME::OnEditPin( wxCommandEvent& event )
|
|||
|
||||
wxString units = GetUnitsLabel( g_UserUnit );
|
||||
dlg.SetOrientationList( LIB_PIN::GetOrientationNames(), LIB_PIN::GetOrientationSymbols() );
|
||||
dlg.SetOrientation( LIB_PIN::GetOrientationCodeIndex( pin->m_Orient ) );
|
||||
dlg.SetOrientation( LIB_PIN::GetOrientationCodeIndex( pin->GetOrientation() ) );
|
||||
dlg.SetStyleList( LIB_PIN::GetStyleNames(), LIB_PIN::GetStyleSymbols() );
|
||||
dlg.SetStyle( LIB_PIN::GetStyleCodeIndex( pin->m_PinShape ) );
|
||||
dlg.SetStyle( LIB_PIN::GetStyleCodeIndex( pin->GetShape() ) );
|
||||
dlg.SetElectricalTypeList( LIB_PIN::GetElectricalTypeNames(),
|
||||
LIB_PIN::GetElectricalTypeSymbols() );
|
||||
dlg.SetElectricalType( pin->m_PinType );
|
||||
dlg.SetName( pin->m_PinName );
|
||||
dlg.SetElectricalType( pin->GetType() );
|
||||
dlg.SetName( pin->GetName() );
|
||||
dlg.SetNameTextSize( ReturnStringFromValue( g_UserUnit,
|
||||
pin->m_PinNameSize,
|
||||
m_InternalUnits ) );
|
||||
dlg.SetNameTextSizeUnits( units );
|
||||
dlg.SetNumber( pin->GetNumber() );
|
||||
dlg.SetNumber( pin->GetNumberString() );
|
||||
dlg.SetNumberTextSize( ReturnStringFromValue( g_UserUnit,
|
||||
pin->m_PinNumSize,
|
||||
m_InternalUnits ) );
|
||||
dlg.SetNumberTextSizeUnits( units );
|
||||
dlg.SetLength( ReturnStringFromValue( g_UserUnit, pin->m_PinLen, m_InternalUnits ) );
|
||||
dlg.SetLength( ReturnStringFromValue( g_UserUnit, pin->GetLength(), m_InternalUnits ) );
|
||||
dlg.SetLengthUnits( units );
|
||||
dlg.SetAddToAllParts( pin->GetUnit() == 0 );
|
||||
dlg.SetAddToAllBodyStyles( pin->GetConvert() == 0 );
|
||||
|
@ -150,8 +151,8 @@ void LIB_EDIT_FRAME::OnEditPin( wxCommandEvent& event )
|
|||
pin->SetNumberTextSize( LastPinNumSize );
|
||||
pin->SetOrientation( LastPinOrient );
|
||||
pin->SetLength( LastPinLength );
|
||||
pin->SetElectricalType( LastPinType );
|
||||
pin->SetDrawStyle( LastPinShape );
|
||||
pin->SetType( LastPinType );
|
||||
pin->SetShape( LastPinShape );
|
||||
pin->SetConversion( ( LastPinCommonConvert ) ? 0 : m_convert );
|
||||
pin->SetPartNumber( ( LastPinCommonUnit ) ? 0 : m_unit );
|
||||
pin->SetVisible( LastPinVisible );
|
||||
|
@ -224,10 +225,9 @@ void LIB_EDIT_FRAME::PlacePin( wxDC* DC )
|
|||
newpos.y = -GetScreen()->m_Curseur.y;
|
||||
|
||||
// Tst for an other pin in same new position:
|
||||
for( Pin = m_component->GetNextPin(); Pin != NULL;
|
||||
Pin = m_component->GetNextPin( Pin ) )
|
||||
for( Pin = m_component->GetNextPin(); Pin != NULL; Pin = m_component->GetNextPin( Pin ) )
|
||||
{
|
||||
if( Pin == CurrentPin || newpos != Pin->m_Pos || Pin->m_Flags )
|
||||
if( Pin == CurrentPin || newpos != Pin->GetPosition() || Pin->m_Flags )
|
||||
continue;
|
||||
|
||||
if( ask_for_pin && !g_EditPinByPinIsOn )
|
||||
|
@ -238,6 +238,7 @@ void LIB_EDIT_FRAME::PlacePin( wxDC* DC )
|
|||
another pin. Continue?" ) );
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
DrawPanel->m_IgnoreMouseEvents = false;
|
||||
|
||||
if( !status )
|
||||
return;
|
||||
else
|
||||
|
@ -254,16 +255,18 @@ another pin. Continue?" ) );
|
|||
|
||||
DrawPanel->ManageCurseur = NULL;
|
||||
DrawPanel->ForceCloseManageCurseur = NULL;
|
||||
OnModify( );
|
||||
CurrentPin->m_Pos = newpos;
|
||||
OnModify();
|
||||
CurrentPin->SetPosition( newpos );
|
||||
|
||||
if( CurrentPin->IsNew() )
|
||||
{
|
||||
LastPinOrient = CurrentPin->m_Orient;
|
||||
LastPinType = CurrentPin->m_PinType;
|
||||
LastPinShape = CurrentPin->m_PinShape;
|
||||
LastPinOrient = CurrentPin->GetOrientation();
|
||||
LastPinType = CurrentPin->GetType();
|
||||
LastPinShape = CurrentPin->GetShape();
|
||||
|
||||
if( !g_EditPinByPinIsOn )
|
||||
CreateImagePins( CurrentPin, m_unit, m_convert, m_showDeMorgan );
|
||||
|
||||
m_lastDrawItem = CurrentPin;
|
||||
m_component->AddDrawItem( m_drawItem );
|
||||
}
|
||||
|
@ -273,7 +276,8 @@ another pin. Continue?" ) );
|
|||
{
|
||||
if( Pin->m_Flags == 0 )
|
||||
continue;
|
||||
Pin->m_Pos = CurrentPin->m_Pos;
|
||||
|
||||
Pin->SetPosition( CurrentPin->GetPosition() );
|
||||
Pin->m_Flags = 0;
|
||||
}
|
||||
|
||||
|
@ -308,14 +312,14 @@ void LIB_EDIT_FRAME::StartMovePin( wxDC* DC )
|
|||
Pin->m_Flags = 0;
|
||||
if( Pin == CurrentPin )
|
||||
continue;
|
||||
if( ( Pin->m_Pos == CurrentPin->m_Pos )
|
||||
&& ( Pin->m_Orient == CurrentPin->m_Orient )
|
||||
if( ( Pin->GetPosition() == CurrentPin->GetPosition() )
|
||||
&& ( Pin->GetOrientation() == CurrentPin->GetOrientation() )
|
||||
&& ( g_EditPinByPinIsOn == false ) )
|
||||
Pin->m_Flags |= IS_LINKED | IS_MOVED;
|
||||
}
|
||||
|
||||
CurrentPin->m_Flags |= IS_LINKED | IS_MOVED;
|
||||
PinPreviousPos = OldPos = CurrentPin->m_Pos;
|
||||
PinPreviousPos = OldPos = CurrentPin->GetPosition();
|
||||
|
||||
startPos.x = OldPos.x;
|
||||
startPos.y = -OldPos.y;
|
||||
|
@ -345,28 +349,27 @@ static void DrawMovePin( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
|
|||
if( CurrentPin == NULL || CurrentPin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
return;
|
||||
|
||||
wxPoint pinpos = CurrentPin->m_Pos;
|
||||
wxPoint pinpos = CurrentPin->GetPosition();
|
||||
bool showPinText = true;
|
||||
|
||||
/* Erase pin in old position */
|
||||
if( erase )
|
||||
{
|
||||
CurrentPin->m_Pos = PinPreviousPos;
|
||||
CurrentPin->SetPosition( PinPreviousPos );
|
||||
CurrentPin->Draw( panel, DC, wxPoint( 0, 0 ), -1, g_XorMode,
|
||||
&showPinText, DefaultTransform );
|
||||
}
|
||||
|
||||
/* Redraw pin in new position */
|
||||
CurrentPin->m_Pos.x = panel->GetScreen()->m_Curseur.x;
|
||||
CurrentPin->m_Pos.y = -panel->GetScreen()->m_Curseur.y;
|
||||
CurrentPin->SetPosition( panel->GetScreen()->GetCursorDrawPosition() );
|
||||
CurrentPin->Draw( panel, DC, wxPoint( 0, 0 ), -1, g_XorMode, &showPinText, DefaultTransform );
|
||||
|
||||
PinPreviousPos = CurrentPin->m_Pos;
|
||||
PinPreviousPos = CurrentPin->GetPosition();
|
||||
|
||||
/* Keep the original position for existing pin (for Undo command)
|
||||
* and the current position for a new pin */
|
||||
if( !CurrentPin->IsNew() )
|
||||
CurrentPin->m_Pos = pinpos;
|
||||
CurrentPin->SetPosition( pinpos );
|
||||
}
|
||||
|
||||
|
||||
|
@ -384,7 +387,7 @@ void LIB_EDIT_FRAME::DeletePin( wxDC* DC, LIB_COMPONENT* LibEntry, LIB_PIN* Pin
|
|||
if( LibEntry == NULL || Pin == NULL )
|
||||
return;
|
||||
|
||||
PinPos = Pin->m_Pos;
|
||||
PinPos = Pin->GetPosition();
|
||||
LibEntry->RemoveDrawItem( (LIB_DRAW_ITEM*) Pin, DrawPanel, DC );
|
||||
|
||||
if( g_EditPinByPinIsOn == false )
|
||||
|
@ -396,7 +399,7 @@ void LIB_EDIT_FRAME::DeletePin( wxDC* DC, LIB_COMPONENT* LibEntry, LIB_PIN* Pin
|
|||
Pin = tmp;
|
||||
tmp = LibEntry->GetNextPin( Pin );
|
||||
|
||||
if( Pin->m_Pos != PinPos )
|
||||
if( Pin->GetPosition() != PinPos )
|
||||
continue;
|
||||
|
||||
LibEntry->RemoveDrawItem( (LIB_DRAW_ITEM*) Pin );
|
||||
|
@ -432,30 +435,18 @@ void LIB_EDIT_FRAME::CreatePin( wxDC* DC )
|
|||
if( g_EditPinByPinIsOn == false )
|
||||
pin->m_Flags |= IS_LINKED;
|
||||
|
||||
pin->m_Pos = GetScreen()->GetCursorDrawPosition();
|
||||
pin->m_PinLen = LastPinLength;
|
||||
pin->m_Orient = LastPinOrient;
|
||||
pin->m_PinType = LastPinType;
|
||||
pin->m_PinShape = LastPinShape;
|
||||
pin->SetPosition( GetScreen()->GetCursorDrawPosition() );
|
||||
pin->SetLength( LastPinLength );
|
||||
pin->SetOrientation( LastPinOrient );
|
||||
pin->SetType( LastPinType );
|
||||
pin->SetShape( LastPinShape );
|
||||
pin->m_PinNameSize = LastPinNameSize;
|
||||
pin->m_PinNumSize = LastPinNumSize;
|
||||
pin->SetConvert( LastPinCommonConvert ? 0 : m_convert );
|
||||
pin->SetUnit( LastPinCommonUnit ? 0 : m_unit );
|
||||
pin->SetVisible( LastPinVisible );
|
||||
|
||||
if( LastPinCommonConvert )
|
||||
pin->SetConvert( 0 );
|
||||
else
|
||||
pin->SetConvert( m_convert );
|
||||
|
||||
if( LastPinCommonUnit )
|
||||
pin->SetUnit( 0 );
|
||||
else
|
||||
pin->SetUnit( m_unit );
|
||||
|
||||
if( LastPinVisible )
|
||||
pin->m_Attributs &= ~PINNOTDRAW;
|
||||
else
|
||||
pin->m_Attributs |= PINNOTDRAW;
|
||||
|
||||
PinPreviousPos = pin->m_Pos;
|
||||
PinPreviousPos = pin->GetPosition();
|
||||
DrawPanel->m_IgnoreMouseEvents = true;
|
||||
wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED );
|
||||
cmd.SetId( ID_LIBEDIT_EDIT_PIN );
|
||||
|
@ -463,7 +454,7 @@ void LIB_EDIT_FRAME::CreatePin( wxDC* DC )
|
|||
DrawPanel->MouseToCursorSchema();
|
||||
DrawPanel->m_IgnoreMouseEvents = false;
|
||||
|
||||
if (pin->m_Flags & IS_CANCELLED)
|
||||
if( pin->m_Flags & IS_CANCELLED )
|
||||
{
|
||||
DeletePin( NULL, m_component, pin );
|
||||
m_drawItem = NULL;
|
||||
|
@ -473,6 +464,7 @@ void LIB_EDIT_FRAME::CreatePin( wxDC* DC )
|
|||
ClearTempCopyComponent();
|
||||
DrawPanel->ManageCurseur = DrawMovePin;
|
||||
DrawPanel->ForceCloseManageCurseur = AbortPinMove;
|
||||
|
||||
if( DC )
|
||||
pin->Draw( DrawPanel, DC, wxPoint( 0, 0 ), -1, wxCOPY, &showPinText,
|
||||
DefaultTransform );
|
||||
|
@ -498,10 +490,12 @@ static void CreateImagePins( LIB_PIN* Pin, int unit, int convert, bool asDeMorga
|
|||
if( CreateConv == true )
|
||||
{
|
||||
NewPin = (LIB_PIN*) Pin->GenCopy();
|
||||
|
||||
if( Pin->GetConvert() > 1 )
|
||||
NewPin->SetConvert( 1 );
|
||||
else
|
||||
NewPin->SetConvert( 2 );
|
||||
|
||||
Pin->GetParent()->AddDrawItem( NewPin );
|
||||
}
|
||||
|
||||
|
@ -511,8 +505,10 @@ static void CreateImagePins( LIB_PIN* Pin, int unit, int convert, bool asDeMorga
|
|||
continue; /* Pin common to all units. */
|
||||
|
||||
NewPin = (LIB_PIN*) Pin->GenCopy();
|
||||
|
||||
if( convert != 0 )
|
||||
NewPin->SetConvert( 1 );
|
||||
|
||||
NewPin->SetUnit( ii );
|
||||
Pin->GetParent()->AddDrawItem( NewPin );
|
||||
|
||||
|
@ -521,8 +517,10 @@ static void CreateImagePins( LIB_PIN* Pin, int unit, int convert, bool asDeMorga
|
|||
|
||||
NewPin = (LIB_PIN*) Pin->GenCopy();
|
||||
NewPin->SetConvert( 2 );
|
||||
|
||||
if( Pin->GetUnit() != 0 )
|
||||
NewPin->SetUnit( ii );
|
||||
|
||||
Pin->GetParent()->AddDrawItem( NewPin );
|
||||
}
|
||||
}
|
||||
|
@ -544,12 +542,14 @@ void LIB_EDIT_FRAME::GlobalSetPins( wxDC* DC, LIB_PIN* MasterPin, int id )
|
|||
|
||||
if( ( m_component == NULL ) || ( MasterPin == NULL ) )
|
||||
return;
|
||||
|
||||
if( MasterPin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
return;
|
||||
|
||||
OnModify( );
|
||||
|
||||
Pin = m_component->GetNextPin();
|
||||
|
||||
for( ; Pin != NULL; Pin = m_component->GetNextPin( Pin ) )
|
||||
{
|
||||
if( ( Pin->GetConvert() ) && ( Pin->GetConvert() != m_convert ) )
|
||||
|
@ -572,7 +572,7 @@ void LIB_EDIT_FRAME::GlobalSetPins( wxDC* DC, LIB_PIN* MasterPin, int id )
|
|||
break;
|
||||
|
||||
case ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_PINSIZE_ITEM:
|
||||
Pin->m_PinLen = MasterPin->m_PinLen;
|
||||
Pin->SetLength( MasterPin->GetLength() );
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -588,15 +588,15 @@ void LIB_EDIT_FRAME::RepeatPinItem( wxDC* DC, LIB_PIN* SourcePin )
|
|||
LIB_PIN* Pin;
|
||||
wxString msg;
|
||||
|
||||
if( m_component == NULL || SourcePin == NULL
|
||||
|| SourcePin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
if( m_component == NULL || SourcePin == NULL || SourcePin->Type() != COMPONENT_PIN_DRAW_TYPE )
|
||||
return;
|
||||
|
||||
Pin = (LIB_PIN*) SourcePin->GenCopy();
|
||||
Pin->m_Flags = IS_NEW;
|
||||
Pin->m_Pos.x += g_RepeatStep.x;
|
||||
Pin->m_Pos.y += -g_RepeatStep.y;
|
||||
IncrementLabelMember( Pin->m_PinName );
|
||||
Pin->SetPosition( Pin->GetPosition() + wxPoint( g_RepeatStep.x, -g_RepeatStep.y ) );
|
||||
wxString nextName = Pin->GetName();
|
||||
IncrementLabelMember( nextName );
|
||||
Pin->SetName( nextName );
|
||||
|
||||
Pin->ReturnPinStringNum( msg );
|
||||
IncrementLabelMember( msg );
|
||||
|
@ -609,8 +609,8 @@ void LIB_EDIT_FRAME::RepeatPinItem( wxDC* DC, LIB_PIN* SourcePin )
|
|||
|
||||
wxPoint savepos = GetScreen()->m_Curseur;
|
||||
DrawPanel->CursorOff( DC );
|
||||
GetScreen()->m_Curseur.x = Pin->m_Pos.x;
|
||||
GetScreen()->m_Curseur.y = -Pin->m_Pos.y;
|
||||
GetScreen()->m_Curseur.x = Pin->GetPosition().x;
|
||||
GetScreen()->m_Curseur.y = -Pin->GetPosition().y;
|
||||
|
||||
// Add this new pin in list, and creates pins for others parts if needed
|
||||
m_drawItem = Pin;
|
||||
|
@ -629,16 +629,18 @@ void LIB_EDIT_FRAME::RepeatPinItem( wxDC* DC, LIB_PIN* SourcePin )
|
|||
/* helper function to sort pins by pin num */
|
||||
bool sort_by_pin_number( const LIB_PIN* ref, const LIB_PIN* tst )
|
||||
{
|
||||
int test = ref->m_PinNum - tst->m_PinNum;
|
||||
int test = ref->GetNumber() - tst->GetNumber();
|
||||
|
||||
if( test == 0 )
|
||||
{
|
||||
test = ref->GetConvert() - tst->GetConvert();
|
||||
}
|
||||
|
||||
if( test == 0 )
|
||||
{
|
||||
test = ref->GetUnit() - tst->GetUnit();
|
||||
}
|
||||
|
||||
return test < 0;
|
||||
}
|
||||
|
||||
|
@ -686,7 +688,7 @@ void LIB_EDIT_FRAME::OnCheckComponent( wxCommandEvent& event )
|
|||
LIB_PIN* curr_pin = PinList[ii];
|
||||
Pin = PinList[ii - 1];
|
||||
|
||||
if( Pin->m_PinNum != curr_pin->m_PinNum
|
||||
if( Pin->GetNumber() != curr_pin->GetNumber()
|
||||
|| Pin->GetConvert() != curr_pin->GetConvert()
|
||||
|| Pin->GetUnit() != curr_pin->GetUnit() )
|
||||
continue;
|
||||
|
@ -697,13 +699,13 @@ void LIB_EDIT_FRAME::OnCheckComponent( wxCommandEvent& event )
|
|||
msg.Printf( _( "<b>Duplicate pin %s</b> \"%s\" at location <b>(%.3f, \
|
||||
%.3f)</b> conflicts with pin %s \"%s\" at location <b>(%.3f, %.3f)</b>" ),
|
||||
GetChars( stringCurrPinNum ),
|
||||
GetChars( curr_pin->m_PinName ),
|
||||
(float) curr_pin->m_Pos.x / 1000.0,
|
||||
(float) -curr_pin->m_Pos.y / 1000.0,
|
||||
GetChars( curr_pin->GetName() ),
|
||||
(float) curr_pin->GetPosition().x / 1000.0,
|
||||
(float) -curr_pin->GetPosition().y / 1000.0,
|
||||
GetChars( stringPinNum ),
|
||||
GetChars( Pin->m_PinName ),
|
||||
(float) Pin->m_Pos.x / 1000.0,
|
||||
(float) -Pin->m_Pos.y / 1000.0 );
|
||||
GetChars( Pin->GetName() ),
|
||||
(float) Pin->GetPosition().x / 1000.0,
|
||||
(float) -Pin->GetPosition().y / 1000.0 );
|
||||
|
||||
if( m_component->GetPartCount() > 1 )
|
||||
{
|
||||
|
@ -725,24 +727,24 @@ void LIB_EDIT_FRAME::OnCheckComponent( wxCommandEvent& event )
|
|||
|
||||
// Test for off grid pins:
|
||||
offgrid_error = 0;
|
||||
|
||||
for( unsigned ii = 0; ii < PinList.size(); ii++ )
|
||||
{
|
||||
Pin = PinList[ii];
|
||||
|
||||
if( ( (Pin->m_Pos.x % MIN_GRID_SIZE) == 0 ) &&
|
||||
( (Pin->m_Pos.y % MIN_GRID_SIZE) == 0 ) )
|
||||
if( ( (Pin->GetPosition().x % MIN_GRID_SIZE) == 0 ) &&
|
||||
( (Pin->GetPosition().y % MIN_GRID_SIZE) == 0 ) )
|
||||
continue;
|
||||
|
||||
// A pin is foun here off grid
|
||||
offgrid_error++;
|
||||
wxString stringPinNum;
|
||||
Pin->ReturnPinStringNum( stringPinNum );
|
||||
msg.Printf( _( "<b>Off grid pin %s</b> \"%s\" at location <b>(%.3f, \
|
||||
%.3f)</b>" ),
|
||||
msg.Printf( _( "<b>Off grid pin %s</b> \"%s\" at location <b>(%.3f, %.3f)</b>" ),
|
||||
GetChars( stringPinNum ),
|
||||
GetChars( Pin->m_PinName ),
|
||||
(float) Pin->m_Pos.x / 1000.0,
|
||||
(float) -Pin->m_Pos.y / 1000.0 );
|
||||
GetChars( Pin->GetName() ),
|
||||
(float) Pin->GetPosition().x / 1000.0,
|
||||
(float) -Pin->GetPosition().y / 1000.0 );
|
||||
|
||||
if( m_component->GetPartCount() > 1 )
|
||||
{
|
||||
|
@ -763,9 +765,7 @@ void LIB_EDIT_FRAME::OnCheckComponent( wxCommandEvent& event )
|
|||
}
|
||||
|
||||
if( !dup_error && !offgrid_error )
|
||||
DisplayInfoMessage( this,
|
||||
_( "No off grid or duplicate pins were found." ) );
|
||||
|
||||
DisplayInfoMessage( this, _( "No off grid or duplicate pins were found." ) );
|
||||
else
|
||||
error_display.ShowModal();
|
||||
}
|
||||
|
|
|
@ -94,15 +94,15 @@ SCH_COMPONENT::SCH_COMPONENT( LIB_COMPONENT& libComponent,
|
|||
{
|
||||
// Can no longer insert an empty name, since names are now keys. The
|
||||
// field index is not used beyond the first MANDATORY_FIELDS
|
||||
if( it->m_Name.IsEmpty() )
|
||||
if( it->GetName().IsEmpty() )
|
||||
continue;
|
||||
|
||||
// See if field by same name already exists.
|
||||
SCH_FIELD* schField = FindField( it->m_Name );
|
||||
SCH_FIELD* schField = FindField( it->GetName() );
|
||||
|
||||
if( !schField )
|
||||
{
|
||||
SCH_FIELD fld( wxPoint( 0, 0 ), GetFieldCount(), this, it->m_Name );
|
||||
SCH_FIELD fld( wxPoint( 0, 0 ), GetFieldCount(), this, it->GetName() );
|
||||
schField = AddField( fld );
|
||||
}
|
||||
|
||||
|
@ -1586,21 +1586,24 @@ bool SCH_COMPONENT::Matches( wxFindReplaceData& aSearchData, void* aAuxData, wxP
|
|||
{
|
||||
LIB_PIN_LIST pinList;
|
||||
Entry->GetPins( pinList, m_Multi, m_Convert );
|
||||
|
||||
// Search for a match in pinList
|
||||
for( unsigned ii = 0; ii < pinList.size(); ii ++ )
|
||||
{
|
||||
LIB_PIN* pin = pinList[ii];
|
||||
wxString pinNum;
|
||||
pin->ReturnPinStringNum( pinNum );
|
||||
if( SCH_ITEM::Matches(pin->m_PinName, aSearchData ) ||
|
||||
SCH_ITEM::Matches(pinNum, aSearchData ) )
|
||||
|
||||
if( SCH_ITEM::Matches( pin->GetName(), aSearchData ) ||
|
||||
SCH_ITEM::Matches( pinNum, aSearchData ) )
|
||||
{
|
||||
if( aFindLocation )
|
||||
{
|
||||
wxPoint pinpos = pin->m_Pos;
|
||||
wxPoint pinpos = pin->GetPosition();
|
||||
pinpos = m_Transform.TransformCoordinate( pinpos );
|
||||
*aFindLocation = pinpos + m_Pos;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1640,7 +1643,7 @@ wxPoint SCH_COMPONENT::GetPinPhysicalPosition( LIB_PIN* Pin )
|
|||
wxCHECK_MSG( Pin != NULL && Pin->Type() == COMPONENT_PIN_DRAW_TYPE, wxPoint( 0, 0 ),
|
||||
wxT( "Cannot get physical position of pin." ) );
|
||||
|
||||
return m_Transform.TransformCoordinate( Pin->m_Pos ) + m_Pos;
|
||||
return m_Transform.TransformCoordinate( Pin->GetPosition() ) + m_Pos;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1680,6 +1683,6 @@ void SCH_COMPONENT::GetConnectionPoints( vector< wxPoint >& aPoints ) const
|
|||
continue;
|
||||
|
||||
// Calculate the pin position relative to the component position and orientation.
|
||||
aPoints.push_back( m_Transform.TransformCoordinate( pin->m_Pos ) + m_Pos );
|
||||
aPoints.push_back( m_Transform.TransformCoordinate( pin->GetPosition() ) + m_Pos );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -359,6 +359,8 @@ public:
|
|||
inline bool IsDragging() const { return m_Flags & IS_DRAGGED; }
|
||||
inline bool IsSelected() const { return m_Flags & SELECTED; }
|
||||
|
||||
void SetModified();
|
||||
|
||||
int GetState( int type ) const
|
||||
{
|
||||
return m_Status & type;
|
||||
|
|
Loading…
Reference in New Issue