diff --git a/src/openstudio_lib/SimSettingsView.cpp b/src/openstudio_lib/SimSettingsView.cpp index cca519b31..a6727c420 100644 --- a/src/openstudio_lib/SimSettingsView.cpp +++ b/src/openstudio_lib/SimSettingsView.cpp @@ -32,6 +32,8 @@ #include #include #include +#include +#include #include #include #include @@ -300,6 +302,10 @@ void SimSettingsView::createWidgets() { collapsibleInspector = new CollapsibleInspector("Output Diagnostics", createOutputDiagnosticsWidget()); mainLayout->addWidget(collapsibleInspector); + //******************* OS:OutputControl:ResilienceSummaries ******************* + collapsibleInspector = new CollapsibleInspector("Output Control Resilience Summaries", createOutputControlResilienceSummariesWidget()); + mainLayout->addWidget(collapsibleInspector); + mainLayout->addStretch(); } @@ -1135,6 +1141,29 @@ QWidget* SimSettingsView::createOutputDiagnosticsWidget() { return widget; } +QWidget* SimSettingsView::createOutputControlResilienceSummariesWidget() { + + auto* gridLayout = new QGridLayout(); + gridLayout->setContentsMargins(7, 7, 7, 7); + gridLayout->setSpacing(GRID_LAYOUT_SPACING); + gridLayout->setAlignment(Qt::AlignLeft); + + int row = 0; + int col = 0; + + addField(gridLayout, row, col, "Heat Index Algorithm", m_outputControlResilienceSummaries_heatIndexAlgorithm); + col++; + for (const auto& hiAlgo : model::OutputControlResilienceSummaries::heatIndexAlgorithmValues()) { + m_json_optionType->addItem(hiAlgo.c_str()); + } + + auto* widget = new QWidget(); + widget->setLayout(gridLayout); + widget->hide(); + + return widget; +} + void SimSettingsView::addField(QGridLayout* gridLayout, int row, int column, QString text, OSComboBox2*& comboBox) { auto* label = new QLabel(text, this); label->setFixedWidth(TEXT_FIELD_WIDTH); @@ -1245,6 +1274,7 @@ void SimSettingsView::attachAll() { attachOutputJSON(); attachOutputTableSummaryReports(); attachOutputDiagnostics(); + attachOutputControlResilienceSummaries(); } void SimSettingsView::detachAll() { @@ -1267,6 +1297,7 @@ void SimSettingsView::detachAll() { detachOutputJSON(); detachOutputTableSummaryReports(); detachOutputDiagnostics(); + detachOutputControlResilienceSummaries(); } void SimSettingsView::attachRunPeriod() { @@ -1934,6 +1965,19 @@ void SimSettingsView::attachOutputDiagnostics() { ); } +void SimSettingsView::attachOutputControlResilienceSummaries() { + // If it wasn't already in the model, it'll be initialized, and the Ctor defaults to "Simplified" which is the same as NOT having it in the model + auto mo = m_model.getUniqueModelObject(); + + m_outputControlResilienceSummaries_heatIndexAlgorithm->bind( + mo, static_cast(&openstudio::toString), &model::OutputControlResilienceSummaries::heatIndexAlgorithmValues, + StringGetter(std::bind(&model::OutputControlResilienceSummaries::heatIndexAlgorithm, mo)), + std::bind(&model::OutputControlResilienceSummaries::setHeatIndexAlgorithm, mo, std::placeholders::_1), + boost::none, // No reset + boost::none // No isDefaulted + ); +} + void SimSettingsView::detachRunPeriod() { m_useWeatherFileHolidaysandSpecialDays->unbind(); m_useWeatherFileDaylightSavingsPeriod->unbind(); @@ -2065,6 +2109,10 @@ void SimSettingsView::detachOutputDiagnostics() { m_diagnostics_displayExtraWarnings->unbind(); } +void SimSettingsView::detachOutputControlResilienceSummaries() { + m_outputControlResilienceSummaries_heatIndexAlgorithm->unbind(); +} + //***** SLOTS ***** void SimSettingsView::on_runPeriodGroupClicked(int idx) { diff --git a/src/openstudio_lib/SimSettingsView.hpp b/src/openstudio_lib/SimSettingsView.hpp index 21abcffd0..a54eb8d6b 100644 --- a/src/openstudio_lib/SimSettingsView.hpp +++ b/src/openstudio_lib/SimSettingsView.hpp @@ -71,6 +71,7 @@ class SimSettingsView QWidget* createOutputJSONWidget(); QWidget* createOutputTableSummaryReportsWidget(); QWidget* createOutputDiagnosticsWidget(); + QWidget* createOutputControlResilienceSummariesWidget(); void addField(QGridLayout* gridLayout, int row, int column, QString text, OSComboBox2*& comboBox); @@ -110,6 +111,7 @@ class SimSettingsView void attachOutputJSON(); void attachOutputTableSummaryReports(); void attachOutputDiagnostics(); + void attachOutputControlResilienceSummaries(); void detachAll(); void detachRunPeriod(); @@ -131,6 +133,7 @@ class SimSettingsView void detachOutputJSON(); void detachOutputTableSummaryReports(); void detachOutputDiagnostics(); + void detachOutputControlResilienceSummaries(); model::Model m_model; boost::optional m_shadowCalculation; @@ -272,6 +275,8 @@ class SimSettingsView OSSwitch2* m_table_allSummary; OSSwitch2* m_diagnostics_displayExtraWarnings; + OSComboBox2* m_outputControlResilienceSummaries_heatIndexAlgorithm; + signals: void toggleUnitsClicked(bool displayIP);