Completely remove reading SCH grid sizes from config files.

It messes up too many things if you put metric grids in there.

Fixes https://gitlab.com/kicad/code/kicad/issues/13345
This commit is contained in:
Jeff Young 2023-01-05 12:23:03 +00:00
parent c5d7e447c7
commit 3b021d98be
6 changed files with 60 additions and 38 deletions

View File

@ -22,7 +22,6 @@
*/ */
#include <dialogs/dialog_grid_settings.h> #include <dialogs/dialog_grid_settings.h>
#include <base_units.h>
#include <common.h> #include <common.h>
#include <settings/app_settings.h> #include <settings/app_settings.h>
#include <eda_draw_frame.h> #include <eda_draw_frame.h>
@ -30,6 +29,8 @@
#include <tool/actions.h> #include <tool/actions.h>
#include <tool/grid_menu.h> #include <tool/grid_menu.h>
#include <tool/common_tools.h> #include <tool/common_tools.h>
#include <pgm_base.h>
#include <settings/settings_manager.h>
DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS( EDA_DRAW_FRAME* aParent ): DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS( EDA_DRAW_FRAME* aParent ):
DIALOG_GRID_SETTINGS_BASE( aParent ), DIALOG_GRID_SETTINGS_BASE( aParent ),
@ -114,7 +115,8 @@ bool DIALOG_GRID_SETTINGS::TransferDataFromWindow()
return false; return false;
// Apply the new settings // Apply the new settings
GRID_SETTINGS& gridCfg = m_parent->config()->m_Window.grid; APP_SETTINGS_BASE* cfg = m_parent->config();
GRID_SETTINGS& gridCfg = cfg->m_Window.grid;
gridCfg.last_size_idx = m_currentGridCtrl->GetSelection(); gridCfg.last_size_idx = m_currentGridCtrl->GetSelection();
m_parent->SetGridOrigin( wxPoint( m_gridOriginX.GetValue(), m_gridOriginY.GetValue() ) ); m_parent->SetGridOrigin( wxPoint( m_gridOriginX.GetValue(), m_gridOriginY.GetValue() ) );

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Oct 26 2018) // C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
// http://www.wxformbuilder.org/ // http://www.wxformbuilder.org/
// //
// PLEASE DO *NOT* EDIT THIS FILE! // PLEASE DO *NOT* EDIT THIS FILE!
@ -177,7 +177,7 @@ DIALOG_GRID_SETTINGS_BASE::DIALOG_GRID_SETTINGS_BASE( wxWindow* parent, wxWindow
m_buttonResetSizes->Hide(); m_buttonResetSizes->Hide();
m_buttonResetSizes->SetToolTip( _("Resets the list of grid sizes to default values") ); m_buttonResetSizes->SetToolTip( _("Resets the list of grid sizes to default values") );
bButtonSizer->Add( m_buttonResetSizes, 0, wxALL, 5 ); bButtonSizer->Add( m_buttonResetSizes, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
bButtonSizer->Add( 0, 0, 1, wxEXPAND, 5 ); bButtonSizer->Add( 0, 0, 1, wxEXPAND, 5 );

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<wxFormBuilder_Project> <wxFormBuilder_Project>
<FileVersion major="1" minor="15" /> <FileVersion major="1" minor="16" />
<object class="Project" expanded="1"> <object class="Project" expanded="1">
<property name="class_decoration"></property> <property name="class_decoration"></property>
<property name="code_generation">C++</property> <property name="code_generation">C++</property>
@ -14,6 +14,7 @@
<property name="file">dialog_grid_settings_base</property> <property name="file">dialog_grid_settings_base</property>
<property name="first_id">1000</property> <property name="first_id">1000</property>
<property name="help_provider">none</property> <property name="help_provider">none</property>
<property name="image_path_wrapper_function_name"></property>
<property name="indent_with_spaces"></property> <property name="indent_with_spaces"></property>
<property name="internationalize">1</property> <property name="internationalize">1</property>
<property name="name">dialog_grid_settings</property> <property name="name">dialog_grid_settings</property>
@ -25,6 +26,7 @@
<property name="skip_php_events">1</property> <property name="skip_php_events">1</property>
<property name="skip_python_events">1</property> <property name="skip_python_events">1</property>
<property name="ui_table">UI</property> <property name="ui_table">UI</property>
<property name="use_array_enum">0</property>
<property name="use_enum">0</property> <property name="use_enum">0</property>
<property name="use_microsoft_bom">0</property> <property name="use_microsoft_bom">0</property>
<object class="Dialog" expanded="1"> <object class="Dialog" expanded="1">
@ -50,6 +52,7 @@
<property name="subclass">DIALOG_SHIM; dialog_shim.h</property> <property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
<property name="title">Grid Settings</property> <property name="title">Grid Settings</property>
<property name="tooltip"></property> <property name="tooltip"></property>
<property name="two_step_creation">0</property>
<property name="window_extra_style"></property> <property name="window_extra_style"></property>
<property name="window_name"></property> <property name="window_name"></property>
<property name="window_style"></property> <property name="window_style"></property>
@ -1599,6 +1602,7 @@
<property name="aui_name"></property> <property name="aui_name"></property>
<property name="aui_position"></property> <property name="aui_position"></property>
<property name="aui_row"></property> <property name="aui_row"></property>
<property name="auth_needed">0</property>
<property name="best_size"></property> <property name="best_size"></property>
<property name="bg"></property> <property name="bg"></property>
<property name="bitmap"></property> <property name="bitmap"></property>
@ -1661,7 +1665,7 @@
</object> </object>
<object class="sizeritem" expanded="1"> <object class="sizeritem" expanded="1">
<property name="border">5</property> <property name="border">5</property>
<property name="flag">wxALL</property> <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property> <property name="proportion">0</property>
<object class="wxButton" expanded="1"> <object class="wxButton" expanded="1">
<property name="BottomDockable">1</property> <property name="BottomDockable">1</property>
@ -1672,6 +1676,7 @@
<property name="aui_name"></property> <property name="aui_name"></property>
<property name="aui_position"></property> <property name="aui_position"></property>
<property name="aui_row"></property> <property name="aui_row"></property>
<property name="auth_needed">0</property>
<property name="best_size"></property> <property name="best_size"></property>
<property name="bg"></property> <property name="bg"></property>
<property name="bitmap"></property> <property name="bitmap"></property>

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Oct 26 2018) // C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
// http://www.wxformbuilder.org/ // http://www.wxformbuilder.org/
// //
// PLEASE DO *NOT* EDIT THIS FILE! // PLEASE DO *NOT* EDIT THIS FILE!
@ -24,10 +24,10 @@
#include <wx/choice.h> #include <wx/choice.h>
#include <wx/simplebook.h> #include <wx/simplebook.h>
#include <wx/statline.h> #include <wx/statline.h>
#include <wx/button.h>
#include <wx/bitmap.h> #include <wx/bitmap.h>
#include <wx/image.h> #include <wx/image.h>
#include <wx/icon.h> #include <wx/icon.h>
#include <wx/button.h>
#include <wx/dialog.h> #include <wx/dialog.h>
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
@ -78,6 +78,7 @@ class DIALOG_GRID_SETTINGS_BASE : public DIALOG_SHIM
public: public:
DIALOG_GRID_SETTINGS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Grid Settings"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE ); DIALOG_GRID_SETTINGS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Grid Settings"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );
~DIALOG_GRID_SETTINGS_BASE(); ~DIALOG_GRID_SETTINGS_BASE();
}; };

