/****************************/ /* EESchema - libalias.cpp */ /****************************/ /* Routines de maintenanace des librairies: gestion des alias des composants */ #include "fctsys.h" #include "common.h" #include "confirm.h" #include "program.h" #include "libcmp.h" #include "general.h" #include "protos.h" /* Variables locales */ /**************************************************************************/ bool BuildAliasData( LibraryStruct* Lib, EDA_LibComponentStruct* component ) /**************************************************************************/ /* Create the alias data for the lib component to edit * Alias data is: * alias name * doc string * keywords string * doc file name * * in .m_AliastList * Alias data (4 strings) replace each alias name. * */ { wxArrayString List; LibCmpEntry* CmpEntry; unsigned ii; if( component == NULL ) return FALSE; if( Lib == NULL ) return FALSE; if( component->m_AliasList.GetCount() == 0 ) return FALSE; List = component->m_AliasList; component->m_AliasList.Clear(); for( ii = 0; ii < List.GetCount(); ii++ ) { CmpEntry = (LibCmpEntry*) FindLibPart( List[ii].GetData(), Lib->m_Name, FIND_ALIAS ); if( CmpEntry && CmpEntry->Type != ALIAS ) { DisplayError( NULL, wxT( "BuildListAlias err: alias is a ROOT entry!" ) ); } else { if( LocateAlias( component->m_AliasList, List[ii] ) < 0 ) { /* Alias not found in list: create it (datas must be in this order) */ component->m_AliasList.Add( List[ii] ); component->m_AliasList.Add( CmpEntry->m_Doc ); component->m_AliasList.Add( CmpEntry->m_KeyWord ); component->m_AliasList.Add( CmpEntry->m_DocFile ); } } } return TRUE; } /***********************************************************************/ int LocateAlias( const wxArrayString& AliasData, const wxString& Name ) /***********************************************************************/ /* Return an index in alias data list * ( -1 if not found ) */ { int index = -1; unsigned ii; for( ii = 0; ii < AliasData.GetCount(); ii += ALIAS_NEXT ) { if( Name.CmpNoCase( AliasData[ii + ALIAS_NAME].GetData() ) == 0 ) { index = ii; break; } } return index; }