This commit is contained in:
Jeff Young 2020-06-27 19:01:00 +01:00
parent cd2dea7df2
commit 6acd35c981
13 changed files with 36 additions and 133 deletions

View File

@ -374,11 +374,6 @@ public:
*/ */
bool ReplaceInstanceSheetPath( const KIID_PATH& aOldSheetPath, const KIID_PATH& aNewSheetPath ); bool ReplaceInstanceSheetPath( const KIID_PATH& aOldSheetPath, const KIID_PATH& aNewSheetPath );
/**
* Clear the HIGHLIGHTED flag of all items of the component (fields, pins ...)
*/
bool ClearAllHighlightFlags();
const EDA_RECT GetBoundingBox() const override; const EDA_RECT GetBoundingBox() const override;
/** /**

View File

@ -1458,6 +1458,7 @@ int SCH_EDIT_TOOL::Properties( const TOOL_EVENT& aEvent )
m_frame->OnModify(); m_frame->OnModify();
} }
} }
break;
case SCH_MARKER_T: // These items have no properties to edit case SCH_MARKER_T: // These items have no properties to edit
case SCH_NO_CONNECT_T: case SCH_NO_CONNECT_T:

View File

@ -1,8 +1,3 @@
/**
* @file class_board.cpp
* @brief BOARD class functions.
*/
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
@ -33,14 +28,9 @@
#include <algorithm> #include <algorithm>
#include <iterator> #include <iterator>
#include <fctsys.h> #include <fctsys.h>
#include <common.h>
#include <kicad_string.h>
#include <pcb_base_frame.h> #include <pcb_base_frame.h>
#include <msgpanel.h>
#include <reporter.h> #include <reporter.h>
#include <ws_proxy_view_item.h> #include <ws_proxy_view_item.h>
#include <pcbnew.h>
#include <collectors.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
#include <class_track.h> #include <class_track.h>

View File

@ -25,20 +25,13 @@
*/ */
#include <fctsys.h> #include <fctsys.h>
#include <macros.h>
#include <gr_basic.h> #include <gr_basic.h>
#include <trigo.h>
#include <kicad_string.h>
#include <richio.h>
#include <bitmaps.h> #include <bitmaps.h>
#include <pcb_edit_frame.h> #include <pcb_edit_frame.h>
#include <base_units.h> #include <base_units.h>
#include <class_board.h> #include <class_board.h>
#include <class_dimension.h> #include <class_dimension.h>
#include <class_pcb_text.h> #include <class_pcb_text.h>
#include <math/util.h> // for KiROUND
#include <pgm_base.h>
#include <settings/color_settings.h> #include <settings/color_settings.h>
#include <settings/settings_manager.h> #include <settings/settings_manager.h>

View File

@ -28,17 +28,12 @@
#include <gr_basic.h> #include <gr_basic.h>
#include <bezier_curves.h> #include <bezier_curves.h>
#include <pcb_screen.h> #include <pcb_screen.h>
#include <trigo.h>
#include <msgpanel.h>
#include <bitmaps.h> #include <bitmaps.h>
#include <pcb_edit_frame.h> #include <pcb_edit_frame.h>
#include <pcbnew.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
#include <class_drawsegment.h> #include <class_drawsegment.h>
#include <base_units.h> #include <base_units.h>
#include <math/util.h> // for KiROUND
#include <pgm_base.h>
#include <settings/color_settings.h> #include <settings/color_settings.h>
#include <settings/settings_manager.h> #include <settings/settings_manager.h>

View File

