More internal unit improvements.

* Move all convert from internal to user units functions into separate file.
* Remove internal units parameter from all moved conversion functions.
* Revise all source code that calls the moved conversion functions.
* Compile these conversion routines separately for the appropriate pcb or
  schematic internal units.
* Move internal units specific status bar update code into the appropriate
  application for updating the status bar.
* Move millimeter user units rounding function to common.cpp.
This commit is contained in:
Wayne Stambaugh 2012-04-13 14:51:24 -04:00
parent b28e976e35
commit 57d75a75a8
57 changed files with 715 additions and 579 deletions

View File

@ -83,6 +83,7 @@ add_library(common STATIC ${COMMON_SRCS})
set(PCB_COMMON_SRCS set(PCB_COMMON_SRCS
base_screen.cpp base_screen.cpp
base_units.cpp
eda_text.cpp eda_text.cpp
class_page_info.cpp class_page_info.cpp
pcbcommon.cpp pcbcommon.cpp

161
common/base_units.cpp Normal file
View File

@ -0,0 +1,161 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2012 CERN
* Copyright (C) 1992-2011 KiCad Developers, see change_log.txt for contributors.
*
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @author Wayne Stambaugh <stambaughw@verizon.net>
* @file base_units.cpp
* @brief Code to handle objects that require both schematic and board internal units.
* @note This file is an ugly hack to solve the problem of formatting the base units
* for either schematics or boards in objects that are include in both domains.
* At some point in the future. This code should be rolled back into the
* appropriate object and build with the correct internal unit formatting
* depending on the application.
*/
#include <base_struct.h>
#include <class_title_block.h>
#include <common.h>
#include <base_units.h>
#if defined( PCBNEW )
#if defined( USE_PCBNEW_NANOMETRES )
#define IU_TO_MM( x ) ( x * 1e-6 )
#define IU_TO_IN( x ) ( ( x * 1e-6 ) / 25.4 )
#else
#define IU_TO_MM( x ) ( ( x * 0.0001 ) * 25.4 )
#define IU_TO_IN( x ) ( x * 0.0001 )
#endif
#elif defined( EESCHEMA )
#define IU_TO_MM( x ) ( ( x * 0.001 ) * 25.4 )
#define IU_TO_IN( x ) ( x * 0.001 )
#else
#error "Cannot resolve internal units due to no definition of EESCHEMA or PCBNEW."
#endif
double To_User_Unit( EDA_UNITS_T aUnit, double aValue )
{
switch( aUnit )
{
case MILLIMETRES:
return IU_TO_MM( aValue );
case INCHES:
return IU_TO_IN( aValue );
default:
return aValue;
}
}
wxString CoordinateToString( int aValue, bool aConvertToMils )
{
wxString text;
const wxChar* format;
double value = To_User_Unit( g_UserUnit, aValue );
if( g_UserUnit == INCHES )
{
if( aConvertToMils )
{
#if defined( EESCHEMA )
format = wxT( "%.0f" );
#else
format = wxT( "%.1f" );
#endif
if( aConvertToMils )
value *= 1000;
}
else
{
#if defined( EESCHEMA )
format = wxT( "%.3f" );
#else
format = wxT( "%.4f" );
#endif
}
}
else
{
#if defined( EESCHEMA )
format = wxT( "%.2f" );
#else
format = wxT( "%.3f" );
#endif
}
text.Printf( format, value );
if( g_UserUnit == INCHES )
text += ( aConvertToMils ) ? _( " mils" ) : _( " in" );
else
text += _( " mm" );
return text;
}
wxString ReturnStringFromValue( EDA_UNITS_T aUnit, int aValue, bool aAddUnitSymbol )
{
wxString StringValue;
double value_to_print;
value_to_print = To_User_Unit( aUnit, aValue );
#if defined( PCBNEW )
StringValue.Printf( wxT( "%.4f" ), value_to_print );
#else
StringValue.Printf( wxT( "%.3f" ), value_to_print );
#endif
if( aAddUnitSymbol )
{
switch( aUnit )
{
case INCHES:
StringValue += _( " \"" );
break;
case MILLIMETRES:
StringValue += _( " mm" );
break;
case UNSCALED_UNITS:
break;
}
}
return StringValue;
}
void PutValueInLocalUnits( wxTextCtrl& aTextCtr, int aValue )
{
wxString msg = ReturnStringFromValue( g_UserUnit, aValue );
aTextCtr.SetValue( msg );
}

View File

@ -36,6 +36,8 @@
#include <macros.h> #include <macros.h>
#include <build_version.h> #include <build_version.h>
#include <confirm.h> #include <confirm.h>
#include <base_units.h>
#include <wx/process.h> #include <wx/process.h>
/** /**
@ -251,14 +253,6 @@ void AddUnitSymbol( wxStaticText& Stext, EDA_UNITS_T aUnit )
} }
void PutValueInLocalUnits( wxTextCtrl& TextCtr, int Value, int Internal_Unit )
{
wxString msg = ReturnStringFromValue( g_UserUnit, Value, Internal_Unit );
TextCtr.SetValue( msg );
}
int ReturnValueFromTextCtrl( const wxTextCtrl& TextCtr, int Internal_Unit ) int ReturnValueFromTextCtrl( const wxTextCtrl& TextCtr, int Internal_Unit )
{ {
int value; int value;
@ -270,37 +264,6 @@ int ReturnValueFromTextCtrl( const wxTextCtrl& TextCtr, int Internal_Unit )
} }
wxString ReturnStringFromValue( EDA_UNITS_T aUnit, int aValue, int aInternal_Unit,
bool aAdd_unit_symbol )
{
wxString StringValue;
double value_to_print;
value_to_print = To_User_Unit( aUnit, aValue, aInternal_Unit );
// Yet another 'if Pcbnew' :(
StringValue.Printf( ( aInternal_Unit > 1000 ) ? wxT( "%.4f" ) : wxT( "%.3f" ),
value_to_print );
if( aAdd_unit_symbol )
switch( aUnit )
{
case INCHES:
StringValue += _( " \"" );
break;
case MILLIMETRES:
StringValue += _( " mm" );
break;
case UNSCALED_UNITS:
break;
}
return StringValue;
}
int ReturnValueFromString( EDA_UNITS_T aUnit, const wxString& TextValue, int Internal_Unit ) int ReturnValueFromString( EDA_UNITS_T aUnit, const wxString& TextValue, int Internal_Unit )
{ {
int Value; int Value;
@ -386,30 +349,6 @@ wxArrayString* wxStringSplit( wxString aString, wxChar aSplitter )
} }
/**
* Function To_User_Unit
* Convert in inch or mm the variable "val" (double)given in internal units
* @return the converted value, in double
* @param aUnit : user measure unit
* @param val : double : the given value
* @param internal_unit_value = internal units per inch
*/
double To_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value )
{
switch( aUnit )
{
case MILLIMETRES:
return val * 25.4 / internal_unit_value;
case INCHES:
return val / internal_unit_value;
default:
return val;
}
}
/* /*
* Return in internal units the value "val" given in inch or mm * Return in internal units the value "val" given in inch or mm
*/ */
@ -511,45 +450,6 @@ const wxString& valeur_param( int valeur, wxString& buf_texte )
} }
wxString CoordinateToString( int aValue, int aInternalUnits, bool aConvertToMils )
{
wxCHECK_MSG( (aInternalUnits == EESCHEMA_INTERNAL_UNIT)
|| (aInternalUnits == PCB_INTERNAL_UNIT),
wxString( _( "*** Bad Internal Units ***" ) ),
wxT( "Invalid interanl units value." ) );
wxString text;
const wxChar* format;
double value = To_User_Unit( g_UserUnit, aValue, aInternalUnits );
if( g_UserUnit == INCHES )
{
if( aConvertToMils )
{
format = ( aInternalUnits == EESCHEMA_INTERNAL_UNIT ) ? wxT( "%.0f" ) : wxT( "%.1f" );
value *= 1000;
}
else
{
format = ( aInternalUnits == EESCHEMA_INTERNAL_UNIT ) ? wxT( "%.3f" ) : wxT( "%.4f" );
}
}
else
{
format = ( aInternalUnits == EESCHEMA_INTERNAL_UNIT ) ? wxT( "%.2f" ) : wxT( "%.3f" );
}
text.Printf( format, value );
if( g_UserUnit == INCHES )
text += ( aConvertToMils ) ? _( " mils" ) : _( " in" );
else
text += _( " mm" );
return text;
}
wxString& operator <<( wxString& aString, const wxPoint& aPos ) wxString& operator <<( wxString& aString, const wxPoint& aPos )
{ {
wxString temp; wxString temp;
@ -560,3 +460,26 @@ wxString& operator <<( wxString& aString, const wxPoint& aPos )
return aString; return aString;
} }
double RoundTo0( double x, double precision )
{
assert( precision != 0 );
long long ix = wxRound( x * precision );
if ( x < 0.0 )
NEGATE( ix );
int remainder = ix % 10; // remainder is in precision mm
if ( remainder <= 2 )
ix -= remainder; // truncate to the near number
else if (remainder >= 8 )
ix += 10 - remainder; // round to near number
if ( x < 0 )
NEGATE( ix );
return (double) ix / precision;
}

View File

