47#include <wx/settings.h>
61#define DEFAULT_FONT_NAME _( "Default Font" )
80 const std::unique_ptr< LIB_SYMBOL >& lib_symbol = aSymbol->
GetLibSymbolRef();
84 for(
SCH_PIN*
pin : lib_symbol->GetPins( 0 , 1 ) )
85 pins.push_back(
pin->GetNumber() +
' ' +
pin->GetShownName() );
95 if( !fpFilters.IsEmpty() )
115 pins.push_back(
pin->GetNumber() +
' ' +
pin->GetShownName() );
117 if( !pins.IsEmpty() )
124 if( !fpFilters.IsEmpty() )
140 m_symbolNetlist(
netList( aSymbol ) ),
158 m_part( aSymbol->GetLibSymbolRef().get() ),
159 m_symbolNetlist(
netList( aSymbol, aFrame->GetCurrentSheet() ) ),
194 m_mandatoryFieldCount( aLabel->GetMandatoryFieldCount() ),
197 m_referenceValidator( 0 ),
198 m_valueValidator( 0 ),
201 m_filepathValidator( 0 )
277 wxString wildCard(
_(
"Schematic Files" ) );
278 std::vector<std::string> exts;
287 m_boolAttr->SetRenderer(
new wxGridCellBoolRenderer() );
288 m_boolAttr->SetEditor(
new wxGridCellBoolEditor() );
289 m_boolAttr->SetAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
291 wxArrayString vAlignNames;
292 vAlignNames.Add(
_(
"Top" ) );
293 vAlignNames.Add(
_(
"Center" ) );
294 vAlignNames.Add(
_(
"Bottom" ) );
296 m_vAlignAttr->SetEditor(
new wxGridCellChoiceEditor( vAlignNames ) );
297 m_vAlignAttr->SetAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
299 wxArrayString hAlignNames;
300 hAlignNames.Add(
_(
"Left" ) );
301 hAlignNames.Add(
_(
"Center" ) );
302 hAlignNames.Add(
_(
"Right" ) );
304 m_hAlignAttr->SetEditor(
new wxGridCellChoiceEditor( hAlignNames ) );
305 m_hAlignAttr->SetAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
307 wxArrayString orientationNames;
308 orientationNames.Add(
_(
"Horizontal" ) );
309 orientationNames.Add(
_(
"Vertical" ) );
315 wxArrayString existingNetclasses;
318 std::vector<std::string> fontNames;
324 const std::shared_ptr<NET_SETTINGS>& settings = projectFile.
NetSettings();
326 existingNetclasses.push_back( settings->GetDefaultNetclass()->GetName() );
328 for(
const auto& [
name, netclass] : settings->GetNetclasses() )
329 existingNetclasses.push_back(
name );
333 const std::vector<wxString>* fontFiles =
nullptr;
338 Fontconfig()->ListFonts( fontNames, std::string(
Pgm().GetLanguageTag().utf8_str() ),
347 Fontconfig()->ListFonts( fontNames, std::string(
Pgm().GetLanguageTag().utf8_str() ),
348 fontFiles, !fontFiles->empty() );
354 for(
const std::string&
name : fontNames )
399 GetView()->ForceRefresh();
435 return (
int) this->size();
451 if( visibleRow == aRow )
457 wxFAIL_MSG( wxT(
"Row index off end of visible row count" ) );
460 return this->at( aRow );
484 default: wxFAIL;
return wxEmptyString;
503 return aTypeName == wxGRID_VALUE_STRING;
511 return aTypeName == wxGRID_VALUE_BOOL;
536 tmp->SetReadOnly(
true );
588 && this->at( (
size_t) aRow ).GetCanonicalName() == wxT(
"Netclass" ) )
602 if( templateFn && templateFn->
m_URL )
659 wxGrid*
grid = GetView();
662 if(
grid->GetGridCursorRow() == aRow &&
grid->GetGridCursorCol() == aCol
663 &&
grid->IsCellEditControlShown() )
696 wxFAIL_MSG( wxS(
"Unhandled field owner type." ) );
742 return _(
"Horizontal" );
744 return _(
"Vertical" );
773 return wxT(
"bad wxWidgets!" );
791 wxFAIL_MSG( wxString::Format( wxT(
"column %d doesn't hold a bool value" ), aCol ) );
802 wxString value = aValue;
811 if(
m_eval->Process( value ) )
856 if( value ==
_(
"Left" ) )
858 else if( value ==
_(
"Center" ) )
860 else if( value ==
_(
"Right" ) )
863 wxFAIL_MSG( wxT(
"unknown horizontal alignment: " ) + value );
880 if( value ==
_(
"Top" ) )
882 else if( value ==
_(
"Center" ) )
884 else if( value ==
_(
"Bottom" ) )
887 wxFAIL_MSG( wxT(
"unknown vertical alignment: " ) + value);
914 if( value ==
_(
"Horizontal" ) )
916 else if( value ==
_(
"Vertical" ) )
919 wxFAIL_MSG( wxT(
"unknown orientation: " ) + value );
959 wxFAIL_MSG( wxString::Format( wxT(
"column %d doesn't hold a string value" ), aCol ) );
965 GetView()->Refresh();
1001 wxFAIL_MSG( wxString::Format( wxT(
"column %d doesn't hold a bool value" ), aCol ) );
1020 if( aValue == wxS(
"1" ) )
1024 else if( aValue == wxS(
"0" ) )
1030 wxFAIL_MSG( wxString::Format(
"string '%s' can't be converted to boolean correctly and "
1031 "will be perceived as FALSE", aValue ) );
1043 _(
"Browse for footprint" ) );
1044 menu.AppendSeparator();
1050 _(
"Show datasheet in browser" ) );
1051 menu.AppendSeparator();
1067 if( frame->ShowModal( &fpid,
m_dlg ) )
Dialog helper object to sit in the inheritance tree between wxDialog and any class written by wxFormB...
bool IsHorizontal() const
FRAME_T GetFrameType() const
int GetTextHeight() const
void SetTextColor(const COLOR4D &aColor)
const VECTOR2I & GetTextPos() const
COLOR4D GetTextColor() const
const EDA_ANGLE & GetTextAngle() const
void SetTextSize(VECTOR2I aNewSize, bool aEnforceMinTextSize=true)
virtual const wxString & GetText() const
Return the string associated with the text object.
virtual bool IsVisible() const
void SetTextPos(const VECTOR2I &aPoint)
KIFONT::FONT * GetFont() const
void SetVertJustify(GR_TEXT_V_ALIGN_T aType)
virtual void SetVisible(bool aVisible)
static GR_TEXT_H_ALIGN_T MapHorizJustify(int aHorizJustify)
void SetBold(bool aBold)
Set the text to be bold - this will also update the font if needed.
static GR_TEXT_V_ALIGN_T MapVertJustify(int aVertJustify)
virtual void SetTextAngle(const EDA_ANGLE &aAngle)
void SetItalic(bool aItalic)
Set the text to be italic - this will also update the font if needed.
void SetFont(KIFONT::FONT *aFont)
void SetHorizJustify(GR_TEXT_H_ALIGN_T aType)
const std::vector< wxString > * UpdateFontFiles()
Helper function to get a list of fonts for fontconfig to add to the library.
const std::vector< wxString > * GetFontFiles() const
If we just need the cached version of the font files, we can use this function which is const and wil...
wxGridCellAttr * GetAttr(int aRow, int aCol, wxGridCellAttr::wxAttrKind aKind) override
wxString StringFromBool(bool aValue) const
bool GetValueAsBool(int aRow, int aCol) override
FIELD_VALIDATOR m_fieldNameValidator
bool CanSetValueAs(int aRow, int aCol, const wxString &aTypeName) override
void initGrid(WX_GRID *aGrid)
wxGridCellAttr * m_fieldNameAttr
int getColumnCount() const
int GetNumberRows() override
wxGridCellAttr * m_readOnlyAttr
FIELD_VALIDATOR m_urlValidator
~FIELDS_GRID_TABLE() override
bool CanGetValueAs(int aRow, int aCol, const wxString &aTypeName) override
wxGridCellAttr * m_colorAttr
wxGridCellAttr * m_nonUrlAttr
wxGridCellAttr * m_referenceAttr
FIELD_VALIDATOR m_referenceValidator
FIELD_VALIDATOR m_valueValidator
std::map< std::pair< int, int >, wxString > m_evalOriginal
int getVisibleRowCount() const
wxGridCellAttr * m_footprintAttr
wxGridCellAttr * m_boolAttr
int m_mandatoryFieldCount
bool BoolFromString(const wxString &aValue) const
wxGridCellAttr * m_fontAttr
wxGridCellAttr * m_urlAttr
wxGridCellAttr * m_valueAttr
wxGridCellAttr * m_hAlignAttr
wxGridCellAttr * m_orientationAttr
void SetValue(int aRow, int aCol, const wxString &aValue) override
wxGridCellAttr * m_vAlignAttr
FIELDS_GRID_TABLE(DIALOG_SHIM *aDialog, SCH_BASE_FRAME *aFrame, WX_GRID *aGrid, LIB_SYMBOL *aSymbol)
wxGridCellAttr * m_filepathAttr
SCH_FIELD & getField(int aRow)
wxGridCellAttr * m_netclassAttr
void SetValueAsBool(int aRow, int aCol, bool aValue) override
wxString GetValue(int aRow, int aCol) override
void onUnitsChanged(wxCommandEvent &aEvent)
std::unique_ptr< NUMERIC_EVALUATOR > m_eval
FIELD_VALIDATOR m_nonUrlValidator
FIELD_VALIDATOR m_filepathValidator
wxString GetColLabelValue(int aCol) override
void showPopupMenu(wxMenu &menu, wxGridEvent &aEvent) override
void doPopupSelection(wxCommandEvent &event) override
Editor for wxGrid cells that adds a file/folder browser to the grid input field.
This class works around a bug in wxGrid where the first keystroke doesn't get sent through the valida...
virtual void SetValidator(const wxValidator &validator) override
virtual void doPopupSelection(wxCommandEvent &event)
virtual void showPopupMenu(wxMenu &menu, wxGridEvent &aEvent)
WX_GRID * m_grid
I don't own the grid, but he owns me.
static FONT * GetFont(const wxString &aFontName=wxEmptyString, bool aBold=false, bool aItalic=false, const std::vector< wxString > *aEmbeddedFiles=nullptr, bool aForDrawingSheet=false)
const wxString & GetName() const
wxString ToCSSString() const
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
A wxFrame capable of the OpenProjectFiles function, meaning it can load a portion of a KiCad project.
virtual KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=nullptr)
Return the KIWAY_PLAYER* given a FRAME_T.
Define a library symbol object.
std::vector< SCH_PIN * > GetPins(int aUnit, int aBodyStyle) const
Return a list of pin object pointers from the draw item list.
bool IsPower() const override
wxArrayString GetFPFilters() const
EMBEDDED_FILES * GetEmbeddedFiles() override
The backing store for a PROJECT, in JSON format.
SCHEMATIC_SETTINGS * m_SchematicSettings
std::shared_ptr< NET_SETTINGS > & NetSettings()
static SEARCH_STACK * SchSearchS(PROJECT *aProject)
Accessor for Eeschema search stack.
virtual const wxString GetProjectPath() const
Return the full path of the project.
virtual PROJECT_FILE & GetProjectFile() const
These are loaded from Eeschema settings but then overwritten by the project settings.
TEMPLATES m_TemplateFieldNames
EMBEDDED_FILES * GetEmbeddedFiles() override
A shim class between EDA_DRAW_FRAME and several derived classes: SYMBOL_EDIT_FRAME,...
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
Schematic editor (Eeschema) main window.
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
GR_TEXT_V_ALIGN_T GetEffectiveVertJustify() const
bool IsHorizJustifyFlipped() const
Return whether the field will be rendered with the horizontal justification inverted due to rotation ...
bool IsVertJustifyFlipped() const
void SetCanAutoplace(bool aCanPlace)
wxString GetCanonicalName() const
Get a non-language-specific name for a field which can be used for storage, variable look-up,...
GR_TEXT_H_ALIGN_T GetEffectiveHorizJustify() const
wxString GetName(bool aUseDefaultName=true) const
Return the field name (not translated).
void SetName(const wxString &aName)
bool CanAutoplace() const
void SetText(const wxString &aText) override
void OnScintillaCharAdded(SCINTILLA_TRICKS *aScintillaTricks, wxStyledTextEvent &aEvent) const
void SetNameShown(bool aShown=true)
void SetPrivate(bool aPrivate)
static const wxString GetDefaultFieldName(const wxString &aName, bool aUseDefaultName)
SCHEMATIC * Schematic() const
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
static const wxString GetDefaultFieldName(int aFieldNdx, bool aTranslated=true)
std::unique_ptr< LIB_SYMBOL > & GetLibSymbolRef()
Add cut/copy/paste, dark theme, autocomplete and brace highlighting to a wxStyleTextCtrl instance.
Look for files in a number of paths.
const TEMPLATE_FIELDNAME * GetFieldName(const wxString &aName)
Search for aName in the template field name list.
EDA_UNITS GetUserUnits() const
wxString StringFromValue(double aValue, bool aAddUnitLabel=false, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE) const
Converts aValue in internal units into a united string.
int ValueFromString(const wxString &aTextValue, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE) const
Converts aTextValue in aUnits to internal units used by the frame.
wxGridCellAttr * enhanceAttr(wxGridCellAttr *aInputAttr, int aRow, int aCol, wxGridCellAttr::wxAttrKind aKind)
wxString EnsureFileExtension(const wxString &aFilename, const wxString &aExtension)
It's annoying to throw up nag dialogs when the extension isn't right.
static constexpr EDA_ANGLE ANGLE_VERTICAL
static constexpr EDA_ANGLE ANGLE_HORIZONTAL
bool GetAssociatedDocument(wxWindow *aParent, const wxString &aDocName, PROJECT *aProject, SEARCH_STACK *aPaths, EMBEDDED_FILES *aFiles)
Open a document (file) with the suitable browser.
This file is part of the common library.
#define DEFAULT_FONT_NAME
static wxString netList(SCH_SYMBOL *aSymbol, SCH_SHEET_PATH &aSheetPath)
@ FDC_SYMBOL_EDITOR_COUNT
FONTCONFIG * Fontconfig()
@ FRAME_SCH_SYMBOL_EDITOR
@ FRAME_FOOTPRINT_CHOOSER
@ GRIDTRICKS_FIRST_CLIENT_ID
static const std::string KiCadSchematicFileExtension
PGM_BASE & Pgm()
The global program "get" accessor.
@ SHEET_MANDATORY_FIELDS
The first 2 are mandatory, and must be instantiated in SCH_SHEET.
Definitions of control validators for schematic dialogs.
wxString UnescapeString(const wxString &aSource)
wxString EscapeString(const wxString &aSource, ESCAPE_CONTEXT aContext)
The Escape/Unescape routines use HTML-entity-reference-style encoding to handle characters which are:...
Hold a name of a symbol's field, field value, and default visibility.
static const wxString GetDefaultFieldName(int aFieldNdx, bool aTranslateForHI=false)
Return a default symbol field name for field aFieldNdx for all components.
Definition for symbol library class.
@ DATASHEET_FIELD
name of datasheet
@ FOOTPRINT_FIELD
Field Name Module PCB, i.e. "16DIP300".
@ VALUE_FIELD
Field Value of part, i.e. "3.3K".
@ MANDATORY_FIELDS
The first 5 are mandatory, and must be instantiated in SCH_COMPONENT and LIB_PART constructors.
@ REFERENCE_FIELD
Field Reference of part, i.e. "IC21".
GR_TEXT_H_ALIGN_T
This is API surface mapped to common.types.HorizontalAlignment.
@ GR_TEXT_H_ALIGN_INDETERMINATE
GR_TEXT_V_ALIGN_T
This is API surface mapped to common.types.VertialAlignment.
@ GR_TEXT_V_ALIGN_INDETERMINATE
#define INDETERMINATE_STATE
Used for holding indeterminate values, such as with multiple selections holding different values or c...
Custom text control validator definitions.
VECTOR2< int32_t > VECTOR2I
wxString AddFileExtListToFilter(const std::vector< std::string > &aExts)
Build the wildcard extension file dialog wildcard filter to add to the base message dialog.
Definition of file extensions used in Kicad.