Rework footprint library table for use in symbol library table.
Factor out ROW object from FP_LIB_TABLE so it can be reused to create a symbol library table row object. Create base LIB_TABLE_ROW object from ROW object common code. Derived FP_LIB_TABLE_ROW object from LIB_TABLE_ROW to provide support for footprint library table rows. Update all instances of FP_LIB_TABLE::ROW with FP_LIB_TABLE_ROW. Purge wxT() macros from modified files where possible.
This commit is contained in:
parent
86dcfeb69d
commit
192d4b87ad
|
@ -2,7 +2,7 @@
|
|||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2010-2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
||||
* Copyright (C) 2012 Wayne Stambaugh <stambaughw@verizon.net>
|
||||
* Copyright (C) 2012-2016 Wayne Stambaugh <stambaughw@gmail.com>
|
||||
* Copyright (C) 2012-2016 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
|
@ -48,7 +48,7 @@ using namespace FP_LIB_TABLE_T;
|
|||
static const wxChar global_tbl_name[] = wxT( "fp-lib-table" );
|
||||
|
||||
|
||||
void FP_LIB_TABLE::ROW::SetType( const wxString& aType )
|
||||
void FP_LIB_TABLE_ROW::SetType( const wxString& aType )
|
||||
{
|
||||
type = IO_MGR::EnumFromStr( aType );
|
||||
|
||||
|
@ -57,7 +57,7 @@ void FP_LIB_TABLE::ROW::SetType( const wxString& aType )
|
|||
}
|
||||
|
||||
|
||||
void FP_LIB_TABLE::ROW::SetFullURI( const wxString& aFullURI )
|
||||
void LIB_TABLE_ROW::SetFullURI( const wxString& aFullURI )
|
||||
{
|
||||
uri_user = aFullURI;
|
||||
|
||||
|
@ -67,7 +67,7 @@ void FP_LIB_TABLE::ROW::SetFullURI( const wxString& aFullURI )
|
|||
}
|
||||
|
||||
|
||||
const wxString FP_LIB_TABLE::ROW::GetFullURI( bool aSubstituted ) const
|
||||
const wxString LIB_TABLE_ROW::GetFullURI( bool aSubstituted ) const
|
||||
{
|
||||
if( aSubstituted )
|
||||
{
|
||||
|
@ -83,9 +83,8 @@ const wxString FP_LIB_TABLE::ROW::GetFullURI( bool aSubstituted ) const
|
|||
}
|
||||
|
||||
|
||||
FP_LIB_TABLE::ROW::ROW( const ROW& a ) :
|
||||
LIB_TABLE_ROW::LIB_TABLE_ROW( const LIB_TABLE_ROW& a ) :
|
||||
nickName( a.nickName ),
|
||||
type( a.type ),
|
||||
options( a.options ),
|
||||
description( a.description ),
|
||||
properties( 0 )
|
||||
|
@ -98,10 +97,9 @@ FP_LIB_TABLE::ROW::ROW( const ROW& a ) :
|
|||
}
|
||||
|
||||
|
||||
FP_LIB_TABLE::ROW& FP_LIB_TABLE::ROW::operator=( const ROW& r )
|
||||
LIB_TABLE_ROW& LIB_TABLE_ROW::operator=( const LIB_TABLE_ROW& r )
|
||||
{
|
||||
nickName = r.nickName;
|
||||
type = r.type;
|
||||
options = r.options;
|
||||
description = r.description;
|
||||
properties = r.properties ? new PROPERTIES( *r.properties ) : NULL;
|
||||
|
@ -109,22 +107,64 @@ FP_LIB_TABLE::ROW& FP_LIB_TABLE::ROW::operator=( const ROW& r )
|
|||
// may call ExpandSubstitutions()
|
||||
SetFullURI( r.uri_user );
|
||||
|
||||
// Do not copy the PLUGIN, it is lazily created. Delete any existing
|
||||
// destination plugin.
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
bool LIB_TABLE_ROW::operator==( const LIB_TABLE_ROW& r ) const
|
||||
{
|
||||
return nickName == r.nickName
|
||||
&& uri_user == r.uri_user
|
||||
&& options == r.options
|
||||
&& description == r.description
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
void LIB_TABLE_ROW::Format( OUTPUTFORMATTER* out, int nestLevel ) const
|
||||
throw( IO_ERROR, boost::interprocess::lock_exception )
|
||||
{
|
||||
out->Print( nestLevel, "(lib (name %s)(type %s)(uri %s)(options %s)(descr %s))\n",
|
||||
out->Quotew( GetNickName() ).c_str(),
|
||||
out->Quotew( GetType() ).c_str(),
|
||||
out->Quotew( GetFullURI() ).c_str(),
|
||||
out->Quotew( GetOptions() ).c_str(),
|
||||
out->Quotew( GetDescr() ).c_str()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
void LIB_TABLE_ROW::SetOptions( const wxString& aOptions )
|
||||
{
|
||||
options = aOptions;
|
||||
|
||||
// set PROPERTIES* from options
|
||||
setProperties( FP_LIB_TABLE::ParseOptions( TO_UTF8( aOptions ) ) );
|
||||
}
|
||||
|
||||
|
||||
FP_LIB_TABLE_ROW::FP_LIB_TABLE_ROW( const FP_LIB_TABLE_ROW& aRow ) :
|
||||
LIB_TABLE_ROW( aRow ),
|
||||
type( aRow.type )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
FP_LIB_TABLE_ROW& FP_LIB_TABLE_ROW::operator=( const FP_LIB_TABLE_ROW& aRow )
|
||||
{
|
||||
LIB_TABLE_ROW::operator = ( aRow );
|
||||
type = aRow.type;
|
||||
|
||||
// Do not copy the PLUGIN, it is lazily created. Delete any existing destination plugin.
|
||||
setPlugin( NULL );
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
bool FP_LIB_TABLE::ROW::operator==( const ROW& r ) const
|
||||
bool FP_LIB_TABLE_ROW::operator==( const FP_LIB_TABLE_ROW& aRow ) const
|
||||
{
|
||||
return nickName == r.nickName
|
||||
&& uri_user == r.uri_user
|
||||
&& type == r.type
|
||||
&& options == r.options
|
||||
&& description == r.description
|
||||
;
|
||||
return LIB_TABLE_ROW::operator == ( aRow ) && type == aRow.type;
|
||||
}
|
||||
|
||||
|
||||
|
@ -144,7 +184,7 @@ FP_LIB_TABLE::~FP_LIB_TABLE()
|
|||
|
||||
wxArrayString FP_LIB_TABLE::FootprintEnumerate( const wxString& aNickname )
|
||||
{
|
||||
const ROW* row = FindRow( aNickname );
|
||||
const FP_LIB_TABLE_ROW* row = FindRow( aNickname );
|
||||
wxASSERT( (PLUGIN*) row->plugin );
|
||||
return row->plugin->FootprintEnumerate( row->GetFullURI( true ), row->GetProperties() );
|
||||
}
|
||||
|
@ -152,10 +192,11 @@ wxArrayString FP_LIB_TABLE::FootprintEnumerate( const wxString& aNickname )
|
|||
|
||||
MODULE* FP_LIB_TABLE::FootprintLoad( const wxString& aNickname, const wxString& aFootprintName )
|
||||
{
|
||||
const ROW* row = FindRow( aNickname );
|
||||
const FP_LIB_TABLE_ROW* row = FindRow( aNickname );
|
||||
wxASSERT( (PLUGIN*) row->plugin );
|
||||
|
||||
MODULE* ret = row->plugin->FootprintLoad( row->GetFullURI( true ), aFootprintName, row->GetProperties() );
|
||||
MODULE* ret = row->plugin->FootprintLoad( row->GetFullURI( true ), aFootprintName,
|
||||
row->GetProperties() );
|
||||
|
||||
// The library cannot know its own name, because it might have been renamed or moved.
|
||||
// Therefore footprints cannot know their own library nickname when residing in
|
||||
|
@ -181,9 +222,9 @@ MODULE* FP_LIB_TABLE::FootprintLoad( const wxString& aNickname, const wxString&
|
|||
|
||||
|
||||
FP_LIB_TABLE::SAVE_T FP_LIB_TABLE::FootprintSave( const wxString& aNickname,
|
||||
const MODULE* aFootprint, bool aOverwrite )
|
||||
const MODULE* aFootprint, bool aOverwrite )
|
||||
{
|
||||
const ROW* row = FindRow( aNickname );
|
||||
const FP_LIB_TABLE_ROW* row = FindRow( aNickname );
|
||||
wxASSERT( (PLUGIN*) row->plugin );
|
||||
|
||||
if( !aOverwrite )
|
||||
|
@ -208,15 +249,16 @@ FP_LIB_TABLE::SAVE_T FP_LIB_TABLE::FootprintSave( const wxString& aNickname,
|
|||
|
||||
void FP_LIB_TABLE::FootprintDelete( const wxString& aNickname, const wxString& aFootprintName )
|
||||
{
|
||||
const ROW* row = FindRow( aNickname );
|
||||
const FP_LIB_TABLE_ROW* row = FindRow( aNickname );
|
||||
wxASSERT( (PLUGIN*) row->plugin );
|
||||
return row->plugin->FootprintDelete( row->GetFullURI( true ), aFootprintName, row->GetProperties() );
|
||||
return row->plugin->FootprintDelete( row->GetFullURI( true ), aFootprintName,
|
||||
row->GetProperties() );
|
||||
}
|
||||
|
||||
|
||||
bool FP_LIB_TABLE::IsFootprintLibWritable( const wxString& aNickname )
|
||||
{
|
||||
const ROW* row = FindRow( aNickname );
|
||||
const FP_LIB_TABLE_ROW* row = FindRow( aNickname );
|
||||
wxASSERT( (PLUGIN*) row->plugin );
|
||||
return row->plugin->IsFootprintLibWritable( row->GetFullURI( true ) );
|
||||
}
|
||||
|
@ -224,7 +266,7 @@ bool FP_LIB_TABLE::IsFootprintLibWritable( const wxString& aNickname )
|
|||
|
||||
void FP_LIB_TABLE::FootprintLibDelete( const wxString& aNickname )
|
||||
{
|
||||
const ROW* row = FindRow( aNickname );
|
||||
const FP_LIB_TABLE_ROW* row = FindRow( aNickname );
|
||||
wxASSERT( (PLUGIN*) row->plugin );
|
||||
row->plugin->FootprintLibDelete( row->GetFullURI( true ), row->GetProperties() );
|
||||
}
|
||||
|
@ -232,7 +274,7 @@ void FP_LIB_TABLE::FootprintLibDelete( const wxString& aNickname )
|
|||
|
||||
void FP_LIB_TABLE::FootprintLibCreate( const wxString& aNickname )
|
||||
{
|
||||
const ROW* row = FindRow( aNickname );
|
||||
const FP_LIB_TABLE_ROW* row = FindRow( aNickname );
|
||||
wxASSERT( (PLUGIN*) row->plugin );
|
||||
row->plugin->FootprintLibCreate( row->GetFullURI( true ), row->GetProperties() );
|
||||
}
|
||||
|
@ -241,9 +283,10 @@ void FP_LIB_TABLE::FootprintLibCreate( const wxString& aNickname )
|
|||
const wxString FP_LIB_TABLE::GetDescription( const wxString& aNickname )
|
||||
{
|
||||
// use "no exception" form of find row:
|
||||
const ROW* row = findRow( aNickname );
|
||||
const FP_LIB_TABLE_ROW* row = dynamic_cast< FP_LIB_TABLE_ROW* >( findRow( aNickname ) );
|
||||
|
||||
if( row )
|
||||
return row->description;
|
||||
return row->GetDescr();
|
||||
else
|
||||
return wxEmptyString;
|
||||
}
|
||||
|
@ -273,7 +316,7 @@ void FP_LIB_TABLE::Parse( FP_LIB_TABLE_LEXER* in ) throw( IO_ERROR, PARSE_ERROR
|
|||
|
||||
while( ( tok = in->NextTok() ) != T_RIGHT )
|
||||
{
|
||||
ROW row; // reconstructed for each row in input stream.
|
||||
FP_LIB_TABLE_ROW row; // reconstructed for each row in input stream.
|
||||
|
||||
if( tok == T_EOF )
|
||||
in->Expecting( T_RIGHT );
|
||||
|
@ -372,7 +415,7 @@ void FP_LIB_TABLE::Parse( FP_LIB_TABLE_LEXER* in ) throw( IO_ERROR, PARSE_ERROR
|
|||
{
|
||||
wxString msg = wxString::Format(
|
||||
_( "'%s' is a duplicate footprint library nickName" ),
|
||||
GetChars( row.nickName ) );
|
||||
GetChars( row.GetNickName() ) );
|
||||
THROW_PARSE_ERROR( msg, in->CurSource(), in->CurLine(), lineNum, offset );
|
||||
}
|
||||
}
|
||||
|
@ -384,25 +427,13 @@ void FP_LIB_TABLE::Format( OUTPUTFORMATTER* out, int nestLevel ) const
|
|||
{
|
||||
out->Print( nestLevel, "(fp_lib_table\n" );
|
||||
|
||||
for( ROWS_CITER it = rows.begin(); it != rows.end(); ++it )
|
||||
for( FP_LIB_TABLE_ROWS_CITER it = rows.begin(); it != rows.end(); ++it )
|
||||
it->Format( out, nestLevel+1 );
|
||||
|
||||
out->Print( nestLevel, ")\n" );
|
||||
}
|
||||
|
||||
|
||||
void FP_LIB_TABLE::ROW::Format( OUTPUTFORMATTER* out, int nestLevel ) const
|
||||
throw( IO_ERROR, boost::interprocess::lock_exception )
|
||||
{
|
||||
out->Print( nestLevel, "(lib (name %s)(type %s)(uri %s)(options %s)(descr %s))\n",
|
||||
out->Quotew( GetNickName() ).c_str(),
|
||||
out->Quotew( GetType() ).c_str(),
|
||||
out->Quotew( GetFullURI() ).c_str(),
|
||||
out->Quotew( GetOptions() ).c_str(),
|
||||
out->Quotew( GetDescr() ).c_str()
|
||||
);
|
||||
}
|
||||
|
||||
#define OPT_SEP '|' ///< options separator character
|
||||
|
||||
PROPERTIES* FP_LIB_TABLE::ParseOptions( const std::string& aOptionsList )
|
||||
|
@ -460,6 +491,7 @@ PROPERTIES* FP_LIB_TABLE::ParseOptions( const std::string& aOptionsList )
|
|||
if( props.size() )
|
||||
return new PROPERTIES( props );
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -514,9 +546,9 @@ std::vector<wxString> FP_LIB_TABLE::GetLogicalLibs()
|
|||
|
||||
do
|
||||
{
|
||||
for( ROWS_CITER it = cur->rows.begin(); it!=cur->rows.end(); ++it )
|
||||
for( FP_LIB_TABLE_ROWS_CITER it = cur->rows.begin(); it!=cur->rows.end(); ++it )
|
||||
{
|
||||
unique.insert( it->nickName );
|
||||
unique.insert( it->GetNickName() );
|
||||
}
|
||||
|
||||
} while( ( cur = cur->fallBack ) != 0 );
|
||||
|
@ -536,7 +568,7 @@ std::vector<wxString> FP_LIB_TABLE::GetLogicalLibs()
|
|||
}
|
||||
|
||||
|
||||
FP_LIB_TABLE::ROW* FP_LIB_TABLE::findRow( const wxString& aNickName ) const
|
||||
LIB_TABLE_ROW* FP_LIB_TABLE::findRow( const wxString& aNickName ) const
|
||||
{
|
||||
FP_LIB_TABLE* cur = (FP_LIB_TABLE*) this;
|
||||
|
||||
|
@ -558,7 +590,7 @@ FP_LIB_TABLE::ROW* FP_LIB_TABLE::findRow( const wxString& aNickName ) const
|
|||
}
|
||||
|
||||
|
||||
const FP_LIB_TABLE::ROW* FP_LIB_TABLE::FindRowByURI( const wxString& aURI )
|
||||
const FP_LIB_TABLE_ROW* FP_LIB_TABLE::FindRowByURI( const wxString& aURI )
|
||||
{
|
||||
FP_LIB_TABLE* cur = this;
|
||||
|
||||
|
@ -571,7 +603,7 @@ const FP_LIB_TABLE::ROW* FP_LIB_TABLE::FindRowByURI( const wxString& aURI )
|
|||
wxString uri = cur->rows[i].GetFullURI( true );
|
||||
|
||||
if( wxFileName::GetPathSeparator() == wxChar( '\\' ) && uri.Find( wxChar( '/' ) ) >= 0 )
|
||||
uri.Replace( wxT( "/" ), wxT( "\\" ) );
|
||||
uri.Replace( "/", "\\" );
|
||||
|
||||
if( (wxFileName::IsCaseSensitive() && uri == aURI)
|
||||
|| (!wxFileName::IsCaseSensitive() && uri.Upper() == aURI.Upper() ) )
|
||||
|
@ -587,16 +619,16 @@ const FP_LIB_TABLE::ROW* FP_LIB_TABLE::FindRowByURI( const wxString& aURI )
|
|||
}
|
||||
|
||||
|
||||
bool FP_LIB_TABLE::InsertRow( const ROW& aRow, bool doReplace )
|
||||
bool FP_LIB_TABLE::InsertRow( const FP_LIB_TABLE_ROW& aRow, bool doReplace )
|
||||
{
|
||||
ensureIndex();
|
||||
|
||||
INDEX_CITER it = nickIndex.find( aRow.nickName );
|
||||
INDEX_CITER it = nickIndex.find( aRow.GetNickName() );
|
||||
|
||||
if( it == nickIndex.end() )
|
||||
{
|
||||
rows.push_back( aRow );
|
||||
nickIndex.insert( INDEX_VALUE( aRow.nickName, rows.size() - 1 ) );
|
||||
nickIndex.insert( INDEX_VALUE( aRow.GetNickName(), rows.size() - 1 ) );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -610,10 +642,10 @@ bool FP_LIB_TABLE::InsertRow( const ROW& aRow, bool doReplace )
|
|||
}
|
||||
|
||||
|
||||
const FP_LIB_TABLE::ROW* FP_LIB_TABLE::FindRow( const wxString& aNickname )
|
||||
const FP_LIB_TABLE_ROW* FP_LIB_TABLE::FindRow( const wxString& aNickname )
|
||||
throw( IO_ERROR )
|
||||
{
|
||||
ROW* row = findRow( aNickname );
|
||||
FP_LIB_TABLE_ROW* row = dynamic_cast< FP_LIB_TABLE_ROW* >( findRow( aNickname ) );
|
||||
|
||||
if( !row )
|
||||
{
|
||||
|
@ -625,7 +657,7 @@ const FP_LIB_TABLE::ROW* FP_LIB_TABLE::FindRow( const wxString& aNickname )
|
|||
}
|
||||
|
||||
// We've been 'lazy' up until now, but it cannot be deferred any longer,
|
||||
// instantiate a PLUGIN of the proper kind if it is not already in this ROW.
|
||||
// instantiate a PLUGIN of the proper kind if it is not already in this LIB_TABLE_ROW.
|
||||
if( !row->plugin )
|
||||
row->setPlugin( IO_MGR::PluginFind( row->type ) );
|
||||
|
||||
|
@ -698,7 +730,7 @@ MODULE* FP_LIB_TABLE::FootprintLoadWithOptionalNickname( const FPID& aFootprintI
|
|||
|
||||
const wxString FP_LIB_TABLE::GlobalPathEnvVariableName()
|
||||
{
|
||||
return wxT( "KISYSMOD" );
|
||||
return "KISYSMOD";
|
||||
}
|
||||
|
||||
|
||||
|
@ -769,4 +801,3 @@ void FP_LIB_TABLE::Save( const wxString& aFileName )
|
|||
FILE_OUTPUTFORMATTER sf( aFileName );
|
||||
Format( &sf, 0 );
|
||||
}
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2010-2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
||||
* Copyright (C) 2012 Wayne Stambaugh <stambaughw@verizon.net>
|
||||
* Copyright (C) 2012-2015 KiCad Developers, see change_log.txt for contributors.
|
||||
* Copyright (C) 2012-2016 Wayne Stambaugh <stambaughw@verizon.net>
|
||||
* Copyright (C) 2012-2016 KiCad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -42,6 +42,215 @@ class MODULE;
|
|||
class FP_LIB_TABLE_LEXER;
|
||||
class FPID;
|
||||
|
||||
|
||||
/**
|
||||
* Class LIB_TABLE_ROW
|
||||
*
|
||||
* holds a record identifying a library accessed by the appropriate #PLUGIN object in the
|
||||
* #FP_LIB_TABLE.
|
||||
*/
|
||||
class LIB_TABLE_ROW
|
||||
{
|
||||
public:
|
||||
|
||||
LIB_TABLE_ROW() :
|
||||
properties( 0 )
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~LIB_TABLE_ROW()
|
||||
{
|
||||
delete properties;
|
||||
}
|
||||
|
||||
LIB_TABLE_ROW( const wxString& aNick, const wxString& aURI, const wxString& aOptions,
|
||||
const wxString& aDescr = wxEmptyString ) :
|
||||
nickName( aNick ),
|
||||
description( aDescr ),
|
||||
properties( 0 )
|
||||
{
|
||||
SetOptions( aOptions ),
|
||||
SetFullURI( aURI );
|
||||
}
|
||||
|
||||
LIB_TABLE_ROW( const LIB_TABLE_ROW& aRow );
|
||||
|
||||
LIB_TABLE_ROW& operator=( const LIB_TABLE_ROW& r );
|
||||
|
||||
bool operator==( const LIB_TABLE_ROW& r ) const;
|
||||
|
||||
bool operator!=( const LIB_TABLE_ROW& r ) const { return !( *this == r ); }
|
||||
|
||||
//-----<accessors>------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Function GetNickName
|
||||
* returns the short name of this library table row.
|
||||
*/
|
||||
const wxString& GetNickName() const { return nickName; }
|
||||
|
||||
/**
|
||||
* Function SetNickName
|
||||
* changes the logical name of this library, useful for an editor.
|
||||
*/
|
||||
void SetNickName( const wxString& aNickName ) { nickName = aNickName; }
|
||||
|
||||
/**
|
||||
* Function GetType
|
||||
* is a pure virtual function that returns the type of LIB represented by this row.
|
||||
*/
|
||||
virtual const wxString GetType() const = 0;
|
||||
|
||||
/**
|
||||
* Function SetType
|
||||
*
|
||||
* is a pure virtual function changes the type represented by this row that must
|
||||
* be implemented in the derived object to provide the library table row type.
|
||||
*/
|
||||
virtual void SetType( const wxString& aType ) = 0;
|
||||
|
||||
/**
|
||||
* Function GetFullURI
|
||||
* returns the full location specifying URI for the LIB, either in original
|
||||
* UI form or in environment variable expanded form.
|
||||
*
|
||||
* @param aSubstituted Tells if caller wanted the substituted form, else not.
|
||||
*/
|
||||
const wxString GetFullURI( bool aSubstituted = false ) const;
|
||||
|
||||
/**
|
||||
* Function SetFullURI
|
||||
* changes the full URI for the library.
|
||||
*/
|
||||
void SetFullURI( const wxString& aFullURI );
|
||||
|
||||
/**
|
||||
* Function GetOptions
|
||||
* returns the options string, which may hold a password or anything else needed to
|
||||
* instantiate the underlying LIB_SOURCE.
|
||||
*/
|
||||
const wxString& GetOptions() const { return options; }
|
||||
|
||||
/**
|
||||
* Function SetOptions
|
||||
*/
|
||||
void SetOptions( const wxString& aOptions );
|
||||
|
||||
/**
|
||||
* Function GetDescr
|
||||
* returns the description of the library referenced by this row.
|
||||
*/
|
||||
const wxString& GetDescr() const { return description; }
|
||||
|
||||
/**
|
||||
* Function SetDescr
|
||||
* changes the description of the library referenced by this row.
|
||||
*/
|
||||
void SetDescr( const wxString& aDescr ) { description = aDescr; }
|
||||
|
||||
/**
|
||||
* Function GetProperties
|
||||
* returns the constant PROPERTIES for this library (LIB_TABLE_ROW). These are
|
||||
* the "options" in a table.
|
||||
*/
|
||||
const PROPERTIES* GetProperties() const { return properties; }
|
||||
|
||||
//-----</accessors>-----------------------------------------------------
|
||||
|
||||
/**
|
||||
* Function Format
|
||||
*
|
||||
* serializes this object as utf8 text to an OUTPUTFORMATTER, and tries to
|
||||
* make it look good using multiple lines and indentation.
|
||||
*
|
||||
* @param out is an #OUTPUTFORMATTER
|
||||
* @param nestLevel is the indentation level to base all lines of the output.
|
||||
* Actual indentation will be 2 spaces for each nestLevel.
|
||||
*/
|
||||
void Format( OUTPUTFORMATTER* out, int nestLevel ) const
|
||||
throw( IO_ERROR, boost::interprocess::lock_exception );
|
||||
|
||||
private:
|
||||
|
||||
/**
|
||||
* Function setProperties
|
||||
*
|
||||
* sets this LIB_TABLE_ROW's PROPERTIES by taking ownership of @a aProperties.
|
||||
*
|
||||
* @param aProperties ownership is given over to this LIB_TABLE_ROW.
|
||||
*/
|
||||
void setProperties( const PROPERTIES* aProperties )
|
||||
{
|
||||
delete properties;
|
||||
properties = aProperties;
|
||||
}
|
||||
|
||||
wxString nickName;
|
||||
wxString uri_user; ///< what user entered from UI or loaded from disk
|
||||
|
||||
#if !FP_LATE_ENVVAR
|
||||
wxString uri_expanded; ///< from ExpandSubstitutions()
|
||||
#endif
|
||||
|
||||
wxString options;
|
||||
wxString description;
|
||||
|
||||
const PROPERTIES* properties;
|
||||
};
|
||||
|
||||
|
||||
class FP_LIB_TABLE_ROW : public LIB_TABLE_ROW
|
||||
{
|
||||
friend class FP_LIB_TABLE;
|
||||
friend class DIALOG_FP_LIB_TABLE;
|
||||
|
||||
public:
|
||||
typedef IO_MGR::PCB_FILE_T LIB_T;
|
||||
|
||||
FP_LIB_TABLE_ROW( const wxString& aNick, const wxString& aURI, const wxString& aType,
|
||||
const wxString& aOptions, const wxString& aDescr = wxEmptyString ) :
|
||||
LIB_TABLE_ROW( aNick, aURI, aOptions, aDescr )
|
||||
{
|
||||
SetType( aType );
|
||||
}
|
||||
|
||||
FP_LIB_TABLE_ROW() :
|
||||
type( IO_MGR::KICAD )
|
||||
{
|
||||
}
|
||||
|
||||
FP_LIB_TABLE_ROW( const FP_LIB_TABLE_ROW& aRow );
|
||||
|
||||
FP_LIB_TABLE_ROW& operator=( const FP_LIB_TABLE_ROW& aRow );
|
||||
|
||||
/// Used in DIALOG_FP_LIB_TABLE for detecting an edit.
|
||||
bool operator==( const FP_LIB_TABLE_ROW& aRow ) const;
|
||||
|
||||
bool operator!=( const FP_LIB_TABLE_ROW& aRow ) const { return !( *this == aRow ); }
|
||||
|
||||
/**
|
||||
* Function GetType
|
||||
* returns the type of LIB represented by this row.
|
||||
*/
|
||||
const wxString GetType() const override { return IO_MGR::ShowType( type ); }
|
||||
|
||||
/**
|
||||
* Function SetType
|
||||
* changes the type represented by this row.
|
||||
*/
|
||||
void SetType( const wxString& aType ) override;
|
||||
|
||||
private:
|
||||
void setPlugin( PLUGIN* aPlugin )
|
||||
{
|
||||
plugin.set( aPlugin );
|
||||
}
|
||||
|
||||
PLUGIN::RELEASER plugin;
|
||||
LIB_T type;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Class FP_LIB_TABLE
|
||||
* holds FP_LIB_TABLE::ROW records (rows), and can be searched based on library nickName.
|
||||
|
@ -85,179 +294,11 @@ class FPID;
|
|||
*/
|
||||
class FP_LIB_TABLE : public PROJECT::_ELEM
|
||||
{
|
||||
friend class FP_LIB_TABLE_ROW;
|
||||
friend class DIALOG_FP_LIB_TABLE;
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Class ROW
|
||||
* holds a record identifying a footprint library accessed by the appropriate #PLUGIN
|
||||
* object in the #FP_LIB_TABLE.
|
||||
*/
|
||||
class ROW
|
||||
{
|
||||
friend class FP_LIB_TABLE;
|
||||
friend class DIALOG_FP_LIB_TABLE;
|
||||
|
||||
public:
|
||||
|
||||
typedef IO_MGR::PCB_FILE_T LIB_T;
|
||||
|
||||
ROW() :
|
||||
type( IO_MGR::KICAD ),
|
||||
properties( 0 )
|
||||
{
|
||||
}
|
||||
|
||||
ROW( const wxString& aNick, const wxString& aURI, const wxString& aType,
|
||||
const wxString& aOptions, const wxString& aDescr = wxEmptyString ) :
|
||||
nickName( aNick ),
|
||||
description( aDescr ),
|
||||
properties( 0 )
|
||||
{
|
||||
SetOptions( aOptions ),
|
||||
SetFullURI( aURI );
|
||||
SetType( aType );
|
||||
}
|
||||
|
||||
ROW( const ROW& a );
|
||||
|
||||
~ROW()
|
||||
{
|
||||
delete properties;
|
||||
}
|
||||
|
||||
ROW& operator=( const ROW& r );
|
||||
|
||||
/// Used in DIALOG_FP_LIB_TABLE for detecting an edit.
|
||||
bool operator==( const ROW& r ) const;
|
||||
|
||||
bool operator!=( const ROW& r ) const { return !( *this == r ); }
|
||||
|
||||
//-----<accessors>------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Function GetNickName
|
||||
* returns the short name of this library table row.
|
||||
*/
|
||||
const wxString& GetNickName() const { return nickName; }
|
||||
|
||||
/**
|
||||
* Function SetNickName
|
||||
* changes the logical name of this library, useful for an editor.
|
||||
*/
|
||||
void SetNickName( const wxString& aNickName ) { nickName = aNickName; }
|
||||
|
||||
/**
|
||||
* Function GetType
|
||||
* returns the type of LIB represented by this row.
|
||||
*/
|
||||
const wxString GetType() const { return IO_MGR::ShowType( type ); }
|
||||
|
||||
/**
|
||||
* Function SetType
|
||||
* changes the type represented by this row.
|
||||
*/
|
||||
void SetType( const wxString& aType );
|
||||
|
||||
/**
|
||||
* Function GetFullURI
|
||||
* returns the full location specifying URI for the LIB, either in original
|
||||
* UI form or in environment variable expanded form.
|
||||
*
|
||||
* @param aSubstituted Tells if caller wanted the substituted form, else not.
|
||||
*/
|
||||
const wxString GetFullURI( bool aSubstituted = false ) const;
|
||||
|
||||
/**
|
||||
* Function SetFullURI
|
||||
* changes the full URI for the library.
|
||||
*/
|
||||
void SetFullURI( const wxString& aFullURI );
|
||||
|
||||
/**
|
||||
* Function GetOptions
|
||||
* returns the options string, which may hold a password or anything else needed to
|
||||
* instantiate the underlying LIB_SOURCE.
|
||||
*/
|
||||
const wxString& GetOptions() const { return options; }
|
||||
|
||||
/**
|
||||
* Function SetOptions
|
||||
*/
|
||||
void SetOptions( const wxString& aOptions )
|
||||
{
|
||||
options = aOptions;
|
||||
|
||||
// set PROPERTIES* from options
|
||||
setProperties( ParseOptions( TO_UTF8( aOptions ) ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Function GetDescr
|
||||
* returns the description of the library referenced by this row.
|
||||
*/
|
||||
const wxString& GetDescr() const { return description; }
|
||||
|
||||
/**
|
||||
* Function SetDescr
|
||||
* changes the description of the library referenced by this row.
|
||||
*/
|
||||
void SetDescr( const wxString& aDescr ) { description = aDescr; }
|
||||
|
||||
/**
|
||||
* Function GetProperties
|
||||
* returns the constant PROPERTIES for this library (ROW). These are
|
||||
* the "options" in a table.
|
||||
*/
|
||||
const PROPERTIES* GetProperties() const { return properties; }
|
||||
|
||||
//-----</accessors>-----------------------------------------------------
|
||||
|
||||
/**
|
||||
* Function Format
|
||||
* serializes this object as utf8 text to an OUTPUTFORMATTER, and tries to
|
||||
* make it look good using multiple lines and indentation.
|
||||
* @param out is an #OUTPUTFORMATTER
|
||||
* @param nestLevel is the indentation level to base all lines of the output.
|
||||
* Actual indentation will be 2 spaces for each nestLevel.
|
||||
*/
|
||||
void Format( OUTPUTFORMATTER* out, int nestLevel ) const
|
||||
throw( IO_ERROR, boost::interprocess::lock_exception );
|
||||
|
||||
private:
|
||||
|
||||
/**
|
||||
* Function setProperties
|
||||
* sets this ROW's PROPERTIES by taking ownership of @a aProperties.
|
||||
* @param aProperties ownership is given over to this ROW.
|
||||
*/
|
||||
void setProperties( const PROPERTIES* aProperties )
|
||||
{
|
||||
delete properties;
|
||||
properties = aProperties;
|
||||
}
|
||||
|
||||
void setPlugin( PLUGIN* aPlugin )
|
||||
{
|
||||
plugin.set( aPlugin );
|
||||
}
|
||||
|
||||
wxString nickName;
|
||||
wxString uri_user; ///< what user entered from UI or loaded from disk
|
||||
|
||||
#if !FP_LATE_ENVVAR
|
||||
wxString uri_expanded; ///< from ExpandSubstitutions()
|
||||
#endif
|
||||
|
||||
LIB_T type;
|
||||
wxString options;
|
||||
wxString description;
|
||||
|
||||
const PROPERTIES* properties;
|
||||
PLUGIN::RELEASER plugin;
|
||||
};
|
||||
|
||||
/**
|
||||
* Constructor FP_LIB_TABLE
|
||||
* builds a library table by pre-pending this table fragment in front of
|
||||
|
@ -297,7 +338,7 @@ public:
|
|||
|
||||
int GetCount() { return rows.size(); }
|
||||
|
||||
ROW& At( int aIndex ) { return rows[aIndex]; }
|
||||
LIB_TABLE_ROW& At( int aIndex ) { return rows[aIndex]; }
|
||||
|
||||
/**
|
||||
* Function Parse
|
||||
|
@ -329,7 +370,7 @@ public:
|
|||
* which is returned. If the options field is empty, then the returned PROPERTIES
|
||||
* will be a NULL pointer.
|
||||
* <p>
|
||||
* Typically aOptionsList comes from the "options" field within a ROW and
|
||||
* Typically aOptionsList comes from the "options" field within a LIB_TABLE_ROW and
|
||||
* the format is simply a comma separated list of name value pairs. e.g.:
|
||||
* [name1[=value1][|name2[=value2]]] etc. When using the UI to create or edit
|
||||
* a fp lib table, this formatting is handled for you.
|
||||
|
@ -375,7 +416,7 @@ public:
|
|||
* @a aNickname.
|
||||
*
|
||||
* @param aNickname is a locator for the "library", it is a "name"
|
||||
* in FP_LIB_TABLE::ROW
|
||||
* in FP_LIB_TABLE::LIB_TABLE_ROW
|
||||
*
|
||||
* @return wxArrayString - is the array of available footprint names inside
|
||||
* a library
|
||||
|
@ -389,7 +430,7 @@ public:
|
|||
* loads a footprint having @a aFootprintName from the library given by @a aNickname.
|
||||
*
|
||||
* @param aNickname is a locator for the "library", it is a "name"
|
||||
* in FP_LIB_TABLE::ROW
|
||||
* in FP_LIB_TABLE::LIB_TABLE_ROW
|
||||
*
|
||||
* @param aFootprintName is the name of the footprint to load.
|
||||
*
|
||||
|
@ -416,7 +457,7 @@ public:
|
|||
* If a footprint by the same name already exists, it is replaced.
|
||||
*
|
||||
* @param aNickname is a locator for the "library", it is a "name"
|
||||
* in FP_LIB_TABLE::ROW
|
||||
* in FP_LIB_TABLE::LIB_TABLE_ROW
|
||||
*
|
||||
* @param aFootprint is what to store in the library. The caller continues
|
||||
* to own the footprint after this call.
|
||||
|
@ -435,7 +476,7 @@ public:
|
|||
* deletes the @a aFootprintName from the library given by @a aNickname.
|
||||
*
|
||||
* @param aNickname is a locator for the "library", it is a "name"
|
||||
* in FP_LIB_TABLE::ROW
|
||||
* in FP_LIB_TABLE::LIB_TABLE_ROW
|
||||
*
|
||||
* @param aFootprintName is the name of a footprint to delete from the specified library.
|
||||
*
|
||||
|
@ -490,24 +531,24 @@ public:
|
|||
* exists. If false, then fail if the key already exists.
|
||||
* @return bool - true if the operation succeeded.
|
||||
*/
|
||||
bool InsertRow( const ROW& aRow, bool doReplace = false );
|
||||
bool InsertRow( const FP_LIB_TABLE_ROW& aRow, bool doReplace = false );
|
||||
|
||||
/**
|
||||
* Function FindRow
|
||||
* returns a ROW if aNickName is found in this table or in any chained
|
||||
* returns a LIB_TABLE_ROW if aNickName is found in this table or in any chained
|
||||
* fallBack table fragment. The PLUGIN is loaded and attached
|
||||
* to the "plugin" field of the ROW if not already loaded.
|
||||
* to the "plugin" field of the LIB_TABLE_ROW if not already loaded.
|
||||
*
|
||||
* @throw IO_ERROR if aNickName cannot be found.
|
||||
*/
|
||||
const ROW* FindRow( const wxString& aNickName ) throw( IO_ERROR );
|
||||
const FP_LIB_TABLE_ROW* FindRow( const wxString& aNickName ) throw( IO_ERROR );
|
||||
|
||||
/**
|
||||
* Function FindRowByURI
|
||||
* returns a #FP_LIB_TABLE::ROW if aURE is found in this table or in any chained
|
||||
* returns a #FP_LIB_TABLE::LIB_TABLE_ROW if aURE is found in this table or in any chained
|
||||
* fallBack table fragments, else NULL.
|
||||
*/
|
||||
const ROW* FindRowByURI( const wxString& aURI );
|
||||
const FP_LIB_TABLE_ROW* FindRowByURI( const wxString& aURI );
|
||||
|
||||
/**
|
||||
* Function IsEmpty
|
||||
|
@ -520,7 +561,7 @@ public:
|
|||
/**
|
||||
* Function ExpandSubstitutions
|
||||
* replaces any environment variable references with their values and is
|
||||
* here to fully embellish the ROW::uri in a platform independent way.
|
||||
* here to fully embellish the LIB_TABLE_ROW::uri in a platform independent way.
|
||||
* This enables (fp_lib_table)s to have platform dependent environment
|
||||
* variables in them, allowing for a uniform table across platforms.
|
||||
*/
|
||||
|
@ -590,17 +631,17 @@ protected:
|
|||
|
||||
/**
|
||||
* Function findRow
|
||||
* returns a ROW if aNickname is found in this table or in any chained
|
||||
* returns a LIB_TABLE_ROW if aNickname is found in this table or in any chained
|
||||
* fallBack table fragment, else NULL.
|
||||
*/
|
||||
ROW* findRow( const wxString& aNickname ) const;
|
||||
LIB_TABLE_ROW* findRow( const wxString& aNickname ) const;
|
||||
|
||||
void reindex()
|
||||
{
|
||||
nickIndex.clear();
|
||||
|
||||
for( ROWS_CITER it = rows.begin(); it != rows.end(); ++it )
|
||||
nickIndex.insert( INDEX_VALUE( it->nickName, it - rows.begin() ) );
|
||||
for( FP_LIB_TABLE_ROWS_CITER it = rows.begin(); it != rows.end(); ++it )
|
||||
nickIndex.insert( INDEX_VALUE( it->GetNickName(), it - rows.begin() ) );
|
||||
}
|
||||
|
||||
void ensureIndex()
|
||||
|
@ -612,13 +653,13 @@ protected:
|
|||
reindex();
|
||||
}
|
||||
|
||||
typedef std::vector<ROW> ROWS;
|
||||
typedef ROWS::iterator ROWS_ITER;
|
||||
typedef ROWS::const_iterator ROWS_CITER;
|
||||
typedef std::vector<FP_LIB_TABLE_ROW> FP_LIB_TABLE_ROWS;
|
||||
typedef FP_LIB_TABLE_ROWS::iterator FP_LIB_TABLE_ROWS_ITER;
|
||||
typedef FP_LIB_TABLE_ROWS::const_iterator FP_LIB_TABLE_ROWS_CITER;
|
||||
|
||||
ROWS rows;
|
||||
FP_LIB_TABLE_ROWS rows;
|
||||
|
||||
/// this is a non-owning index into the ROWS table
|
||||
/// this is a non-owning index into the LIB_TABLE_ROWS table
|
||||
typedef std::map<wxString,int> INDEX; // "int" is std::vector array index
|
||||
typedef INDEX::iterator INDEX_ITER;
|
||||
typedef INDEX::const_iterator INDEX_CITER;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
||||
* Copyright (C) 2013 CERN
|
||||
* Copyright (C) 2012 KiCad Developers, see change_log.txt for contributors.
|
||||
* Copyright (C) 2012-2016 KiCad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -88,7 +88,7 @@ public:
|
|||
{
|
||||
if( unsigned( aRow ) < rows.size() )
|
||||
{
|
||||
const ROW& r = rows[aRow];
|
||||
const FP_LIB_TABLE_ROW& r = rows[aRow];
|
||||
|
||||
switch( aCol )
|
||||
{
|
||||
|
@ -109,7 +109,7 @@ public:
|
|||
{
|
||||
if( unsigned( aRow ) < rows.size() )
|
||||
{
|
||||
ROW& r = rows[aRow];
|
||||
FP_LIB_TABLE_ROW& r = rows[aRow];
|
||||
|
||||
switch( aCol )
|
||||
{
|
||||
|
@ -131,7 +131,7 @@ public:
|
|||
{
|
||||
if( aPos < rows.size() )
|
||||
{
|
||||
rows.insert( rows.begin() + aPos, aNumRows, ROW() );
|
||||
rows.insert( rows.begin() + aPos, aNumRows, FP_LIB_TABLE_ROW() );
|
||||
|
||||
// use the (wxGridStringTable) source Luke.
|
||||
if( GetView() )
|
||||
|
@ -153,7 +153,7 @@ public:
|
|||
{
|
||||
// do not modify aNumRows, original value needed for wxGridTableMessage below
|
||||
for( int i = aNumRows; i; --i )
|
||||
rows.push_back( ROW() );
|
||||
rows.push_back( FP_LIB_TABLE_ROW() );
|
||||
|
||||
if( GetView() )
|
||||
{
|
||||
|
@ -173,7 +173,7 @@ public:
|
|||
// aPos+aNumRows may wrap here, so both ends of the range are tested.
|
||||
if( aPos < rows.size() && aPos + aNumRows <= rows.size() )
|
||||
{
|
||||
ROWS_ITER start = rows.begin() + aPos;
|
||||
FP_LIB_TABLE_ROWS_ITER start = rows.begin() + aPos;
|
||||
rows.erase( start, start + aNumRows );
|
||||
|
||||
if( GetView() )
|
||||
|
@ -232,14 +232,14 @@ protected:
|
|||
{
|
||||
FP_TBL_MODEL* tbl = (FP_TBL_MODEL*) m_grid->GetTable();
|
||||
|
||||
size_t ndx = cb_text.find( wxT( "(fp_lib_table" ) );
|
||||
size_t ndx = cb_text.find( "(fp_lib_table" );
|
||||
|
||||
if( ndx != std::string::npos )
|
||||
{
|
||||
// paste the ROWs of s-expression (fp_lib_table), starting
|
||||
// paste the FP_LIB_TABLE_ROWs of s-expression (fp_lib_table), starting
|
||||
// at column 0 regardless of current cursor column.
|
||||
|
||||
STRING_LINE_READER slr( TO_UTF8( cb_text ), wxT( "Clipboard" ) );
|
||||
STRING_LINE_READER slr( TO_UTF8( cb_text ), "Clipboard" );
|
||||
FP_LIB_TABLE_LEXER lexer( &slr );
|
||||
FP_LIB_TABLE tmp_tbl;
|
||||
bool parsed = true;
|
||||
|
@ -386,7 +386,7 @@ public:
|
|||
|
||||
|
||||
private:
|
||||
typedef FP_LIB_TABLE::ROW ROW;
|
||||
typedef FP_LIB_TABLE_ROW ROW;
|
||||
|
||||
/// If the cursor is not on a valid cell, because there are no rows at all, return -1,
|
||||
/// else return a 0 based column index.
|
||||
|
@ -430,7 +430,7 @@ private:
|
|||
{
|
||||
wxString msg = wxString::Format(
|
||||
_( "Illegal character '%s' found in Nickname: '%s' in row %d" ),
|
||||
wxT( ":" ), GetChars( nick ), r );
|
||||
":", GetChars( nick ), r );
|
||||
|
||||
// show the tabbed panel holding the grid we have flunked:
|
||||
if( &model != cur_model() )
|
||||
|
@ -710,7 +710,7 @@ private:
|
|||
/// by examining all the full_uri columns.
|
||||
void populateEnvironReadOnlyTable()
|
||||
{
|
||||
wxRegEx re( wxT( ".*?\\$\\{(.+?)\\}.*?" ), wxRE_ADVANCED );
|
||||
wxRegEx re( ".*?\\$\\{(.+?)\\}.*?", wxRE_ADVANCED );
|
||||
wxASSERT( re.IsValid() ); // wxRE_ADVANCED is required.
|
||||
|
||||
std::set< wxString > unique;
|
||||
|
@ -875,10 +875,10 @@ int InvokeFootprintWizard( wxTopLevelWindow* aParent, FP_LIB_TABLE* aGlobal, FP_
|
|||
if( it->GetStatus() == WIZARD_FPLIB_TABLE::LIBRARY::INVALID )
|
||||
continue;
|
||||
|
||||
FP_LIB_TABLE::ROW row( it->GetDescription(),
|
||||
it->GetAutoPath( scope ),
|
||||
it->GetPluginName(),
|
||||
wxEmptyString ); // options
|
||||
FP_LIB_TABLE_ROW row( it->GetDescription(),
|
||||
it->GetAutoPath( scope ),
|
||||
it->GetPluginName(),
|
||||
wxEmptyString ); // options
|
||||
fp_tbl->InsertRow( row );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||
* Copyright (C) 2015 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
||||
* Copyright (C) 2015 Wayne Stambaugh <stambaughw@verizon.net>
|
||||
* Copyright (C) 2015-2016 Wayne Stambaugh <stambaughw@gmail.com>
|
||||
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
|
@ -293,37 +293,37 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
|
|||
lyrs.Caption( _( "Visibles" ) );
|
||||
|
||||
m_auimgr.AddPane( m_mainToolBar,
|
||||
wxAuiPaneInfo( horiz ).Name( wxT( "m_mainToolBar" ) ).Top(). Row( 0 ) );
|
||||
wxAuiPaneInfo( horiz ).Name( "m_mainToolBar" ).Top(). Row( 0 ) );
|
||||
|
||||
m_auimgr.AddPane( m_auxiliaryToolBar,
|
||||
wxAuiPaneInfo( horiz ).Name( wxT( "m_auxiliaryToolBar" ) ).Top().Row( 1 ) );
|
||||
wxAuiPaneInfo( horiz ).Name( "m_auxiliaryToolBar" ).Top().Row( 1 ) );
|
||||
|
||||
// The main right vertical toolbar
|
||||
m_auimgr.AddPane( m_drawToolBar,
|
||||
wxAuiPaneInfo( vert ).Name( wxT( "m_VToolBar" ) ).Right().Layer(1) );
|
||||
wxAuiPaneInfo( vert ).Name( "m_VToolBar" ).Right().Layer(1) );
|
||||
|
||||
// Add the layer manager ( most right side of pcbframe )
|
||||
m_auimgr.AddPane( m_Layers, lyrs.Name( wxT( "m_LayersManagerToolBar" ) ).Right().Layer( 2 ) );
|
||||
m_auimgr.AddPane( m_Layers, lyrs.Name( "m_LayersManagerToolBar" ).Right().Layer( 2 ) );
|
||||
// Layers manager is visible
|
||||
m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).Show( true );
|
||||
m_auimgr.GetPane( "m_LayersManagerToolBar" ).Show( true );
|
||||
|
||||
// The left vertical toolbar (fast acces to display options)
|
||||
m_auimgr.AddPane( m_optionsToolBar,
|
||||
wxAuiPaneInfo( vert ).Name( wxT( "m_optionsToolBar" ) ). Left().Layer(1) );
|
||||
wxAuiPaneInfo( vert ).Name( "m_optionsToolBar" ). Left().Layer(1) );
|
||||
|
||||
m_auimgr.AddPane( m_canvas,
|
||||
wxAuiPaneInfo().Name( wxT( "DrawFrame" ) ).CentrePane() );
|
||||
wxAuiPaneInfo().Name( "DrawFrame" ).CentrePane() );
|
||||
m_auimgr.AddPane( (wxWindow*) GetGalCanvas(),
|
||||
wxAuiPaneInfo().Name( wxT( "DrawFrameGal" ) ).CentrePane().Hide() );
|
||||
wxAuiPaneInfo().Name( "DrawFrameGal" ).CentrePane().Hide() );
|
||||
|
||||
m_auimgr.AddPane( m_messagePanel,
|
||||
wxAuiPaneInfo( mesg_pane ).Name( wxT( "MsgPanel" ) ).Bottom().Layer(10) );
|
||||
wxAuiPaneInfo( mesg_pane ).Name( "MsgPanel" ).Bottom().Layer(10) );
|
||||
|
||||
// Create the manager and dispatcher & route draw panel events to the dispatcher
|
||||
setupTools();
|
||||
UseGalCanvas( parentFrame->IsGalCanvasActive() );
|
||||
|
||||
if( m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).IsShown() )
|
||||
if( m_auimgr.GetPane( "m_LayersManagerToolBar" ).IsShown() )
|
||||
{
|
||||
m_Layers->ReFill();
|
||||
m_Layers->ReFillRender();
|
||||
|
@ -363,7 +363,7 @@ const wxString FOOTPRINT_EDIT_FRAME::getLibPath()
|
|||
{
|
||||
const wxString& nickname = GetCurrentLib();
|
||||
|
||||
const FP_LIB_TABLE::ROW* row = Prj().PcbFootprintLibs()->FindRow( nickname );
|
||||
const FP_LIB_TABLE_ROW* row = Prj().PcbFootprintLibs()->FindRow( nickname );
|
||||
|
||||
return row->GetFullURI( true );
|
||||
}
|
||||
|
@ -413,12 +413,12 @@ void FOOTPRINT_EDIT_FRAME::restoreLastFootprint()
|
|||
catch( const PARSE_ERROR& )
|
||||
{
|
||||
// unlikely to be a problem, since we produced the pretty string.
|
||||
wxLogError( wxT( "PARSE_ERROR" ) );
|
||||
wxLogError( "PARSE_ERROR" );
|
||||
}
|
||||
catch( const IO_ERROR& )
|
||||
{
|
||||
// unlikely to be a problem, since we produced the pretty string.
|
||||
wxLogError( wxT( "IO_ERROR" ) );
|
||||
wxLogError( "IO_ERROR" );
|
||||
}
|
||||
|
||||
if( module )
|
||||
|
@ -583,7 +583,7 @@ void FOOTPRINT_EDIT_FRAME::OnUpdateOptionsToolbar( wxUpdateUIEvent& aEvent )
|
|||
break;
|
||||
|
||||
default:
|
||||
wxMessageBox( wxT( "FOOTPRINT_EDIT_FRAME::OnUpdateOptionsToolbar error" ) );
|
||||
wxMessageBox( "FOOTPRINT_EDIT_FRAME::OnUpdateOptionsToolbar error" );
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -780,7 +780,7 @@ void FOOTPRINT_EDIT_FRAME::updateTitle()
|
|||
if( nickname.size() )
|
||||
{
|
||||
FP_LIB_TABLE* libtable = Prj().PcbFootprintLibs();
|
||||
const FP_LIB_TABLE::ROW* row = libtable->FindRow( nickname );
|
||||
const FP_LIB_TABLE_ROW* row = libtable->FindRow( nickname );
|
||||
|
||||
if( row )
|
||||
path_display = L" \u2014 " + row->GetFullURI( true );
|
||||
|
@ -838,11 +838,11 @@ void FOOTPRINT_EDIT_FRAME::ProcessPreferences( wxCommandEvent& event )
|
|||
{
|
||||
// Hotkey IDs
|
||||
case ID_PREFERENCES_HOTKEY_EXPORT_CONFIG:
|
||||
ExportHotkeyConfigToFile( g_Module_Editor_Hokeys_Descr, wxT( "pcbnew" ) );
|
||||
ExportHotkeyConfigToFile( g_Module_Editor_Hokeys_Descr, "pcbnew" );
|
||||
break;
|
||||
|
||||
case ID_PREFERENCES_HOTKEY_IMPORT_CONFIG:
|
||||
ImportHotkeyConfigFromFile( g_Module_Editor_Hokeys_Descr, wxT( "pcbnew" ) );
|
||||
ImportHotkeyConfigFromFile( g_Module_Editor_Hokeys_Descr, "pcbnew" );
|
||||
break;
|
||||
|
||||
case ID_PREFERENCES_HOTKEY_SHOW_EDITOR:
|
||||
|
@ -918,7 +918,7 @@ void FOOTPRINT_EDIT_FRAME::ProcessPreferences( wxCommandEvent& event )
|
|||
break;
|
||||
|
||||
default:
|
||||
DisplayError( this, wxT( "FOOTPRINT_EDIT_FRAME::ProcessPreferences error" ) );
|
||||
DisplayError( this, "FOOTPRINT_EDIT_FRAME::ProcessPreferences error" );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2012-2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||
* Copyright (C) 2008-2015 Wayne Stambaugh <stambaughw@verizon.net>
|
||||
* Copyright (C) 2008-2016 Wayne Stambaugh <stambaughw@verizon.net>
|
||||
* Copyright (C) 2004-2016 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
|
@ -115,8 +115,8 @@ END_EVENT_TABLE()
|
|||
#define MODAL_MODE_EXTRASTYLE wxFRAME_FLOAT_ON_PARENT
|
||||
#endif
|
||||
|
||||
#define FOOTPRINT_VIEWER_FRAME_NAME wxT( "ModViewFrame" )
|
||||
#define FOOTPRINT_VIEWER_FRAME_NAME_MODAL wxT( "ModViewFrameModal" )
|
||||
#define FOOTPRINT_VIEWER_FRAME_NAME "ModViewFrame"
|
||||
#define FOOTPRINT_VIEWER_FRAME_NAME_MODAL "ModViewFrameModal"
|
||||
|
||||
|
||||
FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrameType ) :
|
||||
|
@ -223,7 +223,7 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent
|
|||
// most likely due to the fact that the other windows are not dockable and are preventing the
|
||||
// tool bar from docking on the right and left.
|
||||
wxAuiPaneInfo toolbarPaneInfo;
|
||||
toolbarPaneInfo.Name( wxT( "m_mainToolBar" ) ).ToolbarPane().Top().CloseButton( false );
|
||||
toolbarPaneInfo.Name( "m_mainToolBar" ).ToolbarPane().Top().CloseButton( false );
|
||||
|
||||
EDA_PANEINFO info;
|
||||
info.InfoToolbarPane();
|
||||
|
@ -236,23 +236,23 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent
|
|||
|
||||
// Manage the list of libraries, left pane.
|
||||
m_auimgr.AddPane( m_libList,
|
||||
wxAuiPaneInfo( info ).Name( wxT( "m_libList" ) )
|
||||
wxAuiPaneInfo( info ).Name( "m_libList" )
|
||||
.Left().Row( 1 ).MinSize( minsize ) );
|
||||
|
||||
// Manage the list of footprints, center pane.
|
||||
m_auimgr.AddPane( m_footprintList,
|
||||
wxAuiPaneInfo( info ).Name( wxT( "m_footprintList" ) )
|
||||
wxAuiPaneInfo( info ).Name( "m_footprintList" )
|
||||
.Left().Row( 2 ).MinSize( minsize ) );
|
||||
|
||||
// Manage the draw panel, right pane.
|
||||
m_auimgr.AddPane( m_canvas,
|
||||
wxAuiPaneInfo().Name( wxT( "DrawFrame" ) ).CentrePane() );
|
||||
wxAuiPaneInfo().Name( "DrawFrame" ).CentrePane() );
|
||||
m_auimgr.AddPane( (wxWindow*) GetGalCanvas(),
|
||||
wxAuiPaneInfo().Name( wxT( "DrawFrameGal" ) ).CentrePane().Hide() );
|
||||
wxAuiPaneInfo().Name( "DrawFrameGal" ).CentrePane().Hide() );
|
||||
|
||||
// Manage the message panel, bottom pane.
|
||||
m_auimgr.AddPane( m_messagePanel,
|
||||
wxAuiPaneInfo( mesg ).Name( wxT( "MsgPanel" ) ).Bottom() );
|
||||
wxAuiPaneInfo( mesg ).Name( "MsgPanel" ).Bottom() );
|
||||
|
||||
if( !m_perspective.IsEmpty() )
|
||||
{
|
||||
|
@ -696,8 +696,8 @@ void FOOTPRINT_VIEWER_FRAME::OnIterateFootprintList( wxCommandEvent& event )
|
|||
break;
|
||||
|
||||
default:
|
||||
wxString id = wxString::Format(wxT("%i"),event.GetId());
|
||||
wxFAIL_MSG( wxT( "FOOTPRINT_VIEWER_FRAME::OnIterateFootprintList error: id = " ) + id );
|
||||
wxString id = wxString::Format( "%i", event.GetId() );
|
||||
wxFAIL_MSG( "FOOTPRINT_VIEWER_FRAME::OnIterateFootprintList error: id = " + id );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -727,7 +727,7 @@ void FOOTPRINT_VIEWER_FRAME::UpdateTitle()
|
|||
if( getCurNickname().size() )
|
||||
{
|
||||
FP_LIB_TABLE* libtable = Prj().PcbFootprintLibs();
|
||||
const FP_LIB_TABLE::ROW* row = libtable->FindRow( getCurNickname() );
|
||||
const FP_LIB_TABLE_ROW* row = libtable->FindRow( getCurNickname() );
|
||||
|
||||
if( row )
|
||||
title << L" \u2014 " << row->GetFullURI( true );
|
||||
|
|
Loading…
Reference in New Issue