@ -24,22 +24,9 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/ */
/**
* @file class_edge_mod.cpp
* @brief EDGE_MODULE class definition.
*/
#include <fctsys.h> #include <fctsys.h>
#include <trigo.h>
#include <pcb_screen.h>
#include <kicad_string.h>
#include <macros.h>
#include <pcb_base_frame.h>
#include <msgpanel.h>
#include <base_units.h>
#include <bitmaps.h> #include <bitmaps.h>
#include <math/util.h> // for KiROUND #include <math/util.h> // for KiROUND
#include <pgm_base.h>
#include <settings/color_settings.h> #include <settings/color_settings.h>
#include <settings/settings_manager.h> #include <settings/settings_manager.h>
#include <pcb_edit_frame.h> #include <pcb_edit_frame.h>
@ -202,14 +189,12 @@ void EDGE_MODULE::Flip( const wxPoint& aCentre, bool aFlipLeftRight )
break; break;
case S_POLYGON: case S_POLYGON:
// polygon corners coordinates are always relative to the // polygon corners coordinates are relative to the footprint position, orientation 0
// footprint position, orientation 0
m_Poly.Mirror( aFlipLeftRight, !aFlipLeftRight ); m_Poly.Mirror( aFlipLeftRight, !aFlipLeftRight );
break; break;
} }
// DRAWSEGMENT items are not usually on copper layers, but // DRAWSEGMENT items are not usually on copper layers, but it can happen in microwave apps.
// it can happen in microwave apps.
// However, currently, only on Front or Back layers. // However, currently, only on Front or Back layers.
// So the copper layers count is not taken in account // So the copper layers count is not taken in account
SetLayer( FlipLayer( GetLayer() ) ); SetLayer( FlipLayer( GetLayer() ) );
@ -272,13 +257,11 @@ void EDGE_MODULE::Mirror( wxPoint aCentre, bool aMirrorAroundXAxis )
void EDGE_MODULE::Rotate( const wxPoint& aRotCentre, double aAngle ) void EDGE_MODULE::Rotate( const wxPoint& aRotCentre, double aAngle )
{ {
// We should rotate the relative coordinates, but to avoid duplicate code, // We should rotate the relative coordinates, but to avoid duplicate code do the base class
// do the base class rotation of draw coordinates, which is acceptable // rotation of draw coordinates, which is acceptable because in module editor, m_Pos0 = m_Pos
// because in module editor, m_Pos0 = m_Pos
DRAWSEGMENT::Rotate( aRotCentre, aAngle ); DRAWSEGMENT::Rotate( aRotCentre, aAngle );
// and now update the relative coordinates, which are // and now update the relative coordinates, which are the reference in most transforms.
// the reference in most transforms.
SetLocalCoord(); SetLocalCoord();
} }

View File

@ -25,13 +25,10 @@
#include <fctsys.h> #include <fctsys.h>
#include <gr_basic.h> #include <gr_basic.h>
#include <trigo.h>
#include <msgpanel.h>
#include <bitmaps.h> #include <bitmaps.h>
#include <base_units.h> #include <base_units.h>
#include <pcb_base_frame.h> #include <pcb_base_frame.h>
#include <class_board.h> #include <class_board.h>
#include <class_board_item.h>
#include <class_marker_pcb.h> #include <class_marker_pcb.h>
#include <layers_id_colors_and_visibility.h> #include <layers_id_colors_and_visibility.h>
#include <settings/color_settings.h> #include <settings/color_settings.h>

View File

