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 ) ),
157 m_part( aSymbol->GetLibSymbolRef().get() ),
159 m_symbolNetlist(
netList( aSymbol, aFrame->GetCurrentSheet() ) ),
196 m_referenceValidator( 0 ),
197 m_valueValidator( 0 ),
200 m_filepathValidator( 0 )
208 int mandatoryRows = 0;
216 return mandatoryRows;
279 wxString wildCard(
_(
"Schematic Files" ) );
280 std::vector<std::string> exts;
289 m_boolAttr->SetRenderer(
new wxGridCellBoolRenderer() );
290 m_boolAttr->SetEditor(
new wxGridCellBoolEditor() );
291 m_boolAttr->SetAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
293 wxArrayString vAlignNames;
294 vAlignNames.Add(
_(
"Top" ) );
295 vAlignNames.Add(
_(
"Center" ) );
296 vAlignNames.Add(
_(
"Bottom" ) );
298 m_vAlignAttr->SetEditor(
new wxGridCellChoiceEditor( vAlignNames ) );
299 m_vAlignAttr->SetAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
301 wxArrayString hAlignNames;
302 hAlignNames.Add(
_(
"Left" ) );
303 hAlignNames.Add(
_(
"Center" ) );
304 hAlignNames.Add(
_(
"Right" ) );
306 m_hAlignAttr->SetEditor(
new wxGridCellChoiceEditor( hAlignNames ) );
307 m_hAlignAttr->SetAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
309 wxArrayString orientationNames;
310 orientationNames.Add(
_(
"Horizontal" ) );
311 orientationNames.Add(
_(
"Vertical" ) );
317 wxArrayString existingNetclasses;
320 std::vector<std::string> fontNames;
326 const std::shared_ptr<NET_SETTINGS>& settings = projectFile.
NetSettings();
328 existingNetclasses.push_back( settings->GetDefaultNetclass()->GetName() );
330 for(
const auto& [
name, netclass] : settings->GetNetclasses() )
331 existingNetclasses.push_back(
name );
335 const std::vector<wxString>* fontFiles =
nullptr;
340 Fontconfig()->ListFonts( fontNames, std::string(
Pgm().GetLanguageTag().utf8_str() ),
349 Fontconfig()->ListFonts( fontNames, std::string(
Pgm().GetLanguageTag().utf8_str() ),
350 fontFiles, !fontFiles->empty() );
356 for(
const std::string&
name : fontNames )
401 GetView()->ForceRefresh();
437 return (
int) this->size();
453 if( visibleRow == aRow )
459 wxFAIL_MSG( wxT(
"Row index off end of visible row count" ) );
462 return this->at( aRow );
486 default: wxFAIL;
return wxEmptyString;
505 return aTypeName == wxGRID_VALUE_STRING;
513 return aTypeName == wxGRID_VALUE_BOOL;
541 tmp->SetReadOnly(
true );
664 wxGrid*
grid = GetView();
667 if(
grid->GetGridCursorRow() == aRow &&
grid->GetGridCursorCol() == aCol
668 &&
grid->IsCellEditControlShown() )
701 wxFAIL_MSG( wxS(
"Unhandled field owner type." ) );
747 return _(
"Horizontal" );
749 return _(
"Vertical" );
778 return wxT(
"bad wxWidgets!" );
796 wxFAIL_MSG( wxString::Format( wxT(
"column %d doesn't hold a bool value" ), aCol ) );
807 wxString value = aValue;
816 if(
m_eval->Process( value ) )
861 if( value ==
_(
"Left" ) )
863 else if( value ==
_(
"Center" ) )
865 else if( value ==
_(
"Right" ) )
868 wxFAIL_MSG( wxT(
"unknown horizontal alignment: " ) + value );
885 if( value ==
_(
"Top" ) )
887 else if( value ==
_(
"Center" ) )
889 else if( value ==
_(
"Bottom" ) )
892 wxFAIL_MSG( wxT(
"unknown vertical alignment: " ) + value);
919 if( value ==
_(
"Horizontal" ) )
921 else if( value ==
_(
"Vertical" ) )
924 wxFAIL_MSG( wxT(
"unknown orientation: " ) + value );
964 wxFAIL_MSG( wxString::Format( wxT(
"column %d doesn't hold a string value" ), aCol ) );
970 GetView()->Refresh();
1006 wxFAIL_MSG( wxString::Format( wxT(
"column %d doesn't hold a bool value" ), aCol ) );
1025 if( aValue == wxS(
"1" ) )
1029 else if( aValue == wxS(
"0" ) )
1035 wxFAIL_MSG( wxString::Format(
"string '%s' can't be converted to boolean correctly and "
1036 "will be perceived as FALSE", aValue ) );
1055 _(
"Browse for footprint" ) );
1056 menu.AppendSeparator();
1062 _(
"Show datasheet in browser" ) );
1063 menu.AppendSeparator();
1079 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
virtual void SetParent(EDA_ITEM *aParent)
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
int GetMandatoryRowCount() const
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
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
wxGridCellAttr * m_filepathAttr
SCH_FIELD & getField(int aRow)
wxGridCellAttr * m_netclassAttr
void SetValueAsBool(int aRow, int aCol, bool aValue) override
FIELDS_GRID_TABLE(DIALOG_SHIM *aDialog, SCH_BASE_FRAME *aFrame, WX_GRID *aGrid, LIB_SYMBOL *aSymbol, EMBEDDED_FILES *aFiles=nullptr)
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 IsHypertext() const override
Allow items to support hypertext actions when hovered/clicked.
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)
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_FOOTPRINT_CHOOSER
@ GRIDTRICKS_FIRST_CLIENT_ID
static const std::string KiCadSchematicFileExtension
PGM_BASE & Pgm()
The global program "get" accessor.
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.
Definition for symbol library class.
wxString GetDefaultFieldName(int aFieldNdx, bool aTranslateForHI)
Return a default symbol field name for field aFieldNdx for all components.
@ DATASHEET_FIELD
name of datasheet
@ FOOTPRINT_FIELD
Field Name Module PCB, i.e. "16DIP300".
@ VALUE_FIELD
Field Value of part, i.e. "3.3K".
@ 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.