Save 3D prefs after editing, and load some of them into FP Props.
Fixes https://gitlab.com/kicad/code/kicad/issues/8712
This commit is contained in:
parent
0116e9c94e
commit
c11ee69499
|
@ -37,8 +37,9 @@
|
|||
#include <gal/dpi_scaling.h>
|
||||
#include <pgm_base.h>
|
||||
#include <settings/common_settings.h>
|
||||
#include <settings/settings_manager.h>
|
||||
#include <widgets/infobar.h>
|
||||
|
||||
#include <eda_3d_viewer_settings.h>
|
||||
|
||||
PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL( wxWindow* aParent, PCB_BASE_FRAME* aFrame,
|
||||
FOOTPRINT* aFootprint,
|
||||
|
@ -95,7 +96,7 @@ PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL( wxWindow* aParent, PCB_BASE_FRAM
|
|||
m_dummyBoard, m_boardAdapter, m_currentCamera,
|
||||
aFrame->Prj().Get3DCacheManager() );
|
||||
|
||||
loadCommonSettings();
|
||||
loadSettings();
|
||||
|
||||
m_boardAdapter.SetFlag( FL_USE_SELECTION, false );
|
||||
m_boardAdapter.SetFlag( FL_HIGHLIGHT_ROLLOVER_ITEM, false );
|
||||
|
@ -161,7 +162,7 @@ void PANEL_PREVIEW_3D_MODEL::OnMenuEvent( wxMenuEvent& aEvent )
|
|||
}
|
||||
|
||||
|
||||
void PANEL_PREVIEW_3D_MODEL::loadCommonSettings()
|
||||
void PANEL_PREVIEW_3D_MODEL::loadSettings()
|
||||
{
|
||||
wxCHECK_RET( m_previewPane, "Cannot load settings to null canvas" );
|
||||
|
||||
|
@ -172,6 +173,43 @@ void PANEL_PREVIEW_3D_MODEL::loadCommonSettings()
|
|||
|
||||
// TODO(JE) use all control options
|
||||
m_boardAdapter.SetFlag( FL_MOUSEWHEEL_PANNING, settings->m_Input.scroll_modifier_zoom != 0 );
|
||||
|
||||
COLOR_SETTINGS* colors = Pgm().GetSettingsManager().GetColorSettings();
|
||||
|
||||
if( colors )
|
||||
{
|
||||
auto set =
|
||||
[] ( const COLOR4D& aColor, SFVEC4F& aTarget )
|
||||
{
|
||||
aTarget.r = aColor.r;
|
||||
aTarget.g = aColor.g;
|
||||
aTarget.b = aColor.b;
|
||||
aTarget.a = aColor.a;
|
||||
};
|
||||
|
||||
set( colors->GetColor( LAYER_3D_BACKGROUND_BOTTOM ), m_boardAdapter.m_BgColorBot );
|
||||
set( colors->GetColor( LAYER_3D_BACKGROUND_TOP ), m_boardAdapter.m_BgColorTop );
|
||||
set( colors->GetColor( LAYER_3D_BOARD ), m_boardAdapter.m_BoardBodyColor );
|
||||
set( colors->GetColor( LAYER_3D_COPPER ), m_boardAdapter.m_CopperColor );
|
||||
set( colors->GetColor( LAYER_3D_SILKSCREEN_BOTTOM ), m_boardAdapter.m_SilkScreenColorBot );
|
||||
set( colors->GetColor( LAYER_3D_SILKSCREEN_TOP ), m_boardAdapter.m_SilkScreenColorTop );
|
||||
set( colors->GetColor( LAYER_3D_SOLDERMASK ), m_boardAdapter.m_SolderMaskColorBot );
|
||||
set( colors->GetColor( LAYER_3D_SOLDERMASK ), m_boardAdapter.m_SolderMaskColorTop );
|
||||
set( colors->GetColor( LAYER_3D_SOLDERPASTE ), m_boardAdapter.m_SolderPasteColor );
|
||||
}
|
||||
|
||||
EDA_3D_VIEWER_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>();
|
||||
|
||||
if( cfg )
|
||||
{
|
||||
m_boardAdapter.SetRenderEngine( RENDER_ENGINE::OPENGL_LEGACY );
|
||||
m_boardAdapter.SetFlag( FL_USE_REALISTIC_MODE, cfg->m_Render.realistic );
|
||||
m_boardAdapter.SetMaterialMode( static_cast<MATERIAL_MODE>( cfg->m_Render.material_mode ) );
|
||||
|
||||
m_previewPane->SetAnimationEnabled( cfg->m_Camera.animation_enabled );
|
||||
m_previewPane->SetMovingSpeedMultiplier( cfg->m_Camera.moving_speed_multiplier );
|
||||
m_previewPane->SetProjectionMode( cfg->m_Camera.projection_mode );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -106,7 +106,7 @@ private:
|
|||
/**
|
||||
* Load 3D relevant settings from the user configuration
|
||||
*/
|
||||
void loadCommonSettings();
|
||||
void loadSettings();
|
||||
|
||||
/**
|
||||
* It will receive the events from editing the fields.
|
||||
|
|
|
@ -25,13 +25,18 @@
|
|||
#include <widgets/color_swatch.h>
|
||||
#include <3d_canvas/board_adapter.h>
|
||||
#include <3d_viewer/eda_3d_viewer.h>
|
||||
#include <eda_3d_viewer_settings.h>
|
||||
#include <settings/settings_manager.h>
|
||||
#include <board_stackup_manager/stackup_predefined_prms.h>
|
||||
#include <board_stackup_manager/board_stackup.h>
|
||||
#include <board_design_settings.h>
|
||||
#include <pgm_base.h>
|
||||
|
||||
|
||||
PANEL_3D_COLORS::PANEL_3D_COLORS( EDA_3D_VIEWER_FRAME* aFrame, wxWindow* aParent ) :
|
||||
PANEL_3D_COLORS_BASE( aParent ),
|
||||
m_settings( aFrame->GetAdapter() )
|
||||
m_frame( aFrame ),
|
||||
m_boardAdapter( aFrame->GetAdapter() )
|
||||
{
|
||||
#define ADD_COLOR( list, r, g, b, a, name ) \
|
||||
list.push_back( CUSTOM_COLOR_ITEM( r/255.0, g/255.0, b/255.0, a, name ) )
|
||||
|
@ -109,15 +114,15 @@ bool PANEL_3D_COLORS::TransferDataToWindow()
|
|||
return COLOR4D( src.r, src.g, src.b, src.a );
|
||||
};
|
||||
|
||||
m_backgroundTop->SetSwatchColor( to_COLOR4D( m_settings.m_BgColorTop ), false );
|
||||
m_backgroundBottom->SetSwatchColor( to_COLOR4D( m_settings.m_BgColorBot ), false );
|
||||
m_silkscreenTop->SetSwatchColor( to_COLOR4D( m_settings.m_SilkScreenColorTop ), false );
|
||||
m_silkscreenBottom->SetSwatchColor( to_COLOR4D( m_settings.m_SilkScreenColorBot ), false );
|
||||
m_solderMaskTop->SetSwatchColor( to_COLOR4D( m_settings.m_SolderMaskColorTop ), false );
|
||||
m_solderMaskBottom->SetSwatchColor( to_COLOR4D( m_settings.m_SolderMaskColorBot ), false );
|
||||
m_solderPaste->SetSwatchColor( to_COLOR4D( m_settings.m_SolderPasteColor ), false );
|
||||
m_surfaceFinish->SetSwatchColor( to_COLOR4D( m_settings.m_CopperColor ), false );
|
||||
m_boardBody->SetSwatchColor( to_COLOR4D( m_settings.m_BoardBodyColor ), false );
|
||||
m_backgroundTop->SetSwatchColor( to_COLOR4D( m_boardAdapter.m_BgColorTop ), false );
|
||||
m_backgroundBottom->SetSwatchColor( to_COLOR4D( m_boardAdapter.m_BgColorBot ), false );
|
||||
m_silkscreenTop->SetSwatchColor( to_COLOR4D( m_boardAdapter.m_SilkScreenColorTop ), false );
|
||||
m_silkscreenBottom->SetSwatchColor( to_COLOR4D( m_boardAdapter.m_SilkScreenColorBot ), false );
|
||||
m_solderMaskTop->SetSwatchColor( to_COLOR4D( m_boardAdapter.m_SolderMaskColorTop ), false );
|
||||
m_solderMaskBottom->SetSwatchColor( to_COLOR4D( m_boardAdapter.m_SolderMaskColorBot ), false );
|
||||
m_solderPaste->SetSwatchColor( to_COLOR4D( m_boardAdapter.m_SolderPasteColor ), false );
|
||||
m_surfaceFinish->SetSwatchColor( to_COLOR4D( m_boardAdapter.m_CopperColor ), false );
|
||||
m_boardBody->SetSwatchColor( to_COLOR4D( m_boardAdapter.m_BoardBodyColor ), false );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -130,15 +135,20 @@ bool PANEL_3D_COLORS::TransferDataFromWindow()
|
|||
return SFVEC4F( src.r, src.g, src.b, src.a );
|
||||
};
|
||||
|
||||
m_settings.m_BgColorTop = to_SFVEC4F( m_backgroundTop->GetSwatchColor() );
|
||||
m_settings.m_BgColorBot = to_SFVEC4F( m_backgroundBottom->GetSwatchColor() );
|
||||
m_settings.m_SilkScreenColorTop = to_SFVEC4F( m_silkscreenTop->GetSwatchColor() );
|
||||
m_settings.m_SilkScreenColorBot = to_SFVEC4F( m_silkscreenBottom->GetSwatchColor() );
|
||||
m_settings.m_SolderMaskColorTop = to_SFVEC4F( m_solderMaskTop->GetSwatchColor() );
|
||||
m_settings.m_SolderMaskColorBot = to_SFVEC4F( m_solderMaskBottom->GetSwatchColor() );
|
||||
m_settings.m_SolderPasteColor = to_SFVEC4F( m_solderPaste->GetSwatchColor() );
|
||||
m_settings.m_CopperColor = to_SFVEC4F( m_surfaceFinish->GetSwatchColor() );
|
||||
m_settings.m_BoardBodyColor = to_SFVEC4F( m_boardBody->GetSwatchColor() );
|
||||
m_boardAdapter.m_BgColorTop = to_SFVEC4F( m_backgroundTop->GetSwatchColor() );
|
||||
m_boardAdapter.m_BgColorBot = to_SFVEC4F( m_backgroundBottom->GetSwatchColor() );
|
||||
m_boardAdapter.m_SilkScreenColorTop = to_SFVEC4F( m_silkscreenTop->GetSwatchColor() );
|
||||
m_boardAdapter.m_SilkScreenColorBot = to_SFVEC4F( m_silkscreenBottom->GetSwatchColor() );
|
||||
m_boardAdapter.m_SolderMaskColorTop = to_SFVEC4F( m_solderMaskTop->GetSwatchColor() );
|
||||
m_boardAdapter.m_SolderMaskColorBot = to_SFVEC4F( m_solderMaskBottom->GetSwatchColor() );
|
||||
m_boardAdapter.m_SolderPasteColor = to_SFVEC4F( m_solderPaste->GetSwatchColor() );
|
||||
m_boardAdapter.m_CopperColor = to_SFVEC4F( m_surfaceFinish->GetSwatchColor() );
|
||||
m_boardAdapter.m_BoardBodyColor = to_SFVEC4F( m_boardBody->GetSwatchColor() );
|
||||
|
||||
auto cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>();
|
||||
|
||||
if( cfg )
|
||||
m_frame->SaveSettings( cfg );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -146,7 +156,7 @@ bool PANEL_3D_COLORS::TransferDataFromWindow()
|
|||
|
||||
void PANEL_3D_COLORS::OnLoadColorsFromBoardStackup( wxCommandEvent& event )
|
||||
{
|
||||
const BOARD* brd = m_settings.GetBoard();
|
||||
const BOARD* brd = m_boardAdapter.GetBoard();
|
||||
const FAB_LAYER_COLOR* stdColors = GetColorStandardList();
|
||||
wxColour color;
|
||||
|
||||
|
@ -179,26 +189,26 @@ void PANEL_3D_COLORS::OnLoadColorsFromBoardStackup( wxCommandEvent& event )
|
|||
switch( stckpItem->GetBrdLayerId() )
|
||||
{
|
||||
case F_SilkS:
|
||||
m_settings.m_SilkScreenColorTop.r = color.Red() / 255.0;
|
||||
m_settings.m_SilkScreenColorTop.g = color.Green() / 255.0;
|
||||
m_settings.m_SilkScreenColorTop.b = color.Blue() / 255.0;
|
||||
m_boardAdapter.m_SilkScreenColorTop.r = color.Red() / 255.0;
|
||||
m_boardAdapter.m_SilkScreenColorTop.g = color.Green() / 255.0;
|
||||
m_boardAdapter.m_SilkScreenColorTop.b = color.Blue() / 255.0;
|
||||
break;
|
||||
case B_SilkS:
|
||||
m_settings.m_SilkScreenColorBot.r = color.Red() / 255.0;
|
||||
m_settings.m_SilkScreenColorBot.g = color.Green() / 255.0;
|
||||
m_settings.m_SilkScreenColorBot.b = color.Blue() / 255.0;
|
||||
m_boardAdapter.m_SilkScreenColorBot.r = color.Red() / 255.0;
|
||||
m_boardAdapter.m_SilkScreenColorBot.g = color.Green() / 255.0;
|
||||
m_boardAdapter.m_SilkScreenColorBot.b = color.Blue() / 255.0;
|
||||
break;
|
||||
case F_Mask:
|
||||
m_settings.m_SolderMaskColorTop.r = color.Red() / 255.0;
|
||||
m_settings.m_SolderMaskColorTop.g = color.Green() / 255.0;
|
||||
m_settings.m_SolderMaskColorTop.b = color.Blue() / 255.0;
|
||||
m_boardAdapter.m_SolderMaskColorTop.r = color.Red() / 255.0;
|
||||
m_boardAdapter.m_SolderMaskColorTop.g = color.Green() / 255.0;
|
||||
m_boardAdapter.m_SolderMaskColorTop.b = color.Blue() / 255.0;
|
||||
// Keep the previous alpha value
|
||||
//m_boardAdapter.m_SolderMaskColorTop.a = color.Alpha() / 255.0;
|
||||
break;
|
||||
case B_Mask:
|
||||
m_settings.m_SolderMaskColorBot.r = color.Red() / 255.0;
|
||||
m_settings.m_SolderMaskColorBot.g = color.Green() / 255.0;
|
||||
m_settings.m_SolderMaskColorBot.b = color.Blue() / 255.0;
|
||||
m_boardAdapter.m_SolderMaskColorBot.r = color.Red() / 255.0;
|
||||
m_boardAdapter.m_SolderMaskColorBot.g = color.Green() / 255.0;
|
||||
m_boardAdapter.m_SolderMaskColorBot.b = color.Blue() / 255.0;
|
||||
// Keep the previous alpha value
|
||||
//m_boardAdapter.m_SolderMaskColorBot.a = color.Alpha() / 255.0;
|
||||
break;
|
||||
|
|
|
@ -41,13 +41,14 @@ public:
|
|||
void OnLoadColorsFromBoardStackup( wxCommandEvent& event ) override;
|
||||
|
||||
private:
|
||||
BOARD_ADAPTER& m_settings;
|
||||
EDA_3D_VIEWER_FRAME* m_frame;
|
||||
BOARD_ADAPTER& m_boardAdapter;
|
||||
|
||||
CUSTOM_COLORS_LIST m_silkscreenColors;
|
||||
CUSTOM_COLORS_LIST m_maskColors;
|
||||
CUSTOM_COLORS_LIST m_pasteColors;
|
||||
CUSTOM_COLORS_LIST m_finishColors;
|
||||
CUSTOM_COLORS_LIST m_boardColors;
|
||||
CUSTOM_COLORS_LIST m_silkscreenColors;
|
||||
CUSTOM_COLORS_LIST m_maskColors;
|
||||
CUSTOM_COLORS_LIST m_pasteColors;
|
||||
CUSTOM_COLORS_LIST m_finishColors;
|
||||
CUSTOM_COLORS_LIST m_boardColors;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -106,6 +106,9 @@ public:
|
|||
|
||||
EDA_3D_CANVAS* GetCanvas() { return m_canvas; }
|
||||
|
||||
void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
|
||||
void LoadSettings( APP_SETTINGS_BASE* aCfg ) override;
|
||||
|
||||
/**
|
||||
* Notification that common settings are updated.
|
||||
*
|
||||
|
@ -137,10 +140,6 @@ private:
|
|||
void CreateMenuBar();
|
||||
void ReCreateMainToolbar();
|
||||
|
||||
void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
|
||||
|
||||
void LoadSettings( APP_SETTINGS_BASE* aCfg ) override;
|
||||
|
||||
/**
|
||||
* Create a Screenshot of the current 3D view.
|
||||
* Output file format is png or jpeg, or image is copied to the clipboard
|
||||
|
|
|
@ -262,7 +262,7 @@ bool PGM_BASE::InitPgm( bool aHeadless )
|
|||
// Load common settings from disk after setting up env vars
|
||||
GetSettingsManager().Load( GetCommonSettings() );
|
||||
|
||||
// Init user language *before* calling loadCommonSettings, because
|
||||
// Init user language *before* calling loadSettings, because
|
||||
// env vars could be incorrectly initialized on Linux
|
||||
// (if the value contains some non ASCII7 chars, the env var is not initialized)
|
||||
SetLanguage( tmp, true );
|
||||
|
@ -343,7 +343,7 @@ void PGM_BASE::loadCommonSettings()
|
|||
|
||||
for( const std::pair<wxString, ENV_VAR_ITEM> it : GetCommonSettings()->m_Env.vars )
|
||||
{
|
||||
wxLogTrace( traceEnvVars, "PGM_BASE::loadCommonSettings: Found entry %s = %s",
|
||||
wxLogTrace( traceEnvVars, "PGM_BASE::loadSettings: Found entry %s = %s",
|
||||
it.first, it.second.GetValue() );
|
||||
|
||||
// Do not store the env var PROJECT_VAR_NAME ("KIPRJMOD") definition if for some reason
|
||||
|
|
|
@ -428,7 +428,7 @@ void WX_VIEW_CONTROLS::onButton( wxMouseEvent& aEvent )
|
|||
{
|
||||
m_state = IDLE;
|
||||
#if defined USE_MOUSE_CAPTURE
|
||||
if( !m_settings.m_cursorCaptured && m_parentPanel->HasCapture() )
|
||||
if( !m_boardAdapter.m_cursorCaptured && m_parentPanel->HasCapture() )
|
||||
m_parentPanel->ReleaseMouse();
|
||||
#endif
|
||||
}
|
||||
|
@ -629,7 +629,7 @@ void WX_VIEW_CONTROLS::CancelDrag()
|
|||
{
|
||||
m_state = IDLE;
|
||||
#if defined USE_MOUSE_CAPTURE
|
||||
if( !m_settings.m_cursorCaptured && m_parentPanel->HasCapture() )
|
||||
if( !m_boardAdapter.m_cursorCaptured && m_parentPanel->HasCapture() )
|
||||
m_parentPanel->ReleaseMouse();
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -280,7 +280,7 @@
|
|||
<property name="id">ID_MENU_SET_SIMUL</property>
|
||||
<property name="kind">wxITEM_NORMAL</property>
|
||||
<property name="label">Settings...</property>
|
||||
<property name="name">m_settings</property>
|
||||
<property name="name">m_boardAdapter</property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="shortcut"></property>
|
||||
<property name="unchecked_bitmap"></property>
|
||||
|
|
|
@ -261,7 +261,7 @@ SYMBOL_EDIT_FRAME::~SYMBOL_EDIT_FRAME()
|
|||
|
||||
void SYMBOL_EDIT_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
|
||||
{
|
||||
wxCHECK_RET( m_settings, "Call to SYMBOL_EDIT_FRAME::LoadSettings with null m_settings" );
|
||||
wxCHECK_RET( m_settings, "Call to SYMBOL_EDIT_FRAME::LoadSettings with null m_boardAdapter" );
|
||||
|
||||
SCH_BASE_FRAME::LoadSettings( GetSettings() );
|
||||
|
||||
|
@ -276,7 +276,7 @@ void SYMBOL_EDIT_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
|
|||
|
||||
void SYMBOL_EDIT_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
|
||||
{
|
||||
wxCHECK_RET( m_settings, "Call to SYMBOL_EDIT_FRAME::LoadSettings with null m_settings" );
|
||||
wxCHECK_RET( m_settings, "Call to SYMBOL_EDIT_FRAME::LoadSettings with null m_boardAdapter" );
|
||||
|
||||
GetGalDisplayOptions().m_axesEnabled = true;
|
||||
|
||||
|
|
Loading…
Reference in New Issue