Expose exclusion flags in search pane.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15776
This commit is contained in:
parent
904bdc3c66
commit
cf02bb171f
|
@ -20,11 +20,11 @@ SEARCH_PANE_BASE::SEARCH_PANE_BASE( wxWindow* parent, wxWindowID id, const wxPoi
|
||||||
m_searchCtrl1->ShowSearchButton( true );
|
m_searchCtrl1->ShowSearchButton( true );
|
||||||
#endif
|
#endif
|
||||||
m_searchCtrl1->ShowCancelButton( false );
|
m_searchCtrl1->ShowCancelButton( false );
|
||||||
m_sizerOuter->Add( m_searchCtrl1, 0, wxEXPAND|wxTOP, 5 );
|
m_sizerOuter->Add( m_searchCtrl1, 0, wxEXPAND, 5 );
|
||||||
|
|
||||||
m_notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
|
m_notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
|
||||||
m_sizerOuter->Add( m_notebook, 1, wxEXPAND|wxTOP, 5 );
|
m_sizerOuter->Add( m_notebook, 1, wxEXPAND|wxBOTTOM, 4 );
|
||||||
|
|
||||||
|
|
||||||
this->SetSizer( m_sizerOuter );
|
this->SetSizer( m_sizerOuter );
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
<property name="permission">protected</property>
|
<property name="permission">protected</property>
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
<property name="border">5</property>
|
<property name="border">5</property>
|
||||||
<property name="flag">wxEXPAND|wxTOP</property>
|
<property name="flag">wxEXPAND</property>
|
||||||
<property name="proportion">0</property>
|
<property name="proportion">0</property>
|
||||||
<object class="wxSearchCtrl" expanded="1">
|
<object class="wxSearchCtrl" expanded="1">
|
||||||
<property name="BottomDockable">1</property>
|
<property name="BottomDockable">1</property>
|
||||||
|
@ -126,8 +126,8 @@
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
<property name="border">5</property>
|
<property name="border">4</property>
|
||||||
<property name="flag">wxEXPAND|wxTOP</property>
|
<property name="flag">wxEXPAND|wxBOTTOM</property>
|
||||||
<property name="proportion">1</property>
|
<property name="proportion">1</property>
|
||||||
<object class="wxNotebook" expanded="1">
|
<object class="wxNotebook" expanded="1">
|
||||||
<property name="BottomDockable">1</property>
|
<property name="BottomDockable">1</property>
|
||||||
|
|
|
@ -146,15 +146,15 @@ void SEARCH_PANE_LISTVIEW::RefreshColumnNames()
|
||||||
Freeze();
|
Freeze();
|
||||||
DeleteAllColumns();
|
DeleteAllColumns();
|
||||||
|
|
||||||
std::vector<std::pair<wxString, int>> columns = m_handler->GetColumns();
|
std::vector<std::tuple<wxString, int, wxListColumnFormat>> columns = m_handler->GetColumns();
|
||||||
|
|
||||||
for( auto& [ columnName, colProportion ] : columns )
|
for( auto& [ columnName, colProportion, colAlign ] : columns )
|
||||||
AppendColumn( wxGetTranslation( columnName ) );
|
AppendColumn( wxGetTranslation( columnName ), colAlign );
|
||||||
|
|
||||||
int widthUnit = GetClientSize().GetWidth() / 4;
|
int widthUnit = GetClientSize().GetWidth() / 10;
|
||||||
|
|
||||||
for( int ii = 0; ii < (int) columns.size(); ++ii )
|
for( int ii = 0; ii < (int) columns.size(); ++ii )
|
||||||
SetColumnWidth( ii, widthUnit * columns[ ii ].second );
|
SetColumnWidth( ii, widthUnit * std::get<1>( columns[ ii ] ) );
|
||||||
|
|
||||||
Thaw();
|
Thaw();
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,12 +122,16 @@ void SCH_SEARCH_HANDLER::SelectItems( std::vector<long>& aItemRows )
|
||||||
SYMBOL_SEARCH_HANDLER::SYMBOL_SEARCH_HANDLER( SCH_EDIT_FRAME* aFrame ) :
|
SYMBOL_SEARCH_HANDLER::SYMBOL_SEARCH_HANDLER( SCH_EDIT_FRAME* aFrame ) :
|
||||||
SCH_SEARCH_HANDLER( wxT( "Symbols" ), aFrame )
|
SCH_SEARCH_HANDLER( wxT( "Symbols" ), aFrame )
|
||||||
{
|
{
|
||||||
m_columns.emplace_back( wxT( "Reference" ), 1 );
|
m_columns.emplace_back( wxT( "Reference" ), 2, wxLIST_FORMAT_LEFT );
|
||||||
m_columns.emplace_back( wxT( "Value" ), 3 );
|
m_columns.emplace_back( wxT( "Value" ), 6, wxLIST_FORMAT_LEFT );
|
||||||
m_columns.emplace_back( wxT( "Footprint" ), 3 );
|
m_columns.emplace_back( wxT( "Footprint" ), 10, wxLIST_FORMAT_LEFT );
|
||||||
m_columns.emplace_back( wxT( "Page" ), 1 );
|
m_columns.emplace_back( wxT( "Page" ), 1, wxLIST_FORMAT_CENTER );
|
||||||
m_columns.emplace_back( wxT( "X" ), 2 );
|
m_columns.emplace_back( wxT( "X" ), 3, wxLIST_FORMAT_CENTER );
|
||||||
m_columns.emplace_back( wxT( "Y" ), 2 );
|
m_columns.emplace_back( wxT( "Y" ), 3, wxLIST_FORMAT_CENTER );
|
||||||
|
m_columns.emplace_back( wxT( "Excl. sim" ), 2, wxLIST_FORMAT_CENTER );
|
||||||
|
m_columns.emplace_back( wxT( "Excl. BOM" ), 2, wxLIST_FORMAT_CENTER );
|
||||||
|
m_columns.emplace_back( wxT( "Excl. board" ), 2, wxLIST_FORMAT_CENTER );
|
||||||
|
m_columns.emplace_back( wxT( "DNP" ), 2, wxLIST_FORMAT_CENTER );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -188,7 +192,14 @@ wxString SYMBOL_SEARCH_HANDLER::getResultCell( const SCH_SEARCH_HIT& aHit, int a
|
||||||
return m_frame->MessageTextFromValue( sym->GetPosition().x );
|
return m_frame->MessageTextFromValue( sym->GetPosition().x );
|
||||||
else if( aCol == 5 )
|
else if( aCol == 5 )
|
||||||
return m_frame->MessageTextFromValue( sym->GetPosition().y );
|
return m_frame->MessageTextFromValue( sym->GetPosition().y );
|
||||||
|
else if( aCol == 6 )
|
||||||
|
return sym->GetExcludedFromSim() ? wxS( "X" ) : wxS( " " );
|
||||||
|
else if( aCol == 7 )
|
||||||
|
return sym->GetExcludedFromBOM() ? wxS( "X" ) : wxS( " " );
|
||||||
|
else if( aCol == 8 )
|
||||||
|
return sym->GetExcludedFromBoard() ? wxS( "X" ) : wxS( " " );
|
||||||
|
else if( aCol == 9 )
|
||||||
|
return sym->GetDNP() ? wxS( "X" ) : wxS( " " );
|
||||||
|
|
||||||
return wxEmptyString;
|
return wxEmptyString;
|
||||||
}
|
}
|
||||||
|
@ -197,11 +208,11 @@ wxString SYMBOL_SEARCH_HANDLER::getResultCell( const SCH_SEARCH_HIT& aHit, int a
|
||||||
TEXT_SEARCH_HANDLER::TEXT_SEARCH_HANDLER( SCH_EDIT_FRAME* aFrame ) :
|
TEXT_SEARCH_HANDLER::TEXT_SEARCH_HANDLER( SCH_EDIT_FRAME* aFrame ) :
|
||||||
SCH_SEARCH_HANDLER( wxT( "Text" ), aFrame )
|
SCH_SEARCH_HANDLER( wxT( "Text" ), aFrame )
|
||||||
{
|
{
|
||||||
m_columns.emplace_back( wxT( "Type" ), 1 );
|
m_columns.emplace_back( wxT( "Type" ), 2, wxLIST_FORMAT_LEFT );
|
||||||
m_columns.emplace_back( wxT( "Text" ), 5 );
|
m_columns.emplace_back( wxT( "Text" ), 12, wxLIST_FORMAT_LEFT );
|
||||||
m_columns.emplace_back( wxT( "Page" ), 1 );
|
m_columns.emplace_back( wxT( "Page" ), 1, wxLIST_FORMAT_CENTER );
|
||||||
m_columns.emplace_back( wxT( "X" ), 2 );
|
m_columns.emplace_back( wxT( "X" ), 3, wxLIST_FORMAT_CENTER );
|
||||||
m_columns.emplace_back( wxT( "Y" ), 2 );
|
m_columns.emplace_back( wxT( "Y" ), 3, wxLIST_FORMAT_CENTER );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -281,11 +292,11 @@ wxString TEXT_SEARCH_HANDLER::getResultCell( const SCH_SEARCH_HIT& aHit, int aCo
|
||||||
LABEL_SEARCH_HANDLER::LABEL_SEARCH_HANDLER( SCH_EDIT_FRAME* aFrame ) :
|
LABEL_SEARCH_HANDLER::LABEL_SEARCH_HANDLER( SCH_EDIT_FRAME* aFrame ) :
|
||||||
SCH_SEARCH_HANDLER( wxT( "Labels" ), aFrame )
|
SCH_SEARCH_HANDLER( wxT( "Labels" ), aFrame )
|
||||||
{
|
{
|
||||||
m_columns.emplace_back( wxT( "Type" ), 1 );
|
m_columns.emplace_back( wxT( "Type" ), 2, wxLIST_FORMAT_LEFT );
|
||||||
m_columns.emplace_back( wxT( "Name" ), 4 );
|
m_columns.emplace_back( wxT( "Name" ), 6, wxLIST_FORMAT_LEFT );
|
||||||
m_columns.emplace_back( wxT( "Page" ), 1 );
|
m_columns.emplace_back( wxT( "Page" ), 2, wxLIST_FORMAT_CENTER );
|
||||||
m_columns.emplace_back( wxT( "X" ), 2 );
|
m_columns.emplace_back( wxT( "X" ), 3, wxLIST_FORMAT_CENTER );
|
||||||
m_columns.emplace_back( wxT( "Y" ), 2 );
|
m_columns.emplace_back( wxT( "Y" ), 3 , wxLIST_FORMAT_CENTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
#include <widgets/search_pane_base.h>
|
#include <widgets/search_pane_base.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <wx/listbase.h>
|
||||||
|
|
||||||
class EDA_DRAW_FRAME;
|
class EDA_DRAW_FRAME;
|
||||||
class SEARCH_PANE_TAB;
|
class SEARCH_PANE_TAB;
|
||||||
|
@ -35,7 +36,10 @@ public:
|
||||||
|
|
||||||
wxString GetName() const { return m_name; }
|
wxString GetName() const { return m_name; }
|
||||||
|
|
||||||
std::vector<std::pair<wxString, int>> GetColumns() const { return m_columns; }
|
std::vector<std::tuple<wxString, int, wxListColumnFormat>> GetColumns() const
|
||||||
|
{
|
||||||
|
return m_columns;
|
||||||
|
}
|
||||||
|
|
||||||
virtual int Search( const wxString& string ) = 0;
|
virtual int Search( const wxString& string ) = 0;
|
||||||
virtual wxString GetResultCell( int row, int col ) = 0;
|
virtual wxString GetResultCell( int row, int col ) = 0;
|
||||||
|
@ -45,8 +49,8 @@ public:
|
||||||
virtual void ActivateItem( long aItemRow ) {}
|
virtual void ActivateItem( long aItemRow ) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
wxString m_name;
|
wxString m_name;
|
||||||
std::vector<std::pair<wxString, int>> m_columns;
|
std::vector<std::tuple<wxString, int, wxListColumnFormat>> m_columns;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SEARCH_PANE : public SEARCH_PANE_BASE
|
class SEARCH_PANE : public SEARCH_PANE_BASE
|
||||||
|
|
|
@ -78,11 +78,11 @@ void PCB_SEARCH_HANDLER::SelectItems( std::vector<long>& aItemRows )
|
||||||
FOOTPRINT_SEARCH_HANDLER::FOOTPRINT_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ) :
|
FOOTPRINT_SEARCH_HANDLER::FOOTPRINT_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ) :
|
||||||
PCB_SEARCH_HANDLER( wxT( "Footprints" ), aFrame )
|
PCB_SEARCH_HANDLER( wxT( "Footprints" ), aFrame )
|
||||||
{
|
{
|
||||||
m_columns.emplace_back( wxT( "Reference" ), 1 );
|
m_columns.emplace_back( wxT( "Reference" ), 2, wxLIST_FORMAT_LEFT );
|
||||||
m_columns.emplace_back( wxT( "Value" ), 2 );
|
m_columns.emplace_back( wxT( "Value" ), 8, wxLIST_FORMAT_LEFT );
|
||||||
m_columns.emplace_back( wxT( "Layer" ), 1 );
|
m_columns.emplace_back( wxT( "Layer" ), 3, wxLIST_FORMAT_CENTER );
|
||||||
m_columns.emplace_back( wxT( "X" ), 1 );
|
m_columns.emplace_back( wxT( "X" ), 3, wxLIST_FORMAT_CENTER );
|
||||||
m_columns.emplace_back( wxT( "Y" ), 1 );
|
m_columns.emplace_back( wxT( "Y" ), 3, wxLIST_FORMAT_CENTER );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -136,12 +136,12 @@ wxString FOOTPRINT_SEARCH_HANDLER::getResultCell( BOARD_ITEM* aItem, int aCol )
|
||||||
ZONE_SEARCH_HANDLER::ZONE_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ) :
|
ZONE_SEARCH_HANDLER::ZONE_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ) :
|
||||||
PCB_SEARCH_HANDLER( wxT( "Zones" ), aFrame )
|
PCB_SEARCH_HANDLER( wxT( "Zones" ), aFrame )
|
||||||
{
|
{
|
||||||
m_columns.emplace_back( wxT( "Name" ), 2 );
|
m_columns.emplace_back( wxT( "Name" ), 6, wxLIST_FORMAT_LEFT );
|
||||||
m_columns.emplace_back( wxT( "Net" ), 1 );
|
m_columns.emplace_back( wxT( "Net" ), 6, wxLIST_FORMAT_LEFT);
|
||||||
m_columns.emplace_back( wxT( "Layer" ), 1 );
|
m_columns.emplace_back( wxT( "Layer" ), 3, wxLIST_FORMAT_CENTER );
|
||||||
m_columns.emplace_back( wxT( "Priority" ), 1 );
|
m_columns.emplace_back( wxT( "Priority" ), 2, wxLIST_FORMAT_CENTER );
|
||||||
m_columns.emplace_back( wxT( "X" ), 1 );
|
m_columns.emplace_back( wxT( "X" ), 3, wxLIST_FORMAT_CENTER );
|
||||||
m_columns.emplace_back( wxT( "Y" ), 1 );
|
m_columns.emplace_back( wxT( "Y" ), 3, wxLIST_FORMAT_CENTER );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -200,11 +200,11 @@ wxString ZONE_SEARCH_HANDLER::getResultCell( BOARD_ITEM* aItem, int aCol )
|
||||||
TEXT_SEARCH_HANDLER::TEXT_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ) :
|
TEXT_SEARCH_HANDLER::TEXT_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ) :
|
||||||
PCB_SEARCH_HANDLER( wxT( "Text" ), aFrame )
|
PCB_SEARCH_HANDLER( wxT( "Text" ), aFrame )
|
||||||
{
|
{
|
||||||
m_columns.emplace_back( wxT( "Type" ), 1 );
|
m_columns.emplace_back( wxT( "Type" ), 2, wxLIST_FORMAT_LEFT );
|
||||||
m_columns.emplace_back( wxT( "Text" ), 3 );
|
m_columns.emplace_back( wxT( "Text" ), 12, wxLIST_FORMAT_LEFT );
|
||||||
m_columns.emplace_back( wxT( "Layer" ), 1 );
|
m_columns.emplace_back( wxT( "Layer" ), 3, wxLIST_FORMAT_CENTER );
|
||||||
m_columns.emplace_back( wxT( "X" ), 1 );
|
m_columns.emplace_back( wxT( "X" ), 3, wxLIST_FORMAT_CENTER );
|
||||||
m_columns.emplace_back( wxT( "Y" ), 1 );
|
m_columns.emplace_back( wxT( "Y" ), 3, wxLIST_FORMAT_CENTER );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -264,8 +264,8 @@ wxString TEXT_SEARCH_HANDLER::getResultCell( BOARD_ITEM* aItem, int aCol )
|
||||||
NETS_SEARCH_HANDLER::NETS_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ) :
|
NETS_SEARCH_HANDLER::NETS_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ) :
|
||||||
PCB_SEARCH_HANDLER( wxT( "Nets" ), aFrame )
|
PCB_SEARCH_HANDLER( wxT( "Nets" ), aFrame )
|
||||||
{
|
{
|
||||||
m_columns.emplace_back( wxT( "Name" ), 2 );
|
m_columns.emplace_back( wxT( "Name" ), 6, wxLIST_FORMAT_LEFT );
|
||||||
m_columns.emplace_back( wxT( "Class" ), 2 );
|
m_columns.emplace_back( wxT( "Class" ), 6, wxLIST_FORMAT_LEFT );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -343,8 +343,8 @@ void NETS_SEARCH_HANDLER::ActivateItem( long aItemRow )
|
||||||
RATSNEST_SEARCH_HANDLER::RATSNEST_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ) :
|
RATSNEST_SEARCH_HANDLER::RATSNEST_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ) :
|
||||||
PCB_SEARCH_HANDLER( wxT( "Ratsnest" ), aFrame )
|
PCB_SEARCH_HANDLER( wxT( "Ratsnest" ), aFrame )
|
||||||
{
|
{
|
||||||
m_columns.emplace_back( wxT( "Name" ), 2 );
|
m_columns.emplace_back( wxT( "Name" ), 6, wxLIST_FORMAT_LEFT );
|
||||||
m_columns.emplace_back( wxT( "Class" ), 2 );
|
m_columns.emplace_back( wxT( "Class" ), 6, wxLIST_FORMAT_LEFT );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue