KiCad PCB EDA Suite
common.cpp File Reference
#include <fctsys.h>
#include <eda_base_frame.h>
#include <base_struct.h>
#include <common.h>
#include <macros.h>
#include <base_units.h>
#include <reporter.h>
#include <wx/process.h>
#include <wx/config.h>
#include <wx/utils.h>
#include <wx/stdpaths.h>
#include <wx/url.h>
#include <pgm_base.h>
#include <ki_mutex.h>

Go to the source code of this file.

Functions

wxSize GetTextSize (const wxString &aSingleLine, wxWindow *aWindow)
 Return the size of aSingleLine of text when it is rendered in aWindow using whatever font is currently set in that window. More...
 
bool EnsureTextCtrlWidth (wxTextCtrl *aCtrl, const wxString *aString)
 Set the minimum pixel width on a text control in order to make a text string be fully visible within it. More...
 
void wxStringSplit (const wxString &aText, wxArrayString &aStrings, wxChar aSplitter)
 Split aString to a string list separated at aSplitter. More...
 
int ProcessExecute (const wxString &aCommandLine, int aFlags, wxProcess *callback)
 Run a command in a child process. More...
 
timestamp_t GetNewTimeStamp ()
 
double RoundTo0 (double x, double precision)
 Round to the nearest precision. More...
 
wxConfigBase * GetNewConfig (const wxString &aProgName)
 Create a new wxConfig so we can put configuration files in a more proper place for each platform. More...
 
wxString GetKicadConfigPath ()
 Return the user configuration path used to store KiCad's configuration files. More...
 
const wxString ExpandEnvVarSubstitutions (const wxString &aString)
 Replace any environment variable references with their values. More...
 
const wxString ResolveUriByEnvVars (const wxString &aUri)
 Replace any environment variables in file-path uris (leaving network-path URIs alone). More...
 
bool EnsureFileDirectoryExists (wxFileName *aTargetFullFileName, const wxString &aBaseFilename, REPORTER *aReporter)
 Make aTargetFullFileName absolute and create the path of this file if it doesn't yet exist. More...
 

Variables

EDA_UNITS_T g_UserUnit
 Global variables definitions. More...
 
COLOR4D g_GhostColor
 Draw color for moving objects. More...
 

Function Documentation

bool EnsureFileDirectoryExists ( wxFileName *  aTargetFullFileName,
const wxString &  aBaseFilename,
REPORTER aReporter = NULL 
)

Make aTargetFullFileName absolute and create the path of this file if it doesn't yet exist.

Parameters
aTargetFullFileNamethe wxFileName containing the full path and file name to modify. The path may be absolute or relative to aBaseFilename .
aBaseFilenamea full filename. Only its path is used to set the aTargetFullFileName path.
aReportera point to a REPORTER object use to show messages (can be NULL)
Returns
true if aOutputDir already exists or was successfully created.

Definition at line 282 of file common.cpp.

References GetChars(), REPORTER::Report(), REPORTER::RPT_ERROR, and REPORTER::RPT_INFO.

Referenced by DIALOG_GEN_FOOTPRINT_POSITION::CreateFiles(), DIALOG_PLOT_SCHEMATIC::createPlotFileName(), DIALOG_SVG_PRINT::ExportSVGFile(), DIALOG_GENDRILL::GenDrillAndMapFiles(), PLOT_CONTROLLER::OpenPlotfile(), and DIALOG_PLOT::Plot().

285 {
286  wxString msg;
287  wxString baseFilePath = wxFileName( aBaseFilename ).GetPath();
288 
289  // make aTargetFullFileName path, which is relative to aBaseFilename path (if it is not
290  // already an absolute path) absolute:
291  if( !aTargetFullFileName->MakeAbsolute( baseFilePath ) )
292  {
293  if( aReporter )
294  {
295  msg.Printf( _( "Cannot make path \"%s\" absolute with respect to \"%s\"." ),
296  GetChars( aTargetFullFileName->GetPath() ),
297  GetChars( baseFilePath ) );
298  aReporter->Report( msg, REPORTER::RPT_ERROR );
299  }
300 
301  return false;
302  }
303 
304  // Ensure the path of aTargetFullFileName exists, and create it if needed:
305  wxString outputPath( aTargetFullFileName->GetPath() );
306 
307  if( !wxFileName::DirExists( outputPath ) )
308  {
309  if( wxMkdir( outputPath ) )
310  {
311  if( aReporter )
312  {
313  msg.Printf( _( "Output directory \"%s\" created.\n" ), GetChars( outputPath ) );
314  aReporter->Report( msg, REPORTER::RPT_INFO );
315  return true;
316  }
317  }
318  else
319  {
320  if( aReporter )
321  {
322  msg.Printf( _( "Cannot create output directory \"%s\".\n" ),
323  GetChars( outputPath ) );
324  aReporter->Report( msg, REPORTER::RPT_ERROR );
325  }
326 
327  return false;
328  }
329  }
330 
331  return true;
332 }
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
virtual REPORTER & Report(const wxString &aText, SEVERITY aSeverity=RPT_UNDEFINED)=0
Function Report is a pure virtual function to override in the derived object.
bool EnsureTextCtrlWidth ( wxTextCtrl *  aCtrl,
const wxString *  aString = NULL 
)

