Set default footprint library table and 3D model library environment variables.
This commit is contained in:
parent
4265fa60bd
commit
bd199b894e
|
@ -61,6 +61,15 @@
|
|||
/// The install prefix defined in CMAKE_INSTALL_PREFIX.
|
||||
#define DEFAULT_INSTALL_PATH "@CMAKE_INSTALL_PREFIX@"
|
||||
|
||||
/// The install prefix used for KiCad's libraries.
|
||||
/// These paths are only intended to be reasonable default values that work if
|
||||
/// the user installs KiCad in the default path for a given platform.
|
||||
#if defined( APPLE )
|
||||
#define KICAD_DATA_PATH "/Library/Application Support/kicad"
|
||||
#else
|
||||
#define KICAD_DATA_PATH "@CMAKE_INSTALL_PREFIX@/@KICAD_DATA@"
|
||||
#endif
|
||||
|
||||
/// When defined, build the GITHUB_PLUGIN for pcbnew.
|
||||
#cmakedefine BUILD_GITHUB_PLUGIN
|
||||
|
||||
|
|
|
@ -51,14 +51,16 @@
|
|||
#include <confirm.h>
|
||||
|
||||
|
||||
#define KICAD_COMMON wxT( "kicad_common" )
|
||||
#define KICAD_COMMON wxT( "kicad_common" )
|
||||
|
||||
// some key strings used to store parameters in KICAD_COMMON
|
||||
|
||||
const wxChar PGM_BASE::workingDirKey[] = wxT( "WorkingDir" ); // public
|
||||
const wxChar PGM_BASE::workingDirKey[] = wxT( "WorkingDir" ); // public
|
||||
|
||||
static const wxChar languageCfgKey[] = wxT( "LanguageID" );
|
||||
static const wxChar kicadFpLibPath[] = wxT( "KicadFootprintLibraryPath" );
|
||||
static const wxChar languageCfgKey[] = wxT( "LanguageID" );
|
||||
static const wxChar kicadFpLibPath[] = wxT( "KicadFootprintLibraryPath" );
|
||||
static const wxChar pathEnvVariables[] = wxT( "EnvironmentVariables" );
|
||||
static const wxChar traceEnvVars[] = wxT( "KIENVVARS" );
|
||||
|
||||
|
||||
/**
|
||||
|
@ -353,7 +355,8 @@ bool PGM_BASE::initPgm()
|
|||
|
||||
wxInitAllImageHandlers();
|
||||
|
||||
m_pgm_checker = new wxSingleInstanceChecker( pgm_name.GetName().Lower() + wxT( "-" ) + wxGetUserId(), GetKicadLockFilePath() );
|
||||
m_pgm_checker = new wxSingleInstanceChecker( pgm_name.GetName().Lower() + wxT( "-" ) +
|
||||
wxGetUserId(), GetKicadLockFilePath() );
|
||||
|
||||
if( m_pgm_checker->IsAnotherRunning() )
|
||||
{
|
||||
|
@ -361,6 +364,7 @@ bool PGM_BASE::initPgm()
|
|||
_( "%s is already running, Continue?" ),
|
||||
GetChars( pgm_name.GetName() )
|
||||
);
|
||||
|
||||
if( !IsOK( NULL, quiz ) )
|
||||
return false;
|
||||
}
|
||||
|
@ -399,6 +403,17 @@ bool PGM_BASE::initPgm()
|
|||
|
||||
SetLanguagePath();
|
||||
|
||||
// Useful local environment variable settings.
|
||||
m_local_env_vars[ wxString( wxT( "KIGITHUB" ) ) ] =
|
||||
wxString( wxT( "https://github.com/KiCad" ) );
|
||||
|
||||
wxFileName tmpFileName;
|
||||
tmpFileName.AssignDir( wxString( wxT( KICAD_DATA_PATH ) ) );
|
||||
tmpFileName.AppendDir( wxT( "modules" ) );
|
||||
m_local_env_vars[ wxString( wxT( "KISYSMOD" ) ) ] = tmpFileName.GetPath();
|
||||
tmpFileName.AppendDir( wxT( "packages3d" ) );
|
||||
m_local_env_vars[ wxString( wxT( "KISYS3DMOD" ) ) ] = tmpFileName.GetPath();
|
||||
|
||||
// OS specific instantiation of wxConfigBase derivative:
|
||||
m_common_settings = GetNewConfig( KICAD_COMMON );
|
||||
|
||||
|
@ -425,6 +440,7 @@ bool PGM_BASE::setExecutablePath()
|
|||
// bundle directory, e.g., /Applications/kicad.app/
|
||||
|
||||
wxFileName fn( m_bin_dir );
|
||||
|
||||
if( fn.GetName() == wxT( "kicad" ) )
|
||||
{
|
||||
// kicad launcher, so just remove the Contents/MacOS part
|
||||
|
@ -440,6 +456,7 @@ bool PGM_BASE::setExecutablePath()
|
|||
fn.RemoveLastDir();
|
||||
fn.RemoveLastDir();
|
||||
}
|
||||
|
||||
m_bin_dir = fn.GetPath() + wxT( "/" );
|
||||
#else
|
||||
// Use unix notation for paths. I am not sure this is a good idea,
|
||||
|
@ -479,6 +496,33 @@ void PGM_BASE::loadCommonSettings()
|
|||
}
|
||||
|
||||
m_editor_name = m_common_settings->Read( wxT( "Editor" ) );
|
||||
|
||||
wxString entry, oldPath;
|
||||
wxArrayString entries;
|
||||
long index = 0L;
|
||||
|
||||
oldPath = m_common_settings->GetPath();
|
||||
m_common_settings->SetPath( pathEnvVariables );
|
||||
|
||||
while( m_common_settings->GetNextEntry( entry, index ) )
|
||||
{
|
||||
wxLogTrace( traceEnvVars,
|
||||
wxT( "Enumerating over entry %s, %ld." ), GetChars( entry ), index );
|
||||
entries.Add( entry );
|
||||
}
|
||||
|
||||
for( unsigned i = 0; i < entries.GetCount(); i++ )
|
||||
{
|
||||
wxString val = m_common_settings->Read( entries[i], wxEmptyString );
|
||||
m_local_env_vars[ entries[i] ] = val;
|
||||
}
|
||||
|
||||
for( std::map<wxString, wxString>::iterator it = m_local_env_vars.begin();
|
||||
it != m_local_env_vars.end();
|
||||
++it )
|
||||
SetLocalEnvVariable( it->first, it->second );
|
||||
|
||||
m_common_settings->SetPath( oldPath );
|
||||
}
|
||||
|
||||
|
||||
|
@ -491,6 +535,20 @@ void PGM_BASE::saveCommonSettings()
|
|||
wxString cur_dir = wxGetCwd();
|
||||
|
||||
m_common_settings->Write( workingDirKey, cur_dir );
|
||||
|
||||
// Save the local environment variables.
|
||||
m_common_settings->SetPath( pathEnvVariables );
|
||||
|
||||
for( std::map<wxString, wxString>::iterator it = m_local_env_vars.begin();
|
||||
it != m_local_env_vars.end();
|
||||
++it )
|
||||
{
|
||||
wxLogTrace( traceEnvVars, wxT( "Saving environment varaiable config entry %s as %s" ),
|
||||
GetChars( it->first ), GetChars( it->second ) );
|
||||
m_common_settings->Write( it->first, it->second );
|
||||
}
|
||||
|
||||
m_common_settings->SetPath( wxT( ".." ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -665,3 +723,21 @@ void PGM_BASE::AddMenuLanguageList( wxMenu* MasterMenu )
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
bool PGM_BASE::SetLocalEnvVariable( const wxString& aName, const wxString& aValue )
|
||||
{
|
||||
wxString env;
|
||||
|
||||
// Check to see if the environment variable is already set.
|
||||
if( wxGetEnv( aName, &env ) )
|
||||
{
|
||||
wxLogTrace( traceEnvVars, wxT( "Environment variable %s already set to %s." ),
|
||||
GetChars( aName ), GetChars( env ) );
|
||||
return env == aValue;
|
||||
}
|
||||
|
||||
wxLogTrace( traceEnvVars, wxT( "Setting local environment variable %s to %s." ),
|
||||
GetChars( aName ), GetChars( aValue ) );
|
||||
|
||||
return wxSetEnv( aName, aValue );
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2004 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
|
||||
* Copyright (C) 2008-2011 Wayne Stambaugh <stambaughw@verizon.net>
|
||||
* Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 2004-2015 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
|
||||
* Copyright (C) 2008-2015 Wayne Stambaugh <stambaughw@verizon.net>
|
||||
* Copyright (C) 1992-2015 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
|
||||
|
@ -31,6 +31,7 @@
|
|||
#ifndef PGM_BASE_H_
|
||||
#define PGM_BASE_H_
|
||||
|
||||
#include <map>
|
||||
#include <wx/filename.h>
|
||||
#include <search_stack.h>
|
||||
#include <wx/gdicmn.h>
|
||||
|
@ -109,7 +110,7 @@ public:
|
|||
/**
|
||||
* Function UseSystemPdfBrowser
|
||||
* returns true if the PDF browser is the default (system) PDF browser
|
||||
* and false if the PDF browser is the prefered (selected) browser, else
|
||||
* and false if the PDF browser is the preferred (selected) browser, else
|
||||
* returns false if there is no selected browser
|
||||
*/
|
||||
VTBL_ENTRY bool UseSystemPdfBrowser() const
|
||||
|
@ -119,7 +120,7 @@ public:
|
|||
|
||||
/**
|
||||
* Function ForceSystemPdfBrowser
|
||||
* forces the use of system PDF browser, even if a preferend PDF browser is set.
|
||||
* forces the use of system PDF browser, even if a preferred PDF browser is set.
|
||||
*/
|
||||
VTBL_ENTRY void ForceSystemPdfBrowser( bool aFlg ) { m_use_system_pdf_browser = aFlg; }
|
||||
|
||||
|
@ -168,6 +169,22 @@ public:
|
|||
*/
|
||||
VTBL_ENTRY void WritePdfBrowserInfos();
|
||||
|
||||
/**
|
||||
* Function SetLocalEnvVariable
|
||||
*
|
||||
* Sets the environment variable \a aName to \a aValue.
|
||||
*
|
||||
* This function first checks to see if the environment variable \a aName is already
|
||||
* defined. If it is not defined, then the environment variable \a aName is set to
|
||||
* a value. Otherwise, the environment variable is left unchanged. This allows the user
|
||||
* to override environment variables for testing purposes.
|
||||
*
|
||||
* @param aName is a wxString containing the environment variable name.
|
||||
* @param aValue is a wxString containing the environment variable value.
|
||||
* @return true if the environment variable \a Name was set to \a aValue.
|
||||
*/
|
||||
VTBL_ENTRY bool SetLocalEnvVariable( const wxString& aName, const wxString& aValue );
|
||||
|
||||
/**
|
||||
* Function App
|
||||
* returns a bare naked wxApp, which may come from wxPython, SINGLE_TOP, or kicad.exe.
|
||||
|
@ -247,6 +264,10 @@ protected:
|
|||
wxString m_editor_name;
|
||||
wxSize m_help_size;
|
||||
|
||||
/// Local environment variable expansion settings such as KIGITHUB, KISYSMOD, and KISYS3DMOD.
|
||||
/// library table.
|
||||
std::map<wxString, wxString> m_local_env_vars;
|
||||
|
||||
wxApp* m_wx_app;
|
||||
|
||||
// The PGM_* classes can have difficulties at termination if they
|
||||
|
|
Loading…
Reference in New Issue