Fix regression in user grid size.

Frame, dialog and config file couldn't agree on whether to use
internal units or not.

Frame now stores internal units, and they're now mapped on the
way in/out of the config file.  Dialog was already assuming they
were stored in internal units (though they were previuosly not).

Fixes: lp:1751435
* https://bugs.launchpad.net/kicad/+bug/1751435
This commit is contained in:
Jeff Young 2018-02-24 11:24:00 +00:00 committed by Wayne Stambaugh
parent 3a73e775de
commit 821a411ac0
5 changed files with 24 additions and 17 deletions

View File

@ -68,7 +68,7 @@ class PCB_BASE_FRAME : public EDA_DRAW_FRAME
{
public:
PCB_DISPLAY_OPTIONS m_DisplayOptions;
wxRealPoint m_UserGridSize;
wxPoint m_UserGridSize;
int m_FastGrid1; // 1st fast grid setting (index in EDA_DRAW_FRAME::m_gridSelectBox)
int m_FastGrid2; // 2nd fast grid setting (index in EDA_DRAW_FRAME::m_gridSelectBox)

View File

@ -72,8 +72,8 @@ private:
FinishDialogSettings();
}
void setGridSize( const wxRealPoint& grid );
bool getGridSize( wxRealPoint& aGrisSize );
void setGridSize( const wxPoint& grid );
bool getGridSize( wxPoint& aGrisSize );
void setGridOrigin( const wxPoint& grid );
bool getGridOrigin( wxPoint& aGridOrigin );
@ -112,7 +112,7 @@ bool DIALOG_SET_GRID::TransferDataFromWindow()
return false;
}
wxRealPoint gridSize;
wxPoint gridSize;
if( !getGridSize( gridSize ) )
{
@ -137,7 +137,7 @@ bool DIALOG_SET_GRID::TransferDataFromWindow()
// User grid
BASE_SCREEN* screen = m_parent->GetScreen();
screen->AddGrid( gridSize, g_UserUnit, ID_POPUP_GRID_USER );
screen->AddGrid( gridSize, EDA_UNITS_T::UNSCALED_UNITS, ID_POPUP_GRID_USER );
// If the user grid is the current option, recall SetGrid()
// to force new values put in list as current grid value
@ -171,7 +171,7 @@ bool DIALOG_SET_GRID::TransferDataToWindow()
}
void DIALOG_SET_GRID::setGridSize( const wxRealPoint& grid )
void DIALOG_SET_GRID::setGridSize( const wxPoint& grid )
{
wxString msg;
@ -183,7 +183,7 @@ void DIALOG_SET_GRID::setGridSize( const wxRealPoint& grid )
}
bool DIALOG_SET_GRID::getGridSize( wxRealPoint& aGridSize )
bool DIALOG_SET_GRID::getGridSize( wxPoint& aGridSize )
{
double x, y;
@ -198,8 +198,6 @@ bool DIALOG_SET_GRID::getGridSize( wxRealPoint& aGridSize )
if( x < MIN_GRID_SIZE || x > MAX_GRID_SIZE )
return false;
aGridSize.x = x;
const wxString& y_str = m_OptGridSizeY->GetValue();
if( !y_str.ToDouble( &y ) )
@ -211,7 +209,8 @@ bool DIALOG_SET_GRID::getGridSize( wxRealPoint& aGridSize )
if( y < MIN_GRID_SIZE || y > MAX_GRID_SIZE )
return false;
aGridSize.y = y;
aGridSize.x = KiROUND( x );
aGridSize.y = KiROUND( y );
return true;
}

View File

@ -278,7 +278,7 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
GetScreen()->SetMaxUndoItems( m_UndoRedoCountMax );
GetScreen()->SetCurItem( NULL );
GetScreen()->AddGrid( m_UserGridSize, g_UserUnit, ID_POPUP_GRID_USER );
GetScreen()->AddGrid( m_UserGridSize, EDA_UNITS_T::UNSCALED_UNITS, ID_POPUP_GRID_USER );
GetScreen()->SetGrid( ID_POPUP_GRID_LEVEL_1000 + m_LastGridSizeId );
// In modedit, set the default paper size to A4:

View File

@ -109,7 +109,7 @@ PCB_BASE_FRAME::PCB_BASE_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrame
{
m_Pcb = NULL;
m_UserGridSize = wxRealPoint( 100.0, 100.0 );
m_UserGridSize = wxPoint( 10 * IU_PER_MILS, 10 * IU_PER_MILS );
m_Collector = new GENERAL_COLLECTOR();
m_FastGrid1 = 0;
@ -840,8 +840,15 @@ void PCB_BASE_FRAME::LoadSettings( wxConfigBase* aCfg )
wxString baseCfgName = GetName();
aCfg->Read( baseCfgName + UserGridSizeXEntry, &m_UserGridSize.x, 0.01 );
aCfg->Read( baseCfgName + UserGridSizeYEntry, &m_UserGridSize.y, 0.01 );
EDA_UNITS_T userGridUnits;
aCfg->Read( baseCfgName + UserGridUnitsEntry, ( int* )&userGridUnits, ( int )INCHES );
double tmp;
aCfg->Read( baseCfgName + UserGridSizeXEntry, &tmp, 0.01 );
m_UserGridSize.x = From_User_Unit( userGridUnits, tmp );
aCfg->Read( baseCfgName + UserGridSizeYEntry, &tmp, 0.01 );
m_UserGridSize.y = From_User_Unit( userGridUnits, tmp );
aCfg->Read( baseCfgName + DisplayPadFillEntry, &m_DisplayOptions.m_DisplayPadFill, true );
aCfg->Read( baseCfgName + DisplayViaFillEntry, &m_DisplayOptions.m_DisplayViaFill, true );
@ -864,8 +871,9 @@ void PCB_BASE_FRAME::SaveSettings( wxConfigBase* aCfg )
wxString baseCfgName = GetName();
aCfg->Write( baseCfgName + UserGridSizeXEntry, m_UserGridSize.x );
aCfg->Write( baseCfgName + UserGridSizeYEntry, m_UserGridSize.y );
aCfg->Write( baseCfgName + UserGridSizeXEntry, To_User_Unit( g_UserUnit, m_UserGridSize.x ) );
aCfg->Write( baseCfgName + UserGridSizeYEntry, To_User_Unit( g_UserUnit, m_UserGridSize.y ) );
aCfg->Write( baseCfgName + UserGridUnitsEntry, ( long )g_UserUnit );
aCfg->Write( baseCfgName + DisplayPadFillEntry, m_DisplayOptions.m_DisplayPadFill );
aCfg->Write( baseCfgName + DisplayViaFillEntry, m_DisplayOptions.m_DisplayViaFill );
aCfg->Write( baseCfgName + DisplayPadNumberEntry, m_DisplayOptions.m_DisplayPadNum );

View File

@ -378,7 +378,7 @@ PCB_EDIT_FRAME::PCB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y );
GetScreen()->AddGrid( m_UserGridSize, g_UserUnit, ID_POPUP_GRID_USER );
GetScreen()->AddGrid( m_UserGridSize, EDA_UNITS_T::UNSCALED_UNITS, ID_POPUP_GRID_USER );
GetScreen()->SetGrid( ID_POPUP_GRID_LEVEL_1000 + m_LastGridSizeId );
if( m_canvas )