void FOOTPRINT_WIZARD_FRAME::SelectFootprintWizard() { DIALOG_FOOTPRINT_WIZARD_LIST* selectWizard = new DIALOG_FOOTPRINT_WIZARD_LIST( this ); if( selectWizard->ShowModal() != wxID_OK ) return; FOOTPRINT_WIZARD* footprintWizard = selectWizard->GetWizard(); if( footprintWizard ) { m_wizardName = footprintWizard->GetName(); m_wizardDescription = footprintWizard->GetDescription(); } else { m_wizardName = wxT( "" ); m_wizardDescription = wxT( "" ); } ReloadFootprint(); Zoom_Automatique( false ); DisplayWizardInfos(); ReCreatePageList(); ReCreateParameterList(); }
/** * Function SelectCurrentFootprint * Selects the current footprint name and display it */ void FOOTPRINT_WIZARD_FRAME::ParametersUpdated( wxGridEvent& event ) { int page = m_pageList->GetSelection(); FOOTPRINT_WIZARD* footprintWizard = GetMyWizard(); if( !footprintWizard ) return; if( page<0 ) return; int n = m_parameterGrid->GetNumberRows(); wxArrayString arr; wxArrayString ptList = footprintWizard->GetParameterTypes( page ); for( int i = 0; i<n; i++ ) { wxString value = m_parameterGrid->GetCellValue( i, 1 ); // if this parameter is expected to be an internal // unit convert it back from the user format if( ptList[i]==wxT( "IU" ) ) { LOCALE_IO toggle; double dValue; value.ToDouble( &dValue ); // convert from mils to inches where it's needed if( g_UserUnit==INCHES ) dValue = dValue / 1000.0; dValue = From_User_Unit( g_UserUnit, dValue ); value.Printf( wxT( "%f" ), dValue ); } // If our locale is set to use , for decimal point, just change it // to be scripting compatible arr.Add( value ); } wxString res = footprintWizard->SetParameterValues( page, arr ); ReloadFootprint(); DisplayWizardInfos(); }
void FOOTPRINT_WIZARD_FRAME::ParametersUpdated( wxGridEvent& event ) { int page = m_pageList->GetSelection(); FOOTPRINT_WIZARD* footprintWizard = GetMyWizard(); if( !footprintWizard ) return; if( page < 0 ) return; wxArrayString prmValues = footprintWizard->GetParameterValues( page ); wxArrayString ptList = footprintWizard->GetParameterTypes( page ); bool has_changed = false; int count = m_parameterGrid->GetNumberRows(); // Skip extra event, useless if( event.GetString() == m_parameterGrid->GetCellValue( event.GetRow(), m_columnPrmValue ) ) return; for( int prm_id = 0; prm_id < count; ++prm_id ) { wxString value = m_parameterGrid->GetCellValue( prm_id, m_columnPrmValue ); // if this parameter is expected to be an internal // unit convert it back from the user format if( ptList[prm_id]==wxT( "IU" ) ) { // If our locale is set to use, for decimal point, just change it // to be scripting compatible LOCALE_IO toggle; double dValue; value.ToDouble( &dValue ); // convert from mils to inches where it's needed if( g_UserUnit==INCHES ) dValue = dValue / 1000.0; dValue = From_User_Unit( g_UserUnit, dValue ); // Internal units are int. Print them as int. value.Printf( "%d", KiROUND( dValue ) ); if( prmValues[prm_id].EndsWith(".0") ) { prmValues[prm_id].RemoveLast(); prmValues[prm_id].RemoveLast(); } } if( prmValues[prm_id] != value ) { has_changed = true; prmValues[prm_id] = value; } } if( has_changed ) { wxString res = footprintWizard->SetParameterValues( page, prmValues ); if( !res.IsEmpty() ) wxMessageBox( res ); ReloadFootprint(); DisplayWizardInfos(); } }