@ -40,6 +40,7 @@
#include <confirm.h> #include <confirm.h>
#include <kicad_device_context.h> #include <kicad_device_context.h>
#include <dialog_helpers.h> #include <dialog_helpers.h>
#include <base_units.h>
#include <wx/fontdlg.h> #include <wx/fontdlg.h>
@ -714,41 +715,9 @@ void EDA_DRAW_FRAME::SetLanguage( wxCommandEvent& event )
} }
/**
* 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
*/
double RoundTo0( double x, double precision )
{
assert( precision != 0 );
long long ix = wxRound( x * precision );
if ( x < 0.0 )
NEGATE( ix );
int remainder = ix % 10; // remainder is in precision mm
if ( remainder <= 2 )
ix -= remainder; // truncate to the near number
else if (remainder >= 8 )
ix += 10 - remainder; // round to near number
if ( x < 0 )
NEGATE( ix );
return (double) ix / precision;
}
void EDA_DRAW_FRAME::UpdateStatusBar() void EDA_DRAW_FRAME::UpdateStatusBar()
{ {
wxString Line; wxString Line;
int dx, dy;
BASE_SCREEN* screen = GetScreen(); BASE_SCREEN* screen = GetScreen();
if( !screen ) if( !screen )
@ -759,76 +728,8 @@ void EDA_DRAW_FRAME::UpdateStatusBar()
SetStatusText( Line, 1 ); SetStatusText( Line, 1 );
// Display absolute coordinates: // Absolute and relative cursor positions are handled by overloading this function and
double dXpos = To_User_Unit( g_UserUnit, screen->GetCrossHairPosition().x, m_internalUnits ); // handling the internal to user units conversion at the appropriate level.
double dYpos = To_User_Unit( g_UserUnit, screen->GetCrossHairPosition().y, m_internalUnits );
/*
* Converting from inches to mm can give some coordinates due to
* float point precision rounding errors, like 1.999 or 2.001 so
* round to the nearest drawing precision required by the application.
*/
if ( g_UserUnit == MILLIMETRES )
{
dXpos = RoundTo0( dXpos, (double)( m_internalUnits / 10 ) );
dYpos = RoundTo0( dYpos, (double)( m_internalUnits / 10 ) );
}
// The following sadly is an if Eeschema/if Pcbnew
wxString absformatter;
wxString locformatter;
switch( g_UserUnit )
{
case INCHES:
if( m_internalUnits == EESCHEMA_INTERNAL_UNIT )
{
absformatter = wxT( "X %.3f Y %.3f" );
locformatter = wxT( "dx %.3f dy %.3f d %.3f" );
}
else
{
absformatter = wxT( "X %.4f Y %.4f" );
locformatter = wxT( "dx %.4f dy %.4f d %.4f" );
}
break;
case MILLIMETRES:
if( m_internalUnits == EESCHEMA_INTERNAL_UNIT )
{
absformatter = wxT( "X %.2f Y %.2f" );
locformatter = wxT( "dx %.2f dy %.2f d %.2f" );
}
else
{
absformatter = wxT( "X %.3f Y %.3f" );
locformatter = wxT( "dx %.3f dy %.3f d %.3f" );
}
break;
case UNSCALED_UNITS:
absformatter = wxT( "X %f Y %f" );
locformatter = wxT( "dx %f dy %f d %f" );
break;
}
Line.Printf( absformatter, dXpos, dYpos );
SetStatusText( Line, 2 );
// Display relative coordinates:
dx = screen->GetCrossHairPosition().x - screen->m_O_Curseur.x;
dy = screen->GetCrossHairPosition().y - screen->m_O_Curseur.y;
dXpos = To_User_Unit( g_UserUnit, dx, m_internalUnits );
dYpos = To_User_Unit( g_UserUnit, dy, m_internalUnits );
if( g_UserUnit == MILLIMETRES )
{
dXpos = RoundTo0( dXpos, (double) ( m_internalUnits / 10 ) );
dYpos = RoundTo0( dYpos, (double) ( m_internalUnits / 10 ) );
}
// We already decided the formatter above
Line.Printf( locformatter, dXpos, dYpos, sqrt( dXpos * dXpos + dYpos * dYpos ) );
SetStatusText( Line, 3 );
// refresh units display // refresh units display
DisplayUnitsMsg(); DisplayUnitsMsg();
@ -893,7 +794,7 @@ void EDA_DRAW_FRAME::ClearMsgPanel( void )
wxString EDA_DRAW_FRAME::CoordinateToString( int aValue, bool aConvertToMils ) wxString EDA_DRAW_FRAME::CoordinateToString( int aValue, bool aConvertToMils )
{ {
return ::CoordinateToString( aValue, m_internalUnits, aConvertToMils ); return ::CoordinateToString( aValue, aConvertToMils );
} }

View File

@ -1,3 +1,27 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2004 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
* Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/** /**
* @file wxwineda.cpp * @file wxwineda.cpp
*/ */
@ -5,6 +29,7 @@
#include <fctsys.h> #include <fctsys.h>
#include <wxstruct.h> #include <wxstruct.h>
#include <dialog_helpers.h> #include <dialog_helpers.h>
#include <base_units.h>
/*******************************************************/ /*******************************************************/
@ -72,7 +97,7 @@ wxString EDA_GRAPHIC_TEXT_CTRL::FormatSize( int internalUnit, EDA_UNITS_T aUnit,
textSize = 3000; textSize = 3000;
value.Printf( ( internalUnit > 1000 ) ? wxT( "%.4f" ) : wxT( "%.3f" ), value.Printf( ( internalUnit > 1000 ) ? wxT( "%.4f" ) : wxT( "%.3f" ),
To_User_Unit( aUnit, textSize, internalUnit ) ); To_User_Unit( aUnit, textSize ) );
return value; return value;
} }
@ -220,11 +245,11 @@ void EDA_POSITION_CTRL::SetValue( int x_value, int y_value )
m_Pos_To_Edit.x = x_value; m_Pos_To_Edit.x = x_value;
m_Pos_To_Edit.y = y_value; m_Pos_To_Edit.y = y_value;
msg = ReturnStringFromValue( m_UserUnit, m_Pos_To_Edit.x, m_Internal_Unit ); msg = ReturnStringFromValue( m_UserUnit, m_Pos_To_Edit.x );
m_FramePosX->Clear(); m_FramePosX->Clear();
m_FramePosX->SetValue( msg ); m_FramePosX->SetValue( msg );
msg = ReturnStringFromValue( m_UserUnit, m_Pos_To_Edit.y, m_Internal_Unit ); msg = ReturnStringFromValue( m_UserUnit, m_Pos_To_Edit.y );
m_FramePosY->Clear(); m_FramePosY->Clear();
m_FramePosY->SetValue( msg ); m_FramePosY->SetValue( msg );
} }
@ -274,8 +299,7 @@ EDA_VALUE_CTRL::EDA_VALUE_CTRL( wxWindow* parent, const wxString& title,
BoxSizer->Add( m_Text, 0, BoxSizer->Add( m_Text, 0,
wxGROW | wxLEFT | wxRIGHT | wxTOP, 5 ); wxGROW | wxLEFT | wxRIGHT | wxTOP, 5 );
wxString stringvalue = ReturnStringFromValue( m_UserUnit, m_Value, wxString stringvalue = ReturnStringFromValue( m_UserUnit, m_Value );
m_Internal_Unit );
m_ValueCtrl = new wxTextCtrl( parent, -1, stringvalue ); m_ValueCtrl = new wxTextCtrl( parent, -1, stringvalue );
BoxSizer->Add( m_ValueCtrl, BoxSizer->Add( m_ValueCtrl,
@ -308,7 +332,7 @@ void EDA_VALUE_CTRL::SetValue( int new_value )
m_Value = new_value; m_Value = new_value;
buffer = ReturnStringFromValue( m_UserUnit, m_Value, m_Internal_Unit ); buffer = ReturnStringFromValue( m_UserUnit, m_Value );
m_ValueCtrl->SetValue( buffer ); m_ValueCtrl->SetValue( buffer );
} }

View File

@ -1,6 +1,30 @@
/************/ /*
/* zoom.cpp */ * This program source code file is part of KiCad, a free EDA CAD application.
/************/ *
* Copyright (C) 2004 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
* Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @file zoom.cpp
*/
/* /*
* Manage zoom, grid step, and auto crop. * Manage zoom, grid step, and auto crop.
@ -15,6 +39,7 @@
#include <kicad_device_context.h> #include <kicad_device_context.h>
#include <hotkeys_basic.h> #include <hotkeys_basic.h>
#include <menus_helpers.h> #include <menus_helpers.h>
#include <base_units.h>
void EDA_DRAW_FRAME::RedrawScreen( const wxPoint& aCenterPoint, bool aWarpPointer ) void EDA_DRAW_FRAME::RedrawScreen( const wxPoint& aCenterPoint, bool aWarpPointer )
@ -198,8 +223,8 @@ void EDA_DRAW_FRAME::AddMenuZoomAndGrid( wxMenu* MasterMenu )
for( size_t i = 0; i < screen->GetGridCount(); i++ ) for( size_t i = 0; i < screen->GetGridCount(); i++ )
{ {
tmp = screen->GetGrid( i ); tmp = screen->GetGrid( i );
double gridValueInch = To_User_Unit( INCHES, tmp.m_Size.x, m_internalUnits ); double gridValueInch = To_User_Unit( INCHES, tmp.m_Size.x );
double gridValue_mm = To_User_Unit( MILLIMETRES, tmp.m_Size.x, m_internalUnits ); double gridValue_mm = To_User_Unit( MILLIMETRES, tmp.m_Size.x );
if( tmp.m_Id == ID_POPUP_GRID_USER ) if( tmp.m_Id == ID_POPUP_GRID_USER )
{ {

View File

@ -162,6 +162,7 @@ set(EESCHEMA_COMMON_SRCS
../common/base_screen.cpp ../common/base_screen.cpp
../common/eda_text.cpp ../common/eda_text.cpp
../common/class_page_info.cpp ../common/class_page_info.cpp
../common/base_units.cpp
) )

View File

@ -36,6 +36,8 @@
#include <class_sch_screen.h> #include <class_sch_screen.h>
#include <wxEeschemaStruct.h> #include <wxEeschemaStruct.h>
#include <dcsvg.h> #include <dcsvg.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <libeditframe.h> #include <libeditframe.h>
#include <sch_sheet_path.h> #include <sch_sheet_path.h>
@ -78,8 +80,7 @@ void DIALOG_SVG_PRINT::OnInitDialog( wxInitDialogEvent& event )
AddUnitSymbol( *m_TextPenWidth, g_UserUnit ); AddUnitSymbol( *m_TextPenWidth, g_UserUnit );
m_DialogPenWidth->SetValue( m_DialogPenWidth->SetValue(
ReturnStringFromValue( g_UserUnit, g_DrawDefaultLineThickness, ReturnStringFromValue( g_UserUnit, g_DrawDefaultLineThickness ) );
m_Parent->GetInternalUnits() ) );
m_Print_Sheet_Ref->SetValue( s_Print_Frame_Ref ); m_Print_Sheet_Ref->SetValue( s_Print_Frame_Ref );
if( GetSizer() ) if( GetSizer() )
@ -105,8 +106,7 @@ void DIALOG_SVG_PRINT::SetPenWidth()
} }
m_DialogPenWidth->SetValue( m_DialogPenWidth->SetValue(
ReturnStringFromValue( g_UserUnit, g_DrawDefaultLineThickness, ReturnStringFromValue( g_UserUnit, g_DrawDefaultLineThickness ) );
m_Parent->GetInternalUnits() ) );
} }

View File

@ -11,6 +11,7 @@
#include <confirm.h> #include <confirm.h>
#include <class_sch_screen.h> #include <class_sch_screen.h>
#include <wxEeschemaStruct.h> #include <wxEeschemaStruct.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <class_library.h> #include <class_library.h>
@ -655,10 +656,10 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copySelectedFieldToPanel()
// top of each other. // top of each other.
} }
wxString coordText = ReturnStringFromValue( g_UserUnit, coord.x, EESCHEMA_INTERNAL_UNIT ); wxString coordText = ReturnStringFromValue( g_UserUnit, coord.x );
posXTextCtrl->SetValue( coordText ); posXTextCtrl->SetValue( coordText );
coordText = ReturnStringFromValue( g_UserUnit, coord.y, EESCHEMA_INTERNAL_UNIT ); coordText = ReturnStringFromValue( g_UserUnit, coord.y );
posYTextCtrl->SetValue( coordText ); posYTextCtrl->SetValue( coordText );
} }

View File

@ -31,6 +31,7 @@
#include <fctsys.h> #include <fctsys.h>
#include <wx/valgen.h> #include <wx/valgen.h>
#include <wxEeschemaStruct.h> #include <wxEeschemaStruct.h>
#include <base_units.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <general.h> #include <general.h>
@ -196,8 +197,7 @@ void DialogLabelEditor::InitDialog()
msg = _( "H" ) + units + _( " x W" ) + units; msg = _( "H" ) + units + _( " x W" ) + units;
m_staticSizeUnits->SetLabel( msg ); m_staticSizeUnits->SetLabel( msg );
msg = ReturnStringFromValue( g_UserUnit, m_CurrentText->m_Size.x, msg = ReturnStringFromValue( g_UserUnit, m_CurrentText->m_Size.x );
m_Parent->GetInternalUnits() );
m_TextSize->SetValue( msg ); m_TextSize->SetValue( msg );
if( m_CurrentText->Type() != SCH_GLOBAL_LABEL_T if( m_CurrentText->Type() != SCH_GLOBAL_LABEL_T

View File

@ -10,6 +10,7 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <wxEeschemaStruct.h> #include <wxEeschemaStruct.h>
#include <id.h> #include <id.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <protos.h> #include <protos.h>
@ -679,13 +680,13 @@ void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::copySelectedFieldToPanel()
// top of each other. // top of each other.
} }
wxString coordText = ReturnStringFromValue( g_UserUnit, coord.x, EESCHEMA_INTERNAL_UNIT ); wxString coordText = ReturnStringFromValue( g_UserUnit, coord.x );
posXTextCtrl->SetValue( coordText ); posXTextCtrl->SetValue( coordText );
// Note: the Y axis for components in lib is from bottom to top // Note: the Y axis for components in lib is from bottom to top
// and the screen axis is top to bottom: we must change the y coord sign for editing // and the screen axis is top to bottom: we must change the y coord sign for editing
NEGATE( coord.y ); NEGATE( coord.y );
coordText = ReturnStringFromValue( g_UserUnit, coord.y, EESCHEMA_INTERNAL_UNIT ); coordText = ReturnStringFromValue( g_UserUnit, coord.y );
posYTextCtrl->SetValue( coordText ); posYTextCtrl->SetValue( coordText );
} }

View File

@ -29,6 +29,7 @@
#include <fctsys.h> #include <fctsys.h>
#include <common.h> #include <common.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <sch_base_frame.h> #include <sch_base_frame.h>
@ -52,8 +53,7 @@ void DIALOG_EDIT_ONE_FIELD::initDlg_base( )
m_CommonConvert->Show(false); m_CommonConvert->Show(false);
m_CommonUnit->Show(false); m_CommonUnit->Show(false);
msg = ReturnStringFromValue( g_UserUnit, m_textsize, msg = ReturnStringFromValue( g_UserUnit, m_textsize );
m_parent->GetInternalUnits() );
m_TextSize->SetValue( msg ); m_TextSize->SetValue( msg );
if( m_textorient == TEXT_ORIENT_VERT ) if( m_textorient == TEXT_ORIENT_VERT )

View File

@ -31,6 +31,7 @@
#include <gr_basic.h> #include <gr_basic.h>
#include <common.h> #include <common.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <libeditframe.h> #include <libeditframe.h>
@ -63,8 +64,7 @@ void DIALOG_LIB_EDIT_TEXT::initDlg( )
if ( m_graphicText ) if ( m_graphicText )
{ {
msg = ReturnStringFromValue( g_UserUnit, m_graphicText->m_Size.x, msg = ReturnStringFromValue( g_UserUnit, m_graphicText->m_Size.x );
m_parent->GetInternalUnits() );
m_TextSize->SetValue( msg ); m_TextSize->SetValue( msg );
m_TextValue->SetValue( m_graphicText->m_Text ); m_TextValue->SetValue( m_graphicText->m_Text );
@ -116,8 +116,7 @@ void DIALOG_LIB_EDIT_TEXT::initDlg( )
} }
else else
{ {
msg = ReturnStringFromValue( g_UserUnit, m_parent->m_textSize, msg = ReturnStringFromValue( g_UserUnit, m_parent->m_textSize );
m_parent->GetInternalUnits() );
m_TextSize->SetValue( msg ); m_TextSize->SetValue( msg );
if ( ! m_parent->m_drawSpecificUnit ) if ( ! m_parent->m_drawSpecificUnit )

View File

@ -32,6 +32,7 @@
#include <worksheet.h> #include <worksheet.h>
#include <class_sch_screen.h> #include <class_sch_screen.h>
#include <wxEeschemaStruct.h> #include <wxEeschemaStruct.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <protos.h> #include <protos.h>
@ -148,7 +149,7 @@ void DIALOG_PLOT_SCHEMATIC_HPGL::initDlg()
// Set validators // Set validators
m_SizeOption->SetSelection( s_pageSizeSelect ); m_SizeOption->SetSelection( s_pageSizeSelect );
AddUnitSymbol( *m_penWidthTitle, g_UserUnit ); AddUnitSymbol( *m_penWidthTitle, g_UserUnit );
PutValueInLocalUnits( *m_penWidthCtrl, g_HPGL_Pen_Descr. m_Pen_Diam, EESCHEMA_INTERNAL_UNIT ); PutValueInLocalUnits( *m_penWidthCtrl, g_HPGL_Pen_Descr. m_Pen_Diam );
m_penSpeedCtrl->SetValue( g_HPGL_Pen_Descr. m_Pen_Speed ); m_penSpeedCtrl->SetValue( g_HPGL_Pen_Descr. m_Pen_Speed );
m_penNumCtrl->SetValue( g_HPGL_Pen_Descr. m_Pen_Num ); m_penNumCtrl->SetValue( g_HPGL_Pen_Descr. m_Pen_Num );
} }
@ -179,15 +180,11 @@ void DIALOG_PLOT_SCHEMATIC_HPGL::SetPageOffsetValue()
if( s_pageSizeSelect != PAGE_DEFAULT ) if( s_pageSizeSelect != PAGE_DEFAULT )
{ {
msg = ReturnStringFromValue( g_UserUnit, msg = ReturnStringFromValue( g_UserUnit, s_Offset.x );
s_Offset.x,
EESCHEMA_INTERNAL_UNIT );
m_PlotOrgPosition_X->SetValue( msg ); m_PlotOrgPosition_X->SetValue( msg );
msg = ReturnStringFromValue( g_UserUnit, msg = ReturnStringFromValue( g_UserUnit, s_Offset.y );
s_Offset.y,
EESCHEMA_INTERNAL_UNIT );
m_PlotOrgPosition_Y->SetValue( msg ); m_PlotOrgPosition_Y->SetValue( msg );

View File

@ -32,6 +32,7 @@
#include <plot_common.h> #include <plot_common.h>
#include <class_sch_screen.h> #include <class_sch_screen.h>
#include <wxEeschemaStruct.h> #include <wxEeschemaStruct.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <protos.h> #include <protos.h>
@ -115,8 +116,7 @@ void DIALOG_PLOT_SCHEMATIC_PS::initDlg()
m_Plot_Sheet_Ref_Ctrl->SetValue( m_plot_Sheet_Ref ); m_Plot_Sheet_Ref_Ctrl->SetValue( m_plot_Sheet_Ref );
AddUnitSymbol( *m_defaultLineWidthTitle, g_UserUnit ); AddUnitSymbol( *m_defaultLineWidthTitle, g_UserUnit );
PutValueInLocalUnits( *m_DefaultLineSizeCtrl, PutValueInLocalUnits( *m_DefaultLineSizeCtrl, g_DrawDefaultLineThickness );
g_DrawDefaultLineThickness, EESCHEMA_INTERNAL_UNIT );
} }

View File

@ -9,6 +9,7 @@
#include <confirm.h> #include <confirm.h>
#include <class_sch_screen.h> #include <class_sch_screen.h>
#include <wxEeschemaStruct.h> #include <wxEeschemaStruct.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <eeschema_config.h> #include <eeschema_config.h>

View File

@ -40,6 +40,7 @@
#include <kicad_string.h> #include <kicad_string.h>
#include <gestfich.h> #include <gestfich.h>
#include <wxEeschemaStruct.h> #include <wxEeschemaStruct.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <protos.h> #include <protos.h>
@ -95,10 +96,8 @@ void SCH_EDIT_FRAME::OnFindDrcMarker( wxFindDialogEvent& event )
wxString path = sheetFoundIn->Path(); wxString path = sheetFoundIn->Path();
wxString units = GetAbbreviatedUnitsLabel(); wxString units = GetAbbreviatedUnitsLabel();
double x = To_User_Unit( g_UserUnit, (double) lastMarker->GetPosition().x, double x = To_User_Unit( g_UserUnit, (double) lastMarker->GetPosition().x );
m_internalUnits ); double y = To_User_Unit( g_UserUnit, (double) lastMarker->GetPosition().y );
double y = To_User_Unit( g_UserUnit, (double) lastMarker->GetPosition().y,
m_internalUnits );
msg.Printf( _( "Design rule check marker found in sheet %s at %0.3f%s, %0.3f%s" ), msg.Printf( _( "Design rule check marker found in sheet %s at %0.3f%s, %0.3f%s" ),
GetChars( path ), x, GetChars( units ), y, GetChars( units) ); GetChars( path ), x, GetChars( units ), y, GetChars( units) );
SetStatusText( msg ); SetStatusText( msg );

View File

@ -34,6 +34,7 @@
#include <trigo.h> #include <trigo.h>
#include <wxstruct.h> #include <wxstruct.h>
#include <richio.h> #include <richio.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <protos.h> #include <protos.h>
@ -507,7 +508,7 @@ void LIB_ARC::DisplayInfo( EDA_DRAW_FRAME* aFrame )
LIB_ITEM::DisplayInfo( aFrame ); LIB_ITEM::DisplayInfo( aFrame );
msg = ReturnStringFromValue( g_UserUnit, m_Width, EESCHEMA_INTERNAL_UNIT, true ); msg = ReturnStringFromValue( g_UserUnit, m_Width, true );
aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE ); aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE );
@ -521,9 +522,9 @@ void LIB_ARC::DisplayInfo( EDA_DRAW_FRAME* aFrame )
wxString LIB_ARC::GetSelectMenuText() const wxString LIB_ARC::GetSelectMenuText() const
{ {
return wxString::Format( _( "Arc center (%s, %s), radius %s" ), return wxString::Format( _( "Arc center (%s, %s), radius %s" ),
GetChars( CoordinateToString( m_Pos.x, EESCHEMA_INTERNAL_UNIT ) ), GetChars( CoordinateToString( m_Pos.x ) ),
GetChars( CoordinateToString( m_Pos.y, EESCHEMA_INTERNAL_UNIT ) ), GetChars( CoordinateToString( m_Pos.y ) ),
GetChars( CoordinateToString( m_Radius, EESCHEMA_INTERNAL_UNIT ) ) ); GetChars( CoordinateToString( m_Radius ) ) );
} }

View File

@ -35,6 +35,7 @@
#include <wxstruct.h> #include <wxstruct.h>
#include <bezier_curves.h> #include <bezier_curves.h>
#include <richio.h> #include <richio.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <protos.h> #include <protos.h>
@ -410,7 +411,7 @@ void LIB_BEZIER::DisplayInfo( EDA_DRAW_FRAME* aFrame )
LIB_ITEM::DisplayInfo( aFrame ); LIB_ITEM::DisplayInfo( aFrame );
msg = ReturnStringFromValue( g_UserUnit, m_Width, EESCHEMA_INTERNAL_UNIT, true ); msg = ReturnStringFromValue( g_UserUnit, m_Width, true );
aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE ); aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE );

View File

@ -35,6 +35,7 @@
#include <trigo.h> #include <trigo.h>
#include <wxstruct.h> #include <wxstruct.h>
#include <richio.h> #include <richio.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <protos.h> #include <protos.h>
@ -270,11 +271,11 @@ void LIB_CIRCLE::DisplayInfo( EDA_DRAW_FRAME* aFrame )
LIB_ITEM::DisplayInfo( aFrame ); LIB_ITEM::DisplayInfo( aFrame );
msg = ReturnStringFromValue( g_UserUnit, m_Width, EESCHEMA_INTERNAL_UNIT, true ); msg = ReturnStringFromValue( g_UserUnit, m_Width, true );
aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE ); aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE );
msg = ReturnStringFromValue( g_UserUnit, m_Radius, EESCHEMA_INTERNAL_UNIT, true ); msg = ReturnStringFromValue( g_UserUnit, m_Radius, true );
aFrame->AppendMsgPanel( _( "Radius" ), msg, RED ); aFrame->AppendMsgPanel( _( "Radius" ), msg, RED );
msg.Printf( wxT( "(%d, %d, %d, %d)" ), bBox.GetOrigin().x, msg.Printf( wxT( "(%d, %d, %d, %d)" ), bBox.GetOrigin().x,
@ -287,9 +288,9 @@ void LIB_CIRCLE::DisplayInfo( EDA_DRAW_FRAME* aFrame )
wxString LIB_CIRCLE::GetSelectMenuText() const wxString LIB_CIRCLE::GetSelectMenuText() const
{ {
return wxString::Format( _( "Circle center (%s, %s), radius %s" ), return wxString::Format( _( "Circle center (%s, %s), radius %s" ),
GetChars( CoordinateToString( m_Pos.x, EESCHEMA_INTERNAL_UNIT ) ), GetChars( CoordinateToString( m_Pos.x ) ),
GetChars( CoordinateToString( m_Pos.y, EESCHEMA_INTERNAL_UNIT ) ), GetChars( CoordinateToString( m_Pos.y ) ),
GetChars( CoordinateToString( m_Radius, EESCHEMA_INTERNAL_UNIT ) ) ); GetChars( CoordinateToString( m_Radius ) ) );
} }

View File

@ -36,6 +36,7 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <plot_common.h> #include <plot_common.h>
#include <trigo.h> #include <trigo.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <protos.h> #include <protos.h>
@ -731,10 +732,10 @@ void LIB_FIELD::DisplayInfo( EDA_DRAW_FRAME* aFrame )
msg = GetTextStyleName(); msg = GetTextStyleName();
aFrame->AppendMsgPanel( _( "Style" ), msg, MAGENTA ); aFrame->AppendMsgPanel( _( "Style" ), msg, MAGENTA );
msg = ReturnStringFromValue( g_UserUnit, m_Size.x, EESCHEMA_INTERNAL_UNIT, true ); msg = ReturnStringFromValue( g_UserUnit, m_Size.x, true );
aFrame->AppendMsgPanel( _( "Size X" ), msg, BLUE ); aFrame->AppendMsgPanel( _( "Size X" ), msg, BLUE );
msg = ReturnStringFromValue( g_UserUnit, m_Size.y, EESCHEMA_INTERNAL_UNIT, true ); msg = ReturnStringFromValue( g_UserUnit, m_Size.y, true );
aFrame->AppendMsgPanel( _( "Size Y" ), msg, BLUE ); aFrame->AppendMsgPanel( _( "Size Y" ), msg, BLUE );
// Display field name (ref, value ...) // Display field name (ref, value ...)

View File

@ -36,6 +36,7 @@
#include <plot_common.h> #include <plot_common.h>
#include <wxEeschemaStruct.h> #include <wxEeschemaStruct.h>
#include <richio.h> #include <richio.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <protos.h> #include <protos.h>
@ -1854,7 +1855,7 @@ void LIB_PIN::DisplayInfo( EDA_DRAW_FRAME* aFrame )
aFrame->AppendMsgPanel( _( "Visible" ), Text, DARKGREEN ); aFrame->AppendMsgPanel( _( "Visible" ), Text, DARKGREEN );
/* Display pin length */ /* Display pin length */
Text = ReturnStringFromValue( g_UserUnit, m_length, EESCHEMA_INTERNAL_UNIT, true ); Text = ReturnStringFromValue( g_UserUnit, m_length, true );
aFrame->AppendMsgPanel( _( "Length" ), Text, MAGENTA ); aFrame->AppendMsgPanel( _( "Length" ), Text, MAGENTA );
Text = wxGetTranslation( pin_orientation_names[ GetOrientationCodeIndex( m_orientation ) ] ); Text = wxGetTranslation( pin_orientation_names[ GetOrientationCodeIndex( m_orientation ) ] );

View File

@ -34,6 +34,7 @@
#include <trigo.h> #include <trigo.h>
#include <wxstruct.h> #include <wxstruct.h>
#include <richio.h> #include <richio.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <protos.h> #include <protos.h>
@ -398,7 +399,7 @@ void LIB_POLYLINE::DisplayInfo( EDA_DRAW_FRAME* aFrame )
LIB_ITEM::DisplayInfo( aFrame ); LIB_ITEM::DisplayInfo( aFrame );
msg = ReturnStringFromValue( g_UserUnit, m_Width, EESCHEMA_INTERNAL_UNIT, true ); msg = ReturnStringFromValue( g_UserUnit, m_Width, true );
aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE ); aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE );
@ -412,10 +413,8 @@ void LIB_POLYLINE::DisplayInfo( EDA_DRAW_FRAME* aFrame )
wxString LIB_POLYLINE::GetSelectMenuText() const wxString LIB_POLYLINE::GetSelectMenuText() const
{ {
return wxString::Format( _( "Polyline at (%s, %s) with %u points" ), return wxString::Format( _( "Polyline at (%s, %s) with %u points" ),
GetChars( CoordinateToString( m_PolyPoints[0].x, GetChars( CoordinateToString( m_PolyPoints[0].x ) ),
EESCHEMA_INTERNAL_UNIT ) ), GetChars( CoordinateToString( m_PolyPoints[0].y ) ),
GetChars( CoordinateToString( m_PolyPoints[0].y,
EESCHEMA_INTERNAL_UNIT ) ),
m_PolyPoints.size() ); m_PolyPoints.size() );
} }

