Refresh schematic's copy of template fieldnames after preferences.

Fixes https://gitlab.com/kicad/code/kicad/issues/13203
This commit is contained in:
Jeff Young 2023-01-23 23:40:58 +00:00
parent 4de64b607a
commit 220c5a259b
5 changed files with 39 additions and 50 deletions

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2015-2022 KiCad Developers, see AUTHORS.TXT for contributors.
* Copyright (C) 2015-2023 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
@ -135,7 +135,7 @@ void TEMPLATES::Format( OUTPUTFORMATTER* out, int nestLevel, bool aGlobal ) cons
}
void TEMPLATES::Parse( TEMPLATE_FIELDNAMES_LEXER* in, bool aGlobal )
void TEMPLATES::parse( TEMPLATE_FIELDNAMES_LEXER* in, bool aGlobal )
{
T tok;
@ -229,6 +229,20 @@ void TEMPLATES::AddTemplateFieldName( const TEMPLATE_FIELDNAME& aFieldName, bool
}
void TEMPLATES::AddTemplateFieldNames( const wxString& aSerializedFieldNames )
{
TEMPLATE_FIELDNAMES_LEXER field_lexer( TO_UTF8( aSerializedFieldNames ) );
try
{
parse( &field_lexer, true );
}
catch( const IO_ERROR& )
{
}
}
void TEMPLATES::DeleteAllFieldNameTemplates( bool aGlobal )
{
if( aGlobal )

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2009 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 1992-2022 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2023 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
@ -50,24 +50,8 @@ PANEL_TEMPLATE_FIELDNAMES::PANEL_TEMPLATE_FIELDNAMES( wxWindow* aWindow,
EESCHEMA_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<EESCHEMA_SETTINGS>();
if( cfg )
{
// Read global fieldname templates
wxString templateFieldNames = cfg->m_Drawing.field_names;
if( !templateFieldNames.IsEmpty() )
{
TEMPLATE_FIELDNAMES_LEXER field_lexer( TO_UTF8( templateFieldNames ) );
try
{
m_templateMgr->Parse( &field_lexer, true );
}
catch( const IO_ERROR& )
{
}
}
}
if( cfg && !cfg->m_Drawing.field_names.IsEmpty() )
m_templateMgr->AddTemplateFieldNames( cfg->m_Drawing.field_names );
}
m_addFieldButton->SetBitmap( KiBitmap( BITMAPS::small_plus ) );

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2017 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 1992-2022 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2023 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
@ -1530,9 +1530,10 @@ void SCH_EDIT_FRAME::ShowAllIntersheetRefs( bool aShow )
void SCH_EDIT_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged )
{
SCH_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
SCHEMATIC_SETTINGS& settings = Schematic().Settings();
SCH_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
settings.m_JunctionSize = GetSchematicJunctionSize();
ShowAllIntersheetRefs( settings.m_IntersheetRefsShow );
@ -1546,6 +1547,11 @@ void SCH_EDIT_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVars
view->SetLayerVisible( LAYER_ERC_WARN, cfg->m_Appearance.show_erc_warnings );
view->SetLayerVisible( LAYER_ERC_EXCLUSION, cfg->m_Appearance.show_erc_exclusions );
settings.m_TemplateFieldNames.DeleteAllFieldNameTemplates( true /* global */ );
if( !cfg->m_Drawing.field_names.IsEmpty() )
settings.m_TemplateFieldNames.AddTemplateFieldNames( cfg->m_Drawing.field_names );
SCH_SCREEN* screen = GetCurrentSheet().LastScreen();
for( SCH_ITEM* item : screen->Items() )

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2020 CERN
* Copyright (C) 2021-2022 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2021-2023 KiCad Developers, see AUTHORS.txt for contributors.
* @author Jon Evans <jon@craftyjon.com>
*
* This program is free software: you can redistribute it and/or modify it
@ -163,26 +163,11 @@ SCHEMATIC_SETTINGS::SCHEMATIC_SETTINGS( JSON_SETTINGS* aParent, const std::strin
}
}
// Read global fieldname templates
auto* cfg = Pgm().GetSettingsManager().GetAppSettings<EESCHEMA_SETTINGS>();
if( cfg )
{
// Read global fieldname templates
wxString templateFieldNames = cfg->m_Drawing.field_names;
if( !templateFieldNames.IsEmpty() )
{
TEMPLATE_FIELDNAMES_LEXER field_lexer( TO_UTF8( templateFieldNames ) );
try
{
m_TemplateFieldNames.Parse( &field_lexer, true );
}
catch( const IO_ERROR& )
{
}
}
}
if( cfg && !cfg->m_Drawing.field_names.IsEmpty() )
m_TemplateFieldNames.AddTemplateFieldNames( cfg->m_Drawing.field_names );
}, {} ) );
m_params.emplace_back( new PARAM<wxString>( "page_layout_descr_file",

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2014-2022 KiCad Developers, see AUTHORS.TXT for contributors.
* Copyright (C) 2014-2023 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
@ -131,13 +131,6 @@ public:
*/
void Format( OUTPUTFORMATTER* out, int nestLevel, bool aGlobal ) const ;
/**
* Fill this object from information in the input stream handled by
* #TEMPLATE_FIELDNAMES_LEXER.
*/
void Parse( TEMPLATE_FIELDNAMES_LEXER* in, bool aGlobal );
/**
* Insert or append a wanted symbol field name into the field names template.
*
@ -150,6 +143,11 @@ public:
*/
void AddTemplateFieldName( const TEMPLATE_FIELDNAME& aFieldName, bool aGlobal );
/**
* Add a serialized list of template field names.
*/
void AddTemplateFieldNames( const wxString& aSerializedFieldNames );
/**
* Delete the entire contents.
*/
@ -176,6 +174,8 @@ public:
protected:
void resolveTemplates();
void parse( TEMPLATE_FIELDNAMES_LEXER* in, bool aGlobal );
private:
TEMPLATE_FIELDNAMES m_globals;
TEMPLATE_FIELDNAMES m_project;