KiCad PCB EDA Suite
Loading...
Searching...
No Matches
panel_setup_constraints.cpp
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2019-2023 KiCad Developers, see AUTHORS.txt for contributors.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, you may find one here:
18 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19 * or you may search the http://www.gnu.org website for the version 2 license,
20 * or you may write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22 */
23
25#include <board.h>
26#include <math/util.h>
29#include <pcb_edit_frame.h>
31#include <wx/treebook.h>
32#include <bitmaps.h>
33
34
36 PANEL_SETUP_CONSTRAINTS_BASE( aParentWindow ),
37 m_minClearance( aFrame, m_clearanceTitle, m_clearanceCtrl, m_clearanceUnits ),
38 m_minConn( aFrame, m_MinConnTitle, m_MinConnCtrl, m_MinConnUnits ),
39 m_trackMinWidth( aFrame, m_TrackMinWidthTitle, m_TrackMinWidthCtrl, m_TrackMinWidthUnits ),
40 m_viaMinAnnulus( aFrame, m_ViaMinAnnulusTitle, m_ViaMinAnnulusCtrl, m_ViaMinAnnulusUnits ),
41 m_viaMinSize( aFrame, m_ViaMinTitle, m_SetViasMinSizeCtrl, m_ViaMinUnits ),
42 m_throughHoleMin( aFrame, m_MinDrillTitle, m_MinDrillCtrl, m_MinDrillUnits ),
43 m_uviaMinSize( aFrame, m_uviaMinSizeLabel, m_uviaMinSizeCtrl, m_uviaMinSizeUnits ),
44 m_uviaMinDrill( aFrame, m_uviaMinDrillLabel, m_uviaMinDrillCtrl, m_uviaMinDrillUnits ),
45 m_holeToHoleMin( aFrame, m_HoleToHoleTitle, m_SetHoleToHoleCtrl, m_HoleToHoleUnits ),
46 m_holeClearance( aFrame, m_HoleClearanceLabel, m_HoleClearanceCtrl, m_HoleClearanceUnits ),
47 m_edgeClearance( aFrame, m_EdgeClearanceLabel, m_EdgeClearanceCtrl, m_EdgeClearanceUnits ),
48 m_silkClearance( aFrame, m_silkClearanceLabel, m_silkClearanceCtrl, m_silkClearanceUnits ),
49 m_minTextHeight( aFrame, m_textHeightLabel, m_textHeightCtrl, m_textHeightUnits ),
50 m_minTextThickness( aFrame, m_textThicknessLabel, m_textThicknessCtrl, m_textThicknessUnits ),
51 m_maxError( aFrame, m_maxErrorTitle, m_maxErrorCtrl, m_maxErrorUnits )
52{
53 m_Frame = aFrame;
55
56 m_filletBitmap->SetBitmap( KiBitmapBundle( BITMAPS::zone_fillet ) );
57 m_spokeBitmap->SetBitmap( KiBitmapBundle( BITMAPS::thermal_spokes ) );
58 m_bitmapClearance->SetBitmap( KiBitmapBundle( BITMAPS::ps_diff_pair_gap ) );
59 m_bitmapMinTrackWidth->SetBitmap( KiBitmapBundle( BITMAPS::width_track ) );
60 m_bitmapMinConn->SetBitmap( KiBitmapBundle( BITMAPS::width_conn ) );
61 m_bitmapMinViaAnnulus->SetBitmap( KiBitmapBundle( BITMAPS::via_annulus ) );
62 m_bitmapMinViaDiameter->SetBitmap( KiBitmapBundle( BITMAPS::via_diameter ) );
63 m_bitmapMinViaDrill->SetBitmap( KiBitmapBundle( BITMAPS::via_hole_diameter ) );
64 m_bitmapMinuViaDiameter->SetBitmap( KiBitmapBundle( BITMAPS::via_diameter ) );
65 m_bitmapMinuViaDrill->SetBitmap( KiBitmapBundle( BITMAPS::via_hole_diameter ) );
66 m_bitmapHoleClearance->SetBitmap( KiBitmapBundle( BITMAPS::hole_to_copper_clearance ) );
67 m_bitmapMinHoleClearance->SetBitmap( KiBitmapBundle( BITMAPS::hole_to_hole_clearance ) );
68 m_bitmapEdgeClearance->SetBitmap( KiBitmapBundle( BITMAPS::edge_to_copper_clearance ) );
69
71
72 wxSize ctrlSize = m_minResolvedSpokeCountCtrl->GetSize();
73 ctrlSize.x = KIUI::GetTextSize( wxT( "XXX" ), m_minResolvedSpokeCountCtrl ).x;
74 m_minResolvedSpokeCountCtrl->SetSize( ctrlSize );
75}
76
77
79{
80 wxString msg;
81 msg.Printf( m_stCircleToPolyWarning->GetLabel(), m_Frame->StringFromValue( ARC_HIGH_DEF, true ) );
82 m_stCircleToPolyWarning->SetLabel( msg );
83
85
87
90
98
101
104
108
109 return true;
110}
111
112
114{
115 if( !m_minClearance.Validate( 0, 10, EDA_UNITS::INCHES ) )
116 return false;
117
118 if( !m_minConn.Validate( 0, 10, EDA_UNITS::INCHES ) )
119 return false;
120
121 if( !m_trackMinWidth.Validate( 0, 10, EDA_UNITS::INCHES ) )
122 return false;
123
124 if( !m_viaMinAnnulus.Validate( 0, 10, EDA_UNITS::INCHES ) )
125 return false;
126
127 if( !m_viaMinSize.Validate( 0, 10, EDA_UNITS::INCHES ) )
128 return false;
129
130 if( !m_holeClearance.Validate( 0, 10, EDA_UNITS::INCHES ) )
131 return false;
132
133 if( !m_edgeClearance.Validate( 0, 10, EDA_UNITS::INCHES ) )
134 return false;
135
136 if( !m_throughHoleMin.Validate( 2, 1000, EDA_UNITS::MILS ) ) // #107 to 1 inch
137 return false;
138
139 if( !m_holeToHoleMin.Validate( 0, 10, EDA_UNITS::INCHES ) )
140 return false;
141
142 // These are all stored in project file, not board, so no need for OnModify()
143
145
149
152
160
163
166
170
171 return true;
172}
173
174
176{
177 BOARD_DESIGN_SETTINGS* savedSettings = m_BrdSettings;
178
179 m_BrdSettings = &aBoard->GetDesignSettings();
181
182 m_BrdSettings = savedSettings;
183}
constexpr int ARC_HIGH_DEF
Definition: base_units.h:121
constexpr EDA_IU_SCALE pcbIUScale
Definition: base_units.h:109
wxBitmapBundle KiBitmapBundle(BITMAPS aBitmap)
Definition: bitmap.cpp:110
#define MAXIMUM_ERROR_SIZE_MM
#define MINIMUM_ERROR_SIZE_MM
Container for design settings for a BOARD object.
bool m_UseHeightForLengthCalcs
Enable inclusion of stackup height in track length measurements and length tuning.
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:276
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition: board.cpp:806
Class PANEL_SETUP_CONSTRAINTS_BASE.
PANEL_SETUP_CONSTRAINTS(wxWindow *aParentWindow, PCB_EDIT_FRAME *aFrame)
BOARD_DESIGN_SETTINGS * m_BrdSettings
void ImportSettingsFrom(BOARD *aBoard)
BOARD * GetBoard() const
The main frame for Pcbnew.
wxString StringFromValue(double aValue, bool aAddUnitLabel=false, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE) const
Converts aValue in internal units into a united string.
virtual long long int GetValue()
Return the current value in Internal Units.
virtual bool Validate(double aMin, double aMax, EDA_UNITS aUnits=EDA_UNITS::UNSCALED)
Validate the control against the given range, informing the user of any errors found.
virtual void SetValue(long long int aValue)
Set new value (in Internal Units) for the text field, taking care of units conversion.
wxFont GetInfoFont(wxWindow *aWindow)
Definition: ui_common.cpp:151
wxSize GetTextSize(const wxString &aSingleLine, wxWindow *aWindow)
Return the size of aSingleLine of text when it is rendered in aWindow using whatever font is currentl...
Definition: ui_common.cpp:74
const double IU_PER_MM
Definition: base_units.h:77