View File

@ -34,6 +34,7 @@
#include <trigo.h> #include <trigo.h>
#include <wxstruct.h> #include <wxstruct.h>
#include <richio.h> #include <richio.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <protos.h> #include <protos.h>
@ -248,7 +249,7 @@ void LIB_RECTANGLE::DisplayInfo( EDA_DRAW_FRAME* aFrame )
LIB_ITEM::DisplayInfo( aFrame ); LIB_ITEM::DisplayInfo( aFrame );
msg = ReturnStringFromValue( g_UserUnit, m_Width, EESCHEMA_INTERNAL_UNIT, true ); msg = ReturnStringFromValue( g_UserUnit, m_Width, true );
aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE ); aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE );
} }
@ -324,10 +325,10 @@ bool LIB_RECTANGLE::HitTest( wxPoint aPosition, int aThreshold, const TRANSFORM&
wxString LIB_RECTANGLE::GetSelectMenuText() const wxString LIB_RECTANGLE::GetSelectMenuText() const
{ {
return wxString::Format( _( "Rectangle from (%s, %s) to (%s, %s)" ), return wxString::Format( _( "Rectangle from (%s, %s) to (%s, %s)" ),
GetChars( CoordinateToString( m_Pos.x, EESCHEMA_INTERNAL_UNIT ) ), GetChars( CoordinateToString( m_Pos.x ) ),
GetChars( CoordinateToString( m_Pos.y, EESCHEMA_INTERNAL_UNIT ) ), GetChars( CoordinateToString( m_Pos.y ) ),
GetChars( CoordinateToString( m_End.x, EESCHEMA_INTERNAL_UNIT ) ), GetChars( CoordinateToString( m_End.x ) ),
GetChars( CoordinateToString( m_End.y, EESCHEMA_INTERNAL_UNIT ) ) ); GetChars( CoordinateToString( m_End.y ) ) );
} }

View File

@ -35,6 +35,7 @@
#include <trigo.h> #include <trigo.h>
#include <wxstruct.h> #include <wxstruct.h>
#include <richio.h> #include <richio.h>
#include <base_units.h>
#include <lib_draw_item.h> #include <lib_draw_item.h>
#include <general.h> #include <general.h>
@ -413,7 +414,7 @@ void LIB_TEXT::DisplayInfo( EDA_DRAW_FRAME* frame )
LIB_ITEM::DisplayInfo( frame ); LIB_ITEM::DisplayInfo( frame );
msg = ReturnStringFromValue( g_UserUnit, m_Thickness, EESCHEMA_INTERNAL_UNIT, true ); msg = ReturnStringFromValue( g_UserUnit, m_Thickness, true );
frame->AppendMsgPanel( _( "Line width" ), msg, BLUE ); frame->AppendMsgPanel( _( "Line width" ), msg, BLUE );
} }

View File

@ -33,6 +33,7 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <confirm.h> #include <confirm.h>
#include <class_sch_screen.h> #include <class_sch_screen.h>
#include <base_units.h>
#include <libeditframe.h> #include <libeditframe.h>
#include <eeschema_id.h> #include <eeschema_id.h>
@ -84,14 +85,10 @@ void LIB_EDIT_FRAME::OnEditPin( wxCommandEvent& event )
LIB_PIN::GetElectricalTypeSymbols() ); LIB_PIN::GetElectricalTypeSymbols() );
dlg.SetElectricalType( pin->GetType() ); dlg.SetElectricalType( pin->GetType() );
dlg.SetName( pin->GetName() ); dlg.SetName( pin->GetName() );
dlg.SetNameTextSize( ReturnStringFromValue( g_UserUnit, dlg.SetNameTextSize( ReturnStringFromValue( g_UserUnit, pin->GetNameTextSize() ) );
pin->GetNameTextSize(),
m_internalUnits ) );
dlg.SetNameTextSizeUnits( units ); dlg.SetNameTextSizeUnits( units );
dlg.SetPadName( pin->GetNumberString() ); dlg.SetPadName( pin->GetNumberString() );
dlg.SetPadNameTextSize( ReturnStringFromValue( g_UserUnit, dlg.SetPadNameTextSize( ReturnStringFromValue( g_UserUnit, pin->GetNumberTextSize() ) );
pin->GetNumberTextSize(),
m_internalUnits ) );
dlg.SetPadNameTextSizeUnits( units ); dlg.SetPadNameTextSizeUnits( units );
dlg.SetLength( ReturnStringFromValue( g_UserUnit, pin->GetLength(), m_internalUnits ) ); dlg.SetLength( ReturnStringFromValue( g_UserUnit, pin->GetLength(), m_internalUnits ) );

View File

@ -25,6 +25,7 @@
#include <sch_base_frame.h> #include <sch_base_frame.h>
#include <viewlib_frame.h> #include <viewlib_frame.h>
#include <libeditframe.h> #include <libeditframe.h>
#include <base_units.h>
SCH_BASE_FRAME::SCH_BASE_FRAME( wxWindow* aParent, SCH_BASE_FRAME::SCH_BASE_FRAME( wxWindow* aParent,
id_drawframe aWindowType, id_drawframe aWindowType,
@ -107,3 +108,69 @@ void SCH_BASE_FRAME::SetTitleBlock( const TITLE_BLOCK& aTitleBlock )
wxASSERT( GetScreen() ); wxASSERT( GetScreen() );
GetScreen()->SetTitleBlock( aTitleBlock ); GetScreen()->SetTitleBlock( aTitleBlock );
} }
void SCH_BASE_FRAME::UpdateStatusBar()
{
wxString line;
int dx, dy;
BASE_SCREEN* screen = GetScreen();
if( !screen )
return;
EDA_DRAW_FRAME::UpdateStatusBar();
// Display absolute coordinates:
double dXpos = To_User_Unit( g_UserUnit, screen->GetCrossHairPosition().x );
double dYpos = To_User_Unit( g_UserUnit, screen->GetCrossHairPosition().y );
if ( g_UserUnit == MILLIMETRES )
{
dXpos = RoundTo0( dXpos, 100.0 );
dYpos = RoundTo0( dYpos, 100.0 );
}
wxString absformatter;
wxString locformatter;
switch( g_UserUnit )
{
case INCHES:
absformatter = wxT( "X %.3f Y %.3f" );
locformatter = wxT( "dx %.3f dy %.3f d %.3f" );
break;
case MILLIMETRES:
absformatter = wxT( "X %.2f Y %.2f" );
locformatter = wxT( "dx %.2f dy %.2f d %.2f" );
break;
case UNSCALED_UNITS:
absformatter = wxT( "X %f Y %f" );
locformatter = wxT( "dx %f dy %f d %f" );
break;
}
line.Printf( absformatter, dXpos, dYpos );
SetStatusText( line, 2 );
// Display relative coordinates:
dx = screen->GetCrossHairPosition().x - screen->m_O_Curseur.x;
dy = screen->GetCrossHairPosition().y - screen->m_O_Curseur.y;
dXpos = To_User_Unit( g_UserUnit, dx );
dYpos = To_User_Unit( g_UserUnit, dy );
if( g_UserUnit == MILLIMETRES )
{
dXpos = RoundTo0( dXpos, 100.0 );
dYpos = RoundTo0( dYpos, 100.0 );
}
// We already decided the formatter above
line.Printf( locformatter, dXpos, dYpos, sqrt( dXpos * dXpos + dYpos * dYpos ) );
SetStatusText( line, 3 );
// refresh units display
DisplayUnitsMsg();
}

View File

@ -34,6 +34,7 @@
#include <trigo.h> #include <trigo.h>
#include <richio.h> #include <richio.h>
#include <plot_common.h> #include <plot_common.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <protos.h> #include <protos.h>
@ -502,10 +503,10 @@ wxString SCH_LINE::GetSelectMenuText() const
} }
menuText.Printf( txtfmt, GetChars( orient ), menuText.Printf( txtfmt, GetChars( orient ),
GetChars(CoordinateToString( m_start.x, EESCHEMA_INTERNAL_UNIT )), GetChars( CoordinateToString( m_start.x ) ),
GetChars(CoordinateToString( m_start.y, EESCHEMA_INTERNAL_UNIT )), GetChars( CoordinateToString( m_start.y ) ),
GetChars(CoordinateToString( m_end.x, EESCHEMA_INTERNAL_UNIT )), GetChars( CoordinateToString( m_end.x ) ),
GetChars(CoordinateToString( m_end.y, EESCHEMA_INTERNAL_UNIT )) ); GetChars( CoordinateToString( m_end.y ) ) );
return menuText; return menuText;
} }

View File

@ -31,6 +31,7 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <confirm.h> #include <confirm.h>
#include <wxEeschemaStruct.h> #include <wxEeschemaStruct.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <sch_sheet.h> #include <sch_sheet.h>
@ -49,14 +50,10 @@ bool SCH_EDIT_FRAME::EditSheet( SCH_SHEET* aSheet, wxDC* aDC )
wxString units = GetUnitsLabel( g_UserUnit ); wxString units = GetUnitsLabel( g_UserUnit );
dlg.SetFileName( aSheet->GetFileName() ); dlg.SetFileName( aSheet->GetFileName() );
dlg.SetFileNameTextSize( ReturnStringFromValue( g_UserUnit, dlg.SetFileNameTextSize( ReturnStringFromValue( g_UserUnit, aSheet->GetFileNameSize() ) );
aSheet->GetFileNameSize(),
m_internalUnits ) );
dlg.SetFileNameTextSizeUnits( units ); dlg.SetFileNameTextSizeUnits( units );
dlg.SetSheetName( aSheet->GetName() ); dlg.SetSheetName( aSheet->GetName() );
dlg.SetSheetNameTextSize( ReturnStringFromValue( g_UserUnit, dlg.SetSheetNameTextSize( ReturnStringFromValue( g_UserUnit, aSheet->GetSheetNameSize() ) );
aSheet->GetSheetNameSize(),
m_internalUnits ) );
dlg.SetSheetNameTextSizeUnits( units ); dlg.SetSheetNameTextSizeUnits( units );
/* This ugly hack fixes a bug in wxWidgets 2.8.7 and likely earlier /* This ugly hack fixes a bug in wxWidgets 2.8.7 and likely earlier

View File

@ -34,6 +34,7 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <confirm.h> #include <confirm.h>
#include <wxEeschemaStruct.h> #include <wxEeschemaStruct.h>
#include <base_units.h>
#include <general.h> #include <general.h>
#include <protos.h> #include <protos.h>
@ -56,9 +57,9 @@ int SCH_EDIT_FRAME::EditSheetPin( SCH_SHEET_PIN* aSheetPin, wxDC* aDC )
DIALOG_SCH_EDIT_SHEET_PIN dlg( this ); DIALOG_SCH_EDIT_SHEET_PIN dlg( this );
dlg.SetLabelName( aSheetPin->m_Text ); dlg.SetLabelName( aSheetPin->m_Text );
dlg.SetTextHeight( ReturnStringFromValue( g_UserUnit, aSheetPin->m_Size.y, m_internalUnits ) ); dlg.SetTextHeight( ReturnStringFromValue( g_UserUnit, aSheetPin->m_Size.y ) );
dlg.SetTextHeightUnits( GetUnitsLabel( g_UserUnit ) ); dlg.SetTextHeightUnits( GetUnitsLabel( g_UserUnit ) );
dlg.SetTextWidth( ReturnStringFromValue( g_UserUnit, aSheetPin->m_Size.x, m_internalUnits ) ); dlg.SetTextWidth( ReturnStringFromValue( g_UserUnit, aSheetPin->m_Size.x ) );
dlg.SetTextWidthUnits( GetUnitsLabel( g_UserUnit ) ); dlg.SetTextWidthUnits( GetUnitsLabel( g_UserUnit ) );
dlg.SetConnectionType( aSheetPin->GetShape() ); dlg.SetConnectionType( aSheetPin->GetShape() );

View File

@ -33,6 +33,7 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <confirm.h> #include <confirm.h>
#include <class_sch_screen.h> #include <class_sch_screen.h>
#include <base_units.h>
#include <eeschema_id.h> #include <eeschema_id.h>
#include <general.h> #include <general.h>
@ -67,7 +68,7 @@ void LIB_EDIT_FRAME::EditGraphicSymbol( wxDC* DC, LIB_ITEM* DrawItem )
dialog.SetWidthUnits( ReturnUnitSymbol( g_UserUnit ) ); dialog.SetWidthUnits( ReturnUnitSymbol( g_UserUnit ) );
wxString val = ReturnStringFromValue( g_UserUnit, m_drawLineWidth, m_internalUnits ); wxString val = ReturnStringFromValue( g_UserUnit, m_drawLineWidth );
dialog.SetWidth( val ); dialog.SetWidth( val );
dialog.SetApplyToAllUnits( !m_drawSpecificUnit ); dialog.SetApplyToAllUnits( !m_drawSpecificUnit );
dialog.EnableApplyToAllUnits( component && component->GetPartCount() > 1 ); dialog.EnableApplyToAllUnits( component && component->GetPartCount() > 1 );

83
include/base_units.h Normal file
View File

@ -0,0 +1,83 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2012 CERN
* Copyright (C) 1992-2011 KiCad Developers, see change_log.txt for contributors.
*
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @author Wayne Stambaugh <stambaughw@verizon.net>
* @file base_units.h
* @brief Implementation of conversion functions that require both schematic and board
* internal units.
*/
#ifndef _BASE_UNITS_H_
#define _BASE_UNITS_H_
#include <common.h>
/**
* Function To_User_Unit
* convert \a aValue in internal units to the appropriate user units defined by \a aUnit.
*
* @return The converted value, in double
* @param aUnit The units to convert \a aValue to.
* @param aValue The value in internal units to convert.
*/
double To_User_Unit( EDA_UNITS_T aUnit, double aValue );
/**
* Function CoordinateToString
* is a helper to convert the integer coordinate \a aValue to a string in inches,
* millimeters, or unscaled units according to the current user units setting.
*
* @param aValue The coordinate to convert.
* @param aConvertToMils Convert inch values to mils if true. This setting has no effect if
* the current user unit is millimeters.
* @return The converted string for display in user interface elements.
*/
wxString CoordinateToString( int aValue, bool aConvertToMils = false );
/**
* Function ReturnStringFromValue
* returns the string from \a aValue according to units (inch, mm ...) for display,
* and the initial unit for value.
* @param aUnit = display units (INCHES, MILLIMETRE ..)
* @param aValue = value in Internal_Unit
* @param aAddUnitSymbol = true to add symbol unit to the string value
* @return A wxString object containing value and optionally the symbol unit (like 2.000 mm)
*/
wxString ReturnStringFromValue( EDA_UNITS_T aUnit, int aValue, bool aAddUnitSymbol = false );
/**
* Function PutValueInLocalUnits
* converts \a aValue from internal units to user units and append the units notation
* (mm or ")then inserts the string an \a aTextCtrl.
*
* This function is used in dialog boxes for entering values depending on selected units.
*/
void PutValueInLocalUnits( wxTextCtrl& aTextCtr, int aValue );
#endif // _BASE_UNITS_H_

