kicad/include/paths.h

195 lines
4.8 KiB
C
Raw Normal View History

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/>.
*/
#ifndef PATHS_H
#define PATHS_H
#include <wx/filename.h>
#include <wx/string.h>
2021-01-23 15:51:09 +00:00
/**
* Helper class to centralize the paths used throughout kicad
*/
class PATHS
{
public:
2021-01-28 02:06:13 +00:00
2021-01-23 15:51:09 +00:00
/**
* Gets the user path for python scripts
*/
static wxString GetUserScriptingPath();
2021-01-23 15:51:09 +00:00
/**
* Gets the user path for custom templates
*/
static wxString GetUserTemplatesPath();
2021-01-23 15:51:09 +00:00
/**
* Gets the user path for plugins
*/
static wxString GetUserPluginsPath();
2021-01-23 15:51:09 +00:00
/**
* Gets the user path for 3d viewer plugin
*/
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();
/**
* Gets the stock (install) data path, which is the base path for things like scripting, etc
*/
static wxString GetStockDataPath( bool aRespectRunFromBuildDir = true );
/**
* 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
*/
static wxString GetStockPluginsPath();
2021-01-23 15:51:09 +00:00
/**
* Gets the stock (install) 3d viewer plugins path
2021-01-23 15:51:09 +00:00
*/
static wxString GetStockPlugins3DPath();
2021-01-23 15:51:09 +00:00
2021-01-23 16:59:19 +00:00
/**
* Gets the stock (install) demos path
*/
static wxString GetStockDemosPath();
/**
* 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();
/**
* Gets the stock (install) 3d viewer plugins path
2021-01-23 16:59:19 +00:00
*/
static wxString GetUserCachePath();
/**
* Gets the documentation path, which is the base path for help files
*/
static wxString GetDocumentationPath();
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();
#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
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 );
#ifdef __WXWINDOWS__
/**
* Gets the root of the kicad install on Windows specifically.
* KiCad on Windows has a pseudo posix folder structure contained in its installed folder
* This retrieves that root for usage in other methods
*/
static wxString getWindowsKiCadRoot();
#endif
};
#endif