Fixed GUI issues related to setting scale/offset/rotation

This commit is contained in:
Cirilo Bernardo 2016-01-23 20:07:58 +11:00
parent 3cb1924750
commit 31af6d7dbc
5 changed files with 56 additions and 15 deletions

View File

@ -34,6 +34,22 @@
bool S3D::Select3DModel( wxWindow* aParent, S3D_CACHE* aCache,
wxString& prevModelSelectDir, int& prevModelWildcard, S3D_INFO* aModel )
{
if( NULL == aModel )
return false;
// set the default values to ensure reasonable settings
// even if the user cancels the operation
aModel->scale.x = 1.0;
aModel->scale.y = 1.0;
aModel->scale.z = 1.0;
aModel->rotation.x = 0.0;
aModel->rotation.y = 0.0;
aModel->rotation.z = 0.0;
aModel->offset = aModel->rotation;
aModel->filename.empty();
DLG_SEL_3DMODEL* dm = new DLG_SEL_3DMODEL( aParent, aCache,
prevModelSelectDir, prevModelWildcard );

View File

@ -35,6 +35,13 @@ static wxWindow* mkPreviewPanel( wxWindow* aParent )
pp->SetModelManager( mm );
pp->SetFileSelectorDlg( fm );
// ensure reasonable defaults when the dialog starts
S3D_INFO mdat;
mdat.scale.x = 1.0;
mdat.scale.y = 1.0;
mdat.scale.z = 1.0;
pp->SetModelData( &mdat );
return (wxWindow*)pp;
}

View File

@ -503,17 +503,17 @@ void PANEL_PREV_3D::GetModelData( S3D_INFO* aModel )
void PANEL_PREV_3D::SetModelData( S3D_INFO const* aModel )
{
xscale->ChangeValue( wxString::FromDouble( aModel->scale.x ) );
yscale->ChangeValue( wxString::FromDouble( aModel->scale.y ) );
zscale->ChangeValue( wxString::FromDouble( aModel->scale.z ) );
xscale->SetValue( wxString::FromDouble( aModel->scale.x ) );
yscale->SetValue( wxString::FromDouble( aModel->scale.y ) );
zscale->SetValue( wxString::FromDouble( aModel->scale.z ) );
xrot->ChangeValue( wxString::FromDouble( aModel->rotation.x ) );
yrot->ChangeValue( wxString::FromDouble( aModel->rotation.y ) );
zrot->ChangeValue( wxString::FromDouble( aModel->rotation.z ) );
xrot->SetValue( wxString::FromDouble( aModel->rotation.x ) );
yrot->SetValue( wxString::FromDouble( aModel->rotation.y ) );
zrot->SetValue( wxString::FromDouble( aModel->rotation.z ) );
xoff->ChangeValue( wxString::FromDouble( aModel->offset.x ) );
yoff->ChangeValue( wxString::FromDouble( aModel->offset.y ) );
zoff->ChangeValue( wxString::FromDouble( aModel->offset.z ) );
xoff->SetValue( wxString::FromDouble( aModel->offset.x ) );
yoff->SetValue( wxString::FromDouble( aModel->offset.y ) );
zoff->SetValue( wxString::FromDouble( aModel->offset.z ) );
modelInfo = *aModel;
UpdateModelName( aModel->filename );

View File

@ -391,6 +391,18 @@ void DIALOG_MODULE_BOARD_EDITOR::Transfert3DValuesToDisplay(
params.rotation.y = aStruct3DSource->m_MatRotation.y;
params.rotation.z = aStruct3DSource->m_MatRotation.z;
}
else
{
params.scale.x = 1.0;
params.scale.y = 1.0;
params.scale.z = 1.0;
params.offset.x = 0.0;
params.offset.y = 0.0;
params.offset.z = 0.0;
params.rotation = params.offset;
}
m_PreviewPane->SetModelData( &params );
return;
@ -542,9 +554,6 @@ void DIALOG_MODULE_BOARD_EDITOR::BrowseAndAdd3DShapeFile()
{
PROJECT& prj = Prj();
S3D_INFO model;
model.scale.x = 1.0;
model.scale.y = 1.0;
model.scale.z = 1.0;
wxString initialpath = prj.GetRString( PROJECT::VIEWER_3D_PATH );
wxString sidx = prj.GetRString( PROJECT::VIEWER_3D_FILTER_INDEX );

View File

@ -261,6 +261,18 @@ void DIALOG_MODULE_MODULE_EDITOR::Transfert3DValuesToDisplay( S3D_MASTER * aStru
params.rotation.y = aStruct3DSource->m_MatRotation.y;
params.rotation.z = aStruct3DSource->m_MatRotation.z;
}
else
{
params.scale.x = 1.0;
params.scale.y = 1.0;
params.scale.z = 1.0;
params.offset.x = 0.0;
params.offset.y = 0.0;
params.offset.z = 0.0;
params.rotation = params.offset;
}
m_PreviewPane->SetModelData( &params );
return;
@ -409,9 +421,6 @@ void DIALOG_MODULE_MODULE_EDITOR::BrowseAndAdd3DShapeFile()
{
PROJECT& prj = Prj();
S3D_INFO model;
model.scale.x = 1.0;
model.scale.y = 1.0;
model.scale.z = 1.0;
wxString initialpath = prj.GetRString( PROJECT::VIEWER_3D_PATH );
wxString sidx = prj.GetRString( PROJECT::VIEWER_3D_FILTER_INDEX );