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.)
This commit is contained in:
Jeff Young 2021-08-31 23:59:14 +01:00
parent 2cdd3c9ebf
commit 04fa678265
4 changed files with 27 additions and 4 deletions

View File

@ -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.

View File

@ -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();

View File

@ -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;

View File

@ -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<bool>( "editing.allow_free_pads",
&m_AllowFreePads, false ) );
m_params.emplace_back( new PARAM<int>( "editing.rotation_angle",
&m_RotationAngle, 900, 1, 900 ) );
m_params.emplace_back( new PARAM<bool>( "pcb_display.graphic_items_fill",
&m_Display.m_DisplayGraphicsFill, true ) );
@ -151,6 +154,9 @@ PCBNEW_SETTINGS::PCBNEW_SETTINGS()
m_params.emplace_back( new PARAM<bool>( "pcb_display.pad_clearance",
&m_Display.m_DisplayPadClearance, true ) );
m_params.emplace_back( new PARAM<bool>( "pcb_display.pad_no_connects",
&m_Display.m_DisplayPadNoConnects, true ) );
m_params.emplace_back( new PARAM<bool>( "pcb_display.pad_fill",
&m_Display.m_DisplayPadFill, true ) );
@ -166,9 +172,6 @@ PCBNEW_SETTINGS::PCBNEW_SETTINGS()
m_params.emplace_back( new PARAM<bool>( "pcb_display.ratsnest_curved",
&m_Display.m_DisplayRatsnestLinesCurved, false ) );
m_params.emplace_back( new PARAM<int>( "pcb_display.rotation_angle",
&m_RotationAngle, 900, 1, 900 ) );
m_params.emplace_back( new PARAM<int>( "pcb_display.track_clearance_mode",
reinterpret_cast<int*>( &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<wxString>( "system.last_footprint3d_dir",
&m_lastFootprint3dDir, "" ) );
registerMigration( 0, 1,
[&]()
{
if( OPT<int> optval = Get<int>( "pcb_display.rotation_angle" ) )
Set( "editing.rotation_angle", optval.get() );
try
{
At( "pcb_display" ).erase( "rotation_angle" );
}
catch( ... )
{}
return true;
} );
}