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:
parent
43ea0d0adb
commit
94f995c49e
3d-viewer
3d_canvas
3d_rendering/raytracing
3d_viewer
dialogs
common
cvpcb
eeschema
include
pcbnew
array_creator.cppboard.cppboard_commit.cppcollectors.cpp
dialogs
footprint_chooser_frame.cppfootprint_preview_panel.cppfootprint_viewer_frame.cppgrid_layer_box_helpers.cppkicad_clipboard.cpppcb_base_frame.cpppcb_draw_panel_gal.cpppcb_edit_frame.cpppcb_painter.cpppcb_view.cpprouter
tools
board_editor_control.cppboard_inspection_tool.cppconvert_tool.cppdrawing_tool.cppedit_tool.cppedit_tool_move_fct.cppgroup_tool.cpppcb_selection.cpppcb_selection_conditions.cpppcb_selection_tool.cppplacement_tool.cppposition_relative_tool.cpp
undo_redo.cppwidgets
qa/qa_utils
@ -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 )
|
||||
{
|
||||
|
@ -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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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 )
|
||||
{
|
||||
|
@ -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 ),
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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 )
|
||||
|
@ -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 ),
|
||||
|
@ -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 );
|
||||
|
||||
/**
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
};
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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 ) )
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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 )
|
||||
{
|
||||
|
@ -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 );
|
||||
|
@ -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 );
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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 );
|
||||
|
@ -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" );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user