View File

@ -530,20 +530,6 @@ int GetCommandOptions( const int argc, const char** argv,
*/ */
const wxString& valeur_param( int valeur, wxString& buf_texte ); const wxString& valeur_param( int valeur, wxString& buf_texte );
/**
* Function CoordinateToString
* is a helper to convert the integer coordinate \a aValue to a string in inches,
* millimeters, or unscaled units according to the current user units setting.
*
* @param aValue The coordinate to convert.
* @param aInternalUnits The internal units of the application. #EESCHEMA_INTERNAL_UNIT
* and #PCB_INTERNAL_UNIT are the only valid value.
* @param aConvertToMils Convert inch values to mils if true. This setting has no effect if
* the current user unit is millimeters.
* @return The converted string for display in user interface elements.
*/
wxString CoordinateToString( int aValue, int aInternalUnits, bool aConvertToMils = false );
/** /**
* Returns the units symbol. * Returns the units symbol.
* *
@ -577,34 +563,22 @@ wxString GetAbbreviatedUnitsLabel( EDA_UNITS_T aUnit = g_UserUnit );
*/ */
int ReturnValueFromString( EDA_UNITS_T aUnit, const wxString& TextValue, int Internal_Unit ); int ReturnValueFromString( EDA_UNITS_T aUnit, const wxString& TextValue, int Internal_Unit );
/** void AddUnitSymbol( wxStaticText& Stext, EDA_UNITS_T aUnit = g_UserUnit );
* Function ReturnStringFromValue
* Return the string from Value, according to units (inch, mm ...) for display,
* and the initial unit for value
* @param aUnit = display units (INCHES, MILLIMETRE ..)
* @param aValue = value in Internal_Unit
* @param aInternal_Unit = units per inch for Value
* @param aAdd_unit_symbol = true to add symbol unit to the string value
* @return a wxString what contains value and optionally the symbol unit (like
* 2.000 mm)
*/
wxString ReturnStringFromValue( EDA_UNITS_T aUnit,
int aValue,
int aInternal_Unit,
bool aAdd_unit_symbol = false );
void AddUnitSymbol( wxStaticText& Stext, EDA_UNITS_T aUnit = g_UserUnit );
/* Add string " (mm):" or " ("):" to the static text Stext.
* Used in dialog boxes for entering values depending on selected units */
void PutValueInLocalUnits( wxTextCtrl& TextCtr, int Value,
int Internal_Unit );
/* Convert the number Value in a string according to the internal units /* Convert the number Value in a string according to the internal units
* and the selected unit (g_UserUnit) and put it in the wxTextCtrl TextCtrl * and the selected unit (g_UserUnit) and put it in the wxTextCtrl TextCtrl
**/ **/
int ReturnValueFromTextCtrl( const wxTextCtrl& TextCtr, int ReturnValueFromTextCtrl( const wxTextCtrl& TextCtr, int Internal_Unit );
int Internal_Unit );
/**
* 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
*/
double RoundTo0( double x, double precision );
/** /**
* Function wxStringSplit * Function wxStringSplit
@ -615,17 +589,6 @@ int ReturnValueFromTextCtrl( const wxTextCtrl& TextCtr,
*/ */
wxArrayString* wxStringSplit( wxString aString, wxChar aSplitter ); wxArrayString* wxStringSplit( wxString aString, wxChar aSplitter );
/**
* Function To_User_Unit
* Convert in inch or mm the variable "val" (double)given in internal units
* @return the converted value, in double
* @param aUnit : user unit to be converted to
* @param val : double : the given value
* @param internal_unit_value = internal units per inch
*/
double To_User_Unit( EDA_UNITS_T aUnit, double val, int internal_unit_value );
/** /**
* Return in internal units the value "val" given in inch or mm * Return in internal units the value "val" given in inch or mm
*/ */

View File

@ -76,6 +76,8 @@ public:
const TITLE_BLOCK& GetTitleBlock() const; // overload EDA_DRAW_FRAME const TITLE_BLOCK& GetTitleBlock() const; // overload EDA_DRAW_FRAME
void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ); // overload EDA_DRAW_FRAME void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ); // overload EDA_DRAW_FRAME
void UpdateStatusBar(); // overload EDA_DRAW_FRAME
protected: protected:
/** /**

View File

@ -35,6 +35,7 @@
#include <dialog_helpers.h> #include <dialog_helpers.h>
#include <kicad_device_context.h> #include <kicad_device_context.h>
#include <wxBasePcbFrame.h> #include <wxBasePcbFrame.h>
#include <base_units.h>
#include <pcbnew.h> #include <pcbnew.h>
#include <pcbnew_id.h> #include <pcbnew_id.h>
@ -78,7 +79,7 @@ PCB_BASE_FRAME::PCB_BASE_FRAME( wxWindow* father,
const wxString& title, const wxString& title,
const wxPoint& pos, const wxPoint& pos,
const wxSize& size, const wxSize& size,
long style) : long style) :
EDA_DRAW_FRAME( father, idtype, title, pos, size, style ) EDA_DRAW_FRAME( father, idtype, title, pos, size, style )
{ {
m_internalUnits = PCB_INTERNAL_UNIT; // Internal unit = 1/10000 inch m_internalUnits = PCB_INTERNAL_UNIT; // Internal unit = 1/10000 inch
@ -552,18 +553,24 @@ void PCB_BASE_FRAME::UpdateStatusBar()
{ {
EDA_DRAW_FRAME::UpdateStatusBar(); EDA_DRAW_FRAME::UpdateStatusBar();
PCB_SCREEN* screen = GetScreen();
if( !screen )
return;
int dx;
int dy;
double dXpos;
double dYpos;
wxString line;
wxString locformatter;
if( DisplayOpt.DisplayPolarCood ) // display polar coordinates if( DisplayOpt.DisplayPolarCood ) // display polar coordinates
{ {
PCB_SCREEN* screen = GetScreen();
if( !screen )
return;
wxString Line;
double theta, ro; double theta, ro;
int dx = screen->GetCrossHairPosition().x - screen->m_O_Curseur.x; dx = screen->GetCrossHairPosition().x - screen->m_O_Curseur.x;
int dy = screen->GetCrossHairPosition().y - screen->m_O_Curseur.y; dy = screen->GetCrossHairPosition().y - screen->m_O_Curseur.y;
if( dx==0 && dy==0 ) if( dx==0 && dy==0 )
theta = 0.0; theta = 0.0;
@ -589,11 +596,62 @@ void PCB_BASE_FRAME::UpdateStatusBar()
break; break;
} }
Line.Printf( formatter, To_User_Unit( g_UserUnit, ro, m_internalUnits ), theta ); line.Printf( formatter, To_User_Unit( g_UserUnit, ro ), theta );
// overwrite the absolute cartesian coordinates SetStatusText( line, 2 );
SetStatusText( Line, 2 );
} }
else
{
// Display absolute coordinates:
dXpos = To_User_Unit( g_UserUnit, screen->GetCrossHairPosition().x );
dYpos = To_User_Unit( g_UserUnit, screen->GetCrossHairPosition().y );
if ( g_UserUnit == MILLIMETRES )
{
dXpos = RoundTo0( dXpos, 1000.0 );
dYpos = RoundTo0( dYpos, 1000.0 );
}
// The following sadly is an if Eeschema/if Pcbnew
wxString absformatter;
switch( g_UserUnit )
{
case INCHES:
absformatter = wxT( "X %.4f Y %.4f" );
locformatter = wxT( "dx %.4f dy %.4f d %.4f" );
break;
case MILLIMETRES:
absformatter = wxT( "X %.3f Y %.3f" );
locformatter = wxT( "dx %.3f dy %.3f d %.3f" );
break;
case UNSCALED_UNITS:
absformatter = wxT( "X %f Y %f" );
locformatter = wxT( "dx %f dy %f d %f" );
break;
}
line.Printf( absformatter, dXpos, dYpos );
SetStatusText( line, 2 );
}
// Display relative coordinates:
dx = screen->GetCrossHairPosition().x - screen->m_O_Curseur.x;
dy = screen->GetCrossHairPosition().y - screen->m_O_Curseur.y;
dXpos = To_User_Unit( g_UserUnit, dx );
dYpos = To_User_Unit( g_UserUnit, dy );
if ( g_UserUnit == MILLIMETRES )
{
dXpos = RoundTo0( dXpos, 1000.0 );
dYpos = RoundTo0( dYpos, 1000.0 );
}
// We already decided the formatter above
line.Printf( locformatter, dXpos, dYpos, sqrt( dXpos * dXpos + dYpos * dYpos ) );
SetStatusText( line, 3 );
} }
@ -711,7 +769,7 @@ void PCB_BASE_FRAME::updateGridSelectBox()
for( size_t i = 0; i < GetScreen()->GetGridCount(); i++ ) for( size_t i = 0; i < GetScreen()->GetGridCount(); i++ )
{ {
GRID_TYPE& grid = GetScreen()->GetGrid( i ); GRID_TYPE& grid = GetScreen()->GetGrid( i );
double value = To_User_Unit( g_UserUnit, grid.m_Size.x, m_internalUnits ); double value = To_User_Unit( g_UserUnit, grid.m_Size.x );
if( grid.m_Id != ID_POPUP_GRID_USER ) if( grid.m_Id != ID_POPUP_GRID_USER )
{ {

View File

@ -15,6 +15,7 @@
#include <wxBasePcbFrame.h> #include <wxBasePcbFrame.h>
#include <class_pcb_screen.h> #include <class_pcb_screen.h>
#include <macros.h> #include <macros.h>
#include <base_units.h>
#include <pcbnew.h> #include <pcbnew.h>
#include <pcbplot.h> #include <pcbplot.h>
@ -70,8 +71,7 @@ void DIALOG_SVG_PRINT::initDialog( )
s_Parameters.m_PenDefaultSize = g_DrawDefaultLineThickness; s_Parameters.m_PenDefaultSize = g_DrawDefaultLineThickness;
AddUnitSymbol( *m_TextPenWidth, g_UserUnit ); AddUnitSymbol( *m_TextPenWidth, g_UserUnit );
m_DialogPenWidth->SetValue( m_DialogPenWidth->SetValue(
ReturnStringFromValue( g_UserUnit, s_Parameters.m_PenDefaultSize, ReturnStringFromValue( g_UserUnit, s_Parameters.m_PenDefaultSize ) );
m_Parent->GetInternalUnits() ) );
m_Print_Frame_Ref_Ctrl->SetValue( s_Parameters.m_Print_Sheet_Ref ); m_Print_Frame_Ref_Ctrl->SetValue( s_Parameters.m_Print_Sheet_Ref );
@ -150,8 +150,7 @@ void DIALOG_SVG_PRINT::SetPenWidth()
g_DrawDefaultLineThickness = s_Parameters.m_PenDefaultSize; g_DrawDefaultLineThickness = s_Parameters.m_PenDefaultSize;
m_DialogPenWidth->SetValue( m_DialogPenWidth->SetValue(
ReturnStringFromValue( g_UserUnit, s_Parameters.m_PenDefaultSize, ReturnStringFromValue( g_UserUnit, s_Parameters.m_PenDefaultSize ) );
m_Parent->GetInternalUnits() ) );
} }

View File

@ -15,6 +15,7 @@
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <trigo.h> #include <trigo.h>
#include <zones.h> #include <zones.h>
#include <base_units.h>
#include <class_zone_settings.h> #include <class_zone_settings.h>
#include <class_board.h> #include <class_board.h>
@ -178,15 +179,11 @@ void DIALOG_COPPER_ZONE::initDialog()
m_FillModeCtrl->SetSelection( m_settings.m_FillMode ? 1 : 0 ); m_FillModeCtrl->SetSelection( m_settings.m_FillMode ? 1 : 0 );
AddUnitSymbol( *m_ClearanceValueTitle, g_UserUnit ); AddUnitSymbol( *m_ClearanceValueTitle, g_UserUnit );
msg = ReturnStringFromValue( g_UserUnit, msg = ReturnStringFromValue( g_UserUnit, m_settings.m_ZoneClearance );
m_settings.m_ZoneClearance,
m_Parent->GetInternalUnits() );
m_ZoneClearanceCtrl->SetValue( msg ); m_ZoneClearanceCtrl->SetValue( msg );
AddUnitSymbol( *m_MinThicknessValueTitle, g_UserUnit ); AddUnitSymbol( *m_MinThicknessValueTitle, g_UserUnit );
msg = ReturnStringFromValue( g_UserUnit, msg = ReturnStringFromValue( g_UserUnit, m_settings.m_ZoneMinThickness );
m_settings.m_ZoneMinThickness,
m_Parent->GetInternalUnits() );
m_ZoneMinThicknessCtrl->SetValue( msg ); m_ZoneMinThicknessCtrl->SetValue( msg );
switch( m_settings.GetPadConnection() ) switch( m_settings.GetPadConnection() )
@ -220,18 +217,12 @@ void DIALOG_COPPER_ZONE::initDialog()
AddUnitSymbol( *m_AntipadSizeText, g_UserUnit ); AddUnitSymbol( *m_AntipadSizeText, g_UserUnit );
AddUnitSymbol( *m_CopperBridgeWidthText, g_UserUnit ); AddUnitSymbol( *m_CopperBridgeWidthText, g_UserUnit );
PutValueInLocalUnits( *m_AntipadSizeValue, PutValueInLocalUnits( *m_AntipadSizeValue, m_settings.m_ThermalReliefGap );
m_settings.m_ThermalReliefGap, PutValueInLocalUnits( *m_CopperWidthValue, m_settings.m_ThermalReliefCopperBridge );
PCB_INTERNAL_UNIT );
PutValueInLocalUnits( *m_CopperWidthValue,
m_settings.m_ThermalReliefCopperBridge,
PCB_INTERNAL_UNIT );
m_cornerSmoothingChoice->SetSelection( m_settings.GetCornerSmoothingType() ); m_cornerSmoothingChoice->SetSelection( m_settings.GetCornerSmoothingType() );
PutValueInLocalUnits( *m_cornerSmoothingCtrl, PutValueInLocalUnits( *m_cornerSmoothingCtrl, m_settings.GetCornerRadius() );
m_settings.GetCornerRadius(),
PCB_INTERNAL_UNIT );
switch( m_settings.m_Zone_HatchingStyle ) switch( m_settings.m_Zone_HatchingStyle )
{ {

View File

@ -33,6 +33,7 @@
#include <fctsys.h> #include <fctsys.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <macros.h> #include <macros.h>
#include <base_units.h>
#include <confirm.h> #include <confirm.h>
#include <pcbnew.h> #include <pcbnew.h>
@ -207,26 +208,19 @@ DIALOG_DESIGN_RULES::DIALOG_DESIGN_RULES( PCB_EDIT_FRAME* parent ) :
void DIALOG_DESIGN_RULES::PrintCurrentSettings() void DIALOG_DESIGN_RULES::PrintCurrentSettings()
{ {
wxString msg, value; wxString msg, value;
int internal_units = m_Parent->GetInternalUnits();
m_MessagesList->AppendToPage( _( "<b>Current general settings:</b><br>" ) ); m_MessagesList->AppendToPage( _( "<b>Current general settings:</b><br>" ) );
// Display min values: // Display min values:
value = ReturnStringFromValue( g_UserUnit, value = ReturnStringFromValue( g_UserUnit, m_BrdSettings.m_TrackMinWidth, true );
m_BrdSettings.m_TrackMinWidth,
internal_units,
true );
msg.Printf( _( "Minimum value for tracks width: <b>%s</b><br>\n" ), GetChars( value ) ); msg.Printf( _( "Minimum value for tracks width: <b>%s</b><br>\n" ), GetChars( value ) );
m_MessagesList->AppendToPage( msg ); m_MessagesList->AppendToPage( msg );
value = ReturnStringFromValue( g_UserUnit, m_BrdSettings.m_ViasMinSize, internal_units, true ); value = ReturnStringFromValue( g_UserUnit, m_BrdSettings.m_ViasMinSize, true );
msg.Printf( _( "Minimum value for vias diameter: <b>%s</b><br>\n" ), GetChars( value ) ); msg.Printf( _( "Minimum value for vias diameter: <b>%s</b><br>\n" ), GetChars( value ) );
m_MessagesList->AppendToPage( msg ); m_MessagesList->AppendToPage( msg );
value = ReturnStringFromValue( g_UserUnit, value = ReturnStringFromValue( g_UserUnit, m_BrdSettings.m_MicroViasMinSize, true );
m_BrdSettings.m_MicroViasMinSize,
internal_units,
true );
msg.Printf( _( "Minimum value for microvias diameter: <b>%s</b><br>\n" ), GetChars( value ) ); msg.Printf( _( "Minimum value for microvias diameter: <b>%s</b><br>\n" ), GetChars( value ) );
m_MessagesList->AppendToPage( msg ); m_MessagesList->AppendToPage( msg );
} }
@ -290,22 +284,16 @@ void DIALOG_DESIGN_RULES::InitGlobalRules()
AddUnitSymbol( *m_MicroViaMinDrillTitle ); AddUnitSymbol( *m_MicroViaMinDrillTitle );
AddUnitSymbol( *m_TrackMinWidthTitle ); AddUnitSymbol( *m_TrackMinWidthTitle );
int Internal_Unit = m_Parent->GetInternalUnits(); PutValueInLocalUnits( *m_SetViasMinSizeCtrl, m_BrdSettings.m_ViasMinSize );
PutValueInLocalUnits( *m_SetViasMinSizeCtrl, m_BrdSettings.m_ViasMinSize, Internal_Unit ); PutValueInLocalUnits( *m_SetViasMinDrillCtrl, m_BrdSettings.m_ViasMinDrill );
PutValueInLocalUnits( *m_SetViasMinDrillCtrl, m_BrdSettings.m_ViasMinDrill, Internal_Unit );
if( m_BrdSettings.m_CurrentViaType != VIA_THROUGH ) if( m_BrdSettings.m_CurrentViaType != VIA_THROUGH )
m_OptViaType->SetSelection( 1 ); m_OptViaType->SetSelection( 1 );
m_AllowMicroViaCtrl->SetSelection( m_BrdSettings.m_MicroViasAllowed ? 1 : 0 ); m_AllowMicroViaCtrl->SetSelection( m_BrdSettings.m_MicroViasAllowed ? 1 : 0 );
PutValueInLocalUnits( *m_SetMicroViasMinSizeCtrl, PutValueInLocalUnits( *m_SetMicroViasMinSizeCtrl, m_BrdSettings.m_MicroViasMinSize );
m_BrdSettings.m_MicroViasMinSize, PutValueInLocalUnits( *m_SetMicroViasMinDrillCtrl, m_BrdSettings.m_MicroViasMinDrill );
Internal_Unit ); PutValueInLocalUnits( *m_SetTrackMinWidthCtrl, m_BrdSettings.m_TrackMinWidth );
PutValueInLocalUnits( *m_SetMicroViasMinDrillCtrl,
m_BrdSettings.m_MicroViasMinDrill,
Internal_Unit );
PutValueInLocalUnits( *m_SetTrackMinWidthCtrl, m_BrdSettings.m_TrackMinWidth, Internal_Unit );
// Initialize Vias and Tracks sizes lists. // Initialize Vias and Tracks sizes lists.
// note we display only extra values, never the current netclass value. // note we display only extra values, never the current netclass value.
@ -326,7 +314,6 @@ void DIALOG_DESIGN_RULES::InitDimensionsLists()
*/ */
{ {
wxString msg; wxString msg;
int Internal_Unit = m_Parent->GetInternalUnits();
// Compute the column widths here, after setting texts // Compute the column widths here, after setting texts
msg = wxT("000000.000000"); // This is a very long text to display values. msg = wxT("000000.000000"); // This is a very long text to display values.
@ -347,19 +334,17 @@ void DIALOG_DESIGN_RULES::InitDimensionsLists()
for( unsigned ii = 0; ii < m_TracksWidthList.size(); ii++ ) for( unsigned ii = 0; ii < m_TracksWidthList.size(); ii++ )
{ {
msg = ReturnStringFromValue( g_UserUnit, m_TracksWidthList[ii], Internal_Unit, false ); msg = ReturnStringFromValue( g_UserUnit, m_TracksWidthList[ii], false );
m_gridTrackWidthList->SetCellValue( ii, 0, msg ); m_gridTrackWidthList->SetCellValue( ii, 0, msg );
} }
for( unsigned ii = 0; ii < m_ViasDimensionsList.size(); ii++ ) for( unsigned ii = 0; ii < m_ViasDimensionsList.size(); ii++ )
{ {
msg = ReturnStringFromValue( g_UserUnit, m_ViasDimensionsList[ii].m_Diameter, msg = ReturnStringFromValue( g_UserUnit, m_ViasDimensionsList[ii].m_Diameter, false );
Internal_Unit, false );
m_gridViaSizeList->SetCellValue( ii, 0, msg ); m_gridViaSizeList->SetCellValue( ii, 0, msg );
if( m_ViasDimensionsList[ii].m_Drill > 0 ) if( m_ViasDimensionsList[ii].m_Drill > 0 )
{ {
msg = ReturnStringFromValue( g_UserUnit, m_ViasDimensionsList[ii].m_Drill, msg = ReturnStringFromValue( g_UserUnit, m_ViasDimensionsList[ii].m_Drill, false );
Internal_Unit, false );
m_gridViaSizeList->SetCellValue( ii, 1, msg ); m_gridViaSizeList->SetCellValue( ii, 1, msg );
} }
} }
@ -495,22 +480,22 @@ static void class2gridRow( wxGrid* grid, int row, NETCLASS* nc, int units )
// label is netclass name // label is netclass name
grid->SetRowLabelValue( row, nc->GetName() ); grid->SetRowLabelValue( row, nc->GetName() );
msg = ReturnStringFromValue( g_UserUnit, nc->GetClearance(), units ); msg = ReturnStringFromValue( g_UserUnit, nc->GetClearance() );
grid->SetCellValue( row, GRID_CLEARANCE, msg ); grid->SetCellValue( row, GRID_CLEARANCE, msg );
msg = ReturnStringFromValue( g_UserUnit, nc->GetTrackWidth(), units ); msg = ReturnStringFromValue( g_UserUnit, nc->GetTrackWidth() );
grid->SetCellValue( row, GRID_TRACKSIZE, msg ); grid->SetCellValue( row, GRID_TRACKSIZE, msg );
msg = ReturnStringFromValue( g_UserUnit, nc->GetViaDiameter(), units ); msg = ReturnStringFromValue( g_UserUnit, nc->GetViaDiameter() );
grid->SetCellValue( row, GRID_VIASIZE, msg ); grid->SetCellValue( row, GRID_VIASIZE, msg );
msg = ReturnStringFromValue( g_UserUnit, nc->GetViaDrill(), units ); msg = ReturnStringFromValue( g_UserUnit, nc->GetViaDrill() );
grid->SetCellValue( row, GRID_VIADRILL, msg ); grid->SetCellValue( row, GRID_VIADRILL, msg );
msg = ReturnStringFromValue( g_UserUnit, nc->GetuViaDiameter(), units ); msg = ReturnStringFromValue( g_UserUnit, nc->GetuViaDiameter() );
grid->SetCellValue( row, GRID_uVIASIZE, msg ); grid->SetCellValue( row, GRID_uVIASIZE, msg );
msg = ReturnStringFromValue( g_UserUnit, nc->GetuViaDrill(), units ); msg = ReturnStringFromValue( g_UserUnit, nc->GetuViaDrill() );
grid->SetCellValue( row, GRID_uVIADRILL, msg ); grid->SetCellValue( row, GRID_uVIADRILL, msg );
} }

