42    std::vector<long> item = { aItemRow };
 
 
   51    std::vector<BOARD_ITEM*> selection;
 
   53    for( 
long i = 0; i < (long) 
m_hitlist.size(); ++i )
 
   59    int col = std::max( 0, aCol );  
 
   68                    return StrNumCmp( getResultCell( a, col ), getResultCell( b, col ), true ) < 0;
 
   70                    return StrNumCmp( getResultCell( b, col ), getResultCell( a, col ), true ) < 0;
 
   76    for( 
long i = 0; i < (long) 
m_hitlist.size(); ++i )
 
   79            aSelection->push_back( i );
 
 
   87    std::vector<EDA_ITEM*> selectedItems;
 
   89    for( 
long row : aItemRows )
 
   91        if( row >= 0 && row < (
long) 
m_hitlist.size() )
 
   92            selectedItems.push_back( 
m_hitlist[row] );
 
   97    if( selectedItems.size() )
 
  114    m_frame->GetCanvas()->Refresh( 
false );
 
 
  121    m_columns.emplace_back( 
_HKI( 
"Reference" ),            2, wxLIST_FORMAT_LEFT );
 
  122    m_columns.emplace_back( 
_HKI( 
"Value" ),                6, wxLIST_FORMAT_LEFT );
 
  123    m_columns.emplace_back( 
_HKI( 
"Layer" ),                2, wxLIST_FORMAT_CENTER );
 
  124    m_columns.emplace_back(  wxT( 
"X" ),                    3, wxLIST_FORMAT_CENTER );
 
  125    m_columns.emplace_back(  wxT( 
"Y" ),                    3, wxLIST_FORMAT_CENTER );
 
  126    m_columns.emplace_back( 
_HKI( 
"Library Link" ),         8, wxLIST_FORMAT_LEFT );
 
  127    m_columns.emplace_back( 
_HKI( 
"Library Description" ), 10, wxLIST_FORMAT_LEFT );
 
 
  136    if( board == 
nullptr )
 
  156        if( !found && fp->Matches( frp, 
nullptr ) )
 
  161            for( 
PCB_FIELD* field : fp->GetFields() )
 
  163                if( field->Matches( frp, 
nullptr ) )
 
 
  198    return wxEmptyString;
 
 
  205    m_columns.emplace_back( 
_HKI( 
"Name" ),     6, wxLIST_FORMAT_LEFT );
 
  206    m_columns.emplace_back( 
_HKI( 
"Net" ),      6, wxLIST_FORMAT_LEFT);
 
  207    m_columns.emplace_back( 
_HKI( 
"Layer" ),    3, wxLIST_FORMAT_CENTER );
 
  208    m_columns.emplace_back( 
_HKI( 
"Priority" ), 2, wxLIST_FORMAT_CENTER );
 
  209    m_columns.emplace_back( wxT( 
"X" ),         3, wxLIST_FORMAT_CENTER );
 
  210    m_columns.emplace_back( wxT( 
"Y" ),         3, wxLIST_FORMAT_CENTER );
 
  211    m_columns.emplace_back( 
_HKI( 
"Area" ),     3, wxLIST_FORMAT_RIGHT );
 
 
  232        if( frp.
findString.IsEmpty() || item->Matches( frp, 
nullptr ) )
 
 
  242    ZONE* zone = 
