diff --git a/include/richio.h b/include/richio.h index edb479644d..81740a3dd6 100644 --- a/include/richio.h +++ b/include/richio.h @@ -56,6 +56,9 @@ // use one of the following __LOC__ defs, depending on whether your // compiler supports __func__ or not, and how it handles __LINE__ +#if defined ( _MSC_VER ) +#define __func__ __FUNCTION__ +#endif #define __LOC__ ((std::string(__func__) + "() : line ") + TOSTRING(__LINE__)).c_str() //#define __LOC__ TOSTRING(__LINE__) diff --git a/pcbnew/gpcb_exchange.cpp b/pcbnew/gpcb_exchange.cpp index 0ed42808a5..a510248ec4 100644 --- a/pcbnew/gpcb_exchange.cpp +++ b/pcbnew/gpcb_exchange.cpp @@ -331,7 +331,7 @@ bool MODULE::Read_GPCB_Descr( const wxString& CmpFullFileName ) } if( params[0].CmpNoCase( wxT( "Pad" ) ) == 0 ) // Pad with no hole (smd pad) - { // format: Pad [x1 y1 x2 y2 thickness clearance mask "name" "pad_number" flags] + { // format: Pad [x1 y1 x2 y2 thickness clearance mask "name" "pad_number" flags] Pad = new D_PAD( this ); Pad->m_PadShape = PAD_RECT; Pad->m_layerMask = LAYER_FRONT | SOLDERMASK_LAYER_FRONT | SOLDERPASTE_LAYER_FRONT; @@ -361,9 +361,13 @@ bool MODULE::Read_GPCB_Descr( const wxString& CmpFullFileName ) // Currently unused // Read pad number: - if( params.GetCount() > 10 ) + if( params[1] == wxT( "(" ) ) { - strncpy( Pad->m_Padname, TO_UTF8( params[10] ), 4 ); + Pad->SetPadName( params[8] ); + } + else + { + Pad->SetPadName( params[10] ); } Pad->m_Pos.x = (ibuf[0] + ibuf[2]) / 2; Pad->m_Pos.y = (ibuf[1] + ibuf[3]) / 2; @@ -385,7 +389,7 @@ bool MODULE::Read_GPCB_Descr( const wxString& CmpFullFileName ) } if( params[0].CmpNoCase( wxT( "Pin" ) ) == 0 ) // Pad with hole (trough pad) - { // format: Pin[x y Thickness Clearance Mask DrillHole Name Number Flags] + { // format: Pin[x y Thickness Clearance Mask DrillHole Name Number Flags] Pad = new D_PAD( this ); Pad->m_PadShape = PAD_ROUND; Pad->m_layerMask = ALL_CU_LAYERS | @@ -415,9 +419,13 @@ bool MODULE::Read_GPCB_Descr( const wxString& CmpFullFileName ) // Currently unused // Read pad number: - if( params.GetCount() > 9 ) + if( params[1] == wxT( "(" ) ) { - strncpy( Pad->m_Padname, TO_UTF8( params[9] ), 4 ); + Pad->SetPadName( params[7] ); + } + else + { + Pad->SetPadName( params[9] ); } Pad->m_Pos.x = ibuf[0]; diff --git a/pcbnew/librairi.cpp b/pcbnew/librairi.cpp index 2932f40e4b..15e1c8afc1 100644 --- a/pcbnew/librairi.cpp +++ b/pcbnew/librairi.cpp @@ -40,6 +40,7 @@ const wxString ModExportFileExtension( wxT( "emp" ) ); static const wxString ModExportFileWildcard( _( "KiCad foot print export files (*.emp)|*.emp" ) ); +static const wxString ModImportFileWildcard( _( "GPcb foot print files (*)|*" ) ); MODULE* FOOTPRINT_EDIT_FRAME::Import_Module() @@ -55,9 +56,10 @@ MODULE* FOOTPRINT_EDIT_FRAME::Import_Module() if( Config ) Config->Read( EXPORT_IMPORT_LASTPATH_KEY, &LastOpenedPathForLoading ); + wxString importWildCard = ModExportFileWildcard + wxT("|") + ModImportFileWildcard; wxFileDialog dlg( this, _( "Import Footprint Module" ), LastOpenedPathForLoading, wxEmptyString, - ModExportFileWildcard, wxFD_OPEN | wxFD_FILE_MUST_EXIST ); + importWildCard, wxFD_OPEN | wxFD_FILE_MUST_EXIST ); if( dlg.ShowModal() == wxID_CANCEL ) return NULL;