View File

@ -12,6 +12,7 @@
#include <3d_struct.h> #include <3d_struct.h>
#include <3d_viewer.h> #include <3d_viewer.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <base_units.h>
#include <class_module.h> #include <class_module.h>
#include <class_text_mod.h> #include <class_text_mod.h>
@ -62,12 +63,10 @@ DIALOG_MODULE_BOARD_EDITOR::~DIALOG_MODULE_BOARD_EDITOR()
/* Creation of the panel properties of the module editor. */ /* Creation of the panel properties of the module editor. */
void DIALOG_MODULE_BOARD_EDITOR::InitBoardProperties() void DIALOG_MODULE_BOARD_EDITOR::InitBoardProperties()
{ {
PutValueInLocalUnits( *m_ModPositionX, PutValueInLocalUnits( *m_ModPositionX, m_CurrentModule->GetPosition().x );
m_CurrentModule->GetPosition().x, PCB_INTERNAL_UNIT );
AddUnitSymbol( *XPositionStatic, g_UserUnit ); AddUnitSymbol( *XPositionStatic, g_UserUnit );
PutValueInLocalUnits( *m_ModPositionY, PutValueInLocalUnits( *m_ModPositionY, m_CurrentModule->GetPosition().y );
m_CurrentModule->GetPosition().y, PCB_INTERNAL_UNIT );
AddUnitSymbol( *YPositionStatic, g_UserUnit ); AddUnitSymbol( *YPositionStatic, g_UserUnit );
m_LayerCtrl->SetSelection( m_LayerCtrl->SetSelection(
@ -111,18 +110,13 @@ void DIALOG_MODULE_BOARD_EDITOR::InitBoardProperties()
m_SolderMaskMarginUnits->SetLabel( GetUnitsLabel( g_UserUnit ) ); m_SolderMaskMarginUnits->SetLabel( GetUnitsLabel( g_UserUnit ) );
m_SolderPasteMarginUnits->SetLabel( GetUnitsLabel( g_UserUnit ) ); m_SolderPasteMarginUnits->SetLabel( GetUnitsLabel( g_UserUnit ) );
int internalUnit = m_Parent->GetInternalUnits(); PutValueInLocalUnits( *m_NetClearanceValueCtrl, m_CurrentModule->m_LocalClearance );
PutValueInLocalUnits( *m_NetClearanceValueCtrl, PutValueInLocalUnits( *m_SolderMaskMarginCtrl, m_CurrentModule->m_LocalSolderMaskMargin );
m_CurrentModule->m_LocalClearance, internalUnit );
PutValueInLocalUnits( *m_SolderMaskMarginCtrl,
m_CurrentModule->m_LocalSolderMaskMargin,
internalUnit );
// These 2 parameters are usually < 0, so prepare entering a negative // These 2 parameters are usually < 0, so prepare entering a negative
// value, if current is 0 // value, if current is 0
PutValueInLocalUnits( *m_SolderPasteMarginCtrl, PutValueInLocalUnits( *m_SolderPasteMarginCtrl, m_CurrentModule->GetLocalSolderPasteMargin() );
m_CurrentModule->GetLocalSolderPasteMargin(),
internalUnit );
if( m_CurrentModule->GetLocalSolderPasteMargin() == 0 ) if( m_CurrentModule->GetLocalSolderPasteMargin() == 0 )
m_SolderPasteMarginCtrl->SetValue( wxT( "-" ) + m_SolderPasteMarginCtrl->SetValue( wxT( "-" ) +
m_SolderPasteMarginCtrl->GetValue() ); m_SolderPasteMarginCtrl->GetValue() );

View File

@ -11,6 +11,7 @@
#include <3d_struct.h> #include <3d_struct.h>
#include <3d_viewer.h> #include <3d_viewer.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <base_units.h>
#include <class_module.h> #include <class_module.h>
#include <class_text_mod.h> #include <class_text_mod.h>
@ -148,20 +149,19 @@ void DIALOG_MODULE_MODULE_EDITOR::InitModeditProperties()
m_SolderPasteMarginUnits->SetLabel( GetUnitsLabel( g_UserUnit ) ); m_SolderPasteMarginUnits->SetLabel( GetUnitsLabel( g_UserUnit ) );
wxString msg; wxString msg;
int internalUnit = m_Parent->GetInternalUnits(); PutValueInLocalUnits( *m_NetClearanceValueCtrl, m_CurrentModule->m_LocalClearance );
PutValueInLocalUnits( *m_NetClearanceValueCtrl, PutValueInLocalUnits( *m_SolderMaskMarginCtrl, m_CurrentModule->m_LocalSolderMaskMargin );
m_CurrentModule->m_LocalClearance, internalUnit );
PutValueInLocalUnits( *m_SolderMaskMarginCtrl,
m_CurrentModule->m_LocalSolderMaskMargin, internalUnit );
// These 2 parameters are usually < 0, so prepare entering a negative value, if current is 0 // These 2 parameters are usually < 0, so prepare entering a negative value, if current is 0
PutValueInLocalUnits( *m_SolderPasteMarginCtrl, PutValueInLocalUnits( *m_SolderPasteMarginCtrl, m_CurrentModule->GetLocalSolderPasteMargin() );
m_CurrentModule->GetLocalSolderPasteMargin(), internalUnit );
if( m_CurrentModule->GetLocalSolderPasteMargin() == 0 ) if( m_CurrentModule->GetLocalSolderPasteMargin() == 0 )
m_SolderPasteMarginCtrl->SetValue( wxT("-") + m_SolderPasteMarginCtrl->GetValue() ); m_SolderPasteMarginCtrl->SetValue( wxT("-") + m_SolderPasteMarginCtrl->GetValue() );
if( m_CurrentModule->GetLocalSolderPasteMarginRatio() == 0.0 ) if( m_CurrentModule->GetLocalSolderPasteMarginRatio() == 0.0 )
msg.Printf( wxT( "-%.1f" ), m_CurrentModule->GetLocalSolderPasteMarginRatio() * 100.0 ); msg.Printf( wxT( "-%.1f" ), m_CurrentModule->GetLocalSolderPasteMarginRatio() * 100.0 );
else else
msg.Printf( wxT( "%.1f" ), m_CurrentModule->GetLocalSolderPasteMarginRatio() * 100.0 ); msg.Printf( wxT( "%.1f" ), m_CurrentModule->GetLocalSolderPasteMarginRatio() * 100.0 );
m_SolderPasteMarginRatioCtrl->SetValue( msg ); m_SolderPasteMarginRatioCtrl->SetValue( msg );
// if m_3D_ShapeNameListBox is not empty, preselect first 3D shape // if m_3D_ShapeNameListBox is not empty, preselect first 3D shape

View File

@ -14,6 +14,7 @@
#include <drawtxt.h> #include <drawtxt.h>
#include <confirm.h> #include <confirm.h>
#include <wxBasePcbFrame.h> #include <wxBasePcbFrame.h>
#include <base_units.h>
#include <class_module.h> #include <class_module.h>
#include <class_text_mod.h> #include <class_text_mod.h>
@ -118,24 +119,19 @@ void DialogEditModuleText::initDlg( )
m_Style->SetSelection( m_currentText->m_Italic ? 1 : 0 ); m_Style->SetSelection( m_currentText->m_Italic ? 1 : 0 );
AddUnitSymbol( *m_SizeXTitle ); AddUnitSymbol( *m_SizeXTitle );
PutValueInLocalUnits( *m_TxtSizeCtrlX, m_currentText->m_Size.x, PutValueInLocalUnits( *m_TxtSizeCtrlX, m_currentText->m_Size.x );
m_parent->GetInternalUnits() );
AddUnitSymbol( *m_SizeYTitle ); AddUnitSymbol( *m_SizeYTitle );
PutValueInLocalUnits( *m_TxtSizeCtrlY, m_currentText->m_Size.y, PutValueInLocalUnits( *m_TxtSizeCtrlY, m_currentText->m_Size.y );
m_parent->GetInternalUnits() );
AddUnitSymbol( *m_PosXTitle ); AddUnitSymbol( *m_PosXTitle );
PutValueInLocalUnits( *m_TxtPosCtrlX, m_currentText->GetPos0().x, PutValueInLocalUnits( *m_TxtPosCtrlX, m_currentText->GetPos0().x );
m_parent->GetInternalUnits() );
AddUnitSymbol( *m_PosYTitle ); AddUnitSymbol( *m_PosYTitle );
PutValueInLocalUnits( *m_TxtPosCtrlY, m_currentText->GetPos0().y, PutValueInLocalUnits( *m_TxtPosCtrlY, m_currentText->GetPos0().y );
m_parent->GetInternalUnits() );
AddUnitSymbol( *m_WidthTitle ); AddUnitSymbol( *m_WidthTitle );
PutValueInLocalUnits( *m_TxtWidthCtlr, m_currentText->m_Thickness, PutValueInLocalUnits( *m_TxtWidthCtlr, m_currentText->m_Thickness );
m_parent->GetInternalUnits() );
int text_orient = m_currentText->m_Orient; int text_orient = m_currentText->m_Orient;
NORMALIZE_ANGLE_90(text_orient) NORMALIZE_ANGLE_90(text_orient)

View File

@ -10,6 +10,7 @@
#include <pcbnew.h> #include <pcbnew.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <base_units.h>
#include <class_board.h> #include <class_board.h>
@ -44,7 +45,6 @@ void DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::MyInit()
wxString msg; wxString msg;
// Display current setup for tracks and vias // Display current setup for tracks and vias
int Internal_Unit = m_Parent->GetInternalUnits();
BOARD* board = m_Parent->GetBoard(); BOARD* board = m_Parent->GetBoard();
NETCLASSES& netclasses = board->m_NetClasses; NETCLASSES& netclasses = board->m_NetClasses;
NETINFO_ITEM* net = board->FindNet( m_Netcode ); NETINFO_ITEM* net = board->FindNet( m_Netcode );
@ -73,56 +73,56 @@ void DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::MyInit()
// Display current values, and current netclass values: // Display current values, and current netclass values:
int value = netclass->GetTrackWidth(); // Display track width int value = netclass->GetTrackWidth(); // Display track width
msg = ReturnStringFromValue( g_UserUnit, value, Internal_Unit, true ); msg = ReturnStringFromValue( g_UserUnit, value, true );
m_gridDisplayCurrentSettings->SetCellValue( 0, 0, msg ); m_gridDisplayCurrentSettings->SetCellValue( 0, 0, msg );
if( board->m_TrackWidthSelector ) if( board->m_TrackWidthSelector )
{ {
value = board->GetCurrentTrackWidth(); value = board->GetCurrentTrackWidth();
msg = ReturnStringFromValue( g_UserUnit, value, Internal_Unit, true ); msg = ReturnStringFromValue( g_UserUnit, value, true );
} }
else else
msg = _( "Default" ); msg = _( "Default" );
m_gridDisplayCurrentSettings->SetCellValue( 1, 0, msg ); m_gridDisplayCurrentSettings->SetCellValue( 1, 0, msg );
value = netclass->GetViaDiameter(); // Display via diameter value = netclass->GetViaDiameter(); // Display via diameter
msg = ReturnStringFromValue( g_UserUnit, value, Internal_Unit, true ); msg = ReturnStringFromValue( g_UserUnit, value, true );
m_gridDisplayCurrentSettings->SetCellValue( 0, 1, msg ); m_gridDisplayCurrentSettings->SetCellValue( 0, 1, msg );
if( board->m_ViaSizeSelector ) if( board->m_ViaSizeSelector )
{ {
value = board->GetCurrentViaSize(); value = board->GetCurrentViaSize();
msg = ReturnStringFromValue( g_UserUnit, value, Internal_Unit, true ); msg = ReturnStringFromValue( g_UserUnit, value, true );
} }
else else
msg = _( "Default" ); msg = _( "Default" );
m_gridDisplayCurrentSettings->SetCellValue( 1, 1, msg ); m_gridDisplayCurrentSettings->SetCellValue( 1, 1, msg );
value = netclass->GetViaDrill(); // Display via drill value = netclass->GetViaDrill(); // Display via drill
msg = ReturnStringFromValue( g_UserUnit, value, Internal_Unit, true ); msg = ReturnStringFromValue( g_UserUnit, value, true );
m_gridDisplayCurrentSettings->SetCellValue( 0, 2, msg ); m_gridDisplayCurrentSettings->SetCellValue( 0, 2, msg );
value = board->GetCurrentViaDrill(); value = board->GetCurrentViaDrill();
if( value >= 0 ) if( value >= 0 )
msg = ReturnStringFromValue( g_UserUnit, value, Internal_Unit, true ); msg = ReturnStringFromValue( g_UserUnit, value, true );
else else
msg = _( "Default" ); msg = _( "Default" );
m_gridDisplayCurrentSettings->SetCellValue( 1, 2, msg ); m_gridDisplayCurrentSettings->SetCellValue( 1, 2, msg );
value = netclass->GetuViaDiameter(); // Display micro via diameter value = netclass->GetuViaDiameter(); // Display micro via diameter
msg = ReturnStringFromValue( g_UserUnit, value, Internal_Unit, true ); msg = ReturnStringFromValue( g_UserUnit, value, true );
m_gridDisplayCurrentSettings->SetCellValue( 0, 3, msg ); m_gridDisplayCurrentSettings->SetCellValue( 0, 3, msg );
#if 0 // Currently we use always the default netclass value #if 0 // Currently we use always the default netclass value
value = board->GetCurrentMicroViaSize(); value = board->GetCurrentMicroViaSize();
msg = ReturnStringFromValue( g_UserUnit, value, Internal_Unit, true ); msg = ReturnStringFromValue( g_UserUnit, value, true );
#endif #endif
msg = _( "Default" ); msg = _( "Default" );
m_gridDisplayCurrentSettings->SetCellValue( 1, 3, msg ); m_gridDisplayCurrentSettings->SetCellValue( 1, 3, msg );
value = netclass->GetuViaDrill(); // Display micro via drill value = netclass->GetuViaDrill(); // Display micro via drill
msg = ReturnStringFromValue( g_UserUnit, value, Internal_Unit, true ); msg = ReturnStringFromValue( g_UserUnit, value, true );
m_gridDisplayCurrentSettings->SetCellValue( 0, 4, msg ); m_gridDisplayCurrentSettings->SetCellValue( 0, 4, msg );
#if 0 // Currently we use always the default netclass value #if 0 // Currently we use always the default netclass value
value = board->GetCurrentMicroViaDrill(); value = board->GetCurrentMicroViaDrill();
if( value >= 0 ) if( value >= 0 )
msg = ReturnStringFromValue( g_UserUnit, value, Internal_Unit, true ); msg = ReturnStringFromValue( g_UserUnit, value, true );
else else
#endif #endif
msg = _( "Default" ); msg = _( "Default" );

View File

@ -18,6 +18,7 @@
#include <pcbnew.h> #include <pcbnew.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <class_board_design_settings.h> #include <class_board_design_settings.h>
#include <base_units.h>
#include <class_board.h> #include <class_board.h>
#include <class_drawsegment.h> #include <class_drawsegment.h>
@ -136,20 +137,15 @@ void DIALOG_GRAPHIC_ITEM_PROPERTIES::initDlg( )
break; break;
} }
PutValueInLocalUnits( *m_Center_StartXCtrl, m_Item->GetStart().x, PutValueInLocalUnits( *m_Center_StartXCtrl, m_Item->GetStart().x );
m_parent->GetInternalUnits() );
PutValueInLocalUnits( *m_Center_StartYCtrl, m_Item->GetStart().y, PutValueInLocalUnits( *m_Center_StartYCtrl, m_Item->GetStart().y );
m_parent->GetInternalUnits() );
PutValueInLocalUnits( *m_EndX_Radius_Ctrl, m_Item->GetEnd().x, PutValueInLocalUnits( *m_EndX_Radius_Ctrl, m_Item->GetEnd().x );
m_parent->GetInternalUnits() );
PutValueInLocalUnits( *m_EndY_Ctrl, m_Item->GetEnd().y, PutValueInLocalUnits( *m_EndY_Ctrl, m_Item->GetEnd().y );
m_parent->GetInternalUnits() );
PutValueInLocalUnits( *m_ThicknessCtrl, m_Item->GetWidth(), PutValueInLocalUnits( *m_ThicknessCtrl, m_Item->GetWidth() );
m_parent->GetInternalUnits() );
int thickness; int thickness;
@ -158,8 +154,7 @@ void DIALOG_GRAPHIC_ITEM_PROPERTIES::initDlg( )
else else
thickness = m_brdSettings.m_DrawSegmentWidth; thickness = m_brdSettings.m_DrawSegmentWidth;
PutValueInLocalUnits( *m_DefaultThicknessCtrl, thickness, PutValueInLocalUnits( *m_DefaultThicknessCtrl, thickness );
m_parent->GetInternalUnits() );
for( int layer=FIRST_NO_COPPER_LAYER; layer <= LAST_NO_COPPER_LAYER; ++layer ) for( int layer=FIRST_NO_COPPER_LAYER; layer <= LAST_NO_COPPER_LAYER; ++layer )
{ {
@ -187,8 +182,7 @@ void DIALOG_GRAPHIC_ITEM_PROPERTIES::OnLayerChoice( wxCommandEvent& event )
else else
thickness = m_brdSettings.m_DrawSegmentWidth; thickness = m_brdSettings.m_DrawSegmentWidth;
PutValueInLocalUnits( *m_DefaultThicknessCtrl, thickness, PutValueInLocalUnits( *m_DefaultThicknessCtrl, thickness );
m_parent->GetInternalUnits() );
} }
/*******************************************************************/ /*******************************************************************/

View File

@ -17,6 +17,7 @@
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <class_board_design_settings.h> #include <class_board_design_settings.h>
#include <module_editor_frame.h> #include <module_editor_frame.h>
#include <base_units.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
@ -138,23 +139,17 @@ void DIALOG_MODEDIT_FP_BODY_ITEM_PROPERTIES::initDlg()
break; break;
} }
PutValueInLocalUnits( *m_Center_StartXCtrl, m_item->GetStart().x, PutValueInLocalUnits( *m_Center_StartXCtrl, m_item->GetStart().x );
m_parent->GetInternalUnits() );
PutValueInLocalUnits( *m_Center_StartYCtrl, m_item->GetStart().y, PutValueInLocalUnits( *m_Center_StartYCtrl, m_item->GetStart().y );
m_parent->GetInternalUnits() );
PutValueInLocalUnits( *m_EndX_Radius_Ctrl, m_item->GetEnd().x, PutValueInLocalUnits( *m_EndX_Radius_Ctrl, m_item->GetEnd().x );
m_parent->GetInternalUnits() );
PutValueInLocalUnits( *m_EndY_Ctrl, m_item->GetEnd().y, PutValueInLocalUnits( *m_EndY_Ctrl, m_item->GetEnd().y );
m_parent->GetInternalUnits() );
PutValueInLocalUnits( *m_ThicknessCtrl, m_item->GetWidth(), PutValueInLocalUnits( *m_ThicknessCtrl, m_item->GetWidth() );
m_parent->GetInternalUnits() );
PutValueInLocalUnits( *m_DefaultThicknessCtrl, m_brdSettings.m_ModuleSegmentWidth, PutValueInLocalUnits( *m_DefaultThicknessCtrl, m_brdSettings.m_ModuleSegmentWidth );
m_parent->GetInternalUnits() );
m_LayerSelectionCtrl->Append( m_parent->GetBoard()->GetLayerName( LAYER_N_BACK ) ); m_LayerSelectionCtrl->Append( m_parent->GetBoard()->GetLayerName( LAYER_N_BACK ) );
m_layerId.push_back( LAYER_N_BACK ); m_layerId.push_back( LAYER_N_BACK );

