diff --git a/source/app/ModulesHandle.cpp b/source/app/ModulesHandle.cpp index 28fd23d..592d9e1 100644 --- a/source/app/ModulesHandle.cpp +++ b/source/app/ModulesHandle.cpp @@ -105,6 +105,7 @@ SubWindowHandle* ModulesHandle::enableModuleIf( PlaYUVerModuleIf *pcCurrModuleIf SubWindowHandle* interfaceChild = NULL; QString windowName; + QVector subWindowList; UInt numberOfFrames = pcCurrModuleIf->m_cModuleDef.m_uiNumberOfFrames; if( numberOfFrames > MODULE_REQUIRES_ONE_FRAME ) // Show dialog to select sub windows { @@ -113,6 +114,7 @@ SubWindowHandle* ModulesHandle::enableModuleIf( PlaYUVerModuleIf *pcCurrModuleIf { QStringList selectedWindows = dialogWindowsSelection.getSelectedWindows(); SubWindowHandle *subWindow; + for( Int j = 0; j < selectedWindows.size(); j++ ) { for( Int i = 0; i < m_pcMdiArea->subWindowList().size(); i++ ) @@ -120,26 +122,44 @@ SubWindowHandle* ModulesHandle::enableModuleIf( PlaYUVerModuleIf *pcCurrModuleIf subWindow = qobject_cast( m_pcMdiArea->subWindowList().at( i ) ); if( subWindow->getWindowName() == selectedWindows.at( j ) ) { + subWindowList.append( subWindow ); pcCurrModuleIf->m_pcSubWindow[j] = subWindow; } } } } - else + // Check for same fmt in more than one frame modules + for( Int i = 1; i < subWindowList.size(); i++ ) { - pcCurrModuleIf->m_pcAction->setChecked( false ); - return interfaceChild; + if( !subWindowList.at( i )->getCurrFrame()->haveSameFmt( subWindowList.at( 0 )->getCurrFrame()) ) + { + subWindowList.clear(); + break; + } } } else { windowName.append( pcSubWindow->getWindowName() ); - pcCurrModuleIf->m_pcSubWindow[0] = pcSubWindow; + subWindowList.append( pcSubWindow ); } + + if( subWindowList.size() == 0 ) + { + pcCurrModuleIf->m_pcAction->setChecked( false ); + return interfaceChild; + } + windowName.append( " <" ); windowName.append( pcCurrModuleIf->m_cModuleDef.m_pchModuleName ); windowName.append( ">" ); + for( Int i = 0; i < subWindowList.size(); i++ ) + { + pcCurrModuleIf->m_pcSubWindow[i] = subWindowList.at( i ); + pcCurrModuleIf->m_pcSubWindow[i]->disableModule(); + } + pcCurrModuleIf->m_pcDisplaySubWindow = NULL; if( pcCurrModuleIf->m_cModuleDef.m_iModuleType == FRAME_PROCESSING_MODULE ) { @@ -165,19 +185,10 @@ SubWindowHandle* ModulesHandle::enableModuleIf( PlaYUVerModuleIf *pcCurrModuleIf pcCurrModuleIf->m_pcDockWidget->setFeatures( QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable ); pcCurrModuleIf->m_pcDockWidget->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea ); pcCurrModuleIf->m_pcDockWidget->setWidget( pcCurrModuleIf->m_pcModuleDock ); - //pcCurrModuleIf->m_pcDockWidget->setAttribute( Qt::WA_DeleteOnClose ); m_pcParent->addDockWidget( Qt::RightDockWidgetArea, pcCurrModuleIf->m_pcDockWidget ); - - //connect( pcCurrModuleIf->m_pcDockWidget, SIGNAL( visibilityChanged(bool) ), pcCurrModuleIf->m_pcModuleDock, SLOT( visibilityChangedSlot(bool) ) ); } } - // Disable existing Module - for( UInt i = 0; i < numberOfFrames; i++ ) - { - pcCurrModuleIf->m_pcSubWindow[i]->disableModule(); - } - // Create Module pcCurrModuleIf->create( pcCurrModuleIf->m_pcSubWindow[0]->getCurrFrame() );