Closed bug 2802441, see CHANGELOG.txt
This commit is contained in:
parent
f7265b0ab1
commit
d1e44864eb
|
@ -4,6 +4,13 @@ KiCad ChangeLog 2009
|
|||
Please add newer entries at the top, list the date and your name with
|
||||
email address.
|
||||
|
||||
2009-july-05 UPDATE Jerry Jacobs <jerkejacobs@gmail.com
|
||||
================================================================================
|
||||
+ Closing bug 2802441, No single error messages any more, 2009-06-07 over2there.
|
||||
Fixed this both in eeschema and cvpcb, for now printing wxstring in a
|
||||
messagebox. Should make a nice textctrl dialog.
|
||||
+ Added cvpcb directory to Doxyfile
|
||||
|
||||
2009-june-19 UPDATE Jerry Jacobs <jerkejacobs@gmail.com>
|
||||
================================================================================
|
||||
Added Hauptmech patch.
|
||||
|
|
1
Doxyfile
1
Doxyfile
|
@ -78,6 +78,7 @@ WARN_LOGFILE =
|
|||
#---------------------------------------------------------------------------
|
||||
INPUT = kicad \
|
||||
pcbnew \
|
||||
cvpcb \
|
||||
eeschema \
|
||||
3d-viewer \
|
||||
common \
|
||||
|
|
|
@ -20,6 +20,12 @@
|
|||
#include "protos.h"
|
||||
|
||||
|
||||
/* Bla */
|
||||
wxString mdc_files_not_found;
|
||||
wxString mdc_files_invalid;
|
||||
|
||||
|
||||
|
||||
/* routines locales : */
|
||||
static void ReadDocLib( const wxString& ModLibName, FOOTPRINT_LIST& list );
|
||||
|
||||
|
@ -39,19 +45,19 @@ static void ReadDocLib( const wxString& ModLibName, FOOTPRINT_LIST& list );
|
|||
bool LoadFootprintFiles( const wxArrayString& libNames,
|
||||
FOOTPRINT_LIST& list )
|
||||
{
|
||||
FILE* file; /* pour lecture librairie */
|
||||
char buffer[1024];
|
||||
wxFileName fn;
|
||||
int end;
|
||||
FOOTPRINT* ItemLib;
|
||||
unsigned ii;
|
||||
wxString tmp, msg;
|
||||
FILE* file; /* pour lecture librairie */
|
||||
char buffer[1024];
|
||||
wxFileName filename;
|
||||
int end;
|
||||
FOOTPRINT* ItemLib;
|
||||
unsigned i;
|
||||
wxString tmp, msg;
|
||||
|
||||
if( !list.empty() )
|
||||
{
|
||||
list.clear();
|
||||
}
|
||||
/* Check if footprint list is not empty */
|
||||
if( !list.empty() )
|
||||
list.clear();
|
||||
|
||||
/* Check if there are footprint libraries in project file */
|
||||
if( libNames.GetCount() == 0 )
|
||||
{
|
||||
wxMessageBox( _( "No PCB foot print libraries are listed in the current project file." ),
|
||||
|
@ -59,24 +65,25 @@ bool LoadFootprintFiles( const wxArrayString& libNames,
|
|||
return false;
|
||||
}
|
||||
|
||||
/* Lecture des Librairies */
|
||||
for( ii = 0; ii < libNames.GetCount(); ii++ )
|
||||
/* Parse Libraries Listed */
|
||||
for( i = 0; i < libNames.GetCount(); i++ )
|
||||
{
|
||||
/* Calcul du nom complet de la librairie */
|
||||
fn = libNames[ii];
|
||||
fn.SetExt( ModuleFileExtension );
|
||||
filename = libNames[i];
|
||||
filename.SetExt( ModuleFileExtension );
|
||||
|
||||
tmp = wxGetApp().FindLibraryPath( filename );
|
||||
|
||||
tmp = wxGetApp().FindLibraryPath( fn );
|
||||
|
||||
if( !tmp )
|
||||
{
|
||||
msg.Printf( _( "PCB foot print library file <%s> could not be found in the default search paths." ),
|
||||
fn.GetFullName().c_str() );
|
||||
filename.GetFullName().c_str() );
|
||||
wxMessageBox( msg, titleLibLoadError, wxOK | wxICON_ERROR );
|
||||
continue;
|
||||
}
|
||||
|
||||
/* acces a une librairie */
|
||||
/* Open library file */
|
||||
file = wxFopen( tmp, wxT( "rt" ) );
|
||||
|
||||
if( file == NULL )
|
||||
|
@ -87,7 +94,7 @@ bool LoadFootprintFiles( const wxArrayString& libNames,
|
|||
continue;
|
||||
}
|
||||
|
||||
/* Controle du type de la librairie : */
|
||||
/* Check if library type is valid */
|
||||
fgets( buffer, 32, file );
|
||||
if( strncmp( buffer, ENTETE_LIBRAIRIE, L_ENTETE_LIB ) != 0 )
|
||||
{
|
||||
|
@ -98,10 +105,10 @@ bool LoadFootprintFiles( const wxArrayString& libNames,
|
|||
continue;
|
||||
}
|
||||
|
||||
/* Lecture du nombre de composants */
|
||||
/* TODO Lecture du nombre de composants */
|
||||
fseek( file, 0, 0 );
|
||||
|
||||
/* lecture nom des composants : */
|
||||
/* TODO lecture nom des composants : */
|
||||
end = 0;
|
||||
while( !end && fgets( buffer, 255, file ) != NULL )
|
||||
{
|
||||
|
@ -134,86 +141,108 @@ bool LoadFootprintFiles( const wxArrayString& libNames,
|
|||
ReadDocLib( tmp, list );
|
||||
}
|
||||
|
||||
list.sort();
|
||||
/* Display if there are mdc files not found */
|
||||
if( mdc_files_not_found != wxT(""))
|
||||
{
|
||||
wxString message = _("The following mdc files could not be found:\n\n");
|
||||
message += mdc_files_not_found;
|
||||
wxMessageBox( message, _("Load error!"), wxOK | wxICON_ERROR );
|
||||
}
|
||||
|
||||
return true;
|
||||
/* Display if there are mdc files invalid */
|
||||
if( mdc_files_invalid != wxT(""))
|
||||
{
|
||||
wxString message = _("The following mdc files are invalid:\n\n");
|
||||
message += mdc_files_invalid;
|
||||
wxMessageBox( message, _("Load error!"), wxOK | wxICON_ERROR );
|
||||
}
|
||||
|
||||
list.sort();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* Routine de lecture du fichier Doc associe a la librairie ModLibName.
|
||||
/**
|
||||
* Routine de lecture du fichier Doc associe a la librairie ModLibName.
|
||||
* Cree en memoire la chaine liste des docs pointee par MList
|
||||
* ModLibName = full file Name de la librairie Modules
|
||||
*/
|
||||
static void ReadDocLib( const wxString& ModLibName, FOOTPRINT_LIST& list )
|
||||
static void
|
||||
ReadDocLib( const wxString& ModLibName,
|
||||
FOOTPRINT_LIST& list )
|
||||
{
|
||||
FOOTPRINT* NewMod;
|
||||
char Line[1024];
|
||||
wxString ModuleName;
|
||||
wxString msg;
|
||||
FILE* LibDoc;
|
||||
wxFileName fn = ModLibName;
|
||||
FOOTPRINT* NewMod;
|
||||
char Line[1024];
|
||||
wxString ModuleName;
|
||||
FILE* mdc_file;
|
||||
wxFileName mdc_filename = ModLibName;
|
||||
|
||||
fn.SetExt( wxT( "mdc" ) );
|
||||
/* Set mdc filename extension */
|
||||
mdc_filename.SetExt( wxT( "mdc" ) );
|
||||
|
||||
if( ( LibDoc = wxFopen( fn.GetFullPath(), wxT( "rt" ) ) ) == NULL )
|
||||
{
|
||||
msg.Printf( _( "Could not open PCB foot print library document file <%s>." ),
|
||||
fn.GetFullPath().c_str() );
|
||||
wxMessageBox( msg, titleLibLoadError, wxOK | wxICON_ERROR );
|
||||
return;
|
||||
}
|
||||
/* Check if mdc file exists and can be opened */
|
||||
if( ( mdc_file = wxFopen( mdc_filename.GetFullPath(), wxT( "rt" ) ) ) == NULL )
|
||||
{
|
||||
mdc_files_not_found += mdc_filename.GetFullPath() + wxT("\n");
|
||||
return;
|
||||
}
|
||||
|
||||
GetLine( LibDoc, Line, NULL, sizeof(Line) - 1 );
|
||||
if( strnicmp( Line, ENTETE_LIBDOC, L_ENTETE_LIB ) != 0 )
|
||||
{
|
||||
msg.Printf( _( "<%s> is not a valid PCB foot print library document file." ),
|
||||
fn.GetFullPath().c_str() );
|
||||
wxMessageBox( msg, titleLibLoadError, wxOK | wxICON_ERROR );
|
||||
return;
|
||||
}
|
||||
/* Check if mdc file is valid */
|
||||
GetLine( mdc_file, Line, NULL, sizeof(Line) - 1 );
|
||||
if( strnicmp( Line, ENTETE_LIBDOC, L_ENTETE_LIB ) != 0 )
|
||||
{
|
||||
mdc_files_invalid += mdc_filename.GetFullPath() + wxT("\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Lecture de la librairie */
|
||||
while( GetLine( LibDoc, Line, NULL, sizeof(Line) - 1 ) )
|
||||
{
|
||||
NewMod = NULL;
|
||||
if( Line[0] != '$' )
|
||||
continue;
|
||||
if( Line[1] == 'E' )
|
||||
break;;
|
||||
if( Line[1] == 'M' ) /* Debut decription 1 module */
|
||||
{
|
||||
while( GetLine( LibDoc, Line, NULL, sizeof(Line) - 1 ) )
|
||||
{
|
||||
if( Line[0] == '$' ) /* $EndMODULE */
|
||||
break;
|
||||
switch( Line[0] )
|
||||
{
|
||||
case 'L': /* LibName */
|
||||
ModuleName = CONV_FROM_UTF8( StrPurge( Line + 3 ) );
|
||||
BOOST_FOREACH( FOOTPRINT& footprint, list )
|
||||
{
|
||||
if( ModuleName == footprint.m_Module )
|
||||
{
|
||||
NewMod = &footprint;
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* Read the mdc file */
|
||||
while( GetLine( mdc_file, Line, NULL, sizeof(Line) - 1 ) )
|
||||
{
|
||||
NewMod = NULL;
|
||||
if( Line[0] != '$' )
|
||||
continue;
|
||||
if( Line[1] == 'E' )
|
||||
break;
|
||||
if( Line[1] == 'M' ) /* 1 module description */
|
||||
{
|
||||
/* Parse file line by line */
|
||||
while( GetLine( mdc_file, Line, NULL, sizeof(Line) - 1 ) )
|
||||
{
|
||||
/* $EndMODULE */
|
||||
if( Line[0] == '$' )
|
||||
break;
|
||||
|
||||
break;
|
||||
switch( Line[0] )
|
||||
{
|
||||
/* LibName */
|
||||
case 'L': /* LibName */
|
||||
ModuleName = CONV_FROM_UTF8( StrPurge( Line + 3 ) );
|
||||
BOOST_FOREACH( FOOTPRINT& footprint, list )
|
||||
{
|
||||
if( ModuleName == footprint.m_Module )
|
||||
{
|
||||
NewMod = &footprint;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'K': /* KeyWords */
|
||||
if( NewMod && (!NewMod->m_KeyWord) )
|
||||
NewMod->m_KeyWord = CONV_FROM_UTF8( StrPurge( Line + 3 ) );
|
||||
break;
|
||||
/* KeyWords */
|
||||
case 'K':
|
||||
if( NewMod && (!NewMod->m_KeyWord) )
|
||||
NewMod->m_KeyWord = CONV_FROM_UTF8( StrPurge( Line + 3 ) );
|
||||
break;
|
||||
|
||||
case 'C': /* Doc */
|
||||
if( NewMod && ( !NewMod->m_Doc ) )
|
||||
NewMod->m_Doc = CONV_FROM_UTF8( StrPurge( Line + 3 ) );
|
||||
break;
|
||||
}
|
||||
}
|
||||
} /* lecture 1 descr module */
|
||||
} /* Fin lecture librairie */
|
||||
/* Doc */
|
||||
case 'C':
|
||||
if( NewMod && ( !NewMod->m_Doc ) )
|
||||
NewMod->m_Doc = CONV_FROM_UTF8( StrPurge( Line + 3 ) );
|
||||
break;
|
||||
}
|
||||
}
|
||||
} /* Parsed one module documentation */
|
||||
} /* Parsed complete library documentation */
|
||||
|
||||
fclose( LibDoc );
|
||||
fclose( mdc_file );
|
||||
}
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
/* Functions to handle component library files : read functions */
|
||||
/*****************************************************************/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "fctsys.h"
|
||||
#include "gr_basic.h"
|
||||
#include "common.h"
|
||||
|
@ -109,6 +111,7 @@ void LoadLibraries( WinEDA_SchematicFrame* frame )
|
|||
{
|
||||
wxFileName fn;
|
||||
wxString msg, tmp;
|
||||
wxString libraries_not_found;
|
||||
unsigned ii, iimax = frame->m_ComponentLibFiles.GetCount();
|
||||
|
||||
// Free the unwanted libraries (i.e. not in list) but keep the cache lib
|
||||
|
@ -139,8 +142,7 @@ void LoadLibraries( WinEDA_SchematicFrame* frame )
|
|||
tmp = wxGetApp().FindLibraryPath( fn );
|
||||
if( !tmp )
|
||||
{
|
||||
msg.Printf( _( "Library file <%s> not found." ), fn.GetName().c_str() );
|
||||
wxMessageBox( msg, _( "Library Load Error" ), wxOK | wxICON_ERROR, frame );
|
||||
libraries_not_found += fn.GetName() + _("\n");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
@ -161,6 +163,16 @@ void LoadLibraries( WinEDA_SchematicFrame* frame )
|
|||
frame->PrintMsg( msg );
|
||||
}
|
||||
|
||||
/* Print the libraries not found */
|
||||
if(libraries_not_found != _(""))
|
||||
{
|
||||
wxString message = _("The following libraries could not be found:\n\n");
|
||||
message += libraries_not_found;
|
||||
wxMessageBox( message, _("Load error!"), wxOK | wxICON_ERROR, frame );
|
||||
}
|
||||
|
||||
|
||||
|
||||
// reorder the linked list to match the order filename list:
|
||||
int NumOfLibs;
|
||||
for( NumOfLibs = 0, lib = g_LibraryList; lib != NULL; lib = lib->m_Pnext )
|
||||
|
|
Loading…
Reference in New Issue