//------------------------------------------------------------------------------ // void LoadData() //------------------------------------------------------------------------------ void VaryPanel::LoadData() { #ifdef DEBUG_VARYPANEL_LOAD MessageInterface::ShowMessage("VaryPanel::LoadData() entered\n"); MessageInterface::ShowMessage (" Command=<%p>'%s'\n", mVaryCommand, mVaryCommand ? mVaryCommand->GetTypeName().c_str() : "NULL"); #endif mVarNameTextCtrl->Disable(); // we don't want user to edit this box mViewVarButton->Enable(); if (mVaryCommand == NULL) { MessageInterface::PopupMessage(Gmat::ERROR_, "The Vary command is NULL\n"); return; } try { // Set the pointer for the "Show Script" button mObject = mVaryCommand; solverName = mVaryCommand->GetStringParameter(mVaryCommand->GetParameterID("SolverName")); #ifdef DEBUG_VARYPANEL_LOAD MessageInterface::ShowMessage(" solverName=%s\n", solverName.c_str()); #endif variableName = mVaryCommand->GetStringParameter(mVaryCommand->GetParameterID("Variable")); #ifdef DEBUG_VARYPANEL_LOAD MessageInterface::ShowMessage(" variableName=%s\n", variableName.c_str()); #endif wxString initValStr = mVaryCommand->GetStringParameter(mVaryCommand->GetParameterID("InitialValue")).c_str(); wxString pertStr = mVaryCommand->GetStringParameter(mVaryCommand->GetParameterID("Perturbation")).c_str(); wxString lowerStr = mVaryCommand->GetStringParameter(mVaryCommand->GetParameterID("Lower")).c_str(); wxString upperStr = mVaryCommand->GetStringParameter(mVaryCommand->GetParameterID("Upper")).c_str(); wxString maxStepStr = mVaryCommand->GetStringParameter(mVaryCommand->GetParameterID("MaxStep")).c_str(); wxString addSfStr = mVaryCommand->GetStringParameter(mVaryCommand->GetParameterID("AdditiveScaleFactor")).c_str(); wxString multCfStr = mVaryCommand->GetStringParameter(mVaryCommand->GetParameterID("MultiplicativeScaleFactor")).c_str(); mSolverComboBox->SetStringSelection(solverName.c_str()); mVarNameTextCtrl->SetValue(variableName.c_str()); mInitialTextCtrl->SetValue(initValStr); mPertTextCtrl->SetValue(pertStr); mLowerValueTextCtrl->SetValue(lowerStr); mUpperValueTextCtrl->SetValue(upperStr); mMaxStepTextCtrl->SetValue(maxStepStr); mAdditiveTextCtrl->SetValue(addSfStr); mMultiplicativeTextCtrl->SetValue(multCfStr); // Enalbe or disable fields depends on the solver type GmatBase *solver = theGuiInterpreter->GetConfiguredObject(solverName); if (solver != NULL) { // mVaryCommand->SetRefObject(solver, Gmat::SOLVER, solverName); solver->SetStringParameter (solver->GetParameterID("Variables"), variableName); SetControlEnabling(solver); } } catch (BaseException &e) { MessageInterface::PopupMessage(Gmat::ERROR_, e.GetFullMessage()); } #ifdef DEBUG_VARYPANEL_LOAD MessageInterface::ShowMessage("VaryPanel::LoadData() leaving\n"); #endif }
//------------------------------------------------------------------------------ // virtual void SaveData() //------------------------------------------------------------------------------ void GroundTrackPlotPanel::SaveData() { #if DEBUG_PANEL_SAVE MessageInterface::ShowMessage ("GroundTrackPlotPanel::SaveData() entered, mHasCentralBodyChanged=%d, " " mHasObjectListChanged=%d\n mHasIntegerDataChanged=%d, " "mHasTextureMapChanged=%d\n", mHasCentralBodyChanged, mHasObjectListChanged, mHasIntegerDataChanged, mHasTextureMapChanged); #endif canClose = true; std::string str1, str2; Integer collectFreq = 0, updateFreq = 0, pointsToRedraw = 0; //----------------------------------------------------------------- // check values from text field //----------------------------------------------------------------- if (mHasIntegerDataChanged) { CheckInteger(collectFreq, mDataCollectFreqTextCtrl->GetValue().c_str(), "DataCollectFrequency", "Integer Number > 0", false, true, true); CheckInteger(updateFreq, mUpdatePlotFreqTextCtrl->GetValue().c_str(), "UpdatePlotFrequency", "Integer Number > 0", false, true, true); CheckInteger(pointsToRedraw, mNumPointsToRedrawTextCtrl->GetValue().c_str(), "NumPointsToRedraw", "Integer Number >= 0", false, true, true, true); } if (!canClose) return; //----------------------------------------------------------------- // save values to base, base code should do the range checking //----------------------------------------------------------------- GmatBase *clonedObj = mGroundTrackPlot->Clone(); try { if (mHasCentralBodyChanged) { std::string newCentralBody = mCentralBodyComboBox->GetValue().WX_TO_STD_STRING; std::string newTexture = mTextureMapTextCtrl->GetValue().WX_TO_STD_STRING; clonedObj->SetStringParameter("CentralBody", newCentralBody); mHasCentralBodyChanged = false; // Set mHasTextureMapChanged to true so that it can be validated below (LOJ: 2014.11.03) mHasTextureMapChanged = true; } if (mHasObjectListChanged) { #if DEBUG_PANEL_SAVE MessageInterface::ShowMessage(" Saving object list\n"); #endif clonedObj->TakeAction("Clear"); int count = mObjectCheckListBox->GetCount(); for (int i = 0; i < count; i++) { if (mObjectCheckListBox->IsChecked(i)) { std::string objName = mObjectCheckListBox->GetString(i).WX_TO_STD_STRING; #ifdef DEBUG_PANEL_SAVE MessageInterface::ShowMessage(" objName = '%s'\n", objName.c_str()); #endif clonedObj->SetStringParameter("Add", objName); } } mHasObjectListChanged = false; } if (mHasIntegerDataChanged) { #if DEBUG_PANEL_SAVE MessageInterface::ShowMessage(" Saving Integer data\n"); #endif clonedObj->SetIntegerParameter("DataCollectFrequency", collectFreq); clonedObj->SetIntegerParameter("UpdatePlotFrequency", updateFreq); clonedObj->SetIntegerParameter("NumPointsToRedraw", pointsToRedraw); mHasIntegerDataChanged = false; } if (mHasDataOptionChanged) { #if DEBUG_PANEL_SAVE MessageInterface::ShowMessage(" Saving drawing options\n"); #endif clonedObj->SetBooleanParameter("ShowPlot", mShowPlotCheckBox->GetValue()); clonedObj->SetStringParameter("SolverIterations", mSolverIterComboBox->GetValue().c_str()); mHasDataOptionChanged = false; } // Save texture map if (mHasTextureMapChanged) { #if DEBUG_PANEL_SAVE MessageInterface::ShowMessage(" Saving new texture map\n"); #endif // Validate texture map file (LOJ: 2014.10.30) wxString wxTextureMap = mTextureMapTextCtrl->GetValue(); std::string textureMap = wxTextureMap.WX_TO_STD_STRING; if (clonedObj->IsParameterValid("TextureMap", textureMap)) { clonedObj->SetStringParameter("TextureMap", textureMap); // If texture map file is blank, display default one if (wxTextureMap == "") mTextureMapTextCtrl->SetValue(STD_TO_WX_STRING(clonedObj->GetStringParameter("TextureMap").c_str())); mHasTextureMapChanged = false; } else { // Recheck central body mHasCentralBodyChanged = true; canClose = false; MessageInterface::PopupMessage(Gmat::ERROR_, clonedObj->GetLastErrorMessage()); } } #ifdef __USE_COLOR_FROM_SUBSCRIBER__ // Save orbit colors if (mHasOrbitColorChanged) { SaveObjectColors("Orbit", mOrbitColorMap); mHasOrbitColorChanged = false; } // Save target colors if (mHasTargetColorChanged) { SaveObjectColors("Target", mTargetColorMap); mHasTargetColorChanged = false; } #endif // Copy new values to original object (LOJ: 2014.10.30) if (canClose) { mGroundTrackPlot->Copy(clonedObj); mCentralBody = mCentralBodyComboBox->GetValue().c_str(); mTextureFile = mTextureMapTextCtrl->GetValue().c_str(); EnableUpdate(false); } } catch (BaseException &e) { canClose = false; MessageInterface::PopupMessage(Gmat::ERROR_, e.GetFullMessage().c_str()); } delete clonedObj; #if DEBUG_PANEL_SAVE MessageInterface::ShowMessage("GroundTrackPlotPanel::SaveData() exiting.\n"); #endif }