59 m_arrowLength( aFrame, m_lblArrowLength, m_dimensionArrowLength, m_arrowLengthUnits ),
60 m_extensionOffset( aFrame, m_lblExtensionOffset, m_dimensionExtensionOffset,
61 m_dimensionExtensionOffsetUnits )
71 m_grid->SetDefaultRowSize(
m_grid->GetDefaultRowSize() + FromDIP( 4 ) );
72 m_grid->SetUseNativeColLabels();
82 int min_best_width =
m_grid->GetTextExtent( wxT(
"555,555555 mils" ) ).x;
84 for(
int i = 0; i <
m_grid->GetNumberCols(); ++i )
90 m_grid->SetColMinimalWidth( i, min_width );
93 m_grid->SetColSize( i, std::max( min_width, min_best_width ) );
105 m_grid->PopEventHandler(
true );
129 wxColour disabledColour = wxSystemSettings::GetColour( wxSYS_COLOUR_FRAMEBK );
131#define SET_MILS_CELL( row, col, val ) \
132 m_grid->SetCellValue( row, col, m_Frame->StringFromValue( val, true ) )
134#define DISABLE_CELL( row, col ) \
135 m_grid->SetReadOnly( row, col ); m_grid->SetCellBackgroundColour( row, col, disabledColour );
159 auto attr =
new wxGridCellAttr;
160 attr->SetRenderer(
new wxGridCellBoolRenderer() );
162 attr->SetAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
165 attr =
new wxGridCellAttr;
166 attr->SetRenderer(
new wxGridCellBoolRenderer() );
168 attr->SetAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
174 for(
int col = 0; col <
m_grid->GetNumberCols(); col++ )
212 bool badParam =
false;
216 if( lineWidth < minWidth || lineWidth > maxWidth )
218 if( !errorsMsg.IsEmpty() )
219 errorsMsg += wxT(
"\n\n" );
221 errorsMsg += wxString::Format(
_(
"%s: Incorrect line width.\n"
222 "It must be between %s and %s" ),
223 m_grid->GetRowLabelValue( i ),
241 || textWidth > maxSize || textHeight > maxSize )
243 if( !errorsMsg.IsEmpty() )
244 errorsMsg += wxT(
"\n\n" );
246 errorsMsg += wxString::Format(
_(
"%s: Text size is incorrect.\n"
247 "Size must be between %s and %s" ),
248 m_grid->GetRowLabelValue( i ),
255 int textMaxThickness = std::min( maxWidth, std::min( textWidth, textHeight ) /4);
257 if( !badParam && ( textThickness < minWidth || textThickness > textMaxThickness ) )
259 if( !errorsMsg.IsEmpty() )
260 errorsMsg += wxT(
"\n\n" );
263 if( textThickness > textMaxThickness )
264 errorsMsg += wxString::Format(
_(
"%s: Text thickness is too large.\n"
265 "It will be truncated to %s" ),
266 m_grid->GetRowLabelValue( i ),
269 else if( textThickness < minWidth )
270 errorsMsg += wxString::Format(
_(
"%s: Text thickness is too small.\n"
271 "It will be truncated to %s" ),
272 m_grid->GetRowLabelValue( i ),
275 textThickness = std::min( textThickness, textMaxThickness );
276 textThickness = std::max( textThickness, minWidth );
308 if( errorsMsg.IsEmpty() )
312 _(
"Parameter error" ) );
constexpr EDA_IU_SCALE pcbIUScale
#define MINIMUM_LINE_WIDTH_MM
#define MAXIMUM_LINE_WIDTH_MM
Container for design settings for a BOARD object.
DIM_PRECISION m_DimensionPrecision
Number of digits after the decimal.
DIM_UNITS_FORMAT m_DimensionUnitsFormat
bool m_TextUpright[LAYER_CLASS_COUNT]
bool m_DimensionSuppressZeroes
int m_TextThickness[LAYER_CLASS_COUNT]
int m_LineThickness[LAYER_CLASS_COUNT]
bool m_DimensionKeepTextAligned
VECTOR2I m_TextSize[LAYER_CLASS_COUNT]
bool m_TextItalic[LAYER_CLASS_COUNT]
DIM_TEXT_POSITION m_DimensionTextPosition
DIM_UNITS_MODE m_DimensionUnitsMode
int m_DimensionExtensionOffset
int m_DimensionArrowLength
Information pertinent to a Pcbnew printed circuit board.
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Add mouse and command handling (such as cut, copy, and paste) to a WX_GRID instance.
Helper class to create more flexible dialogs, including 'do not show again' checkbox handling.
Class PANEL_SETUP_TEXT_AND_GRAPHICS_BASE.
wxChoice * m_dimensionUnitsFormat
wxChoice * m_dimensionUnits
wxCheckBox * m_dimensionSuppressZeroes
wxCheckBox * m_dimensionTextKeepAligned
wxChoice * m_dimensionTextPositionMode
wxChoice * m_dimensionPrecision
bool TransferDataToWindow() override
UNIT_BINDER m_extensionOffset
bool TransferDataFromWindow() override
PANEL_SETUP_TEXT_AND_GRAPHICS(wxWindow *aParentWindow, PCB_EDIT_FRAME *aFrame)
BOARD_DESIGN_SETTINGS * m_BrdSettings
~PANEL_SETUP_TEXT_AND_GRAPHICS() override
void ImportSettingsFrom(BOARD *aBoard)
UNIT_BINDER m_arrowLength
void onUnitsChanged(wxCommandEvent &aEvent)
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 void SetValue(long long int aValue)
Set new value (in Internal Units) for the text field, taking care of units conversion.
int GetVisibleWidth(int aCol, bool aHeader=true, bool aContents=true, bool aKeep=false)
Calculates the specified column based on the actual size of the text on screen.
int GetUnitValue(int aRow, int aCol)
Apply standard KiCad unit and eval services to a numeric cell.
void SetAutoEvalCols(const std::vector< int > &aCols)
void SetUnitsProvider(UNITS_PROVIDER *aProvider, int aCol=0)
Set a UNITS_PROVIDER to enable use of unit- and eval-based Getters.
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
const int minSize
Push and Shove router track width and via size dialog.
#define TEXT_MIN_SIZE_MM
Minimum text size (1 micron).
#define TEXT_MAX_SIZE_MM
Maximum text size in mm (~10 inches)
This file is part of the common library.
#define SET_MILS_CELL(row, col, val)
#define DISABLE_CELL(row, col)
DIM_TEXT_POSITION
Where to place the text on a dimension.
DIM_UNITS_FORMAT
How to display the units in a dimension's text.
DIM_UNITS_MODE
Used for storing the units selection in the file because EDA_UNITS alone doesn't cut it.
constexpr int mmToIU(double mm) const
VECTOR2< int32_t > VECTOR2I