kicad/eeschema/lib_export.cpp

152 lines
4.2 KiB
C++

/*****************************/
/* EESchema - lib_export.cpp */
/*****************************/
/* Routines de maintenanace des librariries:
* sauvegarde, modification de librairies.
* creation edition suppression de composants
*/
#include "fctsys.h"
#include "gr_basic.h"
#include "common.h"
#include "program.h"
#include "libcmp.h"
#include "general.h"
#include "protos.h"
#include "id.h"
/*************************************************/
void WinEDA_LibeditFrame::ImportOnePart()
/*************************************************/
/* Routine de lecture de 1 description.
* Le format est celui des librairies, mais on ne charge que 1 composant
* ou le 1er composant s'il y en a plusieurs.
* Si le premier composant est un alias, on chargera la racine correspondante
*/
{
wxString Name, mask;
LibraryStruct* LibTmp;
EDA_LibComponentStruct* LibEntry;
int err = 1;
mask = wxT( "*" ) + g_LibExtBuffer;
Name = EDA_FileSelector( _( "Import component:" ),
wxEmptyString, /* Chemin par defaut */
wxEmptyString, /* nom fichier par defaut */
g_LibExtBuffer, /* extension par defaut */
mask, /* Masque d'affichage */
this,
0,
TRUE
);
if( Name == wxEmptyString )
return;
LibTmp = g_LibraryList; g_LibraryList = NULL;
LoadLibraryName( this, Name, wxT( "$tmplib$" ) );
if( g_LibraryList )
{
LibEntry = (EDA_LibComponentStruct*) PQFirst( &g_LibraryList->m_Entries, FALSE );
if( LibEntry )
err = LoadOneLibraryPartAux( LibEntry, g_LibraryList, 1 );
FreeCmpLibrary( this, g_LibraryList->m_Name );
if( err == 0 )
{
ReCreateHToolbar();
DisplayLibInfos();
ReDrawPanel();
}
}
g_LibraryList = LibTmp;
if( err )
DisplayError( this, _( "File is empty" ), 30 );
}
/************************************************************/
void WinEDA_LibeditFrame::ExportOnePart( bool create_lib )
/************************************************************/
/* Routine de creation d'une nouvelle librairie et de sauvegarde du
* composant courant dans cette librarie
* si create_lib == TRUE sauvegarde dans le repertoire des libr
* sinon: sauvegarde sous le nom demande sans modifications.
*
* Le format du fichier cree est dans tous les cas le meme.
*/
{
wxString Name, mask;
LibraryStruct* NewLib, * LibTmp, * CurLibTmp;
int err;
if( CurrentLibEntry == NULL )
{
DisplayError( this, _( "No Part to Save" ), 10 ); return;
}
Name = CurrentLibEntry->m_Name.m_Text;
Name.MakeLower();
mask = wxT( "*" ) + g_LibExtBuffer;
wxString def_path;
if( create_lib )
def_path = g_RealLibDirBuffer;
Name = EDA_FileSelector( create_lib ? _( "New Library" ) : _( "Export component:" ),
def_path, /* Chemin par defaut */
Name, /* nom fichier par defaut */
g_LibExtBuffer, /* extension par defaut */
mask, /* Masque d'affichage */
this,
wxFD_SAVE,
TRUE
);
if( Name == wxEmptyString )
return;
/* Creation d'une librairie standard pour sauvegarde */
ChangeFileNameExt( Name, g_LibExtBuffer );
LibTmp = g_LibraryList;
CurLibTmp = CurrentLib;
NewLib = new LibraryStruct( LIBRARY_TYPE_EESCHEMA, wxT( "$libTmp$" ), Name );
g_LibraryList = NewLib;
/* Sauvegarde du composant: */
CurrentLib = NewLib;
SaveOnePartInMemory();
err = SaveOneLibrary( this, Name, NewLib );
/* Suppression de la librarie temporaire */
FreeCmpLibrary( this, NewLib->m_Name );
g_LibraryList = LibTmp;
CurrentLib = CurLibTmp;
wxString msg;
if( create_lib && (err == 0) )
{
msg = Name + _( "0k" );
DisplayInfo( this,
_("Note: this new library will be available only if it is loaded by eeschema.\nModify eeschema config if you want use it.") );
}
else
msg = _( "Error while create " ) + Name;
Affiche_Message( msg );
}