KiCad PCB EDA Suite
|
#include <settings_manager.h>
Public Member Functions | |
SETTINGS_MANAGER (bool aHeadless=false) | |
~SETTINGS_MANAGER () | |
bool | IsOK () |
void | SetKiway (KIWAY *aKiway) |
Associate this setting manager with the given Kiway. | |
template<typename T > | |
T * | RegisterSettings (T *aSettings, bool aLoadNow=true) |
Takes ownership of the pointer passed in. | |
void | Load () |
void | Load (JSON_SETTINGS *aSettings) |
void | Save () |
void | Save (JSON_SETTINGS *aSettings) |
void | FlushAndRelease (JSON_SETTINGS *aSettings, bool aSave=true) |
If the given settings object is registered, save it to disk and unregister it. | |
template<typename T > | |
T * | GetAppSettings () |
Returns a handle to the a given settings by type If the settings have already been loaded, returns the existing pointer. | |
template<typename T > | |
T * | GetAppSettings (const wxString &aFilename) |
COLOR_SETTINGS * | GetColorSettings (const wxString &aName="user") |
Retrieves a color settings object that applications can read colors from. | |
std::vector< COLOR_SETTINGS * > | GetColorSettingsList () |
void | SaveColorSettings (COLOR_SETTINGS *aSettings, const std::string &aNamespace="") |
Safely saves a COLOR_SETTINGS to disk, preserving any changes outside the given namespace. | |
COLOR_SETTINGS * | AddNewColorSettings (const wxString &aFilename) |
Registers a new color settings object with the given filename. | |
COLOR_SETTINGS * | GetMigratedColorSettings () |
Returns a color theme for storing colors migrated from legacy (5.x and earlier) settings, creating the theme if necessary. | |
COMMON_SETTINGS * | GetCommonSettings () const |
Retrieves the common settings shared by all applications. | |
wxString | GetPathForSettingsFile (JSON_SETTINGS *aSettings) |
Returns the path a given settings file should be loaded from / stored to. | |
bool | MigrateIfNeeded () |
Handles the initialization of the user settings directory and migration from previous KiCad versions as needed. | |
void | SetMigrationSource (const wxString &aSource) |
Helper for DIALOG_MIGRATE_SETTINGS to specify a source for migration. | |
void | SetMigrateLibraryTables (bool aMigrate=true) |
bool | GetPreviousVersionPaths (std::vector< wxString > *aName=nullptr) |
Retrieves the name of the most recent previous KiCad version that can be found in the user settings directory. | |
void | ReloadColorSettings () |
Re-scans the color themes directory, reloading any changes it finds. | |
bool | LoadProject (const wxString &aFullPath, bool aSetActive=true) |
Loads a project or sets up a new project with a specified path. | |
bool | UnloadProject (PROJECT *aProject, bool aSave=true) |
Saves, unloads and unregisters the given PROJECT. | |
bool | IsProjectOpen () const |
Helper for checking if we have a project open TODO: This should be deprecated along with Prj() once we support multiple projects fully. | |
bool | IsProjectOpenNotDummy () const |
Helper for checking if we have a project open that is not a dummy project. | |
PROJECT & | Prj () const |
A helper while we are not MDI-capable – return the one and only project. | |
PROJECT * | GetProject (const wxString &aFullPath) const |
Retrieves a loaded project by name. | |
std::vector< wxString > | GetOpenProjects () const |
bool | SaveProject (const wxString &aFullPath=wxEmptyString, PROJECT *aProject=nullptr) |
Saves a loaded project. | |
void | SaveProjectAs (const wxString &aFullPath, PROJECT *aProject=nullptr) |
Sets the currently loaded project path and saves it (pointers remain valid) Note that this will not modify the read-only state of the project, so it will have no effect if the project is marked as read-only! | |
void | SaveProjectCopy (const wxString &aFullPath, PROJECT *aProject=nullptr) |
Saves a copy of the current project under the given path. | |
wxString | GetProjectBackupsPath () const |
bool | BackupProject (REPORTER &aReporter, wxFileName &aTarget) const |
Creates a backup archive of the current project. | |
bool | TriggerBackupIfNeeded (REPORTER &aReporter) const |
Calls BackupProject if a new backup is needed according to the current backup policy. | |
Static Public Member Functions | |
static bool | IsSettingsPathValid (const wxString &aPath) |
Checks if a given path is probably a valid KiCad configuration directory. | |
static wxString | GetColorSettingsPath () |
Returns the path where color scheme files are stored; creating it if missing (normally . | |
static std::string | GetSettingsVersion () |
Parses the current KiCad build version and extracts the major and minor revision to use as the name of the settings directory for this KiCad version. | |
static wxString | GetUserSettingsPath () |
A proxy for PATHS::GetUserSettingsPath rather than fighting swig. | |
Private Member Functions | |
JSON_SETTINGS * | registerSettings (JSON_SETTINGS *aSettings, bool aLoadNow=true) |
COLOR_SETTINGS * | loadColorSettingsByName (const wxString &aName) |
Attempts to load a color theme by name (the color theme directory and .json ext are assumed) | |
COLOR_SETTINGS * | registerColorSettings (const wxString &aFilename, bool aAbsolutePath=false) |
void | loadAllColorSettings () |
bool | loadProjectFile (PROJECT &aProject) |
Registers a PROJECT_FILE and attempts to load it from disk. | |
bool | unloadProjectFile (PROJECT *aProject, bool aSave) |
Optionally saves, and then unloads and unregisters the given PROJECT_FILE. | |
void | registerBuiltinColorSettings () |
Static Private Member Functions | |
static int | compareVersions (const std::string &aFirst, const std::string &aSecond) |
Compares two settings versions, like "5.99" and "6.0". | |
static bool | extractVersion (const std::string &aVersionString, int *aMajor=nullptr, int *aMinor=nullptr) |
Extracts the numeric version from a given settings string. | |
Private Attributes | |
bool | m_headless |
True if running outside a UI context. | |
KIWAY * | m_kiway |
The kiway this settings manager interacts with. | |
std::vector< std::unique_ptr< JSON_SETTINGS > > | m_settings |
std::unordered_map< wxString, COLOR_SETTINGS * > | m_color_settings |
std::unordered_map< size_t, JSON_SETTINGS * > | m_app_settings_cache |
Cache for app settings. | |
COMMON_SETTINGS * | m_common_settings |
wxString | m_migration_source |
bool | m_migrateLibraryTables |
If true, the symbol and footprint library tables will be migrated from the previous version. | |
bool | m_ok |
True if settings loaded successfully at construction. | |
std::vector< std::unique_ptr< PROJECT > > | m_projects_list |
Loaded projects (ownership here) | |
std::map< wxString, PROJECT * > | m_projects |
Loaded projects, mapped according to project full name. | |
std::map< wxString, PROJECT_FILE * > | m_project_files |
Loaded project files, mapped according to project full name. | |
std::unique_ptr< LOCKFILE > | m_project_lock |
Lock for loaded project (expand to multiple once we support MDI) | |
Static Private Attributes | |
static wxString | backupDateTimeFormat = wxT( "%Y-%m-%d_%H%M%S" ) |
Definition at line 45 of file settings_manager.h.
SETTINGS_MANAGER::SETTINGS_MANAGER | ( | bool | aHeadless = false | ) |
Definition at line 51 of file settings_manager.cpp.
References JSON_SETTINGS::GetFullFilename(), GetPathForSettingsFile(), JSON_SETTINGS::Load(), m_common_settings, m_ok, MigrateIfNeeded(), registerBuiltinColorSettings(), RegisterSettings(), and Save().
SETTINGS_MANAGER::~SETTINGS_MANAGER | ( | ) |
Definition at line 84 of file settings_manager.cpp.
References m_color_settings, m_projects, m_projects_list, m_settings, and project.
COLOR_SETTINGS * SETTINGS_MANAGER::AddNewColorSettings | ( | const wxString & | aFilename | ) |
Registers a new color settings object with the given filename.
aFilename | is the location to store the new settings object |
Definition at line 311 of file settings_manager.cpp.
References registerColorSettings().
Referenced by FOOTPRINT_EDITOR_SETTINGS::MigrateFromLegacy(), COLOR_SETTINGS::migrateSchema0to1(), and PANEL_COLOR_SETTINGS::OnThemeChanged().
bool SETTINGS_MANAGER::BackupProject | ( | REPORTER & | aReporter, |
wxFileName & | aTarget | ||
) | const |
Creates a backup archive of the current project.
aReporter | is used for progress reporting |
aTarget | is the full path to the backup file. If empty, will generate and return the full path to the backup file. |
Definition at line 1224 of file settings_manager.cpp.
References PROJECT_ARCHIVER::Archive(), FILEEXT::ArchiveFileExtension, backupDateTimeFormat, GetProjectBackupsPath(), Prj(), and traceSettings.
Referenced by TriggerBackupIfNeeded().
|
staticprivate |
Compares two settings versions, like "5.99" and "6.0".
Definition at line 823 of file settings_manager.cpp.
References extractVersion(), and traceSettings.
Referenced by GetPreviousVersionPaths().
|
staticprivate |
Extracts the numeric version from a given settings string.
aVersionString | is the string to split at the "." |
aMajor | will store the first part |
aMinor | will store the second part |
Definition at line 863 of file settings_manager.cpp.
Referenced by compareVersions(), and GetPreviousVersionPaths().
void SETTINGS_MANAGER::FlushAndRelease | ( | JSON_SETTINGS * | aSettings, |
bool | aSave = true |
||
) |
If the given settings object is registered, save it to disk and unregister it.
aSettings | is the object to release |
Definition at line 178 of file settings_manager.cpp.
References GetPathForSettingsFile(), m_app_settings_cache, m_settings, and traceSettings.
Referenced by BIN_MOD::End(), CV::IFACE::OnKifaceStart(), SCH::IFACE::OnKifaceStart(), PCB::IFACE::OnKifaceStart(), and unloadProjectFile().
|
inline |
Returns a handle to the a given settings by type If the settings have already been loaded, returns the existing pointer.
If the settings have not been loaded, creates a new object owned by the settings manager and returns a pointer to it.
T | is a type derived from APP_SETTINGS_BASE |
aLoadNow | is true to load the registered file from disk immediately |
Definition at line 100 of file settings_manager.h.
Referenced by PANEL_DESIGN_BLOCK_LIB_TABLE::browseLibrariesHandler(), PANEL_FP_LIB_TABLE::browseLibrariesHandler(), PANEL_SYM_LIB_TABLE::browseLibrariesHandler(), DIALOG_FOOTPRINT_CHOOSER::build3DCanvas(), FOOTPRINT_CHOOSER_FRAME::build3DCanvas(), UPDATE_MANAGER::CheckForUpdate(), SCH_EDIT_FRAME::CommonSettingsChanged(), SYMBOL_EDIT_FRAME::CommonSettingsChanged(), SYMBOL_VIEWER_FRAME::CommonSettingsChanged(), GERBVIEW_FRAME::CommonSettingsChanged(), PL_EDITOR_FRAME::CommonSettingsChanged(), FOOTPRINT_EDIT_FRAME::CommonSettingsChanged(), FOOTPRINT_EDIT_FRAME::config(), PANEL_SYMBOL_CHOOSER::constructRightPanel(), PCB::IFACE::CreateKiWindow(), DESIGN_BLOCK_PREVIEW_WIDGET::DESIGN_BLOCK_PREVIEW_WIDGET(), DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST(), SYMBOL_EDITOR_DRAWING_TOOLS::doDrawShape(), SCH_MOVE_TOOL::doMoveSelection(), GRID_CELL_LAYER_RENDERER::Draw(), EVT_TOOL_RANGE(), PCB_EDITOR_CONDITIONS::get45degModeFunc(), PCB_EDIT_FRAME::GetActionPluginButtonVisible(), FOOTPRINT_CHOOSER_FRAME::GetColorSettings(), DISPLAY_FOOTPRINTS_FRAME::GetColorSettings(), SCH_BASE_FRAME::GetColorSettings(), SYMBOL_EDIT_FRAME::GetColorSettings(), GERBVIEW_FRAME::GetColorSettings(), FOOTPRINT_VIEWER_FRAME::GetColorSettings(), SCH_ITEM::GetDefaultFont(), PCB_BASE_FRAME::GetFootprintEditorSettings(), GetLastPinLength(), GetLastPinNameSize(), GetLastPinNumSize(), PCB_LAYER_PRESENTATION::getLayerColor(), DISPLAY_FOOTPRINTS_FRAME::GetMagneticItemsSettings(), PCB_EDIT_FRAME::GetOrderedActionPlugins(), PCB_BASE_FRAME::GetPcbNewSettings(), FOOTPRINT_EDIT_FRAME::GetSettings(), SCH_BASE_FRAME::GetViewerSettingsBase(), PCB_BASE_FRAME::GetViewerSettingsBase(), DISPLAY_FOOTPRINTS_FRAME::GetViewerSettingsBase(), DISPLAY_FOOTPRINTS_FRAME::GetWindowSettings(), gvconfig(), IfaceOrAddress(), DIALOG_EXPORT_2581::Init(), DIALOG_EXPORT_ODBPP::Init(), PCB_TOOL_BASE::Is45Limited(), PCBNEW_JOBS_HANDLER::JobExportRender(), DESIGN_BLOCK_LIB_TABLE::LoadGlobalTable(), FP_LIB_TABLE::LoadGlobalTable(), SYMBOL_LIB_TABLE::LoadGlobalTable(), PANEL_PREVIEW_3D_MODEL::loadSettings(), SYMBOL_VIEWER_FRAME::LoadSettings(), FOOTPRINT_VIEWER_FRAME::LoadSettings(), PCB_VIEWER_TOOLS::MeasureTool(), EESCHEMA_SETTINGS::MigrateFromLegacy(), PCBNEW_SETTINGS::MigrateFromLegacy(), FOOTPRINT_PREVIEW_PANEL::New(), KICAD_MANAGER_CONTROL::NewFromTemplate(), PANEL_PACKAGES_VIEW::OnDownloadVersionClicked(), PCB::IFACE::OnKifaceStart(), DIALOG_PCM::OnManageRepositoriesClicked(), PANEL_DESIGN_BLOCK_CHOOSER::PANEL_DESIGN_BLOCK_CHOOSER(), PANEL_DESIGN_BLOCK_LIB_TABLE::PANEL_DESIGN_BLOCK_LIB_TABLE(), PANEL_EESCHEMA_COLOR_SETTINGS::PANEL_EESCHEMA_COLOR_SETTINGS(), PANEL_FP_EDITOR_COLOR_SETTINGS::PANEL_FP_EDITOR_COLOR_SETTINGS(), PANEL_FP_LIB_TABLE::PANEL_FP_LIB_TABLE(), PANEL_FP_PROPERTIES_3D_MODEL::PANEL_FP_PROPERTIES_3D_MODEL(), PANEL_GERBVIEW_COLOR_SETTINGS::PANEL_GERBVIEW_COLOR_SETTINGS(), PANEL_GERBVIEW_DISPLAY_OPTIONS::PANEL_GERBVIEW_DISPLAY_OPTIONS(), PANEL_PCBNEW_COLOR_SETTINGS::PANEL_PCBNEW_COLOR_SETTINGS(), PANEL_SYM_LIB_TABLE::PANEL_SYM_LIB_TABLE(), PANEL_SYMBOL_CHOOSER::PANEL_SYMBOL_CHOOSER(), PANEL_TEMPLATE_FIELDNAMES::PANEL_TEMPLATE_FIELDNAMES(), PL_DRAW_PANEL_GAL::PL_DRAW_PANEL_GAL(), DIALOG_PLOT::Plot(), POSITION_RELATIVE_TOOL::PositionRelativeInteractively(), EDA_3D_VIEWER_FRAME::Process_Special_Functions(), PIN_LAYOUT_CACHE::recomputeCaches(), BOARD_ADAPTER::ReloadColorSettings(), EDA_3D_CANVAS::RenderEngineChanged(), SCH_EDIT_TOOL::RepeatDrawItem(), SYMBOL_EDITOR_PIN_TOOL::RepeatPin(), SaveFileAs(), EDA_3D_VIEWER_FRAME::SaveSettings(), SYMBOL_VIEWER_FRAME::SaveSettings(), SCHEMATIC_SETTINGS::SCHEMATIC_SETTINGS(), PCB_TEST_FRAME_BASE::SetBoard(), PANEL_SYM_LIB_TABLE::setupGrid(), PANEL_FP_LIB_TABLE::setupGrid(), PIN_TABLE_DATA_MODEL::SetValue(), KICAD_MANAGER_CONTROL::ShowPluginManager(), SYMBOL_EDIT_FRAME::SYMBOL_EDIT_FRAME(), SYMBOL_PREVIEW_WIDGET::SYMBOL_PREVIEW_WIDGET(), EDA_3D_VIEWER_FRAME::ToggleAppearanceManager(), DRAWING_TOOL::ToggleHV45Mode(), PANEL_3D_DISPLAY_OPTIONS::TransferDataFromWindow(), PANEL_3D_OPENGL_OPTIONS::TransferDataFromWindow(), PANEL_3D_RAYTRACING_OPTIONS::TransferDataFromWindow(), PANEL_PACKAGES_AND_UPDATES::TransferDataFromWindow(), PANEL_EESCHEMA_ANNOTATION_OPTIONS::TransferDataFromWindow(), PANEL_EESCHEMA_COLOR_SETTINGS::TransferDataFromWindow(), PANEL_EESCHEMA_DISPLAY_OPTIONS::TransferDataFromWindow(), PANEL_EESCHEMA_EDITING_OPTIONS::TransferDataFromWindow(), PANEL_SIMULATOR_PREFERENCES::TransferDataFromWindow(), PANEL_SYM_COLOR_SETTINGS::TransferDataFromWindow(), PANEL_SYM_DISPLAY_OPTIONS::TransferDataFromWindow(), PANEL_SYM_EDITING_OPTIONS::TransferDataFromWindow(), PANEL_TEMPLATE_FIELDNAMES::TransferDataFromWindow(), PANEL_GERBVIEW_COLOR_SETTINGS::TransferDataFromWindow(), PANEL_GERBVIEW_DISPLAY_OPTIONS::TransferDataFromWindow(), PANEL_GERBVIEW_EXCELLON_SETTINGS::TransferDataFromWindow(), DIALOG_UPDATE_CHECK_PROMPT::TransferDataFromWindow(), PANEL_PL_EDITOR_COLOR_SETTINGS::TransferDataFromWindow(), DIALOG_EXPORT_2581::TransferDataFromWindow(), DIALOG_EXPORT_ODBPP::TransferDataFromWindow(), PANEL_EDIT_OPTIONS::TransferDataFromWindow(), PANEL_FP_EDITOR_COLOR_SETTINGS::TransferDataFromWindow(), PANEL_FP_EDITOR_DEFAULTS::TransferDataFromWindow(), PANEL_PCB_DISPLAY_OPTIONS::TransferDataFromWindow(), PANEL_PCBNEW_COLOR_SETTINGS::TransferDataFromWindow(), PANEL_3D_DISPLAY_OPTIONS::TransferDataToWindow(), PANEL_3D_OPENGL_OPTIONS::TransferDataToWindow(), PANEL_3D_RAYTRACING_OPTIONS::TransferDataToWindow(), PANEL_PACKAGES_AND_UPDATES::TransferDataToWindow(), PANEL_EESCHEMA_ANNOTATION_OPTIONS::TransferDataToWindow(), PANEL_EESCHEMA_DISPLAY_OPTIONS::TransferDataToWindow(), PANEL_EESCHEMA_EDITING_OPTIONS::TransferDataToWindow(), PANEL_SIMULATOR_PREFERENCES::TransferDataToWindow(), PANEL_SYM_COLOR_SETTINGS::TransferDataToWindow(), PANEL_SYM_DISPLAY_OPTIONS::TransferDataToWindow(), PANEL_SYM_EDITING_OPTIONS::TransferDataToWindow(), PANEL_GERBVIEW_DISPLAY_OPTIONS::TransferDataToWindow(), PANEL_GERBVIEW_EXCELLON_SETTINGS::TransferDataToWindow(), PANEL_PL_EDITOR_COLOR_SETTINGS::TransferDataToWindow(), PANEL_EDIT_OPTIONS::TransferDataToWindow(), PANEL_FP_EDITOR_DEFAULTS::TransferDataToWindow(), PANEL_PCB_DISPLAY_OPTIONS::TransferDataToWindow(), SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace(), PCB_DRAW_PANEL_GAL::UpdateColors(), DRAWING_TOOL::UpdateStatusBar(), KIGFX::PCB_PAINTER::viewer_settings(), DIALOG_FOOTPRINT_WIZARD_LIST::~DIALOG_FOOTPRINT_WIZARD_LIST(), PANEL_FOOTPRINT_CHOOSER::~PANEL_FOOTPRINT_CHOOSER(), and SYMBOL_EDIT_FRAME::~SYMBOL_EDIT_FRAME().
|
inline |
Definition at line 132 of file settings_manager.h.
COLOR_SETTINGS * SETTINGS_MANAGER::GetColorSettings | ( | const wxString & | aName = "user" | ) |
Retrieves a color settings object that applications can read colors from.
If the given settings file cannot be found, returns the default settings.
aName | is the name of the color scheme to load |
Definition at line 204 of file settings_manager.cpp.
References COLOR_SETTINGS::COLOR_BUILTIN_DEFAULT, loadColorSettingsByName(), m_color_settings, registerColorSettings(), JSON_SETTINGS::SetFilename(), and JSON_SETTINGS::SetReadOnly().
Referenced by PL_EDITOR_FRAME::CommonSettingsChanged(), DESIGN_BLOCK_PREVIEW_WIDGET::DESIGN_BLOCK_PREVIEW_WIDGET(), GRID_CELL_LAYER_RENDERER::Draw(), GERBVIEW_DRAW_PANEL_GAL::GERBVIEW_DRAW_PANEL_GAL(), BOARD_ADAPTER::GetBoardEditorCopperLayerColors(), SCH_MARKER::getColor(), PCB_MARKER::getColor(), DIALOG_PLOT_SCHEMATIC::getColorSettings(), FOOTPRINT_CHOOSER_FRAME::GetColorSettings(), EDA_DRAW_FRAME::GetColorSettings(), DISPLAY_FOOTPRINTS_FRAME::GetColorSettings(), SCH_BASE_FRAME::GetColorSettings(), SYMBOL_EDIT_FRAME::GetColorSettings(), GERBVIEW_FRAME::GetColorSettings(), FOOTPRINT_EDIT_FRAME::GetColorSettings(), FOOTPRINT_VIEWER_FRAME::GetColorSettings(), FOOTPRINT_WIZARD_FRAME::GetColorSettings(), PCB_BASE_EDIT_FRAME::GetColorSettings(), PCB_LAYER_PRESENTATION::getLayerColor(), GetLayerColor(), BOARD_ADAPTER::GetLayerColors(), EESCHEMA_JOBS_HANDLER::InitRenderSettings(), PCBNEW_JOBS_HANDLER::JobExportPdf(), EESCHEMA_JOBS_HANDLER::JobSymExportSvg(), PANEL_EESCHEMA_EDITING_OPTIONS::loadEEschemaSettings(), PCB_TEST_FRAME_BASE::LoadSettings(), PANEL_EESCHEMA_COLOR_SETTINGS::PANEL_EESCHEMA_COLOR_SETTINGS(), PANEL_FP_EDITOR_COLOR_SETTINGS::PANEL_FP_EDITOR_COLOR_SETTINGS(), PANEL_GERBVIEW_COLOR_SETTINGS::PANEL_GERBVIEW_COLOR_SETTINGS(), PANEL_PCBNEW_COLOR_SETTINGS::PANEL_PCBNEW_COLOR_SETTINGS(), PL_DRAW_PANEL_GAL::PL_DRAW_PANEL_GAL(), EXPORT_SVG::Plot(), SCH_PLOTTER::Plot(), SCH_SHEET::Plot(), DIALOG_PLOT::Plot(), SCH_SYMBOL::PlotDNP(), SCH_PRINTOUT::PrintPage(), BOARD_ADAPTER::ReloadColorSettings(), PANEL_COLOR_SETTINGS::saveCurrentTheme(), GERBVIEW_FRAME::SaveSettings(), SCH_DRAW_PANEL::SCH_DRAW_PANEL(), BOARD_ADAPTER::SetLayerColors(), SYMBOL_PREVIEW_WIDGET::SYMBOL_PREVIEW_WIDGET(), PANEL_SYM_COLOR_SETTINGS::TransferDataToWindow(), PANEL_PL_EDITOR_COLOR_SETTINGS::TransferDataToWindow(), and PCB_DRAW_PANEL_GAL::UpdateColors().
|
inline |
Definition at line 176 of file settings_manager.h.
Referenced by DIALOG_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_PLOT_SCHEMATIC::initDlg(), PANEL_SYM_COLOR_SETTINGS::TransferDataToWindow(), and DIALOG_PRINT_PCBNEW::TransferDataToWindow().
|
static |
Returns the path where color scheme files are stored; creating it if missing (normally .
/colors/ under the user settings path)
Definition at line 795 of file settings_manager.cpp.
References PATHS::GetUserSettingsPath(), path, and traceSettings.
Referenced by GetPathForSettingsFile(), loadAllColorSettings(), loadColorSettingsByName(), PANEL_COLOR_SETTINGS::OnBtnOpenThemeFolderClicked(), PANEL_COLOR_SETTINGS::OnThemeChanged(), and SaveColorSettings().
|
inline |
Retrieves the common settings shared by all applications.
Definition at line 220 of file settings_manager.h.
Referenced by GetLanguage(), PANEL_PLUGIN_SETTINGS::TransferDataFromWindow(), PANEL_PLUGIN_SETTINGS::TransferDataToWindow(), and TriggerBackupIfNeeded().
COLOR_SETTINGS * SETTINGS_MANAGER::GetMigratedColorSettings | ( | ) |
Returns a color theme for storing colors migrated from legacy (5.x and earlier) settings, creating the theme if necessary.
This theme will be called "user.json" / "User".
Definition at line 320 of file settings_manager.cpp.
References m_color_settings, registerColorSettings(), Save(), and COLOR_SETTINGS::SetName().
Referenced by EESCHEMA_SETTINGS::MigrateFromLegacy(), GERBVIEW_SETTINGS::MigrateFromLegacy(), and PCBNEW_SETTINGS::MigrateFromLegacy().
std::vector< wxString > SETTINGS_MANAGER::GetOpenProjects | ( | ) | const |
Definition at line 1054 of file settings_manager.cpp.
References m_projects.
Referenced by KICAD_MANAGER_FRAME::canCloseWindow(), and KICAD_MANAGER_FRAME::SaveSettings().
wxString SETTINGS_MANAGER::GetPathForSettingsFile | ( | JSON_SETTINGS * | aSettings | ) |
Returns the path a given settings file should be loaded from / stored to.
aSettings | is the settings object |
Definition at line 436 of file settings_manager.cpp.
References GetColorSettingsPath(), JSON_SETTINGS::GetLocation(), PROJECT::GetProjectPath(), PATHS::GetUserSettingsPath(), and Prj().
Referenced by FlushAndRelease(), Load(), MigrateIfNeeded(), PANEL_COLOR_SETTINGS::OnThemeChanged(), registerSettings(), Save(), SETTINGS_MANAGER(), and unloadProjectFile().
bool SETTINGS_MANAGER::GetPreviousVersionPaths | ( | std::vector< wxString > * | aName = nullptr | ) |
Retrieves the name of the most recent previous KiCad version that can be found in the user settings directory.
For legacy versions (5.x, and 5.99 builds before this code was written), this will return "5.x"
aName | is filled with the name of the previous version, if one exists |
Definition at line 642 of file settings_manager.cpp.
References PATHS::CalculateUserSettingsPath(), compareVersions(), alg::delete_if(), extractVersion(), GetSettingsVersion(), IsSettingsPathValid(), and traceSettings.
Referenced by DIALOG_MIGRATE_SETTINGS::TransferDataToWindow().
PROJECT * SETTINGS_MANAGER::GetProject | ( | const wxString & | aFullPath | ) | const |
Retrieves a loaded project by name.
aFullPath | is the full path including name and extension to the project file |
Definition at line 1045 of file settings_manager.cpp.
References m_projects.
Referenced by GetDefaultProject(), EESCHEMA_HELPERS::GetDefaultProject(), LoadBoard(), EESCHEMA_HELPERS::LoadSchematic(), NewBoard(), DIALOG_SCHEMATIC_SETUP::onAuxiliaryAction(), and DIALOG_BOARD_SETUP::onAuxiliaryAction().
wxString SETTINGS_MANAGER::GetProjectBackupsPath | ( | ) | const |
Definition at line 1215 of file settings_manager.cpp.
References PROJECT::GetProjectName(), PROJECT::GetProjectPath(), Prj(), and PROJECT_BACKUPS_DIR_SUFFIX.
Referenced by BackupProject(), and TriggerBackupIfNeeded().
|
static |
Parses the current KiCad build version and extracts the major and minor revision to use as the name of the settings directory for this KiCad version.
Definition at line 816 of file settings_manager.cpp.
References GetMajorMinorVersion().
Referenced by GetPreviousVersionPaths(), and DIALOG_MIGRATE_SETTINGS::TransferDataToWindow().
|
static |
A proxy for PATHS::GetUserSettingsPath rather than fighting swig.
Definition at line 1449 of file settings_manager.cpp.
References PATHS::GetUserSettingsPath().
|
inline |
Definition at line 55 of file settings_manager.h.
bool SETTINGS_MANAGER::IsProjectOpen | ( | ) | const |
Helper for checking if we have a project open TODO: This should be deprecated along with Prj() once we support multiple projects fully.
Definition at line 1033 of file settings_manager.cpp.
References m_projects.
Referenced by FOOTPRINT_EDIT_FRAME::doCloseWindow(), PCB_BASE_EDIT_FRAME::doCloseWindow(), and KICAD_MANAGER_FRAME::GetProjectFileName().
bool SETTINGS_MANAGER::IsProjectOpenNotDummy | ( | ) | const |
Helper for checking if we have a project open that is not a dummy project.
Definition at line 1039 of file settings_manager.cpp.
References m_projects.
|
static |
Checks if a given path is probably a valid KiCad configuration directory.
Actually it just checks if a file called "kicad_common" exists, because that's probably good enough for now.
aPath | is the path to check |
Definition at line 782 of file settings_manager.cpp.
Referenced by GetPreviousVersionPaths(), and DIALOG_MIGRATE_SETTINGS::validatePath().
void SETTINGS_MANAGER::Load | ( | ) |
Definition at line 117 of file settings_manager.cpp.
References GetPathForSettingsFile(), and m_settings.
Referenced by init_unit_test(), and PGM_BASE::InitPgm().
void SETTINGS_MANAGER::Load | ( | JSON_SETTINGS * | aSettings | ) |
Definition at line 136 of file settings_manager.cpp.
References GetPathForSettingsFile(), and m_settings.
|
private |
Definition at line 340 of file settings_manager.cpp.
References GetColorSettingsPath(), PATHS::GetDefault3rdPartyPath(), PGM_BASE::GetLocalEnvVariables(), PATHS::GetStockDataPath(), Pgm(), registerBuiltinColorSettings(), registerColorSettings(), and JSON_SETTINGS::SetReadOnly().
Referenced by ReloadColorSettings().
|
private |
Attempts to load a color theme by name (the color theme directory and .json ext are assumed)
aName | is the filename of the color theme (without the extension or path) |
Definition at line 243 of file settings_manager.cpp.
References GetColorSettingsPath(), JSON_SETTINGS::GetFilename(), m_color_settings, RegisterSettings(), and traceSettings.
Referenced by GetColorSettings().
bool SETTINGS_MANAGER::LoadProject | ( | const wxString & | aFullPath, |
bool | aSetActive = true |
||
) |
Loads a project or sets up a new project with a specified path.
aFullPath | is the full path to the project |
aSetActive | if true will set the loaded project as the active project |
Definition at line 893 of file settings_manager.cpp.
References FILEEXT::LegacyProjectFileExtension, JSON_SETTINGS::LoadFromFile(), loadProjectFile(), m_kiway, m_project_lock, m_projects, m_projects_list, path, project, PROJECT_VAR_NAME, KIWAY::ProjectChanged(), FILEEXT::ProjectFileExtension, RegisterSettings(), traceSettings, unloadProjectFile(), and LOCKFILE::Valid().
Referenced by KICAD_MANAGER_FRAME::CreateNewProject(), GetDefaultProject(), EESCHEMA_HELPERS::GetDefaultProject(), PGM_BASE::InitPgm(), LoadBoard(), KI_TEST::LoadBoard(), KICAD_MANAGER_FRAME::LoadProject(), EESCHEMA_HELPERS::LoadSchematic(), KI_TEST::LoadSchematic(), NewBoard(), DIALOG_SCHEMATIC_SETUP::onAuxiliaryAction(), DIALOG_BOARD_SETUP::onAuxiliaryAction(), SCH_EDIT_FRAME::OnImportProject(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), SCH_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), SCH::readSchematicFromFile(), TEST_NGSPICE_HELPERS::TEST_NGSPICE_HELPERS(), and UnloadProject().
|
private |
Registers a PROJECT_FILE and attempts to load it from disk.
aProject | is the project object to load the file for |
Definition at line 1161 of file settings_manager.cpp.
References PROJECT::GetProjectFullName(), JSON_SETTINGS::LoadFromFile(), m_project_files, path, RegisterSettings(), PROJECT_FILE::SetProject(), and PROJECT::setProjectFile().
Referenced by LoadProject().
bool SETTINGS_MANAGER::MigrateIfNeeded | ( | ) |
Handles the initialization of the user settings directory and migration from previous KiCad versions as needed.
This method will check for the existence of the user settings path for this KiCad version. If it exists, settings load will proceed normally using that path.
If that directory is empty or does not exist, the migration wizard will be launched, which will give users the option to migrate settings from a previous KiCad version (if one is found), manually specify a directory to migrate fromm, or start with default settings.
Definition at line 539 of file settings_manager.cpp.
References DisplayErrorMessage(), MIGRATION_TRAVERSER::GetErrors(), GetPathForSettingsFile(), PATHS::GetUserSettingsPath(), JSON_SETTINGS::LoadFromFile(), COMMON_SETTINGS::m_Env, m_headless, m_migrateLibraryTables, m_migration_source, path, JSON_SETTINGS::SaveToFile(), DIALOG_SHIM::ShowModal(), traceSettings, and COMMON_SETTINGS::ENVIRONMENT::vars.
Referenced by SETTINGS_MANAGER().
PROJECT & SETTINGS_MANAGER::Prj | ( | ) | const |
A helper while we are not MDI-capable – return the one and only project.
Definition at line 1025 of file settings_manager.cpp.
References m_projects_list.
Referenced by BackupProject(), PCB_NET_INSPECTOR_PANEL::buildColumns(), PCB_NET_INSPECTOR_PANEL::buildNetsList(), PCB_EDIT_FRAME::Files_io_from_id(), PCBNEW_JOBS_HANDLER::getBoard(), GetPathForSettingsFile(), GetProjectBackupsPath(), EESCHEMA_JOBS_HANDLER::getSchematic(), API_HANDLER_COMMON::handleGetNetClasses(), KI_TEST::LoadBoard(), KI_TEST::LoadSchematic(), PCB_NET_INSPECTOR_PANEL::netFilterMatches(), PCB_NET_INSPECTOR_PANEL::OnBoardChanged(), PCB_NET_INSPECTOR_PANEL::OnConfigButton(), LIB_TREE::onDetailsLink(), PCB_EDIT_FRAME::OpenProjectFiles(), KIWAY::Prj(), SaveProject(), SaveProjectAs(), SaveProjectCopy(), PCB_NET_INSPECTOR_PANEL::SaveSettings(), TEST_NGSPICE_HELPERS::TEST_NGSPICE_HELPERS(), TriggerBackupIfNeeded(), and WriteDRCReport().
|
private |
Definition at line 333 of file settings_manager.cpp.
References COLOR_SETTINGS::CreateBuiltinColorSettings(), m_color_settings, and RegisterSettings().
Referenced by loadAllColorSettings(), and SETTINGS_MANAGER().
|
private |
Definition at line 298 of file settings_manager.cpp.
References m_color_settings, and RegisterSettings().
Referenced by AddNewColorSettings(), GetColorSettings(), GetMigratedColorSettings(), and loadAllColorSettings().
|
private |
Definition at line 100 of file settings_manager.cpp.
References GetPathForSettingsFile(), m_settings, and traceSettings.
|
inline |
Takes ownership of the pointer passed in.
aSettings | is a settings object to register |
Definition at line 70 of file settings_manager.h.
Referenced by BMP2CMP::IFACE::CreateKiWindow(), init_unit_test(), loadColorSettingsByName(), LoadProject(), loadProjectFile(), PCB_TEST_FRAME_BASE::LoadSettings(), CV::IFACE::OnKifaceStart(), SCH::IFACE::OnKifaceStart(), GERBV::IFACE::OnKifaceStart(), PGE::IFACE::OnKifaceStart(), PCBCALC::IFACE::OnKifaceStart(), PCB::IFACE::OnKifaceStart(), PGM_SINGLE_TOP::OnPgmInit(), PGM_KICAD::OnPgmInit(), registerBuiltinColorSettings(), registerColorSettings(), PCB_TEST_FRAME_BASE::SetBoard(), and SETTINGS_MANAGER().
void SETTINGS_MANAGER::ReloadColorSettings | ( | ) |
Re-scans the color themes directory, reloading any changes it finds.
Definition at line 389 of file settings_manager.cpp.
References loadAllColorSettings(), and m_color_settings.
Referenced by PANEL_FP_EDITOR_COLOR_SETTINGS::PANEL_FP_EDITOR_COLOR_SETTINGS(), and KICAD_MANAGER_CONTROL::ShowPluginManager().
void SETTINGS_MANAGER::Save | ( | ) |
Definition at line 149 of file settings_manager.cpp.
References GetPathForSettingsFile(), and m_settings.
Referenced by GetMigratedColorSettings(), FOOTPRINT_EDITOR_SETTINGS::MigrateFromLegacy(), COLOR_SETTINGS::migrateSchema0to1(), SETTINGS_MANAGER(), EDA_BASE_FRAME::ShowPreferences(), PANEL_COMMON_SETTINGS::TransferDataFromWindow(), and SYMBOL_EDIT_FRAME::~SYMBOL_EDIT_FRAME().
void SETTINGS_MANAGER::Save | ( | JSON_SETTINGS * | aSettings | ) |
Definition at line 162 of file settings_manager.cpp.
References GetPathForSettingsFile(), m_settings, and traceSettings.
void SETTINGS_MANAGER::SaveColorSettings | ( | COLOR_SETTINGS * | aSettings, |
const std::string & | aNamespace = "" |
||
) |
Safely saves a COLOR_SETTINGS to disk, preserving any changes outside the given namespace.
A color settings namespace is one of the top-level JSON objects like "board", etc. This will perform a read-modify-write
aSettings | is a pointer to a valid COLOR_SETTINGS object managed by SETTINGS_MANAGER |
aNamespace | is the namespace of settings to save |
Definition at line 396 of file settings_manager.cpp.
References JSON_SETTINGS::Contains(), GetColorSettingsPath(), JSON_SETTINGS::GetFilename(), JSON_SETTINGS::GetJson(), JSON_SETTINGS::Internals(), JSON_SETTINGS::IsReadOnly(), JSON_SETTINGS::Load(), JSON_SETTINGS::LoadFromFile(), m_color_settings, path, JSON_SETTINGS::SaveToFile(), JSON_SETTINGS::Store(), and traceSettings.
Referenced by EESCHEMA_SETTINGS::MigrateFromLegacy(), GERBVIEW_SETTINGS::MigrateFromLegacy(), FOOTPRINT_EDITOR_SETTINGS::MigrateFromLegacy(), PCBNEW_SETTINGS::MigrateFromLegacy(), APPEARANCE_CONTROLS::OnColorSwatchChanged(), PANEL_FP_EDITOR_COLOR_SETTINGS::PANEL_FP_EDITOR_COLOR_SETTINGS(), PANEL_COLOR_SETTINGS::saveCurrentTheme(), GERBVIEW_FRAME::SaveSettings(), and BOARD_ADAPTER::SetLayerColors().
bool SETTINGS_MANAGER::SaveProject | ( | const wxString & | aFullPath = wxEmptyString , |
PROJECT * | aProject = nullptr |
||
) |
Saves a loaded project.
aFullPath | is the project name to save. If empty, will save the first loaded project. |
aProject | is the project to save, or nullptr to save the active project (Prj() return) |
Definition at line 1069 of file settings_manager.cpp.
References PROJECT::GetLocalSettings(), PROJECT::GetProjectFullName(), PROJECT::GetProjectPath(), PROJECT::IsReadOnly(), m_project_files, path, Prj(), project, and PROJECT_LOCAL_SETTINGS::SaveToFile().
Referenced by KICAD_MANAGER_FRAME::CloseProject(), KICAD_MANAGER_FRAME::CreateNewProject(), DIALOG_CONFIG_EQUFILES::OnOkClick(), SCH_EDIT_FRAME::OpenProjectFiles(), PROJECT::PinLibrary(), PCB_EDIT_FRAME::SavePcbFile(), SaveProjectAs(), PCB_EDIT_FRAME::SaveProjectLocalSettings(), SCH_EDIT_FRAME::saveProjectSettings(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), and PROJECT::UnpinLibrary().
void SETTINGS_MANAGER::SaveProjectAs | ( | const wxString & | aFullPath, |
PROJECT * | aProject = nullptr |
||
) |
Sets the currently loaded project path and saves it (pointers remain valid) Note that this will not modify the read-only state of the project, so it will have no effect if the project is marked as read-only!
aFullPath | is the full filename to set for the project |
aProject | is the project to save, or nullptr to save the active project (Prj() return) |
Definition at line 1096 of file settings_manager.cpp.
References PROJECT::GetLocalSettings(), PROJECT::GetProjectFullName(), PROJECT::IsReadOnly(), m_project_files, m_projects, Prj(), project, SaveProject(), PROJECT_LOCAL_SETTINGS::SaveToFile(), JSON_SETTINGS::SetFilename(), PROJECT::setProjectFullName(), and JSON_SETTINGS::SetReadOnly().
Referenced by SaveBoard(), PCB_EDIT_FRAME::SavePcbFile(), and SCH_EDIT_FRAME::SaveProject().
void SETTINGS_MANAGER::SaveProjectCopy | ( | const wxString & | aFullPath, |
PROJECT * | aProject = nullptr |
||
) |
Saves a copy of the current project under the given path.
Will save the copy even if the current project is marked as read-only.
aFullPath | is the full filename to set for the project |
aProject | is the project to save, or nullptr to save the active project (Prj() return) |
Definition at line 1135 of file settings_manager.cpp.
References PROJECT::GetLocalSettings(), PROJECT::GetProjectFullName(), m_project_files, Prj(), project, PROJECT_LOCAL_SETTINGS::SaveToFile(), and JSON_SETTINGS::SetFilename().
Referenced by PCB_EDIT_FRAME::OnExportSTEP(), PCB_EDIT_FRAME::SavePcbCopy(), and SCH_EDIT_FRAME::SaveProject().
|
inline |
Associate this setting manager with the given Kiway.
aKiway | is the kiway this settings manager should use |
Definition at line 62 of file settings_manager.h.
Referenced by PGM_SINGLE_TOP::OnPgmInit(), and PGM_KICAD::OnPgmInit().
|
inline |
Definition at line 250 of file settings_manager.h.
Referenced by DIALOG_MIGRATE_SETTINGS::TransferDataFromWindow().
|
inline |
Helper for DIALOG_MIGRATE_SETTINGS to specify a source for migration.
aSource | is a directory containing settings files to migrate from (can be empty) |
Definition at line 248 of file settings_manager.h.
Referenced by DIALOG_MIGRATE_SETTINGS::TransferDataFromWindow().
bool SETTINGS_MANAGER::TriggerBackupIfNeeded | ( | REPORTER & | aReporter | ) | const |
Calls BackupProject if a new backup is needed according to the current backup policy.
aReporter | is used for progress reporting |
Definition at line 1287 of file settings_manager.cpp.
References PROJECT_ARCHIVER::AreZipArchivesIdentical(), backupDateTimeFormat, BackupProject(), delta, COMMON_SETTINGS::AUTO_BACKUP::enabled, GetCommonSettings(), GetProjectBackupsPath(), PROJECT::GetProjectName(), COMMON_SETTINGS::AUTO_BACKUP::limit_daily_files, COMMON_SETTINGS::AUTO_BACKUP::limit_total_files, COMMON_SETTINGS::AUTO_BACKUP::limit_total_size, COMMON_SETTINGS::m_Backup, COMMON_SETTINGS::AUTO_BACKUP::min_interval, Prj(), and traceSettings.
Referenced by KICAD_MANAGER_FRAME::CloseProject(), SCH_EDIT_FRAME::doAutoSave(), and PCB_EDIT_FRAME::doAutoSave().
bool SETTINGS_MANAGER::UnloadProject | ( | PROJECT * | aProject, |
bool | aSave = true |
||
) |
Saves, unloads and unregisters the given PROJECT.
aProject | is the project object to unload |
aSave | if true will save the project before unloading |
Definition at line 979 of file settings_manager.cpp.
References PROJECT::GetProjectFullName(), LoadProject(), m_kiway, m_project_lock, m_projects, m_projects_list, PROJECT_VAR_NAME, KIWAY::ProjectChanged(), traceSettings, and unloadProjectFile().
Referenced by KICAD_MANAGER_FRAME::CloseProject(), PCB_BASE_EDIT_FRAME::doCloseWindow(), PCB_EDIT_FRAME::Files_io_from_id(), KI_TEST::LoadSchematic(), DIALOG_SCHEMATIC_SETUP::onAuxiliaryAction(), DIALOG_BOARD_SETUP::onAuxiliaryAction(), SCH_EDIT_FRAME::OnImportProject(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), SCH_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), and SCH_EDIT_FRAME::~SCH_EDIT_FRAME().
|
private |
Optionally saves, and then unloads and unregisters the given PROJECT_FILE.
aProject | is the project object to unload the file for |
aSave | if true will save the project file before unloading |
Definition at line 1179 of file settings_manager.cpp.
References FlushAndRelease(), PROJECT::GetLocalSettings(), GetPathForSettingsFile(), PROJECT::GetProjectFullName(), m_project_files, m_settings, and name.
Referenced by LoadProject(), and UnloadProject().
|
staticprivate |
Definition at line 474 of file settings_manager.h.
Referenced by BackupProject(), and TriggerBackupIfNeeded().
|
private |
Cache for app settings.
Definition at line 449 of file settings_manager.h.
Referenced by FlushAndRelease().
|
private |
Definition at line 446 of file settings_manager.h.
Referenced by GetColorSettings(), GetMigratedColorSettings(), loadColorSettingsByName(), registerBuiltinColorSettings(), registerColorSettings(), ReloadColorSettings(), SaveColorSettings(), and ~SETTINGS_MANAGER().
|
private |
Definition at line 452 of file settings_manager.h.
Referenced by SETTINGS_MANAGER().
|
private |
True if running outside a UI context.
Definition at line 439 of file settings_manager.h.
Referenced by MigrateIfNeeded().
|
private |
The kiway this settings manager interacts with.
Definition at line 442 of file settings_manager.h.
Referenced by LoadProject(), and UnloadProject().
|
private |
If true, the symbol and footprint library tables will be migrated from the previous version.
Definition at line 457 of file settings_manager.h.
Referenced by MigrateIfNeeded().
|
private |
Definition at line 454 of file settings_manager.h.
Referenced by MigrateIfNeeded().
|
private |
True if settings loaded successfully at construction.
Definition at line 460 of file settings_manager.h.
Referenced by SETTINGS_MANAGER().
|
private |
Loaded project files, mapped according to project full name.
Definition at line 469 of file settings_manager.h.
Referenced by loadProjectFile(), SaveProject(), SaveProjectAs(), SaveProjectCopy(), and unloadProjectFile().
|
private |
Lock for loaded project (expand to multiple once we support MDI)
Definition at line 472 of file settings_manager.h.
Referenced by LoadProject(), and UnloadProject().
|
private |
Loaded projects, mapped according to project full name.
Definition at line 466 of file settings_manager.h.
Referenced by GetOpenProjects(), GetProject(), IsProjectOpen(), IsProjectOpenNotDummy(), LoadProject(), SaveProjectAs(), UnloadProject(), and ~SETTINGS_MANAGER().
|
private |
Loaded projects (ownership here)
Definition at line 463 of file settings_manager.h.
Referenced by LoadProject(), Prj(), UnloadProject(), and ~SETTINGS_MANAGER().
|
private |
Definition at line 444 of file settings_manager.h.
Referenced by FlushAndRelease(), Load(), registerSettings(), Save(), unloadProjectFile(), and ~SETTINGS_MANAGER().