49 m_currentLabel( aLabel ),
50 m_activeTextEntry( nullptr ),
51 m_netNameValidator( true ),
53 m_textSize( aParent, m_textSizeLabel, m_textSizeCtrl, m_textSizeUnits, false ),
54 m_helpWindow( nullptr )
103 case SCH_LABEL_T: SetTitle(
_(
"Label Properties" ) );
break;
105 case SCH_SHEET_PIN_T: SetTitle(
_(
"Hierarchical Sheet Pin Properties" ) );
break;
110 m_grid->SetDefaultRowSize(
m_grid->GetDefaultRowSize() + 4 );
114 m_grid->SetSelectionMode( wxGrid::wxGridSelectRows );
201 wxSizer* parentSizer =
m_autoRotate->GetContainingSizer();
203 parentSizer->Layout();
220 if( cfg && cfg->m_Appearance.edit_label_width > 0 && cfg->m_Appearance.edit_label_height > 0 )
221 SetSize( cfg->m_Appearance.edit_label_width, cfg->m_Appearance.edit_label_height );
241 m_grid->PopEventHandler(
true );
250 if( !wxDialog::TransferDataToWindow() )
267 std::set<wxString> existingLabels;
268 std::vector<std::shared_ptr<BUS_ALIAS>> busAliases;
289 std::set<std::shared_ptr<BUS_ALIAS>> sheetAliases = screen->GetBusAliases();
290 busAliases.insert( busAliases.end(), sheetAliases.begin(), sheetAliases.end() );
294 for(
const std::shared_ptr<BUS_ALIAS>& busAlias : busAliases )
295 existingLabels.insert( wxT(
"{" ) + busAlias->GetName() + wxT(
"}" ) );
297 wxArrayString existingLabelArray;
299 for(
const wxString& label : existingLabels )
300 existingLabelArray.push_back( label );
317 wxGridTableMessage msg(
m_fields, wxGRIDTABLE_NOTIFY_ROWS_APPENDED,
m_fields->size() );
318 m_grid->ProcessTableMessage( msg );
368 wxPostEvent(
this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
374 if( aEvent.GetKeyCode() == WXK_TAB )
376 if( aEvent.ShiftDown() )
382 m_grid->SetFocusFromKbd();
383 m_grid->MakeCellVisible( 0, 0 );
384 m_grid->SetGridCursor( 0, 0 );
409 for(
size_t i = 0; i < a->size() && i < b.size(); ++i )
424 if( !wxDialog::TransferDataFromWindow() )
452 text.Replace( wxS(
"\r" ), wxS(
"\n" ) );
464 bool doAutoplace =
false;
471 if( field.GetCanonicalName() == wxT(
"Netclass" ) )
475 else if( field.GetCanonicalName() == wxT(
"Intersheetrefs" ) )
480 "controlled globally from "
481 "Schematic Setup > General > Formatting" ) );
511 else if(
m_dot->GetValue() )
589 if( btn->IsChecked() && btn != aEvent.GetEventObject() )
610 ||
m_fields->at(
m_fields->size()-1 ).GetCanonicalName() == wxT(
"Netclass" ) )
612 fieldName = wxT(
"Netclass" );
637 wxGridTableMessage msg(
m_fields, wxGRIDTABLE_NOTIFY_ROWS_APPENDED, 1 );
638 m_grid->ProcessTableMessage( msg );
641 m_grid->SetGridCursor(
m_fields->size() - 1, fieldName == wxT(
"Netclass" ) ? 1 : 0 );
643 m_grid->EnableCellEditControl();
644 m_grid->ShowCellEditControl();
650 wxArrayInt selectedRows =
m_grid->GetSelectedRows();
652 if( selectedRows.empty() &&
m_grid->GetGridCursorRow() >= 0 )
653 selectedRows.push_back(
m_grid->GetGridCursorRow() );
655 if( selectedRows.empty() )
658 for(
int row : selectedRows )
660 if( row < m_currentLabel->GetMandatoryFieldCount() )
670 selectedRows.Sort( [](
int* first,
int* second ) {
return *second - *first; } );
672 for(
int row : selectedRows )
677 wxGridTableMessage msg(
m_fields, wxGRIDTABLE_NOTIFY_ROWS_DELETED, row, 1 );
678 m_grid->ProcessTableMessage( msg );
680 if(
m_grid->GetNumberRows() > 0 )
682 m_grid->MakeCellVisible( std::max( 0, row-1 ),
m_grid->GetGridCursorCol() );
683 m_grid->SetGridCursor( std::max( 0, row-1 ),
m_grid->GetGridCursorCol() );
694 int i =
m_grid->GetGridCursorRow();
703 m_grid->SetGridCursor( i - 1,
m_grid->GetGridCursorCol() );
718 int i =
m_grid->GetGridCursorRow();
727 m_grid->SetGridCursor( i + 1,
m_grid->GetGridCursorCol() );
741 aWidth -= (
m_grid->GetSize().x -
m_grid->GetClientSize().x );
743 m_grid->AutoSizeColumn( 0 );
744 m_grid->SetColSize( 0, std::max( 72,
m_grid->GetColSize( 0 ) ) );
746 int fixedColsWidth =
m_grid->GetColSize( 0 );
748 for(
int i = 2; i <
m_grid->GetNumberCols(); i++ )
749 fixedColsWidth +=
m_grid->GetColSize( i );
751 m_grid->SetColSize( 1, std::max( 120, aWidth - fixedColsWidth ) );
763 if( !
m_grid->IsCellEditControlShown() )
782 int new_size =
event.GetSize().GetX();
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
wxBitmap KiBitmap(BITMAPS aBitmap, int aHeightTag)
Construct a wxBitmap from an image identifier Returns the image from the active theme if the image ha...
Color settings are a bit different than most of the settings objects in that there can be more than o...
COLOR4D GetColor(int aLayer) const
void SetSwatchColor(const KIGFX::COLOR4D &aColor, bool aSendEvent)
Set the current swatch color directly.
KIGFX::COLOR4D GetSwatchColor() const
void SetDefaultColor(const KIGFX::COLOR4D &aColor)
Sets the color that will be chosen with the "Reset to Default" button in the chooser.
void SetSwatchBackground(const KIGFX::COLOR4D &aBackground)
Set the swatch background color.
Class DIALOG_LABEL_PROPERTIES_BASE.
wxStaticText * m_textSizeLabel
wxRadioButton * m_triState
COLOR_SWATCH * m_textColorSwatch
STD_BITMAP_BUTTON * m_bpMoveUp
wxFlexGridSizer * m_textEntrySizer
wxStaticBoxSizer * m_shapeSizer
wxRadioButton * m_diamond
BITMAP_BUTTON * m_separator3
STD_BITMAP_BUTTON * m_bpAdd
wxHyperlinkCtrl * m_syntaxHelp
wxRadioButton * m_rectangle
wxStaticText * m_labelCombo
wxComboBox * m_valueCombo
wxStaticText * m_labelSingleLine
wxRadioButton * m_passive
STD_BITMAP_BUTTON * m_bpMoveDown
STD_BITMAP_BUTTON * m_bpDelete
BITMAP_BUTTON * m_separator1
wxTextCtrl * m_textSizeCtrl
wxCheckBox * m_autoRotate
wxGridBagSizer * m_formattingGB
wxRadioButton * m_bidirectional
BITMAP_BUTTON * m_separator2
wxStaticText * m_fontLabel
wxTextCtrl * m_valueSingleLine
HTML_MESSAGE_BOX * m_helpWindow
void OnSizeGrid(wxSizeEvent &event) override
~DIALOG_LABEL_PROPERTIES()
wxTextEntry * m_activeTextEntry
SCH_LABEL_BASE * m_currentLabel
void OnMoveUp(wxCommandEvent &event) override
void OnMoveDown(wxCommandEvent &event) override
void OnEnterKey(wxCommandEvent &aEvent) override
void OnAddField(wxCommandEvent &event) override
void AdjustGridColumns(int aWidth)
SCH_NETNAME_VALIDATOR m_netNameValidator
void OnFormattingHelp(wxHyperlinkEvent &aEvent) override
FIELDS_GRID_TABLE< SCH_FIELD > * m_fields
bool TransferDataFromWindow() override
DIALOG_LABEL_PROPERTIES(SCH_EDIT_FRAME *parent, SCH_LABEL_BASE *aLabel)
void OnUpdateUI(wxUpdateUIEvent &event) override
void onSpinButton(wxCommandEvent &aEvent)
void OnDeleteField(wxCommandEvent &event) override
void OnValueCharHook(wxKeyEvent &aEvent) override
bool TransferDataToWindow() override
SCH_EDIT_FRAME * m_Parent
void SetInitialFocus(wxWindow *aWindow)
Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown.
void SetupStandardButtons(std::map< int, wxString > aLabels={})
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
EDA_BASE_FRAME * m_parentFrame
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
Update the board display after modifying it by a python script (note: it is automatically called by a...
EDA_ITEM_FLAGS GetEditFlags() const
KICAD_T Type() const
Returns the type of object.
void SetTextColor(const COLOR4D &aColor)
COLOR4D GetTextColor() const
const EDA_ANGLE & GetTextAngle() const
virtual const wxString & GetText() const
Return the string associated with the text object.
KIFONT::FONT * GetFont() const
void Offset(const VECTOR2I &aOffset)
GR_TEXT_H_ALIGN_T GetHorizJustify() const
virtual void SetVisible(bool aVisible)
void SetTextThickness(int aWidth)
The TextThickness is that set by the user.
GR_TEXT_V_ALIGN_T GetVertJustify() const
void SetTextSize(const VECTOR2I &aNewSize)
virtual void SetText(const wxString &aText)
virtual void SetTextAngle(const EDA_ANGLE &aAngle)
void SetItalic(bool aItalic)
void SetFont(KIFONT::FONT *aFont)
bool HaveFontSelection() const
void SetFontSelection(KIFONT::FONT *aFont)
KIFONT::FONT * GetFontSelection(bool aBold, bool aItalic) const
APP_SETTINGS_BASE * KifaceSettings() const
A color representation with 4 components: red, green, blue, alpha.
bool m_IntersheetRefsShow
SCHEMATIC_SETTINGS & Settings() const
wxString ConvertKIIDsToRefs(const wxString &aSource) const
wxString ConvertRefsToKIIDs(const wxString &aSource) const
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
COLOR_SETTINGS * GetColorSettings(bool aForceRefresh=false) const override
Returns a pointer to the active color theme settings.
Schematic editor (Eeschema) main window.
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag and update other data struc...
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
void SaveCopyInUndoList(SCH_SCREEN *aScreen, SCH_ITEM *aItemToCopy, UNDO_REDO aTypeCommand, bool aAppend, bool aDirtyConnectivity=true)
Create a copy of the current schematic item, and put it in the undo list.
SCHEMATIC & Schematic() const
void UpdateItem(EDA_ITEM *aItem, bool isAddOrDelete=false, bool aUpdateRtree=false) override
Mark an item for refresh.
void AutoRotateItem(SCH_SCREEN *aScreen, SCH_ITEM *aItem)
Automatically set the rotation of an item (if the item supports it)
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
VECTOR2I GetPosition() const override
Base class for any item which can be embedded within the SCHEMATIC container class,...
SCHEMATIC * Schematic() const
Searches the item hierarchy to find a SCHEMATIC.
void ClearFieldsAutoplaced()
void AutoAutoplaceFields(SCH_SCREEN *aScreen)
Autoplace fields only if correct to do so automatically.
void SetFields(const std::vector< SCH_FIELD > &aFields)
Set multiple schematic fields.
bool AutoRotateOnPlacement() const
autoRotateOnPlacement
virtual bool AutoRotateOnPlacementSupported() const =0
AutoRotateOnPlacementSupported.
void SetAutoRotateOnPlacement(bool autoRotate=true)
setAutoRotateOnPlacement
void SetShape(LABEL_FLAG_SHAPE aShape) override
static const wxString GetDefaultFieldName(const wxString &aName, bool aUseDefaultName)
LABEL_FLAG_SHAPE GetShape() const override
virtual int GetMandatoryFieldCount()
std::vector< SCH_FIELD > & GetFields()
virtual wxString GetClass() const override=0
Return the class name.
Container class that holds multiple SCH_SCREEN objects in a hierarchy.
const wxString GetValueFieldText(bool aResolve) const
static HTML_MESSAGE_BOX * ShowSyntaxHelp(wxWindow *aParentWindow)
VECTOR2I GetPosition() const override
TEXT_SPIN_STYLE GetTextSpinStyle() const
virtual void SetTextSpinStyle(TEXT_SPIN_STYLE aSpinStyle)
Set a spin or rotation angle, along with specific horizontal and vertical justification styles with e...
virtual long long int GetValue()
Return the current value in Internal Units.
virtual bool Validate(double aMin, double aMax, EDA_UNITS aUnits=EDA_UNITS::UNSCALED)
Validate the control against the given range, informing the user of any errors found.
virtual void SetValue(long long int aValue)
Set new value (in Internal Units) for the text field, taking care of units conversion.
void ShowHideColumns(const wxString &shownColumns)
Show/hide the grid columns based on a tokenized string of shown column indexes.
void SetTable(wxGridTableBase *table, bool aTakeOwnership=false)
Hide wxGrid's SetTable() method with one which doesn't mess up the grid column widths when setting th...
void DestroyTable(wxGridTableBase *aTable)
Work-around for a bug in wxGrid which crashes when deleting the table if the cell edit control was no...
wxString GetShownColumns()
Get a tokenized string containing the shown column indexes.
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
void DisplayInfoMessage(wxWindow *aParent, const wxString &aMessage, const wxString &aExtraInfo)
Display an informational message box with aMessage.
This file is part of the common library.
static bool positioningChanged(const SCH_FIELD &a, const SCH_FIELD &b)
int GetPenSizeForBold(int aTextSize)
@ LAYER_SCHEMATIC_BACKGROUND
#define UNIMPLEMENTED_FOR(type)
#define TO_UTF8(wxstring)
Convert a wxString to a UTF8 encoded C string for all wxWidgets build modes.
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:...
wxString edit_label_visible_columns
@ SCH_SYMBOL_LOCATE_POWER_T