PCM: Treat color themes as read-only; don't copy to settings dir
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9548
This commit is contained in:
parent
89f5842a17
commit
42eb063697
|
@ -33,11 +33,13 @@
|
|||
const int colorsSchemaVersion = 3;
|
||||
|
||||
|
||||
COLOR_SETTINGS::COLOR_SETTINGS( const wxString& aFilename ) :
|
||||
COLOR_SETTINGS::COLOR_SETTINGS( const wxString& aFilename, bool aAbsolutePath ) :
|
||||
JSON_SETTINGS( std::move( aFilename ), SETTINGS_LOC::COLORS, colorsSchemaVersion ),
|
||||
m_overrideSchItemColors( false ),
|
||||
m_useBoardStackupColors( true )
|
||||
{
|
||||
if( aAbsolutePath )
|
||||
SetLocation( SETTINGS_LOC::NONE );
|
||||
|
||||
m_params.emplace_back( new PARAM<wxString>( "meta.name", &m_displayName, "KiCad Default" ) );
|
||||
|
||||
|
|
|
@ -249,11 +249,12 @@ public:
|
|||
};
|
||||
|
||||
|
||||
COLOR_SETTINGS* SETTINGS_MANAGER::registerColorSettings( const wxString& aName )
|
||||
COLOR_SETTINGS* SETTINGS_MANAGER::registerColorSettings( const wxString& aName, bool aAbsolutePath )
|
||||
{
|
||||
if( !m_color_settings.count( aName ) )
|
||||
{
|
||||
COLOR_SETTINGS* colorSettings = RegisterSettings( new COLOR_SETTINGS( aName ) );
|
||||
COLOR_SETTINGS* colorSettings = RegisterSettings( new COLOR_SETTINGS( aName,
|
||||
aAbsolutePath ) );
|
||||
m_color_settings[aName] = colorSettings;
|
||||
}
|
||||
|
||||
|
@ -303,27 +304,25 @@ void SETTINGS_MANAGER::loadAllColorSettings()
|
|||
wxDir third_party_colors_dir( third_party_path.GetFullPath() );
|
||||
wxString color_settings_path = GetColorSettingsPath();
|
||||
|
||||
JSON_DIR_TRAVERSER copier(
|
||||
[&]( const wxFileName& aFilename )
|
||||
{
|
||||
wxFileName new_file( color_settings_path, aFilename.GetFullName() );
|
||||
|
||||
if( !new_file.Exists() )
|
||||
wxCopyFile( aFilename.GetFullPath(), new_file.GetFullPath());
|
||||
} );
|
||||
|
||||
// Search for and load any other settings
|
||||
JSON_DIR_TRAVERSER loader( [&]( const wxFileName& aFilename )
|
||||
{
|
||||
registerColorSettings( aFilename.GetName() );
|
||||
} );
|
||||
|
||||
JSON_DIR_TRAVERSER thirdPartyLoader(
|
||||
[&]( const wxFileName& aFilename )
|
||||
{
|
||||
COLOR_SETTINGS* settings = registerColorSettings( aFilename.GetFullPath(), true );
|
||||
settings->SetReadOnly( true );
|
||||
} );
|
||||
|
||||
wxDir colors_dir( color_settings_path );
|
||||
|
||||
if( colors_dir.IsOpened() )
|
||||
{
|
||||
if( third_party_colors_dir.IsOpened() )
|
||||
third_party_colors_dir.Traverse( copier );
|
||||
third_party_colors_dir.Traverse( thirdPartyLoader );
|
||||
|
||||
colors_dir.Traverse( loader );
|
||||
}
|
||||
|
|
|
@ -58,7 +58,8 @@ public:
|
|||
*/
|
||||
std::vector<COLOR4D> m_Palette;
|
||||
|
||||
explicit COLOR_SETTINGS( const wxString& aFilename = wxT( "user" ) );
|
||||
explicit COLOR_SETTINGS( const wxString& aFilename = wxT( "user" ),
|
||||
bool aAbsolutePath = false );
|
||||
|
||||
virtual ~COLOR_SETTINGS() {}
|
||||
|
||||
|
|
|
@ -75,6 +75,7 @@ public:
|
|||
|
||||
void SetFilename( const wxString& aFilename ) { m_filename = aFilename; }
|
||||
|
||||
void SetLocation( SETTINGS_LOC aLocation ) { m_location = aLocation; }
|
||||
SETTINGS_LOC GetLocation() const { return m_location; }
|
||||
|
||||
void SetLegacyFilename( const wxString& aFilename ) { m_legacy_filename = aFilename; }
|
||||
|
|
|
@ -390,7 +390,7 @@ private:
|
|||
*/
|
||||
COLOR_SETTINGS* loadColorSettingsByName( const wxString& aName );
|
||||
|
||||
COLOR_SETTINGS* registerColorSettings( const wxString& aFilename );
|
||||
COLOR_SETTINGS* registerColorSettings( const wxString& aFilename, bool aAbsolutePath = false );
|
||||
|
||||
void loadAllColorSettings();
|
||||
|
||||
|
|
Loading…
Reference in New Issue