View File

@ -7,6 +7,7 @@
#include <pcbnew.h> #include <pcbnew.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <base_units.h>
#include <pcbnew_id.h> #include <pcbnew_id.h>
#include <module_editor_frame.h> #include <module_editor_frame.h>
@ -58,50 +59,39 @@ void DIALOG_GRAPHIC_ITEMS_OPTIONS::initValues()
/* Drawings width */ /* Drawings width */
AddUnitSymbol( *m_GraphicSegmWidthTitle ); AddUnitSymbol( *m_GraphicSegmWidthTitle );
PutValueInLocalUnits( *m_OptPcbSegmWidth, PutValueInLocalUnits( *m_OptPcbSegmWidth, m_brdSettings.m_DrawSegmentWidth );
m_brdSettings.m_DrawSegmentWidth,
PCB_INTERNAL_UNIT );
/* Edges width */ /* Edges width */
AddUnitSymbol( *m_BoardEdgesWidthTitle ); AddUnitSymbol( *m_BoardEdgesWidthTitle );
PutValueInLocalUnits( *m_OptPcbEdgesWidth, PutValueInLocalUnits( *m_OptPcbEdgesWidth, m_brdSettings.m_EdgeSegmentWidth );
m_brdSettings.m_EdgeSegmentWidth,
PCB_INTERNAL_UNIT );
/* Pcb Textes (Size & Width) */ /* Pcb Textes (Size & Width) */
AddUnitSymbol( *m_CopperTextWidthTitle ); AddUnitSymbol( *m_CopperTextWidthTitle );
PutValueInLocalUnits( *m_OptPcbTextWidth, PutValueInLocalUnits( *m_OptPcbTextWidth, m_brdSettings.m_PcbTextWidth );
m_brdSettings.m_PcbTextWidth, PCB_INTERNAL_UNIT );
AddUnitSymbol( *m_TextSizeVTitle ); AddUnitSymbol( *m_TextSizeVTitle );
PutValueInLocalUnits( *m_OptPcbTextVSize, PutValueInLocalUnits( *m_OptPcbTextVSize, m_brdSettings.m_PcbTextSize.y );
m_brdSettings.m_PcbTextSize.y, PCB_INTERNAL_UNIT );
AddUnitSymbol( *m_TextSizeHTitle ); AddUnitSymbol( *m_TextSizeHTitle );
PutValueInLocalUnits( *m_OptPcbTextHSize, PutValueInLocalUnits( *m_OptPcbTextHSize, m_brdSettings.m_PcbTextSize.x );
m_brdSettings.m_PcbTextSize.x, PCB_INTERNAL_UNIT );
/* Modules: Edges width */ /* Modules: Edges width */
AddUnitSymbol( *m_EdgeModWidthTitle ); AddUnitSymbol( *m_EdgeModWidthTitle );
PutValueInLocalUnits( *m_OptModuleEdgesWidth, PutValueInLocalUnits( *m_OptModuleEdgesWidth, m_brdSettings.m_ModuleSegmentWidth );
m_brdSettings.m_ModuleSegmentWidth, PCB_INTERNAL_UNIT );
/* Modules: Texts: Size & width */ /* Modules: Texts: Size & width */
AddUnitSymbol( *m_TextModWidthTitle ); AddUnitSymbol( *m_TextModWidthTitle );
PutValueInLocalUnits( *m_OptModuleTextWidth, PutValueInLocalUnits( *m_OptModuleTextWidth, m_brdSettings.m_ModuleTextWidth );
m_brdSettings.m_ModuleTextWidth, PCB_INTERNAL_UNIT );
AddUnitSymbol( *m_TextModSizeVTitle ); AddUnitSymbol( *m_TextModSizeVTitle );
PutValueInLocalUnits( *m_OptModuleTextVSize, PutValueInLocalUnits( *m_OptModuleTextVSize, m_brdSettings.m_ModuleTextSize.y );
m_brdSettings.m_ModuleTextSize.y, PCB_INTERNAL_UNIT );
AddUnitSymbol( *m_TextModSizeHTitle ); AddUnitSymbol( *m_TextModSizeHTitle );
PutValueInLocalUnits( *m_OptModuleTextHSize, PutValueInLocalUnits( *m_OptModuleTextHSize, m_brdSettings.m_ModuleTextSize.x );
m_brdSettings.m_ModuleTextSize.x, PCB_INTERNAL_UNIT );
AddUnitSymbol( *m_DefaultPenSizeTitle ); AddUnitSymbol( *m_DefaultPenSizeTitle );
PutValueInLocalUnits( *m_DefaultPenSizeCtrl, PutValueInLocalUnits( *m_DefaultPenSizeCtrl, g_DrawDefaultLineThickness );
g_DrawDefaultLineThickness, PCB_INTERNAL_UNIT );
} }

View File

