//------------------------------------------------------------------------------ // void Create() //------------------------------------------------------------------------------ void BurnThrusterPanel::Create() { #ifdef DEBUG_BURNPANEL_CREATE MessageInterface::ShowMessage("BurnThrusterPanel::Create() entered\n"); #endif #if __WXMAC__ int otherTextWidth = 150; #else int otherTextWidth = 150; #endif localObject = NULL; Integer bsize = 2; // border size // get the config object wxConfigBase *pConfig = wxConfigBase::Get(); // SetPath() understands ".." pConfig->SetPath(gmatwxT("/Burn Thruster")); //----------------------------------------------------------------- // coordinate system items //----------------------------------------------------------------- // Coordinate Systems wxStaticText *coordSysLabel = new wxStaticText(this, ID_TEXT, gmatwxT(GUI_ACCEL_KEY"Coordinate System")); coordSysComboBox = theGuiManager->GetCoordSysComboBox(this, ID_COMBOBOX, wxSize(150,-1)); coordSysComboBox->SetToolTip(pConfig->Read(_T("CoordinateSystemHint"))); // Addd Local to CoordinateSystem list coordSysComboBox->Insert("Local", 0); // Origin originLabel = new wxStaticText(this, ID_TEXT, gmatwxT(GUI_ACCEL_KEY"Origin")); originComboBox = theGuiManager->GetCelestialBodyComboBox(this, ID_COMBOBOX, wxSize(150,-1)); originComboBox->SetToolTip(pConfig->Read(_T("OriginHint"))); // Axes StringArray axesLabels = theObject->GetPropertyEnumStrings("Axes"); wxArrayString wxAxesLabels = ToWxArrayString(axesLabels); axisLabel = new wxStaticText(this, ID_TEXT, gmatwxT(GUI_ACCEL_KEY"Axes")); axesComboBox = new wxComboBox(this, ID_COMBOBOX, gmatwxT(""), wxDefaultPosition, wxSize(150,-1), wxAxesLabels, wxCB_DROPDOWN|wxCB_READONLY); axesComboBox->SetSelection(0); axesComboBox->SetToolTip(pConfig->Read(_T("AxesHint"))); //----- Add to sizer wxFlexGridSizer *coordSysSizer = new wxFlexGridSizer(3, 0, 0); coordSysSizer->Add(coordSysLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); coordSysSizer->Add(coordSysComboBox, 0, wxALIGN_LEFT|wxALL, bsize); coordSysSizer->Add(20,20); coordSysSizer->Add(originLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); coordSysSizer->Add(originComboBox, 0, wxALIGN_LEFT|wxALL, bsize); coordSysSizer->Add(20,20); coordSysSizer->Add(axisLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); coordSysSizer->Add(axesComboBox, 0, wxALIGN_LEFT|wxALL, bsize); coordSysSizer->Add(20,20); GmatStaticBoxSizer *coordSysBoxSizer = new GmatStaticBoxSizer(wxVERTICAL, this, "Coordinate System"); coordSysBoxSizer->Add(coordSysSizer, 0, wxALIGN_CENTER|wxALL, 0); //----------------------------------------------------------------- // thrust vector items //----------------------------------------------------------------- // ThrustDirection1 XUnitLabel = new wxStaticText(this, ID_TEXT, gmatwxT("")); XLabel = new wxStaticText(this, ID_TEXT, gmatwxT("ThrustDirection"GUI_ACCEL_KEY"1")); elem1TextCtrl = new wxTextCtrl(this, ID_TEXTCTRL, gmatwxT(""), wxDefaultPosition, wxSize(150,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); elem1TextCtrl->SetToolTip(pConfig->Read(_T("ThrustDirection1Hint"))); // ThrustDirection2 YUnitLabel = new wxStaticText(this, ID_TEXT, gmatwxT("")); YLabel = new wxStaticText(this, ID_TEXT, gmatwxT("ThrustDirection"GUI_ACCEL_KEY"2"), wxDefaultPosition,wxDefaultSize, 0); elem2TextCtrl = new wxTextCtrl(this, ID_TEXTCTRL, gmatwxT(""), wxDefaultPosition, wxSize(150,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); elem2TextCtrl->SetToolTip(pConfig->Read(_T("ThrustDirection2Hint"))); // ThrustDirection3 ZUnitLabel = new wxStaticText(this, ID_TEXT, gmatwxT("")); ZLabel = new wxStaticText(this, ID_TEXT, gmatwxT("ThrustDirection"GUI_ACCEL_KEY"3")); elem3TextCtrl = new wxTextCtrl(this, ID_TEXTCTRL, gmatwxT(""), wxDefaultPosition, wxSize(150,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); elem3TextCtrl->SetToolTip(pConfig->Read(_T("ThrustDirection3Hint"))); wxStaticText *dutyCycleLabel = NULL; wxStaticText *scaleFactorLabel = NULL; if (theObject->IsOfType(Gmat::THRUSTER)) { // Thruster Duty Cycle dutyCycleLabel = new wxStaticText(this, ID_TEXT, gmatwxT("Duty "GUI_ACCEL_KEY"Cycle")); dutyCycleTextCtrl = new wxTextCtrl(this, ID_TEXTCTRL, gmatwxT(""), wxDefaultPosition, wxSize(150,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); dutyCycleTextCtrl->SetToolTip(pConfig->Read(_T("DutyCycleHint"))); // Thruster Scale Factor scaleFactorLabel = new wxStaticText(this, ID_TEXT, gmatwxT("Thrust "GUI_ACCEL_KEY"Scale Factor")); scaleFactorTextCtrl = new wxTextCtrl(this, ID_TEXTCTRL, gmatwxT(""), wxDefaultPosition, wxSize(150,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); scaleFactorTextCtrl->SetToolTip(pConfig->Read(_T("ThrustScaleFactorHint"))); } //----- Add to sizer wxFlexGridSizer *vectorSizer = new wxFlexGridSizer(3, 0, 0); vectorSizer->Add(XLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); vectorSizer->Add(elem1TextCtrl, 0, wxALIGN_LEFT|wxALL, bsize); vectorSizer->Add(XUnitLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); vectorSizer->Add(YLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); vectorSizer->Add(elem2TextCtrl, 0, wxALIGN_LEFT|wxALL, bsize); vectorSizer->Add(YUnitLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); vectorSizer->Add(ZLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); vectorSizer->Add(elem3TextCtrl, 0, wxALIGN_LEFT|wxALL, bsize); vectorSizer->Add(ZUnitLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); if (theObject->IsOfType(Gmat::THRUSTER)) { vectorSizer->Add(dutyCycleLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); vectorSizer->Add(dutyCycleTextCtrl, 0, wxALIGN_LEFT|wxALL, bsize); vectorSizer->Add(20,20); vectorSizer->Add(scaleFactorLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); vectorSizer->Add(scaleFactorTextCtrl, 0, wxALIGN_LEFT|wxALL, bsize); vectorSizer->Add(20,20); } vectorBoxSizer = new GmatStaticBoxSizer(wxVERTICAL, this, "Thrust Vector"); vectorBoxSizer->Add(vectorSizer, 0, wxALIGN_CENTER|wxALL, 0); //----------------------------------------------------------------- // mass change items //----------------------------------------------------------------- // Decrement mass decMassCheckBox = new wxCheckBox(this, ID_CHECKBOX, gmatwxT(GUI_ACCEL_KEY"Decrement Mass"), wxDefaultPosition, wxSize(-1, -1), bsize); decMassCheckBox->SetToolTip(pConfig->Read(_T("DecrementMassHint"))); //Tank tankLabel = new wxStaticText(this, ID_TEXT, gmatwxT(GUI_ACCEL_KEY"Tank")); tankComboBox = theGuiManager->GetFuelTankComboBox(this, ID_COMBOBOX, wxSize(150,-1)); tankComboBox->SetToolTip(pConfig->Read(_T("TankHint"))); ispLabel = NULL; ispTextCtrl = NULL; ispUnit = NULL; // Isp for ImpulsiveBurn only if (theObject->IsOfType(Gmat::IMPULSIVE_BURN)) { ispLabel = new wxStaticText(this, ID_TEXT, gmatwxT(GUI_ACCEL_KEY"Isp")); ispTextCtrl = new wxTextCtrl(this, ID_TEXTCTRL, gmatwxT(""), wxDefaultPosition, wxSize(150,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); ispTextCtrl->SetToolTip(pConfig->Read(_T("IspHint"))); ispUnit = new wxStaticText(this, ID_TEXT, gmatwxT(" s")); } // Gravitational Acceleration gravityAccelLabel = new wxStaticText(this, ID_TEXT, gmatwxT(GUI_ACCEL_KEY"GravitationalAccel")); gravityAccelTextCtrl = new wxTextCtrl(this, ID_TEXTCTRL, gmatwxT(""), wxDefaultPosition, wxSize(150,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); gravityAccelTextCtrl->SetToolTip(pConfig->Read(_T("GravitationalAccelHint"))); gravityAccelUnit = new wxStaticText(this, ID_TEXT, gmatwxT(" m/s^2")); // Coefficients for Thruster only if (theObject->IsOfType(Gmat::THRUSTER)) { // cCoefButton = new wxButton(this, ID_BUTTON, gmatwxT("Edit "GUI_ACCEL_KEY"Thruster Coef.")); // cCoefButton->SetToolTip(pConfig->Read(_T("EditThrusterCoefficientHint"))); // kCoefButton = new wxButton(this, ID_BUTTON, gmatwxT("Edit "GUI_ACCEL_KEY"Impulse Coef.")); // kCoefButton->SetToolTip(pConfig->Read(_T("EditImpulseCoefficientHint"))); configButton = new wxButton(this, ID_BUTTON, gmatwxT(""GUI_ACCEL_KEY"Configure Polynomials")); configButton->SetToolTip(pConfig->Read(_T("ConfigPolynomialsHint"))); } wxBoxSizer *coefSizer = new wxBoxSizer(wxHORIZONTAL); if (theObject->IsOfType(Gmat::THRUSTER)) { // coefSizer->Add(cCoefButton, 0, wxALIGN_CENTER|wxALL, 5); // coefSizer->Add(kCoefButton, 0, wxALIGN_CENTER|wxALL, 5); coefSizer->Add(configButton, 0, wxALIGN_CENTER|wxALL, 5); // need anther one here? } //----- Add to sizer wxFlexGridSizer *massSizer = new wxFlexGridSizer(3, 0, 0); massSizer->Add(decMassCheckBox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); massSizer->Add(20,20); massSizer->Add(20,20); massSizer->Add(tankLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); massSizer->Add(tankComboBox, 0, wxALIGN_LEFT|wxALL, bsize); massSizer->Add(20,20); if (theObject->IsOfType(Gmat::IMPULSIVE_BURN)) { massSizer->Add(ispLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); massSizer->Add(ispTextCtrl, 0, wxALIGN_LEFT|wxALL, bsize); massSizer->Add(ispUnit, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); } massSizer->Add(gravityAccelLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); massSizer->Add(gravityAccelTextCtrl, 0, wxALIGN_LEFT|wxALL, bsize); massSizer->Add(gravityAccelUnit, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); if (theObject->IsOfType(Gmat::THRUSTER)) { massSizer->Add(20, 20, 0, wxALIGN_LEFT|wxALL, bsize); massSizer->Add(20, 20, 0, wxALIGN_LEFT|wxALL, bsize); massSizer->Add(20, 20, 0, wxALIGN_LEFT|wxALL, bsize); } GmatStaticBoxSizer *massBoxSizer = new GmatStaticBoxSizer(wxVERTICAL, this, "Mass Change"); massBoxSizer->Add(massSizer, 0, wxALIGN_CENTER|wxALL, 0); // Handle ElectricThruster items GmatStaticBoxSizer *electricBoxSizer = NULL; if (theObject->IsOfType("ElectricThruster")) { electricBoxSizer = new GmatStaticBoxSizer(wxVERTICAL, this, "Thrust Config."); // Thrust Model thrustModelTxt = new wxStaticText( this, ID_TEXT, gmatwxT("Thrust "GUI_ACCEL_KEY"Model"), wxDefaultPosition, wxDefaultSize, 0); StringArray thrustModels = theObject->GetPropertyEnumStrings("ThrustModel"); Integer numModels = thrustModels.size(); thrustModelArray = new wxString[numModels]; for (Integer ii=0; ii<numModels; ii++) thrustModelArray[ii] = thrustModels[ii].c_str(); thrustModelCB = new wxComboBox( this, ID_COMBOBOX, gmatwxT(thrustModelArray[0]), wxDefaultPosition, wxSize(180,-1), numModels, thrustModelArray, wxCB_DROPDOWN|wxCB_READONLY ); thrustModelCB->SetToolTip(pConfig->Read(_T("ThrustModelHint"))); // Minimum and Maximum Usable Power minPowerTxt = new wxStaticText( this, ID_TEXT, gmatwxT("Mi"GUI_ACCEL_KEY"nimum Usable Power"), wxDefaultPosition, wxDefaultSize, 0); maxPowerTxt = new wxStaticText( this, ID_TEXT, gmatwxT("Ma"GUI_ACCEL_KEY"ximum Usable Power"), wxDefaultPosition, wxDefaultSize, 0); minPowerTxtCtrl = new wxTextCtrl(this, ID_TEXTCTRL, gmatwxT(""), wxDefaultPosition, wxSize(otherTextWidth,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); maxPowerTxtCtrl = new wxTextCtrl(this, ID_TEXTCTRL, gmatwxT(""), wxDefaultPosition, wxSize(otherTextWidth,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); minPowerUnits = new wxStaticText(this, ID_TEXT, gmatwxT("kW"), wxDefaultPosition, wxDefaultSize, 0); maxPowerUnits = new wxStaticText(this, ID_TEXT, gmatwxT("kW"), wxDefaultPosition, wxDefaultSize, 0); // Efficiency and ISP and Constant Thrust efficiencyTxt = new wxStaticText( this, ID_TEXT, gmatwxT(""GUI_ACCEL_KEY"Fixed Efficiency"), wxDefaultPosition, wxDefaultSize, 0); ispTxt = new wxStaticText( this, ID_TEXT, gmatwxT(""GUI_ACCEL_KEY"Isp"), wxDefaultPosition, wxDefaultSize, 0); constantThrustTxt = new wxStaticText( this, ID_TEXT, gmatwxT(""GUI_ACCEL_KEY"Constant Thrust"), wxDefaultPosition, wxDefaultSize, 0); efficiencyTxtCtrl = new wxTextCtrl(this, ID_TEXTCTRL, gmatwxT(""), wxDefaultPosition, wxSize(otherTextWidth,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); ispTxtCtrl = new wxTextCtrl(this, ID_TEXTCTRL, gmatwxT(""), wxDefaultPosition, wxSize(otherTextWidth,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); constantThrustTxtCtrl = new wxTextCtrl(this, ID_TEXTCTRL, gmatwxT(""), wxDefaultPosition, wxSize(otherTextWidth,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); efficiencyUnits = new wxStaticText(this, ID_TEXT, gmatwxT(""), wxDefaultPosition, wxDefaultSize, 0); ispUnits = new wxStaticText(this, ID_TEXT, gmatwxT("s"), wxDefaultPosition, wxDefaultSize, 0); constantThrustUnits = new wxStaticText(this, ID_TEXT, gmatwxT("N"), wxDefaultPosition, wxDefaultSize, 0); wxFlexGridSizer *electricSizer = new wxFlexGridSizer(3, 0, 0); electricSizer->Add(thrustModelTxt, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(thrustModelCB, 0, wxALIGN_LEFT|wxALL, bsize); electricSizer->Add(20,20); electricSizer->Add(minPowerTxt, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(minPowerTxtCtrl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(minPowerUnits, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(maxPowerTxt, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(maxPowerTxtCtrl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(maxPowerUnits, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(efficiencyTxt, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(efficiencyTxtCtrl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(efficiencyUnits, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(ispTxt, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(ispTxtCtrl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(ispUnits, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(constantThrustTxt, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(constantThrustTxtCtrl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricSizer->Add(constantThrustUnits, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); electricBoxSizer->Add(electricSizer, 0, wxALIGN_CENTER|wxALL, 0); } //----------------------------------------------------------------- // add to page sizer //----------------------------------------------------------------- wxBoxSizer *pageSizer = new wxBoxSizer(wxVERTICAL); pageSizer->Add(coordSysBoxSizer, 0, wxALIGN_CENTER|wxGROW|wxALL, bsize); pageSizer->Add(vectorBoxSizer, 0, wxALIGN_CENTER|wxGROW|wxALL, bsize); pageSizer->Add(massBoxSizer, 0, wxALIGN_CENTER|wxGROW|wxALL, bsize); if (theObject->IsOfType(Gmat::THRUSTER)) { if (theObject->IsOfType("ElectricThruster")) { pageSizer->Add(electricBoxSizer, 0, wxALIGN_CENTER|wxALL, bsize); } pageSizer->Add(coefSizer, 0, wxALIGN_CENTER|wxALL, bsize); } theMiddleSizer->Add(pageSizer, 0, wxALIGN_CENTRE|wxALL, bsize); #ifdef DEBUG_BURNPANEL_CREATE MessageInterface::ShowMessage("BurnThrusterPanel::Create() exiting\n"); #endif }
//------------------------------------------------------------------------------ // void Create() //------------------------------------------------------------------------------ void TankConfigPanel::Create() { // Border size int minLabelSize; Integer bsize = 2; Integer labelSizeProportion = 0; Integer ctrlSizeProportion = 1; Integer unitSizeProportion = 0; // get the config object wxConfigBase *pConfig = wxConfigBase::Get(); // SetPath() understands ".." pConfig->SetPath(wxT("/Fuel Tank")); //----------------------------------------------------------------- // Create controls in tab order //----------------------------------------------------------------- // Volume wxStaticText *volumeLabel = new wxStaticText( this, ID_TEXT, wxT(GUI_ACCEL_KEY) wxT("Volume")); volumeTextCtrl = new wxTextCtrl( this, ID_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(120,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC) ); volumeTextCtrl->SetToolTip(pConfig->Read(wxT("VolumeHint"))); wxStaticText *volumeUnit = new wxStaticText( this, ID_TEXT, wxT("m^3")); // Pressure Model wxStaticText *pressureModelLabel = new wxStaticText( this, ID_TEXT, wxT("Pressure ") wxT(GUI_ACCEL_KEY) wxT("Model")); StringArray pressModelList = theFuelTank->GetPropertyEnumStrings(FuelTank::PRESSURE_MODEL); wxArrayString wxPressModelLabels = ToWxArrayString(pressModelList); pressureModelComboBox = new wxComboBox( this, ID_COMBOBOX, wxT(""), wxDefaultPosition, wxSize(120,-1), wxPressModelLabels, wxCB_DROPDOWN|wxCB_READONLY); pressureModelComboBox->SetToolTip(pConfig->Read(wxT("PressureModelHint"))); // Fuel Mass wxStaticText *fuelMassLabel = new wxStaticText( this, ID_TEXT, wxT("F") wxT(GUI_ACCEL_KEY) wxT("uel Mass")); fuelMassTextCtrl = new wxTextCtrl( this, ID_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(120,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC) ); fuelMassTextCtrl->SetToolTip(pConfig->Read(wxT("MassHint"))); wxStaticText *fuelMassUnit = new wxStaticText( this, ID_TEXT, wxT("kg")); // Allow Negative Fuel Mass allowNegativeFuelMassCheckBox = new wxCheckBox( this, ID_CHECKBOX, wxT("Allow ") wxT(GUI_ACCEL_KEY) wxT("Negative Fuel Mass")); allowNegativeFuelMassCheckBox->SetToolTip(pConfig->Read(wxT("AllowNegFuelMassHint"))); // Fuel Density wxStaticText *fuelDensityLabel = new wxStaticText( this, ID_TEXT, wxT("Fuel ") wxT(GUI_ACCEL_KEY) wxT("Density")); fuelDensityTextCtrl = new wxTextCtrl( this, ID_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(120,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC) ); fuelDensityTextCtrl->SetToolTip(pConfig->Read(wxT("DensityHint"))); wxStaticText *fuelDensityUnit = new wxStaticText( this, ID_TEXT, wxT("kg/m^3")); // Temperature wxStaticText *temperatureLabel = new wxStaticText( this, ID_TEXT, wxT(GUI_ACCEL_KEY) wxT("Temperature")); temperatureTextCtrl = new wxTextCtrl( this, ID_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(120,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC) ); temperatureTextCtrl->SetToolTip(pConfig->Read(wxT("TemperatureHint"))); wxStaticText *temperatureUnit = new wxStaticText( this, ID_TEXT, wxT("C")); // Reference Temperature wxStaticText *refTemperatureLabel = new wxStaticText( this, ID_TEXT, wxT(GUI_ACCEL_KEY) wxT("Reference Temperature")); refTemperatureTextCtrl = new wxTextCtrl( this, ID_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(120,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC) ); refTemperatureTextCtrl->SetToolTip(pConfig->Read(wxT("ReferenceTemperatureHint"))); wxStaticText *refTemperatureUnit = new wxStaticText( this, ID_TEXT, wxT("C")); // Pressure wxStaticText *pressureLabel = new wxStaticText( this, ID_TEXT, wxT(GUI_ACCEL_KEY) wxT("Pressure")); pressureTextCtrl = new wxTextCtrl( this, ID_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(120,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC) ); pressureTextCtrl->SetToolTip(pConfig->Read(wxT("PressureHint"))); wxStaticText *pressureUnit = new wxStaticText( this, ID_TEXT, wxT("kPa")); // set the min width for one of the labels for each GmatStaticBoxSizer minLabelSize = volumeLabel->GetBestSize().x; minLabelSize = (minLabelSize < pressureModelLabel->GetBestSize().x) ? pressureModelLabel->GetBestSize().x : minLabelSize; minLabelSize = (minLabelSize < fuelMassLabel->GetBestSize().x) ? fuelMassLabel->GetBestSize().x : minLabelSize; minLabelSize = (minLabelSize < fuelDensityLabel->GetBestSize().x) ? fuelDensityLabel->GetBestSize().x : minLabelSize; minLabelSize = (minLabelSize < temperatureLabel->GetBestSize().x) ? temperatureLabel->GetBestSize().x : minLabelSize; minLabelSize = (minLabelSize < refTemperatureLabel->GetBestSize().x) ? refTemperatureLabel->GetBestSize().x : minLabelSize; minLabelSize = (minLabelSize < pressureLabel->GetBestSize().x) ? pressureLabel->GetBestSize().x : minLabelSize; volumeLabel->SetMinSize(wxSize(minLabelSize, volumeLabel->GetMinHeight())); fuelMassLabel->SetMinSize(wxSize(minLabelSize, fuelMassLabel->GetMinHeight())); // set the min width for one of the UNIT labels for each GmatStaticBoxSizer minLabelSize = volumeUnit->GetBestSize().x; minLabelSize = (minLabelSize < fuelMassUnit->GetBestSize().x) ? fuelMassUnit->GetBestSize().x : minLabelSize; minLabelSize = (minLabelSize < fuelDensityUnit->GetBestSize().x) ? fuelDensityUnit->GetBestSize().x : minLabelSize; minLabelSize = (minLabelSize < temperatureUnit->GetBestSize().x) ? temperatureUnit->GetBestSize().x : minLabelSize; minLabelSize = (minLabelSize < refTemperatureUnit->GetBestSize().x) ? refTemperatureUnit->GetBestSize().x : minLabelSize; minLabelSize = (minLabelSize < pressureUnit->GetBestSize().x) ? pressureUnit->GetBestSize().x : minLabelSize; volumeUnit->SetMinSize(wxSize(minLabelSize, volumeUnit->GetMinHeight())); fuelMassUnit->SetMinSize(wxSize(minLabelSize, fuelMassUnit->GetMinHeight())); //----------------------------------------------------------------- // Add to fuel properties sizer //----------------------------------------------------------------- wxFlexGridSizer *flexGridSizer1 = new wxFlexGridSizer( 3, 0, 0 ); //flexGridSizer1->AddGrowableCol(1); flexGridSizer1->Add(fuelMassLabel, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer1->Add(fuelMassTextCtrl, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer1->Add(fuelMassUnit, unitSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer1->Add(0, 0, 0); flexGridSizer1->Add(allowNegativeFuelMassCheckBox, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer1->Add(0, 0, 0); flexGridSizer1->Add(fuelDensityLabel, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer1->Add(fuelDensityTextCtrl, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer1->Add(fuelDensityUnit, unitSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer1->Add(temperatureLabel, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer1->Add(temperatureTextCtrl, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer1->Add(temperatureUnit, unitSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer1->Add(refTemperatureLabel, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer1->Add(refTemperatureTextCtrl, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer1->Add(refTemperatureUnit, unitSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer1->Add(pressureLabel, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer1->Add(pressureTextCtrl, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer1->Add(pressureUnit, unitSizeProportion, wxALIGN_LEFT|wxALL, bsize); // create the Fuel Properties group box fuelPropertiesSizer = new GmatStaticBoxSizer( wxVERTICAL, this, wxT("Fuel Properties") ); fuelPropertiesSizer->Add(flexGridSizer1, 0, wxEXPAND|wxALL, bsize); //----------------------------------------------------------------- // Add to tank properties sizer //----------------------------------------------------------------- wxFlexGridSizer *flexGridSizer2 = new wxFlexGridSizer( 3, 0, 0 ); //flexGridSizer2->AddGrowableCol(1); flexGridSizer2->Add(volumeLabel, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer2->Add(volumeTextCtrl, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer2->Add(volumeUnit, unitSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer2->Add(pressureModelLabel, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer2->Add(pressureModelComboBox, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer2->Add(0, unitSizeProportion, wxALIGN_LEFT|wxALL, bsize); // create the Tank Properties group box tankPropertiesSizer = new GmatStaticBoxSizer( wxVERTICAL, this, wxT("Tank Properties") ); tankPropertiesSizer->Add(flexGridSizer2, 0, wxEXPAND|wxALL, bsize); //----------------------------------------------------------------- // Now put tank & fuel properties sizers into the middle sizer //----------------------------------------------------------------- theMiddleSizer->Add(tankPropertiesSizer, 0, wxEXPAND|wxALL, bsize); theMiddleSizer->Add(fuelPropertiesSizer, 1, wxEXPAND|wxALL, bsize); theMiddleSizer->SetSizeHints(this); }
//------------------------------------------------------------------------------ // void Create() //------------------------------------------------------------------------------ void BurnThrusterPanel::Create() { #ifdef DEBUG_BURNPANEL_CREATE MessageInterface::ShowMessage("BurnThrusterPanel::Create() entered\n"); #endif Integer bsize = 2; // border size // get the config object wxConfigBase *pConfig = wxConfigBase::Get(); // SetPath() understands ".." pConfig->SetPath(wxT("/Burn Thruster")); //----------------------------------------------------------------- // coordinate system items //----------------------------------------------------------------- // Coordinate Systems wxStaticText *coordSysLabel = new wxStaticText(this, ID_TEXT, wxT(GUI_ACCEL_KEY"Coordinate System")); coordSysComboBox = theGuiManager->GetCoordSysComboBox(this, ID_COMBOBOX, wxSize(150,-1)); coordSysComboBox->SetToolTip(pConfig->Read(_T("CoordinateSystemHint"))); // Addd Local to CoordinateSystem list coordSysComboBox->Insert("Local", 0); // Origin originLabel = new wxStaticText(this, ID_TEXT, wxT(GUI_ACCEL_KEY"Origin")); originComboBox = theGuiManager->GetCelestialBodyComboBox(this, ID_COMBOBOX, wxSize(150,-1)); originComboBox->SetToolTip(pConfig->Read(_T("OriginHint"))); // Axes StringArray axesLabels = theObject->GetPropertyEnumStrings("Axes"); wxArrayString wxAxesLabels = ToWxArrayString(axesLabels); axisLabel = new wxStaticText(this, ID_TEXT, wxT(GUI_ACCEL_KEY"Axes")); axesComboBox = new wxComboBox(this, ID_COMBOBOX, wxT(""), wxDefaultPosition, wxSize(150,-1), wxAxesLabels, wxCB_DROPDOWN|wxCB_READONLY); axesComboBox->SetSelection(0); axesComboBox->SetToolTip(pConfig->Read(_T("AxesHint"))); //----- Add to sizer wxFlexGridSizer *coordSysSizer = new wxFlexGridSizer(3, 0, 0); coordSysSizer->Add(coordSysLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); coordSysSizer->Add(coordSysComboBox, 0, wxALIGN_LEFT|wxALL, bsize); coordSysSizer->Add(20,20); coordSysSizer->Add(originLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); coordSysSizer->Add(originComboBox, 0, wxALIGN_LEFT|wxALL, bsize); coordSysSizer->Add(20,20); coordSysSizer->Add(axisLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); coordSysSizer->Add(axesComboBox, 0, wxALIGN_LEFT|wxALL, bsize); coordSysSizer->Add(20,20); GmatStaticBoxSizer *coordSysBoxSizer = new GmatStaticBoxSizer(wxVERTICAL, this, "Coordinate System"); coordSysBoxSizer->Add(coordSysSizer, 0, wxALIGN_CENTER|wxALL, 0); //----------------------------------------------------------------- // thrust vector items //----------------------------------------------------------------- // ThrustDirection1 XUnitLabel = new wxStaticText(this, ID_TEXT, wxT("")); XLabel = new wxStaticText(this, ID_TEXT, wxT("ThrustDirection"GUI_ACCEL_KEY"1")); elem1TextCtrl = new wxTextCtrl(this, ID_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(150,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); elem1TextCtrl->SetToolTip(pConfig->Read(_T("ThrustDirection1Hint"))); // ThrustDirection2 YUnitLabel = new wxStaticText(this, ID_TEXT, wxT("")); YLabel = new wxStaticText(this, ID_TEXT, wxT("ThrustDirection"GUI_ACCEL_KEY"2"), wxDefaultPosition,wxDefaultSize, 0); elem2TextCtrl = new wxTextCtrl(this, ID_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(150,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); elem2TextCtrl->SetToolTip(pConfig->Read(_T("ThrustDirection2Hint"))); // ThrustDirection3 ZUnitLabel = new wxStaticText(this, ID_TEXT, wxT("")); ZLabel = new wxStaticText(this, ID_TEXT, wxT("ThrustDirection"GUI_ACCEL_KEY"3")); elem3TextCtrl = new wxTextCtrl(this, ID_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(150,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); elem3TextCtrl->SetToolTip(pConfig->Read(_T("ThrustDirection3Hint"))); wxStaticText *dutyCycleLabel = NULL; wxStaticText *scaleFactorLabel = NULL; if (theObject->IsOfType(Gmat::THRUSTER)) { // Thruster Duty Cycle dutyCycleLabel = new wxStaticText(this, ID_TEXT, wxT("Duty "GUI_ACCEL_KEY"Cycle")); dutyCycleTextCtrl = new wxTextCtrl(this, ID_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(150,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); dutyCycleTextCtrl->SetToolTip(pConfig->Read(_T("DutyCycleHint"))); // Thruster Scale Factor scaleFactorLabel = new wxStaticText(this, ID_TEXT, wxT("Thrust "GUI_ACCEL_KEY"Scale Factor")); scaleFactorTextCtrl = new wxTextCtrl(this, ID_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(150,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); scaleFactorTextCtrl->SetToolTip(pConfig->Read(_T("ThrustScaleFactorHint"))); } //----- Add to sizer wxFlexGridSizer *vectorSizer = new wxFlexGridSizer(3, 0, 0); vectorSizer->Add(XLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); vectorSizer->Add(elem1TextCtrl, 0, wxALIGN_LEFT|wxALL, bsize); vectorSizer->Add(XUnitLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); vectorSizer->Add(YLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); vectorSizer->Add(elem2TextCtrl, 0, wxALIGN_LEFT|wxALL, bsize); vectorSizer->Add(YUnitLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); vectorSizer->Add(ZLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); vectorSizer->Add(elem3TextCtrl, 0, wxALIGN_LEFT|wxALL, bsize); vectorSizer->Add(ZUnitLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); if (theObject->IsOfType(Gmat::THRUSTER)) { vectorSizer->Add(dutyCycleLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); vectorSizer->Add(dutyCycleTextCtrl, 0, wxALIGN_LEFT|wxALL, bsize); vectorSizer->Add(20,20); vectorSizer->Add(scaleFactorLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); vectorSizer->Add(scaleFactorTextCtrl, 0, wxALIGN_LEFT|wxALL, bsize); vectorSizer->Add(20,20); } vectorBoxSizer = new GmatStaticBoxSizer(wxVERTICAL, this, "Thrust Vector"); vectorBoxSizer->Add(vectorSizer, 0, wxALIGN_CENTER|wxALL, 0); //----------------------------------------------------------------- // mass change items //----------------------------------------------------------------- // Decrement mass decMassCheckBox = new wxCheckBox(this, ID_CHECKBOX, wxT(GUI_ACCEL_KEY"Decrement Mass"), wxDefaultPosition, wxSize(-1, -1), bsize); decMassCheckBox->SetToolTip(pConfig->Read(_T("DecrementMassHint"))); //Tank tankLabel = new wxStaticText(this, ID_TEXT, wxT(GUI_ACCEL_KEY"Tank")); tankComboBox = theGuiManager->GetFuelTankComboBox(this, ID_COMBOBOX, wxSize(150,-1)); tankComboBox->SetToolTip(pConfig->Read(_T("TankHint"))); ispLabel = NULL; ispTextCtrl = NULL; ispUnit = NULL; // Isp for ImpulsiveBurn only if (theObject->IsOfType(Gmat::IMPULSIVE_BURN)) { ispLabel = new wxStaticText(this, ID_TEXT, wxT(GUI_ACCEL_KEY"Isp")); ispTextCtrl = new wxTextCtrl(this, ID_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(150,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); ispTextCtrl->SetToolTip(pConfig->Read(_T("IspHint"))); ispUnit = new wxStaticText(this, ID_TEXT, wxT(" s")); } // Gravitational Acceleration gravityAccelLabel = new wxStaticText(this, ID_TEXT, wxT(GUI_ACCEL_KEY"GravitationalAccel")); gravityAccelTextCtrl = new wxTextCtrl(this, ID_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(150,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC)); gravityAccelTextCtrl->SetToolTip(pConfig->Read(_T("GravitationalAccelHint"))); gravityAccelUnit = new wxStaticText(this, ID_TEXT, wxT(" m/s^2")); // Coefficients for Thruster only if (theObject->IsOfType(Gmat::THRUSTER)) { cCoefButton = new wxButton(this, ID_BUTTON, wxT("Edit "GUI_ACCEL_KEY"Thruster Coef.")); cCoefButton->SetToolTip(pConfig->Read(_T("EditThrusterCoefficientHint"))); kCoefButton = new wxButton(this, ID_BUTTON, wxT("Edit "GUI_ACCEL_KEY"Impulse Coef.")); kCoefButton->SetToolTip(pConfig->Read(_T("EditImpulseCoefficientHint"))); } wxBoxSizer *coefSizer = new wxBoxSizer(wxHORIZONTAL); if (theObject->IsOfType(Gmat::THRUSTER)) { coefSizer->Add(cCoefButton, 0, wxALIGN_CENTER|wxALL, 5); coefSizer->Add(kCoefButton, 0, wxALIGN_CENTER|wxALL, 5); } //----- Add to sizer wxFlexGridSizer *massSizer = new wxFlexGridSizer(3, 0, 0); massSizer->Add(decMassCheckBox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); massSizer->Add(20,20); massSizer->Add(20,20); massSizer->Add(tankLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); massSizer->Add(tankComboBox, 0, wxALIGN_LEFT|wxALL, bsize); massSizer->Add(20,20); if (theObject->IsOfType(Gmat::IMPULSIVE_BURN)) { massSizer->Add(ispLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); massSizer->Add(ispTextCtrl, 0, wxALIGN_LEFT|wxALL, bsize); massSizer->Add(ispUnit, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); } massSizer->Add(gravityAccelLabel, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); massSizer->Add(gravityAccelTextCtrl, 0, wxALIGN_LEFT|wxALL, bsize); massSizer->Add(gravityAccelUnit, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, bsize); if (theObject->IsOfType(Gmat::THRUSTER)) { massSizer->Add(20, 20, 0, wxALIGN_LEFT|wxALL, bsize); massSizer->Add(20, 20, 0, wxALIGN_LEFT|wxALL, bsize); massSizer->Add(20, 20, 0, wxALIGN_LEFT|wxALL, bsize); } GmatStaticBoxSizer *massBoxSizer = new GmatStaticBoxSizer(wxVERTICAL, this, "Mass Change"); massBoxSizer->Add(massSizer, 0, wxALIGN_CENTER|wxALL, 0); //----------------------------------------------------------------- // add to page sizer //----------------------------------------------------------------- wxBoxSizer *pageSizer = new wxBoxSizer(wxVERTICAL); pageSizer->Add(coordSysBoxSizer, 0, wxALIGN_CENTER|wxGROW|wxALL, bsize); pageSizer->Add(vectorBoxSizer, 0, wxALIGN_CENTER|wxGROW|wxALL, bsize); pageSizer->Add(massBoxSizer, 0, wxALIGN_CENTER|wxGROW|wxALL, bsize); if (theObject->IsOfType(Gmat::THRUSTER)) pageSizer->Add(coefSizer, 0, wxALIGN_CENTER|wxALL, bsize); theMiddleSizer->Add(pageSizer, 0, wxALIGN_CENTRE|wxALL, bsize); #ifdef DEBUG_BURNPANEL_CREATE MessageInterface::ShowMessage("BurnThrusterPanel::Create() exiting\n"); #endif }
//------------------------------------------------------------------------------ // void Create() //------------------------------------------------------------------------------ void GroundStationPanel::Create() { // create local copy of ground station localGroundStation = (GroundstationInterface*)theGroundStation->Clone(); // Border size int minLabelSize; Integer bsize = 2; Integer labelSizeProportion = 0; Integer ctrlSizeProportion = 1; Integer unitSizeProportion = 0; // get the config object wxConfigBase *pConfig = wxConfigBase::Get(); // SetPath() understands ".." pConfig->SetPath(wxT("/Ground Station")); //----------------------------------------------------------------- // Create controls in tab order //----------------------------------------------------------------- // Station ID wxStaticText *stationIDLabel = new wxStaticText( this, ID_TEXT, wxT(GUI_ACCEL_KEY"ID") ); stationIDTextCtrl = new wxTextCtrl( this, ID_STATION_ID_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(120,-1), 0 ); // Since Groundstation is now in plugin, this no longer works: // stationIDTextCtrl->SetToolTip(pConfig->Read(_T((GroundStation::PARAMETER_TEXT[GroundStation::STATION_ID-GroundStation::STATION_ID]+"Hint").c_str()))); stationIDTextCtrl->SetToolTip(pConfig->Read(_T("IdHint"))); // Central Body wxStaticText *centralBodyLabel = new wxStaticText( this, ID_TEXT, wxT("Central "GUI_ACCEL_KEY"Body")); StringArray centralBodyList; centralBodyList.push_back("Earth"); wxArrayString wxCentralBodyLabels = ToWxArrayString(centralBodyList); centralBodyComboBox = new wxComboBox( this, ID_COMBOBOX, wxT(""), wxDefaultPosition, wxSize(120,-1), wxCentralBodyLabels, wxCB_DROPDOWN|wxCB_READONLY); // for now, we are only allowing Earth as the central body; when code is updated to use any body // as central body, un-comment the following code: // centralBodyComboBox = GuiItemManager::GetInstance()->GetCelestialBodyComboBox(this, ID_COMBOBOX, // wxSize(150,-1)); centralBodyComboBox->SetToolTip(pConfig->Read(_T((BodyFixedPoint::PARAMETER_TEXT[BodyFixedPoint::CENTRAL_BODY-BodyFixedPoint::CENTRAL_BODY]+"Hint").c_str()))); // State Type wxStaticText *stateTypeLabel = new wxStaticText( this, ID_TEXT, wxT("State "GUI_ACCEL_KEY"Type")); StringArray stateTypeList = localGroundStation->GetPropertyEnumStrings(BodyFixedPoint::STATE_TYPE); wxArrayString wxStateTypeLabels = ToWxArrayString(stateTypeList); stateTypeComboBox = new wxComboBox( this, ID_STATE_TYPE_COMBOBOX, wxT(""), wxDefaultPosition, wxSize(120,-1), wxStateTypeLabels, wxCB_DROPDOWN|wxCB_READONLY); stateTypeComboBox->SetToolTip(pConfig->Read(_T((BodyFixedPoint::PARAMETER_TEXT[BodyFixedPoint::STATE_TYPE-BodyFixedPoint::CENTRAL_BODY]+"Hint").c_str()))); // Horizon Reference wxStaticText *horizonReferenceLabel = new wxStaticText( this, ID_TEXT, wxT(GUI_ACCEL_KEY"Horizon Reference")); StringArray horizonReferenceList = localGroundStation->GetPropertyEnumStrings(BodyFixedPoint::HORIZON_REFERENCE); wxArrayString wxHorizonReferenceLabels = ToWxArrayString(horizonReferenceList); horizonReferenceComboBox = new wxComboBox( this, ID_HORIZON_REFERENCE_COMBOBOX, wxT(""), wxDefaultPosition, wxSize(120,-1), wxHorizonReferenceLabels, wxCB_DROPDOWN|wxCB_READONLY); horizonReferenceComboBox->SetToolTip(pConfig->Read(_T((BodyFixedPoint::PARAMETER_TEXT[BodyFixedPoint::HORIZON_REFERENCE-BodyFixedPoint::CENTRAL_BODY]+"Hint").c_str()))); // Location 1 location1Label = new wxStaticText( this, ID_TEXT, localGroundStation->GetStringParameter(BodyFixedPoint::LOCATION_LABEL_1).c_str()); location1TextCtrl = new wxTextCtrl( this, ID_LOCATION_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(120,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC) ); //location1TextCtrl->SetToolTip(pConfig->Read(wxT(localGroundStation->GetStringParameter(BodyFixedPoint::LOCATION_LABEL_1)+"Hint"))); location1Unit = new wxStaticText( this, ID_TEXT, localGroundStation->GetStringParameter(BodyFixedPoint::LOCATION_UNITS_1).c_str()); // Location 2 location2Label = new wxStaticText( this, ID_TEXT, localGroundStation->GetStringParameter(BodyFixedPoint::LOCATION_LABEL_2).c_str()); location2TextCtrl = new wxTextCtrl( this, ID_LOCATION_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(120,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC) ); //location2TextCtrl->SetToolTip(pConfig->Read(wxT(localGroundStation->GetStringParameter(BodyFixedPoint::LOCATION_LABEL_2)+"Hint"))); location2Unit = new wxStaticText( this, ID_TEXT, localGroundStation->GetStringParameter(BodyFixedPoint::LOCATION_UNITS_2).c_str()); // Location 3 location3Label = new wxStaticText( this, ID_TEXT, localGroundStation->GetStringParameter(BodyFixedPoint::LOCATION_LABEL_3).c_str()); location3TextCtrl = new wxTextCtrl( this, ID_LOCATION_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(120,-1), 0, wxTextValidator(wxGMAT_FILTER_NUMERIC) ); //location3TextCtrl->SetToolTip(pConfig->Read(_T(localGroundStation->GetStringParameter(BodyFixedPoint::LOCATION_LABEL_3)+"Hint"))); location3Unit = new wxStaticText( this, ID_TEXT, localGroundStation->GetStringParameter(BodyFixedPoint::LOCATION_UNITS_3).c_str()); // Hardware //hardwareLabel = // new wxStaticText( this, ID_TEXT, wxT(localGroundStation->GetStringParameter(BodyFixedPoint::HARDWARE))); // wxStaticText *hardwareLabel = // new wxStaticText( this, ID_TEXT, wxT("Hardware")); // hardwareTextCtrl = // new wxTextCtrl( this, ID_HARDWARE_TEXTCTRL, wxT(""), wxDefaultPosition, wxSize(120,-1), 0 ); // //hardwareTextCtrl->SetToolTip(pConfig->Read(_T(BodyFixedPoint::PARAMETER_TEXT[BodyFixedPoint::HARDWARE-BodyFixedPoint::CENTRAL_BODY]"Hint"))); // hardwareTextCtrl->SetToolTip(pConfig->Read(_T("HardwareHint"))); // update labels and tooltips based on statetype UpdateControls(); // set the min width for one of the labels for each GmatStaticBoxSizer minLabelSize = stationIDLabel->GetBestSize().x; minLabelSize = (minLabelSize < centralBodyLabel->GetBestSize().x) ? centralBodyLabel->GetBestSize().x : minLabelSize; minLabelSize = (minLabelSize < stateTypeLabel->GetBestSize().x) ? stateTypeLabel->GetBestSize().x : minLabelSize; minLabelSize = (minLabelSize < horizonReferenceLabel->GetBestSize().x) ? horizonReferenceLabel->GetBestSize().x : minLabelSize; minLabelSize = (minLabelSize < location1Label->GetBestSize().x) ? location1Label->GetBestSize().x : minLabelSize; minLabelSize = (minLabelSize < location2Label->GetBestSize().x) ? location2Label->GetBestSize().x : minLabelSize; minLabelSize = (minLabelSize < location3Label->GetBestSize().x) ? location3Label->GetBestSize().x : minLabelSize; // minLabelSize = (minLabelSize < hardwareLabel->GetBestSize().x) ? hardwareLabel->GetBestSize().x : minLabelSize; stationIDLabel->SetMinSize(wxSize(minLabelSize, stationIDLabel->GetMinHeight())); centralBodyLabel->SetMinSize(wxSize(minLabelSize, centralBodyLabel->GetMinHeight())); // hardwareLabel->SetMinSize(wxSize(minLabelSize, hardwareLabel->GetMinHeight())); //----------------------------------------------------------------- // Add to Station ID sizer //----------------------------------------------------------------- wxFlexGridSizer *flexGridSizer1 = new wxFlexGridSizer( 3, 0, 0 ); //flexGridSizer1->AddGrowableCol(1); flexGridSizer1->Add(stationIDLabel, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer1->Add(stationIDTextCtrl, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer1->Add(0, unitSizeProportion, wxALIGN_LEFT|wxALL, bsize); theMiddleSizer->Add(flexGridSizer1, 0, wxEXPAND|wxALL, bsize); //----------------------------------------------------------------- // Add to location properties sizer //----------------------------------------------------------------- wxFlexGridSizer *flexGridSizer2 = new wxFlexGridSizer( 3, 0, 0 ); //flexGridSizer2->AddGrowableCol(1); flexGridSizer2->Add(centralBodyLabel, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer2->Add(centralBodyComboBox, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer2->Add(0, unitSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer2->Add(stateTypeLabel, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer2->Add(stateTypeComboBox, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer2->Add(0, unitSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer2->Add(horizonReferenceLabel, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer2->Add(horizonReferenceComboBox, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer2->Add(0, unitSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer2->Add(location1Label, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer2->Add(location1TextCtrl, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer2->Add(location1Unit, unitSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer2->Add(location2Label, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer2->Add(location2TextCtrl, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer2->Add(location2Unit, unitSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer2->Add(location3Label, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); flexGridSizer2->Add(location3TextCtrl, ctrlSizeProportion, wxGROW|wxALL, bsize); flexGridSizer2->Add(location3Unit, unitSizeProportion, wxALIGN_LEFT|wxALL, bsize); // create the location Properties group box locationPropertiesSizer = new GmatStaticBoxSizer( wxVERTICAL, this, "Location" ); locationPropertiesSizer->Add(flexGridSizer2, 0, wxEXPAND|wxALL, bsize); //----------------------------------------------------------------- // Add to hardware properties sizer //----------------------------------------------------------------- // wxFlexGridSizer *flexGridSizer3 = new wxFlexGridSizer( 3, 0, 0 ); // //flexGridSizer2->AddGrowableCol(1); // // flexGridSizer3->Add(hardwareLabel, labelSizeProportion, wxALIGN_LEFT|wxALL, bsize); // flexGridSizer3->Add(hardwareTextCtrl, ctrlSizeProportion, wxGROW|wxALL, bsize); // // // create the hardware Properties group box // hardwarePropertiesSizer = new GmatStaticBoxSizer( wxVERTICAL, this, "Hardware" ); // hardwarePropertiesSizer->Add(flexGridSizer3, 0, wxEXPAND|wxALL, bsize); //----------------------------------------------------------------- // Now put ground & fuel properties sizers into the middle sizer //----------------------------------------------------------------- theMiddleSizer->Add(locationPropertiesSizer, 1, wxEXPAND|wxALL, bsize); // theMiddleSizer->Add(hardwarePropertiesSizer, 0, wxEXPAND|wxALL, bsize); theMiddleSizer->SetSizeHints(this); }