2021-01-23 15:51:09 +00:00
|
|
|
/*
|
|
|
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
|
|
|
*
|
|
|
|
* Copyright (C) 2021 KiCad Developers, see AUTHORS.txt for contributors.
|
|
|
|
*
|
|
|
|
* This program is free software: you can redistribute it and/or modify it
|
|
|
|
* under the terms of the GNU General Public License as published by the
|
|
|
|
* Free Software Foundation, either version 3 of the License, or (at your
|
|
|
|
* option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful, but
|
|
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License along
|
|
|
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
2021-01-23 02:23:37 +00:00
|
|
|
|
|
|
|
#ifndef PATHS_H
|
|
|
|
#define PATHS_H
|
|
|
|
|
2023-09-26 01:32:26 +00:00
|
|
|
#include <kicommon.h>
|
2021-05-01 17:39:35 +00:00
|
|
|
#include <wx/filename.h>
|
|
|
|
#include <wx/string.h>
|
|
|
|
|
2023-09-24 00:21:37 +00:00
|
|
|
/**
|
|
|
|
* @note Do we really need these defined?
|
|
|
|
*/
|
|
|
|
#define UNIX_STRING_DIR_SEP wxT( "/" )
|
|
|
|
#define WIN_STRING_DIR_SEP wxT( "\\" )
|
|
|
|
|
2021-01-23 15:51:09 +00:00
|
|
|
/**
|
|
|
|
* Helper class to centralize the paths used throughout kicad
|
|
|
|
*/
|
2023-09-26 01:32:26 +00:00
|
|
|
class KICOMMON_API PATHS
|
2021-01-23 02:23:37 +00:00
|
|
|
{
|
|
|
|
public:
|
2021-01-28 02:06:13 +00:00
|
|
|
|
2021-01-23 15:51:09 +00:00
|
|
|
/**
|
|
|
|
* Gets the user path for python scripts
|
|
|
|
*/
|
2021-01-23 02:23:37 +00:00
|
|
|
static wxString GetUserScriptingPath();
|
2021-01-23 15:51:09 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the user path for custom templates
|
|
|
|
*/
|
2021-01-23 02:23:37 +00:00
|
|
|
static wxString GetUserTemplatesPath();
|
2021-01-23 15:51:09 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the user path for plugins
|
|
|
|
*/
|
2021-01-23 15:46:48 +00:00
|
|
|
static wxString GetUserPluginsPath();
|
2021-01-23 15:51:09 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the user path for 3d viewer plugin
|
|
|
|
*/
|
2021-01-23 15:46:48 +00:00
|
|
|
static wxString GetUserPlugins3DPath();
|
2021-01-23 15:51:09 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the default path we point users to create projects
|
|
|
|
*/
|
2021-01-23 04:17:32 +00:00
|
|
|
static wxString GetDefaultUserProjectsPath();
|
2021-01-23 15:51:09 +00:00
|
|
|
|
2021-01-28 02:06:13 +00:00
|
|
|
/**
|
|
|
|
* Gets the default path we point users to create projects
|
|
|
|
*/
|
|
|
|
static wxString GetDefaultUserSymbolsPath();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the default path we point users to create projects
|
|
|
|
*/
|
|
|
|
static wxString GetDefaultUserFootprintsPath();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the default path we point users to create projects
|
|
|
|
*/
|
|
|
|
static wxString GetDefaultUser3DModelsPath();
|
|
|
|
|
2021-03-08 02:59:07 +00:00
|
|
|
/**
|
|
|
|
* Gets the stock (install) data path, which is the base path for things like scripting, etc
|
|
|
|
*/
|
2021-03-20 15:41:34 +00:00
|
|
|
static wxString GetStockDataPath( bool aRespectRunFromBuildDir = true );
|
2021-03-08 02:59:07 +00:00
|
|
|
|
2021-03-29 13:37:11 +00:00
|
|
|
/**
|
|
|
|
* Gets the stock (install) EDA library data path, which is the base path for
|
|
|
|
* templates, schematic symbols, footprints, and 3D models.
|
|
|
|
*/
|
|
|
|
static wxString GetStockEDALibraryPath();
|
|
|
|
|
2020-12-08 18:39:45 +00:00
|
|
|
/**
|
|
|
|
* Gets the default path for PCM packages
|
|
|
|
*/
|
|
|
|
static wxString GetDefault3rdPartyPath();
|
|
|
|
|
2021-12-02 01:23:34 +00:00
|
|
|
/**
|
|
|
|
* Gets the stock (install) symbols path
|
|
|
|
*/
|
|
|
|
static wxString GetStockSymbolsPath();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the stock (install) footprints path
|
|
|
|
*/
|
|
|
|
static wxString GetStockFootprintsPath();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the stock (install) 3dmodels path
|
|
|
|
*/
|
|
|
|
static wxString GetStock3dmodelsPath();
|
|
|
|
|
2021-01-23 15:51:09 +00:00
|
|
|
/**
|
|
|
|
* Gets the stock (install) scripting path
|
|
|
|
*/
|
2021-01-23 04:27:39 +00:00
|
|
|
static wxString GetStockScriptingPath();
|
2021-01-23 15:51:09 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the stock (install) plugins path
|
|
|
|
*/
|
2021-01-23 15:46:48 +00:00
|
|
|
static wxString GetStockPluginsPath();
|
2021-01-23 15:51:09 +00:00
|
|
|
|
|
|
|
/**
|
2021-07-26 01:58:44 +00:00
|
|
|
* Gets the stock (install) 3d viewer plugins path
|
2021-01-23 15:51:09 +00:00
|
|
|
*/
|
2021-01-23 15:46:48 +00:00
|
|
|
static wxString GetStockPlugins3DPath();
|
2021-01-23 15:51:09 +00:00
|
|
|
|
2021-01-23 16:59:19 +00:00
|
|
|
/**
|
2021-07-26 01:58:44 +00:00
|
|
|
* Gets the stock (install) demos path
|
|
|
|
*/
|
|
|
|
static wxString GetStockDemosPath();
|
|
|
|
|
2022-02-21 17:21:20 +00:00
|
|
|
/**
|
|
|
|
* Gets the stock (install) templates path
|
|
|
|
*/
|
|
|
|
static wxString GetStockTemplatesPath();
|
|
|
|
|
2022-02-21 18:04:08 +00:00
|
|
|
/**
|
|
|
|
* Gets the locales translation data path
|
|
|
|
*/
|
|
|
|
static wxString GetLocaleDataPath();
|
|
|
|
|
2021-07-26 01:58:44 +00:00
|
|
|
/**
|
|
|
|
* Gets the stock (install) 3d viewer plugins path
|
2021-01-23 16:59:19 +00:00
|
|
|
*/
|
|
|
|
static wxString GetUserCachePath();
|
|
|
|
|
2021-04-05 17:05:42 +00:00
|
|
|
/**
|
|
|
|
* Gets the documentation path, which is the base path for help files
|
|
|
|
*/
|
|
|
|
static wxString GetDocumentationPath();
|
|
|
|
|
2024-02-07 02:32:55 +00:00
|
|
|
/**
|
|
|
|
* Gets the path used for wxSingleInstanceChecker lock files
|
|
|
|
*/
|
|
|
|
static wxString GetInstanceCheckerPath();
|
|
|
|
|
2021-01-28 02:06:13 +00:00
|
|
|
/**
|
|
|
|
* Attempts to create a given path if it does not exist
|
|
|
|
*/
|
|
|
|
static bool EnsurePathExists( const wxString& aPath );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Ensures/creates user default paths
|
|
|
|
*/
|
|
|
|
static void EnsureUserPathsExist();
|
|
|
|
|
2021-02-17 04:26:46 +00:00
|
|
|
#ifdef __WXMAC__
|
|
|
|
/**
|
|
|
|
* OSX specific function GetOSXKicadUserDataDir
|
|
|
|
*
|
|
|
|
* @return The macOS specific user data directory for KiCad.
|
|
|
|
*/
|
|
|
|
static wxString GetOSXKicadUserDataDir();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return The macOS specific machine data directory for KiCad
|
|
|
|
*/
|
|
|
|
static wxString GetOSXKicadMachineDataDir();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return The macOS specific bundle data directory for KiCad
|
|
|
|
*/
|
|
|
|
static wxString GetOSXKicadDataDir();
|
|
|
|
#endif
|
|
|
|
|
2023-12-21 16:56:53 +00:00
|
|
|
#ifdef __WXMSW__
|
2023-08-26 17:42:20 +00:00
|
|
|
/**
|
2023-09-23 23:53:22 +00:00
|
|
|
* @return The directory the font config support files can be found
|
2023-08-26 17:42:20 +00:00
|
|
|
*/
|
|
|
|
static wxString GetWindowsFontConfigDir();
|
2024-01-16 03:08:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the stock (install) data path, which is the base path for things like scripting, etc
|
|
|
|
*/
|
|
|
|
static wxString GetWindowsBaseSharePath();
|
2023-08-26 17:42:20 +00:00
|
|
|
#endif
|
|
|
|
|
2023-09-23 23:53:22 +00:00
|
|
|
/**
|
|
|
|
* Return the user configuration path used to store KiCad's configuration files.
|
|
|
|
*
|
|
|
|
* @see calculateUserSettingsPath
|
|
|
|
*
|
|
|
|
* NOTE: The path is cached at startup, it will never change during program lifetime!
|
|
|
|
*
|
|
|
|
* @return A string containing the config path for Kicad
|
|
|
|
*/
|
|
|
|
static wxString GetUserSettingsPath();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Determines the base path for user settings files.
|
|
|
|
*
|
|
|
|
* The configuration path order of precedence is determined by the following criteria:
|
|
|
|
*
|
|
|
|
* - The value of the KICAD_CONFIG_HOME environment variable
|
|
|
|
* - The value of the XDG_CONFIG_HOME environment variable.
|
|
|
|
* - The result of the call to wxStandardPaths::GetUserConfigDir() with ".config" appended
|
|
|
|
* as required on Linux builds.
|
|
|
|
*
|
|
|
|
* @param aIncludeVer will append the current KiCad version if true (default)
|
|
|
|
* @param aUseEnv will prefer the base path found in the KICAD_CONFIG_DIR if found (default)
|
|
|
|
* @return A string containing the config path for Kicad
|
|
|
|
*/
|
|
|
|
static wxString CalculateUserSettingsPath( bool aIncludeVer = true, bool aUseEnv = true );
|
|
|
|
|
2023-09-24 00:21:37 +00:00
|
|
|
static const wxString& GetExecutablePath();
|
2021-01-23 15:51:09 +00:00
|
|
|
private:
|
|
|
|
// we are a static helper
|
|
|
|
PATHS() {}
|
2021-01-28 02:06:13 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the user path for the current kicad version which acts as the root for other user paths
|
|
|
|
*
|
|
|
|
* @param aPath Variable to receive the path
|
|
|
|
*/
|
|
|
|
static void getUserDocumentPath( wxFileName& aPath );
|
2021-06-21 22:03:44 +00:00
|
|
|
|
2023-12-21 16:56:53 +00:00
|
|
|
#ifdef __WXMSW__
|
2021-06-21 22:03:44 +00:00
|
|
|
/**
|
|
|
|
* Gets the root of the kicad install on Windows specifically.
|
Fix source comment/doc typos (follow-up)
Found via `codespell -q 3 -S *.po,./thirdparty -L aactual,acount,aline,alocation,alog,anormal,anumber,aother,apoints,aparent,aray,dout,einstance,modul,ot,overide,serie,te,,tesselate,tesselator,tht`
2021-07-03 22:37:31 +00:00
|
|
|
* KiCad on Windows has a pseudo posix folder structure contained in its installed folder
|
2021-06-21 22:03:44 +00:00
|
|
|
* This retrieves that root for usage in other methods
|
|
|
|
*/
|
|
|
|
static wxString getWindowsKiCadRoot();
|
|
|
|
#endif
|
2021-01-23 02:23:37 +00:00
|
|
|
};
|
|
|
|
|
2021-03-08 02:59:07 +00:00
|
|
|
#endif
|