@ -28,6 +28,7 @@
#include <pcbnew.h> #include <pcbnew.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <class_board_design_settings.h> #include <class_board_design_settings.h>
#include <base_units.h>
#include <class_board.h> #include <class_board.h>
@ -59,16 +60,11 @@ void DIALOG_PADS_MASK_CLEARANCE::MyInit()
m_SolderMaskMarginUnits->SetLabel( GetUnitsLabel( g_UserUnit ) ); m_SolderMaskMarginUnits->SetLabel( GetUnitsLabel( g_UserUnit ) );
m_SolderPasteMarginUnits->SetLabel( GetUnitsLabel( g_UserUnit ) ); m_SolderPasteMarginUnits->SetLabel( GetUnitsLabel( g_UserUnit ) );
int Internal_Unit = m_Parent->GetInternalUnits(); PutValueInLocalUnits( *m_SolderMaskMarginCtrl, m_BrdSettings.m_SolderMaskMargin );
PutValueInLocalUnits( *m_SolderMaskMarginCtrl,
m_BrdSettings.m_SolderMaskMargin,
Internal_Unit );
// These 2 parameters are usually < 0, so prepare entering a negative // These 2 parameters are usually < 0, so prepare entering a negative
// value, if current is 0 // value, if current is 0
PutValueInLocalUnits( *m_SolderPasteMarginCtrl, PutValueInLocalUnits( *m_SolderPasteMarginCtrl, m_BrdSettings.m_SolderPasteMargin );
m_BrdSettings.m_SolderPasteMargin,
Internal_Unit );
if( m_BrdSettings.m_SolderPasteMargin == 0 ) if( m_BrdSettings.m_SolderPasteMargin == 0 )
m_SolderPasteMarginCtrl->SetValue( wxT( "-" ) + m_SolderPasteMarginCtrl->SetValue( wxT( "-" ) +

View File

@ -37,6 +37,7 @@
#include <macros.h> #include <macros.h>
#include <wxBasePcbFrame.h> #include <wxBasePcbFrame.h>
#include <pcbcommon.h> #include <pcbcommon.h>
#include <base_units.h>
#include <wx/dcbuffer.h> #include <wx/dcbuffer.h>
#include <protos.h> #include <protos.h>
@ -243,7 +244,6 @@ void PCB_BASE_FRAME::InstallPadOptionsFrame( D_PAD* aPad )
void DIALOG_PAD_PROPERTIES::initValues() void DIALOG_PAD_PROPERTIES::initValues()
{ {
int internalUnits = m_Parent->GetInternalUnits();
wxString msg; wxString msg;
double angle; double angle;
@ -319,42 +319,38 @@ void DIALOG_PAD_PROPERTIES::initValues()
m_ThermalGapUnits->SetLabel( GetUnitsLabel( g_UserUnit ) ); m_ThermalGapUnits->SetLabel( GetUnitsLabel( g_UserUnit ) );
// Display current pad parameters units: // Display current pad parameters units:
PutValueInLocalUnits( *m_PadPosition_X_Ctrl, m_dummyPad->GetPosition().x, internalUnits ); PutValueInLocalUnits( *m_PadPosition_X_Ctrl, m_dummyPad->GetPosition().x );
PutValueInLocalUnits( *m_PadPosition_Y_Ctrl, m_dummyPad->GetPosition().y, internalUnits ); PutValueInLocalUnits( *m_PadPosition_Y_Ctrl, m_dummyPad->GetPosition().y );
PutValueInLocalUnits( *m_PadDrill_X_Ctrl, m_dummyPad->GetDrillSize().x, internalUnits ); PutValueInLocalUnits( *m_PadDrill_X_Ctrl, m_dummyPad->GetDrillSize().x );
PutValueInLocalUnits( *m_PadDrill_Y_Ctrl, m_dummyPad->GetDrillSize().y, internalUnits ); PutValueInLocalUnits( *m_PadDrill_Y_Ctrl, m_dummyPad->GetDrillSize().y );
PutValueInLocalUnits( *m_ShapeSize_X_Ctrl, m_dummyPad->GetSize().x, internalUnits ); PutValueInLocalUnits( *m_ShapeSize_X_Ctrl, m_dummyPad->GetSize().x );
PutValueInLocalUnits( *m_ShapeSize_Y_Ctrl, m_dummyPad->GetSize().y, internalUnits ); PutValueInLocalUnits( *m_ShapeSize_Y_Ctrl, m_dummyPad->GetSize().y );
PutValueInLocalUnits( *m_ShapeOffset_X_Ctrl, m_dummyPad->GetOffset().x, internalUnits ); PutValueInLocalUnits( *m_ShapeOffset_X_Ctrl, m_dummyPad->GetOffset().x );
PutValueInLocalUnits( *m_ShapeOffset_Y_Ctrl, m_dummyPad->GetOffset().y, internalUnits ); PutValueInLocalUnits( *m_ShapeOffset_Y_Ctrl, m_dummyPad->GetOffset().y );
if( m_dummyPad->GetDelta().x ) if( m_dummyPad->GetDelta().x )
{ {
PutValueInLocalUnits( *m_ShapeDelta_Ctrl, m_dummyPad->GetDelta().x, internalUnits ); PutValueInLocalUnits( *m_ShapeDelta_Ctrl, m_dummyPad->GetDelta().x );
m_trapDeltaDirChoice->SetSelection( 0 ); m_trapDeltaDirChoice->SetSelection( 0 );
} }
else else
{ {
PutValueInLocalUnits( *m_ShapeDelta_Ctrl, m_dummyPad->GetDelta().y, internalUnits ); PutValueInLocalUnits( *m_ShapeDelta_Ctrl, m_dummyPad->GetDelta().y );
m_trapDeltaDirChoice->SetSelection( 1 ); m_trapDeltaDirChoice->SetSelection( 1 );
} }
PutValueInLocalUnits( *m_LengthDieCtrl, m_dummyPad->GetDieLength(), internalUnits ); PutValueInLocalUnits( *m_LengthDieCtrl, m_dummyPad->GetDieLength() );
PutValueInLocalUnits( *m_NetClearanceValueCtrl, m_dummyPad->GetLocalClearance(), internalUnits ); PutValueInLocalUnits( *m_NetClearanceValueCtrl, m_dummyPad->GetLocalClearance() );
PutValueInLocalUnits( *m_SolderMaskMarginCtrl, PutValueInLocalUnits( *m_SolderMaskMarginCtrl, m_dummyPad->GetLocalSolderMaskMargin() );
m_dummyPad->GetLocalSolderMaskMargin(), PutValueInLocalUnits( *m_ThermalWidthCtrl, m_dummyPad->GetThermalWidth() );
internalUnits ); PutValueInLocalUnits( *m_ThermalGapCtrl, m_dummyPad->GetThermalGap() );
PutValueInLocalUnits( *m_ThermalWidthCtrl, m_dummyPad->GetThermalWidth(), internalUnits );
PutValueInLocalUnits( *m_ThermalGapCtrl, m_dummyPad->GetThermalGap(), internalUnits );
// These 2 parameters are usually < 0, so prepare entering a negative value, if current is 0 // These 2 parameters are usually < 0, so prepare entering a negative value, if current is 0
PutValueInLocalUnits( *m_SolderPasteMarginCtrl, PutValueInLocalUnits( *m_SolderPasteMarginCtrl, m_dummyPad->GetLocalSolderPasteMargin() );
m_dummyPad->GetLocalSolderPasteMargin(),
internalUnits );
if( m_dummyPad->GetLocalSolderPasteMargin() == 0 ) if( m_dummyPad->GetLocalSolderPasteMargin() == 0 )
m_SolderPasteMarginCtrl->SetValue( wxT( "-" ) + m_SolderPasteMarginCtrl->GetValue() ); m_SolderPasteMarginCtrl->SetValue( wxT( "-" ) + m_SolderPasteMarginCtrl->GetValue() );

View File

@ -33,6 +33,7 @@
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <drawtxt.h> #include <drawtxt.h>
#include <confirm.h> #include <confirm.h>
#include <base_units.h>
#include <class_board.h> #include <class_board.h>
#include <class_pcb_text.h> #include <class_pcb_text.h>
@ -113,16 +114,11 @@ void DIALOG_PCB_TEXT_PROPERTIES::MyInit()
// Fill fields with current values // Fill fields with current values
*m_TextContentCtrl << m_SelectedPCBText->m_Text; *m_TextContentCtrl << m_SelectedPCBText->m_Text;
PutValueInLocalUnits( *m_SizeXCtrl, m_SelectedPCBText->m_Size.x, PutValueInLocalUnits( *m_SizeXCtrl, m_SelectedPCBText->m_Size.x );
m_Parent->GetInternalUnits() ); PutValueInLocalUnits( *m_SizeYCtrl, m_SelectedPCBText->m_Size.y );
PutValueInLocalUnits( *m_SizeYCtrl, m_SelectedPCBText->m_Size.y, PutValueInLocalUnits( *m_ThicknessCtrl, m_SelectedPCBText->m_Thickness );
m_Parent->GetInternalUnits() ); PutValueInLocalUnits( *m_PositionXCtrl, m_SelectedPCBText->m_Pos.x );
PutValueInLocalUnits( *m_ThicknessCtrl, m_SelectedPCBText->m_Thickness, PutValueInLocalUnits( *m_PositionYCtrl, m_SelectedPCBText->m_Pos.y );
m_Parent->GetInternalUnits() );
PutValueInLocalUnits( *m_PositionXCtrl, m_SelectedPCBText->m_Pos.x,
m_Parent->GetInternalUnits() );
PutValueInLocalUnits( *m_PositionYCtrl, m_SelectedPCBText->m_Pos.y,
m_Parent->GetInternalUnits() );
int enabledLayers = m_Parent->GetBoard()->GetEnabledLayers(); int enabledLayers = m_Parent->GetBoard()->GetEnabledLayers();

View File

@ -10,6 +10,7 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <confirm.h> #include <confirm.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <base_units.h>
#include <printout_controler.h> #include <printout_controler.h>
#include <pcbnew.h> #include <pcbnew.h>
@ -260,7 +261,7 @@ void DIALOG_PRINT_USING_PRINTER::InitValues( )
s_Parameters.m_PenDefaultSize = g_DrawDefaultLineThickness; s_Parameters.m_PenDefaultSize = g_DrawDefaultLineThickness;
AddUnitSymbol( *m_TextPenWidth, g_UserUnit ); AddUnitSymbol( *m_TextPenWidth, g_UserUnit );
m_DialogPenWidth->SetValue( m_DialogPenWidth->SetValue(
ReturnStringFromValue( g_UserUnit, s_Parameters.m_PenDefaultSize, m_parent->GetInternalUnits() ) ); ReturnStringFromValue( g_UserUnit, s_Parameters.m_PenDefaultSize ) );
// Create scale adjust option // Create scale adjust option
msg.Printf( wxT( "%f" ), s_Parameters.m_XScaleAdjust ); msg.Printf( wxT( "%f" ), s_Parameters.m_XScaleAdjust );
@ -399,7 +400,7 @@ void DIALOG_PRINT_USING_PRINTER::SetPenWidth()
g_DrawDefaultLineThickness = s_Parameters.m_PenDefaultSize; g_DrawDefaultLineThickness = s_Parameters.m_PenDefaultSize;
m_DialogPenWidth->SetValue( m_DialogPenWidth->SetValue(
ReturnStringFromValue( g_UserUnit, s_Parameters.m_PenDefaultSize, m_parent->GetInternalUnits() ) ); ReturnStringFromValue( g_UserUnit, s_Parameters.m_PenDefaultSize ) );
} }
void DIALOG_PRINT_USING_PRINTER::OnScaleSelectionClick( wxCommandEvent& event ) void DIALOG_PRINT_USING_PRINTER::OnScaleSelectionClick( wxCommandEvent& event )
@ -416,7 +417,7 @@ void DIALOG_PRINT_USING_PRINTER::OnScaleSelectionClick( wxCommandEvent& event )
void DIALOG_PRINT_USING_PRINTER::OnPageSetup( wxCommandEvent& event ) void DIALOG_PRINT_USING_PRINTER::OnPageSetup( wxCommandEvent& event )
{ {
wxPageSetupDialog pageSetupDialog(this, s_pageSetupData); wxPageSetupDialog pageSetupDialog( this, s_pageSetupData );
pageSetupDialog.ShowModal(); pageSetupDialog.ShowModal();
(*s_PrintData) = pageSetupDialog.GetPageSetupDialogData().GetPrintData(); (*s_PrintData) = pageSetupDialog.GetPageSetupDialogData().GetPrintData();

View File

@ -11,6 +11,7 @@
#include <drawtxt.h> #include <drawtxt.h>
#include <dialog_helpers.h> #include <dialog_helpers.h>
#include <macros.h> #include <macros.h>
#include <base_units.h>
#include <class_board.h> #include <class_board.h>
#include <class_pcb_text.h> #include <class_pcb_text.h>
@ -91,24 +92,19 @@ DIALOG_DIMENSION_EDITOR::DIALOG_DIMENSION_EDITOR( PCB_EDIT_FRAME* aParent,
m_Name->SetValue( aDimension->m_Text.m_Text ); m_Name->SetValue( aDimension->m_Text.m_Text );
// Enter size value in dialog // Enter size value in dialog
PutValueInLocalUnits( *m_TxtSizeXCtrl, aDimension->m_Text.m_Size.x, PutValueInLocalUnits( *m_TxtSizeXCtrl, aDimension->m_Text.m_Size.x );
m_Parent->GetInternalUnits() );
AddUnitSymbol( *m_staticTextSizeX ); AddUnitSymbol( *m_staticTextSizeX );
PutValueInLocalUnits( *m_TxtSizeYCtrl, aDimension->m_Text.m_Size.y, PutValueInLocalUnits( *m_TxtSizeYCtrl, aDimension->m_Text.m_Size.y );
m_Parent->GetInternalUnits() );
AddUnitSymbol( *m_staticTextSizeY ); AddUnitSymbol( *m_staticTextSizeY );
// Enter lines thickness value in dialog // Enter lines thickness value in dialog
PutValueInLocalUnits( *m_TxtWidthCtrl, aDimension->m_Width, PutValueInLocalUnits( *m_TxtWidthCtrl, aDimension->m_Width );
m_Parent->GetInternalUnits() );
AddUnitSymbol( *m_staticTextWidth ); AddUnitSymbol( *m_staticTextWidth );
// Enter position value in dialog // Enter position value in dialog
PutValueInLocalUnits( *m_textCtrlPosX, aDimension->m_Text.m_Pos.x, PutValueInLocalUnits( *m_textCtrlPosX, aDimension->m_Text.m_Pos.x );
m_Parent->GetInternalUnits() );
AddUnitSymbol( *m_staticTextPosX ); AddUnitSymbol( *m_staticTextPosX );
PutValueInLocalUnits( *m_textCtrlPosY, aDimension->m_Text.m_Pos.y, PutValueInLocalUnits( *m_textCtrlPosY, aDimension->m_Text.m_Pos.y );
m_Parent->GetInternalUnits() );
AddUnitSymbol( *m_staticTextPosY ); AddUnitSymbol( *m_staticTextPosY );
for( int layer = FIRST_NO_COPPER_LAYER; layer<NB_LAYERS; layer++ ) for( int layer = FIRST_NO_COPPER_LAYER; layer<NB_LAYERS; layer++ )

View File

@ -31,6 +31,7 @@
#include <fctsys.h> #include <fctsys.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <trigo.h> #include <trigo.h>
#include <base_units.h>
#include <class_board_design_settings.h> #include <class_board_design_settings.h>
#include <class_module.h> #include <class_module.h>
@ -55,14 +56,11 @@ void DRC::ShowDialog()
// copy data retained in this DRC object into the m_ui DrcPanel: // copy data retained in this DRC object into the m_ui DrcPanel:
PutValueInLocalUnits( *m_ui->m_SetTrackMinWidthCtrl, PutValueInLocalUnits( *m_ui->m_SetTrackMinWidthCtrl,
m_pcb->GetDesignSettings().m_TrackMinWidth, m_pcb->GetDesignSettings().m_TrackMinWidth );
m_mainWindow->GetInternalUnits() );
PutValueInLocalUnits( *m_ui->m_SetViaMinSizeCtrl, PutValueInLocalUnits( *m_ui->m_SetViaMinSizeCtrl,
m_pcb->GetDesignSettings().m_ViasMinSize, m_pcb->GetDesignSettings().m_ViasMinSize );
m_mainWindow->GetInternalUnits() );
PutValueInLocalUnits( *m_ui->m_SetMicroViakMinSizeCtrl, PutValueInLocalUnits( *m_ui->m_SetMicroViakMinSizeCtrl,
m_pcb->GetDesignSettings().m_MicroViasMinSize, m_pcb->GetDesignSettings().m_MicroViasMinSize );
m_mainWindow->GetInternalUnits() );
m_ui->m_CreateRptCtrl->SetValue( m_doCreateRptFile ); m_ui->m_CreateRptCtrl->SetValue( m_doCreateRptFile );
m_ui->m_RptFilenameCtrl->SetValue( m_rptFilename ); m_ui->m_RptFilenameCtrl->SetValue( m_rptFilename );
@ -294,7 +292,7 @@ bool DRC::doNetClass( NETCLASS* nc, wxString& msg )
const BOARD_DESIGN_SETTINGS& g = m_pcb->GetDesignSettings(); const BOARD_DESIGN_SETTINGS& g = m_pcb->GetDesignSettings();
#define FmtVal( x ) GetChars( ReturnStringFromValue( g_UserUnit, x, PCB_INTERNAL_UNIT ) ) #define FmtVal( x ) GetChars( ReturnStringFromValue( g_UserUnit, x ) )
#if 0 // set to 1 when (if...) BOARD_DESIGN_SETTINGS has a m_MinClearance value #if 0 // set to 1 when (if...) BOARD_DESIGN_SETTINGS has a m_MinClearance value
if( nc->GetClearance() < g.m_MinClearance ) if( nc->GetClearance() < g.m_MinClearance )

View File

@ -36,6 +36,7 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <confirm.h> #include <confirm.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <base_units.h>
#include <module_editor_frame.h> #include <module_editor_frame.h>
#include <class_board.h> #include <class_board.h>
@ -238,8 +239,7 @@ void FOOTPRINT_EDIT_FRAME::Enter_Edge_Width( EDGE_MODULE* aEdge )
{ {
wxString buffer; wxString buffer;
buffer = ReturnStringFromValue( g_UserUnit, GetDesignSettings().m_ModuleSegmentWidth, buffer = ReturnStringFromValue( g_UserUnit, GetDesignSettings().m_ModuleSegmentWidth );
GetScreen()->GetInternalUnits() );
wxTextEntryDialog dlg( this, _( "New Width:" ), _( "Edge Width" ), buffer ); wxTextEntryDialog dlg( this, _( "New Width:" ), _( "Edge Width" ), buffer );
if( dlg.ShowModal() != wxID_OK ) if( dlg.ShowModal() != wxID_OK )

View File

@ -41,6 +41,7 @@
#include <gr_basic.h> #include <gr_basic.h>
#include <pcbcommon.h> #include <pcbcommon.h>
#include <macros.h> #include <macros.h>
#include <base_units.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
@ -197,7 +198,7 @@ MODULE* PCB_EDIT_FRAME::Genere_Self( wxDC* DC )
Mself.lng = min_len; Mself.lng = min_len;
// Enter the desired length. // Enter the desired length.
msg = ReturnStringFromValue( g_UserUnit, Mself.lng, GetScreen()->GetInternalUnits() ); msg = ReturnStringFromValue( g_UserUnit, Mself.lng );
wxTextEntryDialog dlg( this, _( "Length:" ), _( "Length" ), msg ); wxTextEntryDialog dlg( this, _( "Length:" ), _( "Length" ), msg );
if( dlg.ShowModal() != wxID_OK ) if( dlg.ShowModal() != wxID_OK )
@ -610,8 +611,7 @@ MODULE* PCB_EDIT_FRAME::Create_MuWaveComponent( int shape_type )
break; break;
} }
wxString value = ReturnStringFromValue( g_UserUnit, gap_size, wxString value = ReturnStringFromValue( g_UserUnit, gap_size );
GetScreen()->GetInternalUnits() );
wxTextEntryDialog dlg( this, msg, _( "Create microwave module" ), value ); wxTextEntryDialog dlg( this, msg, _( "Create microwave module" ), value );
if( dlg.ShowModal() != wxID_OK ) if( dlg.ShowModal() != wxID_OK )
@ -1087,7 +1087,7 @@ void PCB_EDIT_FRAME::Edit_Gap( wxDC* DC, MODULE* aModule )
gap_size = next_pad->GetPos0().x - pad->GetPos0().x - pad->GetSize().x; gap_size = next_pad->GetPos0().x - pad->GetPos0().x - pad->GetSize().x;
// Entrer the desired length of the gap. // Entrer the desired length of the gap.
msg = ReturnStringFromValue( g_UserUnit, gap_size, GetScreen()->GetInternalUnits() ); msg = ReturnStringFromValue( g_UserUnit, gap_size );
wxTextEntryDialog dlg( this, _( "Gap:" ), _( "Create Microwave Gap" ), msg ); wxTextEntryDialog dlg( this, _( "Gap:" ), _( "Create Microwave Gap" ), msg );
if( dlg.ShowModal() != wxID_OK ) if( dlg.ShowModal() != wxID_OK )

View File

@ -31,6 +31,7 @@
#include <fctsys.h> #include <fctsys.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <macros.h> #include <macros.h>
#include <base_units.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
@ -888,8 +889,7 @@ static wxMenu* Append_Track_Width_List( BOARD* aBoard )
for( unsigned ii = 0; ii < aBoard->m_TrackWidthList.size(); ii++ ) for( unsigned ii = 0; ii < aBoard->m_TrackWidthList.size(); ii++ )
{ {
value = ReturnStringFromValue( g_UserUnit, aBoard->m_TrackWidthList[ii], value = ReturnStringFromValue( g_UserUnit, aBoard->m_TrackWidthList[ii], true );
PCB_INTERNAL_UNIT, true );
msg.Printf( _( "Track %s" ), GetChars( value ) ); msg.Printf( _( "Track %s" ), GetChars( value ) );
if( ii == 0 ) if( ii == 0 )
@ -903,10 +903,10 @@ static wxMenu* Append_Track_Width_List( BOARD* aBoard )
for( unsigned ii = 0; ii < aBoard->m_ViasDimensionsList.size(); ii++ ) for( unsigned ii = 0; ii < aBoard->m_ViasDimensionsList.size(); ii++ )
{ {
value = ReturnStringFromValue( g_UserUnit, aBoard->m_ViasDimensionsList[ii].m_Diameter, value = ReturnStringFromValue( g_UserUnit, aBoard->m_ViasDimensionsList[ii].m_Diameter,
PCB_INTERNAL_UNIT, true ); true );
wxString drill = ReturnStringFromValue( g_UserUnit, wxString drill = ReturnStringFromValue( g_UserUnit,
aBoard->m_ViasDimensionsList[ii].m_Drill, aBoard->m_ViasDimensionsList[ii].m_Drill,
PCB_INTERNAL_UNIT, true ); true );
if( aBoard->m_ViasDimensionsList[ii].m_Drill <= 0 ) if( aBoard->m_ViasDimensionsList[ii].m_Drill <= 0 )
{ {

View File

@ -12,6 +12,7 @@
#include <worksheet.h> #include <worksheet.h>
#include <pcbstruct.h> #include <pcbstruct.h>
#include <macros.h> #include <macros.h>
#include <base_units.h>
#include <class_board.h> #include <class_board.h>
@ -120,21 +121,20 @@ void DIALOG_PLOT::Init_Dialog()
// Set units and value for HPGL pen size. // Set units and value for HPGL pen size.
AddUnitSymbol( *m_textPenSize, g_UserUnit ); AddUnitSymbol( *m_textPenSize, g_UserUnit );
msg = ReturnStringFromValue( g_UserUnit, m_plotOpts.GetHpglPenDiameter(), UNITS_MILS ); msg = ReturnStringFromValue( g_UserUnit, m_plotOpts.GetHpglPenDiameter() * 10 );
m_HPGLPenSizeOpt->AppendText( msg ); m_HPGLPenSizeOpt->AppendText( msg );
// Set units to cm/s for standard HPGL pen speed. // Set units to cm/s for standard HPGL pen speed.
msg = ReturnStringFromValue( UNSCALED_UNITS, m_plotOpts.GetHpglPenSpeed(), 1 ); msg = ReturnStringFromValue( UNSCALED_UNITS, m_plotOpts.GetHpglPenSpeed() * 10000 );
m_HPGLPenSpeedOpt->AppendText( msg ); m_HPGLPenSpeedOpt->AppendText( msg );
// Set units and value for HPGL pen overlay. // Set units and value for HPGL pen overlay.
AddUnitSymbol( *m_textPenOvr, g_UserUnit ); AddUnitSymbol( *m_textPenOvr, g_UserUnit );
msg = ReturnStringFromValue( g_UserUnit, m_plotOpts.GetHpglPenOverlay(), UNITS_MILS ); msg = ReturnStringFromValue( g_UserUnit, m_plotOpts.GetHpglPenOverlay() * 10 );
m_HPGLPenOverlayOpt->AppendText( msg ); m_HPGLPenOverlayOpt->AppendText( msg );
AddUnitSymbol( *m_textDefaultPenSize, g_UserUnit ); AddUnitSymbol( *m_textDefaultPenSize, g_UserUnit );
msg = ReturnStringFromValue( g_UserUnit, m_plotOpts.GetPlotLineWidth(), msg = ReturnStringFromValue( g_UserUnit, m_plotOpts.GetPlotLineWidth() );
PCB_INTERNAL_UNIT );
m_linesWidth->AppendText( msg ); m_linesWidth->AppendText( msg );
// Set units for PS global width correction. // Set units for PS global width correction.
@ -157,7 +157,7 @@ void DIALOG_PLOT::Init_Dialog()
if( m_PSWidthAdjust < m_WidthAdjustMinValue || m_PSWidthAdjust > m_WidthAdjustMaxValue ) if( m_PSWidthAdjust < m_WidthAdjustMinValue || m_PSWidthAdjust > m_WidthAdjustMaxValue )
m_PSWidthAdjust = 0.; m_PSWidthAdjust = 0.;
msg.Printf( wxT( "%f" ), To_User_Unit( g_UserUnit, m_PSWidthAdjust, PCB_INTERNAL_UNIT ) ); msg.Printf( wxT( "%f" ), To_User_Unit( g_UserUnit, m_PSWidthAdjust ) );
m_PSFineAdjustWidthOpt->AppendText( msg ); m_PSFineAdjustWidthOpt->AppendText( msg );
m_plotPSNegativeOpt->SetValue( m_plotOpts.m_PlotPSNegative ); m_plotPSNegativeOpt->SetValue( m_plotOpts.m_PlotPSNegative );
@ -454,7 +454,7 @@ void DIALOG_PLOT::applyPlotSettings()
if( !tempOptions.SetHpglPenDiameter( tmp ) ) if( !tempOptions.SetHpglPenDiameter( tmp ) )
{ {
msg = ReturnStringFromValue( g_UserUnit, tempOptions.GetHpglPenDiameter(), UNITS_MILS ); msg = ReturnStringFromValue( g_UserUnit, tempOptions.GetHpglPenDiameter() * 10 );
m_HPGLPenSizeOpt->SetValue( msg ); m_HPGLPenSizeOpt->SetValue( msg );
msg.Printf( _( "HPGL pen size constrained!\n" ) ); msg.Printf( _( "HPGL pen size constrained!\n" ) );
m_messagesBox->AppendText( msg ); m_messagesBox->AppendText( msg );
@ -466,7 +466,7 @@ void DIALOG_PLOT::applyPlotSettings()
if( !tempOptions.SetHpglPenSpeed( tmp ) ) if( !tempOptions.SetHpglPenSpeed( tmp ) )
{ {
msg = ReturnStringFromValue( UNSCALED_UNITS, tempOptions.GetHpglPenSpeed(), 1 ); msg = ReturnStringFromValue( UNSCALED_UNITS, tempOptions.GetHpglPenSpeed() * 1000 );
m_HPGLPenSpeedOpt->SetValue( msg ); m_HPGLPenSpeedOpt->SetValue( msg );
msg.Printf( _( "HPGL pen speed constrained!\n" ) ); msg.Printf( _( "HPGL pen speed constrained!\n" ) );
m_messagesBox->AppendText( msg ); m_messagesBox->AppendText( msg );
@ -478,7 +478,7 @@ void DIALOG_PLOT::applyPlotSettings()
if( !tempOptions.SetHpglPenOverlay( tmp ) ) if( !tempOptions.SetHpglPenOverlay( tmp ) )
{ {
msg = ReturnStringFromValue( g_UserUnit, tempOptions.GetHpglPenOverlay(), UNITS_MILS ); msg = ReturnStringFromValue( g_UserUnit, tempOptions.GetHpglPenOverlay() * 10 );
m_HPGLPenOverlayOpt->SetValue( msg ); m_HPGLPenOverlayOpt->SetValue( msg );
msg.Printf( _( "HPGL pen overlay constrained!\n" ) ); msg.Printf( _( "HPGL pen overlay constrained!\n" ) );
m_messagesBox->AppendText( msg ); m_messagesBox->AppendText( msg );
@ -490,8 +490,7 @@ void DIALOG_PLOT::applyPlotSettings()
if( !tempOptions.SetPlotLineWidth( tmp ) ) if( !tempOptions.SetPlotLineWidth( tmp ) )
{ {
msg = ReturnStringFromValue( g_UserUnit, tempOptions.GetPlotLineWidth(), msg = ReturnStringFromValue( g_UserUnit, tempOptions.GetPlotLineWidth() );
PCB_INTERNAL_UNIT );
m_linesWidth->SetValue( msg ); m_linesWidth->SetValue( msg );
msg.Printf( _( "Default linewidth constrained!\n" ) ); msg.Printf( _( "Default linewidth constrained!\n" ) );
m_messagesBox->AppendText( msg ); m_messagesBox->AppendText( msg );
@ -532,13 +531,13 @@ void DIALOG_PLOT::applyPlotSettings()
if( !setDouble( &m_PSWidthAdjust, tmpDouble, m_WidthAdjustMinValue, m_WidthAdjustMaxValue ) ) if( !setDouble( &m_PSWidthAdjust, tmpDouble, m_WidthAdjustMinValue, m_WidthAdjustMaxValue ) )
{ {
msg = ReturnStringFromValue( g_UserUnit, m_PSWidthAdjust, PCB_INTERNAL_UNIT ); msg = ReturnStringFromValue( g_UserUnit, m_PSWidthAdjust );
m_PSFineAdjustWidthOpt->SetValue( msg ); m_PSFineAdjustWidthOpt->SetValue( msg );
msg.Printf( _( "Width correction constrained!\n" msg.Printf( _( "Width correction constrained!\n"
"The reasonable width correction value must be in a range of\n" "The reasonable width correction value must be in a range of\n"
" [%+f; %+f] (%s) for current design rules!\n" ), " [%+f; %+f] (%s) for current design rules!\n" ),
To_User_Unit( g_UserUnit, m_WidthAdjustMinValue, PCB_INTERNAL_UNIT ), To_User_Unit( g_UserUnit, m_WidthAdjustMinValue ),
To_User_Unit( g_UserUnit, m_WidthAdjustMaxValue, PCB_INTERNAL_UNIT ), To_User_Unit( g_UserUnit, m_WidthAdjustMaxValue ),
( g_UserUnit == INCHES )? wxT("\"") : wxT("mm") ); ( g_UserUnit == INCHES )? wxT("\"") : wxT("mm") );
m_messagesBox->AppendText( msg ); m_messagesBox->AppendText( msg );
} }
@ -610,7 +609,7 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event )
else else
{ {
wxMessageBox( _( "Cannot create output directory!" ), wxMessageBox( _( "Cannot create output directory!" ),
_( "Plot" ), wxOK | wxICON_ERROR ); _( "Plot" ), wxOK | wxICON_ERROR );
return; return;
} }
} }

View File

@ -7,6 +7,7 @@
#include <common.h> #include <common.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <wxBasePcbFrame.h> #include <wxBasePcbFrame.h>
#include <base_units.h>
#include <pcbnew.h> #include <pcbnew.h>
#include <pcbnew_id.h> #include <pcbnew_id.h>
@ -135,8 +136,8 @@ void DIALOG_SET_GRID::SetGridOrigin( const wxPoint& grid )
{ {
wxString msg; wxString msg;
PutValueInLocalUnits( *m_GridOriginXCtrl, grid.x, m_internalUnits ); PutValueInLocalUnits( *m_GridOriginXCtrl, grid.x );
PutValueInLocalUnits( *m_GridOriginYCtrl, grid.y, m_internalUnits ); PutValueInLocalUnits( *m_GridOriginYCtrl, grid.y );
} }
void DIALOG_SET_GRID::SetGridForFastSwitching( wxArrayString aGrids, int aGrid1, int aGrid2 ) void DIALOG_SET_GRID::SetGridForFastSwitching( wxArrayString aGrids, int aGrid1, int aGrid2 )

View File

@ -6,6 +6,7 @@
#include <appl_wxstruct.h> #include <appl_wxstruct.h>
#include <confirm.h> #include <confirm.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <base_units.h>
#include <class_board.h> #include <class_board.h>
#include <class_zone.h> #include <class_zone.h>
@ -79,9 +80,7 @@ void DIALOG_NON_COPPER_ZONES_EDITOR::Init()
m_FillModeCtrl->SetSelection( m_settings.m_FillMode ? 1 : 0 ); m_FillModeCtrl->SetSelection( m_settings.m_FillMode ? 1 : 0 );
AddUnitSymbol( *m_MinThicknessValueTitle, g_UserUnit ); AddUnitSymbol( *m_MinThicknessValueTitle, g_UserUnit );
wxString msg = ReturnStringFromValue( g_UserUnit, wxString msg = ReturnStringFromValue( g_UserUnit, m_settings.m_ZoneMinThickness );
m_settings.m_ZoneMinThickness,
m_Parent->GetInternalUnits() );
m_ZoneMinThicknessCtrl->SetValue( msg ); m_ZoneMinThicknessCtrl->SetValue( msg );
if( m_settings.m_Zone_45_Only ) if( m_settings.m_Zone_45_Only )