void ThermalZonesController::onSelectItem(OSItem *item) { subTabView()->inspectorView()->selectItem(item); subTabView()->itemSelectorButtons()->enableCopyButton(); subTabView()->itemSelectorButtons()->enableRemoveButton(); subTabView()->itemSelectorButtons()->enablePurgeButton(); }
void LocationTabController::setSubTab(int index) { if (m_currentIndex == index) { return; } else { m_currentIndex = index; } if (qobject_cast<LocationView *>(m_currentView)) { disconnect(this, &LocationTabController::toggleUnitsClicked, qobject_cast<LocationView *>(m_currentView), &LocationView::toggleUnitsClicked); } else if (qobject_cast<LifeCycleCostsView *>(m_currentView)) { } else if (qobject_cast<UtilityBillsInspectorView *>(m_currentView) || qobject_cast<QLabel *>(m_currentView)) { } else if (m_currentView) { // Oops! Should never get here OS_ASSERT(false); } switch (index){ case 0: { auto locationView = new LocationView(m_isIP, m_model, m_modelTempDir); connect(this, &LocationTabController::toggleUnitsClicked, locationView, &LocationView::toggleUnitsClicked); this->mainContentWidget()->setSubTab(locationView); m_currentView = locationView; break; } case 1: { auto lifeCycleCostsView = new LifeCycleCostsView(m_model); this->mainContentWidget()->setSubTab(lifeCycleCostsView); m_currentView = lifeCycleCostsView; break; } case 2: { if (showUtilityBills()) { auto utilityBillsController = new UtilityBillsController(m_model); this->mainContentWidget()->setSubTab(utilityBillsController->subTabView()); m_currentView = utilityBillsController->subTabView()->inspectorView(); } else { auto label = new QLabel(); label->setPixmap(QPixmap(":/images/utility_calibration_warning.png")); label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); this->mainContentWidget()->setSubTab(label); m_currentView = label; } break; } default: OS_ASSERT(false); break; } }
UtilityBillsController::UtilityBillsController(const model::Model& model) : ModelSubTabController(new UtilityBillsView(model), model) { subTabView()->itemSelectorButtons()->disableCopyButton(); subTabView()->itemSelectorButtons()->disablePurgeButton(); subTabView()->itemSelectorButtons()->hideDropZone(); UtilityBillsInspectorView * utilityBillsInspectorView = static_cast<UtilityBillsInspectorView *>(subTabView()->inspectorView()); connect(this, &UtilityBillsController::toggleUnitsClicked, utilityBillsInspectorView, &UtilityBillsInspectorView::toggleUnitsClicked); connect(utilityBillsInspectorView, &UtilityBillsInspectorView::enableAddNewObjectButton, this, &UtilityBillsController::enableAddNewObjectButton); }
void UtilityBillsController::onClearSelection() { m_subTabView->inspectorView()->clearSelection(); m_subTabView->itemSelectorButtons()->disableRemoveButton(); openstudio::OSInspectorView * inspectorView = subTabView()->inspectorView(); UtilityBillsInspectorView * utilityBillsInspectorView = qobject_cast<UtilityBillsInspectorView *>(inspectorView); OS_ASSERT(utilityBillsInspectorView); enableAddNewObjectButton(utilityBillsInspectorView->runPeriodDates()); }
ThermalZonesController::ThermalZonesController(bool isIP, const model::Model & model) : ModelSubTabController(new ThermalZonesView(isIP,model),model) { //subTabView()->itemSelectorButtons()->disableCopyButton(); ThermalZoneView * thermalZoneView = static_cast<ThermalZoneView *>(subTabView()->inspectorView()); //connect(thermalZoneView, &ThermalZoneView::enableThermostatClicked, this, &ThermalZonesController::enableThermostat); //connect(thermalZoneView, &ThermalZoneView::enableHumidistatClicked, this, &ThermalZonesController::enableHumidistat); connect(thermalZoneView, &ThermalZoneView::modelObjectSelected, this, &ThermalZonesController::modelObjectSelected); connect(thermalZoneView, &ThermalZoneView::dropZoneItemSelected, this, &ThermalZonesController::dropZoneItemSelected); connect(this, &ThermalZonesController::toggleUnitsClicked, thermalZoneView, &ThermalZoneView::toggleUnitsClicked); }
openstudio::IddObjectType ModelSubTabController::currentIddObjectType() const { openstudio::IddObjectType result; const OSItemSelector* itemSelector = subTabView()->itemSelector(); const ModelObjectListView* modelObjectListView = qobject_cast<const ModelObjectListView*>(itemSelector); if (modelObjectListView){ result = modelObjectListView->iddObjectType(); } const ModelObjectTypeListView* modelObjectTypeListView = qobject_cast<const ModelObjectTypeListView*>(itemSelector); if (modelObjectTypeListView){ result = modelObjectTypeListView->currentIddObjectType(); } return result; }
boost::optional<openstudio::model::ModelObject> ModelSubTabController::selectedModelObject() const { boost::optional<openstudio::model::ModelObject> result; const OSItemSelector* itemSelector = subTabView()->itemSelector(); const ModelObjectListView* modelObjectListView = qobject_cast<const ModelObjectListView*>(itemSelector); if (modelObjectListView){ result = modelObjectListView->selectedModelObject(); } const ModelObjectTypeListView* modelObjectTypeListView = qobject_cast<const ModelObjectTypeListView*>(itemSelector); if (modelObjectTypeListView){ result = modelObjectTypeListView->selectedModelObject(); } return result; }
void LoadsController::onRemoveObject(openstudio::model::ModelObject modelObject) { boost::optional<model::SpaceLoadDefinition> spaceLoadDefinition = modelObject.optionalCast<model::SpaceLoadDefinition>(); if (spaceLoadDefinition){ unsigned numInstances = spaceLoadDefinition->instances().size(); if (numInstances > 0){ QMessageBox msgBox(subTabView()); msgBox.setText("There are " + QString::number(numInstances) + " instances that reference this definition."); msgBox.setInformativeText("Do you want to remove this definition and all of its instances?"); msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); msgBox.setDefaultButton(QMessageBox::Yes); int ret = msgBox.exec(); if (ret == QMessageBox::No){ return; } } modelObject.remove(); } }
void ModelSubTabController::onRemoveItem(OSItem* item) { // get selected items auto modelSubTabView = qobject_cast<ModelSubTabView *>(subTabView()); auto modelObjectInspectorView = modelSubTabView->modelObjectInspectorView(); if (modelObjectInspectorView->supportsMultipleObjectSelection()) { for (auto &obj : modelObjectInspectorView->selectedObjects()) { onRemoveObject(obj); } } else { ModelObjectItem* modelObjectItem = qobject_cast<ModelObjectItem*>(item); OS_ASSERT(modelObjectItem); model::ModelObject modelObject = modelObjectItem->modelObject(); if (!modelObject.handle().isNull()){ onRemoveObject(modelObject); } } }
void ModelSubTabController::onCopyItem() { // get selected items auto modelSubTabView = qobject_cast<ModelSubTabView *>(subTabView()); auto modelObjectInspectorView = modelSubTabView->modelObjectInspectorView(); if (modelObjectInspectorView->supportsMultipleObjectSelection()) { for (auto &obj : modelObjectInspectorView->selectedObjects()) { if (!obj.handle().isNull()){ onCopyObject(obj); } } } else { boost::optional<openstudio::model::ModelObject> selectedModelObject = this->selectedModelObject(); if (selectedModelObject && !selectedModelObject->handle().isNull()){ onCopyObject(*selectedModelObject); } } }
void ModelSubTabController::onAddItem() { // get selected items auto modelSubTabView = qobject_cast<ModelSubTabView *>(subTabView()); auto modelObjectInspectorView = modelSubTabView->modelObjectInspectorView(); openstudio::IddObjectType currentIddObjectType = this->currentIddObjectType(); if (modelObjectInspectorView->supportsMultipleObjectSelection()) { // Always make at least one if (!modelObjectInspectorView->selectedObjects().size()) { onAddObject(currentIddObjectType); } else { for (auto &obj : modelObjectInspectorView->selectedObjects()) { onAddObject(obj); } } } else { onAddObject(currentIddObjectType); } }
void SchedulesTabController::setSubTab(int index) { if (m_currentIndex == index) { return; } else { m_currentIndex = index; } if (qobject_cast<ScheduleSetsView *>(m_currentView) && qobject_cast<ScheduleSetsController *>(m_currentController)) { disconnect(qobject_cast<ScheduleSetsController *>(m_currentController), &ScheduleSetsController::downloadComponentsClicked, this, &SchedulesTabController::downloadComponentsClicked); disconnect(qobject_cast<ScheduleSetsController *>(m_currentController), &ScheduleSetsController::openLibDlgClicked, this, &SchedulesTabController::openLibDlgClicked); disconnect(this, &SchedulesTabController::toggleUnitsClicked, this, &SchedulesTabController::toggleUnits); m_currentController = nullptr; } else if (qobject_cast<SchedulesView *>(m_currentView)) { disconnect(this, &SchedulesTabController::toggleUnitsClicked, qobject_cast<SchedulesView *>(m_currentView), &SchedulesView::toggleUnitsClicked); disconnect(qobject_cast<SchedulesView *>(m_currentView), &SchedulesView::addScheduleClicked, this, &SchedulesTabController::addScheduleRuleset); disconnect(qobject_cast<SchedulesView *>(m_currentView), &SchedulesView::copySelectedScheduleClicked, this, &SchedulesTabController::copySelectedSchedule); disconnect(qobject_cast<SchedulesView *>(m_currentView), &SchedulesView::removeSelectedScheduleClicked, this, &SchedulesTabController::removeSelectedSchedule); disconnect(qobject_cast<SchedulesView *>(m_currentView), &SchedulesView::purgeUnusedScheduleRulesetsClicked, this, &SchedulesTabController::purgeUnusedScheduleRulesets); disconnect(qobject_cast<SchedulesView *>(m_currentView), &SchedulesView::addRuleClicked, this, &SchedulesTabController::addRule); disconnect(qobject_cast<SchedulesView *>(m_currentView), &SchedulesView::addSummerProfileClicked, this, &SchedulesTabController::addSummerProfile); disconnect(qobject_cast<SchedulesView *>(m_currentView), &SchedulesView::addWinterProfileClicked, this, &SchedulesTabController::addWinterProfile); disconnect(qobject_cast<SchedulesView *>(m_currentView), &SchedulesView::dayScheduleSceneChanged, this, &SchedulesTabController::onDayScheduleSceneChanged); disconnect(qobject_cast<SchedulesView *>(m_currentView), &SchedulesView::startDateTimeChanged, this, &SchedulesTabController::onStartDateTimeChanged); disconnect(qobject_cast<SchedulesView *>(m_currentView), &SchedulesView::endDateTimeChanged, this, &SchedulesTabController::onEndDateTimeChanged); disconnect(qobject_cast<SchedulesView *>(m_currentView), &SchedulesView::removeScheduleRuleClicked, this, &SchedulesTabController::removeScheduleRule); disconnect(qobject_cast<SchedulesView *>(m_currentView), &SchedulesView::itemDropped, this, &SchedulesTabController::onItemDropped); disconnect(qobject_cast<SchedulesView *>(m_currentView), &SchedulesView::modelObjectSelected, this, &SchedulesTabController::modelObjectSelected); disconnect(this, &SchedulesTabController::toggleUnitsClicked, this, &SchedulesTabController::toggleUnits); } else if (m_currentView) { // Oops! Should never get here OS_ASSERT(false); } switch (index){ case 0: { auto scheduleSetsController = new ScheduleSetsController(m_model); connect(scheduleSetsController, &ScheduleSetsController::downloadComponentsClicked, this, &SchedulesTabController::downloadComponentsClicked); connect(scheduleSetsController, &ScheduleSetsController::openLibDlgClicked, this, &SchedulesTabController::openLibDlgClicked); connect(this, &SchedulesTabController::toggleUnitsClicked, this, &SchedulesTabController::toggleUnits); this->mainContentWidget()->setSubTab(scheduleSetsController->subTabView()); m_currentView = scheduleSetsController->subTabView(); m_currentController = scheduleSetsController; break; } case 1: { auto schedulesView = new SchedulesView(m_isIP, m_model); addQObject(schedulesView); connect(this, &SchedulesTabController::toggleUnitsClicked, schedulesView, &SchedulesView::toggleUnitsClicked); connect(schedulesView, &SchedulesView::addScheduleClicked, this, &SchedulesTabController::addScheduleRuleset); connect(schedulesView, &SchedulesView::copySelectedScheduleClicked, this, &SchedulesTabController::copySelectedSchedule); connect(schedulesView, &SchedulesView::removeSelectedScheduleClicked, this, &SchedulesTabController::removeSelectedSchedule); connect(schedulesView, &SchedulesView::purgeUnusedScheduleRulesetsClicked, this, &SchedulesTabController::purgeUnusedScheduleRulesets); connect(schedulesView, &SchedulesView::addRuleClicked, this, &SchedulesTabController::addRule); connect(schedulesView, &SchedulesView::addSummerProfileClicked, this, &SchedulesTabController::addSummerProfile); connect(schedulesView, &SchedulesView::addWinterProfileClicked, this, &SchedulesTabController::addWinterProfile); connect(schedulesView, &SchedulesView::dayScheduleSceneChanged, this, &SchedulesTabController::onDayScheduleSceneChanged); connect(schedulesView, &SchedulesView::startDateTimeChanged, this, &SchedulesTabController::onStartDateTimeChanged); connect(schedulesView, &SchedulesView::endDateTimeChanged, this, &SchedulesTabController::onEndDateTimeChanged); connect(schedulesView, &SchedulesView::removeScheduleRuleClicked, this, &SchedulesTabController::removeScheduleRule); connect(schedulesView, &SchedulesView::itemDropped, this, &SchedulesTabController::onItemDropped); connect(schedulesView, &SchedulesView::modelObjectSelected, this, &SchedulesTabController::modelObjectSelected); connect(this, &SchedulesTabController::toggleUnitsClicked, this, &SchedulesTabController::toggleUnits); this->mainContentWidget()->setSubTab(schedulesView); m_currentView = schedulesView; break; } default: OS_ASSERT(false); break; } }
void ThermalZonesController::addComponentToZone(model::ThermalZone & zone, Handle & h) { boost::optional<model::ZoneHVACComponent> libraryComp; model::Model library = OSAppBase::instance()->currentDocument()->componentLibrary(); libraryComp = library.getModelObject<model::ZoneHVACComponent>(h); if( libraryComp ) { std::vector<model::ModelObject> existingComps; existingComps = zone.equipment(); std::vector<model::ZoneHVACComponent> exisitngHVACComps; for( auto it = existingComps.begin(); it < existingComps.end(); ++it ) { if( boost::optional<model::ZoneHVACComponent> hvacComp = it->optionalCast<model::ZoneHVACComponent>() ) { exisitngHVACComps.push_back(hvacComp.get()); } } if( exisitngHVACComps.size() > 0 ) { QMessageBox message(subTabView()); message.setText("Sorry, only one piece of zone equipment is allowed at this time."); message.exec(); return; } } bool wasSuccessful = false; if( libraryComp ) { model::ZoneHVACComponent compClone = libraryComp->clone(model()).cast<model::ZoneHVACComponent>(); bool added = compClone.addToThermalZone(zone); if( added ) { wasSuccessful = true; } else { compClone.remove(); } } if( ! wasSuccessful ) { QMessageBox message(subTabView()); message.setText("The selected component is not allowed at this location."); message.exec(); } }
FacilityController::FacilityController(bool isIP, const model::Model& model) : ModelSubTabController(new FacilityView(isIP, model), model) { connect(this, &FacilityController::toggleUnitsClicked, static_cast<ModelSubTabView*>(subTabView()), &ModelSubTabView::toggleUnitsClicked); }
void UtilityBillsController::onInspectItem(OSItem* item) { subTabView()->inspectorView()->selectItem(item); }