70 [
this]( wxCommandEvent& aEvent )
75 [
this]( wxCommandEvent& aEvent )
80 [
this]( wxCommandEvent& aEvent )
85 m_trackWidthsGrid->SetSelectionMode( wxGrid::wxGridSelectionModes::wxGridSelectRows );
86 m_viaSizesGrid->SetSelectionMode( wxGrid::wxGridSelectionModes::wxGridSelectRows );
87 m_diffPairsGrid->SetSelectionMode( wxGrid::wxGridSelectionModes::wxGridSelectRows );
103 int min_linesize =
m_trackWidthsGrid->GetTextExtent( wxT(
"000.000000 mm " ) ).x;
105 for(
int ii = 0; grid_list[ii]; ii++ )
107 WX_GRID* curr_grid = grid_list[ii];
109 for(
int col = 0; col < curr_grid->GetNumberCols(); col++ )
112 int best_w = std::max( min_linesize, min_w );
113 curr_grid->SetColMinimalWidth( col, best_w );
114 curr_grid->SetColSize( col,best_w );
138 std::vector<int> trackWidths;
151 trackWidths.push_back(
m_Frame->ValueFromString( msg ) );
154 std::sort( trackWidths.begin(), trackWidths.end() );
157 for(
int width : trackWidths )
167 std::vector<VIA_DIMENSION> vias;
189 vias.push_back( via_dim );
193 std::sort( vias.begin(), vias.end() );
207 std::vector<DIFF_PAIR_DIMENSION> diffPairs;
231 diffPairs.push_back( diffPair_dim );
235 std::sort( diffPairs.begin(), diffPairs.end() );
266 for(
unsigned ii = 1; ii <
m_BrdSettings->m_TrackWidthList.size(); ii++ )
272 for(
unsigned ii = 1; ii <
m_BrdSettings->m_ViasDimensionsList.size(); ii++ )
279 for(
unsigned ii = 1; ii <
m_BrdSettings->m_DiffPairDimensionsList.size(); ii++ )
295 std::vector<int> trackWidths;
296 std::vector<VIA_DIMENSION> vias;
297 std::vector<DIFF_PAIR_DIMENSION> diffPairs;
317 vias.push_back( via_dim );
334 diffPairs.push_back( diffPair_dim );
339 sort( trackWidths.begin(), trackWidths.end() );
340 sort( vias.begin(), vias.end() );
341 sort( diffPairs.begin(), diffPairs.end() );
345 trackWidths.insert( trackWidths.begin(), 0 );
348 vias.insert( vias.begin(), { 0, 0 } );
351 diffPairs.insert( diffPairs.begin(), { 0, 0, 0 } );
379 std::optional<int> viaDiameter;
381 if( !viaDia.IsEmpty() )
384 std::optional<int> viaDrillSize;
386 if( !viaDrill.IsEmpty() )
389 if( std::optional<PCB_VIA::VIA_PARAMETER_ERROR> error =
401 msg = error->m_Message;
405 if( error->m_Field == PCB_VIA::VIA_PARAMETER_ERROR::FIELD::DRILL )
437 const wxString diffPairPrefix = wxS(
"diff_pair_dimensions_list[" );
442 if( !error.setting_name.StartsWith( diffPairPrefix ) )
445 wxString remainder = error.setting_name.Mid( diffPairPrefix.length() );
448 if( !remainder.BeforeFirst(
']' ).ToLong( &listIndex ) || listIndex <= 0 )
454 int row =
static_cast<int>( listIndex ) - 1;
457 if( error.setting_name.EndsWith( wxS(
".width" ) ) )
459 else if( error.setting_name.EndsWith( wxS(
".via_gap" ) ) )
462 if( row >= 0 && row < m_diffPairsGrid->GetNumberRows() )
516 [&]() -> std::pair<int, int>
537 [&]() -> std::pair<int, int>
558 [&]() -> std::pair<int, int>
wxBitmapBundle KiBitmapBundle(BITMAPS aBitmap, int aMinHeight)
Container for design settings for a BOARD object.
std::vector< DIFF_PAIR_DIMENSION > m_DiffPairDimensionsList
std::vector< VALIDATION_ERROR > ValidateDesignRules(std::optional< EDA_UNITS > aUnits=std::nullopt) const
Validate design settings values and return per-field errors.
Information pertinent to a Pcbnew printed circuit board.
BOARD_DESIGN_SETTINGS & GetDesignSettings()
Add mouse and command handling (such as cut, copy, and paste) to a WX_GRID instance.
static PAGED_DIALOG * GetDialog(wxWindow *aWindow)
void SetError(const wxString &aMessage, const wxString &aPageName, int aCtrlId, int aRow=-1, int aCol=-1)
STD_BITMAP_BUTTON * m_trackWidthsAddButton
WX_GRID * m_trackWidthsGrid
WX_GRID * m_diffPairsGrid
STD_BITMAP_BUTTON * m_diffPairsAddButton
PANEL_SETUP_TRACKS_AND_VIAS_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxTAB_TRAVERSAL, const wxString &name=wxEmptyString)
STD_BITMAP_BUTTON * m_trackWidthsSortButton
STD_BITMAP_BUTTON * m_trackWidthsRemoveButton
STD_BITMAP_BUTTON * m_viaSizesRemoveButton
STD_BITMAP_BUTTON * m_diffPairsSortButton
STD_BITMAP_BUTTON * m_viaSizesAddButton
STD_BITMAP_BUTTON * m_viaSizesSortButton
STD_BITMAP_BUTTON * m_diffPairsRemoveButton
void OnRemoveViaSizesClick(wxCommandEvent &event) override
bool TransferDataToWindow() override
PANEL_SETUP_TRACKS_AND_VIAS(wxWindow *aParentWindow, PCB_EDIT_FRAME *aFrame)
void OnRemoveDiffPairsClick(wxCommandEvent &event) override
void OnSortTrackWidthsClick(wxCommandEvent &event) override
bool commitPendingChanges(bool aQuietMode=false)
~PANEL_SETUP_TRACKS_AND_VIAS() override
void onUnitsChanged(wxCommandEvent &aEvent)
void OnSortViaSizesClick(wxCommandEvent &event) override
void AppendTrackWidth(int aWidth)
void OnAddViaSizesClick(wxCommandEvent &event) override
void ImportSettingsFrom(BOARD *aBoard)
void OnSortDiffPairsClick(wxCommandEvent &event) override
void OnRemoveTrackWidthsClick(wxCommandEvent &event) override
bool TransferDataFromWindow() override
void OnAddDiffPairsClick(wxCommandEvent &event) override
BOARD_DESIGN_SETTINGS * m_BrdSettings
void AppendDiffPairs(int aWidth, int aGap, int aViaGap)
void OnAddTrackWidthsClick(wxCommandEvent &event) override
void AppendViaSize(int aSize, int aDrill)
The main frame for Pcbnew.
static std::optional< VIA_PARAMETER_ERROR > ValidateViaParameters(std::optional< int > aDiameter, std::optional< int > aPrimaryDrill, std::optional< PCB_LAYER_ID > aPrimaryStartLayer=std::nullopt, std::optional< PCB_LAYER_ID > aPrimaryEndLayer=std::nullopt, std::optional< int > aSecondaryDrill=std::nullopt, std::optional< PCB_LAYER_ID > aSecondaryStartLayer=std::nullopt, std::optional< PCB_LAYER_ID > aSecondaryEndLayer=std::nullopt, std::optional< int > aTertiaryDrill=std::nullopt, std::optional< PCB_LAYER_ID > aTertiaryStartLayer=std::nullopt, std::optional< PCB_LAYER_ID > aTertiaryEndLayer=std::nullopt, int aCopperLayerCount=0)
int GetVisibleWidth(int aCol, bool aHeader=true, bool aContents=true, bool aKeep=false)
Calculate the specified column based on the actual size of the text on screen.
Container to handle a stock of specific differential pairs each with unique track width,...
Container to handle a stock of specific vias each with unique diameter and drill sizes in the BOARD c...