7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2025-04-19 18:51:40 +00:00

Reduce dependency on dynamic_cast.

(Especially where it is no-worky on MacOS.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17245
This commit is contained in:
Jeff Young 2024-09-04 17:23:31 +01:00
parent 43ea0d0adb
commit 94f995c49e
44 changed files with 389 additions and 246 deletions

View File

@ -230,7 +230,7 @@ void BOARD_ADAPTER::ReloadColorSettings() noexcept
try
{
cfg = Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>();
cfg = Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
}
catch( const std::runtime_error& e )
{

View File

@ -1243,8 +1243,6 @@ void RENDER_3D_RAYTRACE_BASE::load3DModels( CONTAINER_3D& aDstContainer, bool aS
fpMatrix, SFVEC3F( modelunit_to_3d_units_factor, modelunit_to_3d_units_factor,
modelunit_to_3d_units_factor ) );
BOARD_ITEM* boardItem = dynamic_cast<BOARD_ITEM*>( fp );
// Get the list of model files for this model
S3D_CACHE* cacheMgr = m_boardAdapter.Get3dCacheManager();
@ -1299,7 +1297,7 @@ void RENDER_3D_RAYTRACE_BASE::load3DModels( CONTAINER_3D& aDstContainer, bool aS
SFVEC3F( model.m_Scale.x, model.m_Scale.y, model.m_Scale.z ) );
addModels( aDstContainer, modelPtr, modelMatrix, (float) model.m_Opacity,
aSkipMaterialInformation, boardItem );
aSkipMaterialInformation, fp );
}
}
}

View File

