KiCad PCB EDA Suite
Loading...
Searching...
No Matches
template_fieldnames.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <[email protected]>
5 * Copyright The KiCad Developers, see AUTHORS.TXT for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
21#pragma once
22
23#include <wx/string.h>
24
25class OUTPUTFORMATTER;
26class TEMPLATE_FIELDNAMES_LEXER;
27
28
52
53#define MANDATORY_FIELDS { FIELD_T::REFERENCE, \
54 FIELD_T::VALUE, \
55 FIELD_T::FOOTPRINT, \
56 FIELD_T::DATASHEET, \
57 FIELD_T::DESCRIPTION }
58
59#define GLOBALLABEL_MANDATORY_FIELDS { FIELD_T::INTERSHEET_REFS }
60
61#define SHEET_MANDATORY_FIELDS { FIELD_T::SHEET_NAME, \
62 FIELD_T::SHEET_FILENAME }
63
64// A helper to call GetDefaultFieldName with or without translation.
65// Translation should be used only to display field names in dialogs
66#define DO_TRANSLATE true
67
68
77wxString GetDefaultFieldName( FIELD_T aFieldId, bool aTranslateForHI );
78wxString GetUserFieldName( int aFieldNdx, bool aTranslateForHI );
79
80
81inline wxString GetCanonicalFieldName( FIELD_T aFieldType )
82{
83 return GetDefaultFieldName( aFieldType, !DO_TRANSLATE );
84}
85
86
93{
95 m_Visible( false ),
96 m_URL( false )
97 {
98 }
99
100 TEMPLATE_FIELDNAME( const wxString& aName ) :
101 m_Name( aName ),
102 m_Visible( false ),
103 m_URL( false )
104 {
105 }
106
108 {
109 m_Name = ref.m_Name;
110 m_Visible = ref.m_Visible;
111 m_URL = ref.m_URL;
112 }
113
117 void Format( OUTPUTFORMATTER* out ) const ;
118
131 void Parse( TEMPLATE_FIELDNAMES_LEXER* aSpec );
132
133 wxString m_Name; // The field name
134 bool m_Visible; // Field defaults to being visible in schematic.
135 bool m_URL; // If field should have a browse button
136};
137
138
140{
141public:
143 m_resolvedDirty( true )
144 { }
145
149 void Format( OUTPUTFORMATTER* out, bool aGlobal ) const ;
150
161 void AddTemplateFieldName( const TEMPLATE_FIELDNAME& aFieldName, bool aGlobal );
162
166 void AddTemplateFieldNames( const wxString& aSerializedFieldNames );
167
171 void DeleteAllFieldNameTemplates( bool aGlobal );
172
176 const std::vector<TEMPLATE_FIELDNAME>& GetTemplateFieldNames();
177
181 const std::vector<TEMPLATE_FIELDNAME>& GetTemplateFieldNames( bool aGlobal );
182
189 const TEMPLATE_FIELDNAME* GetFieldName( const wxString& aName );
190
191protected:
192 void resolveTemplates();
193
194 void parse( TEMPLATE_FIELDNAMES_LEXER* in, bool aGlobal );
195
196private:
197 std::vector<TEMPLATE_FIELDNAME> m_globals;
198 std::vector<TEMPLATE_FIELDNAME> m_project;
199
200 // Combined list. Project templates override global ones.
201 std::vector<TEMPLATE_FIELDNAME> m_resolved;
203};
An interface used to output 8 bit text in a convenient way.
Definition richio.h:291
void AddTemplateFieldName(const TEMPLATE_FIELDNAME &aFieldName, bool aGlobal)
Insert or append a wanted symbol field name into the field names template.
void AddTemplateFieldNames(const wxString &aSerializedFieldNames)
Add a serialized list of template field names.
const std::vector< TEMPLATE_FIELDNAME > & GetTemplateFieldNames()
Return a template field name list for read only access.
std::vector< TEMPLATE_FIELDNAME > m_resolved
void resolveTemplates()
Flatten project and global templates into a single list.
std::vector< TEMPLATE_FIELDNAME > m_project
const TEMPLATE_FIELDNAME * GetFieldName(const wxString &aName)
Search for aName in the template field name list.
void DeleteAllFieldNameTemplates(bool aGlobal)
Delete the entire contents.
void parse(TEMPLATE_FIELDNAMES_LEXER *in, bool aGlobal)
std::vector< TEMPLATE_FIELDNAME > m_globals
void Format(OUTPUTFORMATTER *out, bool aGlobal) const
Serialize this object out as text into the given OUTPUTFORMATTER.
@ USER
The main config directory (e.g. ~/.config/kicad/)
Hold a name of a symbol's field, field value, and default visibility.
void Format(OUTPUTFORMATTER *out) const
Serialize this object out as text into the given OUTPUTFORMATTER.
void Parse(TEMPLATE_FIELDNAMES_LEXER *aSpec)
Fill this object from information in the input stream aSpec, which is a #TEMPLATE_FIELDNAMES_LEXER.
TEMPLATE_FIELDNAME(const wxString &aName)
TEMPLATE_FIELDNAME(const TEMPLATE_FIELDNAME &ref)
#define DO_TRANSLATE
FIELD_T
The set of all field indices assuming an array like sequence that a SCH_COMPONENT or LIB_PART can hol...
@ INTERSHEET_REFS
Global label cross-reference page numbers.
@ DESCRIPTION
Field Description of part, i.e. "1/4W 1% Metal Film Resistor".
@ DATASHEET
name of datasheet
@ REFERENCE
Field Reference of part, i.e. "IC21".
@ VALUE
Field Value of part, i.e. "3.3K".
wxString GetUserFieldName(int aFieldNdx, bool aTranslateForHI)
wxString GetCanonicalFieldName(FIELD_T aFieldType)
wxString GetDefaultFieldName(FIELD_T aFieldId, bool aTranslateForHI)
Return a default symbol field name for a mandatory field type.