Set the minimum pixel width on a text control in order to make a text string be fully visible within it.

The current font within the text control is considered. The text can come either from the control or be given as an argument. If the text control is larger than needed, then nothing is done.

Parameters
aCtrlthe text control to potentially make wider.
aStringthe text that is used in sizing the control's pixel width. If NULL, then the text already within the control is used.
Returns
bool - true if the aCtrl had its size changed, else false.

Definition at line 102 of file common.cpp.

References GetTextSize().

Referenced by SCH_EDIT_FRAME::EditComponent(), DIALOG_LABEL_EDITOR::InitDialog(), and GERBVIEW_FRAME::UpdateTitleAndInfo().

103 {
104  wxWindow* window = aCtrl->GetParent();
105 
106  if( !window )
107  window = aCtrl;
108 
109  wxString ctrlText;
110 
111  if( !aString )
112  {
113  ctrlText = aCtrl->GetValue();
114  aString = &ctrlText;
115  }
116 
117  wxSize textz = GetTextSize( *aString, window );
118  wxSize ctrlz = aCtrl->GetSize();
119 
120  if( ctrlz.GetWidth() < textz.GetWidth() + 10 )
121  {
122  ctrlz.SetWidth( textz.GetWidth() + 10 );
123  aCtrl->SetSizeHints( ctrlz );
124  return true;
125  }
126 
127  return false;
128 }
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: common.cpp:87
const wxString ExpandEnvVarSubstitutions ( const wxString &  aString)

Replace any environment variable references with their values.

Parameters
aString= a string containing (perhaps) references to env var
Returns
a string where env var are replaced by their value

Definition at line 255 of file common.cpp.

Referenced by S3D_FILENAME_RESOLVER::addPath(), S3D_FILENAME_RESOLVER::checkEnvVarPath(), S3D_PLUGIN_MANAGER::checkPluginName(), S3D_PLUGIN_MANAGER::checkPluginPath(), S3D_FILENAME_RESOLVER::createPathList(), LIB_TABLE::ExpandSubstitutions(), S3D_CACHE::Get3DConfigDir(), WORKSHEET_LAYOUT::MakeFullFileName(), S3D_FILENAME_RESOLVER::ResolvePath(), ResolveUriByEnvVars(), S3D_FILENAME_RESOLVER::Set3DConfigDir(), S3D_CACHE::Set3DConfigDir(), S3D_FILENAME_RESOLVER::SetProjectDir(), S3D_FILENAME_RESOLVER::ShortenPath(), and DLG_3D_PATH_CONFIG::updateEnvVars().

256 {
257  // wxGetenv( wchar_t* ) is not re-entrant on linux.
258  // Put a lock on multithreaded use of wxGetenv( wchar_t* ), called from wxEpandEnvVars(),
259  static MUTEX getenv_mutex;
260 
261  MUTLOCK lock( getenv_mutex );
262 
263  // We reserve the right to do this another way, by providing our own member
264  // function.
265  return wxExpandEnvVars( aString );
266 }
boost::interprocess::interprocess_mutex MUTEX
Establish KiCad MUTEX choices here in this file: typedef MUTEX and typedef MUTLOCK.
Definition: ki_mutex.h:42
boost::interprocess::scoped_lock< MUTEX > MUTLOCK
Definition: ki_mutex.h:43
wxString GetKicadConfigPath ( )

Return the user configuration path used to store KiCad's configuration files.

The configuration path order of precedence is determined by the following criteria:

  • The value of the KICAD_CONFIG_HOME environment variable
  • The value of the XDG_CONFIG_HOME environment variable.
  • The result of the call to wxStandardPaths::GetUserConfigDir() with ".config" appended as required on Linux builds.
