void ModelObjectVectorController::dataChange()
{
  QObject* sender = this->sender();
  model::detail::ModelObject_Impl* impl = qobject_cast<model::detail::ModelObject_Impl*>(sender);
  if (impl){
    onDataChange(impl->getObject<model::ModelObject>());
  }
}
IdfObjectWatcher::IdfObjectWatcher(const IdfObject& idfObject)
  : m_enabled(true), m_dirty(false), m_dataChanged(false), m_nameChanged(false)
{
  // make sure a QApplication exists
  openstudio::Application::instance().application();
  
  detail::IdfObject_ImplPtr objectImpl = idfObject.getImpl<openstudio::detail::IdfObject_Impl>();
  bool connected = this->connect(objectImpl.get(), SIGNAL(onChange()), SLOT(change()));
  connected = connected && this->connect(objectImpl.get(), SIGNAL(onDataChange()), SLOT(dataChange()));
  connected = connected && this->connect(objectImpl.get(), SIGNAL(onNameChange()), SLOT(nameChange()));
  
  OS_ASSERT(connected);
}
	int ZKDataWatcher::onPathRemove(){
		return onDataChange("", -1);
	}