View File

@ -27,7 +27,6 @@
#include <settings/json_settings_internals.h> #include <settings/json_settings_internals.h>
#include <settings/common_settings.h> #include <settings/common_settings.h>
#include <settings/parameters.h> #include <settings/parameters.h>
#include <base_units.h>
APP_SETTINGS_BASE::APP_SETTINGS_BASE( const std::string& aFilename, int aSchemaVersion ) : APP_SETTINGS_BASE::APP_SETTINGS_BASE( const std::string& aFilename, int aSchemaVersion ) :
@ -316,16 +315,29 @@ void APP_SETTINGS_BASE::addParamsForWindow( WINDOW_SETTINGS* aWindow, const std:
m_params.emplace_back( new PARAM<bool>( aJsonPath + ".grid.axes_enabled", m_params.emplace_back( new PARAM<bool>( aJsonPath + ".grid.axes_enabled",
&aWindow->grid.axes_enabled, false ) ); &aWindow->grid.axes_enabled, false ) );
m_params.emplace_back( new PARAM_LIST<wxString>( aJsonPath + ".grid.sizes",
&aWindow->grid.sizes, DefaultGridSizeList() ) );
int defaultGridIdx; int defaultGridIdx;
if( m_filename == "eeschema" || m_filename == "symbol_editor" || m_filename == "pl_editor" ) if( m_filename == "pl_editor" )
{
defaultGridIdx = 1; defaultGridIdx = 1;
m_params.emplace_back( new PARAM_LIST<wxString>( aJsonPath + ".grid.sizes",
&aWindow->grid.sizes, DefaultGridSizeList() ) );
}
else if( m_filename == "eeschema" || m_filename == "symbol_editor" )
{
defaultGridIdx = 1;
// Eeschema's grids are fixed to keep wires/pins connected
}
else else
{
defaultGridIdx = 4; defaultGridIdx = 4;
m_params.emplace_back( new PARAM_LIST<wxString>( aJsonPath + ".grid.sizes",
&aWindow->grid.sizes, DefaultGridSizeList() ) );
}
m_params.emplace_back( new PARAM<int>( aJsonPath + ".grid.last_size", m_params.emplace_back( new PARAM<int>( aJsonPath + ".grid.last_size",
&aWindow->grid.last_size_idx, defaultGridIdx ) ); &aWindow->grid.last_size_idx, defaultGridIdx ) );

View File

@ -188,32 +188,34 @@ void SCH_BASE_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
EDA_DRAW_FRAME::LoadSettings( aCfg ); EDA_DRAW_FRAME::LoadSettings( aCfg );
// Currently values read from config file are not used because the user cannot /*
// change this config * Do NOT add other values (particularly grid values in mm), because they can break the
// if( aCfg->m_Window.grid.sizes.empty() ) // Will be probably never enabled * schematic: Because wires and pins are considered as connected when the are to the same
{ * coordinate we cannot mix coordinates in mils (internal units) and mm (that cannot exactly
/* * converted in mils in many cases). In fact schematic must only use 50 and 25 mils to
* Do NOT add others values (mainly grid values in mm), because they can break the * place labels, wires and symbols others values are useful only for graphic items (mainly
* schematic: Because wires and pins are considered as connected when the are to the * in library editor) so use integer values in mils only.
* same coordinate we cannot mix coordinates in mils (internal units) and mm (that * The 100 mil grid is added to help conform to the KiCad Library Convention which states:
* cannot exactly converted in mils in many cases). In fact schematic must only use * "Using a 100mil grid, pin ends and origin must lie on grid nodes IEC-60617"
* 50 and 25 mils to place labels, wires and symbols others values are useful only */
* for graphic items (mainly in library editor) so use integer values in mils only. aCfg->m_Window.grid.sizes = { "100 mil",
* The 100 mil grid is added to help conform to the KiCad Library Convention which "50 mil",
* states: "Using a 100mil grid, pin ends and origin must lie on grid nodes IEC-60617" "25 mil",
*/ "10 mil",
aCfg->m_Window.grid.sizes = { "100 mil", "5 mil",
"50 mil", "2 mil",
"25 mil", "1 mil" };
"10 mil",
"5 mil",
"2 mil",
"1 mil" };
}
// Currently values read from config file are not used because the user cannot if( aCfg->m_Window.grid.last_size_idx > (int) aCfg->m_Window.grid.sizes.size() )
// change this config aCfg->m_Window.grid.last_size_idx = 1;
// if( aCfg->m_Window.zoom_factors.empty() )
if( aCfg->m_Window.grid.fast_grid_1 > (int) aCfg->m_Window.grid.sizes.size() )
aCfg->m_Window.grid.fast_grid_1 = 1;
if( aCfg->m_Window.grid.fast_grid_2 > (int) aCfg->m_Window.grid.sizes.size() )
aCfg->m_Window.grid.fast_grid_2 = 2;
if( aCfg->m_Window.zoom_factors.empty() )
{ {
aCfg->m_Window.zoom_factors = { ZOOM_LIST_EESCHEMA }; aCfg->m_Window.zoom_factors = { ZOOM_LIST_EESCHEMA };
} }