From 8135abffdee42e91a39443a700a69701426ab51a Mon Sep 17 00:00:00 2001 From: Jon Evans Date: Sun, 14 Feb 2021 18:38:52 -0500 Subject: [PATCH] Allow applying global edit actions to selected items only --- .../dialog_global_edit_text_and_graphics.cpp | 15 ++++- ...log_global_edit_text_and_graphics_base.cpp | 3 + ...log_global_edit_text_and_graphics_base.fbp | 64 +++++++++++++++++++ ...ialog_global_edit_text_and_graphics_base.h | 1 + 4 files changed, 80 insertions(+), 3 deletions(-) diff --git a/eeschema/dialogs/dialog_global_edit_text_and_graphics.cpp b/eeschema/dialogs/dialog_global_edit_text_and_graphics.cpp index 178121e416..cf81168fcf 100644 --- a/eeschema/dialogs/dialog_global_edit_text_and_graphics.cpp +++ b/eeschema/dialogs/dialog_global_edit_text_and_graphics.cpp @@ -60,6 +60,7 @@ static bool g_filterByType; static bool g_typeFilterIsPower; static bool g_filterByNet; static wxString g_netFilter; +static bool g_filterSelected; #define DEFAULT_STYLE _( "Default" ) @@ -67,6 +68,7 @@ static wxString g_netFilter; class DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS : public DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS_BASE { SCH_EDIT_FRAME* m_parent; + EE_SELECTION m_selection; UNIT_BINDER m_textSize; UNIT_BINDER m_lineWidth; @@ -147,13 +149,14 @@ DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::~DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS() g_typeFilterIsPower = m_typeFilter->GetSelection() == 1; g_filterByNet = m_netFilterOpt->GetValue(); g_netFilter = m_netFilter->GetValue(); + g_filterSelected = m_selectedFilterOpt->GetValue(); } bool DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::TransferDataToWindow() { EE_SELECTION_TOOL* selectionTool = m_parent->GetToolManager()->GetTool(); - SELECTION& selection = selectionTool->GetSelection(); + m_selection = selectionTool->GetSelection(); m_references->SetValue( g_modifyReferences ); m_values->SetValue( g_modifyValues ); @@ -177,6 +180,7 @@ bool DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::TransferDataToWindow() m_symbolFilterOpt->SetValue( g_filterBySymbol ); m_typeFilter->SetSelection( g_typeFilterIsPower ? 1 : 0 ); m_typeFilterOpt->SetValue( g_filterByType ); + m_selectedFilterOpt->SetValue( g_filterSelected ); if( g_filterByNet && !g_netFilter.IsEmpty() ) { @@ -187,9 +191,9 @@ bool DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::TransferDataToWindow() { m_netFilter->SetValue( m_parent->GetHighlightedConnection()->Name() ); } - else if( selection.GetSize() ) + else if( m_selection.GetSize() ) { - SCH_ITEM* sch_item = (SCH_ITEM*) selection.Front(); + SCH_ITEM* sch_item = (SCH_ITEM*) m_selection.Front(); SCH_CONNECTION* connection = sch_item->Connection(); if( connection ) @@ -306,6 +310,11 @@ void DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem( const SCH_SHEET_PATH& aS void DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem( const SCH_SHEET_PATH& aSheetPath, SCH_ITEM* aItem ) { + if( m_selectedFilterOpt->GetValue() && !m_selection.Contains( aItem ) ) + { + return; + } + if( m_netFilterOpt->GetValue() && !m_netFilter->GetValue().IsEmpty() ) { SCH_CONNECTION* connection = aItem->Connection( &aSheetPath ); diff --git a/eeschema/dialogs/dialog_global_edit_text_and_graphics_base.cpp b/eeschema/dialogs/dialog_global_edit_text_and_graphics_base.cpp index 6f5a6cb858..d6be12a692 100644 --- a/eeschema/dialogs/dialog_global_edit_text_and_graphics_base.cpp +++ b/eeschema/dialogs/dialog_global_edit_text_and_graphics_base.cpp @@ -126,6 +126,9 @@ DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS_BASE::DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS_ m_netFilter = new wxTextCtrl( sbFilters->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); fgSizer2->Add( m_netFilter, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxEXPAND, 5 ); + m_selectedFilterOpt = new wxCheckBox( sbFilters->GetStaticBox(), wxID_ANY, _("Only include selected items"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer2->Add( m_selectedFilterOpt, 0, wxALL, 5 ); + sbFilters->Add( fgSizer2, 1, wxEXPAND|wxRIGHT, 5 ); diff --git a/eeschema/dialogs/dialog_global_edit_text_and_graphics_base.fbp b/eeschema/dialogs/dialog_global_edit_text_and_graphics_base.fbp index 10c1d2480f..0bf19d7789 100644 --- a/eeschema/dialogs/dialog_global_edit_text_and_graphics_base.fbp +++ b/eeschema/dialogs/dialog_global_edit_text_and_graphics_base.fbp @@ -1591,6 +1591,70 @@ + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Only include selected items + + 0 + + + 0 + + 1 + m_selectedFilterOpt + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + diff --git a/eeschema/dialogs/dialog_global_edit_text_and_graphics_base.h b/eeschema/dialogs/dialog_global_edit_text_and_graphics_base.h index a42b43b20e..ee4494112f 100644 --- a/eeschema/dialogs/dialog_global_edit_text_and_graphics_base.h +++ b/eeschema/dialogs/dialog_global_edit_text_and_graphics_base.h @@ -61,6 +61,7 @@ class DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS_BASE : public DIALOG_SHIM wxChoice* m_typeFilter; wxCheckBox* m_netFilterOpt; wxTextCtrl* m_netFilter; + wxCheckBox* m_selectedFilterOpt; wxPanel* m_specifiedValues; wxStaticText* m_textSizeLabel; wxTextCtrl* m_textSizeCtrl;