@ -26,21 +26,13 @@
#include <fctsys.h> #include <fctsys.h>
#include <gr_basic.h> #include <gr_basic.h>
#include <plotter.h>
#include <trigo.h>
#include <confirm.h> #include <confirm.h>
#include <kicad_string.h>
#include <pcbnew.h>
#include <refdes_utils.h> #include <refdes_utils.h>
#include <macros.h>
#include <msgpanel.h>
#include <bitmaps.h> #include <bitmaps.h>
#include <unordered_set>
#include <pcb_edit_frame.h> #include <pcb_edit_frame.h>
#include <class_board.h> #include <class_board.h>
#include <class_edge_mod.h> #include <class_edge_mod.h>
#include <class_module.h> #include <class_module.h>
#include <convert_basic_shapes_to_polygon.h>
#include <view/view.h> #include <view/view.h>
MODULE::MODULE( BOARD* parent ) : MODULE::MODULE( BOARD* parent ) :
@ -101,13 +93,11 @@ MODULE::MODULE( const MODULE& aModule ) :
m_Value->SetParent( this ); m_Value->SetParent( this );
// Copy auxiliary data: Pads // Copy auxiliary data: Pads
for( auto pad : aModule.Pads() ) for( D_PAD* pad : aModule.Pads() )
{
Add( new D_PAD( *pad ) ); Add( new D_PAD( *pad ) );
}
// Copy auxiliary data: Zones // Copy auxiliary data: Zones
for( auto item : aModule.Zones() ) for( MODULE_ZONE_CONTAINER* item : aModule.Zones() )
{ {
Add( static_cast<MODULE_ZONE_CONTAINER*>( item->Clone() ) ); Add( static_cast<MODULE_ZONE_CONTAINER*>( item->Clone() ) );
@ -119,7 +109,7 @@ MODULE::MODULE( const MODULE& aModule ) :
} }
// Copy auxiliary data: Drawings // Copy auxiliary data: Drawings
for( auto item : aModule.GraphicalItems() ) for( BOARD_ITEM* item : aModule.GraphicalItems() )
{ {
switch( item->Type() ) switch( item->Type() )
{ {
@ -157,17 +147,17 @@ MODULE::~MODULE()
delete m_Value; delete m_Value;
delete m_initial_comments; delete m_initial_comments;
for( auto p : m_pads ) for( D_PAD* p : m_pads )
delete p; delete p;
m_pads.clear(); m_pads.clear();
for( auto p : m_fp_zones ) for( MODULE_ZONE_CONTAINER* p : m_fp_zones )
delete p; delete p;
m_fp_zones.clear(); m_fp_zones.clear();
for( auto d : m_drawings ) for( BOARD_ITEM* d : m_drawings )
delete d; delete d;
m_drawings.clear(); m_drawings.clear();
@ -207,15 +197,13 @@ MODULE& MODULE::operator=( const MODULE& aOther )
// Copy auxiliary data: Pads // Copy auxiliary data: Pads
m_pads.clear(); m_pads.clear();
for( auto pad : aOther.Pads() ) for( D_PAD* pad : aOther.Pads() )
{
Add( new D_PAD( *pad ) ); Add( new D_PAD( *pad ) );
}
// Copy auxiliary data: Zones // Copy auxiliary data: Zones
m_fp_zones.clear(); m_fp_zones.clear();
for( auto item : aOther.Zones() ) for( MODULE_ZONE_CONTAINER* item : aOther.Zones() )
{ {
Add( static_cast<MODULE_ZONE_CONTAINER*>( item->Clone() ) ); Add( static_cast<MODULE_ZONE_CONTAINER*>( item->Clone() ) );
@ -229,7 +217,7 @@ MODULE& MODULE::operator=( const MODULE& aOther )
// Copy auxiliary data: Drawings // Copy auxiliary data: Drawings
m_drawings.clear(); m_drawings.clear();
for( auto item : aOther.GraphicalItems() ) for( BOARD_ITEM* item : aOther.GraphicalItems() )
{ {
switch( item->Type() ) switch( item->Type() )
{ {
@ -422,16 +410,16 @@ EDA_RECT MODULE::GetFootprintRect() const
area.SetEnd( m_Pos ); area.SetEnd( m_Pos );
area.Inflate( Millimeter2iu( 0.25 ) ); // Give a min size to the area area.Inflate( Millimeter2iu( 0.25 ) ); // Give a min size to the area
for( auto item : m_drawings ) for( BOARD_ITEM* item : m_drawings )
{ {
if( item->Type() == PCB_MODULE_EDGE_T ) if( item->Type() == PCB_MODULE_EDGE_T )
area.Merge( item->GetBoundingBox() ); area.Merge( item->GetBoundingBox() );
} }
for( auto pad : m_pads ) for( D_PAD* pad : m_pads )
area.Merge( pad->GetBoundingBox() ); area.Merge( pad->GetBoundingBox() );
for( auto zone : m_fp_zones ) for( MODULE_ZONE_CONTAINER* zone : m_fp_zones )
area.Merge( zone->GetBoundingBox() ); area.Merge( zone->GetBoundingBox() );
return area; return area;
@ -465,7 +453,7 @@ const EDA_RECT MODULE::GetBoundingBox() const
EDA_RECT area = GetFootprintRect(); EDA_RECT area = GetFootprintRect();
// Add in items not collected by GetFootprintRect(): // Add in items not collected by GetFootprintRect():
for( auto item : m_drawings ) for( BOARD_ITEM* item : m_drawings )
{ {
if( item->Type() != PCB_MODULE_EDGE_T ) if( item->Type() != PCB_MODULE_EDGE_T )
area.Merge( item->GetBoundingBox() ); area.Merge( item->GetBoundingBox() );
@ -483,7 +471,7 @@ const EDA_RECT MODULE::GetBoundingBox( bool aIncludeInvisibleText ) const
EDA_RECT area = GetFootprintRect(); EDA_RECT area = GetFootprintRect();
// Add in items not collected by GetFootprintRect(): // Add in items not collected by GetFootprintRect():
for( auto item : m_drawings ) for( BOARD_ITEM* item : m_drawings )
{ {
if( item->Type() != PCB_MODULE_EDGE_T ) if( item->Type() != PCB_MODULE_EDGE_T )
area.Merge( item->GetBoundingBox() ); area.Merge( item->GetBoundingBox() );
@ -634,19 +622,19 @@ bool MODULE::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) co
return false; return false;
// Determine if any elements in the MODULE intersect the rect // Determine if any elements in the MODULE intersect the rect
for( auto pad : m_pads ) for( D_PAD* pad : m_pads )
{ {
if( pad->HitTest( arect, false, 0 ) ) if( pad->HitTest( arect, false, 0 ) )
return true; return true;
} }
for( auto zone : m_fp_zones ) for( MODULE_ZONE_CONTAINER* zone : m_fp_zones )
{ {
if( zone->HitTest( arect, false, 0 ) ) if( zone->HitTest( arect, false, 0 ) )
return true; return true;
} }
for( auto item : m_drawings ) for( BOARD_ITEM* item : m_drawings )
{ {
if( item->HitTest( arect, false, 0 ) ) if( item->HitTest( arect, false, 0 ) )
return true; return true;
@ -660,7 +648,7 @@ bool MODULE::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) co
D_PAD* MODULE::FindPadByName( const wxString& aPadName ) const D_PAD* MODULE::FindPadByName( const wxString& aPadName ) const
{ {
for( auto pad : m_pads ) for( D_PAD* pad : m_pads )
{ {
if( pad->GetName() == aPadName ) if( pad->GetName() == aPadName )
return pad; return pad;
@ -672,7 +660,7 @@ D_PAD* MODULE::FindPadByName( const wxString& aPadName ) const
D_PAD* MODULE::GetPad( const wxPoint& aPosition, LSET aLayerMask ) D_PAD* MODULE::GetPad( const wxPoint& aPosition, LSET aLayerMask )
{ {
for( auto pad : m_pads ) for( D_PAD* pad : m_pads )
{ {
// ... and on the correct layer. // ... and on the correct layer.
if( !( pad->GetLayerSet() & aLayerMask ).any() ) if( !( pad->GetLayerSet() & aLayerMask ).any() )
@ -690,7 +678,7 @@ D_PAD* MODULE::GetTopLeftPad()
{ {
D_PAD* topLeftPad = GetFirstPad(); D_PAD* topLeftPad = GetFirstPad();
for( auto p : m_pads ) for( D_PAD* p : m_pads )
{ {
wxPoint pnt = p->GetPosition(); // GetPosition() returns the center of the pad wxPoint pnt = p->GetPosition(); // GetPosition() returns the center of the pad
@ -712,7 +700,7 @@ unsigned MODULE::GetPadCount( INCLUDE_NPTH_T aIncludeNPTH ) const
unsigned cnt = 0; unsigned cnt = 0;
for( auto pad : m_pads ) for( D_PAD* pad : m_pads )
{ {
if( pad->GetAttribute() == PAD_ATTRIB_HOLE_NOT_PLATED ) if( pad->GetAttribute() == PAD_ATTRIB_HOLE_NOT_PLATED )
continue; continue;
@ -729,7 +717,7 @@ unsigned MODULE::GetUniquePadCount( INCLUDE_NPTH_T aIncludeNPTH ) const
std::set<wxString> usedNames; std::set<wxString> usedNames;
// Create a set of used pad numbers // Create a set of used pad numbers
for( auto pad : m_pads ) for( D_PAD* pad : m_pads )
{ {
// Skip pads not on copper layers (used to build complex // Skip pads not on copper layers (used to build complex
// solder paste shapes for instance) // solder paste shapes for instance)
@ -877,13 +865,13 @@ void MODULE::RunOnChildren( const std::function<void (BOARD_ITEM*)>& aFunction )
{ {
try try
{ {
for( auto pad : m_pads ) for( D_PAD* pad : m_pads )
aFunction( static_cast<BOARD_ITEM*>( pad ) ); aFunction( static_cast<BOARD_ITEM*>( pad ) );
for( auto zone : m_fp_zones ) for( MODULE_ZONE_CONTAINER* zone : m_fp_zones )
aFunction( static_cast<MODULE_ZONE_CONTAINER*>( zone ) ); aFunction( static_cast<MODULE_ZONE_CONTAINER*>( zone ) );
for( auto drawing : m_drawings ) for( BOARD_ITEM* drawing : m_drawings )
aFunction( static_cast<BOARD_ITEM*>( drawing ) ); aFunction( static_cast<BOARD_ITEM*>( drawing ) );
aFunction( static_cast<BOARD_ITEM*>( m_Reference ) ); aFunction( static_cast<BOARD_ITEM*>( m_Reference ) );
@ -900,14 +888,12 @@ void MODULE::GetAllDrawingLayers( int aLayers[], int& aCount, bool aIncludePads
{ {
std::unordered_set<int> layers; std::unordered_set<int> layers;
for( auto item : m_drawings ) for( BOARD_ITEM* item : m_drawings )
{
layers.insert( static_cast<int>( item->GetLayer() ) ); layers.insert( static_cast<int>( item->GetLayer() ) );
}
if( aIncludePads ) if( aIncludePads )
{ {
for( auto pad : m_pads ) for( D_PAD* pad : m_pads )
{ {
int pad_layers[KIGFX::VIEW::VIEW_MAX_LAYERS], pad_layers_count; int pad_layers[KIGFX::VIEW::VIEW_MAX_LAYERS], pad_layers_count;
pad->ViewGetLayers( pad_layers, pad_layers_count ); pad->ViewGetLayers( pad_layers, pad_layers_count );
@ -920,7 +906,7 @@ void MODULE::GetAllDrawingLayers( int aLayers[], int& aCount, bool aIncludePads
aCount = layers.size(); aCount = layers.size();
int i = 0; int i = 0;
for( auto layer : layers ) for( int layer : layers )
aLayers[i++] = layer; aLayers[i++] = layer;
} }
@ -932,7 +918,6 @@ void MODULE::ViewGetLayers( int aLayers[], int& aCount ) const
switch( m_Layer ) switch( m_Layer )
{ {
default: default:
wxASSERT_MSG( false, "Illegal layer" ); // do you really have modules placed on other layers? wxASSERT_MSG( false, "Illegal layer" ); // do you really have modules placed on other layers?
KI_FALLTHROUGH; KI_FALLTHROUGH;
@ -1052,7 +1037,7 @@ void MODULE::Rotate( const wxPoint& aRotCentre, double aAngle )
m_Reference->KeepUpright( orientation, newOrientation ); m_Reference->KeepUpright( orientation, newOrientation );
m_Value->KeepUpright( orientation, newOrientation ); m_Value->KeepUpright( orientation, newOrientation );
for( auto item : m_drawings ) for( BOARD_ITEM* item : m_drawings )
{ {
if( item->Type() == PCB_MODULE_TEXT_T ) if( item->Type() == PCB_MODULE_TEXT_T )
static_cast<TEXTE_MODULE*>( item )->KeepUpright( orientation, newOrientation ); static_cast<TEXTE_MODULE*>( item )->KeepUpright( orientation, newOrientation );

View File

@ -31,17 +31,11 @@
#include <fctsys.h> #include <fctsys.h>
#include <gr_basic.h> #include <gr_basic.h>
#include <common.h>
#include <kicad_string.h>
#include <trigo.h>
#include <macros.h>
#include <richio.h>
#include <bitmaps.h> #include <bitmaps.h>
#include <pcb_edit_frame.h> #include <pcb_edit_frame.h>
#include <class_board.h> #include <class_board.h>
#include <class_pcb_target.h> #include <class_pcb_target.h>
#include <base_units.h> #include <base_units.h>
#include <pgm_base.h>
#include <settings/color_settings.h> #include <settings/color_settings.h>
#include <settings/settings_manager.h> #include <settings/settings_manager.h>

View File

@ -32,19 +32,15 @@
#include <gr_basic.h> #include <gr_basic.h>
#include <base_struct.h> #include <base_struct.h>
#include <gr_text.h> #include <gr_text.h>
#include <kicad_string.h>
#include <trigo.h>
#include <pcb_edit_frame.h> #include <pcb_edit_frame.h>
#include <msgpanel.h>
#include <base_units.h> #include <base_units.h>
#include <bitmaps.h> #include <bitmaps.h>
#include <pgm_base.h>
#include <settings/color_settings.h> #include <settings/color_settings.h>
#include <settings/settings_manager.h> #include <settings/settings_manager.h>
#include <class_board.h> #include <class_board.h>
#include <class_pcb_text.h> #include <class_pcb_text.h>
#include "pcb_painter.h" #include <pcb_painter.h>
using KIGFX::PCB_RENDER_SETTINGS; using KIGFX::PCB_RENDER_SETTINGS;

View File

@ -24,25 +24,16 @@
*/ */
#include <fctsys.h> #include <fctsys.h>
#include <gr_basic.h>
#include <trigo.h>
#include <gr_text.h> #include <gr_text.h>
#include <kicad_string.h> #include <kicad_string.h>
#include <common.h>
#include <richio.h>
#include <macros.h>
#include <pcb_edit_frame.h> #include <pcb_edit_frame.h>
#include <msgpanel.h>
#include <base_units.h> #include <base_units.h>
#include <bitmaps.h> #include <bitmaps.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
#include <view/view.h> #include <view/view.h>
#include <pcbnew.h>
#include <pgm_base.h>
#include <settings/color_settings.h> #include <settings/color_settings.h>
#include <settings/settings_manager.h> #include <settings/settings_manager.h>
#include <kiway.h>
TEXTE_MODULE::TEXTE_MODULE( MODULE* parent, TEXT_TYPE text_type ) : TEXTE_MODULE::TEXTE_MODULE( MODULE* parent, TEXT_TYPE text_type ) :
BOARD_ITEM( parent, PCB_MODULE_TEXT_T ), BOARD_ITEM( parent, PCB_MODULE_TEXT_T ),

View File

@ -25,18 +25,12 @@
*/ */
#include <fctsys.h> #include <fctsys.h>
//#include <common.h>
#include <pcb_screen.h>
#include <pcb_base_frame.h> #include <pcb_base_frame.h>
#include <class_board.h> #include <class_board.h>
#include <class_track.h> #include <class_track.h>
#include <pcbnew.h>
#include <base_units.h> #include <base_units.h>
#include <msgpanel.h>
#include <bitmaps.h> #include <bitmaps.h>
#include <view/view.h> #include <view/view.h>
#include <math/util.h> // for KiROUND
#include <pgm_base.h>
#include <settings/color_settings.h> #include <settings/color_settings.h>
#include <settings/settings_manager.h> #include <settings/settings_manager.h>

View File

@ -26,22 +26,11 @@
#include <bitmaps.h> #include <bitmaps.h>
#include <fctsys.h> #include <fctsys.h>
#include <geometry/geometry_utils.h> #include <geometry/geometry_utils.h>
#include <kicad_string.h>
#include <macros.h>
#include <msgpanel.h>
#include <pcb_base_frame.h> #include <pcb_base_frame.h>
#include <pcb_screen.h> #include <pcb_screen.h>
#include <richio.h>
#include <trigo.h>
#include <convert_to_biu.h>
#include <class_board.h> #include <class_board.h>
#include <class_zone.h> #include <class_zone.h>
#include <pcbnew.h>
#include <zones.h>
#include <math_for_graphics.h> #include <math_for_graphics.h>
#include <geometry/polygon_test_point_inside.h>
#include <math/util.h> // for KiROUND
#include <pgm_base.h>
#include <settings/color_settings.h> #include <settings/color_settings.h>
#include <settings/settings_manager.h> #include <settings/settings_manager.h>