From 04fa678265c976c734ea0a2898df9d3594e991d1 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Tue, 31 Aug 2021 23:59:14 +0100 Subject: [PATCH] Impleent persistence for no-connect pad setting. Also moves rotation increment from a display property to and edit property. (Both issues were discovered while working on a 7.0 feature.) --- include/pcb_display_options.h | 1 + pcbnew/dialogs/panel_display_options.cpp | 1 + pcbnew/pcb_display_options.cpp | 1 + pcbnew/pcbnew_settings.cpp | 28 ++++++++++++++++++++---- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/include/pcb_display_options.h b/include/pcb_display_options.h index 0e7347efa4..085f4f9651 100644 --- a/include/pcb_display_options.h +++ b/include/pcb_display_options.h @@ -57,6 +57,7 @@ public: bool m_DisplayViaFill; bool m_DisplayPadNum; // show pads numbers bool m_DisplayPadClearance; + bool m_DisplayPadNoConnects; bool m_DisplayGraphicsFill; // How to display fp drawings ( sketch/ filled ) bool m_DisplayTextFill; // How to display fp texts ( sketch/ filled ) bool m_DisplayPcbTrackFill; // false : tracks are show in sketch mode, true = filled. diff --git a/pcbnew/dialogs/panel_display_options.cpp b/pcbnew/dialogs/panel_display_options.cpp index 1eb5e91da9..2bf61f66e0 100644 --- a/pcbnew/dialogs/panel_display_options.cpp +++ b/pcbnew/dialogs/panel_display_options.cpp @@ -107,6 +107,7 @@ bool PANEL_DISPLAY_OPTIONS::TransferDataFromWindow() displ_opts.m_DisplayPadNum = m_OptDisplayPadNumber->GetValue(); pcbEdit->SetElementVisibility( LAYER_NO_CONNECTS, m_OptDisplayPadNoConn->GetValue() ); + displ_opts.m_DisplayPadNoConnects = m_OptDisplayPadNoConn->GetValue(); displ_opts.m_DisplayNetNamesMode = m_ShowNetNamesOption->GetSelection(); displ_opts.m_Live3DRefresh = m_live3Drefresh->GetValue(); diff --git a/pcbnew/pcb_display_options.cpp b/pcbnew/pcb_display_options.cpp index dbc2788e9d..3ed14d4f73 100644 --- a/pcbnew/pcb_display_options.cpp +++ b/pcbnew/pcb_display_options.cpp @@ -38,6 +38,7 @@ PCB_DISPLAY_OPTIONS::PCB_DISPLAY_OPTIONS() m_DisplayViaFill = FILLED; m_DisplayPadNum = true; m_DisplayPadClearance = true; + m_DisplayPadNoConnects = true; m_DisplayGraphicsFill = FILLED; m_DisplayTextFill = FILLED; diff --git a/pcbnew/pcbnew_settings.cpp b/pcbnew/pcbnew_settings.cpp index 9fe83d13c9..a23667d742 100644 --- a/pcbnew/pcbnew_settings.cpp +++ b/pcbnew/pcbnew_settings.cpp @@ -43,7 +43,7 @@ ///! Update the schema version whenever a migration is required -const int pcbnewSchemaVersion = 0; +const int pcbnewSchemaVersion = 1; PCBNEW_SETTINGS::PCBNEW_SETTINGS() @@ -133,6 +133,9 @@ PCBNEW_SETTINGS::PCBNEW_SETTINGS() m_params.emplace_back( new PARAM( "editing.allow_free_pads", &m_AllowFreePads, false ) ); + m_params.emplace_back( new PARAM( "editing.rotation_angle", + &m_RotationAngle, 900, 1, 900 ) ); + m_params.emplace_back( new PARAM( "pcb_display.graphic_items_fill", &m_Display.m_DisplayGraphicsFill, true ) ); @@ -151,6 +154,9 @@ PCBNEW_SETTINGS::PCBNEW_SETTINGS() m_params.emplace_back( new PARAM( "pcb_display.pad_clearance", &m_Display.m_DisplayPadClearance, true ) ); + m_params.emplace_back( new PARAM( "pcb_display.pad_no_connects", + &m_Display.m_DisplayPadNoConnects, true ) ); + m_params.emplace_back( new PARAM( "pcb_display.pad_fill", &m_Display.m_DisplayPadFill, true ) ); @@ -166,9 +172,6 @@ PCBNEW_SETTINGS::PCBNEW_SETTINGS() m_params.emplace_back( new PARAM( "pcb_display.ratsnest_curved", &m_Display.m_DisplayRatsnestLinesCurved, false ) ); - m_params.emplace_back( new PARAM( "pcb_display.rotation_angle", - &m_RotationAngle, 900, 1, 900 ) ); - m_params.emplace_back( new PARAM( "pcb_display.track_clearance_mode", reinterpret_cast( &m_Display.m_ShowTrackClearanceMode ), PCB_DISPLAY_OPTIONS::SHOW_TRACK_CLEARANCE_WITH_VIA_WHILE_ROUTING ) ); @@ -515,6 +518,23 @@ PCBNEW_SETTINGS::PCBNEW_SETTINGS() m_params.emplace_back( new PARAM( "system.last_footprint3d_dir", &m_lastFootprint3dDir, "" ) ); + + registerMigration( 0, 1, + [&]() + { + if( OPT optval = Get( "pcb_display.rotation_angle" ) ) + Set( "editing.rotation_angle", optval.get() ); + + try + { + At( "pcb_display" ).erase( "rotation_angle" ); + } + catch( ... ) + {} + + return true; + } ); + }