Commit c2648237 authored by Dick Hollenbeck's avatar Dick Hollenbeck

8 bit string relief via class UTF8

parent f3467272
...@@ -273,8 +273,8 @@ FOOTPRINT_INFO* FOOTPRINT_LIST::GetModuleInfo( const wxString& aFootprintName ) ...@@ -273,8 +273,8 @@ FOOTPRINT_INFO* FOOTPRINT_LIST::GetModuleInfo( const wxString& aFootprintName )
wxString::Format( wxT( "'%s' is not a valid FPID." ), wxString::Format( wxT( "'%s' is not a valid FPID." ),
GetChars( aFootprintName ) ) ); GetChars( aFootprintName ) ) );
wxString libNickname = FROM_UTF8( fpid.GetLibNickname().c_str() ); wxString libNickname = fpid.GetLibNickname();
wxString footprintName = FROM_UTF8( fpid.GetFootprintName().c_str() ); wxString footprintName = fpid.GetFootprintName();
if( libNickname == fp.GetNickname() && footprintName == fp.GetFootprintName() ) if( libNickname == fp.GetNickname() && footprintName == fp.GetFootprintName() )
return &fp; return &fp;
......
...@@ -173,7 +173,7 @@ MODULE* FP_LIB_TABLE::FootprintLoad( const wxString& aNickname, const wxString& ...@@ -173,7 +173,7 @@ MODULE* FP_LIB_TABLE::FootprintLoad( const wxString& aNickname, const wxString&
FPID& fpid = (FPID&) ret->GetFPID(); FPID& fpid = (FPID&) ret->GetFPID();
// Catch any misbehaving plugin, which should be setting internal footprint name properly: // Catch any misbehaving plugin, which should be setting internal footprint name properly:
wxASSERT( aFootprintName == FROM_UTF8( fpid.GetFootprintName().c_str() ) ); wxASSERT( aFootprintName == (wxString) fpid.GetFootprintName() );
// and clearing nickname // and clearing nickname
wxASSERT( !fpid.GetLibNickname().size() ); wxASSERT( !fpid.GetLibNickname().size() );
...@@ -195,7 +195,7 @@ FP_LIB_TABLE::SAVE_T FP_LIB_TABLE::FootprintSave( const wxString& aNickname, con ...@@ -195,7 +195,7 @@ FP_LIB_TABLE::SAVE_T FP_LIB_TABLE::FootprintSave( const wxString& aNickname, con
// Try loading the footprint to see if it already exists, caller wants overwrite // Try loading the footprint to see if it already exists, caller wants overwrite
// protection, which is atypical, not the default. // protection, which is atypical, not the default.
wxString fpname = FROM_UTF8( aFootprint->GetFPID().GetFootprintName().c_str() ); wxString fpname = aFootprint->GetFPID().GetFootprintName();
std::auto_ptr<MODULE> m( row->plugin->FootprintLoad( row->GetFullURI( true ), fpname, row->GetProperties() ) ); std::auto_ptr<MODULE> m( row->plugin->FootprintLoad( row->GetFullURI( true ), fpname, row->GetProperties() ) );
...@@ -480,16 +480,17 @@ PROPERTIES* FP_LIB_TABLE::ParseOptions( const std::string& aOptionsList ) ...@@ -480,16 +480,17 @@ PROPERTIES* FP_LIB_TABLE::ParseOptions( const std::string& aOptionsList )
} }
std::string FP_LIB_TABLE::FormatOptions( const PROPERTIES* aProperties ) UTF8 FP_LIB_TABLE::FormatOptions( const PROPERTIES* aProperties )
{ {
std::string ret; UTF8 ret;
if( aProperties ) if( aProperties )
{ {
for( PROPERTIES::const_iterator it = aProperties->begin(); it != aProperties->end(); ++it ) for( PROPERTIES::const_iterator it = aProperties->begin(); it != aProperties->end(); ++it )
{ {
const std::string& name = it->first; const std::string& name = it->first;
const std::string& value = it->second;
const UTF8& value = it->second;
if( ret.size() ) if( ret.size() )
ret += OPT_SEP; ret += OPT_SEP;
...@@ -741,7 +742,7 @@ bool FP_LIB_TABLE::ConvertFromLegacy( NETLIST& aNetList, const wxArrayString& aL ...@@ -741,7 +742,7 @@ bool FP_LIB_TABLE::ConvertFromLegacy( NETLIST& aNetList, const wxArrayString& aL
{ {
if( aReporter ) if( aReporter )
{ {
msg.Printf( _( "Cannot find footprint library file \"%s\" in any of the " msg.Printf( _( "Cannot find footprint library file '%s' in any of the "
"KiCad legacy library search paths.\n" ), "KiCad legacy library search paths.\n" ),
GetChars( fn.GetFullPath() ) ); GetChars( fn.GetFullPath() ) );
aReporter->Report( msg ); aReporter->Report( msg );
...@@ -751,8 +752,7 @@ bool FP_LIB_TABLE::ConvertFromLegacy( NETLIST& aNetList, const wxArrayString& aL ...@@ -751,8 +752,7 @@ bool FP_LIB_TABLE::ConvertFromLegacy( NETLIST& aNetList, const wxArrayString& aL
continue; continue;
} }
module = pi->FootprintLoad( libPath, module = pi->FootprintLoad( libPath, component->GetFPID().GetFootprintName() );
FROM_UTF8( component->GetFPID().GetFootprintName().c_str() ) );
if( module ) if( module )
{ {
...@@ -766,10 +766,10 @@ bool FP_LIB_TABLE::ConvertFromLegacy( NETLIST& aNetList, const wxArrayString& aL ...@@ -766,10 +766,10 @@ bool FP_LIB_TABLE::ConvertFromLegacy( NETLIST& aNetList, const wxArrayString& aL
{ {
if( aReporter ) if( aReporter )
{ {
msg.Printf( _( "Component `%s` footprint <%s> was not found in any legacy " msg.Printf( _( "Component `%s` footprint '%s' was not found in any legacy "
"library.\n" ), "library.\n" ),
GetChars( component->GetReference() ), GetChars( component->GetReference() ),
GetChars( FROM_UTF8( component->GetFPID().Format().c_str() ) ) ); GetChars( component->GetFPID().Format() ) );
aReporter->Report( msg ); aReporter->Report( msg );
} }
...@@ -811,10 +811,10 @@ bool FP_LIB_TABLE::ConvertFromLegacy( NETLIST& aNetList, const wxArrayString& aL ...@@ -811,10 +811,10 @@ bool FP_LIB_TABLE::ConvertFromLegacy( NETLIST& aNetList, const wxArrayString& aL
{ {
if( aReporter ) if( aReporter )
{ {
msg.Printf( _( "Component `%s` footprint <%s> legacy library path <%s > " msg.Printf( _( "Component `%s` footprint '%s' legacy library path <%s > "
"was not found in the footprint library table.\n" ), "was not found in the footprint library table.\n" ),
GetChars( component->GetReference() ), GetChars( component->GetReference() ),
GetChars( FROM_UTF8( component->GetFPID().Format().c_str() ) ) ); GetChars( component->GetFPID().Format() ) );
aReporter->Report( msg ); aReporter->Report( msg );
} }
...@@ -830,9 +830,9 @@ bool FP_LIB_TABLE::ConvertFromLegacy( NETLIST& aNetList, const wxArrayString& aL ...@@ -830,9 +830,9 @@ bool FP_LIB_TABLE::ConvertFromLegacy( NETLIST& aNetList, const wxArrayString& aL
{ {
if( aReporter ) if( aReporter )
{ {
msg.Printf( _( "Component `%s` FPID <%s> is not valid.\n" ), msg.Printf( _( "Component `%s` FPID '%s' is not valid.\n" ),
GetChars( component->GetReference() ), GetChars( component->GetReference() ),
GetChars( FROM_UTF8( newFPID.Format().c_str() ) ) ); GetChars( newFPID.Format() ) );
aReporter->Report( msg ); aReporter->Report( msg );
} }
...@@ -860,7 +860,7 @@ void FP_LIB_TABLE::SetProjectPathEnvVariable( const wxFileName& aPath ) ...@@ -860,7 +860,7 @@ void FP_LIB_TABLE::SetProjectPathEnvVariable( const wxFileName& aPath )
else else
path = aPath.GetPath(); path = aPath.GetPath();
wxLogTrace( traceFpLibTable, wxT( "Setting env %s to <%s>." ), wxLogTrace( traceFpLibTable, wxT( "Setting env %s to '%s'." ),
GetChars( ProjectPathEnvVariableName() ), GetChars( path ) ); GetChars( ProjectPathEnvVariableName() ), GetChars( path ) );
wxSetEnv( ProjectPathEnvVariableName(), path ); wxSetEnv( ProjectPathEnvVariableName(), path );
} }
...@@ -899,7 +899,7 @@ wxString FP_LIB_TABLE::GetProjectFileName( const wxFileName& aPath ) ...@@ -899,7 +899,7 @@ wxString FP_LIB_TABLE::GetProjectFileName( const wxFileName& aPath )
fn.SetName( defaultFileName ); fn.SetName( defaultFileName );
} }
wxLogTrace( traceFpLibTable, wxT( "Project specific footprint library table file <%s>." ), wxLogTrace( traceFpLibTable, wxT( "Project specific footprint library table file '%s'." ),
GetChars( fn.GetFullPath() ) ); GetChars( fn.GetFullPath() ) );
return fn.GetFullPath(); return fn.GetFullPath();
...@@ -917,7 +917,7 @@ bool FP_LIB_TABLE::LoadGlobalTable( FP_LIB_TABLE& aTable ) throw (IO_ERROR, PARS ...@@ -917,7 +917,7 @@ bool FP_LIB_TABLE::LoadGlobalTable( FP_LIB_TABLE& aTable ) throw (IO_ERROR, PARS
if( !fn.DirExists() && !fn.Mkdir( 0x777, wxPATH_MKDIR_FULL ) ) if( !fn.DirExists() && !fn.Mkdir( 0x777, wxPATH_MKDIR_FULL ) )
{ {
THROW_IO_ERROR( wxString::Format( _( "Cannot create global library table path <%s>." ), THROW_IO_ERROR( wxString::Format( _( "Cannot create global library table path '%s'." ),
GetChars( fn.GetPath() ) ) ); GetChars( fn.GetPath() ) ) );
} }
...@@ -954,7 +954,7 @@ wxString FP_LIB_TABLE::GetGlobalTableFileName() ...@@ -954,7 +954,7 @@ wxString FP_LIB_TABLE::GetGlobalTableFileName()
fn.SetName( GetFileName() ); fn.SetName( GetFileName() );
wxLogTrace( traceFpLibTable, wxT( "Global footprint library table file <%s>." ), wxLogTrace( traceFpLibTable, wxT( "Global footprint library table file '%s'." ),
GetChars( fn.GetFullPath() ) ); GetChars( fn.GetFullPath() ) );
return fn.GetFullPath(); return fn.GetFullPath();
......
...@@ -265,9 +265,9 @@ int FPID::SetRevision( const std::string& aRevision ) ...@@ -265,9 +265,9 @@ int FPID::SetRevision( const std::string& aRevision )
} }
std::string FPID::Format() const UTF8 FPID::Format() const
{ {
std::string ret; UTF8 ret;
if( nickname.size() ) if( nickname.size() )
{ {
...@@ -287,9 +287,9 @@ std::string FPID::Format() const ...@@ -287,9 +287,9 @@ std::string FPID::Format() const
} }
std::string FPID::GetFootprintNameAndRev() const UTF8 FPID::GetFootprintNameAndRev() const
{ {
std::string ret; UTF8 ret;
if( revision.size() ) if( revision.size() )
{ {
...@@ -301,11 +301,11 @@ std::string FPID::GetFootprintNameAndRev() const ...@@ -301,11 +301,11 @@ std::string FPID::GetFootprintNameAndRev() const
} }
std::string FPID::Format( const std::string& aLogicalLib, const std::string& aFootprintName, UTF8 FPID::Format( const std::string& aLogicalLib, const std::string& aFootprintName,
const std::string& aRevision ) const std::string& aRevision )
throw( PARSE_ERROR ) throw( PARSE_ERROR )
{ {
std::string ret; UTF8 ret;
int offset; int offset;
if( aLogicalLib.size() ) if( aLogicalLib.size() )
......
...@@ -147,7 +147,7 @@ BOX2D STROKE_FONT::computeBoundingBox( const GLYPH& aGLYPH, const VECTOR2D& aGLY ...@@ -147,7 +147,7 @@ BOX2D STROKE_FONT::computeBoundingBox( const GLYPH& aGLYPH, const VECTOR2D& aGLY
} }
void STROKE_FONT::Draw( const wxString& aText, const VECTOR2D& aPosition, double aRotationAngle ) void STROKE_FONT::Draw( const UTF8& aText, const VECTOR2D& aPosition, double aRotationAngle )
{ {
// Context needs to be saved before any transformations // Context needs to be saved before any transformations
m_gal->Save(); m_gal->Save();
...@@ -192,7 +192,7 @@ void STROKE_FONT::Draw( const wxString& aText, const VECTOR2D& aPosition, double ...@@ -192,7 +192,7 @@ void STROKE_FONT::Draw( const wxString& aText, const VECTOR2D& aPosition, double
{ {
size_t length = newlinePos - begin; size_t length = newlinePos - begin;
drawSingleLineText( aText.Mid( begin, length ) ); drawSingleLineText( aText.substr( begin, length ) );
m_gal->Translate( VECTOR2D( 0.0, lineHeight ) ); m_gal->Translate( VECTOR2D( 0.0, lineHeight ) );
begin = newlinePos + 1; begin = newlinePos + 1;
...@@ -200,20 +200,20 @@ void STROKE_FONT::Draw( const wxString& aText, const VECTOR2D& aPosition, double ...@@ -200,20 +200,20 @@ void STROKE_FONT::Draw( const wxString& aText, const VECTOR2D& aPosition, double
} }
// Draw the last (or the only one) line // Draw the last (or the only one) line
if( !aText.IsEmpty() ) if( !aText.empty() )
drawSingleLineText( aText.Mid( begin ) ); drawSingleLineText( aText.substr( begin ) );
m_gal->Restore(); m_gal->Restore();
} }
void STROKE_FONT::drawSingleLineText( const wxString& aText ) void STROKE_FONT::drawSingleLineText( const UTF8& aText )
{ {
// By default the overbar is turned off // By default the overbar is turned off
m_overbar = false; m_overbar = false;
double xOffset; double xOffset;
VECTOR2D glyphSize( m_glyphSize ); VECTOR2D glyphSize( m_glyphSize );
// Compute the text size // Compute the text size
VECTOR2D textSize = computeTextSize( aText ); VECTOR2D textSize = computeTextSize( aText );
...@@ -254,12 +254,12 @@ void STROKE_FONT::drawSingleLineText( const wxString& aText ) ...@@ -254,12 +254,12 @@ void STROKE_FONT::drawSingleLineText( const wxString& aText )
xOffset = 0.0; xOffset = 0.0;
} }
for( wxString::const_iterator chIt = aText.begin(); chIt != aText.end(); ++chIt ) for( UTF8::uni_iter chIt = aText.ubegin(), end = aText.uend(); chIt < end; ++chIt )
{ {
// Toggle overbar // Toggle overbar
if( *chIt == '~' ) if( *chIt == '~' )
{ {
if( ++chIt == aText.end() ) if( ++chIt >= end )
break; break;
if( *chIt != '~' ) // It was a single tilda, it toggles overbar if( *chIt != '~' ) // It was a single tilda, it toggles overbar
...@@ -274,13 +274,14 @@ void STROKE_FONT::drawSingleLineText( const wxString& aText ) ...@@ -274,13 +274,14 @@ void STROKE_FONT::drawSingleLineText( const wxString& aText )
dd = '?' - ' '; dd = '?' - ' ';
GLYPH& glyph = m_glyphs[dd]; GLYPH& glyph = m_glyphs[dd];
BOX2D& bbox = m_glyphBoundingBoxes[dd]; BOX2D& bbox = m_glyphBoundingBoxes[dd];
if( m_overbar ) if( m_overbar )
{ {
VECTOR2D startOverbar( xOffset, -getInterline() * OVERBAR_HEIGHT ); VECTOR2D startOverbar( xOffset, -getInterline() * OVERBAR_HEIGHT );
VECTOR2D endOverbar( xOffset + glyphSize.x * bbox.GetEnd().x, VECTOR2D endOverbar( xOffset + glyphSize.x * bbox.GetEnd().x,
-getInterline() * OVERBAR_HEIGHT ); -getInterline() * OVERBAR_HEIGHT );
m_gal->DrawLine( startOverbar, endOverbar ); m_gal->DrawLine( startOverbar, endOverbar );
} }
...@@ -317,25 +318,25 @@ void STROKE_FONT::drawSingleLineText( const wxString& aText ) ...@@ -317,25 +318,25 @@ void STROKE_FONT::drawSingleLineText( const wxString& aText )
} }
VECTOR2D STROKE_FONT::computeTextSize( const wxString& aText ) const VECTOR2D STROKE_FONT::computeTextSize( const UTF8& aText ) const
{ {
VECTOR2D result = VECTOR2D( 0.0, m_glyphSize.y ); VECTOR2D result = VECTOR2D( 0.0, m_glyphSize.y );
for( wxString::const_iterator chIt = aText.begin(); chIt != aText.end(); ++chIt ) for( UTF8::uni_iter it = aText.ubegin(), end = aText.uend(); it < end; ++it )
{ {
wxASSERT_MSG( *chIt != '\n', wxASSERT_MSG( *it != '\n',
wxT( "This function is intended to work with single line strings" ) ); wxT( "This function is intended to work with single line strings" ) );
// If it is double tilda, then it is displayed as a single tilda // If it is double tilda, then it is displayed as a single tilda
// If it is single tilda, then it is toggling overbar, so we need to skip it // If it is single tilda, then it is toggling overbar, so we need to skip it
if( *chIt == '~' ) if( *it == '~' )
{ {
if( ++chIt == aText.end() ) if( ++it >= end )
break; break;
} }
// Index in the bounding boxes table // Index in the bounding boxes table
unsigned dd = *chIt - ' '; unsigned dd = *it - ' ';
if( dd >= m_glyphBoundingBoxes.size() || dd < 0 ) if( dd >= m_glyphBoundingBoxes.size() || dd < 0 )
dd = '?' - ' '; dd = '?' - ' ';
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#include <utf8.h> #include <utf8.h>
/* THROW_IO_ERROR needs this, but it will soon be including this file, so until some /* THROW_IO_ERROR needs this, but it includes this file, so until some
factoring of THROW_IO_ERROR into a separate header, defer and use the asserts. factoring of THROW_IO_ERROR into a separate header, defer and use the asserts.
#include <richio.h> #include <richio.h>
*/ */
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
/* /*
These are not inlined so that code space is saved by encapsulating the These are not inlined so that code space is saved by encapsulating the
creation of intermediate objects and referencing wxConvUTF8. creation of intermediate objects and the referencing of wxConvUTF8.
*/ */
......
...@@ -339,7 +339,7 @@ public: ...@@ -339,7 +339,7 @@ public:
* @param aProperties is the PROPERTIES to format or NULL. If NULL the returned * @param aProperties is the PROPERTIES to format or NULL. If NULL the returned
* string will be empty. * string will be empty.
*/ */
static std::string FormatOptions( const PROPERTIES* aProperties ); static UTF8 FormatOptions( const PROPERTIES* aProperties );
/** /**
* Function Format * Function Format
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
#define _FPID_H_ #define _FPID_H_
#include <richio.h> #include <richio.h>
#include <utf8.h>
/** /**
* Class FPID * Class FPID
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
* *
* @author Dick Hollenbeck * @author Dick Hollenbeck
*/ */
class FPID // aka GUID class FPID
{ {
public: public:
...@@ -88,7 +88,7 @@ public: ...@@ -88,7 +88,7 @@ public:
* Function GetLibNickname * Function GetLibNickname
* returns the logical library name portion of a FPID. * returns the logical library name portion of a FPID.
*/ */
const std::string& GetLibNickname() const const UTF8& GetLibNickname() const
{ {
return nickname; return nickname;
} }
...@@ -108,7 +108,7 @@ public: ...@@ -108,7 +108,7 @@ public:
* Function GetFootprintName * Function GetFootprintName
* returns the footprint name, i.e. footprintName. * returns the footprint name, i.e. footprintName.
*/ */
const std::string& GetFootprintName() const { return footprint; } const UTF8& GetFootprintName() const { return footprint; }
/** /**
* Function SetFootprintName * Function SetFootprintName
...@@ -120,15 +120,15 @@ public: ...@@ -120,15 +120,15 @@ public:
int SetRevision( const std::string& aRevision ); int SetRevision( const std::string& aRevision );
const std::string& GetRevision() const { return revision; } const UTF8& GetRevision() const { return revision; }
std::string GetFootprintNameAndRev() const; UTF8 GetFootprintNameAndRev() const;
/** /**
* Function Format * Function Format
* returns the fully formatted text of the FPID. * returns the fully formatted text of the FPID.
*/ */
std::string Format() const; UTF8 Format() const;
/** /**
* Function Format * Function Format
...@@ -137,7 +137,7 @@ public: ...@@ -137,7 +137,7 @@ public:
* *
* @throw PARSE_ERROR if any of the pieces are illegal. * @throw PARSE_ERROR if any of the pieces are illegal.
*/ */
static std::string Format( const std::string& aLibNickname, const std::string& aFootprintName, static UTF8 Format( const std::string& aLibNickname, const std::string& aFootprintName,
const std::string& aRevision ) const std::string& aRevision )
throw( PARSE_ERROR ); throw( PARSE_ERROR );
...@@ -182,8 +182,8 @@ public: ...@@ -182,8 +182,8 @@ public:
*/ */
int compare( const FPID& aFPID ) const; int compare( const FPID& aFPID ) const;
bool operator <( const FPID& aFPID ) const { return this->compare( aFPID ) < 0; } bool operator < ( const FPID& aFPID ) const { return this->compare( aFPID ) < 0; }
bool operator >( const FPID& aFPID ) const { return this->compare( aFPID ) > 0; } bool operator > ( const FPID& aFPID ) const { return this->compare( aFPID ) > 0; }
bool operator ==( const FPID& aFPID ) const { return this->compare( aFPID ) == 0; } bool operator ==( const FPID& aFPID ) const { return this->compare( aFPID ) == 0; }
bool operator !=( const FPID& aFPID ) const { return !(*this == aFPID); } bool operator !=( const FPID& aFPID ) const { return !(*this == aFPID); }
...@@ -192,9 +192,9 @@ public: ...@@ -192,9 +192,9 @@ public:
#endif #endif
protected: protected:
std::string nickname; ///< The nickname of the footprint library or empty. UTF8 nickname; ///< The nickname of the footprint library or empty.
std::string footprint; ///< The name of the footprint in the logical library. UTF8 footprint; ///< The name of the footprint in the logical library.
std::string revision; ///< The footprint revision. UTF8 revision; ///< The footprint revision.
}; };
......
...@@ -29,8 +29,8 @@ ...@@ -29,8 +29,8 @@
#ifndef STROKE_FONT_H_ #ifndef STROKE_FONT_H_
#define STROKE_FONT_H_ #define STROKE_FONT_H_
#include <string>
#include <deque> #include <deque>
#include <utf8.h>
#include <eda_text.h> #include <eda_text.h>
...@@ -70,7 +70,7 @@ public: ...@@ -70,7 +70,7 @@ public:
* @param aPosition is the text position in world coordinates. * @param aPosition is the text position in world coordinates.
* @param aRotationAngle is the text rotation angle. * @param aRotationAngle is the text rotation angle.
*/ */
void Draw( const wxString& aText, const VECTOR2D& aPosition, double aRotationAngle ); void Draw( const UTF8& aText, const VECTOR2D& aPosition, double aRotationAngle );
/** /**
* @brief Set the glyph size. * @brief Set the glyph size.
...@@ -173,7 +173,7 @@ private: ...@@ -173,7 +173,7 @@ private:
* *
* @param aText is the text to be drawn. * @param aText is the text to be drawn.
*/ */
void drawSingleLineText( const wxString& aText ); void drawSingleLineText( const UTF8& aText );
/** /**
* @brief Compute the size of a given text. * @brief Compute the size of a given text.
...@@ -181,20 +181,19 @@ private: ...@@ -181,20 +181,19 @@ private:
* @param aText is the text string. * @param aText is the text string.
* @return is the text size. * @return is the text size.
*/ */
VECTOR2D computeTextSize( const wxString& aText ) const; VECTOR2D computeTextSize( const UTF8& aText ) const;
/** /**
* @brief Returns number of lines for a given text. * @brief Returns number of lines for a given text.
* *
* @param aText is the text to be checked. * @param aText is the text to be checked.
* @return Number of lines of aText. * @return unsigned - The number of lines in aText.
*/ */
unsigned int linesCount( const wxString& aText ) const unsigned linesCount( const UTF8& aText ) const
{ {
wxString::const_iterator it, itEnd; unsigned lines = 1;
unsigned int lines = 1;
for( it = aText.begin(), itEnd = aText.end(); it != itEnd; ++it ) for( UTF8::const_iterator it = aText.begin(), itEnd = aText.end(); it != itEnd; ++it )
{ {
if( *it == '\n' ) if( *it == '\n' )
++lines; ++lines;
...@@ -214,4 +213,4 @@ private: ...@@ -214,4 +213,4 @@ private:
}; };
} // namespace KIGFX } // namespace KIGFX
#endif /* STROKE_FONT_H_ */ #endif // STROKE_FONT_H_
...@@ -29,8 +29,8 @@ ...@@ -29,8 +29,8 @@
// "richio" after its author, Richard Hollenbeck, aka Dick Hollenbeck. // "richio" after its author, Richard Hollenbeck, aka Dick Hollenbeck.
#include <string>
#include <vector> #include <vector>
#include <utf8.h>
// I really did not want to be dependent on wxWidgets in richio // I really did not want to be dependent on wxWidgets in richio
// but the errorText needs to be wide char so wxString rules. // but the errorText needs to be wide char so wxString rules.
......
...@@ -83,6 +83,23 @@ public: ...@@ -83,6 +83,23 @@ public:
return *this; return *this;
} }
UTF8& operator=( const char* s )
{
std::string::operator=( s );
return *this;
}
UTF8& operator=( char c )
{
std::string::operator=( c );
return *this;
}
UTF8 substr( size_t pos = 0, size_t len = npos ) const
{
return std::string::substr( pos, len );
}
operator wxString () const; operator wxString () const;
/// This one is not in std::string, and one wonders why... might be a solid /// This one is not in std::string, and one wonders why... might be a solid
......
...@@ -2447,7 +2447,7 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets, ...@@ -2447,7 +2447,7 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets,
msg.Printf( _( "Checking netlist component footprint \"%s:%s:%s\".\n" ), msg.Printf( _( "Checking netlist component footprint \"%s:%s:%s\".\n" ),
GetChars( component->GetReference() ), GetChars( component->GetReference() ),
GetChars( component->GetTimeStamp() ), GetChars( component->GetTimeStamp() ),
GetChars( FROM_UTF8( component->GetFPID().Format().c_str() ) ) ); GetChars( component->GetFPID().Format() ) );
aReporter->Report( msg ); aReporter->Report( msg );
} }
...@@ -2465,7 +2465,7 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets, ...@@ -2465,7 +2465,7 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets,
msg.Printf( _( "Adding new component \"%s:%s\" footprint \"%s\".\n" ), msg.Printf( _( "Adding new component \"%s:%s\" footprint \"%s\".\n" ),
GetChars( component->GetReference() ), GetChars( component->GetReference() ),
GetChars( component->GetTimeStamp() ), GetChars( component->GetTimeStamp() ),
GetChars( FROM_UTF8( component->GetFPID().Format().c_str() ) ) ); GetChars( component->GetFPID().Format() ) );
if( aReporter->ReportWarnings() ) if( aReporter->ReportWarnings() )
aReporter->Report( msg ); aReporter->Report( msg );
...@@ -2476,7 +2476,7 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets, ...@@ -2476,7 +2476,7 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets,
"footprint \"%s\".\n" ), "footprint \"%s\".\n" ),
GetChars( component->GetReference() ), GetChars( component->GetReference() ),
GetChars( component->GetTimeStamp() ), GetChars( component->GetTimeStamp() ),
GetChars( FROM_UTF8( component->GetFPID().Format().c_str() ) ) ); GetChars( component->GetFPID().Format() ) );
if( aReporter->ReportErrors() ) if( aReporter->ReportErrors() )
aReporter->Report( msg ); aReporter->Report( msg );
...@@ -2509,8 +2509,8 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets, ...@@ -2509,8 +2509,8 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets,
"\"%s\".\n" ), "\"%s\".\n" ),
GetChars( footprint->GetReference() ), GetChars( footprint->GetReference() ),
GetChars( footprint->GetPath() ), GetChars( footprint->GetPath() ),
GetChars( FROM_UTF8( footprint->GetFPID().Format().c_str() ) ), GetChars( footprint->GetFPID().Format() ),
GetChars( FROM_UTF8( component->GetFPID().Format().c_str() ) ) ); GetChars( component->GetFPID().Format() ) );
if( aReporter->ReportWarnings() ) if( aReporter->ReportWarnings() )
aReporter->Report( msg ); aReporter->Report( msg );
...@@ -2521,7 +2521,7 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets, ...@@ -2521,7 +2521,7 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets,
"footprint \"%s\".\n" ), "footprint \"%s\".\n" ),
GetChars( footprint->GetReference() ), GetChars( footprint->GetReference() ),
GetChars( footprint->GetPath() ), GetChars( footprint->GetPath() ),
GetChars( FROM_UTF8( component->GetFPID().Format().c_str() ) ) ); GetChars( component->GetFPID().Format() ) );
if( aReporter->ReportErrors() ) if( aReporter->ReportErrors() )
aReporter->Report( msg ); aReporter->Report( msg );
...@@ -2755,7 +2755,7 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets, ...@@ -2755,7 +2755,7 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets,
msg.Printf( _( "** Error: Component \"%s\" pad '%s' not found in footprint \"%s\" **\n" ), msg.Printf( _( "** Error: Component \"%s\" pad '%s' not found in footprint \"%s\" **\n" ),
GetChars( component->GetReference() ), GetChars( component->GetReference() ),
GetChars( padname ), GetChars( padname ),
footprint->GetFPID().Format().c_str() ); GetChars( footprint->GetFPID().Format() ) );
aReporter->Report( msg ); aReporter->Report( msg );
} }
} }
......
...@@ -117,7 +117,7 @@ void DIALOG_MODULE_MODULE_EDITOR::initModeditProperties() ...@@ -117,7 +117,7 @@ void DIALOG_MODULE_MODULE_EDITOR::initModeditProperties()
m_ReferenceCtrl->SetValue( m_referenceCopy->GetText() ); m_ReferenceCtrl->SetValue( m_referenceCopy->GetText() );
m_ValueCtrl->SetValue( m_valueCopy->GetText() ); m_ValueCtrl->SetValue( m_valueCopy->GetText() );
m_ValueCtrl->SetValue( m_valueCopy->GetText() ); m_ValueCtrl->SetValue( m_valueCopy->GetText() );
m_FootprintNameCtrl->SetValue( FROM_UTF8( m_currentModule->GetFPID().Format().c_str() ) ); m_FootprintNameCtrl->SetValue( m_currentModule->GetFPID().Format() );
m_AttributsCtrl->SetItemToolTip( 0, _( "Use this attribute for most non SMD components" ) ); m_AttributsCtrl->SetItemToolTip( 0, _( "Use this attribute for most non SMD components" ) );
m_AttributsCtrl->SetItemToolTip( 1, m_AttributsCtrl->SetItemToolTip( 1,
......
...@@ -84,7 +84,7 @@ public: ...@@ -84,7 +84,7 @@ public:
for( PROPERTIES::const_iterator it = props->begin(); it != props->end(); ++it, ++row ) for( PROPERTIES::const_iterator it = props->begin(); it != props->end(); ++it, ++row )
{ {
m_grid->SetCellValue( row, 0, FROM_UTF8( it->first.c_str() ) ); m_grid->SetCellValue( row, 0, FROM_UTF8( it->first.c_str() ) );
m_grid->SetCellValue( row, 1, FROM_UTF8( it->second.c_str() ) ); m_grid->SetCellValue( row, 1, it->second );
} }
delete props; delete props;
...@@ -184,7 +184,7 @@ private: ...@@ -184,7 +184,7 @@ private:
for( int row = 0; row<rowCount; ++row ) for( int row = 0; row<rowCount; ++row )
{ {
string name = TO_UTF8( m_grid->GetCellValue( row, 0 ).Trim( false ).Trim() ); string name = TO_UTF8( m_grid->GetCellValue( row, 0 ).Trim( false ).Trim() );
string value = TO_UTF8( m_grid->GetCellValue( row, 1 ).Trim( false ).Trim() ); UTF8 value = m_grid->GetCellValue( row, 1 ).Trim( false ).Trim();
if( name.size() ) if( name.size() )
{ {
...@@ -192,9 +192,7 @@ private: ...@@ -192,9 +192,7 @@ private:
} }
} }
string options = FP_LIB_TABLE::FormatOptions( &props ); return FP_LIB_TABLE::FormatOptions( &props );
return FROM_UTF8( options.c_str() );
} }
void saveColSizes() void saveColSizes()
...@@ -261,11 +259,11 @@ private: ...@@ -261,11 +259,11 @@ private:
if( event.IsSelection() ) if( event.IsSelection() )
{ {
string option = TO_UTF8( event.GetString() ); string option = TO_UTF8( event.GetString() );
string help_text; UTF8 help_text;
if( m_choices.Value( option.c_str(), &help_text ) ) if( m_choices.Value( option.c_str(), &help_text ) )
{ {
wxString page = FROM_UTF8( help_text.c_str() ); wxString page = help_text;
m_html->SetPage( page ); m_html->SetPage( page );
} }
......
...@@ -2711,8 +2711,8 @@ void EAGLE_PLUGIN::centerBoard() ...@@ -2711,8 +2711,8 @@ void EAGLE_PLUGIN::centerBoard()
{ {
if( m_props ) if( m_props )
{ {
string page_width; UTF8 page_width;
string page_height; UTF8 page_height;
if( m_props->Value( "page_width", &page_width ) && if( m_props->Value( "page_width", &page_width ) &&
m_props->Value( "page_height", &page_height ) ) m_props->Value( "page_height", &page_height ) )
...@@ -2873,10 +2873,10 @@ void EAGLE_PLUGIN::FootprintLibOptions( PROPERTIES* aListToAppendTo ) const ...@@ -2873,10 +2873,10 @@ void EAGLE_PLUGIN::FootprintLibOptions( PROPERTIES* aListToAppendTo ) const
PLUGIN::FootprintLibOptions( aListToAppendTo ); PLUGIN::FootprintLibOptions( aListToAppendTo );
/* /*
(*aListToAppendTo)["ignore_duplicates"] = wxString( _( (*aListToAppendTo)["ignore_duplicates"] = UTF8( _(
"Ignore duplicately named footprints within the same Eagle library. " "Ignore duplicately named footprints within the same Eagle library. "
"Only the first similarly named footprint will be loaded." "Only the first similarly named footprint will be loaded."
)).utf8_str(); ));
*/ */
} }
......
...@@ -479,9 +479,11 @@ int PCB_EDIT_FRAME::DoGenFootprintsPositionFile( const wxString& aFullFileName, ...@@ -479,9 +479,11 @@ int PCB_EDIT_FRAME::DoGenFootprintsPositionFile( const wxString& aFullFileName,
for( int ii = 0; ii < moduleCount; ii++ ) for( int ii = 0; ii < moduleCount; ii++ )
{ {
wxPoint module_pos; wxPoint module_pos;
const wxString& ref = list[ii].m_Reference; const wxString& ref = list[ii].m_Reference;
const wxString& val = list[ii].m_Value; const wxString& val = list[ii].m_Value;
const wxString& pkg = FROM_UTF8( list[ii].m_Module->GetFPID().Format().c_str() ); const wxString& pkg = list[ii].m_Module->GetFPID().Format();
sprintf( line, "%-8.8s %-16.16s %-16.16s", sprintf( line, "%-8.8s %-16.16s %-16.16s",
TO_UTF8( ref ), TO_UTF8( val ), TO_UTF8( pkg ) ); TO_UTF8( ref ), TO_UTF8( val ), TO_UTF8( pkg ) );
......
...@@ -166,7 +166,7 @@ MODULE* GITHUB_PLUGIN::FootprintLoad( const wxString& aLibraryPath, ...@@ -166,7 +166,7 @@ MODULE* GITHUB_PLUGIN::FootprintLoad( const wxString& aLibraryPath,
} }
} }
string fp_name = TO_UTF8( aFootprintName ); UTF8 fp_name = aFootprintName;
MODULE_CITER it = m_gh_cache->find( fp_name ); MODULE_CITER it = m_gh_cache->find( fp_name );
...@@ -321,20 +321,20 @@ void GITHUB_PLUGIN::FootprintLibOptions( PROPERTIES* aListToAppendTo ) const ...@@ -321,20 +321,20 @@ void GITHUB_PLUGIN::FootprintLibOptions( PROPERTIES* aListToAppendTo ) const
// inherit options supported by all PLUGINs. // inherit options supported by all PLUGINs.
PLUGIN::FootprintLibOptions( aListToAppendTo ); PLUGIN::FootprintLibOptions( aListToAppendTo );
(*aListToAppendTo)[ PRETTY_DIR ] = wxString( _( (*aListToAppendTo)[ PRETTY_DIR ] = UTF8( _(
"Set this property to a directory where footprints are to be written as pretty " "Set this property to a directory where footprints are to be written as pretty "
"footprints when saving to this library. Anything saved will take precedence over " "footprints when saving to this library. Anything saved will take precedence over "
"footprints by the same name in the github repo. These saved footprints can then " "footprints by the same name in the github repo. These saved footprints can then "
"be sent to the library maintainer as updates. " "be sent to the library maintainer as updates. "
"<p>The directory <b>must</b> have a <b>.pretty</b> file extension because the " "<p>The directory <b>must</b> have a <b>.pretty</b> file extension because the "
"format of the save is pretty.</p>" "format of the save is pretty.</p>"
)).utf8_str(); ));
/* /*
(*aListToAppendTo)["cache_github_zip_in_this_dir"] = wxString( _( (*aListToAppendTo)["cache_github_zip_in_this_dir"] = UTF8( _(
"Set this property to a directory where the github *.zip file will be cached. " "Set this property to a directory where the github *.zip file will be cached. "
"This should speed up subsequent visits to this library." "This should speed up subsequent visits to this library."
)).utf8_str(); ));
*/ */
} }
...@@ -356,11 +356,11 @@ void GITHUB_PLUGIN::cacheLib( const wxString& aLibraryPath, const PROPERTIES* aP ...@@ -356,11 +356,11 @@ void GITHUB_PLUGIN::cacheLib( const wxString& aLibraryPath, const PROPERTIES* aP
if( aProperties ) if( aProperties )
{ {
string pretty_dir; UTF8 pretty_dir;
if( aProperties->Value( PRETTY_DIR, &pretty_dir ) ) if( aProperties->Value( PRETTY_DIR, &pretty_dir ) )
{ {
wxString wx_pretty_dir = FROM_UTF8( pretty_dir.c_str() ); wxString wx_pretty_dir = pretty_dir;
wx_pretty_dir = FP_LIB_TABLE::ExpandSubstitutions( wx_pretty_dir ); wx_pretty_dir = FP_LIB_TABLE::ExpandSubstitutions( wx_pretty_dir );
...@@ -409,7 +409,7 @@ void GITHUB_PLUGIN::cacheLib( const wxString& aLibraryPath, const PROPERTIES* aP ...@@ -409,7 +409,7 @@ void GITHUB_PLUGIN::cacheLib( const wxString& aLibraryPath, const PROPERTIES* aP
if( fn.GetExt() == kicad_mod ) if( fn.GetExt() == kicad_mod )
{ {
string fp_name = TO_UTF8( fn.GetName() ); // omit extension & path UTF8 fp_name = fn.GetName(); // omit extension & path
m_gh_cache->insert( fp_name, entry ); m_gh_cache->insert( fp_name, entry );
} }
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
// is there a better place for this function? // is there a better place for this function?
bool PROPERTIES::Value( const char* aName, std::string* aFetchedValue ) const bool PROPERTIES::Value( const char* aName, UTF8* aFetchedValue ) const
{ {
PROPERTIES::const_iterator it = find( aName ); PROPERTIES::const_iterator it = find( aName );
......
...@@ -38,7 +38,7 @@ class MODULE; ...@@ -38,7 +38,7 @@ class MODULE;
* is a name/value tuple with unique names and optional values. The names * is a name/value tuple with unique names and optional values. The names
* may be iterated alphabetically. * may be iterated alphabetically.
*/ */
class PROPERTIES : public std::map< std::string, std::string > class PROPERTIES : public std::map< std::string, UTF8 >
{ {
// alphabetical tuple of name and value hereby defined. // alphabetical tuple of name and value hereby defined.
...@@ -53,7 +53,7 @@ public: ...@@ -53,7 +53,7 @@ public:
* exists and aFetchedValue is not NULL. * exists and aFetchedValue is not NULL.
* @return bool - true if property is found, else false. * @return bool - true if property is found, else false.
*/ */
bool Value( const char* aName, std::string* aFetchedValue = NULL ) const; bool Value( const char* aName, UTF8* aFetchedValue = NULL ) const;
}; };
......
...@@ -1782,8 +1782,7 @@ void PCB_IO::FootprintSave( const wxString& aLibraryPath, const MODULE* aFootpri ...@@ -1782,8 +1782,7 @@ void PCB_IO::FootprintSave( const wxString& aLibraryPath, const MODULE* aFootpri
MODULE_MAP& mods = m_cache->GetModules(); MODULE_MAP& mods = m_cache->GetModules();
// Quietly overwrite module and delete module file from path for any by same name. // Quietly overwrite module and delete module file from path for any by same name.
wxFileName fn( aLibraryPath, FROM_UTF8( aFootprint->GetFPID().GetFootprintName().c_str() ), wxFileName fn( aLibraryPath, aFootprint->GetFPID().GetFootprintName(), KiCadFootprintFileExtension );
KiCadFootprintFileExtension );
if( !fn.IsOk() ) if( !fn.IsOk() )
{ {
......
...@@ -1144,8 +1144,9 @@ void LEGACY_PLUGIN::LoadMODULE( MODULE* aModule ) ...@@ -1144,8 +1144,9 @@ void LEGACY_PLUGIN::LoadMODULE( MODULE* aModule )
} }
} }
wxString msg = wxString::Format( wxT( "Missing '$EndMODULE' for MODULE '%s'" ), wxString msg = wxString::Format(
aModule->GetFPID().GetFootprintName().c_str() ); wxT( "Missing '$EndMODULE' for MODULE '%s'" ),
GetChars( aModule->GetFPID().GetFootprintName() ) );
THROW_IO_ERROR( msg ); THROW_IO_ERROR( msg );
} }
...@@ -1200,7 +1201,7 @@ void LEGACY_PLUGIN::loadPAD( MODULE* aModule ) ...@@ -1200,7 +1201,7 @@ void LEGACY_PLUGIN::loadPAD( MODULE* aModule )
padchar, padchar,
padchar, padchar,
m_reader->LineNumber(), m_reader->LineNumber(),
aModule->GetFPID().GetFootprintName().c_str() GetChars( aModule->GetFPID().GetFootprintName() )
); );
THROW_IO_ERROR( m_error ); THROW_IO_ERROR( m_error );
} }
...@@ -1401,7 +1402,7 @@ void LEGACY_PLUGIN::loadMODULE_EDGE( MODULE* aModule ) ...@@ -1401,7 +1402,7 @@ void LEGACY_PLUGIN::loadMODULE_EDGE( MODULE* aModule )
(unsigned char) line[1], (unsigned char) line[1],
(unsigned char) line[1], (unsigned char) line[1],
m_reader->LineNumber(), m_reader->LineNumber(),
aModule->GetFPID().GetFootprintName().c_str() GetChars( aModule->GetFPID().GetFootprintName() )
); );
THROW_IO_ERROR( m_error ); THROW_IO_ERROR( m_error );
} }
......
...@@ -285,7 +285,7 @@ void FOOTPRINT_EDIT_FRAME::Export_Module( MODULE* aModule ) ...@@ -285,7 +285,7 @@ void FOOTPRINT_EDIT_FRAME::Export_Module( MODULE* aModule )
if( aModule == NULL ) if( aModule == NULL )
return; return;
fn.SetName( FROM_UTF8( aModule->GetFPID().GetFootprintName().c_str() ) ); fn.SetName( aModule->GetFPID().GetFootprintName() );
wxString wildcard = wxGetTranslation( KiCadFootprintLibFileWildcard ); wxString wildcard = wxGetTranslation( KiCadFootprintLibFileWildcard );
...@@ -485,7 +485,7 @@ bool FOOTPRINT_EDIT_FRAME::DeleteModuleFromCurrentLibrary() ...@@ -485,7 +485,7 @@ bool FOOTPRINT_EDIT_FRAME::DeleteModuleFromCurrentLibrary()
return false; return false;
FPID fpid( fpid_txt ); FPID fpid( fpid_txt );
wxString fpname = FROM_UTF8( fpid.GetFootprintName().c_str() ); wxString fpname = fpid.GetFootprintName();
// Confirmation // Confirmation
wxString msg = wxString::Format( FMT_OK_DELETE, fpname.GetData(), nickname.GetData() ); wxString msg = wxString::Format( FMT_OK_DELETE, fpname.GetData(), nickname.GetData() );
...@@ -581,7 +581,7 @@ bool PCB_BASE_FRAME::Save_Module_In_Library( const wxString& aLibrary, ...@@ -581,7 +581,7 @@ bool PCB_BASE_FRAME::Save_Module_In_Library( const wxString& aLibrary,
SetMsgPanel( aModule ); SetMsgPanel( aModule );
// Ask what to use as the footprint name in the library // Ask what to use as the footprint name in the library
wxString footprintName = FROM_UTF8( aModule->GetFPID().GetFootprintName().c_str() ); wxString footprintName = aModule->GetFPID().GetFootprintName();
if( aDisplayDialog ) if( aDisplayDialog )
{ {
......
...@@ -451,8 +451,8 @@ MODULE* PCB_BASE_FRAME::loadFootprint( const FPID& aFootprintId ) ...@@ -451,8 +451,8 @@ MODULE* PCB_BASE_FRAME::loadFootprint( const FPID& aFootprintId )
wxCHECK_MSG( m_footprintLibTable != NULL, NULL, wxCHECK_MSG( m_footprintLibTable != NULL, NULL,
wxT( "Cannot look up FPID in NULL FP_LIB_TABLE." ) ); wxT( "Cannot look up FPID in NULL FP_LIB_TABLE." ) );
wxString nickname = FROM_UTF8( aFootprintId.GetLibNickname().c_str() ); wxString nickname = aFootprintId.GetLibNickname();
wxString fpname = FROM_UTF8( aFootprintId.GetFootprintName().c_str() ); wxString fpname = aFootprintId.GetFootprintName();
if( nickname.size() ) if( nickname.size() )
{ {
......
...@@ -114,34 +114,34 @@ void PLUGIN::FootprintLibOptions( PROPERTIES* aListToAppendTo ) const ...@@ -114,34 +114,34 @@ void PLUGIN::FootprintLibOptions( PROPERTIES* aListToAppendTo ) const
{ {
// disable all these in another couple of months, after everyone has seen them: // disable all these in another couple of months, after everyone has seen them:
#if 1 #if 1
(*aListToAppendTo)["debug_level"] = wxString( _( (*aListToAppendTo)["debug_level"] = UTF8( _(
"Enable <b>debug</b> logging for Footprint*() functions in this PLUGIN." "Enable <b>debug</b> logging for Footprint*() functions in this PLUGIN."
)).utf8_str(); ));
(*aListToAppendTo)["read_filter_regex"] = wxString( _( (*aListToAppendTo)["read_filter_regex"] = UTF8( _(
"Regular expression <b>footprint name</b> filter." "Regular expression <b>footprint name</b> filter."
)).utf8_str(); ));
(*aListToAppendTo)["enable_transaction_logging"] = wxString( _( (*aListToAppendTo)["enable_transaction_logging"] = UTF8( _(
"Enable transaction logging. The mere presence of this option turns on the " "Enable transaction logging. The mere presence of this option turns on the "
" logging, no need to set a Value." " logging, no need to set a Value."
)).utf8_str(); ));
(*aListToAppendTo)["username"] = wxString( _( (*aListToAppendTo)["username"] = UTF8( _(
"User name for <b>login</b> to some special library server." "User name for <b>login</b> to some special library server."
)).utf8_str(); ));
(*aListToAppendTo)["password"] = wxString( _( (*aListToAppendTo)["password"] = UTF8( _(
"Password for <b>login</b> to some special library server." "Password for <b>login</b> to some special library server."
)).utf8_str(); ));
#endif #endif
#if 1 #if 1
// Suitable for a C++ to python PLUGIN::Footprint*() adapter, move it to the adapter // Suitable for a C++ to python PLUGIN::Footprint*() adapter, move it to the adapter
// if and when implemented. // if and when implemented.
(*aListToAppendTo)["python_footprint_plugin"] = wxString( _( (*aListToAppendTo)["python_footprint_plugin"] = UTF8( _(
"Enter the python module which implements the PLUGIN::Footprint*() functions." "Enter the python module which implements the PLUGIN::Footprint*() functions."
)).utf8_str(); ));
#endif #endif
} }
...@@ -394,8 +394,8 @@ bool DIALOG_EXCHANGE_MODULE::Change_1_Module( MODULE* aModule, ...@@ -394,8 +394,8 @@ bool DIALOG_EXCHANGE_MODULE::Change_1_Module( MODULE* aModule,
aNewFootprintFPID.Format().c_str() ); aNewFootprintFPID.Format().c_str() );
m_WinMessages->AppendText( line ); m_WinMessages->AppendText( line );
wxString moduleName = FROM_UTF8( aNewFootprintFPID.GetFootprintName().c_str() ); wxString moduleName = aNewFootprintFPID.GetFootprintName();
wxString libName = FROM_UTF8( aNewFootprintFPID.GetLibNickname().c_str() ); wxString libName = aNewFootprintFPID.GetLibNickname();
newModule = m_parent->LoadFootprint( aNewFootprintFPID ); newModule = m_parent->LoadFootprint( aNewFootprintFPID );
......
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