diff --git a/common/eda_text.cpp b/common/eda_text.cpp index 5d17ae8d80..73ab6991bf 100644 --- a/common/eda_text.cpp +++ b/common/eda_text.cpp @@ -1371,6 +1371,21 @@ static struct EDA_TEXT_DESC propMgr.AddProperty( new PROPERTY( _HKI( "Mirrored" ), &EDA_TEXT::SetMirrored, &EDA_TEXT::IsMirrored ), textProps ); + + auto isField = + []( INSPECTABLE* aItem ) -> bool + { + if( EDA_ITEM* item = dynamic_cast( aItem ) ) + return item->Type() == SCH_FIELD_T || item->Type() == PCB_FIELD_T; + + return false; + }; + + propMgr.AddProperty( new PROPERTY( _HKI( "Visible" ), + &EDA_TEXT::SetVisible, &EDA_TEXT::IsVisible ), + textProps ) + .SetAvailableFunc( isField ); + propMgr.AddProperty( new PROPERTY( _HKI( "Width" ), &EDA_TEXT::SetTextWidth, &EDA_TEXT::GetTextWidth, PROPERTY_DISPLAY::PT_SIZE ), diff --git a/pcbnew/dialogs/dialog_text_properties.cpp b/pcbnew/dialogs/dialog_text_properties.cpp index 6562b9de34..cd9dd0ff9a 100644 --- a/pcbnew/dialogs/dialog_text_properties.cpp +++ b/pcbnew/dialogs/dialog_text_properties.cpp @@ -122,6 +122,7 @@ DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent, PC { title = _( "Footprint Text Properties" ); m_TextLabel->SetLabel( _( "Text:" ) ); + m_Visible->Show( false ); } SetInitialFocus( m_SingleLineText ); @@ -136,6 +137,7 @@ DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent, PC m_SizeXCtrl, m_SizeYCtrl, m_ThicknessCtrl, + m_Visible, m_cbKnockout, m_KeepUpright, m_PositionXCtrl, @@ -152,6 +154,7 @@ DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent, PC SetInitialFocus( m_MultiLineText ); m_SingleLineSizer->Show( false ); + m_Visible->Show( false ); m_KeepUpright->Show( false ); m_statusLine->Show( false ); @@ -327,7 +330,10 @@ bool DIALOG_TEXT_PROPERTIES::TransferDataToWindow() m_posX.SetValue( m_item->GetFPRelativePosition().x ); m_posY.SetValue( m_item->GetFPRelativePosition().y ); - if( parentFP ) + if( m_Visible->IsShown() ) + m_Visible->SetValue( m_item->IsVisible() ); + + if( m_KeepUpright->IsShown() ) m_KeepUpright->SetValue( m_item->IsKeepUpright() ); m_bold->Check( m_item->IsBold() ); @@ -519,6 +525,9 @@ bool DIALOG_TEXT_PROPERTIES::TransferDataFromWindow() m_item->SetTextAngle( m_orientation.GetAngleValue().Normalize() ); + if( m_Visible->IsShown() ) + m_item->SetVisible( m_Visible->GetValue() ); + if( m_KeepUpright->IsShown() ) m_item->SetKeepUpright( m_KeepUpright->GetValue() ); diff --git a/pcbnew/dialogs/dialog_text_properties_base.cpp b/pcbnew/dialogs/dialog_text_properties_base.cpp index e9a82e521c..bb089eaca6 100644 --- a/pcbnew/dialogs/dialog_text_properties_base.cpp +++ b/pcbnew/dialogs/dialog_text_properties_base.cpp @@ -94,15 +94,24 @@ DIALOG_TEXT_PROPERTIES_BASE::DIALOG_TEXT_PROPERTIES_BASE( wxWindow* parent, wxWi bSizer7 = new wxBoxSizer( wxHORIZONTAL ); m_cbKnockout = new wxCheckBox( this, wxID_ANY, _("Knockout"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizer7->Add( m_cbKnockout, 1, wxTOP|wxBOTTOM|wxRIGHT, 15 ); + bSizer7->Add( m_cbKnockout, 0, wxALIGN_CENTER_VERTICAL, 10 ); + + + bSizer7->Add( 20, 0, 1, wxEXPAND, 5 ); m_KeepUpright = new wxCheckBox( this, wxID_ANY, _("Keep upright"), wxDefaultPosition, wxDefaultSize, 0 ); m_KeepUpright->SetToolTip( _("Keep text upright") ); - bSizer7->Add( m_KeepUpright, 1, wxALIGN_CENTER_VERTICAL, 5 ); + bSizer7->Add( m_KeepUpright, 0, wxALIGN_CENTER_VERTICAL, 10 ); - gbSizer1->Add( bSizer7, wxGBPosition( 1, 4 ), wxGBSpan( 1, 3 ), wxEXPAND, 5 ); + bSizer7->Add( 20, 0, 1, wxEXPAND, 5 ); + + m_Visible = new wxCheckBox( this, wxID_ANY, _("Show"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer7->Add( m_Visible, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 10 ); + + + gbSizer1->Add( bSizer7, wxGBPosition( 1, 4 ), wxGBSpan( 1, 3 ), wxEXPAND|wxTOP|wxBOTTOM, 10 ); m_fontLabel = new wxStaticText( this, wxID_ANY, _("Font:"), wxDefaultPosition, wxDefaultSize, 0 ); m_fontLabel->Wrap( -1 ); @@ -254,7 +263,7 @@ DIALOG_TEXT_PROPERTIES_BASE::DIALOG_TEXT_PROPERTIES_BASE( wxWindow* parent, wxWi m_statusLine = new wxStaticText( this, wxID_ANY, _("Parent footprint description"), wxDefaultPosition, wxDefaultSize, 0 ); m_statusLine->Wrap( -1 ); - bMargins->Add( m_statusLine, 0, wxBOTTOM|wxRIGHT|wxLEFT, 3 ); + bMargins->Add( m_statusLine, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 3 ); bMainSizer->Add( bMargins, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 12 ); diff --git a/pcbnew/dialogs/dialog_text_properties_base.fbp b/pcbnew/dialogs/dialog_text_properties_base.fbp index 0c10e6a290..789bb7617f 100644 --- a/pcbnew/dialogs/dialog_text_properties_base.fbp +++ b/pcbnew/dialogs/dialog_text_properties_base.fbp @@ -565,10 +565,10 @@ - 5 + 10 3 4 - wxEXPAND + wxEXPAND|wxTOP|wxBOTTOM 1 1 @@ -577,9 +577,9 @@ wxHORIZONTAL none - 15 - wxTOP|wxBOTTOM|wxRIGHT - 1 + 10 + wxALIGN_CENTER_VERTICAL + 0 1 1 @@ -641,10 +641,20 @@ - + 5 - wxALIGN_CENTER_VERTICAL + wxEXPAND 1 + + 0 + protected + 20 + + + + 10 + wxALIGN_CENTER_VERTICAL + 0 1 1 @@ -706,6 +716,81 @@ + + 5 + wxEXPAND + 1 + + 0 + protected + 20 + + + + 10 + wxALIGN_CENTER_VERTICAL|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Show + + 0 + + + 0 + + 1 + m_Visible + 1 + + + protected + 1 + + Resizable + 1 + + + ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + @@ -2904,7 +2989,7 @@ none 3 - wxBOTTOM|wxRIGHT|wxLEFT + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND 0 1 diff --git a/pcbnew/dialogs/dialog_text_properties_base.h b/pcbnew/dialogs/dialog_text_properties_base.h index 066768a726..50f209588b 100644 --- a/pcbnew/dialogs/dialog_text_properties_base.h +++ b/pcbnew/dialogs/dialog_text_properties_base.h @@ -56,6 +56,7 @@ class DIALOG_TEXT_PROPERTIES_BASE : public DIALOG_SHIM PCB_LAYER_BOX_SELECTOR* m_LayerSelectionCtrl; wxCheckBox* m_cbKnockout; wxCheckBox* m_KeepUpright; + wxCheckBox* m_Visible; wxStaticText* m_fontLabel; FONT_CHOICE* m_fontCtrl; BITMAP_BUTTON* m_bold;