Show all on empty searches

Fixes https://gitlab.com/kicad/code/kicad/-/issues/12478
This commit is contained in:
Marek Roszko 2022-09-20 23:44:17 -04:00
parent 30dbcbbcf5
commit dc9909f83f
2 changed files with 58 additions and 57 deletions

View File

@ -40,18 +40,20 @@ FOOTPRINT_SEARCH_HANDLER::FOOTPRINT_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ) :
} }
int FOOTPRINT_SEARCH_HANDLER::Search( const wxString& query ) int FOOTPRINT_SEARCH_HANDLER::Search( const wxString& aQuery )
{ {
m_hitlist.clear(); m_hitlist.clear();
BOARD* board = m_frame->GetBoard(); BOARD* board = m_frame->GetBoard();
EDA_SEARCH_DATA frp; EDA_SEARCH_DATA frp;
frp.findString = query; frp.findString = aQuery;
frp.matchMode = EDA_SEARCH_MATCH_MODE::WILDCARD; frp.matchMode = EDA_SEARCH_MATCH_MODE::WILDCARD;
for( FOOTPRINT* fp : board->Footprints() ) for( FOOTPRINT* fp : board->Footprints() )
{ {
if( fp->Reference().Matches( frp, nullptr ) || fp->Value().Matches( frp, nullptr ) ) if( aQuery.IsEmpty() ||
( fp->Reference().Matches( frp, nullptr )
|| fp->Value().Matches( frp, nullptr ) ) )
{ {
m_hitlist.push_back( fp ); m_hitlist.push_back( fp );
} }
@ -61,28 +63,28 @@ int FOOTPRINT_SEARCH_HANDLER::Search( const wxString& query )
} }
wxString FOOTPRINT_SEARCH_HANDLER::GetResultCell( int row, int col ) wxString FOOTPRINT_SEARCH_HANDLER::GetResultCell( int aRow, int aCol )
{ {
FOOTPRINT* fp = m_hitlist[row]; FOOTPRINT* fp = m_hitlist[aRow];
if( col == 0 ) if( aCol == 0 )
return fp->GetReference(); return fp->GetReference();
else if( col == 1 ) else if( aCol == 1 )
return fp->GetValue(); return fp->GetValue();
else if( col == 2 ) else if( aCol == 2 )
return fp->GetLayerName(); return fp->GetLayerName();
else if( col == 3 ) else if( aCol == 3 )
return m_frame->MessageTextFromValue( fp->GetX() ); return m_frame->MessageTextFromValue( fp->GetX() );
else if( col == 4 ) else if( aCol == 4 )
return m_frame->MessageTextFromValue( fp->GetY() ); return m_frame->MessageTextFromValue( fp->GetY() );
return wxEmptyString; return wxEmptyString;
} }
void FOOTPRINT_SEARCH_HANDLER::SelectItem( int row ) void FOOTPRINT_SEARCH_HANDLER::SelectItem( int aRow )
{ {
FOOTPRINT* fp = m_hitlist[row]; FOOTPRINT* fp = m_hitlist[aRow];
m_frame->GetToolManager()->RunAction( PCB_ACTIONS::selectionClear, true ); m_frame->GetToolManager()->RunAction( PCB_ACTIONS::selectionClear, true );
m_frame->GetToolManager()->RunAction( PCB_ACTIONS::selectItem, true, fp ); m_frame->GetToolManager()->RunAction( PCB_ACTIONS::selectItem, true, fp );
@ -101,20 +103,20 @@ ZONE_SEARCH_HANDLER::ZONE_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ) :
} }
int ZONE_SEARCH_HANDLER::Search( const wxString& query ) int ZONE_SEARCH_HANDLER::Search( const wxString& aQuery )
{ {
m_hitlist.clear(); m_hitlist.clear();
BOARD* board = m_frame->GetBoard(); BOARD* board = m_frame->GetBoard();
EDA_SEARCH_DATA frp; EDA_SEARCH_DATA frp;
frp.findString = query; frp.findString = aQuery;
frp.matchMode = EDA_SEARCH_MATCH_MODE::WILDCARD; frp.matchMode = EDA_SEARCH_MATCH_MODE::WILDCARD;
for( BOARD_ITEM* item : board->Zones() ) for( BOARD_ITEM* item : board->Zones() )
{ {
ZONE* zoneItem = dynamic_cast<ZONE*>( item ); ZONE* zoneItem = dynamic_cast<ZONE*>( item );
if( zoneItem && zoneItem->Matches( frp, nullptr ) ) if( zoneItem && ( aQuery.IsEmpty() || zoneItem->Matches( frp, nullptr ) ) )
{ {
m_hitlist.push_back( zoneItem ); m_hitlist.push_back( zoneItem );
} }
@ -124,16 +126,15 @@ int ZONE_SEARCH_HANDLER::Search( const wxString& query )
} }
wxString ZONE_SEARCH_HANDLER::GetResultCell( int row, int col ) wxString ZONE_SEARCH_HANDLER::GetResultCell( int aRow, int aCol )
{ {
ZONE* zone = m_hitlist[row]; ZONE* zone = m_hitlist[aRow];
if( aCol == 0 )
if( col == 0 )
return zone->GetZoneName(); return zone->GetZoneName();
if( col == 1 ) if( aCol == 1 )
return zone->GetNetname(); return zone->GetNetname();
else if( col == 2 ) else if( aCol == 2 )
{ {
wxArrayString layers; wxArrayString layers;
BOARD* board = m_frame->GetBoard(); BOARD* board = m_frame->GetBoard();
@ -145,20 +146,20 @@ wxString ZONE_SEARCH_HANDLER::GetResultCell( int row, int col )
return wxJoin( layers, ',' ); return wxJoin( layers, ',' );
} }
else if( col == 3 ) else if( aCol == 3 )
return wxString::Format( "%d", zone->GetAssignedPriority() ); return wxString::Format( "%d", zone->GetAssignedPriority() );
else if( col == 4 ) else if( aCol == 4 )
return m_frame->MessageTextFromValue( zone->GetX() ); return m_frame->MessageTextFromValue( zone->GetX() );
else if( col == 5 ) else if( aCol == 5 )
return m_frame->MessageTextFromValue( zone->GetY() ); return m_frame->MessageTextFromValue( zone->GetY() );
return wxEmptyString; return wxEmptyString;
} }
void ZONE_SEARCH_HANDLER::SelectItem( int row ) void ZONE_SEARCH_HANDLER::SelectItem( int aRow )
{ {
ZONE* zone = m_hitlist[row]; ZONE* zone = m_hitlist[aRow];
m_frame->GetToolManager()->RunAction( PCB_ACTIONS::selectionClear, true ); m_frame->GetToolManager()->RunAction( PCB_ACTIONS::selectionClear, true );
m_frame->GetToolManager()->RunAction( PCB_ACTIONS::selectItem, true, zone ); m_frame->GetToolManager()->RunAction( PCB_ACTIONS::selectItem, true, zone );
@ -176,13 +177,13 @@ TEXT_SEARCH_HANDLER::TEXT_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ) :
} }
int TEXT_SEARCH_HANDLER::Search( const wxString& query ) int TEXT_SEARCH_HANDLER::Search( const wxString& aQuery )
{ {
m_hitlist.clear(); m_hitlist.clear();
BOARD* board = m_frame->GetBoard(); BOARD* board = m_frame->GetBoard();
EDA_SEARCH_DATA frp; EDA_SEARCH_DATA frp;
frp.findString = query; frp.findString = aQuery;
frp.matchMode = EDA_SEARCH_MATCH_MODE::WILDCARD; frp.matchMode = EDA_SEARCH_MATCH_MODE::WILDCARD;
for( BOARD_ITEM* item : board->Drawings() ) for( BOARD_ITEM* item : board->Drawings() )
@ -190,11 +191,11 @@ int TEXT_SEARCH_HANDLER::Search( const wxString& query )
PCB_TEXT* textItem = dynamic_cast<PCB_TEXT*>( item ); PCB_TEXT* textItem = dynamic_cast<PCB_TEXT*>( item );
PCB_TEXTBOX* textBoxItem = dynamic_cast<PCB_TEXTBOX*>( item ); PCB_TEXTBOX* textBoxItem = dynamic_cast<PCB_TEXTBOX*>( item );
if( textItem && textItem->Matches( frp, nullptr ) ) if( textItem && ( aQuery.IsEmpty() || textItem->Matches( frp, nullptr ) ) )
{ {
m_hitlist.push_back( textItem ); m_hitlist.push_back( textItem );
} }
else if( textBoxItem && textBoxItem->Matches( frp, nullptr ) ) else if( textBoxItem && ( aQuery.IsEmpty() || textBoxItem->Matches( frp, nullptr ) ) )
{ {
m_hitlist.push_back( textBoxItem ); m_hitlist.push_back( textBoxItem );
} }
@ -204,11 +205,11 @@ int TEXT_SEARCH_HANDLER::Search( const wxString& query )
} }
wxString TEXT_SEARCH_HANDLER::GetResultCell( int row, int col ) wxString TEXT_SEARCH_HANDLER::GetResultCell( int aRow, int aCol )
{ {
BOARD_ITEM* text = m_hitlist[row]; BOARD_ITEM* text = m_hitlist[aRow];
if( col == 0 ) if( aCol == 0 )
{ {
if( PCB_TEXT::ClassOf( text ) ) if( PCB_TEXT::ClassOf( text ) )
{ {
@ -219,7 +220,7 @@ wxString TEXT_SEARCH_HANDLER::GetResultCell( int row, int col )
return _( "Textbox" ); return _( "Textbox" );
} }
} }
else if( col == 1 ) else if( aCol == 1 )
{ {
if( PCB_TEXT::ClassOf( text ) ) if( PCB_TEXT::ClassOf( text ) )
{ {
@ -230,20 +231,20 @@ wxString TEXT_SEARCH_HANDLER::GetResultCell( int row, int col )
return dynamic_cast<PCB_TEXTBOX*>( text )->GetShownText(); return dynamic_cast<PCB_TEXTBOX*>( text )->GetShownText();
} }
} }
if( col == 2 ) if( aCol == 2 )
return text->GetLayerName(); return text->GetLayerName();
else if( col == 3 ) else if( aCol == 3 )
return m_frame->MessageTextFromValue( text->GetX() ); return m_frame->MessageTextFromValue( text->GetX() );
else if( col == 4 ) else if( aCol == 4 )
return m_frame->MessageTextFromValue( text->GetY() ); return m_frame->MessageTextFromValue( text->GetY() );
return wxEmptyString; return wxEmptyString;
} }
void TEXT_SEARCH_HANDLER::SelectItem( int row ) void TEXT_SEARCH_HANDLER::SelectItem( int aRow )
{ {
BOARD_ITEM* text = m_hitlist[row]; BOARD_ITEM* text = m_hitlist[aRow];
m_frame->GetToolManager()->RunAction( PCB_ACTIONS::selectionClear, true ); m_frame->GetToolManager()->RunAction( PCB_ACTIONS::selectionClear, true );
m_frame->GetToolManager()->RunAction( PCB_ACTIONS::selectItem, true, text ); m_frame->GetToolManager()->RunAction( PCB_ACTIONS::selectItem, true, text );
@ -258,18 +259,18 @@ NETS_SEARCH_HANDLER::NETS_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ) :
} }
int NETS_SEARCH_HANDLER::Search( const wxString& query ) int NETS_SEARCH_HANDLER::Search( const wxString& aQuery )
{ {
m_hitlist.clear(); m_hitlist.clear();
EDA_SEARCH_DATA frp; EDA_SEARCH_DATA frp;
frp.findString = query; frp.findString = aQuery;
frp.matchMode = EDA_SEARCH_MATCH_MODE::WILDCARD; frp.matchMode = EDA_SEARCH_MATCH_MODE::WILDCARD;
BOARD* board = m_frame->GetBoard(); BOARD* board = m_frame->GetBoard();
for( NETINFO_ITEM* net : board->GetNetInfo() ) for( NETINFO_ITEM* net : board->GetNetInfo() )
{ {
if( net && net->Matches( frp, nullptr ) ) if( net && ( aQuery.IsEmpty() || net->Matches( frp, nullptr ) ) )
{ {
m_hitlist.push_back( net ); m_hitlist.push_back( net );
} }
@ -279,13 +280,13 @@ int NETS_SEARCH_HANDLER::Search( const wxString& query )
} }
wxString NETS_SEARCH_HANDLER::GetResultCell( int row, int col ) wxString NETS_SEARCH_HANDLER::GetResultCell( int aRow, int aCol )
{ {
NETINFO_ITEM* net = m_hitlist[row]; NETINFO_ITEM* net = m_hitlist[aRow];
if( col == 0 ) if( aCol == 0 )
return net->GetNetname(); return net->GetNetname();
else if( col == 1 ) else if( aCol == 1 )
return net->GetNetClass()->GetName(); return net->GetNetClass()->GetName();
return wxEmptyString; return wxEmptyString;

View File

@ -35,9 +35,9 @@ class FOOTPRINT_SEARCH_HANDLER : public SEARCH_HANDLER
public: public:
FOOTPRINT_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ); FOOTPRINT_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame );
int Search( const wxString& query ) override; int Search( const wxString& aQuery ) override;
wxString GetResultCell( int row, int col ) override; wxString GetResultCell( int aRow, int aCol ) override;
void SelectItem( int row ) override; void SelectItem( int aRow ) override;
private: private:
PCB_EDIT_FRAME* m_frame; PCB_EDIT_FRAME* m_frame;
@ -49,9 +49,9 @@ class ZONE_SEARCH_HANDLER : public SEARCH_HANDLER
public: public:
ZONE_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ); ZONE_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame );
int Search( const wxString& query ) override; int Search( const wxString& aQuery ) override;
wxString GetResultCell( int row, int col ) override; wxString GetResultCell( int aRow, int aCol ) override;
void SelectItem( int row ) override; void SelectItem( int aRow ) override;
private: private:
PCB_EDIT_FRAME* m_frame; PCB_EDIT_FRAME* m_frame;
@ -64,9 +64,9 @@ class TEXT_SEARCH_HANDLER : public SEARCH_HANDLER
public: public:
TEXT_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ); TEXT_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame );
int Search( const wxString& query ) override; int Search( const wxString& aQuery ) override;
wxString GetResultCell( int row, int col ) override; wxString GetResultCell( int aRow, int aCol ) override;
void SelectItem( int row ) override; void SelectItem( int aRow ) override;
private: private:
PCB_EDIT_FRAME* m_frame; PCB_EDIT_FRAME* m_frame;
@ -79,8 +79,8 @@ class NETS_SEARCH_HANDLER : public SEARCH_HANDLER
public: public:
NETS_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame ); NETS_SEARCH_HANDLER( PCB_EDIT_FRAME* aFrame );
int Search( const wxString& query ) override; int Search( const wxString& aQuery ) override;
wxString GetResultCell( int row, int col ) override; wxString GetResultCell( int aRow, int aCol ) override;
private: private:
PCB_EDIT_FRAME* m_frame; PCB_EDIT_FRAME* m_frame;