Returns
A wxString containing the config path for Kicad

Definition at line 211 of file common.cpp.

Referenced by FP_LIB_TABLE::GetGlobalTableFileName(), SYMBOL_LIB_TABLE::GetGlobalTableFileName(), GetNewConfig(), ReadHotkeyConfigFile(), EDA_BASE_FRAME::WriteHotkeyConfig(), and CACHE_WRAPPER::~CACHE_WRAPPER().

212 {
213  wxFileName cfgpath;
214 
215  // http://docs.wxwidgets.org/3.0/classwx_standard_paths.html#a7c7cf595d94d29147360d031647476b0
216  cfgpath.AssignDir( wxStandardPaths::Get().GetUserConfigDir() );
217 
218  // GetUserConfigDir() does not default to ~/.config which is the current standard
219  // configuration file location on Linux. This has been fixed in later versions of wxWidgets.
220 #if !defined( __WXMSW__ ) && !defined( __WXMAC__ )
221  wxArrayString dirs = cfgpath.GetDirs();
222 
223  if( dirs.Last() != ".config" )
224  cfgpath.AppendDir( ".config" );
225 #endif
226 
227  wxString envstr;
228 
229  // This shouldn't cause any issues on Windows or MacOS.
230  if( wxGetEnv( wxT( "XDG_CONFIG_HOME" ), &envstr ) && !envstr.IsEmpty() )
231  {
232  // Override the assignment above with XDG_CONFIG_HOME
233  cfgpath.AssignDir( envstr );
234  }
235 
236  cfgpath.AppendDir( wxT( "kicad" ) );
237 
238  // Use KICAD_CONFIG_HOME to allow the user to force a specific configuration path.
239  if( wxGetEnv( wxT( "KICAD_CONFIG_HOME" ), &envstr ) && !envstr.IsEmpty() )
240  {
241  // Override the assignment above with KICAD_CONFIG_HOME
242  cfgpath.AssignDir( envstr );
243  }
244 
245  if( !cfgpath.DirExists() )
246  {
247  cfgpath.Mkdir( wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL );
248  }
249 
250  return cfgpath.GetPath();
251 }
wxConfigBase* GetNewConfig ( const wxString &  aProgName)

Create a new wxConfig so we can put configuration files in a more proper place for each platform.

This is generally $HOME/.config/kicad/ in Linux according to the FreeDesktop specification at http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html The config object created here should be destroyed by the caller.

Parameters
aProgNameis the name of the program calling this function - can be obtained by calling Pgm().App().GetAppName(). This will be the actual file name of the config file.
Returns
A pointer to a new wxConfigBase derived object is returned. The caller is in charge of deleting it.

Definition at line 199 of file common.cpp.

References GetKicadConfigPath().

Referenced by BIN_MOD::Init(), and PGM_BASE::InitPgm().

200 {
201  wxConfigBase* cfg = 0;
202  wxFileName configname;
203  configname.AssignDir( GetKicadConfigPath() );
204  configname.SetFullName( aProgName );
205 
206  cfg = new wxFileConfig( wxT( "" ), wxT( "" ), configname.GetFullPath() );
207  return cfg;
208 }
wxString GetKicadConfigPath()
Return the user configuration path used to store KiCad&#39;s configuration files.
Definition: common.cpp:211
timestamp_t GetNewTimeStamp ( )
wxSize GetTextSize ( const wxString &  aSingleLine,
wxWindow *  aWindow 
)

Return the size of aSingleLine of text when it is rendered in aWindow using whatever font is currently set in that window.

Definition at line 87 of file common.cpp.

Referenced by DIALOG_FIELDS_EDITOR_GLOBAL::DIALOG_FIELDS_EDITOR_GLOBAL(), EDA_DRAW_FRAME::EDA_DRAW_FRAME(), EnsureTextCtrlWidth(), DIALOG_NON_COPPER_ZONES_EDITOR::Init(), DIALOG_KEEPOUT_AREA_PROPERTIES::initDialog(), DIALOG_COPPER_ZONE::initDialog(), PL_EDITOR_FRAME::PL_EDITOR_FRAME(), DIALOG_FP_CONFLICT_ASSIGNMENT_SELECTOR::recalculateColumns(), PL_EDITOR_FRAME::ReCreateHToolbar(), and TEXTE_PCB::TransformShapeWithClearanceToPolygonSet().

