Expose global Field Name Templates to symbol editor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2382
This commit is contained in:
parent
efd3cb115b
commit
1f69680d91
|
@ -21,6 +21,8 @@
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <pgm_base.h>
|
||||||
|
#include <eeschema_settings.h>
|
||||||
#include <bitmaps.h>
|
#include <bitmaps.h>
|
||||||
#include <confirm.h>
|
#include <confirm.h>
|
||||||
#include <dialogs/dialog_text_entry.h>
|
#include <dialogs/dialog_text_entry.h>
|
||||||
|
@ -154,6 +156,32 @@ bool DIALOG_LIB_SYMBOL_PROPERTIES::TransferDataToWindow()
|
||||||
// Push a copy of each field into m_updateFields
|
// Push a copy of each field into m_updateFields
|
||||||
m_libEntry->GetFields( *m_fields );
|
m_libEntry->GetFields( *m_fields );
|
||||||
|
|
||||||
|
std::set<wxString> defined;
|
||||||
|
|
||||||
|
for( SCH_FIELD& field : *m_fields )
|
||||||
|
defined.insert( field.GetName() );
|
||||||
|
|
||||||
|
// Add in any template fieldnames not yet defined:
|
||||||
|
// Read global fieldname templates
|
||||||
|
if( EESCHEMA_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<EESCHEMA_SETTINGS>() )
|
||||||
|
{
|
||||||
|
TEMPLATES templateMgr;
|
||||||
|
|
||||||
|
if( !cfg->m_Drawing.field_names.IsEmpty() )
|
||||||
|
templateMgr.AddTemplateFieldNames( cfg->m_Drawing.field_names );
|
||||||
|
|
||||||
|
for( const TEMPLATE_FIELDNAME& templateFieldname : templateMgr.GetTemplateFieldNames() )
|
||||||
|
{
|
||||||
|
if( defined.count( templateFieldname.m_Name ) <= 0 )
|
||||||
|
{
|
||||||
|
SCH_FIELD field( VECTOR2I( 0, 0 ), -1, m_libEntry, templateFieldname.m_Name );
|
||||||
|
field.SetVisible( templateFieldname.m_Visible );
|
||||||
|
m_fields->push_back( field );
|
||||||
|
m_addedTemplateFields.insert( templateFieldname.m_Name );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// The Y axis for components in lib is from bottom to top while the screen axis is top
|
// The Y axis for components in lib is from bottom to top while the screen axis is top
|
||||||
// to bottom: we must change the y coord sign for editing
|
// to bottom: we must change the y coord sign for editing
|
||||||
for( size_t i = 0; i < m_fields->size(); ++i )
|
for( size_t i = 0; i < m_fields->size(); ++i )
|
||||||
|
@ -363,10 +391,15 @@ bool DIALOG_LIB_SYMBOL_PROPERTIES::TransferDataFromWindow()
|
||||||
SCH_FIELD& field = m_fields->at( ii );
|
SCH_FIELD& field = m_fields->at( ii );
|
||||||
const wxString& fieldName = field.GetCanonicalName();
|
const wxString& fieldName = field.GetCanonicalName();
|
||||||
|
|
||||||
if( fieldName.IsEmpty() && field.GetText().IsEmpty() )
|
if( field.GetText().IsEmpty() )
|
||||||
m_fields->erase( m_fields->begin() + ii );
|
{
|
||||||
|
if( fieldName.IsEmpty() || m_addedTemplateFields.contains( fieldName ) )
|
||||||
|
m_fields->erase( m_fields->begin() + ii );
|
||||||
|
}
|
||||||
else if( fieldName.IsEmpty() )
|
else if( fieldName.IsEmpty() )
|
||||||
|
{
|
||||||
field.SetName( _( "untitled" ) );
|
field.SetName( _( "untitled" ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_libEntry->SetFields( *m_fields );
|
m_libEntry->SetFields( *m_fields );
|
||||||
|
|
|
@ -79,6 +79,7 @@ public:
|
||||||
LIB_SYMBOL* m_libEntry;
|
LIB_SYMBOL* m_libEntry;
|
||||||
|
|
||||||
FIELDS_GRID_TABLE* m_fields;
|
FIELDS_GRID_TABLE* m_fields;
|
||||||
|
std::set<wxString> m_addedTemplateFields;
|
||||||
|
|
||||||
UNIT_BINDER m_pinNameOffset;
|
UNIT_BINDER m_pinNameOffset;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue