void ThermalZonesController::onSelectItem(OSItem *item)
{
  subTabView()->inspectorView()->selectItem(item);
  subTabView()->itemSelectorButtons()->enableCopyButton();
  subTabView()->itemSelectorButtons()->enableRemoveButton();
  subTabView()->itemSelectorButtons()->enablePurgeButton();
}
Exemplo n.º 2
0
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;
  }
}
Exemplo n.º 3
0
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);
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 8
0
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);
  }
}
Exemplo n.º 12
0
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();
  }
}
Exemplo n.º 14
0
FacilityController::FacilityController(bool isIP, const model::Model& model)
  : ModelSubTabController(new FacilityView(isIP, model), model)
{
  connect(this, &FacilityController::toggleUnitsClicked, static_cast<ModelSubTabView*>(subTabView()), &ModelSubTabView::toggleUnitsClicked);
}
Exemplo n.º 15
0
void UtilityBillsController::onInspectItem(OSItem* item)
{
  subTabView()->inspectorView()->selectItem(item);
}