KiCad PCB EDA Suite
Loading...
Searching...
No Matches
pcbnew/dialogs/dialog_text_properties.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) 2004-2018 Jean-Pierre Charras jp.charras at wanadoo.fr
5 * Copyright (C) 2010-2024 KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, you may find one here:
19 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20 * or you may search the http://www.gnu.org website for the version 2 license,
21 * or you may write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 */
24
26#include <widgets/font_choice.h>
28#include <confirm.h>
29#include <board_commit.h>
30#include <board.h>
31#include <footprint.h>
32#include <pcb_text.h>
33#include <project.h>
34#include <pcb_edit_frame.h>
36#include <wx/valnum.h>
37#include <scintilla_tricks.h>
38
39
42 m_frame( aParent ),
43 m_item( aText ),
44 m_textWidth( aParent, m_SizeXLabel, m_SizeXCtrl, m_SizeXUnits ),
45 m_textHeight( aParent, m_SizeYLabel, m_SizeYCtrl, m_SizeYUnits ),
46 m_thickness( aParent, m_ThicknessLabel, m_ThicknessCtrl, m_ThicknessUnits ),
47 m_posX( aParent, m_PositionXLabel, m_PositionXCtrl, m_PositionXUnits ),
48 m_posY( aParent, m_PositionYLabel, m_PositionYCtrl, m_PositionYUnits ),
49 m_orientation( aParent, m_OrientLabel, m_OrientCtrl, nullptr )
50{
51 wxString title;
52
53 // Configure display origin transforms
55 {
58 }
59 else
60 {
63 }
64
65 m_MultiLineText->SetEOLMode( wxSTC_EOL_LF );
66
67#ifdef _WIN32
68 // Without this setting, on Windows, some esoteric unicode chars create display issue
69 // in a wxStyledTextCtrl.
70 // for SetTechnology() info, see https://www.scintilla.org/ScintillaDoc.html#SCI_SETTECHNOLOGY
71 m_MultiLineText->SetTechnology(wxSTC_TECHNOLOGY_DIRECTWRITE);
72#endif
73
74 m_scintillaTricks = new SCINTILLA_TRICKS( m_MultiLineText, wxT( "{}" ), false,
75 // onAcceptFn
76 [this]( wxKeyEvent& aEvent )
77 {
78 wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
79 },
80 // onCharFn
81 [this]( wxStyledTextEvent& aEvent )
82 {
84 // getTokensFn
85 [this]( const wxString& xRef, wxArrayString* tokens )
86 {
87 m_frame->GetContextualTextVars( m_item, xRef, tokens );
88 } );
89 } );
90
91 // A hack which causes Scintilla to auto-size the text editor canvas
92 // See: https://github.com/jacobslusser/ScintillaNET/issues/216
93 m_MultiLineText->SetScrollWidth( 1 );
94 m_MultiLineText->SetScrollWidthTracking( true );
95
97 {
98 m_PositionXLabel->SetLabel( _( "Offset X:" ) );
99 m_PositionYLabel->SetLabel( _( "Offset Y:" ) );
100
101 if( m_item->Type() == PCB_FIELD_T )
102 {
103 PCB_FIELD* field = static_cast<PCB_FIELD*>( m_item );
104
105 if( field->IsReference() )
106 {
107 title = _( "Footprint Reference Properties" );
108 m_TextLabel->SetLabel( _( "Reference:" ) );
109 }
110 else if( field->IsValue() )
111 {
112 title = _( "Footprint Value Properties" );
113 m_TextLabel->SetLabel( _( "Value:" ) );
114 }
115 else
116 {
117 title = _( "Footprint Field Properties" );
118 m_TextLabel->SetLabel( _( "Text:" ) );
119 }
120 }
121 else
122 {
123 title = _( "Footprint Text Properties" );
124 m_TextLabel->SetLabel( _( "Text:" ) );
125 }
126
128 m_MultiLineSizer->Show( false );
129
130 // Do not allow locking items in the footprint editor
131 m_cbLocked->Show( false );
132
133 m_tabOrder = {
139 m_Visible,
147 };
148 }
149 else
150 {
151 title = _( "Text Properties" );
152
154 m_SingleLineSizer->Show( false );
155
156 // This option makes sense only for footprint texts; texts on board are always visible.
157 m_Visible->SetValue( true );
158 m_Visible->Show( false );
159
160 m_KeepUpright->Show( false );
161 m_statusLine->Show( false );
162
163 m_tabOrder = {
176 };
177 }
178
180 m_bold->SetBitmap( KiBitmapBundle( BITMAPS::text_bold ) );
182 m_italic->SetBitmap( KiBitmapBundle( BITMAPS::text_italic ) );
183
185
187 m_alignLeft->SetBitmap( KiBitmapBundle( BITMAPS::text_align_left ) );
189 m_alignCenter->SetBitmap( KiBitmapBundle( BITMAPS::text_align_center ) );
191 m_alignRight->SetBitmap( KiBitmapBundle( BITMAPS::text_align_right ) );
192
194
196 m_valignBottom->SetBitmap( KiBitmapBundle( BITMAPS::text_valign_bottom ) );
198 m_valignCenter->SetBitmap( KiBitmapBundle( BITMAPS::text_valign_center ) );
200 m_valignTop->SetBitmap( KiBitmapBundle( BITMAPS::text_valign_top ) );
201
203
205 m_mirrored->SetBitmap( KiBitmapBundle( BITMAPS::text_mirrored ) );
206
207 SetTitle( title );
208 m_hash_key = title;
209
210 // Configure the layers list selector. Note that footprints are built outside the current
211 // board and so we may need to show all layers if the text is on an unactivated layer.
212 if( !m_frame->GetBoard()->IsLayerEnabled( m_item->GetLayer() ) )
214
218
219 m_orientation.SetUnits( EDA_UNITS::DEGREES );
221
222 // Set predefined rotations in combo dropdown, according to the locale floating point
223 // separator notation
224 double rot_list[] = { 0.0, 90.0, -90.0, 180.0 };
225
226 for( size_t ii = 0; ii < m_OrientCtrl->GetCount() && ii < 4; ++ii )
227 m_OrientCtrl->SetString( ii, wxString::Format( wxT( "%.1f" ), rot_list[ii] ) );
228
229 // Set font sizes
230 m_statusLine->SetFont( KIUI::GetInfoFont( this ) );
231
233
234 // wxTextCtrls fail to generate wxEVT_CHAR events when the wxTE_MULTILINE flag is set,
235 // so we have to listen to wxEVT_CHAR_HOOK events instead.
236 Connect( wxEVT_CHAR_HOOK, wxKeyEventHandler( DIALOG_TEXT_PROPERTIES::OnCharHook ),
237 nullptr, this );
238
240}
241
242
244{
245 Disconnect( wxEVT_CHAR_HOOK, wxKeyEventHandler( DIALOG_TEXT_PROPERTIES::OnCharHook ),
246 nullptr, this );
247
248 delete m_scintillaTricks;
249}
250
251
253{
254 DIALOG_TEXT_PROPERTIES dlg( this, aText );
255
256 // QuasiModal required for Scintilla auto-complete
257 dlg.ShowQuasiModal();
258}
259
260
261void DIALOG_TEXT_PROPERTIES::OnSetFocusText( wxFocusEvent& event )
262{
263 if( m_item->Type() == PCB_FIELD_T && static_cast<PCB_FIELD*>( m_item )->IsReference() )
264 {
265#ifdef __WXGTK__
266 // Force an update of the text control before setting the text selection
267 // This is needed because GTK seems to ignore the selection on first update
268 //
269 // Note that we can't do this on OSX as it tends to provoke Apple's
270 // "[NSAlert runModal] may not be invoked inside of transaction begin/commit pair"
271 // bug. See: https://bugs.launchpad.net/kicad/+bug/1837225
272 m_SingleLineText->Update();
273#endif
274 KIUI::SelectReferenceNumber( static_cast<wxTextEntry*>( m_SingleLineText ) );
275 }
276 else
277 m_SingleLineText->SetSelection( -1, -1 );
278
279 event.Skip();
280}
281
282
284{
285 BOARD* board = m_frame->GetBoard();
286 FOOTPRINT* parentFP = m_item->GetParentFootprint();
287 wxString msg = board->ConvertKIIDsToCrossReferences( UnescapeString( m_item->GetText() ) );
288
289 if( m_SingleLineText->IsShown() )
290 {
291 m_SingleLineText->SetValue( msg );
292
293 if( m_item->Type() == PCB_FIELD_T && static_cast<PCB_FIELD*>( m_item )->IsReference() )
294 KIUI::SelectReferenceNumber( static_cast<wxTextEntry*>( m_SingleLineText ) );
295 else
296 m_SingleLineText->SetSelection( -1, -1 );
297 }
298 else if( m_MultiLineText->IsShown() )
299 {
300 m_MultiLineText->SetValue( msg );
301 m_MultiLineText->SetSelection( -1, -1 );
302 m_MultiLineText->EmptyUndoBuffer();
303 }
304
305 if( parentFP )
306 {
307 m_statusLine->SetLabel( wxString::Format( _( "Footprint %s (%s), %s, rotated %.1f deg"),
308 parentFP->GetReference(),
309 parentFP->GetValue(),
310 parentFP->IsFlipped() ? _( "back side (mirrored)" )
311 : _( "front side" ),
312 parentFP->GetOrientation().AsDegrees() ) );
313 }
314 else
315 {
316 m_statusLine->Show( false );
317 }
318
319 m_cbLocked->SetValue( m_item->IsLocked() );
320
322 m_cbKnockout->SetValue( m_item->IsKnockout() );
323
325
331
332 m_Visible->SetValue( m_item->IsVisible() );
333
334 if( parentFP )
335 m_KeepUpright->SetValue( m_item->IsKeepUpright() );
336
337 m_bold->Check( m_item->IsBold() );
339
340 switch ( m_item->GetHorizJustify() )
341 {
342 case GR_TEXT_H_ALIGN_LEFT: m_alignLeft->Check( true ); break;
343 case GR_TEXT_H_ALIGN_CENTER: m_alignCenter->Check( true ); break;
344 case GR_TEXT_H_ALIGN_RIGHT: m_alignRight->Check( true ); break;
346 }
347
348 switch ( m_item->GetVertJustify() )
349 {
350 case GR_TEXT_V_ALIGN_BOTTOM: m_valignBottom->Check( true ); break;
351 case GR_TEXT_V_ALIGN_CENTER: m_valignCenter->Check( true ); break;
352 case GR_TEXT_V_ALIGN_TOP: m_valignTop->Check( true ); break;
354 }
355
357
358 EDA_ANGLE orientation = m_item->GetTextAngle();
360
361 return DIALOG_TEXT_PROPERTIES_BASE::TransferDataToWindow();
362}
363
364
365void DIALOG_TEXT_PROPERTIES::onFontSelected( wxCommandEvent & aEvent )
366{
367 if( KIFONT::FONT::IsStroke( aEvent.GetString() ) )
368 {
369 m_thickness.Show( true );
370 m_buttonUpdateTh->Show( true );
371
372 int textSize = std::min( m_textWidth.GetValue(), m_textHeight.GetValue() );
373 int thickness = m_thickness.GetValue();
374
375 m_bold->Check( abs( thickness - GetPenSizeForBold( textSize ) )
376 < abs( thickness - GetPenSizeForNormal( textSize ) ) );
377 }
378 else
379 {
380 m_thickness.Show( false );
381 m_buttonUpdateTh->Show( false );
382 }
383}
384
385
386void DIALOG_TEXT_PROPERTIES::onBoldToggle( wxCommandEvent & aEvent )
387{
388 int textSize = std::min( m_textWidth.GetValue(), m_textHeight.GetValue() );
389
390 if( aEvent.IsChecked() )
392 else
394
395 aEvent.Skip();
396}
397
398
399void DIALOG_TEXT_PROPERTIES::onAlignButton( wxCommandEvent& aEvent )
400{
402 {
403 if( btn->IsChecked() && btn != aEvent.GetEventObject() )
404 btn->Check( false );
405 }
406}
407
408
409void DIALOG_TEXT_PROPERTIES::onValignButton( wxCommandEvent& aEvent )
410{
412 {
413 if( btn->IsChecked() && btn != aEvent.GetEventObject() )
414 btn->Check( false );
415 }
416}
417
418
419void DIALOG_TEXT_PROPERTIES::onThickness( wxCommandEvent& event )
420{
421 int textSize = std::min( m_textWidth.GetValue(), m_textHeight.GetValue() );
422 int thickness = m_thickness.GetValue();
423
424 m_bold->Check( abs( thickness - GetPenSizeForBold( textSize ) )
425 < abs( thickness - GetPenSizeForNormal( textSize ) ) );
426}
427
428
430{
431 int textSize = std::min( m_textWidth.GetValue(), m_textHeight.GetValue() );
432 int thickness;
433
434 // Calculate the "best" thickness from text size and bold option:
435 if( m_bold->IsChecked() )
436 thickness = GetPenSizeForBold( textSize );
437 else
438 thickness = GetPenSizeForNormal( textSize );
439
440 m_thickness.SetValue( thickness );
441}
442
443
445{
446 if( !DIALOG_TEXT_PROPERTIES_BASE::TransferDataFromWindow() )
447 return false;
448
450 int maxSize = pcbIUScale.mmToIU( TEXT_MAX_SIZE_MM );
451
452 if( !m_textWidth.Validate( minSize, maxSize ) || !m_textHeight.Validate( minSize, maxSize ) )
453 return false;
454
455 BOARD* board = m_frame->GetBoard();
456 BOARD_COMMIT commit( m_frame );
457 commit.Modify( m_item );
458
459 // If no other command in progress, prepare undo command
460 // (for a command in progress, will be made later, at the completion of command)
461 bool pushCommit = ( m_item->GetEditFlags() == 0 );
462
463 // Set IN_EDIT flag to force undo/redo/abort proper operation and avoid new calls to
464 // SaveCopyInUndoList for the same text if is moved, and then rotated, edited, etc....
465 if( !pushCommit )
467
468 // Set the new text content
469 if( m_SingleLineText->IsShown() )
470 {
471 if( !m_SingleLineText->GetValue().IsEmpty() )
472 {
473 wxString txt = board->ConvertCrossReferencesToKIIDs( m_SingleLineText->GetValue() );
474
475 m_item->SetText( txt );
476 }
477 }
478 else if( m_MultiLineText->IsShown() )
479 {
480 if( !m_MultiLineText->GetValue().IsEmpty() )
481 {
482 wxString txt = board->ConvertCrossReferencesToKIIDs( m_MultiLineText->GetValue() );
483
484#ifdef __WXMAC__
485 // On macOS CTRL+Enter produces '\r' instead of '\n' regardless of EOL setting.
486 // Replace it now.
487 txt.Replace( wxT( "\r" ), wxT( "\n" ) );
488#elif defined( __WINDOWS__ )
489 // On Windows, a new line is coded as \r\n. We use only \n in kicad files and in
490 // drawing routines so strip the \r char.
491 txt.Replace( wxT( "\r" ), wxT( "" ) );
492#endif
494 }
495 }
496
497 m_item->SetLocked( m_cbLocked->GetValue() );
498
500 m_item->SetIsKnockout( m_cbKnockout->GetValue() );
501
503 {
505 m_italic->IsChecked() ) );
506 }
507
511
512 // Test for acceptable values for thickness and size and clamp if fails
513 int maxPenWidth = Clamp_Text_PenSize( m_item->GetTextThickness(), m_item->GetTextSize() );
514
515 if( m_item->GetTextThickness() > maxPenWidth )
516 {
517 DisplayError( this, _( "The text thickness is too large for the text size.\n"
518 "It will be clamped." ) );
519 m_item->SetTextThickness( maxPenWidth );
520 }
521
523
524 m_item->SetVisible( m_Visible->GetValue() );
525
526 if( m_KeepUpright->IsShown() )
527 m_item->SetKeepUpright( m_KeepUpright->GetValue() );
528
531
532 if( m_alignLeft->IsChecked() )
534 else if( m_alignCenter->IsChecked() )
536 else
538
541 else if( m_valignCenter->IsChecked() )
543 else
545
547
548 if( pushCommit )
549 commit.Push( _( "Edit Text Properties" ) );
550
551 return true;
552}
553
554
555void DIALOG_TEXT_PROPERTIES::onMultiLineTCLostFocus( wxFocusEvent& event )
556{
559
560 event.Skip();
561}
constexpr EDA_IU_SCALE pcbIUScale
Definition: base_units.h:108
wxBitmapBundle KiBitmapBundle(BITMAPS aBitmap)
Definition: bitmap.cpp:110
A bitmap button widget that behaves like an AUI toolbar item's button when it is drawn.
Definition: bitmap_button.h:42
void SetIsRadioButton()
bool IsChecked() const
void Check(bool aCheck=true)
Check the control.
void SetIsSeparator()
Render button as a toolbar separator.
void SetIsCheckButton()
Setup the control as a two-state button (checked or unchecked).
void SetBitmap(const wxBitmapBundle &aBmp)
Set the bitmap shown when the button is enabled.
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition: board_item.h:237
virtual void SetLocked(bool aLocked)
Definition: board_item.h:328
virtual bool IsKnockout() const
Definition: board_item.h:324
virtual void SetIsKnockout(bool aKnockout)
Definition: board_item.h:325
virtual void SetLayer(PCB_LAYER_ID aLayer)
Set the layer this item is on.
Definition: board_item.h:288
FOOTPRINT * GetParentFootprint() const
Definition: board_item.cpp:298
VECTOR2I GetFPRelativePosition() const
Definition: board_item.cpp:327
void SetFPRelativePosition(const VECTOR2I &aPos)
Definition: board_item.cpp:341
virtual bool IsLocked() const
Definition: board_item.cpp:75
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:290
wxString ConvertCrossReferencesToKIIDs(const wxString &aSource) const
Convert cross-references back and forth between ${refDes:field} and ${kiid:field}.
Definition: board.cpp:1555
wxString ConvertKIIDsToCrossReferences(const wxString &aSource) const
Definition: board.cpp:1609
std::vector< wxWindow * > m_tabOrder
Definition: dialog_shim.h:242
void SetInitialFocus(wxWindow *aWindow)
Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown.
Definition: dialog_shim.h:102
void SetupStandardButtons(std::map< int, wxString > aLabels={})
int ShowQuasiModal()
std::string m_hash_key
Definition: dialog_shim.h:222
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
virtual void OnCharHook(wxKeyEvent &aEvt)
virtual void OnSetFocusText(wxFocusEvent &event) override
Used to select the variant part of some text fields (for instance, the question mark or number in a r...
void onMultiLineTCLostFocus(wxFocusEvent &event) override
void onFontSelected(wxCommandEvent &aEvent) override
DIALOG_TEXT_PROPERTIES(SCH_BASE_FRAME *parent, SCH_ITEM *aTextItem)
void updateTextThickness(wxCommandEvent &aEvent) override
void onBoldToggle(wxCommandEvent &aEvent) override
void onThickness(wxCommandEvent &aEvent) override
void onValignButton(wxCommandEvent &aEvent) override
void onAlignButton(wxCommandEvent &aEvent) override
EDA_ANGLE Normalize()
Definition: eda_angle.h:221
double AsDegrees() const
Definition: eda_angle.h:113
EDA_ANGLE Normalize180()
Definition: eda_angle.h:260
EDA_ITEM_FLAGS GetEditFlags() const
Definition: eda_item.h:133
void SetFlags(EDA_ITEM_FLAGS aMask)
Definition: eda_item.h:127
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:101
bool IsItalic() const
Definition: eda_text.h:156
const EDA_ANGLE & GetTextAngle() const
Definition: eda_text.h:134
void SetTextSize(VECTOR2I aNewSize, bool aEnforceMinTextSize=true)
Definition: eda_text.cpp:506
virtual const wxString & GetText() const
Return the string associated with the text object.
Definition: eda_text.h:98
bool IsKeepUpright() const
Definition: eda_text.h:193
virtual bool IsVisible() const
Definition: eda_text.h:174
KIFONT::FONT * GetFont() const
Definition: eda_text.h:234
void SetMirrored(bool isMirrored)
Definition: eda_text.cpp:384
void SetVertJustify(GR_TEXT_V_ALIGN_T aType)
Definition: eda_text.cpp:408
GR_TEXT_H_ALIGN_T GetHorizJustify() const
Definition: eda_text.h:187
void SetBoldFlag(bool aBold)
Set only the italic flag, without changing the font.
Definition: eda_text.cpp:369
virtual void SetVisible(bool aVisible)
Definition: eda_text.cpp:377
void SetTextThickness(int aWidth)
The TextThickness is that set by the user.
Definition: eda_text.cpp:283
void SetItalicFlag(bool aItalic)
Set only the italic flag, without changing the font.
Definition: eda_text.cpp:319
bool IsMirrored() const
Definition: eda_text.h:177
bool IsBold() const
Definition: eda_text.h:171
void SetKeepUpright(bool aKeepUpright)
Definition: eda_text.cpp:416
GR_TEXT_V_ALIGN_T GetVertJustify() const
Definition: eda_text.h:190
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:269
virtual void SetTextAngle(const EDA_ANGLE &aAngle)
Definition: eda_text.cpp:291
int GetTextThickness() const
Definition: eda_text.h:126
void SetFont(KIFONT::FONT *aFont)
Definition: eda_text.cpp:490
VECTOR2I GetTextSize() const
Definition: eda_text.h:245
void SetHorizJustify(GR_TEXT_H_ALIGN_T aType)
Definition: eda_text.cpp:400
KIFONT::FONT * GetFontSelection(bool aBold, bool aItalic, bool aForDrawingSheet=false) const
bool HaveFontSelection() const
Definition: font_choice.cpp:94
void SetFontSelection(KIFONT::FONT *aFont)
Definition: font_choice.cpp:73
EDA_ANGLE GetOrientation() const
Definition: footprint.h:227
bool IsFlipped() const
Definition: footprint.h:391
const wxString & GetValue() const
Definition: footprint.h:644
const wxString & GetReference() const
Definition: footprint.h:622
virtual bool IsStroke() const
Definition: font.h:138
int SetLayerSelection(int layer)
bool SetLayersHotkeys(bool value)
Common, abstract interface for edit frames.
bool IsReference() const
Definition: pcb_field.h:68
bool IsValue() const
Definition: pcb_field.h:69
void SetBoardFrame(PCB_BASE_FRAME *aFrame)
void ShowNonActivatedLayers(bool aShow)
Add cut/copy/paste, dark theme, autocomplete and brace highlighting to a wxStyleTextCtrl instance.
void DoTextVarAutocomplete(const std::function< void(const wxString &xRef, wxArrayString *tokens)> &getTokensFn)
virtual long long int GetValue()
Return the current value in Internal Units.
virtual void SetPrecision(int aLength)
Normally not needed, but can be used to set the precision when using internal units that are floats (...
virtual void SetUnits(EDA_UNITS aUnits)
Normally not needed (as the UNIT_BINDER inherits from the parent frame), but can be used to set to DE...
virtual EDA_ANGLE GetAngleValue()
virtual void SetAngleValue(const EDA_ANGLE &aValue)
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 ChangeValue(int aValue)
Set new value (in Internal Units) for the text field, taking care of units conversion WITHOUT trigger...
virtual void SetValue(long long int aValue)
Set new value (in Internal Units) for the text field, taking care of units conversion.
void Show(bool aShow, bool aResize=false)
Show/hide the label, widget and units label.
void SetCoordType(ORIGIN_TRANSFORMS::COORD_TYPES_T aCoordType)
Set the current origin transform mode.
Definition: unit_binder.h:199
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:170
This file is part of the common library.
const int minSize
Push and Shove router track width and via size dialog.
#define _(s)
#define IN_EDIT
Item currently edited.
#define TEXT_MIN_SIZE_MM
Minimum text size (1 micron).
Definition: eda_text.h:47
#define TEXT_MAX_SIZE_MM
Maximum text size in mm (~10 inches)
Definition: eda_text.h:48
int GetPenSizeForBold(int aTextSize)
Definition: gr_text.cpp:40
int GetPenSizeForNormal(int aTextSize)
Definition: gr_text.cpp:64
int Clamp_Text_PenSize(int aPenSize, int aSize, bool aStrict)
Pen width should not allow characters to become cluttered up in their own fatness.
Definition: gr_text.cpp:87
PCB_LAYER_ID ToLAYER_ID(int aLayer)
Definition: lset.cpp:820
KICOMMON_API wxFont GetInfoFont(wxWindow *aWindow)
Definition: ui_common.cpp:154
KICOMMON_API void SelectReferenceNumber(wxTextEntry *aTextEntry)
Select the number (or "?") in a reference for ease of editing.
Definition: ui_common.cpp:228
wxString UnescapeString(const wxString &aSource)
wxString EscapeString(const wxString &aSource, ESCAPE_CONTEXT aContext)
The Escape/Unescape routines use HTML-entity-reference-style encoding to handle characters which are:...
@ CTX_QUOTED_STR
Definition: string_utils.h:57
constexpr int mmToIU(double mm) const
Definition: base_units.h:88
@ GR_TEXT_H_ALIGN_CENTER
@ GR_TEXT_H_ALIGN_RIGHT
@ GR_TEXT_H_ALIGN_LEFT
@ GR_TEXT_H_ALIGN_INDETERMINATE
@ GR_TEXT_V_ALIGN_BOTTOM
@ GR_TEXT_V_ALIGN_INDETERMINATE
@ GR_TEXT_V_ALIGN_CENTER
@ GR_TEXT_V_ALIGN_TOP
@ PCB_FIELD_T
class PCB_FIELD, text associated with a footprint property
Definition: typeinfo.h:90
VECTOR2< int32_t > VECTOR2I
Definition: vector2d.h:691