1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/*****************************/
/* 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(void)
/*************************************************/
/* 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 part:"),
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 part:"),
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);
}