Commit 597833b5 authored by Dick Hollenbeck's avatar Dick Hollenbeck

touch ups

parent e88bc8e5
...@@ -120,15 +120,17 @@ StructColors ColorRefs[NBCOLOR] = ...@@ -120,15 +120,17 @@ StructColors ColorRefs[NBCOLOR] =
bool g_DisableFloatingPointLocalNotation = false; bool g_DisableFloatingPointLocalNotation = false;
void SetLocaleTo_C_standard( void ) int LOCALE_IO::C_count;
void SetLocaleTo_C_standard()
{ {
setlocale( LC_NUMERIC, "C" ); // Switch the locale to standard C setlocale( LC_NUMERIC, "C" ); // Switch the locale to standard C
} }
void SetLocaleTo_Default()
void SetLocaleTo_Default( void )
{ {
if( ! g_DisableFloatingPointLocalNotation ) if( !g_DisableFloatingPointLocalNotation )
setlocale( LC_NUMERIC, "" ); // revert to the current locale setlocale( LC_NUMERIC, "" ); // revert to the current locale
} }
......
...@@ -16,8 +16,6 @@ ...@@ -16,8 +16,6 @@
#include <pcbcommon.h> #include <pcbcommon.h>
#include <pcbstruct.h> #include <pcbstruct.h>
#include <richio.h>
#include <filter_reader.h>
#include <footprint_info.h> #include <footprint_info.h>
#include <io_mgr.h> #include <io_mgr.h>
...@@ -42,25 +40,25 @@ ...@@ -42,25 +40,25 @@
*/ */
bool FOOTPRINT_LIST::ReadFootprintFiles( wxArrayString& aFootprintsLibNames ) bool FOOTPRINT_LIST::ReadFootprintFiles( wxArrayString& aFootprintsLibNames )
{ {
wxFileName filename;
wxString libname;
// Clear data before reading files // Clear data before reading files
m_filesNotFound.Empty(); m_filesNotFound.Empty();
m_filesInvalid.Empty(); m_filesInvalid.Empty();
m_List.clear(); m_List.clear();
// try
{
PLUGIN::RELEASER pi( IO_MGR::PluginFind( IO_MGR::LEGACY ) ); PLUGIN::RELEASER pi( IO_MGR::PluginFind( IO_MGR::LEGACY ) );
// Parse Libraries Listed // Parse Libraries Listed
for( unsigned ii = 0; ii < aFootprintsLibNames.GetCount(); ii++ ) for( unsigned ii = 0; ii < aFootprintsLibNames.GetCount(); ii++ )
{ {
filename = aFootprintsLibNames[ii]; wxFileName filename = aFootprintsLibNames[ii];
filename.SetExt( FootprintLibFileExtension ); filename.SetExt( FootprintLibFileExtension );
libname = wxGetApp().FindLibraryPath( filename ); wxString libPath = wxGetApp().FindLibraryPath( filename );
if( libname.IsEmpty() ) if( !libPath )
{ {
m_filesNotFound << filename.GetFullName() << wxT("\n"); m_filesNotFound << filename.GetFullName() << wxT("\n");
continue; continue;
...@@ -68,16 +66,19 @@ bool FOOTPRINT_LIST::ReadFootprintFiles( wxArrayString& aFootprintsLibNames ) ...@@ -68,16 +66,19 @@ bool FOOTPRINT_LIST::ReadFootprintFiles( wxArrayString& aFootprintsLibNames )
try try
{ {
wxArrayString fpnames = pi->FootprintEnumerate( libname ); wxArrayString fpnames = pi->FootprintEnumerate( libPath );
for( unsigned i=0; i<fpnames.GetCount(); ++i ) for( unsigned i=0; i<fpnames.GetCount(); ++i )
{ {
std::auto_ptr<MODULE> m( pi->FootprintLoad( libname, fpnames[i] ) ); auto_ptr<MODULE> m( pi->FootprintLoad( libPath, fpnames[i] ) );
// we're loading what we enumerated, all must be there.
wxASSERT( m.get() );
FOOTPRINT_INFO* fpinfo = new FOOTPRINT_INFO(); FOOTPRINT_INFO* fpinfo = new FOOTPRINT_INFO();
fpinfo->m_Module = fpnames[i]; fpinfo->m_Module = fpnames[i];
fpinfo->m_LibName = libname; fpinfo->m_LibName = libPath;
fpinfo->m_padCount = m->GetPadCount(); fpinfo->m_padCount = m->GetPadCount();
fpinfo->m_KeyWord = m->GetKeywords(); fpinfo->m_KeyWord = m->GetKeywords();
fpinfo->m_Doc = m->GetDescription(); fpinfo->m_Doc = m->GetDescription();
...@@ -90,9 +91,17 @@ bool FOOTPRINT_LIST::ReadFootprintFiles( wxArrayString& aFootprintsLibNames ) ...@@ -90,9 +91,17 @@ bool FOOTPRINT_LIST::ReadFootprintFiles( wxArrayString& aFootprintsLibNames )
m_filesInvalid << ioe.errorText << wxT("\n"); m_filesInvalid << ioe.errorText << wxT("\n");
} }
} }
}
/* caller should catch this, UI seems not wanted here.
catch( IO_ERROR ioe )
{
DisplayError( NULL, ioe.errorText );
return false;
}
*/
m_List.sort(); m_List.sort();
return true; return true;
} }
...@@ -454,6 +454,7 @@ void SetLocaleTo_C_standard(); ...@@ -454,6 +454,7 @@ void SetLocaleTo_C_standard();
*/ */
void SetLocaleTo_Default(); void SetLocaleTo_Default();
/** /**
* Class LOCALE_IO * Class LOCALE_IO
* is a class that can be instantiated within a scope in which you are expecting * is a class that can be instantiated within a scope in which you are expecting
...@@ -464,10 +465,23 @@ void SetLocaleTo_Default(); ...@@ -464,10 +465,23 @@ void SetLocaleTo_Default();
class LOCALE_IO class LOCALE_IO
{ {
public: public:
LOCALE_IO() { SetLocaleTo_C_standard(); } LOCALE_IO()
~LOCALE_IO() { SetLocaleTo_Default(); } {
if( C_count++ == 0 )
SetLocaleTo_C_standard();
}
~LOCALE_IO()
{
if( --C_count == 0 )
SetLocaleTo_Default();
}
private:
static int C_count; // allow for nesting of LOCALE_IO instantiations
}; };
/** /**
* Function EnsureTextCtrlWidth * Function EnsureTextCtrlWidth
* sets the minimum pixel width on a text control in order to make a text * sets the minimum pixel width on a text control in order to make a text
......
...@@ -4186,6 +4186,17 @@ bool LEGACY_PLUGIN::IsFootprintLibWritable( const wxString& aLibraryPath ) ...@@ -4186,6 +4186,17 @@ bool LEGACY_PLUGIN::IsFootprintLibWritable( const wxString& aLibraryPath )
} }
LEGACY_PLUGIN::LEGACY_PLUGIN() :
m_board( 0 ),
m_props( 0 ),
m_reader( 0 ),
m_fp( 0 ),
m_cache( 0 )
{
init( NULL );
}
LEGACY_PLUGIN::~LEGACY_PLUGIN() LEGACY_PLUGIN::~LEGACY_PLUGIN()
{ {
delete m_cache; delete m_cache;
......
...@@ -55,7 +55,7 @@ struct FPL_CACHE; ...@@ -55,7 +55,7 @@ struct FPL_CACHE;
/** /**
* Class LEGACY_PLUGIN * Class LEGACY_PLUGIN
* is a PLUGIN derivation which could possibly be put into a DLL/DSO. * is a PLUGIN derivation which could possibly be put into a DLL/DSO.
* It is not thread safe, but it is re-entrant multiple times in sequence. * As with any PLUGIN, there is no UI, i.e. windowing calls allowed.
*/ */
class LEGACY_PLUGIN : public PLUGIN class LEGACY_PLUGIN : public PLUGIN
{ {
...@@ -99,14 +99,7 @@ public: ...@@ -99,14 +99,7 @@ public:
//-----</PLUGIN IMPLEMENTATION>--------------------------------------------- //-----</PLUGIN IMPLEMENTATION>---------------------------------------------
LEGACY_PLUGIN() : LEGACY_PLUGIN();
m_board( 0 ),
m_props( 0 ),
m_reader( 0 ),
m_fp( 0 ),
m_cache( 0 )
{}
~LEGACY_PLUGIN(); ~LEGACY_PLUGIN();
void SetReader( LINE_READER* aReader ) { m_reader = aReader; } void SetReader( LINE_READER* aReader ) { m_reader = aReader; }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment