diff --git a/3d-viewer/3d_canvas/board_adapter.cpp b/3d-viewer/3d_canvas/board_adapter.cpp index 0ac4aa30ed..31b5e50dbd 100644 --- a/3d-viewer/3d_canvas/board_adapter.cpp +++ b/3d-viewer/3d_canvas/board_adapter.cpp @@ -266,14 +266,18 @@ bool BOARD_ADAPTER::IsFootprintShown( FOOTPRINT_ATTR_T aFPAttributes ) const return true; if( aFPAttributes & FP_EXCLUDE_FROM_POS_FILES ) - return false; + { + if( !m_Cfg->m_Render.show_footprints_not_in_posfile ) + return false; + } if( aFPAttributes & FP_SMD ) return m_Cfg->m_Render.show_footprints_insert; - else if( aFPAttributes & FP_THROUGH_HOLE ) + + if( aFPAttributes & FP_THROUGH_HOLE ) return m_Cfg->m_Render.show_footprints_normal; - else - return m_Cfg->m_Render.show_footprints_virtual; + + return m_Cfg->m_Render.show_footprints_virtual; } diff --git a/3d-viewer/3d_viewer/3d_menubar.cpp b/3d-viewer/3d_viewer/3d_menubar.cpp index b73db43f59..9ba9034691 100644 --- a/3d-viewer/3d_viewer/3d_menubar.cpp +++ b/3d-viewer/3d_viewer/3d_menubar.cpp @@ -118,9 +118,10 @@ void EDA_3D_VIEWER_FRAME::CreateMenuBar() prefsMenu->AppendSeparator(); - prefsMenu->Add( EDA_3D_ACTIONS::showTHT, ACTION_MENU::CHECK ); - prefsMenu->Add( EDA_3D_ACTIONS::showSMD, ACTION_MENU::CHECK ); - prefsMenu->Add( EDA_3D_ACTIONS::showVirtual, ACTION_MENU::CHECK ); + prefsMenu->Add( EDA_3D_ACTIONS::showTHT, ACTION_MENU::CHECK ); + prefsMenu->Add( EDA_3D_ACTIONS::showSMD, ACTION_MENU::CHECK ); + prefsMenu->Add( EDA_3D_ACTIONS::showVirtual, ACTION_MENU::CHECK ); + prefsMenu->Add( EDA_3D_ACTIONS::showNotInPosFile, ACTION_MENU::CHECK ); prefsMenu->AppendSeparator(); diff --git a/3d-viewer/3d_viewer/3d_toolbar.cpp b/3d-viewer/3d_viewer/3d_toolbar.cpp index 01a4ebbc69..1bf4330f52 100644 --- a/3d-viewer/3d_viewer/3d_toolbar.cpp +++ b/3d-viewer/3d_viewer/3d_toolbar.cpp @@ -115,6 +115,7 @@ void EDA_3D_VIEWER_FRAME::ReCreateMainToolbar() m_mainToolBar->Add( EDA_3D_ACTIONS::showTHT, ACTION_TOOLBAR::TOGGLE ); m_mainToolBar->Add( EDA_3D_ACTIONS::showSMD, ACTION_TOOLBAR::TOGGLE ); m_mainToolBar->Add( EDA_3D_ACTIONS::showVirtual, ACTION_TOOLBAR::TOGGLE ); + m_mainToolBar->Add( EDA_3D_ACTIONS::showNotInPosFile, ACTION_TOOLBAR::TOGGLE ); m_mainToolBar->AddScaledSeparator( this ); m_mainToolBar->AddControl( m_viewportsLabel ); diff --git a/3d-viewer/3d_viewer/eda_3d_viewer_frame.cpp b/3d-viewer/3d_viewer/eda_3d_viewer_frame.cpp index 001abad759..5b608709d3 100644 --- a/3d-viewer/3d_viewer/eda_3d_viewer_frame.cpp +++ b/3d-viewer/3d_viewer/eda_3d_viewer_frame.cpp @@ -245,6 +245,11 @@ void EDA_3D_VIEWER_FRAME::setupUIConditions() { return m_boardAdapter.m_Cfg->m_Render.show_footprints_virtual; }; + auto show_NotInPosfile = + [this]( const SELECTION& aSel ) + { + return m_boardAdapter.m_Cfg->m_Render.show_footprints_not_in_posfile; + }; auto showBBoxes = [this]( const SELECTION& aSel ) { @@ -266,6 +271,8 @@ void EDA_3D_VIEWER_FRAME::setupUIConditions() mgr->SetConditions( EDA_3D_ACTIONS::showTHT, ACTION_CONDITIONS().Check( showTH ) ); mgr->SetConditions( EDA_3D_ACTIONS::showSMD, ACTION_CONDITIONS().Check( showSMD ) ); mgr->SetConditions( EDA_3D_ACTIONS::showVirtual, ACTION_CONDITIONS().Check( showVirtual ) ); + mgr->SetConditions( EDA_3D_ACTIONS::showNotInPosFile, ACTION_CONDITIONS().Check( show_NotInPosfile ) ); + mgr->SetConditions( EDA_3D_ACTIONS::showBBoxes, ACTION_CONDITIONS().Check( showBBoxes ) ); mgr->SetConditions( EDA_3D_ACTIONS::showAxis, ACTION_CONDITIONS().Check( showAxes ) ); diff --git a/3d-viewer/3d_viewer/eda_3d_viewer_settings.cpp b/3d-viewer/3d_viewer/eda_3d_viewer_settings.cpp index a1dd58167a..3c74f141e7 100644 --- a/3d-viewer/3d_viewer/eda_3d_viewer_settings.cpp +++ b/3d-viewer/3d_viewer/eda_3d_viewer_settings.cpp @@ -180,6 +180,8 @@ EDA_3D_VIEWER_SETTINGS::EDA_3D_VIEWER_SETTINGS() &m_Render.show_footprints_normal, true ) ); m_params.emplace_back( new PARAM( "render.show_footprints_virtual", &m_Render.show_footprints_virtual, true ) ); + m_params.emplace_back( new PARAM( "render.show_footprints_not_in_posfile", + &m_Render.show_footprints_not_in_posfile, true ) ); m_params.emplace_back( new PARAM( "render.show_silkscreen", &m_Render.show_silkscreen, true ) ); m_params.emplace_back( new PARAM( "render.show_soldermask", diff --git a/3d-viewer/3d_viewer/eda_3d_viewer_settings.h b/3d-viewer/3d_viewer/eda_3d_viewer_settings.h index 0c9b9a2af2..8449115549 100644 --- a/3d-viewer/3d_viewer/eda_3d_viewer_settings.h +++ b/3d-viewer/3d_viewer/eda_3d_viewer_settings.h @@ -83,6 +83,7 @@ public: bool show_footprints_insert; bool show_footprints_normal; bool show_footprints_virtual; + bool show_footprints_not_in_posfile; bool show_silkscreen; bool show_soldermask; bool show_solderpaste; diff --git a/3d-viewer/3d_viewer/tools/eda_3d_actions.cpp b/3d-viewer/3d_viewer/tools/eda_3d_actions.cpp index a63d0a3e2e..1c8f0ad7eb 100644 --- a/3d-viewer/3d_viewer/tools/eda_3d_actions.cpp +++ b/3d-viewer/3d_viewer/tools/eda_3d_actions.cpp @@ -222,6 +222,12 @@ TOOL_ACTION EDA_3D_ACTIONS::showVirtual( "3DViewer.Control.attributesOther", _( "Toggle Other 3D models" ), _( "Toggle 3D models for 'Other' type components" ), BITMAPS::show_other, AF_NONE ); +TOOL_ACTION EDA_3D_ACTIONS::showNotInPosFile( "3DViewer.Control.attribute_not_in_posfile", + AS_ACTIVE, + 'P', "", + _( "Toggle 3D models not in pos file" ), _( "Toggle 3D models not in pos file" ), + BITMAPS::show_not_in_posfile, AF_NONE ); + TOOL_ACTION EDA_3D_ACTIONS::showBBoxes( "3DViewer.Control.showBoundingBoxes", AS_GLOBAL, 0, "", _( "Show Model Bounding Boxes" ), _( "Show Model Bounding Boxes" ), diff --git a/3d-viewer/3d_viewer/tools/eda_3d_actions.h b/3d-viewer/3d_viewer/tools/eda_3d_actions.h index 1e97551cd6..4d3af5469d 100644 --- a/3d-viewer/3d_viewer/tools/eda_3d_actions.h +++ b/3d-viewer/3d_viewer/tools/eda_3d_actions.h @@ -78,6 +78,7 @@ public: static TOOL_ACTION showTHT; static TOOL_ACTION showSMD; static TOOL_ACTION showVirtual; + static TOOL_ACTION showNotInPosFile; static TOOL_ACTION showBBoxes; static TOOL_ACTION toggleRealisticMode; static TOOL_ACTION toggleBoardBody; diff --git a/3d-viewer/3d_viewer/tools/eda_3d_controller.cpp b/3d-viewer/3d_viewer/tools/eda_3d_controller.cpp index 274bcf3997..53019b104b 100644 --- a/3d-viewer/3d_viewer/tools/eda_3d_controller.cpp +++ b/3d-viewer/3d_viewer/tools/eda_3d_controller.cpp @@ -244,6 +244,11 @@ int EDA_3D_CONTROLLER::ToggleVisibility( const TOOL_EVENT& aEvent ) FLIP( m_boardAdapter->m_Cfg->m_Render.show_footprints_virtual ); reload = true; } + else if( aEvent.IsAction( &EDA_3D_ACTIONS::showNotInPosFile ) ) + { + FLIP( m_boardAdapter->m_Cfg->m_Render.show_footprints_not_in_posfile ); + reload = true; + } else if( aEvent.IsAction( &EDA_3D_ACTIONS::showBBoxes ) ) { FLIP( m_boardAdapter->m_Cfg->m_Render.opengl_show_model_bbox ); @@ -431,6 +436,8 @@ void EDA_3D_CONTROLLER::setTransitions() Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::showTHT.MakeEvent() ); Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::showSMD.MakeEvent() ); Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::showVirtual.MakeEvent() ); + Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::showNotInPosFile.MakeEvent() ); + Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::showVirtual.MakeEvent() ); Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::showBBoxes.MakeEvent() ); Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::toggleRealisticMode.MakeEvent() ); Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::toggleBoardBody.MakeEvent() ); diff --git a/common/bitmap_info.cpp b/common/bitmap_info.cpp index ae22b181ef..e855dfb657 100644 --- a/common/bitmap_info.cpp +++ b/common/bitmap_info.cpp @@ -487,6 +487,7 @@ void BuildBitmapInfo( std::unordered_map>& aBi aBitmapInfoCache[BITMAPS::show_mod_edge].emplace_back( BITMAPS::show_mod_edge, wxT( "show_mod_edge_24.png" ), 24, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::show_ratsnest].emplace_back( BITMAPS::show_ratsnest, wxT( "show_ratsnest_24.png" ), 24, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::showtrack].emplace_back( BITMAPS::showtrack, wxT( "showtrack_24.png" ), 24, wxT( "light" ) ); + aBitmapInfoCache[BITMAPS::show_not_in_posfile].emplace_back( BITMAPS::show_not_in_posfile, wxT( "show_not_in_posfile_24.png" ), 24, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::show_other].emplace_back( BITMAPS::show_other, wxT( "show_other_24.png" ), 24, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::show_tht].emplace_back( BITMAPS::show_tht, wxT( "show_tht_24.png" ), 24, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::show_smt].emplace_back( BITMAPS::show_smt, wxT( "show_smt_24.png" ), 24, wxT( "light" ) ); @@ -866,6 +867,7 @@ void BuildBitmapInfo( std::unordered_map>& aBi aBitmapInfoCache[BITMAPS::show_mod_edge].emplace_back( BITMAPS::show_mod_edge, wxT( "show_mod_edge_dark_24.png" ), 24, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::show_ratsnest].emplace_back( BITMAPS::show_ratsnest, wxT( "show_ratsnest_dark_24.png" ), 24, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::showtrack].emplace_back( BITMAPS::showtrack, wxT( "showtrack_dark_24.png" ), 24, wxT( "dark" ) ); + aBitmapInfoCache[BITMAPS::show_not_in_posfile].emplace_back( BITMAPS::show_not_in_posfile, wxT( "show_not_in_posfile_dark_24.png" ), 24, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::show_other].emplace_back( BITMAPS::show_other, wxT( "show_other_dark_24.png" ), 24, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::show_tht].emplace_back( BITMAPS::show_tht, wxT( "show_tht_dark_24.png" ), 24, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::show_smt].emplace_back( BITMAPS::show_smt, wxT( "show_smt_dark_24.png" ), 24, wxT( "dark" ) ); diff --git a/include/bitmaps/bitmaps_list.h b/include/bitmaps/bitmaps_list.h index a0f0f40c19..53e104d502 100644 --- a/include/bitmaps/bitmaps_list.h +++ b/include/bitmaps/bitmaps_list.h @@ -509,6 +509,7 @@ enum class BITMAPS : unsigned int show_no_copper_layers, show_no_layers, show_ratsnest, + show_not_in_posfile, show_other, show_tht, show_smt, diff --git a/resources/bitmaps_png/CMakeLists.txt b/resources/bitmaps_png/CMakeLists.txt index 31356b2442..65ab94a39c 100644 --- a/resources/bitmaps_png/CMakeLists.txt +++ b/resources/bitmaps_png/CMakeLists.txt @@ -464,6 +464,7 @@ set( BMAPS_MID show_mod_edge show_ratsnest showtrack + show_not_in_posfile show_other show_tht show_smt diff --git a/resources/bitmaps_png/png/show_not_in_posfile_24.png b/resources/bitmaps_png/png/show_not_in_posfile_24.png new file mode 100644 index 0000000000..1b6efb05e8 Binary files /dev/null and b/resources/bitmaps_png/png/show_not_in_posfile_24.png differ diff --git a/resources/bitmaps_png/png/show_not_in_posfile_dark_24.png b/resources/bitmaps_png/png/show_not_in_posfile_dark_24.png new file mode 100644 index 0000000000..2fff637426 Binary files /dev/null and b/resources/bitmaps_png/png/show_not_in_posfile_dark_24.png differ diff --git a/resources/bitmaps_png/sources/dark/show_not_in_posfile.svg b/resources/bitmaps_png/sources/dark/show_not_in_posfile.svg new file mode 100644 index 0000000000..dfc9b6b183 --- /dev/null +++ b/resources/bitmaps_png/sources/dark/show_not_in_posfile.svg @@ -0,0 +1,132 @@ + + + + + + + + + + image/svg+xml + + show_tht + + + + + + + + + + + + + + + show_tht + + + + + + + + + + diff --git a/resources/bitmaps_png/sources/light/show_not_in_posfile.svg b/resources/bitmaps_png/sources/light/show_not_in_posfile.svg new file mode 100644 index 0000000000..8b292a9cd3 --- /dev/null +++ b/resources/bitmaps_png/sources/light/show_not_in_posfile.svg @@ -0,0 +1,135 @@ + + + + + + + + + + image/svg+xml + + show_tht + + + + + + + + + + + + + + + show_tht + + + + + + + + + +