static_cast<ZONE*
>( aItem );
 
  250        wxArrayString layers;
 
  256        return wxJoin( layers, 
',' );
 
  271    return wxEmptyString;
 
 
  278    m_columns.emplace_back( 
_HKI( 
"Type" ),  2,  wxLIST_FORMAT_LEFT );
 
  279    m_columns.emplace_back( 
_HKI( 
"Text" ),  12, wxLIST_FORMAT_LEFT );
 
  280    m_columns.emplace_back( 
_HKI( 
"Layer" ), 3,  wxLIST_FORMAT_CENTER );
 
  281    m_columns.emplace_back( wxT( 
"X" ),      3,  wxLIST_FORMAT_CENTER );
 
  282    m_columns.emplace_back( wxT( 
"Y" ),      3,  wxLIST_FORMAT_CENTER );
 
 
  308            if( frp.
findString.IsEmpty() || item->Matches( frp, 
nullptr ) )
 
  324            return _( 
"Textbox" );
 
  326            return _( 
"Dimension" );
 
  344    return wxEmptyString;
 
 
  351    m_columns.emplace_back( 
_HKI( 
"Type" ),  2,  wxLIST_FORMAT_LEFT );
 
  352    m_columns.emplace_back( 
_HKI( 
"Name" ),  6,  wxLIST_FORMAT_LEFT );
 
  353    m_columns.emplace_back( wxT( 
"X" ),      3,  wxLIST_FORMAT_CENTER );
 
  354    m_columns.emplace_back( wxT( 
"Y" ),      3,  wxLIST_FORMAT_CENTER );
 
 
  379        if( frp.
findString.IsEmpty() || item->Matches( frp, 
nullptr ) )
 
  394            return _( 
"Generator" );
 
  403    return wxEmptyString;
 
 
  410    m_columns.emplace_back( 
_HKI( 
"Name" ),  6, wxLIST_FORMAT_LEFT );
 
  411    m_columns.emplace_back( 
_HKI( 
"Class" ), 6, wxLIST_FORMAT_LEFT );
 
 
  433        if( net && ( aQuery.IsEmpty() || net->Matches( frp, 
nullptr ) ) )
 
 
  448            return _( 
"No Net" );
 
  458    return wxEmptyString;
 
 
  467    std::vector<NETINFO_ITEM*> selectedItems;
 
  469    for( 
long row : aItemRows )
 
  471        if( row >= 0 && row < (
long) 
m_hitlist.size() )
 
  479    m_frame->GetCanvas()->GetView()->UpdateAllLayersColor();
 
  480    m_frame->GetCanvas()->Refresh();
 
 
  486    m_frame->ShowBoardSetupDialog( 
_( 
"Net Classes" ) );
 
 
  493    m_columns.emplace_back( 
_HKI( 
"Name" ),  6, wxLIST_FORMAT_LEFT );
 
  494    m_columns.emplace_back( 
_HKI( 
"Class" ), 6, wxLIST_FORMAT_LEFT );
 
 
  516        if( net == 
nullptr || !net->Matches( frp, 
nullptr ) )
 
 
  536            return _( 
"No Net" );
 
  546    return wxEmptyString;
 
 
  555    std::vector<NETINFO_ITEM*> selectedItems;
 
  557    for( 
long row : aItemRows )
 
  559        if( row >= 0 && row < (
long) 
m_hitlist.size() )
 
  567    m_frame->GetCanvas()->GetView()->UpdateAllLayersColor();
 
  568    m_frame->GetCanvas()->Refresh();
 
 
  574    m_frame->ShowBoardSetupDialog( 
_( 
"Net Classes" ) );
 
 
  582    m_columns.emplace_back( 
_HKI( 
"Count" ),       2, wxLIST_FORMAT_RIGHT );
 
  583    m_columns.emplace_back( 
_HKI( 
"Shape" ),       3, wxLIST_FORMAT_LEFT );
 
  584    m_columns.emplace_back( 
_HKI( 
"X Size" ),      3, wxLIST_FORMAT_CENTER );
 
  585    m_columns.emplace_back( 
_HKI( 
"Y Size" ),      3, wxLIST_FORMAT_CENTER );
 
  586    m_columns.emplace_back( 
_HKI( 
"Plated" ),      2, wxLIST_FORMAT_CENTER );
 
  587    m_columns.emplace_back( 
_HKI( 
"Via/Pad" ),     2, wxLIST_FORMAT_CENTER );
 
  588    m_columns.emplace_back( 
_HKI( 
"Start Layer" ), 4, wxLIST_FORMAT_CENTER );
 
  589    m_columns.emplace_back( 
_HKI( 
"Stop Layer" ),  4, wxLIST_FORMAT_CENTER );
 
 
  612            DRILL_ROW g = { .entry = d, .item = rep, };
 
  621        for( 
PAD* 
pad : fp->Pads() )
 
  623            if( !
pad->HasHole() )
 
  626            int xs = 
pad->GetDrillSize().x;
 
  627            int ys = 
pad->GetDrillSize().y;
 
  628            if( xs <= 0 || ys <= 0 )
 
  633            if( 
pad->GetLayerSet().CuStack().empty() )
 
  640                top = 
pad->GetLayerSet().CuStack().front();
 
  641                bottom = 
pad->GetLayerSet().CuStack().back();
 
  648            addEntryOrIncrement( d, 
pad );
 
  659        int      dmm = 
via->GetDrillValue();
 
  664                           false, 
