Sim Model Editor: Fix Model panel sizing

This commit is contained in:
Mikolaj Wielgus 2022-10-04 23:47:52 +02:00
parent e99d531c88
commit 2f756d9d23
2 changed files with 35 additions and 35 deletions

View File

@ -127,14 +127,11 @@ bool DIALOG_SIM_MODEL<T>::TransferDataToWindow()
// The model is sourced from a library, optionally with instance overrides. // The model is sourced from a library, optionally with instance overrides.
loadLibrary( libraryFilename ); loadLibrary( libraryFilename );
bool ibisMode = IsIbisLoaded();
setIbisMode( ibisMode );
// Must be set before curModel() is used since the latter checks the combobox value. // Must be set before curModel() is used since the latter checks the combobox value.
m_modelNameCombobox->SetStringSelection( m_modelNameCombobox->SetStringSelection(
SIM_MODEL::GetFieldValue( &m_fields, SIM_LIBRARY::NAME_FIELD ) ); SIM_MODEL::GetFieldValue( &m_fields, SIM_LIBRARY::NAME_FIELD ) );
if( ibisMode && ( m_modelNameCombobox->GetSelection() >= 0 ) ) if( isIbisLoaded() && ( m_modelNameCombobox->GetSelection() >= 0 ) )
{ {
std::shared_ptr<SIM_MODEL_KIBIS> kibismodel = std::shared_ptr<SIM_MODEL_KIBIS> kibismodel =
std::dynamic_pointer_cast<SIM_MODEL_KIBIS>( std::dynamic_pointer_cast<SIM_MODEL_KIBIS>(
@ -145,7 +142,7 @@ bool DIALOG_SIM_MODEL<T>::TransferDataToWindow()
wxCommandEvent dummyEvent; wxCommandEvent dummyEvent;
onModelNameCombobox( dummyEvent ); // refresh list of pins onModelNameCombobox( dummyEvent ); // refresh list of pins
long unsigned int i = 0; int i = 0;
for( std::pair<std::string, std::string> strs : kibismodel->GetIbisPins() ) for( std::pair<std::string, std::string> strs : kibismodel->GetIbisPins() )
{ {
@ -155,13 +152,13 @@ bool DIALOG_SIM_MODEL<T>::TransferDataToWindow()
kibismodel->ChangePin( kibismodel->ChangePin(
*( std::dynamic_pointer_cast<SIM_LIBRARY_KIBIS>( m_library ) ), *( std::dynamic_pointer_cast<SIM_LIBRARY_KIBIS>( m_library ) ),
strs.first ); strs.first );
m_ibisPinCombobox->SetSelection( i ); m_ibisPinCombobox->SetSelection( static_cast<int>( i ) );
break; break;
} }
i++; i++;
} }
if( i < kibismodel->GetIbisPins().size() ) if( i < static_cast<int>( kibismodel->GetIbisPins().size() ) )
{ {
onIbisPinCombobox( dummyEvent ); // refresh list of models onIbisPinCombobox( dummyEvent ); // refresh list of models
@ -216,7 +213,7 @@ bool DIALOG_SIM_MODEL<T>::TransferDataFromWindow()
std::string path; std::string path;
if( m_useLibraryModelRadioButton->GetValue() || IsIbisLoaded() ) if( m_useLibraryModelRadioButton->GetValue() || isIbisLoaded() )
{ {
path = m_library->GetFilePath(); path = m_library->GetFilePath();
wxFileName fn( path ); wxFileName fn( path );
@ -227,7 +224,7 @@ bool DIALOG_SIM_MODEL<T>::TransferDataFromWindow()
SIM_MODEL::SetFieldValue( m_fields, SIM_LIBRARY::LIBRARY_FIELD, path ); SIM_MODEL::SetFieldValue( m_fields, SIM_LIBRARY::LIBRARY_FIELD, path );
if( IsIbisLoaded() ) if( isIbisLoaded() )
{ {
std::shared_ptr<SIM_MODEL_KIBIS> kibismodel = std::dynamic_pointer_cast<SIM_MODEL_KIBIS>( std::shared_ptr<SIM_MODEL_KIBIS> kibismodel = std::dynamic_pointer_cast<SIM_MODEL_KIBIS>(
m_libraryModels.at( m_modelNameCombobox->GetSelection() ) ); m_libraryModels.at( m_modelNameCombobox->GetSelection() ) );
@ -252,13 +249,33 @@ bool DIALOG_SIM_MODEL<T>::TransferDataFromWindow()
template <typename T> template <typename T>
void DIALOG_SIM_MODEL<T>::updateWidgets() void DIALOG_SIM_MODEL<T>::updateWidgets()
{ {
updateIbisWidgets();
updateModelParamsTab(); updateModelParamsTab();
updateModelCodeTab(); updateModelCodeTab();
updatePinAssignments(); updatePinAssignments();
m_modelPanel->Layout();
m_pinAssignmentsPanel->Layout();
m_parametersPanel->Layout();
m_codePanel->Layout();
SendSizeEvent( wxSEND_EVENT_POST );
m_prevModel = &curModel(); m_prevModel = &curModel();
} }
template <typename T>
void DIALOG_SIM_MODEL<T>::updateIbisWidgets()
{
m_ibisModelCombobox->Show( isIbisLoaded() );
m_ibisPinCombobox->Show( isIbisLoaded() );
m_ibisModelLabel->Show( isIbisLoaded() );
m_ibisPinLabel->Show( isIbisLoaded() );
m_overrideCheckbox->Show( !isIbisLoaded() );
m_modelNameLabel->SetLabel( isIbisLoaded() ? "Component:" : "Model:" );
}
template <typename T> template <typename T>
void DIALOG_SIM_MODEL<T>::updateModelParamsTab() void DIALOG_SIM_MODEL<T>::updateModelParamsTab()
@ -372,7 +389,7 @@ void DIALOG_SIM_MODEL<T>::updateModelParamsTab()
// Most of the values are disabled when the override checkbox is unchecked. // Most of the values are disabled when the override checkbox is unchecked.
( *it )->Enable( ( *it )->Enable(
( IsIbisLoaded() ) || m_useInstanceModelRadioButton->GetValue() ( isIbisLoaded() ) || m_useInstanceModelRadioButton->GetValue()
|| ( prop->GetParam().info.isInstanceParam || ( prop->GetParam().info.isInstanceParam
&& prop->GetParam().info.category == SIM_MODEL::PARAM::CATEGORY::PRINCIPAL ) && prop->GetParam().info.category == SIM_MODEL::PARAM::CATEGORY::PRINCIPAL )
|| m_overrideCheckbox->GetValue() ); || m_overrideCheckbox->GetValue() );
@ -517,11 +534,9 @@ void DIALOG_SIM_MODEL<T>::loadLibrary( const wxString& aFilePath )
else else
m_library = std::make_shared<SIM_LIBRARY_SPICE>(); m_library = std::make_shared<SIM_LIBRARY_SPICE>();
setIbisMode( IsIbisLoaded() );
try try
{ {
if( IsIbisLoaded() ) if( isIbisLoaded() )
{ {
wxString ibisTypeString = SIM_MODEL::GetFieldValue( &m_fields, SIM_MODEL::TYPE_FIELD ); wxString ibisTypeString = SIM_MODEL::GetFieldValue( &m_fields, SIM_MODEL::TYPE_FIELD );
@ -599,7 +614,6 @@ void DIALOG_SIM_MODEL<T>::loadLibrary( const wxString& aFilePath )
validator->SetIncludes( modelNames ); validator->SetIncludes( modelNames );
m_modelNameCombobox->Set( modelNames ); m_modelNameCombobox->Set( modelNames );
m_useLibraryModelRadioButton->SetValue( true ); m_useLibraryModelRadioButton->SetValue( true );
} }
@ -895,13 +909,14 @@ void DIALOG_SIM_MODEL<T>::onBrowseButtonClick( wxCommandEvent& aEvent )
path = fn.GetFullPath(); path = fn.GetFullPath();
loadLibrary( path ); loadLibrary( path );
updateWidgets();
} }
template <typename T> template <typename T>
void DIALOG_SIM_MODEL<T>::onModelNameCombobox( wxCommandEvent& aEvent ) void DIALOG_SIM_MODEL<T>::onModelNameCombobox( wxCommandEvent& aEvent )
{ {
if( IsIbisLoaded() ) if( isIbisLoaded() )
{ {
wxArrayString pinLabels; wxArrayString pinLabels;
SIM_MODEL_KIBIS* modelkibis = dynamic_cast<SIM_MODEL_KIBIS*>( &curModel() ); SIM_MODEL_KIBIS* modelkibis = dynamic_cast<SIM_MODEL_KIBIS*>( &curModel() );
@ -947,7 +962,7 @@ void DIALOG_SIM_MODEL<T>::onModelNameComboboxTextEnter( wxCommandEvent& aEvent )
template <typename T> template <typename T>
void DIALOG_SIM_MODEL<T>::onIbisPinCombobox( wxCommandEvent& aEvent ) void DIALOG_SIM_MODEL<T>::onIbisPinCombobox( wxCommandEvent& aEvent )
{ {
if( IsIbisLoaded() ) if( isIbisLoaded() )
{ {
wxArrayString modelLabels; wxArrayString modelLabels;
@ -1029,7 +1044,7 @@ void DIALOG_SIM_MODEL<T>::onTypeChoice( wxCommandEvent& aEvent )
if( deviceType == SIM_MODEL::TypeInfo( type ).deviceType if( deviceType == SIM_MODEL::TypeInfo( type ).deviceType
&& typeDescription == SIM_MODEL::TypeInfo( type ).description ) && typeDescription == SIM_MODEL::TypeInfo( type ).description )
{ {
if( IsIbisLoaded() if( isIbisLoaded()
&& ( type == SIM_MODEL::TYPE::KIBIS_DEVICE && ( type == SIM_MODEL::TYPE::KIBIS_DEVICE
|| type == SIM_MODEL::TYPE::KIBIS_DRIVER_DC || type == SIM_MODEL::TYPE::KIBIS_DRIVER_DC
|| type == SIM_MODEL::TYPE::KIBIS_DRIVER_RECT || type == SIM_MODEL::TYPE::KIBIS_DRIVER_RECT
@ -1161,7 +1176,7 @@ void DIALOG_SIM_MODEL<T>::onDeviceTypeChoiceUpdate( wxUpdateUIEvent& aEvent )
template <typename T> template <typename T>
void DIALOG_SIM_MODEL<T>::onTypeChoiceUpdate( wxUpdateUIEvent& aEvent ) void DIALOG_SIM_MODEL<T>::onTypeChoiceUpdate( wxUpdateUIEvent& aEvent )
{ {
aEvent.Enable( m_useInstanceModelRadioButton->GetValue() || ( IsIbisLoaded() ) ); aEvent.Enable( m_useInstanceModelRadioButton->GetValue() || ( isIbisLoaded() ) );
} }
@ -1256,20 +1271,5 @@ void DIALOG_SIM_MODEL<T>::onParamGridSelectionChange( wxPropertyGridEvent& aEven
m_prevParamGridSelection = grid->GetSelection(); m_prevParamGridSelection = grid->GetSelection();
} }
template <typename T>
void DIALOG_SIM_MODEL<T>::setIbisMode( bool aIbisMode )
{
m_ibisModelCombobox->Show( aIbisMode );
m_ibisPinCombobox->Show( aIbisMode );
m_ibisModelLabel->Show( aIbisMode );
m_ibisPinLabel->Show( aIbisMode );
m_overrideCheckbox->Show( !aIbisMode );
m_modelNameLabel->SetLabel( aIbisMode ? "Component:" : "Model:" );
this->Fit();
this->Refresh();
this->Update();
}
template class DIALOG_SIM_MODEL<SCH_FIELD>; template class DIALOG_SIM_MODEL<SCH_FIELD>;
template class DIALOG_SIM_MODEL<LIB_FIELD>; template class DIALOG_SIM_MODEL<LIB_FIELD>;

View File

@ -75,6 +75,7 @@ private:
bool TransferDataFromWindow() override; bool TransferDataFromWindow() override;
void updateWidgets(); void updateWidgets();
void updateIbisWidgets();
void updateModelParamsTab(); void updateModelParamsTab();
void updateModelCodeTab(); void updateModelCodeTab();
void updatePinAssignments(); void updatePinAssignments();
@ -146,8 +147,7 @@ private:
std::shared_ptr<SIM_MODEL> m_currentIbisModel = nullptr; std::shared_ptr<SIM_MODEL> m_currentIbisModel = nullptr;
void setIbisMode( bool aIbisMode ); bool isIbisLoaded() { return m_library->GetType() == SIM_LIBRARY::LIBRARY_TYPE::KIBIS; };
bool IsIbisLoaded() { return m_library->GetType() == SIM_LIBRARY::LIBRARY_TYPE::KIBIS; };
}; };
#endif /* DIALOG_SIM_MODEL_H */ #endif /* DIALOG_SIM_MODEL_H */