30#include <wx/dcmemory.h>
32#include <wx/variant.h>
42 [&](
ZONE*
const& l,
ZONE*
const& r )
44 return m_zoneSettingsBag.GetZonePriority( l ) > m_zoneSettingsBag.GetZonePriority( r );
51 wxCommandEvent rowCountChange( EVT_ZONES_OVERVIEW_COUNT_CHANGE );
53 wxPostEvent(
m_parent, rowCountChange );
59 wxBitmap bitmap( aSize );
64 iconDC.SelectObject( bitmap );
65 brush.SetStyle( wxBRUSHSTYLE_SOLID );
66 const int layer_cout = layers.size();
67 std::vector<PCB_LAYER_ID> layersToDraw;
71 for(
const PCB_LAYER_ID& i : { layers[0], layers[1], layers[layer_cout - 1], layers[layer_cout - 2] } )
72 layersToDraw.push_back( i );
76 layersToDraw = layers;
79 const int step =
static_cast<int>( aSize.y / layersToDraw.size() );
81 for(
size_t i = 0; i < layersToDraw.size(); ++i )
86 iconDC.SetBrush( brush );
88 iconDC.DrawRectangle( 0, i * step, aSize.x, step );
127 wxArrayString layers;
130 layers.Add(
m_frame->GetBoard()->GetLayerName( layer ) );
132 aVariant << wxDataViewIconText( wxJoin( layers,
',' ),
173 unsigned int aRow = GetRow( aItem );
214 return std::optional<unsigned>{};
220 for(
const unsigned i : { aDragIndex, aDropIndex } )
226 if( aDragIndex == aDropIndex )
232 for(
const unsigned int row : { aDragIndex, aDropIndex } )
244 wxString lowerFilterText = aFilterText.Strip( wxString::both ).Lower();
246 if( lowerFilterText.empty() )
254 if( (
m_sortByName && zone->GetZoneName().Lower().Contains( lowerFilterText ) )
255 || (
m_sortByNet && zone->GetNetname().Lower().Contains( lowerFilterText ) ) )
NETINFO_ITEM * GetNet() const
Return #NET_INFO object for a given item.
Color settings are a bit different than most of the settings objects in that there can be more than o...
COLOR4D GetColor(int aLayer) const
A color representation with 4 components: red, green, blue, alpha.
wxColour ToColour() const
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
LSEQ UIOrder() const
Return the copper, technical and user layers in the order shown in layer widget.
LSEQ Seq(const LSEQ &aSequence) const
Return an LSEQ from the union of this LSET and a desired sequence.
bool SetValueByRow(const wxVariant &aVariant, unsigned aRow, unsigned aCol) override
void EnableFitterByNet(bool aEnable)
void GetValueByRow(wxVariant &aVariant, unsigned aRow, unsigned aCol) const override
std::optional< unsigned > SwapZonePriority(unsigned aDragIndex, unsigned aDropIndex)
Swap two zone while drag && drop.
MODEL_ZONES_OVERVIEW(wxWindow *aParent, PCB_BASE_FRAME *aFrame, ZONE_SETTINGS_BAG &aZoneSettingsBag)
wxDataViewItem ClearFilter(wxDataViewItem aSelection)
Clear up the filter.
ZONE * GetZone(wxDataViewItem const &item) const
wxDataViewItem GetItemByZone(ZONE *) const
std::vector< ZONE * > m_filteredZones
std::optional< unsigned > MoveZoneIndex(unsigned aIndex, ZONE_INDEX_MOVEMENT aMovement)
Move selected zone up/down.
void EnableFitterByName(bool aEnable)
unsigned int GetCount() const override
wxDataViewItem ApplyFilter(wxString const &aFilterText, wxDataViewItem aSelection)
Filter the zones by the filter text.
ZONE_SETTINGS_BAG & m_zoneSettingsBag
const wxString & GetNetname() const
Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
Handle a list of polygons defining a copper zone.
const wxString & GetZoneName() const
virtual LSET GetLayerSet() const override
Return a std::bitset of all layers on which the item physically resides.
PCB_LAYER_ID
A quick note on layer IDs:
wxDEFINE_EVENT(EVT_ZONES_OVERVIEW_COUNT_CHANGE, wxCommandEvent)
static wxBitmap MakeBitmapForLayers(LSEQ const &layers, COLOR_SETTINGS const &settings, const wxSize &aSize)