via->TopLayer(), 
via->BottomLayer() );
 
  665        addEntryOrIncrement( d, 
via );
 
  671                   DRILL_LINE_ITEM::COMPARE cmp( DRILL_LINE_ITEM::COL_COUNT, false );
 
  672                   return cmp( a.entry, b.entry );
 
  676    for( 
size_t i = 0; i < 
m_drills.size(); ++i )
 
 
  694        return wxEmptyString;
 
  696    const auto& e = 
m_drills[it->second].entry;
 
 
  705    std::vector<BOARD_ITEM*> selPtrs;
 
  709        for( 
long row : *aSelection )
 
  711            if( row >= 0 && row < (
long) 
m_hitlist.size() )
 
  721        int col = aCol < 0 ? 0 : aCol;
 
  734        for( 
long row = 0; row < (long) 
m_hitlist.size(); ++row )
 
  737                aSelection->push_back( row );
 
 
  746    std::vector<EDA_ITEM*>          selectedItems;
 
  750    for( 
long row : aItemRows )
 
  752        if( row < 0 || row >= (
long) 
m_hitlist.size() )
 
  761        const auto* target = &
m_drills[it->second].entry;
 
  766            for( 
PAD* 
pad : fp->Pads() )
 
  768                if( !
pad->HasHole() )
 
  771                int          xs = 
pad->GetDrillSize().x;
 
  772                int          ys = 
pad->GetDrillSize().y;
 
  775                if( 
pad->GetLayerSet().CuStack().empty() )
 
  782                    top = 
pad->GetLayerSet().CuStack().front();
 
  783                    bottom = 
pad->GetLayerSet().CuStack().back();
 
  790                    selectedItems.push_back( 
pad );
 
  802                               false, 
via->TopLayer(), 
via->BottomLayer() );
 
  805                selectedItems.push_back( 
via );
 
  812    if( selectedItems.size() )
 
  829    m_frame->GetCanvas()->Refresh( 
false );
 
 
  840        return wxString::Format( 
"%d", e.
m_Qty );
 
  850        return e.
isPad ? 
_( 
"Pad" ) : 
_( 
"Via" );
 
  856        return wxEmptyString;
 
 
  863    if( aQuery.IsEmpty() )
 
  866    for( 
int col = 0; col < 8; ++col )
 
  868        if( 
cellText( e, col ).Lower().Contains( aQuery ) )
 
 
static TOOL_ACTION zoomFitSelection
 
static TOOL_ACTION centerSelection
 
static TOOL_ACTION selectionClear
Clear the current selection.
 
static TOOL_ACTION selectItems
Select a list of items (specified as the event parameter)
 
wxString GetNetname() const
 
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
 
wxString GetLayerName() const
Return the name of the PCB layer on which the item resides.
 
Information pertinent to a Pcbnew printed circuit board.
 
const NETINFO_LIST & GetNetInfo() const
 
const ZONES & Zones() const
 
const GROUPS & Groups() const
The groups must maintain the following invariants.
 
const FOOTPRINTS & Footprints() const
 
const TRACKS & Tracks() const
 
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
 
std::shared_ptr< CONNECTIVITY_DATA > GetConnectivity() const
Return a list of missing connections between components/tracks.
 
const DRAWINGS & Drawings() const
 
RN_NET * GetRatsnestForNet(int aNet)
Function GetRatsnestForNet() Returns the ratsnest, expressed as a set of graph edges for a given net.
 
wxString cellText(const DRILL_LINE_ITEM &e, int col) const
 
std::unordered_map< BOARD_ITEM *, int > m_ptrToDrill
 
void SelectItems(std::vector< long > &aItemRows) override
 
int Search(const wxString &aQuery) override
 
bool rowMatchesQuery(const DRILL_LINE_ITEM &e, const wxString &aQuery) const
 
DRILL_SEARCH_HANDLER(PCB_EDIT_FRAME *aFrame)
 
void Sort(int aCol, bool aAscending, std::vector< long > *aSelection) override
 
std::vector< DRILL_ROW > m_drills
 
wxString getResultCell(BOARD_ITEM *aItem, int aCol) override
 
virtual APP_SETTINGS_BASE * config() const
Return the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.
 
KICAD_T Type() const
Returns the type of object.
 
wxString getResultCell(const SCH_SEARCH_HIT &hit, int aCol) override
 
int Search(const wxString &aQuery) override
 
