void ConstructionFfactorGroundFloorInspectorView::attach(openstudio::model::FFactorGroundFloorConstruction & fFactorGroundFloorConstruction)
{
  m_fFactorGroundFloorConstruction = fFactorGroundFloorConstruction;

  m_nameEdit->bind(
    *m_fFactorGroundFloorConstruction,
    OptionalStringGetter(std::bind(&model::FFactorGroundFloorConstruction::name, m_fFactorGroundFloorConstruction.get_ptr(),true)),
    boost::optional<StringSetter>(std::bind(&model::FFactorGroundFloorConstruction::setName, m_fFactorGroundFloorConstruction.get_ptr(),std::placeholders::_1))
  );

  m_ffactorEdit->bind(
    m_isIP,
    *m_fFactorGroundFloorConstruction,
    DoubleGetter(std::bind(&model::FFactorGroundFloorConstruction::fFactor, m_fFactorGroundFloorConstruction.get_ptr())),
    boost::optional<DoubleSetter>(std::bind(static_cast<bool(model::FFactorGroundFloorConstruction::*)(double)>(&model::FFactorGroundFloorConstruction::setFFactor), m_fFactorGroundFloorConstruction.get_ptr(), std::placeholders::_1))
  );

  m_areaEdit->bind(
    m_isIP,
    *m_fFactorGroundFloorConstruction,
    DoubleGetter(std::bind(&model::FFactorGroundFloorConstruction::area, m_fFactorGroundFloorConstruction.get_ptr())),
    boost::optional<DoubleSetter>(std::bind(static_cast<bool(model::FFactorGroundFloorConstruction::*)(double)>(&model::FFactorGroundFloorConstruction::setArea), m_fFactorGroundFloorConstruction.get_ptr(), std::placeholders::_1))
  );

  m_perimeterExposedEdit->bind(
    m_isIP,
    *m_fFactorGroundFloorConstruction,
    DoubleGetter(std::bind(&model::FFactorGroundFloorConstruction::perimeterExposed, m_fFactorGroundFloorConstruction.get_ptr())),
    boost::optional<DoubleSetter>(std::bind(static_cast<bool(model::FFactorGroundFloorConstruction::*)(double)>(&model::FFactorGroundFloorConstruction::setPerimeterExposed), m_fFactorGroundFloorConstruction.get_ptr(), std::placeholders::_1))
  );

  m_standardsInformationWidget->attach(m_fFactorGroundFloorConstruction.get());
}
void LuminaireDefinitionInspectorView::attach(openstudio::model::LuminaireDefinition & luminaireDefinition)
{
  m_luminaireDefinition = luminaireDefinition;

  // m_nameEdit->bind(luminaireDefinition,"name");
  m_nameEdit->bind(
    *m_luminaireDefinition,
    OptionalStringGetter(std::bind(&model::LuminaireDefinition::name, m_luminaireDefinition.get_ptr(),true)),
    boost::optional<StringSetter>(std::bind(&model::LuminaireDefinition::setName, m_luminaireDefinition.get_ptr(),std::placeholders::_1))
  );
  // m_lightingPowerEdit->bind(luminaireDefinition,"lightingPower",m_isIP);
  m_lightingPowerEdit->bind(
    m_isIP,
    *m_luminaireDefinition,
    DoubleGetter(std::bind(&model::LuminaireDefinition::lightingPower, m_luminaireDefinition.get_ptr())),
    boost::optional<DoubleSetter>(std::bind(&model::LuminaireDefinition::setLightingPower, m_luminaireDefinition.get_ptr(), std::placeholders::_1)),
    boost::optional<NoFailAction>(std::bind(&model::LuminaireDefinition::resetLightingPower, m_luminaireDefinition.get_ptr())),
    boost::none,
    boost::none,
    boost::optional<BasicQuery>(std::bind(&model::LuminaireDefinition::isLightingPowerDefaulted, m_luminaireDefinition.get_ptr()))
  );

  // m_fractionRadiantEdit->bind(luminaireDefinition,"fractionRadiant",m_isIP);
  m_fractionRadiantEdit->bind(
    m_isIP,
    *m_luminaireDefinition,
    DoubleGetter(std::bind(&model::LuminaireDefinition::fractionRadiant, m_luminaireDefinition.get_ptr())),
    boost::optional<DoubleSetter>(std::bind(&model::LuminaireDefinition::setFractionRadiant, m_luminaireDefinition.get_ptr(), std::placeholders::_1)),
    boost::optional<NoFailAction>(std::bind(&model::LuminaireDefinition::resetFractionRadiant, m_luminaireDefinition.get_ptr())),
    boost::none,
    boost::none,
    boost::optional<BasicQuery>(std::bind(&model::LuminaireDefinition::isFractionRadiantDefaulted, m_luminaireDefinition.get_ptr()))
  );

  // m_fractionVisibleEdit->bind(luminaireDefinition,"fractionVisible",m_isIP);
  m_fractionVisibleEdit->bind(
    m_isIP,
    *m_luminaireDefinition,
    DoubleGetter(std::bind(&model::LuminaireDefinition::fractionVisible, m_luminaireDefinition.get_ptr())),
    boost::optional<DoubleSetter>(std::bind(&model::LuminaireDefinition::setFractionVisible, m_luminaireDefinition.get_ptr(), std::placeholders::_1)),
    boost::optional<NoFailAction>(std::bind(&model::LuminaireDefinition::resetFractionVisible, m_luminaireDefinition.get_ptr())),
    boost::none,
    boost::none,
    boost::optional<BasicQuery>(std::bind(&model::LuminaireDefinition::isFractionVisibleDefaulted, m_luminaireDefinition.get_ptr()))
  );

  // m_returnAirFractionEdit->bind(luminaireDefinition,"returnAirFraction",m_isIP);
  m_returnAirFractionEdit->bind(
    m_isIP,
    *m_luminaireDefinition,
    DoubleGetter(std::bind(&model::LuminaireDefinition::returnAirFraction, m_luminaireDefinition.get_ptr())),
    boost::optional<DoubleSetter>(std::bind(&model::LuminaireDefinition::setReturnAirFraction, m_luminaireDefinition.get_ptr(), std::placeholders::_1)),
    boost::optional<NoFailAction>(std::bind(&model::LuminaireDefinition::resetReturnAirFraction, m_luminaireDefinition.get_ptr())),
    boost::none,
    boost::none,
    boost::optional<BasicQuery>(std::bind(&model::LuminaireDefinition::isReturnAirFractionDefaulted, m_luminaireDefinition.get_ptr()))
  );

  this->stackedWidget()->setCurrentIndex(1);
}
void PeopleDefinitionInspectorView::attach(openstudio::model::PeopleDefinition& peopleDefinition)
{
  m_peopleDefinition = peopleDefinition;
  m_nameEdit->bind(*m_peopleDefinition,
                   OptionalStringGetter(boost::bind(&model::PeopleDefinition::name,m_peopleDefinition.get_ptr(),true)),
                   boost::optional<StringSetter>(boost::bind(&model::PeopleDefinition::setName,m_peopleDefinition.get_ptr(),_1)));
  
  // bind to PeopleDefinition methods
  m_numberofPeopleEdit->bind(
      *m_peopleDefinition,
      OptionalDoubleGetter(boost::bind(&model::PeopleDefinition::numberofPeople,m_peopleDefinition.get_ptr())),
      boost::optional<DoubleSetter>(boost::bind(&model::PeopleDefinition::setNumberofPeople,m_peopleDefinition.get_ptr(),_1)));
  
  m_peopleperSpaceFloorAreaEdit->bind(
      m_isIP,
      *m_peopleDefinition,
      OptionalDoubleGetter(boost::bind(&model::PeopleDefinition::peopleperSpaceFloorArea,m_peopleDefinition.get_ptr())),
      boost::optional<DoubleSetter>(boost::bind(&model::PeopleDefinition::setPeopleperSpaceFloorArea,m_peopleDefinition.get_ptr(),_1)));

  m_spaceFloorAreaperPersonEdit->bind(
      m_isIP,
      *m_peopleDefinition,
      OptionalDoubleGetter(boost::bind(&model::PeopleDefinition::spaceFloorAreaperPerson,m_peopleDefinition.get_ptr())),
      boost::optional<DoubleSetter>(boost::bind(&model::PeopleDefinition::setSpaceFloorAreaperPerson,m_peopleDefinition.get_ptr(),_1)));

  // ETH: Note that this is overkill for this dimensionless value. Should switch to OSDoubleEdit(2).
  m_fractionRadiantEdit->bind(
      *m_peopleDefinition,
      DoubleGetter(boost::bind(&model::PeopleDefinition::fractionRadiant,m_peopleDefinition.get_ptr())),
      boost::optional<DoubleSetter>(boost::bind(&model::PeopleDefinition::setFractionRadiant,m_peopleDefinition.get_ptr(),_1)));

  m_sensibleHeatFractionEdit->bind(
      *m_peopleDefinition,
      OptionalDoubleGetter(boost::bind(&model::PeopleDefinition::sensibleHeatFraction,m_peopleDefinition.get_ptr())),
      boost::optional<DoubleSetter>(boost::bind(&model::PeopleDefinition::setSensibleHeatFraction,m_peopleDefinition.get_ptr(),_1)),
      boost::optional<NoFailAction>(boost::bind(&model::PeopleDefinition::resetSensibleHeatFraction,m_peopleDefinition.get_ptr())),
      boost::none,
      boost::optional<NoFailAction>(boost::bind(&model::PeopleDefinition::autocalculateSensibleHeatFraction,m_peopleDefinition.get_ptr())),
      boost::optional<BasicQuery>(boost::bind(&model::PeopleDefinition::isSensibleHeatFractionDefaulted,m_peopleDefinition.get_ptr())),
      boost::none,
      boost::optional<BasicQuery>(boost::bind(&model::PeopleDefinition::isSensibleHeatFractionAutocalculated,m_peopleDefinition.get_ptr())));

  m_carbonDioxideGenerationRateEdit->bind(
      m_isIP,
      *m_peopleDefinition,
      DoubleGetter(boost::bind(&model::PeopleDefinition::carbonDioxideGenerationRate,m_peopleDefinition.get_ptr())),
      boost::optional<DoubleSetter>(boost::bind(&model::PeopleDefinition::setCarbonDioxideGenerationRate,m_peopleDefinition.get_ptr(),_1)),
      boost::optional<NoFailAction>(boost::bind(&model::PeopleDefinition::resetCarbonDioxideGenerationRate,m_peopleDefinition.get_ptr())),
      boost::none,
      boost::none,
      boost::optional<BasicQuery>(boost::bind(&model::PeopleDefinition::isCarbonDioxideGenerationRateDefaulted,m_peopleDefinition.get_ptr())));

  this->stackedWidget()->setCurrentIndex(1);
}