@ -114,7 +114,7 @@ EDA_3D_VIEWER_FRAME::EDA_3D_VIEWER_FRAME( KIWAY* aKiway, PCB_BASE_FRAME* aParent
SetStatusWidths( arrayDim( status_dims ), status_dims );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
ANTIALIASING_MODE aaMode = static_cast<ANTIALIASING_MODE>( cfg->m_Render.opengl_AA_mode );
m_canvas = new EDA_3D_CANVAS( this, OGL_ATT_LIST::GetAttributesList( aaMode, true ),
@ -480,7 +480,7 @@ void EDA_3D_VIEWER_FRAME::Process_Special_Functions( wxCommandEvent &event )
case ID_MENU3D_RESET_DEFAULTS:
{
auto cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>();
auto cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
cfg->ResetToDefaults();
LoadSettings( cfg );
@ -562,8 +562,8 @@ void EDA_3D_VIEWER_FRAME::LoadSettings( APP_SETTINGS_BASE *aCfg )
{
EDA_BASE_FRAME::LoadSettings( aCfg );
EDA_3D_VIEWER_SETTINGS* cfg = dynamic_cast<EDA_3D_VIEWER_SETTINGS*>( aCfg );
wxASSERT( cfg );
// Dynamic_cast here will fail on Mac when called from CvPCB.
EDA_3D_VIEWER_SETTINGS* cfg = static_cast<EDA_3D_VIEWER_SETTINGS*>( aCfg );
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER_FRAME::LoadSettings" ) );
@ -604,7 +604,7 @@ void EDA_3D_VIEWER_FRAME::LoadSettings( APP_SETTINGS_BASE *aCfg )
void EDA_3D_VIEWER_FRAME::SaveSettings( APP_SETTINGS_BASE *aCfg )
{
auto cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>();
auto cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
EDA_BASE_FRAME::SaveSettings( cfg );
@ -640,7 +640,7 @@ void EDA_3D_VIEWER_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTex
ReCreateMainToolbar();
loadCommonSettings();
applySettings( Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>() );
applySettings( Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) );
m_appearancePanel->CommonSettingsChanged();
@ -669,7 +669,7 @@ void EDA_3D_VIEWER_FRAME::ShowChangedLanguage()
void EDA_3D_VIEWER_FRAME::ToggleAppearanceManager()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
wxAuiPaneInfo& layersManager = m_auimgr.GetPane( "LayersManager" );
// show auxiliary Vertical layers and visibility manager toolbar

View File

@ -204,7 +204,7 @@ void PANEL_PREVIEW_3D_MODEL::loadSettings()
// TODO(JE) use all control options
m_boardAdapter.m_MousewheelPanning = settings->m_Input.scroll_modifier_zoom != 0;
EDA_3D_VIEWER_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>();
auto* cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
if( cfg )
{

View File

@ -34,7 +34,8 @@
#include <wx/fdrepdlg.h>
#include <eda_pattern_match.h>
EDA_ITEM::EDA_ITEM( EDA_ITEM* parent, KICAD_T idType ) :
EDA_ITEM::EDA_ITEM( EDA_ITEM* parent, KICAD_T idType, bool isSCH_ITEM, bool isBOARD_ITEM ) :
KIGFX::VIEW_ITEM( isSCH_ITEM, isBOARD_ITEM ),
m_structType( idType ),
m_flags( 0 ),
m_parent( parent ),
@ -42,7 +43,8 @@ EDA_ITEM::EDA_ITEM( EDA_ITEM* parent, KICAD_T idType ) :
{ }
EDA_ITEM::EDA_ITEM( KICAD_T idType ) :
EDA_ITEM::EDA_ITEM( KICAD_T idType, bool isSCH_ITEM, bool isBOARD_ITEM ) :
KIGFX::VIEW_ITEM( isSCH_ITEM, isBOARD_ITEM ),
m_structType( idType ),
m_flags( 0 ),
m_parent( nullptr ),
@ -51,6 +53,7 @@ EDA_ITEM::EDA_ITEM( KICAD_T idType ) :
EDA_ITEM::EDA_ITEM( const EDA_ITEM& base ) :
KIGFX::VIEW_ITEM( base.IsSCH_ITEM(), base.IsBOARD_ITEM() ),
m_Uuid( base.m_Uuid ),
m_structType( base.m_structType ),
m_flags( base.m_flags ),

View File

@ -371,20 +371,20 @@ void DISPLAY_FOOTPRINTS_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
WINDOW_SETTINGS* DISPLAY_FOOTPRINTS_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg )
{
CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>();
CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" );
return &cfg->m_FootprintViewer;
}
PCB_VIEWERS_SETTINGS_BASE* DISPLAY_FOOTPRINTS_FRAME::GetViewerSettingsBase() const
{
return Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>();
return Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" );
}
MAGNETIC_SETTINGS* DISPLAY_FOOTPRINTS_FRAME::GetMagneticItemsSettings()
{
CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>();
CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" );
return &cfg->m_FootprintViewerMagneticSettings;
}
@ -525,6 +525,7 @@ void DISPLAY_FOOTPRINTS_FRAME::InitDisplay()
}
GetBoard()->Add( footprint );
GetCanvas()->GetView()->Update( footprint );
m_currentFootprint = footprintName;
m_currentComp = comp;
setFPWatcher( footprint );
@ -579,10 +580,10 @@ void DISPLAY_FOOTPRINTS_FRAME::UpdateMsgPanel()
COLOR_SETTINGS* DISPLAY_FOOTPRINTS_FRAME::GetColorSettings( bool aForceRefresh ) const
{
auto* settings = Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>();
auto* cfg = Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fp_edit" );
if( settings )
return Pgm().GetSettingsManager().GetColorSettings( settings->m_ColorTheme );
if( cfg )
return Pgm().GetSettingsManager().GetColorSettings( cfg->m_ColorTheme );
else
return Pgm().GetSettingsManager().GetColorSettings();
}

View File

@ -75,7 +75,7 @@ wxString SCH_ITEM::GetBodyStyleDescription( int aBodyStyle )
/* They are not inline because this creates problems with gcc at linking time in debug mode */
SCH_ITEM::SCH_ITEM( EDA_ITEM* aParent, KICAD_T aType, int aUnit, int aBodyStyle ) :
EDA_ITEM( aParent, aType ),
EDA_ITEM( aParent, aType, true, false ),
m_unit( aUnit ),
m_bodyStyle( aBodyStyle ),
m_private( false )

View File

@ -79,7 +79,7 @@ class BOARD_ITEM : public EDA_ITEM
{
public:
BOARD_ITEM( BOARD_ITEM* aParent, KICAD_T idtype, PCB_LAYER_ID aLayer = F_Cu ) :
EDA_ITEM( aParent, idtype ),
EDA_ITEM( aParent, idtype, false, true ),
m_layer( aLayer ),
m_isKnockout( false ),
m_isLocked( false ),

View File

@ -470,8 +470,8 @@ public:
#endif
protected:
EDA_ITEM( EDA_ITEM* parent, KICAD_T idType );
EDA_ITEM( KICAD_T idType );
EDA_ITEM( EDA_ITEM* parent, KICAD_T idType, bool isSCH_ITEM = false, bool isBOARD_ITEM = false );
EDA_ITEM( KICAD_T idType, bool isSCH_ITEM = false, bool isBOARD_ITEM = false );
EDA_ITEM( const EDA_ITEM& base );
/**

View File

@ -103,7 +103,7 @@ public:
size_t typeHash = typeid( T ).hash_code();
if( m_app_settings_cache.count( typeHash ) )
ret = dynamic_cast<T*>( m_app_settings_cache.at( typeHash ) );
ret = static_cast<T*>( m_app_settings_cache.at( typeHash ) );
if( ret )
return ret;
@ -128,6 +128,42 @@ public:
return ret;
}
template<typename T>
T* GetAppSettings( const wxString& aFilename )
{
#ifndef __WXMAC__
return GetAppSettings<T>();
#endif
T* ret = nullptr;
size_t typeHash = typeid( T ).hash_code();
if( m_app_settings_cache.count( typeHash ) )
ret = static_cast<T*>( m_app_settings_cache.at( typeHash ) );
if( ret )
return ret;
auto it = std::find_if( m_settings.begin(), m_settings.end(),
[&]( const std::unique_ptr<JSON_SETTINGS>& aSettings )
{
return aSettings->GetFilename() == aFilename;
} );
if( it != m_settings.end() )
{
ret = static_cast<T*>( it->get() );
}
else
{
throw std::runtime_error( "Tried to GetAppSettings before registering" );
}
m_app_settings_cache[typeHash] = ret;
return ret;
}
/**
* Retrieves a color settings object that applications can read colors from.
* If the given settings file cannot be found, returns the default settings.

View File

@ -83,7 +83,9 @@ enum VIEW_VISIBILITY_FLAGS {
class GAL_API VIEW_ITEM : public INSPECTABLE
{
public:
VIEW_ITEM() :
VIEW_ITEM( bool isSCH_ITEM = false, bool isBOARD_ITEM = false ) :
m_isSCH_ITEM( isSCH_ITEM ),
m_isBOARD_ITEM( isBOARD_ITEM ),
m_viewPrivData( nullptr ),
m_forcedTransparency( 0.0 )
{
@ -94,6 +96,8 @@ public:
VIEW_ITEM( const VIEW_ITEM& aOther ) = delete;
VIEW_ITEM& operator=( const VIEW_ITEM& aOther ) = delete;
bool IsSCH_ITEM() const { return m_isSCH_ITEM; }
bool IsBOARD_ITEM() const { return m_isBOARD_ITEM; }
/**
* Return the bounding box of the item covering all its layers.
*
@ -162,6 +166,8 @@ public:
private:
friend class VIEW;
bool m_isSCH_ITEM;
bool m_isBOARD_ITEM;
VIEW_ITEM_DATA* m_viewPrivData;
double m_forcedTransparency; ///< Additional transparency for diff'ing items.
};

View File

@ -88,12 +88,12 @@ void ARRAY_CREATOR::Invoke()
for ( int i = 0; i < m_selection.Size(); ++i )
{
BOARD_ITEM* item = dynamic_cast<BOARD_ITEM*>( m_selection[ i ] );
if( !item )
if( !m_selection[i]->IsBOARD_ITEM() )
continue;
FOOTPRINT* parentFootprint = dynamic_cast<FOOTPRINT*>( item->GetParentFootprint() );
BOARD_ITEM* item = static_cast<BOARD_ITEM*>( m_selection[ i ] );
FOOTPRINT* parentFootprint = item->GetParentFootprint();
// If it is not the footprint editor, then duplicate the parent footprint instead.
// This check assumes that the footprint child objects are correctly parented, if

View File

@ -502,8 +502,10 @@ void BOARD::Move( const VECTOR2I& aMoveVector ) // overload
INSPECTOR_FUNC inspector =
[&] ( EDA_ITEM* item, void* testData )
{
if( BOARD_ITEM* board_item = dynamic_cast<BOARD_ITEM*>( item ) )
if( item->IsBOARD_ITEM() )
{
BOARD_ITEM* board_item = static_cast<BOARD_ITEM*>( item );
// aMoveVector was snapshotted, don't need "data".
// Only move the top level group
if( !board_item->GetParentGroup() && !board_item->GetParentFootprint() )
@ -2818,8 +2820,10 @@ BOARD::GroupLegalOpsField BOARD::GroupLegalOps( const PCB_SELECTION& selection )
for( EDA_ITEM* item : selection )
{
if( BOARD_ITEM* board_item = dynamic_cast<BOARD_ITEM*>( item ) )
if( item->IsBOARD_ITEM() )
{
BOARD_ITEM* board_item = static_cast<BOARD_ITEM*>( item );
if( board_item->Type() == PCB_GROUP_T )
hasGroup = true;

View File

@ -207,9 +207,12 @@ void BOARD_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
for( COMMIT_LINE& ent : m_changes )
{
BOARD_ITEM* boardItem = dynamic_cast<BOARD_ITEM*>( ent.m_item );
if( !ent.m_item || !ent.m_item->IsBOARD_ITEM() )
continue;
if( m_isBoardEditor && boardItem )
BOARD_ITEM* boardItem = static_cast<BOARD_ITEM*>( ent.m_item );
if( m_isBoardEditor )
{
if( boardItem->Type() == PCB_VIA_T || boardItem->Type() == PCB_FOOTPRINT_T
|| boardItem->IsOnLayer( F_Mask ) || boardItem->IsOnLayer( B_Mask ) )
@ -248,7 +251,7 @@ void BOARD_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
}
}
if( boardItem && boardItem->IsSelected() )
if( boardItem->IsSelected() )
selectedModified = true;
}
@ -258,12 +261,12 @@ void BOARD_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
for( COMMIT_LINE& ent : m_changes )
{
int changeType = ent.m_type & CHT_TYPE;
int changeFlags = ent.m_type & CHT_FLAGS;
BOARD_ITEM* boardItem = dynamic_cast<BOARD_ITEM*>( ent.m_item );
if( !ent.m_item || !ent.m_item->IsBOARD_ITEM() )
continue;
wxASSERT( ent.m_item );
wxCHECK2( boardItem, continue );
BOARD_ITEM* boardItem = boardItem = static_cast<BOARD_ITEM*>( ent.m_item );
int changeType = ent.m_type & CHT_TYPE;
int changeFlags = ent.m_type & CHT_FLAGS;
switch( changeType )
{
@ -422,7 +425,10 @@ void BOARD_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
case CHT_MODIFY:
{
BOARD_ITEM* boardItemCopy = dynamic_cast<BOARD_ITEM*>( ent.m_copy );
BOARD_ITEM* boardItemCopy = nullptr;
if( ent.m_copy && ent.m_copy->IsBOARD_ITEM() )
boardItemCopy = static_cast<BOARD_ITEM*>( ent.m_copy );
if( !( aCommitFlags & SKIP_UNDO ) )
{
@ -510,8 +516,14 @@ void BOARD_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
for( size_t i = num_changes; i < m_changes.size(); ++i )
{
COMMIT_LINE& ent = m_changes[i];
BOARD_ITEM* boardItem = dynamic_cast<BOARD_ITEM*>( ent.m_item );
BOARD_ITEM* boardItemCopy = dynamic_cast<BOARD_ITEM*>( ent.m_copy );
BOARD_ITEM* boardItem = nullptr;
BOARD_ITEM* boardItemCopy = nullptr;
if( ent.m_item && ent.m_item->IsBOARD_ITEM() )
boardItem = static_cast<BOARD_ITEM*>( ent.m_item );
if( ent.m_copy && ent.m_copy->IsBOARD_ITEM() )
boardItemCopy = static_cast<BOARD_ITEM*>( ent.m_copy );
wxCHECK2( boardItem, continue );
@ -600,8 +612,8 @@ EDA_ITEM* BOARD_COMMIT::MakeImage( EDA_ITEM* aItem )
{
EDA_ITEM* clone = aItem->Clone();
if( BOARD_ITEM* board_item = dynamic_cast<BOARD_ITEM*>( clone ) )
board_item->SetParentGroup( nullptr );
if( clone->IsBOARD_ITEM() )
static_cast<BOARD_ITEM*>( clone )->SetParentGroup( nullptr );
clone->SetFlags( UR_TRANSIENT );
@ -625,12 +637,14 @@ void BOARD_COMMIT::Revert()
for( auto it = m_changes.rbegin(); it != m_changes.rend(); ++it )
{
COMMIT_LINE& ent = *it;
BOARD_ITEM* boardItem = dynamic_cast<BOARD_ITEM*>( ent.m_item );
if( !ent.m_item || !ent.m_item->IsBOARD_ITEM() )
continue;
BOARD_ITEM* boardItem = static_cast<BOARD_ITEM*>( ent.m_item );
int changeType = ent.m_type & CHT_TYPE;
int changeFlags = ent.m_type & CHT_FLAGS;
wxCHECK2( boardItem, continue );
switch( changeType )
{
case CHT_ADD:
@ -661,15 +675,18 @@ void BOARD_COMMIT::Revert()
break;
case CHT_REMOVE:
{
if( !( changeFlags & CHT_DONE ) )
break;
view->Add( boardItem );
connectivity->Add( boardItem );
if( FOOTPRINT* parentFP = dynamic_cast<FOOTPRINT*>( board->GetItem( ent.m_parent ) ) )
BOARD_ITEM* parent = board->GetItem( ent.m_parent );
if( parent->Type() == PCB_FOOTPRINT_T )
{
parentFP->Add( boardItem, ADD_MODE::INSERT );
static_cast<FOOTPRINT*>( parent )->Add( boardItem, ADD_MODE::INSERT );
}
else
{
@ -678,14 +695,15 @@ void BOARD_COMMIT::Revert()
}
break;
}
case CHT_MODIFY:
{
view->Remove( boardItem );
connectivity->Remove( boardItem );
BOARD_ITEM* boardItemCopy = dynamic_cast<BOARD_ITEM*>( ent.m_copy );
wxASSERT( boardItemCopy );
wxASSERT( ent.m_copy && ent.m_copy->IsBOARD_ITEM() );
BOARD_ITEM* boardItemCopy = static_cast<BOARD_ITEM*>( ent.m_copy );
boardItem->SwapItemData( boardItemCopy );
if( PCB_GROUP* group = dynamic_cast<PCB_GROUP*>( boardItem ) )

View File

@ -267,7 +267,9 @@ INSPECT_RESULT GENERAL_COLLECTOR::Inspect( EDA_ITEM* aTestItem, void* aTestData
break;
default:
boardItem = dynamic_cast<BOARD_ITEM*>( aTestItem );
if( aTestItem->IsBOARD_ITEM() )
boardItem = static_cast<BOARD_ITEM*>( aTestItem );
break;
}

View File

@ -188,7 +188,7 @@ void DIALOG_FOOTPRINT_CHOOSER::build3DCanvas()
// TODO(JE) use all control options
m_boardAdapter.m_MousewheelPanning = settings->m_Input.scroll_modifier_zoom != 0;
EDA_3D_VIEWER_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>();
auto* cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
if( cfg )
{

View File

@ -303,7 +303,10 @@ void DIALOG_POSITION_RELATIVE::OnUseUserOriginClick( wxCommandEvent& event )
void DIALOG_POSITION_RELATIVE::UpdateAnchor( EDA_ITEM* aItem )
{
BOARD_ITEM* item = dynamic_cast<BOARD_ITEM*>( aItem );
BOARD_ITEM* item = nullptr;
if( aItem && aItem->IsBOARD_ITEM() )
item = static_cast<BOARD_ITEM*>( aItem );
m_options.anchorType = ANCHOR_ITEM;
updateAnchorInfo( item );

View File

@ -765,8 +765,7 @@ LSEQ PANEL_SETUP_LAYERS::getRemovedLayersWithItems()
{
BOARD_ITEM* item = collector[i];
if( dynamic_cast<FOOTPRINT*>( item )
|| dynamic_cast<FOOTPRINT*>( item->GetParentFootprint() ) )
if( item->Type() == PCB_FOOTPRINT_T || item->GetParentFootprint() )
continue;
removedLayers.push_back( layer_id );

View File

@ -374,10 +374,10 @@ WINDOW_SETTINGS* FOOTPRINT_CHOOSER_FRAME::GetWindowSettings( APP_SETTINGS_BASE*
COLOR_SETTINGS* FOOTPRINT_CHOOSER_FRAME::GetColorSettings( bool aForceRefresh ) const
{
auto* settings = Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>();
auto* cfg = Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fp_edit" );
if( settings )
return Pgm().GetSettingsManager().GetColorSettings( settings->m_ColorTheme );
if( cfg )
return Pgm().GetSettingsManager().GetColorSettings( cfg->m_ColorTheme );
else
return Pgm().GetSettingsManager().GetColorSettings();
}

View File

@ -246,7 +246,7 @@ wxWindow* FOOTPRINT_PREVIEW_PANEL::GetWindow()
FOOTPRINT_PREVIEW_PANEL* FOOTPRINT_PREVIEW_PANEL::New( KIWAY* aKiway, wxWindow* aParent,
UNITS_PROVIDER* aUnitsProvider )
{
PCBNEW_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>();
PCBNEW_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
if( cfg->m_Window.grid.grids.empty() )
cfg->m_Window.grid.grids = cfg->DefaultGridSizeList();

View File

@ -811,7 +811,7 @@ void FOOTPRINT_VIEWER_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
PCB_BASE_FRAME::LoadSettings( aCfg );
// Fetch display and grid settings from Footprint Editor
auto fpedit = Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>();
auto* fpedit = Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fp_edit" );
m_displayOptions = fpedit->m_Display;
GetGalDisplayOptions().ReadWindowSettings( fpedit->m_Window );
@ -861,10 +861,10 @@ WINDOW_SETTINGS* FOOTPRINT_VIEWER_FRAME::GetWindowSettings( APP_SETTINGS_BASE* a
COLOR_SETTINGS* FOOTPRINT_VIEWER_FRAME::GetColorSettings( bool aForceRefresh ) const
{
auto* settings = Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>();
auto* cfg = Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fp_edit" );
if( settings )
return Pgm().GetSettingsManager().GetColorSettings( settings->m_ColorTheme );
if( cfg )
return Pgm().GetSettingsManager().GetColorSettings( cfg->m_ColorTheme );
else
return Pgm().GetSettingsManager().GetColorSettings();
}

View File

@ -70,8 +70,8 @@ void GRID_CELL_LAYER_RENDERER::Draw( wxGrid& aGrid, wxGridCellAttr& aAttr, wxDC&
else
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
FOOTPRINT_EDITOR_SETTINGS* settings = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>();
cs = mgr.GetColorSettings( settings->m_ColorTheme );
FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fp_edit" );
cs = mgr.GetColorSettings( cfg->m_ColorTheme );
}
// draw the swatch

View File

@ -170,10 +170,11 @@ void CLIPBOARD_IO::SaveSelection( const PCB_SELECTION& aSelected, bool isFootpri
for( EDA_ITEM* item : aSelected )
{
BOARD_ITEM* boardItem = dynamic_cast<BOARD_ITEM*>( item );
BOARD_ITEM* copy = nullptr;
if( !item->IsBOARD_ITEM() )
continue;
wxCHECK2( boardItem, continue );
BOARD_ITEM* boardItem = static_cast<BOARD_ITEM*>( item );
BOARD_ITEM* copy = nullptr;
if( PCB_FIELD* field = dynamic_cast<PCB_FIELD*>( item ) )
{
@ -283,7 +284,10 @@ void CLIPBOARD_IO::SaveSelection( const PCB_SELECTION& aSelected, bool isFootpri
for( EDA_ITEM* item : aSelected )
{
BOARD_ITEM* boardItem = dynamic_cast<BOARD_ITEM*>( item );
if( !item->IsBOARD_ITEM() )
continue;
BOARD_ITEM* boardItem = static_cast<BOARD_ITEM*>( item );
BOARD_ITEM* copy = nullptr;
wxCHECK2( boardItem, continue );

View File

@ -594,7 +594,10 @@ void PCB_BASE_FRAME::SetPlotSettings( const PCB_PLOT_PARAMS& aSettings )
GetCanvas()->GetView()->UpdateAllItemsConditionally(
[&]( KIGFX::VIEW_ITEM* aItem ) -> int
{
BOARD_ITEM* item = dynamic_cast<BOARD_ITEM*>( aItem );
BOARD_ITEM* item = nullptr;
if( aItem->IsBOARD_ITEM() )
item = static_cast<BOARD_ITEM*>( aItem );
// Note: KIGFX::REPAINT isn't enough for things that go from invisible to
// visible as they won't be found in the view layer's itemset for re-painting.
@ -913,13 +916,13 @@ void PCB_BASE_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
PCBNEW_SETTINGS* PCB_BASE_FRAME::GetPcbNewSettings() const
{
return Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>();
return Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
}
FOOTPRINT_EDITOR_SETTINGS* PCB_BASE_FRAME::GetFootprintEditorSettings() const
{
return Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>();
return Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
}
@ -930,18 +933,18 @@ PCB_VIEWERS_SETTINGS_BASE* PCB_BASE_FRAME::GetViewerSettingsBase() const
case FRAME_PCB_EDITOR:
case FRAME_PCB_DISPLAY3D:
default:
return Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>();
return Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
case FRAME_FOOTPRINT_EDITOR:
case FRAME_FOOTPRINT_WIZARD:
return Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>();
return Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
case FRAME_FOOTPRINT_VIEWER:
case FRAME_FOOTPRINT_CHOOSER:
case FRAME_FOOTPRINT_PREVIEW:
case FRAME_CVPCB:
case FRAME_CVPCB_DISPLAY:
return Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>();
return Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" );
}
}

View File

@ -322,7 +322,7 @@ void PCB_DRAW_PANEL_GAL::UpdateColors()
}
else
{
PCBNEW_SETTINGS* app = Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>();
auto* app = Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
if( app )
cs = Pgm().GetSettingsManager().GetColorSettings( app->m_ColorTheme );

Some files were not shown because too many files have changed in this diff Show More