Allow applying global edit actions to selected items only

This commit is contained in:
Jon Evans 2021-02-14 18:38:52 -05:00
parent b7672d3c92
commit 8135abffde
4 changed files with 80 additions and 3 deletions

View File

@ -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<EE_SELECTION_TOOL>();
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 );

View File

@ -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 );

View File

@ -1591,6 +1591,70 @@
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Only include selected items</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_selectedFilterOpt</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
</object>
</object>
</object>

View File

@ -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;