88 {
89  wxCoord width;
90  wxCoord height;
91 
92  {
93  wxClientDC dc( aWindow );
94  dc.SetFont( aWindow->GetFont() );
95  dc.GetTextExtent( aSingleLine, &width, &height );
96  }
97 
98  return wxSize( width, height );
99 }
int ProcessExecute ( const wxString &  aCommandLine,
int  aFlags = wxEXEC_ASYNC,
wxProcess *  callback = NULL 
)

Run a command in a child process.

Parameters
aCommandLineThe process and any arguments to it all in a single string.
aFlagsThe same args as allowed for wxExecute()
callbackwxProcess implementing OnTerminate to be run when the child process finishes
Returns
int - pid of process, 0 in case of error (like return values of wxExecute())

Definition at line 154 of file common.cpp.

Referenced by ExecuteFile(), GetAssociatedDocument(), DIALOG_FREEROUTE::OnLaunchButtonClick(), OpenFile(), OpenPDF(), and SCH_EDIT_FRAME::WriteNetListFile().

155 {
156  return wxExecute( aCommandLine, aFlags, callback );
157 }
const wxString ResolveUriByEnvVars ( const wxString &  aUri)

Replace any environment variables in file-path uris (leaving network-path URIs alone).

Definition at line 269 of file common.cpp.

References ExpandEnvVarSubstitutions().

