30#include <wx/dcmemory.h>
32#include <wx/variant.h>
42 []( std::shared_ptr<MANAGED_ZONE>
const& l, std::shared_ptr<MANAGED_ZONE>
const& r )
44 return l->GetCurrentPriority() > r->GetCurrentPriority();
51 wxCommandEvent rowCountChange( EVT_ZONES_OVERVIEW_COUNT_CHANGE );
53 wxPostEvent(
m_dialog, rowCountChange );
60 wxBitmap bitmap( aSize );
65 iconDC.SelectObject( bitmap );
66 brush.SetStyle( wxBRUSHSTYLE_SOLID );
67 const int layer_cout = layers.size();
68 std::vector<PCB_LAYER_ID> layersToDraw;
74 layers[layer_cout - 1],
75 layers[layer_cout - 2] } )
77 layersToDraw.push_back( i );
82 layersToDraw = layers;
85 const int step =
static_cast<int>( aSize.x / layersToDraw.size() );
87 for(
size_t i = 0; i < layersToDraw.size(); ++i )
90 brush.SetColour(
color.ToColour() );
91 pen.SetColour(
color.ToColour() );
92 iconDC.SetBrush( brush );
94 iconDC.DrawRectangle( 0, i * step, aSize.x, step );
103 wxWindow* a_dialog ) :
104 m_allZones( aZones ),
105 m_filteredZones(
std::
move( aZones ) ),
107 m_PCB_FRAME( aPCB_FRAME ),
108 m_dialog( a_dialog ),
109 m_sortByName( true ),
120 unsigned aCol )
const
139 wxArrayString layers;
145 aVariant << wxDataViewIconText( wxJoin( layers,
',' ),
188 unsigned int aRow = GetRow( aItem );
217 case ZONE_INDEX_MOVEMENT::MOVE_UP:
223 case ZONE_INDEX_MOVEMENT::MOVE_DOWN:
230 return std::optional<unsigned>{};
235 unsigned aDropIndex )
237 for(
const unsigned i : { aDragIndex, aDropIndex } )
243 if( aDragIndex == aDropIndex )
250 for(
const unsigned int row : { aDragIndex, aDropIndex } )
258 wxDataViewItem aSelection )
263 wxString lowerFilterText = aFilterText.Strip( wxString::both ).Lower();
265 if( lowerFilterText.empty() )
273 const ZONE zone = container->GetZone();
wxString GetNetname() const
NETINFO_ITEM * GetNet() const
Return #NET_INFO object for a given item.
Information pertinent to a Pcbnew printed circuit board.
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
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.
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
LSEQ Seq(const LSEQ &aSequence) const
Return an LSEQ from the union of this LSET and a desired sequence.
void EnableFitterByNet(bool aEnable)
bool SetValueByRow(const wxVariant &aVariant, unsigned aRow, unsigned aCol) override
std::optional< unsigned > MoveZoneIndex(unsigned aIndex, ZONE_INDEX_MOVEMENT aMovement)
Move selected zone up/down.
~MODEL_ZONES_OVERVIEW_TABLE() override
wxDataViewItem ApplyFilter(wxString const &aFilterText, wxDataViewItem aSelection)
Filter the zones by the filter text.
void GetValueByRow(wxVariant &aVariant, unsigned aRow, unsigned aCol) const override
std::vector< std::shared_ptr< MANAGED_ZONE > > m_filteredZones
void SortZoneContainers()
ZONE * GetZone(wxDataViewItem const &item) const
unsigned int GetAllZonesCount() const
std::vector< std::shared_ptr< MANAGED_ZONE > > m_allZones
std::optional< unsigned > SwapZonePriority(unsigned aDragIndex, unsigned aDropIndex)
Swap two zone while drag && drop.
wxDataViewItem GetItemByZone(ZONE *) const
wxDataViewItem ClearFilter(wxDataViewItem aSelection)
Clear up the filter.
PCB_BASE_FRAME * m_PCB_FRAME
void EnableFitterByName(bool aEnable)
unsigned int GetCount() const override
MODEL_ZONES_OVERVIEW_TABLE(std::vector< std::shared_ptr< MANAGED_ZONE > > aZones, BOARD *a_pcb, PCB_BASE_FRAME *aPCB_FRAME, wxWindow *a_dialog)
const wxString & GetNetname() const
Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
virtual COLOR_SETTINGS * GetColorSettings(bool aForceRefresh=false) const override
Helper to retrieve the current color settings.
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)