GROUP_SEARCH_HANDLER(SCH_EDIT_FRAME *aFrame)
 
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
 
void SetHighlight(bool aEnabled, int aNetcode=-1, bool aMulti=false)
Turns on/off highlighting.
 
LSEQ Seq(const LSEQ &aSequence) const
Return an LSEQ from the union of this LSET and a desired sequence.
 
const wxString GetName() const
Gets the name of this (maybe aggregate) netclass in a format for internal usage or for export to exte...
 
Handle the data for a net.
 
const wxString & GetNetname() const
 
void ActivateItem(long aItemRow) override
 
int Search(const wxString &aQuery) override
 
NETS_SEARCH_HANDLER(PCB_EDIT_FRAME *aFrame)
 
wxString getResultCell(BOARD_ITEM *aItem, int aCol) override
 
void SelectItems(std::vector< long > &aItemRows) override
 
static TOOL_ACTION properties
Activation of the edit tool.
 
The main frame for Pcbnew.
 
A set of BOARD_ITEMs (i.e., without duplicates).
 
void ActivateItem(long aItemRow) override
 
PCB_SEARCH_HANDLER(const wxString &aName, PCB_EDIT_FRAME *aFrame)
 
void Sort(int aCol, bool aAscending, std::vector< long > *aSelection) override
 
void SelectItems(std::vector< long > &aItemRows) override
 
std::vector< BOARD_ITEM * > m_hitlist
 
static bool ClassOf(const EDA_ITEM *aItem)
 
static bool ClassOf(const EDA_ITEM *aItem)
 
wxString getResultCell(BOARD_ITEM *aItem, int aCol) override
 
RATSNEST_SEARCH_HANDLER(PCB_EDIT_FRAME *aFrame)
 
int Search(const wxString &aQuery) override
 
void SelectItems(std::vector< long > &aItemRows) override
 
void ActivateItem(long aItemRow) override
 
Describe ratsnest for a single net.
 
const std::vector< CN_EDGE > & GetEdges() const
 
std::vector< SCH_SEARCH_HIT > m_hitlist
 
std::vector< std::tuple< wxString, int, wxListColumnFormat > > m_columns
 
TEXT_SEARCH_HANDLER(SCH_EDIT_FRAME *aFrame)
 
int Search(const wxString &aQuery) override
 
wxString getResultCell(const SCH_SEARCH_HIT &hit, int aCol) override
 
ZONE_SEARCH_HANDLER(PCB_EDIT_FRAME *aFrame)
 
wxString getResultCell(BOARD_ITEM *aItem, int aCol) override
 
int Search(const wxString &aQuery) override
 
Handle a list of polygons defining a copper zone.
 
double GetOutlineArea()
This area is cached from the most recent call to CalculateOutlineArea().
 
bool GetIsRuleArea() const
Accessors to parameters used in Rule Area zones:
 
double GetFilledArea()
This area is cached from the most recent call to CalculateFilledArea().
 
const wxString & GetZoneName() const
 
virtual LSET GetLayerSet() const override
Return a std::bitset of all layers on which the item physically resides.
 
unsigned GetAssignedPriority() const
 
PCB_LAYER_ID
A quick note on layer IDs:
 
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
 
@ NPTH
like PAD_PTH, but not plated mechanical use only, no connection allowed
 
Class to handle a set of BOARD_ITEMs.
 
Class that computes missing connections on a PCB.
 
wxString UnescapeString(const wxString &aSource)
 
SELECTION_ZOOM selection_zoom
 
bool search_hidden_fields
 
EDA_SEARCH_MATCH_MODE matchMode
 
constexpr KICAD_T BaseType(const KICAD_T aType)
Return the underlying type of the given type.
 
@ PCB_GENERATOR_T
class PCB_GENERATOR, generator on a layer
 
@ PCB_VIA_T
class PCB_VIA, a via (like a track segment on a copper layer)
 
@ PCB_GROUP_T
class PCB_GROUP, a set of BOARD_ITEMs
 
@ PCB_TEXTBOX_T
class PCB_TEXTBOX, wrapped text on a layer
 
@ PCB_TEXT_T
class PCB_TEXT, text on a layer
 
@ PCB_TABLECELL_T
class PCB_TABLECELL, PCB_TEXTBOX for use in tables
 
@ PCB_DIMENSION_T
class PCB_DIMENSION_BASE: abstract dimension meta-type