Fix a bunch of un-caught boost::bad_pointer exceptions.
This also removes vector cover types which do nothing except obfuscate the underlying implementation. Mainly changes SCH_SHEET_PINS and CONFIG_PARAM_ARRAY (which will soon be replaced by Jon's new stuff).
This commit is contained in:
parent
cc573eed31
commit
836c1ea56e
|
@ -95,7 +95,7 @@ static const wxChar CoroutineStackSize[] = wxT( "CoroutineStackSize" );
|
|||
* This isn't exhaustive, but it covers most common types that might be
|
||||
* used in the advance config
|
||||
*/
|
||||
wxString dumpParamCfg( const PARAM_CFG_BASE& aParam )
|
||||
wxString dumpParamCfg( const PARAM_CFG& aParam )
|
||||
{
|
||||
wxString s = aParam.m_Ident + ": ";
|
||||
|
||||
|
@ -132,15 +132,15 @@ wxString dumpParamCfg( const PARAM_CFG_BASE& aParam )
|
|||
/**
|
||||
* Dump the configs in the given array to trace.
|
||||
*/
|
||||
static void dumpCfg( const PARAM_CFG_ARRAY& aArray )
|
||||
static void dumpCfg( const std::vector<PARAM_CFG*>& aArray )
|
||||
{
|
||||
// only dump if we need to
|
||||
if( !wxLog::IsAllowedTraceMask( AdvancedConfigMask ) )
|
||||
return;
|
||||
|
||||
for( const auto& param : aArray )
|
||||
for( const PARAM_CFG* param : aArray )
|
||||
{
|
||||
wxLogTrace( AdvancedConfigMask, dumpParamCfg( param ) );
|
||||
wxLogTrace( AdvancedConfigMask, dumpParamCfg( *param ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -198,27 +198,20 @@ void ADVANCED_CFG::loadFromConfigFile()
|
|||
|
||||
void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
|
||||
{
|
||||
PARAM_CFG_ARRAY configParams;
|
||||
std::vector<PARAM_CFG*> configParams;
|
||||
|
||||
try
|
||||
{
|
||||
configParams.push_back(
|
||||
new PARAM_CFG_BOOL( true, AC_KEYS::UsePadProperty, &m_EnableUsePadProperty, false ) );
|
||||
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::UsePadProperty,
|
||||
&m_EnableUsePadProperty, false ) );
|
||||
|
||||
configParams.push_back(
|
||||
new PARAM_CFG_BOOL( true, AC_KEYS::UsePinFunction, &m_EnableUsePinFunction, false ) );
|
||||
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::UsePinFunction,
|
||||
&m_EnableUsePinFunction, false ) );
|
||||
|
||||
configParams.push_back(
|
||||
new PARAM_CFG_BOOL( true, AC_KEYS::RealtimeConnectivity, &m_realTimeConnectivity, false ) );
|
||||
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::RealtimeConnectivity,
|
||||
&m_realTimeConnectivity, false ) );
|
||||
|
||||
configParams.push_back(
|
||||
new PARAM_CFG_INT( true, AC_KEYS::CoroutineStackSize, &m_coroutineStackSize,
|
||||
AC_STACK::default_stack, AC_STACK::min_stack, AC_STACK::max_stack ) );
|
||||
}
|
||||
catch( boost::bad_pointer& )
|
||||
{
|
||||
// Out of memory? Ship's going down anyway....
|
||||
}
|
||||
configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::CoroutineStackSize,
|
||||
&m_coroutineStackSize, AC_STACK::default_stack,
|
||||
AC_STACK::min_stack, AC_STACK::max_stack ) );
|
||||
|
||||
wxConfigLoadSetups( &aCfg, configParams );
|
||||
|
||||
|
|
|
@ -34,85 +34,85 @@
|
|||
#include <wx/wx.h> // for wxString, operator!=, operator==
|
||||
|
||||
|
||||
void wxConfigLoadParams( wxConfigBase* aCfg,
|
||||
const PARAM_CFG_ARRAY& aList, const wxString& aGroup )
|
||||
void wxConfigLoadParams( wxConfigBase* aCfg, const std::vector<PARAM_CFG*>& aList,
|
||||
const wxString& aGroup )
|
||||
{
|
||||
wxASSERT( aCfg );
|
||||
|
||||
for( const PARAM_CFG_BASE& param : aList )
|
||||
for( PARAM_CFG* param : aList )
|
||||
{
|
||||
if( !!param.m_Group )
|
||||
aCfg->SetPath( param.m_Group );
|
||||
if( !!param->m_Group )
|
||||
aCfg->SetPath( param->m_Group );
|
||||
else
|
||||
aCfg->SetPath( aGroup );
|
||||
|
||||
if( param.m_Setup )
|
||||
if( param->m_Setup )
|
||||
continue;
|
||||
|
||||
param.ReadParam( aCfg );
|
||||
param->ReadParam( aCfg );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxConfigLoadSetups( wxConfigBase* aCfg, const PARAM_CFG_ARRAY& aList )
|
||||
void wxConfigLoadSetups( wxConfigBase* aCfg, const std::vector<PARAM_CFG*>& aList )
|
||||
{
|
||||
wxASSERT( aCfg );
|
||||
|
||||
for( const PARAM_CFG_BASE& param : aList )
|
||||
for( PARAM_CFG* param : aList )
|
||||
{
|
||||
if( !param.m_Setup )
|
||||
if( !param->m_Setup )
|
||||
continue;
|
||||
|
||||
param.ReadParam( aCfg );
|
||||
param->ReadParam( aCfg );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxConfigSaveParams( wxConfigBase* aCfg,
|
||||
const PARAM_CFG_ARRAY& aList, const wxString& aGroup )
|
||||
void wxConfigSaveParams( wxConfigBase* aCfg, const std::vector<PARAM_CFG*>& aList,
|
||||
const wxString& aGroup )
|
||||
{
|
||||
wxASSERT( aCfg );
|
||||
|
||||
for( const PARAM_CFG_BASE& param : aList )
|
||||
for( PARAM_CFG* param : aList )
|
||||
{
|
||||
if( !!param.m_Group )
|
||||
aCfg->SetPath( param.m_Group );
|
||||
if( !!param->m_Group )
|
||||
aCfg->SetPath( param->m_Group );
|
||||
else
|
||||
aCfg->SetPath( aGroup );
|
||||
|
||||
if( param.m_Setup )
|
||||
if( param->m_Setup )
|
||||
continue;
|
||||
|
||||
if( param.m_Type == PARAM_COMMAND_ERASE ) // Erase all data
|
||||
if( param->m_Type == PARAM_COMMAND_ERASE ) // Erase all data
|
||||
{
|
||||
if( !!param.m_Ident )
|
||||
aCfg->DeleteGroup( param.m_Ident );
|
||||
if( !!param->m_Ident )
|
||||
aCfg->DeleteGroup( param->m_Ident );
|
||||
}
|
||||
else
|
||||
{
|
||||
param.SaveParam( aCfg );
|
||||
param->SaveParam( aCfg );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxConfigSaveSetups( wxConfigBase* aCfg, const PARAM_CFG_ARRAY& aList )
|
||||
void wxConfigSaveSetups( wxConfigBase* aCfg, const std::vector<PARAM_CFG*>& aList )
|
||||
{
|
||||
wxASSERT( aCfg );
|
||||
|
||||
for( const PARAM_CFG_BASE& param : aList )
|
||||
for( PARAM_CFG* param : aList )
|
||||
{
|
||||
if( !param.m_Setup )
|
||||
if( !param->m_Setup )
|
||||
continue;
|
||||
|
||||
if( param.m_Type == PARAM_COMMAND_ERASE ) // Erase all data
|
||||
if( param->m_Type == PARAM_COMMAND_ERASE ) // Erase all data
|
||||
{
|
||||
if( !!param.m_Ident )
|
||||
aCfg->DeleteGroup( param.m_Ident );
|
||||
if( !!param->m_Ident )
|
||||
aCfg->DeleteGroup( param->m_Ident );
|
||||
}
|
||||
else
|
||||
{
|
||||
param.SaveParam( aCfg );
|
||||
param->SaveParam( aCfg );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -130,8 +130,8 @@ void ConfigBaseWriteDouble( wxConfigBase* aConfig, const wxString& aKey, double
|
|||
}
|
||||
|
||||
|
||||
PARAM_CFG_BASE::PARAM_CFG_BASE( const wxString& ident, const paramcfg_id type,
|
||||
const wxChar* group, const wxString& legacy )
|
||||
PARAM_CFG::PARAM_CFG( const wxString& ident, const paramcfg_id type,
|
||||
const wxChar* group, const wxString& legacy )
|
||||
{
|
||||
m_Ident = ident;
|
||||
m_Type = type;
|
||||
|
@ -144,7 +144,7 @@ PARAM_CFG_BASE::PARAM_CFG_BASE( const wxString& ident, const paramcfg_id type,
|
|||
|
||||
PARAM_CFG_INT::PARAM_CFG_INT( const wxString& ident, int* ptparam, int default_val,
|
||||
int min, int max, const wxChar* group, const wxString& legacy ) :
|
||||
PARAM_CFG_BASE( ident, PARAM_INT, group, legacy )
|
||||
PARAM_CFG( ident, PARAM_INT, group, legacy )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
m_Default = default_val;
|
||||
|
@ -155,7 +155,7 @@ PARAM_CFG_INT::PARAM_CFG_INT( const wxString& ident, int* ptparam, int default_v
|
|||
|
||||
PARAM_CFG_INT::PARAM_CFG_INT( bool setup, const wxString& ident, int* ptparam, int default_val,
|
||||
int min, int max, const wxChar* group, const wxString& legacy ) :
|
||||
PARAM_CFG_BASE( ident, PARAM_INT, group, legacy )
|
||||
PARAM_CFG( ident, PARAM_INT, group, legacy )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
m_Default = default_val;
|
||||
|
@ -247,7 +247,7 @@ void PARAM_CFG_INT_WITH_SCALE::SaveParam( wxConfigBase* aConfig ) const
|
|||
PARAM_CFG_SETCOLOR::PARAM_CFG_SETCOLOR( const wxString& ident, COLOR4D* ptparam,
|
||||
COLOR4D default_val,
|
||||
const wxChar* group ) :
|
||||
PARAM_CFG_BASE( ident, PARAM_SETCOLOR, group )
|
||||
PARAM_CFG( ident, PARAM_SETCOLOR, group )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
m_Default = default_val;
|
||||
|
@ -259,7 +259,7 @@ PARAM_CFG_SETCOLOR::PARAM_CFG_SETCOLOR( bool Insetup,
|
|||
COLOR4D* ptparam,
|
||||
COLOR4D default_val,
|
||||
const wxChar* group ) :
|
||||
PARAM_CFG_BASE( ident, PARAM_SETCOLOR, group )
|
||||
PARAM_CFG( ident, PARAM_SETCOLOR, group )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
m_Default = default_val;
|
||||
|
@ -314,7 +314,7 @@ void PARAM_CFG_SETCOLOR::SaveParam( wxConfigBase* aConfig ) const
|
|||
PARAM_CFG_DOUBLE::PARAM_CFG_DOUBLE( const wxString& ident, double* ptparam,
|
||||
double default_val, double min, double max,
|
||||
const wxChar* group ) :
|
||||
PARAM_CFG_BASE( ident, PARAM_DOUBLE, group )
|
||||
PARAM_CFG( ident, PARAM_DOUBLE, group )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
m_Default = default_val;
|
||||
|
@ -330,7 +330,7 @@ PARAM_CFG_DOUBLE::PARAM_CFG_DOUBLE( bool Insetup,
|
|||
double min,
|
||||
double max,
|
||||
const wxChar* group ) :
|
||||
PARAM_CFG_BASE( ident, PARAM_DOUBLE, group )
|
||||
PARAM_CFG( ident, PARAM_DOUBLE, group )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
m_Default = default_val;
|
||||
|
@ -370,7 +370,7 @@ void PARAM_CFG_DOUBLE::SaveParam( wxConfigBase* aConfig ) const
|
|||
|
||||
PARAM_CFG_BOOL::PARAM_CFG_BOOL( const wxString& ident, bool* ptparam, int default_val,
|
||||
const wxChar* group, const wxString& legacy ) :
|
||||
PARAM_CFG_BASE( ident, PARAM_BOOL, group, legacy )
|
||||
PARAM_CFG( ident, PARAM_BOOL, group, legacy )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
m_Default = default_val ? true : false;
|
||||
|
@ -379,7 +379,7 @@ PARAM_CFG_BOOL::PARAM_CFG_BOOL( const wxString& ident, bool* ptparam, int defaul
|
|||
|
||||
PARAM_CFG_BOOL::PARAM_CFG_BOOL( bool Insetup, const wxString& ident, bool* ptparam,
|
||||
int default_val, const wxChar* group, const wxString& legacy ) :
|
||||
PARAM_CFG_BASE( ident, PARAM_BOOL, group, legacy )
|
||||
PARAM_CFG( ident, PARAM_BOOL, group, legacy )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
m_Default = default_val ? true : false;
|
||||
|
@ -412,7 +412,7 @@ void PARAM_CFG_BOOL::SaveParam( wxConfigBase* aConfig ) const
|
|||
|
||||
PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING( const wxString& ident, wxString* ptparam,
|
||||
const wxChar* group ) :
|
||||
PARAM_CFG_BASE( ident, PARAM_WXSTRING, group )
|
||||
PARAM_CFG( ident, PARAM_WXSTRING, group )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
}
|
||||
|
@ -420,7 +420,7 @@ PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING( const wxString& ident, wxString* ptparam
|
|||
|
||||
PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING( bool Insetup, const wxString& ident, wxString* ptparam,
|
||||
const wxString& default_val, const wxChar* group ) :
|
||||
PARAM_CFG_BASE( ident, PARAM_WXSTRING, group )
|
||||
PARAM_CFG( ident, PARAM_WXSTRING, group )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
m_Setup = Insetup;
|
||||
|
@ -449,7 +449,7 @@ void PARAM_CFG_WXSTRING::SaveParam( wxConfigBase* aConfig ) const
|
|||
PARAM_CFG_FILENAME::PARAM_CFG_FILENAME( const wxString& ident,
|
||||
wxString* ptparam,
|
||||
const wxChar* group ) :
|
||||
PARAM_CFG_BASE( ident, PARAM_FILENAME, group )
|
||||
PARAM_CFG( ident, PARAM_FILENAME, group )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
}
|
||||
|
@ -486,7 +486,7 @@ void PARAM_CFG_FILENAME::SaveParam( wxConfigBase* aConfig ) const
|
|||
PARAM_CFG_LIBNAME_LIST::PARAM_CFG_LIBNAME_LIST( const wxChar* ident,
|
||||
wxArrayString* ptparam,
|
||||
const wxChar* group ) :
|
||||
PARAM_CFG_BASE( ident, PARAM_LIBNAME_LIST, group )
|
||||
PARAM_CFG( ident, PARAM_LIBNAME_LIST, group )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
}
|
||||
|
|
|
@ -321,7 +321,7 @@ wxConfigBase* PROJECT::configCreate( const SEARCH_STACK& aSList,
|
|||
|
||||
|
||||
void PROJECT::ConfigSave( const SEARCH_STACK& aSList, const wxString& aGroupName,
|
||||
const PARAM_CFG_ARRAY& aParams, const wxString& aFileName )
|
||||
const std::vector<PARAM_CFG*>& aParams, const wxString& aFileName )
|
||||
{
|
||||
std::unique_ptr<wxConfigBase> cfg( configCreate( aSList, aGroupName, aFileName ) );
|
||||
|
||||
|
@ -356,7 +356,8 @@ void PROJECT::ConfigSave( const SEARCH_STACK& aSList, const wxString& aGroupName
|
|||
|
||||
|
||||
bool PROJECT::ConfigLoad( const SEARCH_STACK& aSList, const wxString& aGroupName,
|
||||
const PARAM_CFG_ARRAY& aParams, const wxString& aForeignProjectFileName )
|
||||
const std::vector<PARAM_CFG*>& aParams,
|
||||
const wxString& aForeignProjectFileName )
|
||||
{
|
||||
std::unique_ptr<wxConfigBase> cfg( configCreate( aSList, aGroupName,
|
||||
aForeignProjectFileName ) );
|
||||
|
|
|
@ -25,26 +25,26 @@
|
|||
|
||||
void SETTINGS::Load( wxConfigBase *aConfig )
|
||||
{
|
||||
for( const PARAM_CFG_BASE& param : m_params )
|
||||
for( PARAM_CFG* param : m_params )
|
||||
{
|
||||
if( !!param.m_Group )
|
||||
aConfig->SetPath( param.m_Group );
|
||||
if( !!param->m_Group )
|
||||
aConfig->SetPath( param->m_Group );
|
||||
else
|
||||
aConfig->SetPath( wxT("") );
|
||||
|
||||
param.ReadParam( aConfig );
|
||||
param->ReadParam( aConfig );
|
||||
}
|
||||
}
|
||||
|
||||
void SETTINGS::Save( wxConfigBase *aConfig )
|
||||
{
|
||||
for( PARAM_CFG_BASE& param : m_params )
|
||||
for( PARAM_CFG* param : m_params )
|
||||
{
|
||||
if( !!param.m_Group )
|
||||
aConfig->SetPath( param.m_Group );
|
||||
if( !!param->m_Group )
|
||||
aConfig->SetPath( param->m_Group );
|
||||
else
|
||||
aConfig->SetPath( wxT("") );
|
||||
|
||||
param.SaveParam( aConfig );
|
||||
param->SaveParam( aConfig );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,12 +33,12 @@
|
|||
#include <cvpcb_mainframe.h>
|
||||
|
||||
|
||||
PARAM_CFG_ARRAY& CVPCB_MAINFRAME::GetProjectFileParameters()
|
||||
std::vector<PARAM_CFG*>& CVPCB_MAINFRAME::GetProjectFileParameters()
|
||||
{
|
||||
if( !m_projectFileParams.empty() )
|
||||
return m_projectFileParams;
|
||||
|
||||
m_projectFileParams.push_back( new PARAM_CFG_BASE( GROUP_PCB_LIBS, PARAM_COMMAND_ERASE ) );
|
||||
m_projectFileParams.push_back( new PARAM_CFG( GROUP_PCB_LIBS, PARAM_COMMAND_ERASE ) );
|
||||
|
||||
m_projectFileParams.push_back( new PARAM_CFG_LIBNAME_LIST(
|
||||
wxT( "EquName" ), &m_EquFilesNames, GROUP_CVP_EQU ) );
|
||||
|
|
|
@ -81,12 +81,13 @@ public:
|
|||
FOOTPRINT_LIST* m_FootprintsList;
|
||||
|
||||
protected:
|
||||
bool m_modified;
|
||||
bool m_skipComponentSelect; // true to skip OnSelectComponent event
|
||||
// (in automatic selection/deletion of associations)
|
||||
PARAM_CFG_ARRAY m_projectFileParams;
|
||||
bool m_modified;
|
||||
bool m_skipComponentSelect; // skip component selection event during
|
||||
// automatic selection/deletion of
|
||||
// associations
|
||||
std::vector<PARAM_CFG*> m_projectFileParams;
|
||||
|
||||
bool m_initialized;
|
||||
bool m_initialized;
|
||||
|
||||
CVPCB_MAINFRAME( KIWAY* aKiway, wxWindow* aParent );
|
||||
|
||||
|
@ -334,9 +335,9 @@ public:
|
|||
* at compile time requiring global variable definitions.
|
||||
* </p>
|
||||
*
|
||||
* @return A reference to a PARAM_CFG_ARRAY contain the project settings for CvPcb.
|
||||
* @return reference to a std::vector<PARAM_CFG*> contain the project settings for CvPcb.
|
||||
*/
|
||||
PARAM_CFG_ARRAY& GetProjectFileParameters( void );
|
||||
std::vector<PARAM_CFG*>& GetProjectFileParameters( void );
|
||||
|
||||
/**
|
||||
* Function SendMessageToEESCHEMA
|
||||
|
|
|
@ -428,7 +428,7 @@ void PART_LIBS::LibNamesAndPaths( PROJECT* aProject, bool doSave,
|
|||
{
|
||||
wxString pro = aProject->GetProjectFullName();
|
||||
|
||||
PARAM_CFG_ARRAY ca;
|
||||
std::vector<PARAM_CFG*> ca;
|
||||
|
||||
try
|
||||
{
|
||||
|
|
|
@ -377,7 +377,7 @@ void CONNECTION_GRAPH::Reset()
|
|||
}
|
||||
|
||||
|
||||
void CONNECTION_GRAPH::Recalculate( SCH_SHEET_LIST aSheetList, bool aUnconditional )
|
||||
void CONNECTION_GRAPH::Recalculate( const SCH_SHEET_LIST& aSheetList, bool aUnconditional )
|
||||
{
|
||||
PROF_COUNTER recalc_time;
|
||||
PROF_COUNTER update_items;
|
||||
|
@ -385,7 +385,7 @@ void CONNECTION_GRAPH::Recalculate( SCH_SHEET_LIST aSheetList, bool aUncondition
|
|||
if( aUnconditional )
|
||||
Reset();
|
||||
|
||||
for( const auto& sheet : aSheetList )
|
||||
for( const SCH_SHEET_PATH& sheet : aSheetList )
|
||||
{
|
||||
std::vector<SCH_ITEM*> items;
|
||||
|
||||
|
@ -434,7 +434,7 @@ void CONNECTION_GRAPH::Recalculate( SCH_SHEET_LIST aSheetList, bool aUncondition
|
|||
|
||||
|
||||
void CONNECTION_GRAPH::updateItemConnectivity( SCH_SHEET_PATH aSheet,
|
||||
std::vector<SCH_ITEM*> aItemList )
|
||||
const std::vector<SCH_ITEM*>& aItemList )
|
||||
{
|
||||
std::unordered_map< wxPoint, std::vector<SCH_ITEM*> > connection_map;
|
||||
|
||||
|
@ -446,18 +446,18 @@ void CONNECTION_GRAPH::updateItemConnectivity( SCH_SHEET_PATH aSheet,
|
|||
|
||||
if( item->Type() == SCH_SHEET_T )
|
||||
{
|
||||
for( auto& pin : static_cast<SCH_SHEET*>( item )->GetPins() )
|
||||
for( SCH_SHEET_PIN* pin : static_cast<SCH_SHEET*>( item )->GetPins() )
|
||||
{
|
||||
if( !pin.Connection( aSheet ) )
|
||||
if( !pin->Connection( aSheet ) )
|
||||
{
|
||||
pin.InitializeConnection( aSheet );
|
||||
pin->InitializeConnection( aSheet );
|
||||
}
|
||||
|
||||
pin.ConnectedItems().clear();
|
||||
pin.Connection( aSheet )->Reset();
|
||||
pin->ConnectedItems().clear();
|
||||
pin->Connection( aSheet )->Reset();
|
||||
|
||||
connection_map[ pin.GetTextPos() ].push_back( &pin );
|
||||
m_items.insert( &pin );
|
||||
connection_map[ pin->GetTextPos() ].push_back( pin );
|
||||
m_items.insert( pin );
|
||||
}
|
||||
}
|
||||
else if( item->Type() == SCH_COMPONENT_T )
|
||||
|
|
|
@ -225,7 +225,7 @@ public:
|
|||
* @param aSheetList is the list of possibly modified sheets
|
||||
* @param aUnconditional is true if an unconditional full recalculation should be done
|
||||
*/
|
||||
void Recalculate( SCH_SHEET_LIST aSheetList, bool aUnconditional = false );
|
||||
void Recalculate( const SCH_SHEET_LIST& aSheetList, bool aUnconditional = false );
|
||||
|
||||
/**
|
||||
* Returns a bus alias pointer for the given name if it exists (from cache)
|
||||
|
@ -330,7 +330,7 @@ private:
|
|||
* @param aItemList is a list of items to consider
|
||||
*/
|
||||
void updateItemConnectivity( SCH_SHEET_PATH aSheet,
|
||||
std::vector<SCH_ITEM*> aItemList );
|
||||
const std::vector<SCH_ITEM*>& aItemList );
|
||||
|
||||
/**
|
||||
* Generates the connection graph (after all item connectivity has been updated)
|
||||
|
|
|
@ -68,7 +68,7 @@ bool PANEL_EESCHEMA_SETTINGS::TransferDataFromWindow()
|
|||
m_frame->SetUserUnits(
|
||||
m_choiceUnits->GetSelection() == 0 ? EDA_UNITS::INCHES : EDA_UNITS::MILLIMETRES );
|
||||
|
||||
int textSize = ValueFromString( EDA_UNITS::INCHES, m_textSizeCtrl->GetValue(), true );
|
||||
int textSize = (int) ValueFromString( EDA_UNITS::INCHES, m_textSizeCtrl->GetValue(), true );
|
||||
|
||||
if( textSize != GetDefaultTextSize() )
|
||||
{
|
||||
|
@ -77,8 +77,8 @@ bool PANEL_EESCHEMA_SETTINGS::TransferDataFromWindow()
|
|||
}
|
||||
|
||||
m_frame->SetRepeatStep(
|
||||
wxPoint( ValueFromString( EDA_UNITS::INCHES, m_hPitchCtrl->GetValue(), true ),
|
||||
ValueFromString( EDA_UNITS::INCHES, m_vPitchCtrl->GetValue(), true ) ) );
|
||||
wxPoint( (int) ValueFromString( EDA_UNITS::INCHES, m_hPitchCtrl->GetValue(), true ),
|
||||
(int) ValueFromString( EDA_UNITS::INCHES, m_vPitchCtrl->GetValue(), true ) ) );
|
||||
m_frame->SetRepeatDeltaLabel( m_spinRepeatLabel->GetValue() );
|
||||
|
||||
m_frame->SetForceHVLines( m_checkHVOrientation->GetValue() );
|
||||
|
|
|
@ -184,9 +184,9 @@ void SetLayerColor( COLOR4D aColor, SCH_LAYER_ID aLayer )
|
|||
}
|
||||
|
||||
|
||||
static PARAM_CFG_ARRAY& cfg_params()
|
||||
static std::vector<PARAM_CFG*>& cfg_params()
|
||||
{
|
||||
static PARAM_CFG_ARRAY ca;
|
||||
static std::vector<PARAM_CFG*> ca;
|
||||
|
||||
if( !ca.size() )
|
||||
{
|
||||
|
|
|
@ -181,60 +181,55 @@ void SCH_EDIT_FRAME::InstallPreferences( PAGED_DIALOG* aParent,
|
|||
}
|
||||
|
||||
|
||||
PARAM_CFG_ARRAY& SCH_EDIT_FRAME::GetProjectFileParameters()
|
||||
std::vector<PARAM_CFG*>& SCH_EDIT_FRAME::GetProjectFileParameters()
|
||||
|
||||
{
|
||||
if( !m_projectFileParams.empty() )
|
||||
return m_projectFileParams;
|
||||
|
||||
try
|
||||
{
|
||||
m_projectFileParams.push_back( new PARAM_CFG_FILENAME( wxT( "PageLayoutDescrFile" ),
|
||||
&BASE_SCREEN::m_PageLayoutDescrFileName ) );
|
||||
std::vector<PARAM_CFG*>& params = m_projectFileParams;
|
||||
|
||||
m_projectFileParams.push_back( new PARAM_CFG_FILENAME( wxT( "PlotDirectoryName" ),
|
||||
&m_plotDirectoryName ) );
|
||||
params.push_back( new PARAM_CFG_FILENAME( wxT( "PageLayoutDescrFile" ),
|
||||
&BASE_SCREEN::m_PageLayoutDescrFileName ) );
|
||||
|
||||
m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "SubpartIdSeparator" ),
|
||||
LIB_PART::SubpartIdSeparatorPtr(), 0, 0, 126 ) );
|
||||
m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "SubpartFirstId" ),
|
||||
LIB_PART::SubpartFirstIdPtr(), 'A', '1', 'z' ) );
|
||||
params.push_back( new PARAM_CFG_FILENAME( wxT( "PlotDirectoryName" ),
|
||||
&m_plotDirectoryName ) );
|
||||
|
||||
m_projectFileParams.push_back( new PARAM_CFG_WXSTRING( wxT( "NetFmtName" ),
|
||||
&m_netListFormat) );
|
||||
m_projectFileParams.push_back( new PARAM_CFG_BOOL( wxT( "SpiceAjustPassiveValues" ),
|
||||
&m_spiceAjustPassiveValues, false ) );
|
||||
params.push_back( new PARAM_CFG_INT( wxT( "SubpartIdSeparator" ),
|
||||
LIB_PART::SubpartIdSeparatorPtr(), 0, 0, 126 ) );
|
||||
params.push_back( new PARAM_CFG_INT( wxT( "SubpartFirstId" ),
|
||||
LIB_PART::SubpartFirstIdPtr(), 'A', '1', 'z' ) );
|
||||
|
||||
m_projectFileParams.push_back( new PARAM_CFG_INT( wxT( "LabSize" ),
|
||||
&s_defaultTextSize, DEFAULT_SIZE_TEXT, 5, 1000 ) );
|
||||
params.push_back( new PARAM_CFG_WXSTRING( wxT( "NetFmtName" ),
|
||||
&m_netListFormat) );
|
||||
params.push_back( new PARAM_CFG_BOOL( wxT( "SpiceAjustPassiveValues" ),
|
||||
&m_spiceAjustPassiveValues, false ) );
|
||||
|
||||
m_projectFileParams.push_back( new PARAM_CFG_BOOL( wxT( "ERC_WriteFile" ),
|
||||
&m_ercSettings.write_erc_file, false ) );
|
||||
params.push_back( new PARAM_CFG_INT( wxT( "LabSize" ),
|
||||
&s_defaultTextSize, DEFAULT_SIZE_TEXT, 5, 1000 ) );
|
||||
|
||||
m_projectFileParams.push_back( new PARAM_CFG_BOOL( wxT( "ERC_TestSimilarLabels" ),
|
||||
&m_ercSettings.check_similar_labels, true ) );
|
||||
params.push_back( new PARAM_CFG_BOOL( wxT( "ERC_WriteFile" ),
|
||||
&m_ercSettings.write_erc_file, false ) );
|
||||
|
||||
m_projectFileParams.push_back( new PARAM_CFG_BOOL( wxT( "ERC_CheckUniqueGlobalLabels" ),
|
||||
&m_ercSettings.check_unique_global_labels, true ) );
|
||||
params.push_back( new PARAM_CFG_BOOL( wxT( "ERC_TestSimilarLabels" ),
|
||||
&m_ercSettings.check_similar_labels, true ) );
|
||||
|
||||
m_projectFileParams.push_back( new PARAM_CFG_BOOL( wxT( "ERC_CheckBusDriverConflicts" ),
|
||||
&m_ercSettings.check_bus_driver_conflicts, true ) );
|
||||
params.push_back( new PARAM_CFG_BOOL( wxT( "ERC_CheckUniqueGlobalLabels" ),
|
||||
&m_ercSettings.check_unique_global_labels, true ) );
|
||||
|
||||
m_projectFileParams.push_back( new PARAM_CFG_BOOL( wxT( "ERC_CheckBusEntryConflicts" ),
|
||||
&m_ercSettings.check_bus_entry_conflicts, true ) );
|
||||
params.push_back( new PARAM_CFG_BOOL( wxT( "ERC_CheckBusDriverConflicts" ),
|
||||
&m_ercSettings.check_bus_driver_conflicts, true ) );
|
||||
|
||||
m_projectFileParams.push_back( new PARAM_CFG_BOOL( wxT( "ERC_CheckBusToBusConflicts" ),
|
||||
&m_ercSettings.check_bus_to_bus_conflicts, true ) );
|
||||
params.push_back( new PARAM_CFG_BOOL( wxT( "ERC_CheckBusEntryConflicts" ),
|
||||
&m_ercSettings.check_bus_entry_conflicts, true ) );
|
||||
|
||||
m_projectFileParams.push_back( new PARAM_CFG_BOOL( wxT( "ERC_CheckBusToNetConflicts" ),
|
||||
&m_ercSettings.check_bus_to_net_conflicts, true ) );
|
||||
}
|
||||
catch( boost::bad_pointer& )
|
||||
{
|
||||
// Out of memory? Ship's going down anyway....
|
||||
}
|
||||
params.push_back( new PARAM_CFG_BOOL( wxT( "ERC_CheckBusToBusConflicts" ),
|
||||
&m_ercSettings.check_bus_to_bus_conflicts, true ) );
|
||||
|
||||
return m_projectFileParams;
|
||||
params.push_back( new PARAM_CFG_BOOL( wxT( "ERC_CheckBusToNetConflicts" ),
|
||||
&m_ercSettings.check_bus_to_net_conflicts, true ) );
|
||||
|
||||
return params;
|
||||
}
|
||||
|
||||
|
||||
|
@ -345,36 +340,30 @@ static const wxChar selectionThickness[] = wxT( "SelectionThickness" );
|
|||
|
||||
///@}
|
||||
|
||||
PARAM_CFG_ARRAY& SCH_EDIT_FRAME::GetConfigurationSettings()
|
||||
std::vector<PARAM_CFG*>& SCH_EDIT_FRAME::GetConfigurationSettings()
|
||||
{
|
||||
if( !m_configSettings.empty() )
|
||||
return m_configSettings;
|
||||
|
||||
try
|
||||
{
|
||||
m_configSettings.push_back( new PARAM_CFG_BOOL( true, ShowPageLimitsEntry,
|
||||
&m_showPageLimits, true ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_INT(
|
||||
true, UnitsEntry, (int*) &m_userUnits, (int) EDA_UNITS::MILLIMETRES ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_BOOL( true, ShowPageLimitsEntry,
|
||||
&m_showPageLimits, true ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_INT( true, UnitsEntry,
|
||||
(int*) &m_userUnits,
|
||||
(int) EDA_UNITS::MILLIMETRES ) );
|
||||
|
||||
m_configSettings.push_back( new PARAM_CFG_BOOL( true, PrintMonochromeEntry,
|
||||
&m_printMonochrome, true ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_BOOL( true, PrintSheetRefEntry,
|
||||
&m_printSheetReference, true ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_BOOL( true, PrintMonochromeEntry,
|
||||
&m_printMonochrome, true ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_BOOL( true, PrintSheetRefEntry,
|
||||
&m_printSheetReference, true ) );
|
||||
|
||||
m_configSettings.push_back( new PARAM_CFG_INT( true, RepeatLabelIncrementEntry,
|
||||
&m_repeatDeltaLabel, DEFAULT_REPEAT_LABEL_INC,
|
||||
-10, +10 ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_BOOL( true, ShowIllegalSymboLibDialog,
|
||||
&m_showIllegalSymbolLibDialog, true ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_BOOL( true, showSheetFileNameCaseSensitivityDlg,
|
||||
&m_showSheetFileNameCaseSensitivityDlg,
|
||||
true ) );
|
||||
}
|
||||
catch( boost::bad_pointer& )
|
||||
{
|
||||
// Out of memory? Ship's going down anyway....
|
||||
}
|
||||
m_configSettings.push_back( new PARAM_CFG_INT( true, RepeatLabelIncrementEntry,
|
||||
&m_repeatDeltaLabel, DEFAULT_REPEAT_LABEL_INC,
|
||||
-10, +10 ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_BOOL( true, ShowIllegalSymboLibDialog,
|
||||
&m_showIllegalSymbolLibDialog, true ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_BOOL( true, showSheetFileNameCaseSensitivityDlg,
|
||||
&m_showSheetFileNameCaseSensitivityDlg,
|
||||
true ) );
|
||||
|
||||
return m_configSettings;
|
||||
}
|
||||
|
|
|
@ -122,8 +122,8 @@ class SCH_EDIT_FRAME : public SCH_BASE_FRAME
|
|||
private:
|
||||
wxString m_SelectedNetName;
|
||||
|
||||
PARAM_CFG_ARRAY m_projectFileParams;
|
||||
PARAM_CFG_ARRAY m_configSettings;
|
||||
std::vector<PARAM_CFG*> m_projectFileParams;
|
||||
std::vector<PARAM_CFG*> m_configSettings;
|
||||
ERC_SETTINGS m_ercSettings;
|
||||
wxPageSetupDialogData m_pageSetupData;
|
||||
bool m_printMonochrome; ///< Print monochrome instead of grey scale.
|
||||
|
@ -149,29 +149,23 @@ private:
|
|||
DIALOG_SCH_FIND* m_findReplaceDialog;
|
||||
STATUS_TEXT_POPUP* m_findReplaceStatusPopup;
|
||||
|
||||
/// Flag to indicate show hidden pins.
|
||||
bool m_showAllPins;
|
||||
bool m_showAllPins; // show hidden pins
|
||||
bool m_selectPinSelectSymbol; // select parent when clicking on pin
|
||||
|
||||
/// Flag to indicate the pin selection (on a left click) select the paren symbol.
|
||||
bool m_selectPinSelectSymbol;
|
||||
|
||||
/// The name of the destination directory to use when generating plot files.
|
||||
wxString m_plotDirectoryName;
|
||||
|
||||
/// The name of the format to use when generating a net list.
|
||||
wxString m_netListFormat;
|
||||
wxString m_plotDirectoryName;
|
||||
wxString m_netListFormat;
|
||||
|
||||
/// Use netcodes (net number) as net names when generating spice net lists.
|
||||
bool m_spiceAjustPassiveValues;
|
||||
bool m_spiceAjustPassiveValues;
|
||||
|
||||
/* these are PROJECT specific, not schematic editor specific
|
||||
wxString m_userLibraryPath;
|
||||
wxArrayString m_componentLibFiles;
|
||||
wxString m_userLibraryPath;
|
||||
wxArrayString m_componentLibFiles;
|
||||
*/
|
||||
|
||||
static PINSHEETLABEL_SHAPE m_lastSheetPinType; ///< Last sheet pin type.
|
||||
static wxSize m_lastSheetPinTextSize; ///< Last sheet pin text size.
|
||||
static wxPoint m_lastSheetPinPosition; ///< Last sheet pin position.
|
||||
static PINSHEETLABEL_SHAPE m_lastSheetPinType; ///< Last sheet pin type.
|
||||
static wxSize m_lastSheetPinTextSize; ///< Last sheet pin text size.
|
||||
static wxPoint m_lastSheetPinPosition; ///< Last sheet pin position.
|
||||
|
||||
protected:
|
||||
/**
|
||||
|
@ -258,7 +252,7 @@ public:
|
|||
* Populate the project file parameter array specific to Eeschema if it hasn't
|
||||
* already been populated and return a reference to the array to the caller.
|
||||
*/
|
||||
PARAM_CFG_ARRAY& GetProjectFileParameters();
|
||||
std::vector<PARAM_CFG*>& GetProjectFileParameters();
|
||||
|
||||
/**
|
||||
* Save changes to the project settings to the project (.pro) file.
|
||||
|
@ -313,7 +307,7 @@ public:
|
|||
* setting that need to be loaded at run time, this is the place to define it.
|
||||
* </p>
|
||||
*/
|
||||
PARAM_CFG_ARRAY& GetConfigurationSettings();
|
||||
std::vector<PARAM_CFG*>& GetConfigurationSettings();
|
||||
|
||||
void LoadSettings( wxConfigBase* aCfg ) override;
|
||||
void SaveSettings( wxConfigBase* aCfg ) override;
|
||||
|
|
|
@ -99,8 +99,8 @@ SCH_ITEM* SCH_ITEM::Duplicate( bool doClone )
|
|||
{
|
||||
SCH_SHEET* sheet = (SCH_SHEET*) newItem;
|
||||
|
||||
for( SCH_SHEET_PIN& pin : sheet->GetPins() )
|
||||
pin.ClearFlags( SELECTED | HIGHLIGHTED | BRIGHTENED );
|
||||
for( SCH_SHEET_PIN* pin : sheet->GetPins() )
|
||||
pin->ClearFlags( SELECTED | HIGHLIGHTED | BRIGHTENED );
|
||||
}
|
||||
|
||||
return newItem;
|
||||
|
|
|
@ -1011,6 +1011,7 @@ SCH_SHEET* SCH_LEGACY_PLUGIN::loadSheet( LINE_READER& aReader )
|
|||
}
|
||||
else // Sheet pin.
|
||||
{
|
||||
// Use a unique_ptr so that we clean up in the case of a throw
|
||||
std::unique_ptr< SCH_SHEET_PIN > sheetPin( new SCH_SHEET_PIN( sheet.get() ) );
|
||||
|
||||
sheetPin->SetNumber( fieldId );
|
||||
|
@ -2162,14 +2163,14 @@ void SCH_LEGACY_PLUGIN::saveSheet( SCH_SHEET* aSheet )
|
|||
m_out->Print( 0, "F1 %s %d\n", EscapedUTF8( aSheet->GetFileName() ).c_str(),
|
||||
Iu2Mils( aSheet->GetFileNameSize() ) );
|
||||
|
||||
for( const SCH_SHEET_PIN& pin : aSheet->GetPins() )
|
||||
for( const SCH_SHEET_PIN* pin : aSheet->GetPins() )
|
||||
{
|
||||
int type, side;
|
||||
|
||||
if( pin.GetText().IsEmpty() )
|
||||
if( pin->GetText().IsEmpty() )
|
||||
break;
|
||||
|
||||
switch( pin.GetEdge() )
|
||||
switch( pin->GetEdge() )
|
||||
{
|
||||
default:
|
||||
case SHEET_LEFT_SIDE: side = 'L'; break;
|
||||
|
@ -2178,7 +2179,7 @@ void SCH_LEGACY_PLUGIN::saveSheet( SCH_SHEET* aSheet )
|
|||
case SHEET_BOTTOM_SIDE: side = 'B'; break;
|
||||
}
|
||||
|
||||
switch( pin.GetShape() )
|
||||
switch( pin->GetShape() )
|
||||
{
|
||||
case PINSHEETLABEL_SHAPE::PS_INPUT:
|
||||
type = 'I';
|
||||
|
@ -2198,11 +2199,11 @@ void SCH_LEGACY_PLUGIN::saveSheet( SCH_SHEET* aSheet )
|
|||
break;
|
||||
}
|
||||
|
||||
m_out->Print( 0, "F%d %s %c %c %-3d %-3d %-3d\n", pin.GetNumber(),
|
||||
EscapedUTF8( pin.GetText() ).c_str(), // supplies wrapping quotes
|
||||
type, side, Iu2Mils( pin.GetPosition().x ),
|
||||
Iu2Mils( pin.GetPosition().y ),
|
||||
Iu2Mils( pin.GetTextWidth() ) );
|
||||
m_out->Print( 0, "F%d %s %c %c %-3d %-3d %-3d\n", pin->GetNumber(),
|
||||
EscapedUTF8( pin->GetText() ).c_str(), // supplies wrapping quotes
|
||||
type, side, Iu2Mils( pin->GetPosition().x ),
|
||||
Iu2Mils( pin->GetPosition().y ),
|
||||
Iu2Mils( pin->GetTextWidth() ) );
|
||||
}
|
||||
|
||||
m_out->Print( 0, "$EndSheet\n" );
|
||||
|
|
|
@ -1522,20 +1522,20 @@ void SCH_PAINTER::draw( SCH_SHEET *aSheet, int aLayer )
|
|||
|
||||
if( aLayer == LAYER_HIERLABEL || drawingShadows )
|
||||
{
|
||||
for( auto& sheetPin : aSheet->GetPins() )
|
||||
for( SCH_SHEET_PIN* sheetPin : aSheet->GetPins() )
|
||||
{
|
||||
if( drawingShadows && !aSheet->IsSelected() && !sheetPin.IsSelected() )
|
||||
if( drawingShadows && !aSheet->IsSelected() && !sheetPin->IsSelected() )
|
||||
continue;
|
||||
|
||||
if( drawingShadows && !GetSelectionDrawChildItems() && aSheet->IsSelected() )
|
||||
break;
|
||||
|
||||
int width = aSheet->GetPenSize();
|
||||
wxPoint initial_pos = sheetPin.GetTextPos();
|
||||
wxPoint initial_pos = sheetPin->GetTextPos();
|
||||
wxPoint offset_pos = initial_pos;
|
||||
|
||||
// For aesthetic reasons, the SHEET_PIN is drawn with a small offset of width / 2
|
||||
switch( sheetPin.GetEdge() )
|
||||
switch( sheetPin->GetEdge() )
|
||||
{
|
||||
case SHEET_TOP_SIDE: offset_pos.y += KiROUND( width / 2.0 ); break;
|
||||
case SHEET_BOTTOM_SIDE: offset_pos.y -= KiROUND( width / 2.0 ); break;
|
||||
|
@ -1544,10 +1544,10 @@ void SCH_PAINTER::draw( SCH_SHEET *aSheet, int aLayer )
|
|||
default: break;
|
||||
}
|
||||
|
||||
sheetPin.SetTextPos( offset_pos );
|
||||
draw( static_cast<SCH_HIERLABEL*>( &sheetPin ), aLayer );
|
||||
sheetPin->SetTextPos( offset_pos );
|
||||
draw( static_cast<SCH_HIERLABEL*>( sheetPin ), aLayer );
|
||||
m_gal->DrawLine( offset_pos, initial_pos );
|
||||
sheetPin.SetTextPos( initial_pos );
|
||||
sheetPin->SetTextPos( initial_pos );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -72,10 +72,12 @@ SCH_SHEET::SCH_SHEET( const SCH_SHEET& aSheet ) :
|
|||
m_screen = aSheet.m_screen;
|
||||
m_name = aSheet.m_name;
|
||||
m_fileName = aSheet.m_fileName;
|
||||
m_pins = aSheet.m_pins;
|
||||
|
||||
for( size_t i = 0; i < m_pins.size(); i++ )
|
||||
m_pins[i].SetParent( this );
|
||||
for( SCH_SHEET_PIN* pin : aSheet.m_pins )
|
||||
{
|
||||
m_pins.emplace_back( new SCH_SHEET_PIN( *pin ) );
|
||||
m_pins.back()->SetParent( this );
|
||||
}
|
||||
|
||||
if( m_screen )
|
||||
m_screen->IncRefCount();
|
||||
|
@ -93,6 +95,10 @@ SCH_SHEET::~SCH_SHEET()
|
|||
if( m_screen->GetRefCount() == 0 )
|
||||
delete m_screen;
|
||||
}
|
||||
|
||||
// We own our pins; delete them
|
||||
for( SCH_SHEET_PIN* pin : m_pins )
|
||||
delete pin;
|
||||
}
|
||||
|
||||
|
||||
|
@ -161,17 +167,12 @@ void SCH_SHEET::SwapData( SCH_ITEM* aItem )
|
|||
std::swap( m_fileNameSize, sheet->m_fileNameSize );
|
||||
m_pins.swap( sheet->m_pins );
|
||||
|
||||
// Ensure sheet labels have their .m_Parent member pointing really on their
|
||||
// parent, after swapping.
|
||||
for( SCH_SHEET_PIN& sheetPin : m_pins )
|
||||
{
|
||||
sheetPin.SetParent( this );
|
||||
}
|
||||
// Update parent pointers after swapping.
|
||||
for( SCH_SHEET_PIN* sheetPin : m_pins )
|
||||
sheetPin->SetParent( this );
|
||||
|
||||
for( SCH_SHEET_PIN& sheetPin : sheet->m_pins )
|
||||
{
|
||||
sheetPin.SetParent( sheet );
|
||||
}
|
||||
for( SCH_SHEET_PIN* sheetPin : sheet->m_pins )
|
||||
sheetPin->SetParent( sheet );
|
||||
}
|
||||
|
||||
|
||||
|
@ -190,9 +191,7 @@ void SCH_SHEET::RemovePin( SCH_SHEET_PIN* aSheetPin )
|
|||
wxASSERT( aSheetPin != NULL );
|
||||
wxASSERT( aSheetPin->Type() == SCH_SHEET_PIN_T );
|
||||
|
||||
SCH_SHEET_PINS::iterator i;
|
||||
|
||||
for( i = m_pins.begin(); i < m_pins.end(); ++i )
|
||||
for( auto i = m_pins.begin(); i < m_pins.end(); ++i )
|
||||
{
|
||||
if( *i == aSheetPin )
|
||||
{
|
||||
|
@ -209,9 +208,9 @@ void SCH_SHEET::RemovePin( SCH_SHEET_PIN* aSheetPin )
|
|||
|
||||
bool SCH_SHEET::HasPin( const wxString& aName )
|
||||
{
|
||||
for( const SCH_SHEET_PIN& pin : m_pins )
|
||||
for( SCH_SHEET_PIN* pin : m_pins )
|
||||
{
|
||||
if( pin.GetText().CmpNoCase( aName ) == 0 )
|
||||
if( pin->GetText().CmpNoCase( aName ) == 0 )
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -224,9 +223,9 @@ bool SCH_SHEET::IsVerticalOrientation() const
|
|||
int leftRight = 0;
|
||||
int topBottom = 0;
|
||||
|
||||
for( const SCH_SHEET_PIN& pin : m_pins )
|
||||
for( SCH_SHEET_PIN* pin : m_pins )
|
||||
{
|
||||
switch( pin.GetEdge() )
|
||||
switch( pin->GetEdge() )
|
||||
{
|
||||
case SHEET_LEFT_SIDE: leftRight++; break;
|
||||
case SHEET_RIGHT_SIDE: leftRight++; break;
|
||||
|
@ -242,13 +241,13 @@ bool SCH_SHEET::IsVerticalOrientation() const
|
|||
|
||||
bool SCH_SHEET::HasUndefinedPins()
|
||||
{
|
||||
for( const SCH_SHEET_PIN& pin : m_pins )
|
||||
for( SCH_SHEET_PIN* pin : m_pins )
|
||||
{
|
||||
/* Search the schematic for a hierarchical label corresponding to this sheet label. */
|
||||
const SCH_HIERLABEL* HLabel = nullptr;
|
||||
for( auto aItem : m_screen->Items().OfType( SCH_HIER_LABEL_T ) )
|
||||
{
|
||||
if( !pin.GetText().CmpNoCase( static_cast<SCH_HIERLABEL*>( aItem )->GetText() ) )
|
||||
if( !pin->GetText().CmpNoCase( static_cast<SCH_HIERLABEL*>( aItem )->GetText() ) )
|
||||
{
|
||||
HLabel = static_cast<SCH_HIERLABEL*>( aItem );
|
||||
break;
|
||||
|
@ -269,8 +268,8 @@ int SCH_SHEET::GetMinWidth() const
|
|||
|
||||
for( size_t i = 0; i < m_pins.size(); i++ )
|
||||
{
|
||||
int edge = m_pins[i].GetEdge();
|
||||
EDA_RECT pinRect = m_pins[i].GetBoundingBox();
|
||||
int edge = m_pins[i]->GetEdge();
|
||||
EDA_RECT pinRect = m_pins[i]->GetBoundingBox();
|
||||
|
||||
wxASSERT( edge != SHEET_UNDEFINED_SIDE );
|
||||
|
||||
|
@ -287,12 +286,12 @@ int SCH_SHEET::GetMinWidth() const
|
|||
for( size_t j = 0; j < m_pins.size(); j++ )
|
||||
{
|
||||
// Check for pin directly across from the current pin.
|
||||
if( (i == j) || (m_pins[i].GetPosition().y != m_pins[j].GetPosition().y) )
|
||||
if( (i == j) || (m_pins[i]->GetPosition().y != m_pins[j]->GetPosition().y) )
|
||||
continue;
|
||||
|
||||
if( width < pinRect.GetWidth() + m_pins[j].GetBoundingBox().GetWidth() )
|
||||
if( width < pinRect.GetWidth() + m_pins[j]->GetBoundingBox().GetWidth() )
|
||||
{
|
||||
width = pinRect.GetWidth() + m_pins[j].GetBoundingBox().GetWidth();
|
||||
width = pinRect.GetWidth() + m_pins[j]->GetBoundingBox().GetWidth();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -309,8 +308,8 @@ int SCH_SHEET::GetMinHeight() const
|
|||
|
||||
for( size_t i = 0; i < m_pins.size(); i++ )
|
||||
{
|
||||
int edge = m_pins[i].GetEdge();
|
||||
EDA_RECT pinRect = m_pins[i].GetBoundingBox();
|
||||
int edge = m_pins[i]->GetEdge();
|
||||
EDA_RECT pinRect = m_pins[i]->GetBoundingBox();
|
||||
|
||||
// Make sure pin is on top or bottom side of sheet.
|
||||
if( edge == SHEET_RIGHT_SIDE || edge == SHEET_LEFT_SIDE )
|
||||
|
@ -326,12 +325,12 @@ int SCH_SHEET::GetMinHeight() const
|
|||
for( size_t j = 0; j < m_pins.size(); j++ )
|
||||
{
|
||||
// Check for pin directly above or below the current pin.
|
||||
if( (i == j) || (m_pins[i].GetPosition().x != m_pins[j].GetPosition().x) )
|
||||
if( (i == j) || (m_pins[i]->GetPosition().x != m_pins[j]->GetPosition().x) )
|
||||
continue;
|
||||
|
||||
if( height < pinRect.GetHeight() + m_pins[j].GetBoundingBox().GetHeight() )
|
||||
if( height < pinRect.GetHeight() + m_pins[j]->GetBoundingBox().GetHeight() )
|
||||
{
|
||||
height = pinRect.GetHeight() + m_pins[j].GetBoundingBox().GetHeight();
|
||||
height = pinRect.GetHeight() + m_pins[j]->GetBoundingBox().GetHeight();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -344,16 +343,16 @@ int SCH_SHEET::GetMinHeight() const
|
|||
|
||||
void SCH_SHEET::CleanupSheet()
|
||||
{
|
||||
SCH_SHEET_PINS::iterator i = m_pins.begin();
|
||||
auto i = m_pins.begin();
|
||||
|
||||
while( i != m_pins.end() )
|
||||
{
|
||||
/* Search the schematic for a hierarchical label corresponding to this sheet label. */
|
||||
const SCH_HIERLABEL* HLabel = NULL;
|
||||
|
||||
for( auto aItem : m_screen->Items().OfType( SCH_HIER_LABEL_T ) )
|
||||
for( SCH_ITEM* aItem : m_screen->Items().OfType( SCH_HIER_LABEL_T ) )
|
||||
{
|
||||
if( !i->GetText().CmpNoCase( static_cast<SCH_HIERLABEL*>( aItem )->GetText() ) )
|
||||
if( (*i)->GetText().CmpNoCase( static_cast<SCH_HIERLABEL*>( aItem )->GetText() ) == 0 )
|
||||
{
|
||||
HLabel = static_cast<SCH_HIERLABEL*>( aItem );
|
||||
break;
|
||||
|
@ -370,10 +369,10 @@ void SCH_SHEET::CleanupSheet()
|
|||
|
||||
SCH_SHEET_PIN* SCH_SHEET::GetPin( const wxPoint& aPosition )
|
||||
{
|
||||
for( SCH_SHEET_PIN& pin : m_pins )
|
||||
for( SCH_SHEET_PIN* pin : m_pins )
|
||||
{
|
||||
if( pin.HitTest( aPosition ) )
|
||||
return &pin;
|
||||
if( pin->HitTest( aPosition ) )
|
||||
return pin;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
@ -470,8 +469,8 @@ void SCH_SHEET::Print( wxDC* aDC, const wxPoint& aOffset )
|
|||
textSize, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_TOP, textWidth, false, false );
|
||||
|
||||
/* Draw text : SheetLabel */
|
||||
for( SCH_SHEET_PIN& sheetPin : m_pins )
|
||||
sheetPin.Print( aDC, aOffset );
|
||||
for( SCH_SHEET_PIN* sheetPin : m_pins )
|
||||
sheetPin->Print( aDC, aOffset );
|
||||
}
|
||||
|
||||
|
||||
|
@ -650,10 +649,8 @@ void SCH_SHEET::Rotate(wxPoint aPosition)
|
|||
m_size.y = -m_size.y;
|
||||
}
|
||||
|
||||
for( SCH_SHEET_PIN& sheetPin : m_pins )
|
||||
{
|
||||
sheetPin.Rotate( aPosition );
|
||||
}
|
||||
for( SCH_SHEET_PIN* sheetPin : m_pins )
|
||||
sheetPin->Rotate( aPosition );
|
||||
}
|
||||
|
||||
|
||||
|
@ -662,10 +659,8 @@ void SCH_SHEET::MirrorX( int aXaxis_position )
|
|||
MIRROR( m_pos.y, aXaxis_position );
|
||||
m_pos.y -= m_size.y;
|
||||
|
||||
for( SCH_SHEET_PIN& sheetPin : m_pins )
|
||||
{
|
||||
sheetPin.MirrorX( aXaxis_position );
|
||||
}
|
||||
for( SCH_SHEET_PIN* sheetPin : m_pins )
|
||||
sheetPin->MirrorX( aXaxis_position );
|
||||
}
|
||||
|
||||
|
||||
|
@ -674,10 +669,8 @@ void SCH_SHEET::MirrorY( int aYaxis_position )
|
|||
MIRROR( m_pos.x, aYaxis_position );
|
||||
m_pos.x -= m_size.x;
|
||||
|
||||
for( SCH_SHEET_PIN& label : m_pins )
|
||||
{
|
||||
label.MirrorY( aYaxis_position );
|
||||
}
|
||||
for( SCH_SHEET_PIN* sheetPin : m_pins )
|
||||
sheetPin->MirrorY( aYaxis_position );
|
||||
}
|
||||
|
||||
void SCH_SHEET::SetPosition( const wxPoint& aPosition )
|
||||
|
@ -697,10 +690,8 @@ void SCH_SHEET::Resize( const wxSize& aSize )
|
|||
m_size = aSize;
|
||||
|
||||
/* Move the sheet labels according to the new sheet size. */
|
||||
for( SCH_SHEET_PIN& label : m_pins )
|
||||
{
|
||||
label.ConstrainOnEdge( label.GetPosition() );
|
||||
}
|
||||
for( SCH_SHEET_PIN* sheetPin : m_pins )
|
||||
sheetPin->ConstrainOnEdge( sheetPin->GetPosition() );
|
||||
}
|
||||
|
||||
|
||||
|
@ -734,9 +725,9 @@ void SCH_SHEET::renumberPins()
|
|||
{
|
||||
int id = 2;
|
||||
|
||||
for( SCH_SHEET_PIN& pin : m_pins )
|
||||
for( SCH_SHEET_PIN* pin : m_pins )
|
||||
{
|
||||
pin.SetNumber( id );
|
||||
pin->SetNumber( id );
|
||||
id++;
|
||||
}
|
||||
}
|
||||
|
@ -744,14 +735,12 @@ void SCH_SHEET::renumberPins()
|
|||
|
||||
void SCH_SHEET::GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList )
|
||||
{
|
||||
for( unsigned ii = 0; ii < GetPins().size(); ii++ )
|
||||
for( SCH_SHEET_PIN* sheetPin : m_pins )
|
||||
{
|
||||
SCH_SHEET_PIN &pinsheet = GetPins()[ii];
|
||||
|
||||
wxCHECK2_MSG( pinsheet.Type() == SCH_SHEET_PIN_T, continue,
|
||||
wxCHECK2_MSG( sheetPin->Type() == SCH_SHEET_PIN_T, continue,
|
||||
wxT( "Invalid item in schematic sheet pin list. Bad programmer!" ) );
|
||||
|
||||
pinsheet.GetEndPoints( aItemList );
|
||||
sheetPin->GetEndPoints( aItemList );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -760,8 +749,8 @@ bool SCH_SHEET::UpdateDanglingState( std::vector<DANGLING_END_ITEM>& aItemList )
|
|||
{
|
||||
bool changed = false;
|
||||
|
||||
for( SCH_SHEET_PIN& pinsheet : GetPins() )
|
||||
changed |= pinsheet.UpdateDanglingState( aItemList );
|
||||
for( SCH_SHEET_PIN* sheetPin : m_pins )
|
||||
changed |= sheetPin->UpdateDanglingState( aItemList );
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
@ -769,8 +758,8 @@ bool SCH_SHEET::UpdateDanglingState( std::vector<DANGLING_END_ITEM>& aItemList )
|
|||
|
||||
void SCH_SHEET::GetConnectionPoints( std::vector< wxPoint >& aPoints ) const
|
||||
{
|
||||
for( size_t i = 0; i < GetPins().size(); i++ )
|
||||
aPoints.push_back( GetPins()[i].GetPosition() );
|
||||
for( SCH_SHEET_PIN* sheetPin : m_pins )
|
||||
aPoints.push_back( sheetPin->GetPosition() );
|
||||
}
|
||||
|
||||
|
||||
|
@ -790,9 +779,9 @@ SEARCH_RESULT SCH_SHEET::Visit( INSPECTOR aInspector, void* testData, const KICA
|
|||
if( stype == SCH_LOCATE_ANY_T || stype == SCH_SHEET_PIN_T )
|
||||
{
|
||||
// Test the sheet labels.
|
||||
for( size_t i = 0; i < m_pins.size(); i++ )
|
||||
for( SCH_SHEET_PIN* sheetPin : m_pins )
|
||||
{
|
||||
if( SEARCH_RESULT::QUIT == aInspector( &m_pins[i], this ) )
|
||||
if( SEARCH_RESULT::QUIT == aInspector( sheetPin, this ) )
|
||||
return SEARCH_RESULT::QUIT;
|
||||
}
|
||||
}
|
||||
|
@ -843,20 +832,20 @@ void SCH_SHEET::GetNetListItem( NETLIST_OBJECT_LIST& aNetListItems,
|
|||
SCH_SHEET_PATH sheetPath = *aSheetPath;
|
||||
sheetPath.push_back( this );
|
||||
|
||||
for( size_t i = 0; i < m_pins.size(); i++ )
|
||||
for( SCH_SHEET_PIN* sheetPin : m_pins )
|
||||
{
|
||||
NETLIST_OBJECT* item = new NETLIST_OBJECT();
|
||||
item->m_SheetPathInclude = sheetPath;
|
||||
item->m_SheetPath = *aSheetPath;
|
||||
item->m_Comp = &m_pins[i];
|
||||
item->m_Comp = sheetPin;
|
||||
item->m_Link = this;
|
||||
item->m_Type = NET_SHEETLABEL;
|
||||
item->m_Label = m_pins[i].GetText();
|
||||
item->m_Start = item->m_End = m_pins[i].GetPosition();
|
||||
item->m_Label = sheetPin->GetText();
|
||||
item->m_Start = item->m_End = sheetPin->GetPosition();
|
||||
aNetListItems.push_back( item );
|
||||
|
||||
SCH_CONNECTION conn;
|
||||
if( conn.IsBusLabel( m_pins[i].GetText() ) )
|
||||
if( conn.IsBusLabel( sheetPin->GetText() ) )
|
||||
item->ConvertBusToNetListItems( aNetListItems );
|
||||
}
|
||||
}
|
||||
|
@ -933,14 +922,12 @@ void SCH_SHEET::Plot( PLOTTER* aPlotter )
|
|||
aPlotter->SetColor( GetLayerColor( GetLayer() ) );
|
||||
|
||||
/* Draw texts : SheetLabel */
|
||||
for( size_t i = 0; i < m_pins.size(); i++ )
|
||||
{
|
||||
m_pins[i].Plot( aPlotter );
|
||||
}
|
||||
for( SCH_SHEET_PIN* sheetPin : m_pins )
|
||||
sheetPin->Plot( aPlotter );
|
||||
}
|
||||
|
||||
|
||||
SCH_ITEM& SCH_SHEET::operator=( const SCH_ITEM& aItem )
|
||||
SCH_SHEET& SCH_SHEET::operator=( const SCH_ITEM& aItem )
|
||||
{
|
||||
wxLogDebug( wxT( "Sheet assignment operator." ) );
|
||||
|
||||
|
@ -959,13 +946,11 @@ SCH_ITEM& SCH_SHEET::operator=( const SCH_ITEM& aItem )
|
|||
m_name = sheet->m_name;
|
||||
m_sheetNameSize = sheet->m_sheetNameSize;
|
||||
m_fileNameSize = sheet->m_fileNameSize;
|
||||
m_pins = sheet->m_pins;
|
||||
|
||||
// Ensure sheet labels have their #m_Parent member pointing really on their
|
||||
// parent, after assigning.
|
||||
for( SCH_SHEET_PIN& sheetPin : m_pins )
|
||||
for( SCH_SHEET_PIN* pin : sheet->m_pins )
|
||||
{
|
||||
sheetPin.SetParent( this );
|
||||
m_pins.emplace_back( new SCH_SHEET_PIN( *pin ) );
|
||||
m_pins.back()->SetParent( this );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -984,10 +969,8 @@ void SCH_SHEET::Show( int nestLevel, std::ostream& os ) const
|
|||
<< TO_UTF8( m_name ) << '"' << ">\n";
|
||||
|
||||
// show all the pins, and check the linked list integrity
|
||||
for( const SCH_SHEET_PIN& label : m_pins )
|
||||
{
|
||||
label.Show( nestLevel + 1, os );
|
||||
}
|
||||
for( SCH_SHEET_PIN* sheetPin : m_pins )
|
||||
sheetPin->Show( nestLevel + 1, os );
|
||||
|
||||
NestedSpace( nestLevel, os ) << "</" << s.Lower().mb_str() << ">\n" << std::flush;
|
||||
}
|
||||
|
|
|
@ -200,9 +200,6 @@ public:
|
|||
};
|
||||
|
||||
|
||||
typedef boost::ptr_vector<SCH_SHEET_PIN> SCH_SHEET_PINS;
|
||||
|
||||
|
||||
/**
|
||||
* Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
|
||||
*/
|
||||
|
@ -215,7 +212,7 @@ class SCH_SHEET : public SCH_ITEM
|
|||
SCH_SCREEN* m_screen;
|
||||
|
||||
/// The list of sheet connection points.
|
||||
SCH_SHEET_PINS m_pins;
|
||||
std::vector<SCH_SHEET_PIN*> m_pins;
|
||||
|
||||
/// The file name is also in the #SCH_SCREEN object associated with the sheet. It is
|
||||
/// also needed here for loading after reading the sheet description from file.
|
||||
|
@ -332,11 +329,11 @@ public:
|
|||
*/
|
||||
void AddPin( SCH_SHEET_PIN* aSheetPin );
|
||||
|
||||
SCH_SHEET_PINS& GetPins() { return m_pins; }
|
||||
std::vector<SCH_SHEET_PIN*>& GetPins() { return m_pins; }
|
||||
|
||||
SCH_SHEET_PINS& GetPins() const
|
||||
std::vector<SCH_SHEET_PIN*>& GetPins() const
|
||||
{
|
||||
return const_cast< SCH_SHEET_PINS& >( m_pins );
|
||||
return const_cast< std::vector<SCH_SHEET_PIN*>& >( m_pins );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -479,10 +476,8 @@ public:
|
|||
{
|
||||
m_pos += aMoveVector;
|
||||
|
||||
for( SCH_SHEET_PIN& pin : m_pins )
|
||||
{
|
||||
pin.Move( aMoveVector );
|
||||
}
|
||||
for( SCH_SHEET_PIN* pin : m_pins )
|
||||
pin->Move( aMoveVector );
|
||||
}
|
||||
|
||||
void MirrorY( int aYaxis_position ) override;
|
||||
|
@ -536,7 +531,7 @@ public:
|
|||
void GetNetListItem( NETLIST_OBJECT_LIST& aNetListItems,
|
||||
SCH_SHEET_PATH* aSheetPath ) override;
|
||||
|
||||
SCH_ITEM& operator=( const SCH_ITEM& aSheet );
|
||||
SCH_SHEET& operator=( const SCH_ITEM& aSheet );
|
||||
|
||||
void ViewGetLayers( int aLayers[], int& aCount ) const override;
|
||||
|
||||
|
|
|
@ -532,11 +532,11 @@ void EE_POINT_EDITOR::updateItem() const
|
|||
sheet->SetSize( wxSize( botRight.x - topLeft.x, botRight.y - topLeft.y ) );
|
||||
|
||||
// Keep sheet pins attached to edges:
|
||||
for( SCH_SHEET_PIN& pin : sheet->GetPins() )
|
||||
for( SCH_SHEET_PIN* pin : sheet->GetPins() )
|
||||
{
|
||||
wxPoint pos = pin.GetPosition();
|
||||
wxPoint pos = pin->GetPosition();
|
||||
|
||||
switch( pin.GetEdge() )
|
||||
switch( pin->GetEdge() )
|
||||
{
|
||||
case SHEET_LEFT_SIDE: pos.x = topLeft.x; break;
|
||||
case SHEET_RIGHT_SIDE: pos.x = topRight.x; break;
|
||||
|
@ -545,7 +545,7 @@ void EE_POINT_EDITOR::updateItem() const
|
|||
case SHEET_UNDEFINED_SIDE: break;
|
||||
}
|
||||
|
||||
pin.SetPosition( pos );
|
||||
pin->SetPosition( pos );
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
|
@ -718,8 +718,8 @@ bool EE_SELECTION_TOOL::selectMultiple()
|
|||
{
|
||||
int layer = pair.second;
|
||||
|
||||
for( SCH_SHEET_PIN& pin : sheet->GetPins() )
|
||||
sheetPins.emplace_back( KIGFX::VIEW::LAYER_ITEM_PAIR( &pin, layer ) );
|
||||
for( SCH_SHEET_PIN* pin : sheet->GetPins() )
|
||||
sheetPins.emplace_back( KIGFX::VIEW::LAYER_ITEM_PAIR( pin, layer ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1223,14 +1223,14 @@ void EE_SELECTION_TOOL::highlight( EDA_ITEM* aItem, int aMode, EE_SELECTION* aGr
|
|||
}
|
||||
else if( itemType == SCH_SHEET_T )
|
||||
{
|
||||
SCH_SHEET_PINS& pins = static_cast<SCH_SHEET*>( aItem )->GetPins();
|
||||
std::vector<SCH_SHEET_PIN*>& pins = static_cast<SCH_SHEET*>( aItem )->GetPins();
|
||||
|
||||
for( SCH_SHEET_PIN& pin : pins )
|
||||
for( SCH_SHEET_PIN* pin : pins )
|
||||
{
|
||||
if( aMode == SELECTED )
|
||||
pin.SetSelected();
|
||||
pin->SetSelected();
|
||||
else if( aMode == BRIGHTENED )
|
||||
pin.SetBrightened();
|
||||
pin->SetBrightened();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1280,14 +1280,14 @@ void EE_SELECTION_TOOL::unhighlight( EDA_ITEM* aItem, int aMode, EE_SELECTION* a
|
|||
}
|
||||
else if( itemType == SCH_SHEET_T )
|
||||
{
|
||||
SCH_SHEET_PINS& pins = static_cast<SCH_SHEET*>( aItem )->GetPins();
|
||||
std::vector<SCH_SHEET_PIN*>& pins = static_cast<SCH_SHEET*>( aItem )->GetPins();
|
||||
|
||||
for( SCH_SHEET_PIN& pin : pins )
|
||||
for( SCH_SHEET_PIN* pin : pins )
|
||||
{
|
||||
if( aMode == SELECTED )
|
||||
pin.ClearSelected();
|
||||
pin->ClearSelected();
|
||||
else if( aMode == BRIGHTENED )
|
||||
pin.ClearBrightened();
|
||||
pin->ClearBrightened();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -738,20 +738,20 @@ int SCH_EDITOR_CONTROL::UpdateNetHighlighting( const TOOL_EVENT& aEvent )
|
|||
}
|
||||
else if( item->Type() == SCH_SHEET_T )
|
||||
{
|
||||
for( SCH_SHEET_PIN& pin : static_cast<SCH_SHEET*>( item )->GetPins() )
|
||||
for( SCH_SHEET_PIN* pin : static_cast<SCH_SHEET*>( item )->GetPins() )
|
||||
{
|
||||
auto pin_conn = pin.Connection( *g_CurrentSheet );
|
||||
bool redrawPin = pin.IsBrightened();
|
||||
auto pin_conn = pin->Connection( *g_CurrentSheet );
|
||||
bool redrawPin = pin->IsBrightened();
|
||||
|
||||
if( pin_conn && pin_conn->Name() == selectedNetName )
|
||||
pin.SetBrightened();
|
||||
pin->SetBrightened();
|
||||
else
|
||||
pin.ClearBrightened();
|
||||
pin->ClearBrightened();
|
||||
|
||||
redrawPin |= pin.IsBrightened();
|
||||
redrawPin |= pin->IsBrightened();
|
||||
|
||||
if( redrawPin )
|
||||
itemsToRedraw.push_back( &pin );
|
||||
itemsToRedraw.push_back( pin );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -387,12 +387,10 @@ const SCH_SHEET_PIN* SCH_LINE_WIRE_BUS_TOOL::getSheetPin( const wxPoint& aPositi
|
|||
{
|
||||
auto sheet = static_cast<SCH_SHEET*>( item );
|
||||
|
||||
for( const SCH_SHEET_PIN& pin : sheet->GetPins() )
|
||||
for( SCH_SHEET_PIN* pin : sheet->GetPins() )
|
||||
{
|
||||
if( pin.GetPosition() == aPosition )
|
||||
{
|
||||
return &pin;
|
||||
}
|
||||
if( pin->GetPosition() == aPosition )
|
||||
return pin;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -47,38 +47,32 @@ void GERBVIEW_FRAME::InstallPreferences( PAGED_DIALOG* aParent,
|
|||
}
|
||||
|
||||
|
||||
PARAM_CFG_ARRAY& GERBVIEW_FRAME::GetConfigurationSettings()
|
||||
std::vector<PARAM_CFG*>& GERBVIEW_FRAME::GetConfigurationSettings()
|
||||
{
|
||||
if( !m_configSettings.empty() )
|
||||
return m_configSettings;
|
||||
|
||||
try
|
||||
{
|
||||
m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "DrawModeOption" ),
|
||||
&m_displayMode, 2, 0, 2 ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_SETCOLOR(
|
||||
true, wxT( "DCodeColorEx" ),
|
||||
&g_ColorsSettings.m_LayersColors[LAYER_DCODES], WHITE ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_SETCOLOR(
|
||||
true, wxT( "NegativeObjectsColorEx" ),
|
||||
&g_ColorsSettings.m_LayersColors[LAYER_NEGATIVE_OBJECTS], DARKGRAY ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_SETCOLOR(
|
||||
true, wxT( "GridColorEx" ),
|
||||
&g_ColorsSettings.m_LayersColors[LAYER_GERBVIEW_GRID], DARKGRAY ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_SETCOLOR(
|
||||
true, wxT( "WorksheetColorEx" ),
|
||||
&g_ColorsSettings.m_LayersColors[ LAYER_WORKSHEET], DARKRED ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_SETCOLOR(
|
||||
true, wxT( "BackgroundColorEx" ),
|
||||
&g_ColorsSettings.m_LayersColors[LAYER_PCB_BACKGROUND], BLACK ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_BOOL(
|
||||
true, wxT( "DisplayPolarCoordinates" ),
|
||||
&m_PolarCoords, false ) );
|
||||
}
|
||||
catch( boost::bad_pointer& )
|
||||
{
|
||||
// Out of memory? Ship's going down anyway....
|
||||
}
|
||||
m_configSettings.push_back( new PARAM_CFG_INT(
|
||||
true, wxT( "DrawModeOption" ),
|
||||
&m_displayMode, 2, 0, 2 ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_SETCOLOR(
|
||||
true, wxT( "DCodeColorEx" ),
|
||||
&g_ColorsSettings.m_LayersColors[LAYER_DCODES], WHITE ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_SETCOLOR(
|
||||
true, wxT( "NegativeObjectsColorEx" ),
|
||||
&g_ColorsSettings.m_LayersColors[LAYER_NEGATIVE_OBJECTS], DARKGRAY ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_SETCOLOR(
|
||||
true, wxT( "GridColorEx" ),
|
||||
&g_ColorsSettings.m_LayersColors[LAYER_GERBVIEW_GRID], DARKGRAY ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_SETCOLOR(
|
||||
true, wxT( "WorksheetColorEx" ),
|
||||
&g_ColorsSettings.m_LayersColors[ LAYER_WORKSHEET], DARKRED ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_SETCOLOR(
|
||||
true, wxT( "BackgroundColorEx" ),
|
||||
&g_ColorsSettings.m_LayersColors[LAYER_PCB_BACKGROUND], BLACK ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_BOOL(
|
||||
true, wxT( "DisplayPolarCoordinates" ),
|
||||
&m_PolarCoords, false ) );
|
||||
|
||||
// Default colors for layers 0 to 31
|
||||
static const COLOR4D color_default[] = {
|
||||
|
|
|
@ -170,10 +170,9 @@ public:
|
|||
COLORS_DESIGN_SETTINGS* m_colorsSettings;
|
||||
|
||||
private:
|
||||
// list of PARAM_CFG_xxx to read/write parameters saved in config
|
||||
PARAM_CFG_ARRAY m_configSettings;
|
||||
std::vector<PARAM_CFG*> m_configSettings;
|
||||
|
||||
int m_displayMode; // Gerber images ("layers" in Gerbview) can be drawn:
|
||||
int m_displayMode; // Gerber images ("layers" in Gerbview) can be drawn:
|
||||
// - in fast mode (write mode) but if there are negative
|
||||
// items only the last image is correctly drawn (no
|
||||
// problem to see only one image or when no negative items)
|
||||
|
@ -420,7 +419,7 @@ public:
|
|||
* GerbView source code (mainly in dialogs). If you need to define a configuration
|
||||
* setting that need to be loaded at run time, this is the place to define it.
|
||||
*/
|
||||
PARAM_CFG_ARRAY& GetConfigurationSettings( void );
|
||||
std::vector<PARAM_CFG*>& GetConfigurationSettings( void );
|
||||
|
||||
void LoadSettings( wxConfigBase* aCfg ) override;
|
||||
void SaveSettings( wxConfigBase* aCfg ) override;
|
||||
|
|
|
@ -828,7 +828,7 @@ public:
|
|||
* allow reading or writing of configuration file information directly into
|
||||
* this object.
|
||||
*/
|
||||
void AppendConfigs( BOARD* aBoard, PARAM_CFG_ARRAY* aResult );
|
||||
void AppendConfigs( BOARD* aBoard, std::vector<PARAM_CFG*>* aResult );
|
||||
|
||||
inline int GetBoardThickness() const { return m_boardThickness; }
|
||||
inline void SetBoardThickness( int aThickness ) { m_boardThickness = aThickness; }
|
||||
|
|
|
@ -39,7 +39,7 @@ class wxConfigBase;
|
|||
class wxString;
|
||||
#include <frame_type.h>
|
||||
|
||||
class PARAM_CFG_ARRAY;
|
||||
class PARAM_CFG;
|
||||
|
||||
/**
|
||||
* COLORS_DESIGN_SETTINGS
|
||||
|
|
|
@ -88,7 +88,7 @@ enum paramcfg_id {
|
|||
|
||||
|
||||
/**
|
||||
* PARAM_CFG_BASE
|
||||
* PARAM_CFG
|
||||
* is a base class which establishes the interface functions ReadParam and SaveParam,
|
||||
* which are implemented by a number of derived classes, and these function's
|
||||
* doxygen comments are inherited also.
|
||||
|
@ -96,7 +96,7 @@ enum paramcfg_id {
|
|||
* See kicad.odt or kicad.pdf, chapter 2 :
|
||||
* "Installation and configuration/Initialization of the default config".
|
||||
*/
|
||||
class PARAM_CFG_BASE
|
||||
class PARAM_CFG
|
||||
{
|
||||
public:
|
||||
wxString m_Ident; ///< Keyword in config data
|
||||
|
@ -109,9 +109,9 @@ public:
|
|||
wxString m_Ident_legacy;
|
||||
|
||||
public:
|
||||
PARAM_CFG_BASE( const wxString& ident, const paramcfg_id type, const wxChar* group = NULL,
|
||||
const wxString& legacy_ident = wxEmptyString );
|
||||
virtual ~PARAM_CFG_BASE() {}
|
||||
PARAM_CFG( const wxString& ident, const paramcfg_id type, const wxChar* group = NULL,
|
||||
const wxString& legacy_ident = wxEmptyString );
|
||||
virtual ~PARAM_CFG() {}
|
||||
|
||||
/**
|
||||
* Function ReadParam
|
||||
|
@ -133,7 +133,7 @@ public:
|
|||
* Configuration parameter - Integer Class
|
||||
*
|
||||
*/
|
||||
class PARAM_CFG_INT : public PARAM_CFG_BASE
|
||||
class PARAM_CFG_INT : public PARAM_CFG
|
||||
{
|
||||
public:
|
||||
int* m_Pt_param; ///< Pointer to the parameter value
|
||||
|
@ -190,7 +190,7 @@ public:
|
|||
* Configuration parameter - SetColor Class
|
||||
*
|
||||
*/
|
||||
class PARAM_CFG_SETCOLOR : public PARAM_CFG_BASE
|
||||
class PARAM_CFG_SETCOLOR : public PARAM_CFG
|
||||
{
|
||||
public:
|
||||
COLOR4D* m_Pt_param; ///< Pointer to the parameter value
|
||||
|
@ -211,7 +211,7 @@ public:
|
|||
* Configuration parameter - Double Precision Class
|
||||
*
|
||||
*/
|
||||
class PARAM_CFG_DOUBLE : public PARAM_CFG_BASE
|
||||
class PARAM_CFG_DOUBLE : public PARAM_CFG
|
||||
{
|
||||
public:
|
||||
double* m_Pt_param; ///< Pointer to the parameter value
|
||||
|
@ -235,7 +235,7 @@ public:
|
|||
* Configuration parameter - Boolean Class
|
||||
*
|
||||
*/
|
||||
class PARAM_CFG_BOOL : public PARAM_CFG_BASE
|
||||
class PARAM_CFG_BOOL : public PARAM_CFG
|
||||
{
|
||||
public:
|
||||
bool* m_Pt_param; ///< Pointer to the parameter value
|
||||
|
@ -258,7 +258,7 @@ public:
|
|||
* Configuration parameter - wxString Class
|
||||
*
|
||||
*/
|
||||
class PARAM_CFG_WXSTRING : public PARAM_CFG_BASE
|
||||
class PARAM_CFG_WXSTRING : public PARAM_CFG
|
||||
{
|
||||
public:
|
||||
wxString* m_Pt_param; ///< Pointer to the parameter value
|
||||
|
@ -284,7 +284,7 @@ public:
|
|||
* and replace "/" by "\" under Windows.
|
||||
* Used to store paths and filenames in config files
|
||||
*/
|
||||
class PARAM_CFG_FILENAME : public PARAM_CFG_BASE
|
||||
class PARAM_CFG_FILENAME : public PARAM_CFG
|
||||
{
|
||||
public:
|
||||
wxString* m_Pt_param; ///< Pointer to the parameter value
|
||||
|
@ -297,7 +297,7 @@ public:
|
|||
};
|
||||
|
||||
|
||||
class PARAM_CFG_LIBNAME_LIST : public PARAM_CFG_BASE
|
||||
class PARAM_CFG_LIBNAME_LIST : public PARAM_CFG
|
||||
{
|
||||
public:
|
||||
wxArrayString* m_Pt_param; ///< Pointer to the parameter value
|
||||
|
@ -312,68 +312,52 @@ public:
|
|||
};
|
||||
|
||||
|
||||
/** A list of parameters type */
|
||||
//typedef boost::ptr_vector<PARAM_CFG_BASE> PARAM_CFG_ARRAY;
|
||||
class PARAM_CFG_ARRAY : public boost::ptr_vector<PARAM_CFG_BASE>
|
||||
{
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Function wxConfigSaveSetups
|
||||
* writes @a aList of PARAM_CFG_ARRAY elements to save configuration values
|
||||
* to @a aCfg. Only elements with m_Setup set true will be saved, hence the
|
||||
* function name.
|
||||
* writes @a aList of PARAM_CFG to save configuration values to @a aCfg.
|
||||
* Only elements with m_Setup set true will be saved, hence the function name.
|
||||
*
|
||||
* @param aCfg where to save
|
||||
* @param aList holds some configuration parameters, not all of which will
|
||||
* necessarily be saved.
|
||||
*/
|
||||
void wxConfigSaveSetups( wxConfigBase* aCfg, const PARAM_CFG_ARRAY& aList );
|
||||
void wxConfigSaveSetups( wxConfigBase* aCfg, const std::vector<PARAM_CFG*>& aList );
|
||||
|
||||
/**
|
||||
* Function wxConfigSaveParams
|
||||
* writes @a aList of PARAM_CFG_ARRAY elements to save configuration values
|
||||
* to @a aCfg. Only elements with m_Setup set false will be saved, hence the
|
||||
* function name.
|
||||
* writes @a aList of PARAM_CFG to save configuration values to @a aCfg.
|
||||
* Only elements with m_Setup set false will be saved, hence the function name.
|
||||
*
|
||||
* @param aCfg where to save
|
||||
* @param aList holds some configuration parameters, not all of which will
|
||||
* necessarily be saved.
|
||||
* @param aGroup indicates in which group the value should be saved,
|
||||
* unless the PARAM_CFG_ARRAY element provides its own group, in which case it will
|
||||
* take precedence. aGroup may be empty.
|
||||
* @param aList holds some configuration parameters, not all of which will necessarily be saved.
|
||||
* @param aGroup indicates in which group the value should be saved, unless the PARAM_CFG provides
|
||||
* its own group, in which case it will take precedence. aGroup may be empty.
|
||||
*/
|
||||
void wxConfigSaveParams( wxConfigBase* aCfg,
|
||||
const PARAM_CFG_ARRAY& aList, const wxString& aGroup );
|
||||
void wxConfigSaveParams( wxConfigBase* aCfg, const std::vector<PARAM_CFG*>& aList,
|
||||
const wxString& aGroup );
|
||||
|
||||
/**
|
||||
* Function wxConfigLoadSetups
|
||||
* uses @a aList of PARAM_CFG_ARRAY elements to load configuration values
|
||||
* from @a aCfg. Only elements whose m_Setup field is true will be loaded.
|
||||
* uses @a aList of PARAM_CFG to load configuration values from @a aCfg.
|
||||
* Only elements whose m_Setup field is true will be loaded.
|
||||
*
|
||||
* @param aCfg where to load from.
|
||||
* @param aList holds some configuration parameters, not all of which will
|
||||
* necessarily be loaded.
|
||||
* @param aList holds some configuration parameters, not all of which will necessarily be loaded.
|
||||
*/
|
||||
void wxConfigLoadSetups( wxConfigBase* aCfg, const PARAM_CFG_ARRAY& aList );
|
||||
void wxConfigLoadSetups( wxConfigBase* aCfg, const std::vector<PARAM_CFG*>& aList );
|
||||
|
||||
/**
|
||||
* Function wxConfigLoadParams
|
||||
* uses @a aList of PARAM_CFG_ARRAY elements to load configuration values
|
||||
* from @a aCfg. Only elements whose m_Setup field is false will be loaded.
|
||||
* uses @a aList of PARAM_CFG to load configuration values from @a aCfg.
|
||||
* Only elements whose m_Setup field is false will be loaded.
|
||||
*
|
||||
* @param aCfg where to load from.
|
||||
*
|
||||
* @param aList holds some configuration parameters, not all of which will
|
||||
* necessarily be loaded.
|
||||
*
|
||||
* @param aGroup indicates in which group the value should be saved,
|
||||
* unless the PARAM_CFG_ARRAY element provides its own group, in which case it will
|
||||
* take precedence. aGroup may be empty.
|
||||
* @param aList holds some configuration parameters, not all of which will necessarily be loaded.
|
||||
* @param aGroup indicates in which group the value should be saved, unless the PARAM_CFG provides
|
||||
* its own group, in which case it will take precedence. aGroup may be empty.
|
||||
*/
|
||||
void wxConfigLoadParams( wxConfigBase* aCfg,
|
||||
const PARAM_CFG_ARRAY& aList, const wxString& aGroup );
|
||||
void wxConfigLoadParams( wxConfigBase* aCfg, const std::vector<PARAM_CFG*>& aList,
|
||||
const wxString& aGroup );
|
||||
|
||||
|
||||
#endif // CONFIG_PARAMS_H_
|
||||
|
|
|
@ -118,8 +118,8 @@ class SETTINGS
|
|||
return aEntryName;
|
||||
}
|
||||
|
||||
wxString m_prefix;
|
||||
PARAM_CFG_ARRAY m_params;
|
||||
wxString m_prefix;
|
||||
std::vector<PARAM_CFG*> m_params;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ class EDA_RECT;
|
|||
class EDA_DRAW_PANEL_GAL;
|
||||
class EDA_MSG_PANEL;
|
||||
class BASE_SCREEN;
|
||||
class PARAM_CFG_BASE;
|
||||
class PARAM_CFG;
|
||||
class PAGE_INFO;
|
||||
class PLOTTER;
|
||||
class TITLE_BLOCK;
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
|
||||
|
||||
class wxConfigBase;
|
||||
class PARAM_CFG_ARRAY;
|
||||
class PARAM_CFG;
|
||||
class FP_LIB_TABLE;
|
||||
class PART_LIBS;
|
||||
class SEARCH_STACK;
|
||||
|
@ -130,14 +130,15 @@ public:
|
|||
*
|
||||
* @param aSList a SEARCH_STACK
|
||||
* @param aGroupName is the name of the group inside the config which contains parameters
|
||||
* @param aParams is a ptr vector of PARAM_CFG_BASE derivatives.
|
||||
* @param aParams is a ptr vector of PARAM_CFG derivatives.
|
||||
* Saved parameters are the subset in this array having the .m_Setup member
|
||||
* set to false.
|
||||
* @param aFileName is where to save the *.pro file and if NULL means use this PROJECT's
|
||||
* @a m_project_name.
|
||||
*/
|
||||
VTBL_ENTRY void ConfigSave( const SEARCH_STACK& aSList, const wxString& aGroupName,
|
||||
const PARAM_CFG_ARRAY& aParams, const wxString& aFileName = wxEmptyString );
|
||||
const std::vector<PARAM_CFG*>& aParams,
|
||||
const wxString& aFileName = wxEmptyString );
|
||||
|
||||
/**
|
||||
* Function ConfigLoad
|
||||
|
@ -151,14 +152,15 @@ public:
|
|||
*
|
||||
* @param aSearchS a SEARCH_STACK where a kicad.pro template file may be found.
|
||||
* @param aGroupName
|
||||
* @param aParams is ptr vector of PARAM_CFG_BASE derivatives.
|
||||
* @param aParams is ptr vector of PARAM_CFG derivatives.
|
||||
* @param aForeignConfigFileName when NULL means load the *.pro filename given
|
||||
* in this PROJECT's @a m_project_name field, otherwise load the provided filename.
|
||||
*
|
||||
* @return bool - true if loaded OK.
|
||||
*/
|
||||
VTBL_ENTRY bool ConfigLoad( const SEARCH_STACK& aSearchS, const wxString& aGroupName,
|
||||
const PARAM_CFG_ARRAY& aParams, const wxString& aForeignConfigFileName = wxEmptyString );
|
||||
const std::vector<PARAM_CFG*>& aParams,
|
||||
const wxString& aForeignConfigFileName = wxEmptyString );
|
||||
|
||||
/// Retain a number of project specific wxStrings, enumerated here:
|
||||
enum RSTRING_T
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
// for new projects
|
||||
#define GeneralGroupName wxT( "/general" )
|
||||
|
||||
PARAM_CFG_ARRAY s_KicadManagerParams;
|
||||
std::vector<PARAM_CFG*> s_KicadManagerParams;
|
||||
|
||||
|
||||
// Menubar and toolbar event table
|
||||
|
|
|
@ -62,7 +62,7 @@ protected:
|
|||
|
||||
private:
|
||||
// list of PARAM_CFG_xxx to read/write parameters saved in config
|
||||
PARAM_CFG_ARRAY m_configSettings;
|
||||
std::vector<PARAM_CFG*> m_configSettings;
|
||||
|
||||
public:
|
||||
PL_EDITOR_FRAME( KIWAY* aKiway, wxWindow* aParent );
|
||||
|
@ -221,7 +221,7 @@ public:
|
|||
* source code (mainly in dialogs). If you need to define a configuration
|
||||
* setting that need to be loaded at run time, this is the place to define it.
|
||||
*/
|
||||
PARAM_CFG_ARRAY& GetConfigurationSettings() { return m_configSettings; }
|
||||
std::vector<PARAM_CFG*>& GetConfigurationSettings() { return m_configSettings; }
|
||||
|
||||
void LoadSettings( wxConfigBase* aCfg ) override;
|
||||
|
||||
|
|
|
@ -59,14 +59,14 @@
|
|||
// NOTE: layer configuration info is stored in both the BOARD and BOARD_DESIGN_SETTINGS so one
|
||||
// of the two needs to read/write the config so we don't end up with order dependency issues.
|
||||
//
|
||||
class PARAM_CFG_LAYERS : public PARAM_CFG_BASE
|
||||
class PARAM_CFG_LAYERS : public PARAM_CFG
|
||||
{
|
||||
protected:
|
||||
BOARD* m_Pt_param; ///< Pointer to the parameter value
|
||||
|
||||
public:
|
||||
PARAM_CFG_LAYERS( BOARD* ptparam, const wxChar* group = nullptr ) :
|
||||
PARAM_CFG_BASE( wxEmptyString, PARAM_LAYERS, group )
|
||||
PARAM_CFG( wxEmptyString, PARAM_LAYERS, group )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
}
|
||||
|
@ -150,14 +150,14 @@ public:
|
|||
};
|
||||
|
||||
|
||||
class PARAM_CFG_TRACKWIDTHS : public PARAM_CFG_BASE
|
||||
class PARAM_CFG_TRACKWIDTHS : public PARAM_CFG
|
||||
{
|
||||
protected:
|
||||
std::vector<int>* m_Pt_param; ///< Pointer to the parameter value
|
||||
|
||||
public:
|
||||
PARAM_CFG_TRACKWIDTHS( std::vector<int>* ptparam, const wxChar* group = nullptr ) :
|
||||
PARAM_CFG_BASE( wxEmptyString, PARAM_TRACKWIDTHS, group )
|
||||
PARAM_CFG( wxEmptyString, PARAM_TRACKWIDTHS, group )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
}
|
||||
|
@ -195,14 +195,14 @@ public:
|
|||
};
|
||||
|
||||
|
||||
class PARAM_CFG_VIADIMENSIONS : public PARAM_CFG_BASE
|
||||
class PARAM_CFG_VIADIMENSIONS : public PARAM_CFG
|
||||
{
|
||||
protected:
|
||||
std::vector<VIA_DIMENSION>* m_Pt_param; ///< Pointer to the parameter value
|
||||
|
||||
public:
|
||||
PARAM_CFG_VIADIMENSIONS( std::vector<VIA_DIMENSION>* ptparam, const wxChar* group = nullptr ) :
|
||||
PARAM_CFG_BASE( wxEmptyString, PARAM_VIADIMENSIONS, group )
|
||||
PARAM_CFG( wxEmptyString, PARAM_VIADIMENSIONS, group )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
}
|
||||
|
@ -247,7 +247,7 @@ public:
|
|||
};
|
||||
|
||||
|
||||
class PARAM_CFG_DIFFPAIRDIMENSIONS : public PARAM_CFG_BASE
|
||||
class PARAM_CFG_DIFFPAIRDIMENSIONS : public PARAM_CFG
|
||||
{
|
||||
protected:
|
||||
std::vector<DIFF_PAIR_DIMENSION>* m_Pt_param; ///< Pointer to the parameter value
|
||||
|
@ -255,7 +255,7 @@ protected:
|
|||
public:
|
||||
PARAM_CFG_DIFFPAIRDIMENSIONS( std::vector<DIFF_PAIR_DIMENSION>* ptparam,
|
||||
const wxChar* group = nullptr ) :
|
||||
PARAM_CFG_BASE( wxEmptyString, PARAM_DIFFPAIRDIMENSIONS, group )
|
||||
PARAM_CFG( wxEmptyString, PARAM_DIFFPAIRDIMENSIONS, group )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
}
|
||||
|
@ -306,7 +306,7 @@ public:
|
|||
};
|
||||
|
||||
|
||||
class PARAM_CFG_NETCLASSES : public PARAM_CFG_BASE
|
||||
class PARAM_CFG_NETCLASSES : public PARAM_CFG
|
||||
{
|
||||
protected:
|
||||
NETCLASSES* m_Pt_param; ///< Pointer to the parameter value
|
||||
|
@ -314,7 +314,7 @@ protected:
|
|||
public:
|
||||
PARAM_CFG_NETCLASSES( const wxChar* ident, NETCLASSES* ptparam,
|
||||
const wxChar* group = nullptr ) :
|
||||
PARAM_CFG_BASE( ident, PARAM_NETCLASSES, group )
|
||||
PARAM_CFG( ident, PARAM_NETCLASSES, group )
|
||||
{
|
||||
m_Pt_param = ptparam;
|
||||
}
|
||||
|
@ -533,183 +533,176 @@ BOARD_DESIGN_SETTINGS::BOARD_DESIGN_SETTINGS() :
|
|||
|
||||
// Add parameters to save in project config.
|
||||
// values are saved in mm
|
||||
void BOARD_DESIGN_SETTINGS::AppendConfigs( BOARD* aBoard, PARAM_CFG_ARRAY* aResult )
|
||||
void BOARD_DESIGN_SETTINGS::AppendConfigs( BOARD* aBoard, std::vector<PARAM_CFG*>* aResult )
|
||||
{
|
||||
try
|
||||
{
|
||||
aResult->push_back( new PARAM_CFG_LAYERS( aBoard ) );
|
||||
aResult->push_back( new PARAM_CFG_LAYERS( aBoard ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "AllowMicroVias" ),
|
||||
&m_MicroViasAllowed, false ) );
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "AllowMicroVias" ),
|
||||
&m_MicroViasAllowed, false ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "AllowBlindVias" ),
|
||||
&m_BlindBuriedViaAllowed, false ) );
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "AllowBlindVias" ),
|
||||
&m_BlindBuriedViaAllowed, false ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "RequireCourtyardDefinitions" ),
|
||||
&m_RequireCourtyards, false ) );
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "RequireCourtyardDefinitions" ),
|
||||
&m_RequireCourtyards, false ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "ProhibitOverlappingCourtyards" ),
|
||||
&m_ProhibitOverlappingCourtyards, true ) );
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "ProhibitOverlappingCourtyards" ),
|
||||
&m_ProhibitOverlappingCourtyards, true ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "MinTrackWidth" ),
|
||||
&m_TrackMinWidth,
|
||||
Millimeter2iu( DEFAULT_TRACKMINWIDTH ), Millimeter2iu( 0.01 ), Millimeter2iu( 25.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "MinTrackWidth" ),
|
||||
&m_TrackMinWidth,
|
||||
Millimeter2iu( DEFAULT_TRACKMINWIDTH ), Millimeter2iu( 0.01 ), Millimeter2iu( 25.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "MinViaDiameter" ),
|
||||
&m_ViasMinSize,
|
||||
Millimeter2iu( DEFAULT_VIASMINSIZE ), Millimeter2iu( 0.01 ), Millimeter2iu( 25.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "MinViaDiameter" ),
|
||||
&m_ViasMinSize,
|
||||
Millimeter2iu( DEFAULT_VIASMINSIZE ), Millimeter2iu( 0.01 ), Millimeter2iu( 25.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "MinViaDrill" ),
|
||||
&m_ViasMinDrill,
|
||||
Millimeter2iu( DEFAULT_VIASMINDRILL ), Millimeter2iu( 0.01 ), Millimeter2iu( 25.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "MinViaDrill" ),
|
||||
&m_ViasMinDrill,
|
||||
Millimeter2iu( DEFAULT_VIASMINDRILL ), Millimeter2iu( 0.01 ), Millimeter2iu( 25.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "MinMicroViaDiameter" ),
|
||||
&m_MicroViasMinSize,
|
||||
Millimeter2iu( DEFAULT_MICROVIASMINSIZE ), Millimeter2iu( 0.01 ), Millimeter2iu( 10.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "MinMicroViaDiameter" ),
|
||||
&m_MicroViasMinSize,
|
||||
Millimeter2iu( DEFAULT_MICROVIASMINSIZE ), Millimeter2iu( 0.01 ), Millimeter2iu( 10.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "MinMicroViaDrill" ),
|
||||
&m_MicroViasMinDrill,
|
||||
Millimeter2iu( DEFAULT_MICROVIASMINDRILL ), Millimeter2iu( 0.01 ), Millimeter2iu( 10.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "MinMicroViaDrill" ),
|
||||
&m_MicroViasMinDrill,
|
||||
Millimeter2iu( DEFAULT_MICROVIASMINDRILL ), Millimeter2iu( 0.01 ), Millimeter2iu( 10.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "MinHoleToHole" ),
|
||||
&m_HoleToHoleMin,
|
||||
Millimeter2iu( DEFAULT_HOLETOHOLEMIN ), Millimeter2iu( 0.0 ), Millimeter2iu( 10.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "MinHoleToHole" ),
|
||||
&m_HoleToHoleMin,
|
||||
Millimeter2iu( DEFAULT_HOLETOHOLEMIN ), Millimeter2iu( 0.0 ), Millimeter2iu( 10.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
|
||||
// Note: a clearance of -0.01 is a flag indicating we should use the legacy (pre-6.0) method
|
||||
// based on the edge cut thicknesses.
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "CopperEdgeClearance" ),
|
||||
&m_CopperEdgeClearance,
|
||||
Millimeter2iu( LEGACY_COPPEREDGECLEARANCE ), Millimeter2iu( -0.01 ), Millimeter2iu( 25.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
// Note: a clearance of -0.01 is a flag indicating we should use the legacy (pre-6.0) method
|
||||
// based on the edge cut thicknesses.
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "CopperEdgeClearance" ),
|
||||
&m_CopperEdgeClearance,
|
||||
Millimeter2iu( LEGACY_COPPEREDGECLEARANCE ), Millimeter2iu( -0.01 ), Millimeter2iu( 25.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_TRACKWIDTHS( &m_TrackWidthList ) );
|
||||
aResult->push_back( new PARAM_CFG_VIADIMENSIONS( &m_ViasDimensionsList ) );
|
||||
aResult->push_back( new PARAM_CFG_DIFFPAIRDIMENSIONS( &m_DiffPairDimensionsList ) );
|
||||
aResult->push_back( new PARAM_CFG_TRACKWIDTHS( &m_TrackWidthList ) );
|
||||
aResult->push_back( new PARAM_CFG_VIADIMENSIONS( &m_ViasDimensionsList ) );
|
||||
aResult->push_back( new PARAM_CFG_DIFFPAIRDIMENSIONS( &m_DiffPairDimensionsList ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_NETCLASSES( wxT( "Netclasses" ), &m_NetClasses ) );
|
||||
aResult->push_back( new PARAM_CFG_NETCLASSES( wxT( "Netclasses" ), &m_NetClasses ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "SilkLineWidth" ),
|
||||
&m_LineThickness[ LAYER_CLASS_SILK ],
|
||||
Millimeter2iu( DEFAULT_SILK_LINE_WIDTH ), Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ),
|
||||
nullptr, MM_PER_IU, wxT( "ModuleOutlineThickness" ) ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "SilkLineWidth" ),
|
||||
&m_LineThickness[ LAYER_CLASS_SILK ],
|
||||
Millimeter2iu( DEFAULT_SILK_LINE_WIDTH ), Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ),
|
||||
nullptr, MM_PER_IU, wxT( "ModuleOutlineThickness" ) ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "SilkTextSizeV" ),
|
||||
&m_TextSize[ LAYER_CLASS_SILK ].y,
|
||||
Millimeter2iu( DEFAULT_SILK_TEXT_SIZE ), TEXTS_MIN_SIZE, TEXTS_MAX_SIZE,
|
||||
nullptr, MM_PER_IU, wxT( "ModuleTextSizeV" ) ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "SilkTextSizeV" ),
|
||||
&m_TextSize[ LAYER_CLASS_SILK ].y,
|
||||
Millimeter2iu( DEFAULT_SILK_TEXT_SIZE ), TEXTS_MIN_SIZE, TEXTS_MAX_SIZE,
|
||||
nullptr, MM_PER_IU, wxT( "ModuleTextSizeV" ) ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "SilkTextSizeH" ),
|
||||
&m_TextSize[ LAYER_CLASS_SILK ].x,
|
||||
Millimeter2iu( DEFAULT_SILK_TEXT_SIZE ), TEXTS_MIN_SIZE, TEXTS_MAX_SIZE,
|
||||
nullptr, MM_PER_IU, wxT( "ModuleTextSizeH" ) ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "SilkTextSizeH" ),
|
||||
&m_TextSize[ LAYER_CLASS_SILK ].x,
|
||||
Millimeter2iu( DEFAULT_SILK_TEXT_SIZE ), TEXTS_MIN_SIZE, TEXTS_MAX_SIZE,
|
||||
nullptr, MM_PER_IU, wxT( "ModuleTextSizeH" ) ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "SilkTextSizeThickness" ),
|
||||
&m_TextThickness[ LAYER_CLASS_SILK ],
|
||||
Millimeter2iu( DEFAULT_SILK_TEXT_WIDTH ), 1, TEXTS_MAX_WIDTH,
|
||||
nullptr, MM_PER_IU, wxT( "ModuleTextSizeThickness" ) ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "SilkTextSizeThickness" ),
|
||||
&m_TextThickness[ LAYER_CLASS_SILK ],
|
||||
Millimeter2iu( DEFAULT_SILK_TEXT_WIDTH ), 1, TEXTS_MAX_WIDTH,
|
||||
nullptr, MM_PER_IU, wxT( "ModuleTextSizeThickness" ) ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "SilkTextItalic" ),
|
||||
&m_TextItalic[ LAYER_CLASS_SILK ], false ) );
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "SilkTextItalic" ),
|
||||
&m_TextItalic[ LAYER_CLASS_SILK ], false ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "SilkTextUpright" ),
|
||||
&m_TextUpright[ LAYER_CLASS_SILK ], true ) );
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "SilkTextUpright" ),
|
||||
&m_TextUpright[ LAYER_CLASS_SILK ], true ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "CopperLineWidth" ),
|
||||
&m_LineThickness[ LAYER_CLASS_COPPER ],
|
||||
Millimeter2iu( DEFAULT_SILK_LINE_WIDTH ), Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ),
|
||||
nullptr, MM_PER_IU, wxT( "DrawSegmentWidth" ) ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "CopperLineWidth" ),
|
||||
&m_LineThickness[ LAYER_CLASS_COPPER ],
|
||||
Millimeter2iu( DEFAULT_SILK_LINE_WIDTH ), Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ),
|
||||
nullptr, MM_PER_IU, wxT( "DrawSegmentWidth" ) ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "CopperTextSizeV" ),
|
||||
&m_TextSize[ LAYER_CLASS_COPPER ].y,
|
||||
Millimeter2iu( DEFAULT_COPPER_TEXT_SIZE ), TEXTS_MIN_SIZE, TEXTS_MAX_SIZE,
|
||||
nullptr, MM_PER_IU, wxT( "PcbTextSizeV" ) ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "CopperTextSizeV" ),
|
||||
&m_TextSize[ LAYER_CLASS_COPPER ].y,
|
||||
Millimeter2iu( DEFAULT_COPPER_TEXT_SIZE ), TEXTS_MIN_SIZE, TEXTS_MAX_SIZE,
|
||||
nullptr, MM_PER_IU, wxT( "PcbTextSizeV" ) ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "CopperTextSizeH" ),
|
||||
&m_TextSize[ LAYER_CLASS_COPPER ].x,
|
||||
Millimeter2iu( DEFAULT_COPPER_TEXT_SIZE ), TEXTS_MIN_SIZE, TEXTS_MAX_SIZE,
|
||||
nullptr, MM_PER_IU, wxT( "PcbTextSizeH" ) ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "CopperTextSizeH" ),
|
||||
&m_TextSize[ LAYER_CLASS_COPPER ].x,
|
||||
Millimeter2iu( DEFAULT_COPPER_TEXT_SIZE ), TEXTS_MIN_SIZE, TEXTS_MAX_SIZE,
|
||||
nullptr, MM_PER_IU, wxT( "PcbTextSizeH" ) ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "CopperTextThickness" ),
|
||||
&m_TextThickness[ LAYER_CLASS_COPPER ],
|
||||
Millimeter2iu( DEFAULT_COPPER_TEXT_WIDTH ), Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ),
|
||||
nullptr, MM_PER_IU, wxT( "PcbTextThickness" ) ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "CopperTextThickness" ),
|
||||
&m_TextThickness[ LAYER_CLASS_COPPER ],
|
||||
Millimeter2iu( DEFAULT_COPPER_TEXT_WIDTH ), Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ),
|
||||
nullptr, MM_PER_IU, wxT( "PcbTextThickness" ) ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "CopperTextItalic" ),
|
||||
&m_TextItalic[ LAYER_CLASS_COPPER ], false ) );
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "CopperTextItalic" ),
|
||||
&m_TextItalic[ LAYER_CLASS_COPPER ], false ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "CopperTextUpright" ),
|
||||
&m_TextUpright[ LAYER_CLASS_COPPER ], true ) );
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "CopperTextUpright" ),
|
||||
&m_TextUpright[ LAYER_CLASS_COPPER ], true ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "EdgeCutLineWidth" ),
|
||||
&m_LineThickness[ LAYER_CLASS_EDGES ],
|
||||
Millimeter2iu( DEFAULT_SILK_LINE_WIDTH ), Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ),
|
||||
nullptr, MM_PER_IU, wxT( "BoardOutlineThickness" ) ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "EdgeCutLineWidth" ),
|
||||
&m_LineThickness[ LAYER_CLASS_EDGES ],
|
||||
Millimeter2iu( DEFAULT_SILK_LINE_WIDTH ), Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ),
|
||||
nullptr, MM_PER_IU, wxT( "BoardOutlineThickness" ) ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "CourtyardLineWidth" ),
|
||||
&m_LineThickness[ LAYER_CLASS_COURTYARD ],
|
||||
Millimeter2iu( DEFAULT_SILK_LINE_WIDTH ), Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "CourtyardLineWidth" ),
|
||||
&m_LineThickness[ LAYER_CLASS_COURTYARD ],
|
||||
Millimeter2iu( DEFAULT_SILK_LINE_WIDTH ), Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "OthersLineWidth" ),
|
||||
&m_LineThickness[ LAYER_CLASS_OTHERS ],
|
||||
Millimeter2iu( DEFAULT_SILK_LINE_WIDTH ), Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ),
|
||||
nullptr, MM_PER_IU, wxT( "ModuleOutlineThickness" ) ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "OthersLineWidth" ),
|
||||
&m_LineThickness[ LAYER_CLASS_OTHERS ],
|
||||
Millimeter2iu( DEFAULT_SILK_LINE_WIDTH ), Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ),
|
||||
nullptr, MM_PER_IU, wxT( "ModuleOutlineThickness" ) ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "OthersTextSizeV" ),
|
||||
&m_TextSize[ LAYER_CLASS_OTHERS ].x,
|
||||
Millimeter2iu( DEFAULT_TEXT_SIZE ), TEXTS_MIN_SIZE, TEXTS_MAX_SIZE,
|
||||
nullptr, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "OthersTextSizeV" ),
|
||||
&m_TextSize[ LAYER_CLASS_OTHERS ].x,
|
||||
Millimeter2iu( DEFAULT_TEXT_SIZE ), TEXTS_MIN_SIZE, TEXTS_MAX_SIZE,
|
||||
nullptr, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "OthersTextSizeH" ),
|
||||
&m_TextSize[ LAYER_CLASS_OTHERS ].y,
|
||||
Millimeter2iu( DEFAULT_TEXT_SIZE ), TEXTS_MIN_SIZE, TEXTS_MAX_SIZE,
|
||||
nullptr, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "OthersTextSizeH" ),
|
||||
&m_TextSize[ LAYER_CLASS_OTHERS ].y,
|
||||
Millimeter2iu( DEFAULT_TEXT_SIZE ), TEXTS_MIN_SIZE, TEXTS_MAX_SIZE,
|
||||
nullptr, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "OthersTextSizeThickness" ),
|
||||
&m_TextThickness[ LAYER_CLASS_OTHERS ],
|
||||
Millimeter2iu( DEFAULT_TEXT_WIDTH ), 1, TEXTS_MAX_WIDTH,
|
||||
nullptr, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "OthersTextSizeThickness" ),
|
||||
&m_TextThickness[ LAYER_CLASS_OTHERS ],
|
||||
Millimeter2iu( DEFAULT_TEXT_WIDTH ), 1, TEXTS_MAX_WIDTH,
|
||||
nullptr, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "OthersTextItalic" ),
|
||||
&m_TextItalic[ LAYER_CLASS_OTHERS ], false ) );
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "OthersTextItalic" ),
|
||||
&m_TextItalic[ LAYER_CLASS_OTHERS ], false ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "OthersTextUpright" ),
|
||||
&m_TextUpright[ LAYER_CLASS_OTHERS ], true ) );
|
||||
aResult->push_back( new PARAM_CFG_BOOL( wxT( "OthersTextUpright" ),
|
||||
&m_TextUpright[ LAYER_CLASS_OTHERS ], true ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT( wxT( "DimensionUnits" ),
|
||||
&m_DimensionUnits, 0, 0, 2 ) );
|
||||
aResult->push_back( new PARAM_CFG_INT( wxT( "DimensionPrecision" ),
|
||||
&m_DimensionPrecision, 1, 0, 2 ) );
|
||||
aResult->push_back( new PARAM_CFG_INT( wxT( "DimensionUnits" ),
|
||||
&m_DimensionUnits, 0, 0, 2 ) );
|
||||
aResult->push_back( new PARAM_CFG_INT( wxT( "DimensionPrecision" ),
|
||||
&m_DimensionPrecision, 1, 0, 2 ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "SolderMaskClearance" ),
|
||||
&m_SolderMaskMargin,
|
||||
Millimeter2iu( DEFAULT_SOLDERMASK_CLEARANCE ), Millimeter2iu( -1.0 ), Millimeter2iu( 1.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "SolderMaskClearance" ),
|
||||
&m_SolderMaskMargin,
|
||||
Millimeter2iu( DEFAULT_SOLDERMASK_CLEARANCE ), Millimeter2iu( -1.0 ), Millimeter2iu( 1.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "SolderMaskMinWidth" ),
|
||||
&m_SolderMaskMinWidth,
|
||||
Millimeter2iu( DEFAULT_SOLDERMASK_MIN_WIDTH ), 0, Millimeter2iu( 1.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "SolderMaskMinWidth" ),
|
||||
&m_SolderMaskMinWidth,
|
||||
Millimeter2iu( DEFAULT_SOLDERMASK_MIN_WIDTH ), 0, Millimeter2iu( 1.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "SolderPasteClearance" ),
|
||||
&m_SolderPasteMargin,
|
||||
Millimeter2iu( DEFAULT_SOLDERPASTE_CLEARANCE ), Millimeter2iu( -1.0 ), Millimeter2iu( 1.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "SolderPasteClearance" ),
|
||||
&m_SolderPasteMargin,
|
||||
Millimeter2iu( DEFAULT_SOLDERPASTE_CLEARANCE ), Millimeter2iu( -1.0 ), Millimeter2iu( 1.0 ),
|
||||
nullptr, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_DOUBLE( wxT( "SolderPasteRatio" ),
|
||||
&m_SolderPasteMarginRatio,
|
||||
DEFAULT_SOLDERPASTE_RATIO, -0.5, 1.0 ) );
|
||||
}
|
||||
catch( boost::bad_pointer& )
|
||||
{
|
||||
// Out of memory? Ship's going down anyway....
|
||||
}
|
||||
aResult->push_back( new PARAM_CFG_DOUBLE( wxT( "SolderPasteRatio" ),
|
||||
&m_SolderPasteMarginRatio,
|
||||
DEFAULT_SOLDERPASTE_RATIO, -0.5, 1.0 ) );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -535,41 +535,34 @@ void D_PAD::MirrorXPrimitives( int aX )
|
|||
}
|
||||
|
||||
|
||||
void D_PAD::AppendConfigs( PARAM_CFG_ARRAY* aResult )
|
||||
void D_PAD::AppendConfigs( std::vector<PARAM_CFG*>* aResult )
|
||||
{
|
||||
// Parameters stored in config are only significant parameters
|
||||
// for a template.
|
||||
// So not all parameters are stored, just few.
|
||||
try
|
||||
{
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "PadDrill" ),
|
||||
&m_Drill.x,
|
||||
Millimeter2iu( 0.6 ),
|
||||
Millimeter2iu( 0.1 ), Millimeter2iu( 10.0 ),
|
||||
NULL, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "PadDrill" ),
|
||||
&m_Drill.x,
|
||||
Millimeter2iu( 0.6 ),
|
||||
Millimeter2iu( 0.1 ), Millimeter2iu( 10.0 ),
|
||||
NULL, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "PadDrillOvalY" ),
|
||||
&m_Drill.y,
|
||||
Millimeter2iu( 0.6 ),
|
||||
Millimeter2iu( 0.1 ), Millimeter2iu( 10.0 ),
|
||||
NULL, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "PadDrillOvalY" ),
|
||||
&m_Drill.y,
|
||||
Millimeter2iu( 0.6 ),
|
||||
Millimeter2iu( 0.1 ), Millimeter2iu( 10.0 ),
|
||||
NULL, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "PadSizeH" ),
|
||||
&m_Size.x,
|
||||
Millimeter2iu( 1.4 ),
|
||||
Millimeter2iu( 0.1 ), Millimeter2iu( 20.0 ),
|
||||
NULL, MM_PER_IU ) );
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "PadSizeH" ),
|
||||
&m_Size.x,
|
||||
Millimeter2iu( 1.4 ),
|
||||
Millimeter2iu( 0.1 ), Millimeter2iu( 20.0 ),
|
||||
NULL, MM_PER_IU ) );
|
||||
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "PadSizeV" ),
|
||||
&m_Size.y,
|
||||
Millimeter2iu( 1.4 ),
|
||||
Millimeter2iu( 0.1 ), Millimeter2iu( 20.0 ),
|
||||
NULL, MM_PER_IU ) );
|
||||
}
|
||||
catch( boost::bad_pointer& )
|
||||
{
|
||||
// Out of memory? Ship's going down anyway....
|
||||
}
|
||||
aResult->push_back( new PARAM_CFG_INT_WITH_SCALE( wxT( "PadSizeV" ),
|
||||
&m_Size.y,
|
||||
Millimeter2iu( 1.4 ),
|
||||
Millimeter2iu( 0.1 ), Millimeter2iu( 20.0 ),
|
||||
NULL, MM_PER_IU ) );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -33,13 +33,13 @@
|
|||
#include "zones.h"
|
||||
#include <board_connected_item.h>
|
||||
#include <class_board_item.h>
|
||||
#include <config_params.h> // PARAM_CFG_ARRAY
|
||||
#include <convert_to_biu.h>
|
||||
#include <geometry/shape_poly_set.h>
|
||||
#include <pad_shapes.h>
|
||||
#include <pcbnew.h>
|
||||
|
||||
class DRAWSEGMENT;
|
||||
class PARAM_CFG;
|
||||
|
||||
enum CUST_PAD_SHAPE_IN_ZONE
|
||||
{
|
||||
|
@ -799,7 +799,7 @@ public:
|
|||
* allow reading or writing of configuration file information directly into
|
||||
* this object.
|
||||
*/
|
||||
void AppendConfigs( PARAM_CFG_ARRAY* aResult );
|
||||
void AppendConfigs( std::vector<PARAM_CFG*>* aResult );
|
||||
|
||||
EDA_ITEM* Clone() const override;
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ void DIALOG_BOARD_SETUP::OnAuxiliaryAction( wxCommandEvent& event )
|
|||
cfg->SetPath( wxCONFIG_PATH_SEPARATOR );
|
||||
|
||||
BOARD* dummyBoard = new BOARD();
|
||||
PARAM_CFG_ARRAY designSettingsConfig;
|
||||
std::vector<PARAM_CFG*> designSettingsConfig;
|
||||
|
||||
dummyBoard->GetDesignSettings().AppendConfigs( dummyBoard, &designSettingsConfig );
|
||||
wxConfigLoadParams( cfg, designSettingsConfig, GROUP_PCB );
|
||||
|
|
|
@ -92,7 +92,7 @@ public:
|
|||
*
|
||||
* @return - Reference to the list of applications settings.
|
||||
*/
|
||||
PARAM_CFG_ARRAY& GetConfigurationSettings();
|
||||
std::vector<PARAM_CFG*>& GetConfigurationSettings();
|
||||
|
||||
void OnCloseWindow( wxCloseEvent& Event ) override;
|
||||
void CloseModuleEditor( wxCommandEvent& Event );
|
||||
|
@ -352,7 +352,7 @@ protected:
|
|||
FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent, EDA_DRAW_PANEL_GAL::GAL_TYPE aBackend );
|
||||
|
||||
PCB_LAYER_BOX_SELECTOR* m_selLayerBox; // a combo box to display and select active layer
|
||||
PARAM_CFG_ARRAY m_configParams; // List of footprint editor configuration parameters.
|
||||
std::vector<PARAM_CFG*> m_configParams; // List of footprint editor configuration parameters.
|
||||
|
||||
/**
|
||||
* Make sure the footprint info list is loaded (with a progress dialog) and then initialize
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
#include <layers_id_colors_and_visibility.h>
|
||||
|
||||
|
||||
PARAM_CFG_ARRAY& FOOTPRINT_EDIT_FRAME::GetConfigurationSettings()
|
||||
std::vector<PARAM_CFG*>& FOOTPRINT_EDIT_FRAME::GetConfigurationSettings()
|
||||
{
|
||||
auto& displ_opts = m_DisplayOptions;
|
||||
BOARD_DESIGN_SETTINGS& settings = GetDesignSettings();
|
||||
|
@ -41,17 +41,17 @@ PARAM_CFG_ARRAY& FOOTPRINT_EDIT_FRAME::GetConfigurationSettings()
|
|||
|
||||
// Display options:
|
||||
m_configParams.push_back( new PARAM_CFG_BOOL( true, wxT( "FpEditorDisplayPolarCoords" ),
|
||||
&m_PolarCoords, false ) );
|
||||
&m_PolarCoords, false ) );
|
||||
m_configParams.push_back( new PARAM_CFG_BOOL( true, wxT( "FpEditorPadDisplayMode" ),
|
||||
&displ_opts.m_DisplayPadFill, true ) );
|
||||
&displ_opts.m_DisplayPadFill, true ) );
|
||||
m_configParams.push_back( new PARAM_CFG_BOOL( true, wxT( "FpEditorGraphicLinesDisplayMode" ),
|
||||
&displ_opts.m_DisplayModEdgeFill, FILLED ) );
|
||||
&displ_opts.m_DisplayModEdgeFill, FILLED ) );
|
||||
m_configParams.push_back( new PARAM_CFG_BOOL( true, wxT( "FpEditorTextsDisplayMode" ),
|
||||
&displ_opts.m_DisplayModTextFill, FILLED ) );
|
||||
&displ_opts.m_DisplayModTextFill, FILLED ) );
|
||||
m_configParams.push_back( new PARAM_CFG_BOOL( true, wxT( "FpEditorTextsDisplayMode" ),
|
||||
&displ_opts.m_DisplayModTextFill, FILLED ) );
|
||||
&displ_opts.m_DisplayModTextFill, FILLED ) );
|
||||
m_configParams.push_back( new PARAM_CFG_WXSTRING( true, wxT( "FpEditorTextsRefDefaultText" ),
|
||||
&settings.m_RefDefaultText, wxT( "REF**" ) ) );
|
||||
&settings.m_RefDefaultText, wxT( "REF**" ) ) );
|
||||
|
||||
// design settings
|
||||
m_configParams.push_back( new PARAM_CFG_INT_WITH_SCALE( true, wxT( "FpEditorSilkLineWidth" ),
|
||||
|
|
|
@ -99,13 +99,13 @@ class PCB_EDIT_FRAME : public PCB_BASE_EDIT_FRAME
|
|||
friend class PCB_LAYER_WIDGET;
|
||||
|
||||
/// The auxiliary right vertical tool bar used to access the microwave tools.
|
||||
ACTION_TOOLBAR* m_microWaveToolBar;
|
||||
ACTION_TOOLBAR* m_microWaveToolBar;
|
||||
|
||||
protected:
|
||||
PARAM_CFG_ARRAY m_configParams; // List of Pcbnew configuration settings.
|
||||
PARAM_CFG_ARRAY m_projectFileParams;
|
||||
std::vector<PARAM_CFG*> m_configParams; // List of Pcbnew configuration settings.
|
||||
std::vector<PARAM_CFG*> m_projectFileParams;
|
||||
|
||||
wxString m_lastPath[ LAST_PATH_SIZE ];
|
||||
wxString m_lastPath[ LAST_PATH_SIZE ];
|
||||
|
||||
|
||||
/**
|
||||
|
@ -407,10 +407,10 @@ public:
|
|||
* to define local variables. The old method of statically building the array
|
||||
* at compile time requiring global variable definitions by design.
|
||||
* </p>
|
||||
* @return PARAM_CFG_ARRAY - it is only good until SetBoard() is called, so
|
||||
* don't keep it around past that event.
|
||||
* @return std::vector<PARAM_CFG*> - it is only good until SetBoard() is called, so
|
||||
* don't keep it around past that event.
|
||||
*/
|
||||
PARAM_CFG_ARRAY& GetProjectFileParameters();
|
||||
std::vector<PARAM_CFG*>& GetProjectFileParameters();
|
||||
|
||||
/**
|
||||
* Function SaveProjectSettings
|
||||
|
@ -442,7 +442,7 @@ public:
|
|||
*
|
||||
* @return - Reference to the list of applications settings.
|
||||
*/
|
||||
PARAM_CFG_ARRAY& GetConfigurationSettings();
|
||||
std::vector<PARAM_CFG*>& GetConfigurationSettings();
|
||||
|
||||
void LoadSettings( wxConfigBase* aCfg ) override;
|
||||
|
||||
|
|
|
@ -113,7 +113,7 @@ void PCB_EDIT_FRAME::SaveProjectSettings( bool aAskForSave )
|
|||
}
|
||||
|
||||
|
||||
PARAM_CFG_ARRAY& PCB_EDIT_FRAME::GetProjectFileParameters()
|
||||
std::vector<PARAM_CFG*>& PCB_EDIT_FRAME::GetProjectFileParameters()
|
||||
{
|
||||
m_projectFileParams.clear();
|
||||
|
||||
|
@ -147,7 +147,7 @@ PARAM_CFG_ARRAY& PCB_EDIT_FRAME::GetProjectFileParameters()
|
|||
}
|
||||
|
||||
|
||||
PARAM_CFG_ARRAY& PCB_EDIT_FRAME::GetConfigurationSettings()
|
||||
std::vector<PARAM_CFG*>& PCB_EDIT_FRAME::GetConfigurationSettings()
|
||||
{
|
||||
PCB_DISPLAY_OPTIONS& displ_opts = m_DisplayOptions;
|
||||
|
||||
|
|
|
@ -109,9 +109,8 @@ BOOST_AUTO_TEST_CASE( AddPins )
|
|||
BOOST_CHECK_EQUAL( m_sheet.GetPin( pinPos ), &pinRef );
|
||||
|
||||
// check the actual list can be retrieved
|
||||
// this should be const...
|
||||
SCH_SHEET_PINS& pins = m_sheet.GetPins();
|
||||
BOOST_CHECK_EQUAL( &pins[0], &pinRef );
|
||||
std::vector<SCH_SHEET_PIN*>& pins = m_sheet.GetPins();
|
||||
BOOST_CHECK_EQUAL( pins[0], &pinRef );
|
||||
|
||||
// catch the bad call
|
||||
CHECK_WX_ASSERT( m_sheet.RemovePin( nullptr ) );
|
||||
|
@ -131,22 +130,20 @@ BOOST_AUTO_TEST_CASE( PinRenumbering )
|
|||
{
|
||||
for( int i = 0; i < 5; ++i )
|
||||
{
|
||||
auto pin = std::make_unique<SCH_SHEET_PIN>( &m_sheet, wxPoint{ i, i }, "name" );
|
||||
SCH_SHEET_PIN* pin = new SCH_SHEET_PIN( &m_sheet, wxPoint{ i, i }, "name" );
|
||||
|
||||
// set the pins to have the same number going in
|
||||
pin->SetNumber( 2 );
|
||||
|
||||
m_sheet.AddPin( pin.release() );
|
||||
m_sheet.AddPin( pin );
|
||||
}
|
||||
|
||||
SCH_SHEET_PINS& pins = m_sheet.GetPins();
|
||||
std::vector<SCH_SHEET_PIN*>& pins = m_sheet.GetPins();
|
||||
|
||||
std::vector<int> numbers;
|
||||
|
||||
for( const auto& pin : pins )
|
||||
{
|
||||
numbers.push_back( pin.GetNumber() );
|
||||
}
|
||||
for( SCH_SHEET_PIN* pin : pins )
|
||||
numbers.push_back( pin->GetNumber() );
|
||||
|
||||
// and now...they are all unique
|
||||
BOOST_CHECK_PREDICATE( KI_TEST::CollectionHasNoDuplicates<decltype( numbers )>, ( numbers ) );
|
||||
|
@ -180,12 +177,9 @@ BOOST_AUTO_TEST_CASE( EndconnectionPoints )
|
|||
|
||||
// Insert the pins into the sheet
|
||||
for( const auto& pin : pin_defs )
|
||||
{
|
||||
m_sheet.AddPin(
|
||||
std::make_unique<SCH_SHEET_PIN>( &m_sheet, pin.m_pos, pin.m_pin_name ).release() );
|
||||
}
|
||||
m_sheet.AddPin( new SCH_SHEET_PIN( &m_sheet, pin.m_pos, pin.m_pin_name ) );
|
||||
|
||||
SCH_SHEET_PINS& pins = m_sheet.GetPins();
|
||||
std::vector<SCH_SHEET_PIN*>& pins = m_sheet.GetPins();
|
||||
|
||||
// make sure the pins made it in
|
||||
BOOST_CHECK_EQUAL( pins.size(), pin_defs.size() );
|
||||
|
@ -195,17 +189,17 @@ BOOST_AUTO_TEST_CASE( EndconnectionPoints )
|
|||
std::vector<DANGLING_END_ITEM> expectedDangling;
|
||||
|
||||
// Construct expected from the pin, not defs, as we need the pin address
|
||||
for( auto& pin : pins )
|
||||
for( SCH_SHEET_PIN* pin : pins )
|
||||
{
|
||||
expectedDangling.emplace_back(
|
||||
DANGLING_END_T::SHEET_LABEL_END, &pin, pin.GetPosition(), &pin );
|
||||
expectedDangling.emplace_back( DANGLING_END_T::SHEET_LABEL_END, pin,
|
||||
pin->GetPosition(), pin );
|
||||
}
|
||||
|
||||
std::vector<DANGLING_END_ITEM> dangling;
|
||||
m_sheet.GetEndPoints( dangling );
|
||||
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS( dangling.begin(), dangling.end(), expectedDangling.begin(),
|
||||
expectedDangling.end() );
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS( dangling.begin(), dangling.end(),
|
||||
expectedDangling.begin(), expectedDangling.end() );
|
||||
}
|
||||
|
||||
// And check the connection getter
|
||||
|
@ -222,7 +216,7 @@ BOOST_AUTO_TEST_CASE( EndconnectionPoints )
|
|||
m_sheet.GetConnectionPoints( connections );
|
||||
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS( connections.begin(), connections.end(),
|
||||
expectedConnections.begin(), expectedConnections.end() );
|
||||
expectedConnections.begin(), expectedConnections.end() );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue