Libedit: transfer current screen settings on part load
When loading a part in libedit, also transfer certain screen settings to the incoming SCH_SCREEN, from the current SCH_SCREEN. Currently, the grid settings are transferred, but this could also do other settings if needed. Also remove some duplicate commentary and mention why the grid is set in a SCH_SCREEN even though the BASE_SCREEN ctor sets the same default. Fixes: lp:1815108 * https://bugs.launchpad.net/kicad/+bug/1815108
This commit is contained in:
parent
076499f3ad
commit
d06f0de1eb
|
@ -174,11 +174,7 @@ bool BASE_SCREEN::SetPreviousZoom()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Build the list of human readable grid list.
|
|
||||||
* The list shows the grid size both in mils or mm.
|
|
||||||
* aMmFirst = true to have mm first and mils after
|
|
||||||
* false to have mils first and mm after
|
|
||||||
*/
|
|
||||||
int BASE_SCREEN::BuildGridsChoiceList( wxArrayString& aGridsList, bool aMmFirst) const
|
int BASE_SCREEN::BuildGridsChoiceList( wxArrayString& aGridsList, bool aMmFirst) const
|
||||||
{
|
{
|
||||||
wxString msg;
|
wxString msg;
|
||||||
|
|
|
@ -151,6 +151,22 @@ bool LIB_EDIT_FRAME::LoadComponentFromCurrentLib( const wxString& aAliasName, in
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Synchronise screen settings from a current screen into another screen.
|
||||||
|
*
|
||||||
|
* This can be used, for example, when loading a new screen into a frame,
|
||||||
|
* but you want the new screen to inherit some settings (e.g. grids) from the
|
||||||
|
* frame's current screen.
|
||||||
|
*
|
||||||
|
* @param aCurrentScreen the existing frame screen
|
||||||
|
* @param aIncomingScreen a screen that is intended to replace the current screen
|
||||||
|
*/
|
||||||
|
static void synchronizeLibEditScreenSettings(
|
||||||
|
const SCH_SCREEN& aCurrentScreen, SCH_SCREEN& aIncomingScreen )
|
||||||
|
{
|
||||||
|
aIncomingScreen.SetGrid( aCurrentScreen.GetGridSize() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool LIB_EDIT_FRAME::LoadOneLibraryPartAux( LIB_ALIAS* aEntry, const wxString& aLibrary,
|
bool LIB_EDIT_FRAME::LoadOneLibraryPartAux( LIB_ALIAS* aEntry, const wxString& aLibrary,
|
||||||
int aUnit, int aConvert )
|
int aUnit, int aConvert )
|
||||||
|
@ -172,8 +188,18 @@ bool LIB_EDIT_FRAME::LoadOneLibraryPartAux( LIB_ALIAS* aEntry, const wxString& a
|
||||||
m_unit = aUnit > 0 ? aUnit : 1;
|
m_unit = aUnit > 0 ? aUnit : 1;
|
||||||
m_convert = aConvert > 0 ? aConvert : 1;
|
m_convert = aConvert > 0 ? aConvert : 1;
|
||||||
|
|
||||||
auto s = m_libMgr->GetScreen( lib_part->GetName(), aLibrary );
|
// The buffered screen for the part
|
||||||
SetScreen( s );
|
SCH_SCREEN* part_screen = m_libMgr->GetScreen( lib_part->GetName(), aLibrary );
|
||||||
|
|
||||||
|
const SCH_SCREEN* curr_screen = GetScreen();
|
||||||
|
|
||||||
|
// Before we set the frame screen, transfer any settings from the current
|
||||||
|
// screen that we want to keep to the incoming (buffered) part's screen
|
||||||
|
// which could be out of date relative to the current screen.
|
||||||
|
if( curr_screen )
|
||||||
|
synchronizeLibEditScreenSettings( *curr_screen, *part_screen );
|
||||||
|
|
||||||
|
SetScreen( part_screen );
|
||||||
SetCurPart( new LIB_PART( *lib_part ) );
|
SetCurPart( new LIB_PART( *lib_part ) );
|
||||||
SetCurLib( aLibrary );
|
SetCurLib( aLibrary );
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,9 @@ SCH_SCREEN::SCH_SCREEN( KIWAY* aKiway ) :
|
||||||
for( unsigned i = 0; i < arrayDim( SchematicGridList ); i++ )
|
for( unsigned i = 0; i < arrayDim( SchematicGridList ); i++ )
|
||||||
AddGrid( SchematicGridList[i] );
|
AddGrid( SchematicGridList[i] );
|
||||||
|
|
||||||
SetGrid( wxRealPoint( 50, 50 ) ); // Default grid size.
|
// Set the default grid size, now that the grid list is populated
|
||||||
|
SetGrid( wxRealPoint( 50, 50 ) );
|
||||||
|
|
||||||
m_refCount = 0;
|
m_refCount = 0;
|
||||||
|
|
||||||
// Suitable for schematic only. For libedit and viewlib, must be set to true
|
// Suitable for schematic only. For libedit and viewlib, must be set to true
|
||||||
|
|
Loading…
Reference in New Issue