Referenced by SCH_EDIT_FRAME::Process_Special_Functions(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::showButtonHandler(), and DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::showButtonHandler().

270 {
271  // URL-like URI: return as is.
272  wxURL url( aUri );
273  if( url.GetError() == wxURL_NOERR )
274  return aUri;
275 
276  // Otherwise, the path points to a local file. Resolve environment
277  // variables if any.
278  return ExpandEnvVarSubstitutions( aUri );
279 }
const wxString ExpandEnvVarSubstitutions(const wxString &aString)
Replace any environment variable references with their values.
Definition: common.cpp:255
double RoundTo0 ( double  x,
double  precision 
)

Round to the nearest precision.

Try to approximate a coordinate using a given precision to prevent rounding errors when converting from inches to mm.

ie round the unit value to 0 if unit is 1 or 2, or 8 or 9

Definition at line 176 of file common.cpp.

References KiROUND().

Referenced by SCH_BASE_FRAME::UpdateStatusBar().

177 {
178  assert( precision != 0 );
179 
180  long long ix = KiROUND( x * precision );
181 
182  if ( x < 0.0 )
183  ix = -ix;
184 
185  int remainder = ix % 10; // remainder is in precision mm
186 
187  if( remainder <= 2 )
188  ix -= remainder; // truncate to the near number
189  else if( remainder >= 8 )
190  ix += 10 - remainder; // round to near number
191 
192  if ( x < 0 )
193  ix = -ix;
194 
195  return (double) ix / precision;
196 }
static int KiROUND(double v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: common.h:106
void wxStringSplit ( const wxString &  aText,
wxArrayString &  aStrings,
wxChar  aSplitter 
)

Split aString to a string list separated at aSplitter.

Parameters
aTextis the text to split
aStringswill contain the splitted lines
aSplitteris the 'split' character

Definition at line 131 of file common.cpp.

Referenced by CINFO3D_VISU::AddShapeWithClearanceToContainer(), EDA_TEXT::Draw(), export_vrml_pcbtext(), EDA_TEXT::GetTextBox(), HTML_MESSAGE_BOX::ListSet(), DIALOG_FOOTPRINT_WIZARD_LIST::onShowTrace(), SCH_TEXT::Plot(), BRDITEMS_PLOTTER::PlotTextePcb(), TEXTE_PCB::TransformShapeWithClearanceToPolygonSet(), and EDA_TEXT::TransformTextShapeToSegmentList().

132 {
133  wxString tmp;
134 
135  for( unsigned ii = 0; ii < aText.Length(); ii++ )
136  {
137  if( aText[ii] == aSplitter )
138  {
139  aStrings.Add( tmp );
140  tmp.Clear();
141  }
142 
143  else
144  tmp << aText[ii];
145  }
146 
147  if( !tmp.IsEmpty() )
148  {
149  aStrings.Add( tmp );
150  }
151 }

Variable Documentation

COLOR4D g_GhostColor
EDA_UNITS_T g_UserUnit

Global variables definitions.

display units

TODO: All of these variables should be moved into the class were they are defined and used. Most of them probably belong in the application class.

Definition at line 57 of file common.cpp.

Referenced by DIALOG_COPPER_ZONE::AcceptOptions(), EDA_DRAW_FRAME::AddMenuZoomAndGrid(), Append_Track_Width_List(), DIALOG_CREATE_ARRAY::calculateCircularArrayProperties(), class2gridRow(), DIALOG_DESIGN_RULES::CopyDimensionsListsToBoard(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToSelectedField(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::copyPanelToSelectedField(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copySelectedFieldToPanel(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::copySelectedFieldToPanel(), PCB_EDIT_FRAME::Create_MuWaveComponent(), MWAVE::CreateMicrowaveInductor(), DIALOG_CREATE_ARRAY::DIALOG_CREATE_ARRAY(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT(), DIALOG_PLOT::DIALOG_PLOT(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_SET_GRID::DIALOG_SET_GRID(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_DRC_CONTROL::DisplayDRCValues(), GERBER_FILE_IMAGE::DisplayImageInfo(), EDA_DRAW_FRAME::DisplayUnitsMsg(), drawCursorStrings(), drawTicksAlongLine(), PCB_EDIT_FRAME::Edit_Gap(), LIB_EDIT_FRAME::EditGraphicSymbol(), SCH_EDIT_FRAME::EditLine(), SCH_EDIT_FRAME::EditSheet(), SCH_EDIT_FRAME::EditSheetPin(), FOOTPRINT_EDIT_FRAME::Enter_Edge_Width(), PCB_EDIT_FRAME::GenFootprintsReport(), FOOTPRINT_EDIT_FRAME::GetConfigurationSettings(), PL_EDITOR_FRAME::GetConfigurationSettings(), SCH_EDIT_FRAME::GetConfigurationSettings(), PCB_EDIT_FRAME::GetConfigurationSettings(), GERBVIEW_FRAME::GetConfigurationSettings(), DIALOG_PAGES_SETTINGS::GetCustomSizeMilsFromDialog(), DIALOG_SET_GRID::getGridOrigin(), DIALOG_SET_GRID::getGridSize(), LIB_CIRCLE::GetMsgPanelInfo(), LIB_RECTANGLE::GetMsgPanelInfo(), LIB_POLYLINE::GetMsgPanelInfo(), LIB_TEXT::GetMsgPanelInfo(), LIB_ARC::GetMsgPanelInfo(), LIB_BEZIER::GetMsgPanelInfo(), LIB_PIN::GetMsgPanelInfo(), LIB_FIELD::GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), LIB_PIN::getMsgPanelInfoBase(), PANEL_PREV_3D::getOrientationVars(), getTickFormatForScale(), TRACK_VIA_SIZE_MENU::getTrackDescription(), TRACK_VIA_SIZE_MENU::getViaDescription(), GRID_MENU::GRID_MENU(), DIALOG_GENERALOPTIONS::init(), DIALOG_NON_COPPER_ZONES_EDITOR::Init(), DIALOG_FOOTPRINT_BOARD_EDITOR::InitBoardProperties(), DIALOG_SVG_PRINT::initDialog(), DIALOG_GLOBAL_FOOTPRINTS_FIELDS_EDITION::initDialog(), DIALOG_PAGES_SETTINGS::initDialog(), DIALOG_LABEL_EDITOR::InitDialog(), DIALOG_COPPER_ZONE::initDialog(), DIALOG_DESIGN_RULES::InitDimensionsLists(), DIALOG_LIB_EDIT_TEXT::initDlg(), DIALOG_PLOT_SCHEMATIC::initDlg(), DIALOG_DESIGN_RULES::InitGlobalRules(), DIALOG_FOOTPRINT_FP_EDITOR::initModeditProperties(), DIALOG_DISPLAY_OPTIONS::initOptDialog(), PANEL_PREV_3D::initPanel(), DIALOG_MODEDIT_OPTIONS::initValues(), DIALOG_PAD_PROPERTIES::initValues(), DIALOG_PRINT_USING_PRINTER::initValues(), LengthDoubleToString(), GERBVIEW_FRAME::Liste_D_Codes(), Mils2mm(), MWAVE_POLYGONAL_SHAPE_DLG::MWAVE_POLYGONAL_SHAPE_DLG(), DIALOG_PADS_MASK_CLEARANCE::myInit(), DIALOG_PAD_PRIMITIVE_POLY_PROPS::onCellChanging(), DIALOG_PAD_PROPERTIES::onCornerSizePercentChange(), DIALOG_COPPER_ZONE::OnCornerSmoothingModeChoice(), PANEL_PREV_3D::onDecrementOffset(), LIB_EDIT_FRAME::OnEditPin(), SCH_EDIT_FRAME::OnFindDrcMarker(), FOOTPRINT_VIEWER_FRAME::OnHotKey(), FOOTPRINT_EDIT_FRAME::OnHotKey(), PCB_EDIT_FRAME::OnHotKey(), GERBVIEW_FRAME::OnHotKey(), PANEL_PREV_3D::onIncrementOffset(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnInitDialog(), PGE::IFACE::OnKifaceStart(), PANEL_PREV_3D::onMouseWheelOffset(), DIALOG_DISPLAY_OPTIONS::OnOKBUttonClick(), DIALOG_GENERALOPTIONS::OnOkClick(), DIALOG_LIB_EDIT_TEXT::OnOkClick(), DIALOG_MODEDIT_OPTIONS::OnOkClick(), DIALOG_NON_COPPER_ZONES_EDITOR::OnOkClick(), TARGET_PROPERTIES_DIALOG_EDITOR::OnOkClick(), DIALOG_DIMENSION_EDITOR::OnOKClick(), SCH_EDIT_FRAME::OnPreferencesOptions(), DIALOG_LIB_EDIT_PIN::OnPropertiesChange(), EDA_DRAW_FRAME::OnSelectUnits(), EDA_DRAW_FRAME::OnUpdateUnits(), DIALOG_TRACK_VIA_PROPERTIES::onViaSelect(), DIALOG_PAD_PROPERTIES::padValuesOK(), PutValueInLocalUnits(), DIALOG_PAGES_SETTINGS::SavePageSettings(), PCB_BASE_FRAME::SaveSettings(), DIALOG_DESIGN_RULES::SetDataValidators(), DIALOG_SET_GRID::setGridSize(), PANEL_PREV_3D::SetModelDataIdx(), DIALOG_SVG_PRINT::SetPenWidth(), DIALOG_PRINT_USING_PRINTER::SetPenWidth(), GERBVIEW_CONTROL::SwitchUnits(), PCBNEW_CONTROL::SwitchUnits(), PCB_EDIT_FRAME::SyncMenusAndToolbars(), TARGET_PROPERTIES_DIALOG_EDITOR::TARGET_PROPERTIES_DIALOG_EDITOR(), DIALOG_DESIGN_RULES::TestDataValidity(), DIALOG_LABEL_EDITOR::TextPropertiesAccept(), DIALOG_EDIT_FPTEXT::TransferDataFromWindow(), DIALOG_EDIT_ONE_FIELD::TransferDataFromWindow(), DIALOG_PCB_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_MODEDIT_FP_BODY_ITEM_PROPERTIES::TransferDataFromWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), DIALOG_LAYERS_SETUP::TransferDataFromWindow(), DIALOG_PAD_PRIMITIVES_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PRIMITIVE_POLY_PROPS::TransferDataFromWindow(), DIALOG_CREATE_ARRAY::TransferDataFromWindow(), DIALOG_EDIT_ONE_FIELD::TransferDataToWindow(), DIALOG_LAYERS_SETUP::TransferDataToWindow(), DIALOG_PAD_PRIMITIVE_POLY_PROPS::TransferDataToWindow(), DIALOG_PAD_PRIMITIVES_TRANSFORM::Transform(), GRID_MENU::update(), GERBVIEW_FRAME::updateDCodeSelectBox(), DIALOG_POSITION_RELATIVE::updateDlgTexts(), DIALOG_MOVE_EXACT::updateDlgTexts(), PCB_BASE_FRAME::updateGridSelectBox(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::updateNetInfo(), DIALOG_PAD_PROPERTIES::updateRoundRectCornerValues(), PL_EDITOR_FRAME::UpdateStatusBar(), SCH_BASE_FRAME::UpdateStatusBar(), PCB_BASE_FRAME::UpdateStatusBar(), GERBVIEW_FRAME::UpdateStatusBar(), PCB_EDIT_FRAME::updateTraceWidthSelectBox(), PCB_EDIT_FRAME::updateViaSizeSelectBox(), DIALOG_MODEDIT_FP_BODY_ITEM_PROPERTIES::Validate(), DIALOG_GRAPHIC_ITEM_PROPERTIES::Validate(), ValueFromString(), ValueFromTextCtrl(), and KIGFX::PREVIEW::ARC_ASSISTANT::ViewDraw().