00001 #include "MultiScaleNormalDetectorPresenter.h" 00002 #include "MultiScaleNormalDetectorPresenter.moc" 00003 00004 #include <iostream> 00005 00006 MultiScaleNormalDetectorPresenter::MultiScaleNormalDetectorPresenter(NormalDetector* detector, ParameterWidget* detectorParameter): 00007 MultiScaleDetectorPresenter(detector, detectorParameter) 00008 { 00009 m_detectorParameter->addIntParameter("windowSize", "Size of the normal window", 3, 3, 11, 2); 00010 00011 syncronize(); 00012 reconnect(); 00013 } 00014 00015 void MultiScaleNormalDetectorPresenter::setDetectorParameter(ParameterWidget* detectorParameter){ 00016 disconnect(m_detectorParameter, 0, this, 0); 00017 MultiScaleDetectorPresenter::setDetectorParameter(detectorParameter); 00018 m_detectorParameter->addIntParameter("windowSize", "Size of the normal window", 3, 3, 11, 2); 00019 m_detectorParameter = detectorParameter; 00020 syncronize(); 00021 reconnect(); 00022 } 00023 00024 00025 00026 void MultiScaleNormalDetectorPresenter::changeParameter(const QString& name){ 00027 if(!QString::compare(name, "windowSize")){ 00028 int guiValue; 00029 bool valid = m_detectorParameter->getIntValue("windowSize", guiValue); 00030 if(valid) {changeWindowSize(guiValue);} 00031 } else { 00032 MultiScaleDetectorPresenter::changeParameter(name); 00033 } 00034 } 00035 00036 void MultiScaleNormalDetectorPresenter::changeWindowSize(int size){ 00037 NormalDetector *detector = dynamic_cast<NormalDetector *>(m_detector); 00038 if(!detector || !m_detectorParameter) return; 00039 if((int)detector->getWindowSize() != size || m_detectorParameter->getIntValue("windowSize") != size){ 00040 detector->setWindowSize(size); 00041 m_detectorParameter->setIntValue("windowSize", detector->getWindowSize()); 00042 emit detectorChanged(); 00043 } 00044 } 00045 00046 void MultiScaleNormalDetectorPresenter::syncronize(){ 00047 NormalDetector *detector = dynamic_cast<NormalDetector *>(m_detector); 00048 if(detector && m_detectorParameter){ 00049 m_detectorParameter->setIntValue("windowSize", detector->getWindowSize()); 00050 } 00051 MultiScaleDetectorPresenter::syncronize(); 00052 } 00053 00054 void MultiScaleNormalDetectorPresenter::reconnect(){ 00055 disconnect(m_detectorParameter, 0, this, 0); 00056 connect(m_detectorParameter, SIGNAL(parameterChanged(const QString&)), this, SLOT(changeParameter(const QString&))); 00057 }