diff --git a/Modules/Visualization/MonteverdiGui/include/mvdQtWidgetParameterInitializers.h b/Modules/Visualization/MonteverdiGui/include/mvdQtWidgetParameterInitializers.h index 4d92b3749d465a2aaf4f2e3f300d66d30182529b..61d425e75d7597f248933b7c80b066f1bda3aaf8 100644 --- a/Modules/Visualization/MonteverdiGui/include/mvdQtWidgetParameterInitializers.h +++ b/Modules/Visualization/MonteverdiGui/include/mvdQtWidgetParameterInitializers.h @@ -59,6 +59,8 @@ #include "otbWrapperQtWidgetOutputImageParameter.h" #include "otbWrapperQtWidgetOutputProcessXMLParameter.h" #include "otbWrapperQtWidgetOutputVectorDataParameter.h" +#include "otbWrapperQtWidgetComplexInputImageParameter.h" +#include "otbWrapperQtWidgetComplexOutputImageParameter.h" #include "otbWrapperQtWidgetParameterFactory.h" #endif //tag=QT4-boost-compatibility @@ -175,6 +177,23 @@ private: QWidget * m_View; }; +/** + * \class ComplexInputImageInitializer + * + * \ingroup OTBMonteverdiGUI + * + * \brief WIP. + */ +class ComplexInputImageInitializer : public std::unary_function< + otb::Wrapper::QtWidgetComplexInputImageParameter*, + void + > +{ +public: + inline ComplexInputImageInitializer(); + inline result_type operator () ( argument_type widget ) const; +}; + /** * \class InputVectorDataInitializer * @@ -281,6 +300,26 @@ private: QString m_Prefix; }; +/** + * \class ComplexOutputImageInitializer + * + * \ingroup OTBMonteverdiGUI + * + * \brief WIP. + */ +class ComplexOutputImageInitializer : public std::unary_function< + otb::Wrapper::QtWidgetComplexOutputImageParameter*, + void + > +{ +public: + inline ComplexOutputImageInitializer( const QString & prefix ); + inline result_type operator () ( argument_type widget ) const; + +private: + QString m_Prefix; +}; + /** * \class OutputVectorDataInitializer * @@ -441,6 +480,24 @@ InputImageListInitializer SetupWidget( widget, FileSelectionInitializer() ); } +/*****************************************************************************/ +inline +ComplexInputImageInitializer +::ComplexInputImageInitializer() +{ +} + +/*****************************************************************************/ +inline +ComplexInputImageInitializer::result_type +ComplexInputImageInitializer +::operator () ( argument_type widget ) const +{ + assert( widget!=NULL ); + + SetupForFilenameDrop( widget, "You can drop filename here." ); +} + /*****************************************************************************/ inline InputFilenameInitializer::result_type @@ -576,6 +633,41 @@ OutputImageInitializer ); } +/*****************************************************************************/ +inline +ComplexOutputImageInitializer +::ComplexOutputImageInitializer( const QString& prefix) : + m_Prefix( prefix ) +{ +} + +/*****************************************************************************/ +inline +ComplexOutputImageInitializer::result_type +ComplexOutputImageInitializer +::operator () ( argument_type widget ) const +{ + assert( widget!=NULL ); + assert( I18nCoreApplication::ConstInstance()!=NULL ); + + if( m_Prefix.isEmpty() ) + { + SetupForFilenameDrop( widget, "You can drop filename here." ); + + assert( qApp!=NULL ); + assert( !qApp->arguments().empty() ); + + SetupOutputFilename( widget ); + } + else + SetupOutputFilename( + widget, + I18nCoreApplication::ConstInstance()->GetResultsDir(), + m_Prefix, + ".tif" + ); +} + /*****************************************************************************/ inline OutputVectorDataInitializer::result_type @@ -671,13 +763,29 @@ SetupForFilenameDrop( W* widget, const char* text ) lineEdit->installEventFilter( eventFilter ); - QObject::connect( - eventFilter, - SIGNAL( FilenameDropped( const QString& ) ), - // to: - lineEdit, - SLOT( setText( const QString& ) ) - ); + // BUG : temporary fix for drag & drop in InputImageParameter + // in the future, all "filename" parameters should have the same behaviour + if (dynamic_cast<otb::Wrapper::QtWidgetInputImageParameter*>(widget) || + dynamic_cast<otb::Wrapper::QtFileSelectionWidget*>(widget)) + { + QObject::connect( + eventFilter, + SIGNAL( FilenameDropped( const QString& ) ), + // to: + widget, + SLOT( SetFileName( const QString& ) ) + ); + } + else + { + QObject::connect( + eventFilter, + SIGNAL( FilenameDropped( const QString& ) ), + // to: + lineEdit, + SLOT( setText( const QString& ) ) + ); + } } /*****************************************************************************/ diff --git a/Modules/Visualization/MonteverdiGui/src/mvdQtWidgetView.cxx b/Modules/Visualization/MonteverdiGui/src/mvdQtWidgetView.cxx index 12640d6bec8182f2046b933b8568683f8717266b..ff6d14ecc26aa84d14d8f6418160b2d80adb9595 100644 --- a/Modules/Visualization/MonteverdiGui/src/mvdQtWidgetView.cxx +++ b/Modules/Visualization/MonteverdiGui/src/mvdQtWidgetView.cxx @@ -348,6 +348,7 @@ QtWidgetView SetupWidget( widget, InputFilenameListInitializer( this ) ); SetupWidget( widget, InputImageInitializer() ); SetupWidget( widget, InputImageListInitializer( this ) ); + SetupWidget( widget, ComplexInputImageInitializer() ); SetupWidget( widget, InputProcessXMLInitializer() ); SetupWidget( widget, InputVectorDataInitializer() ); SetupWidget( widget, InputVectorDataListInitializer( this ) ); @@ -362,6 +363,10 @@ QtWidgetView widget, OutputImageInitializer( m_Application->GetName() ) ); + SetupWidget( + widget, + ComplexOutputImageInitializer( m_Application->GetName() ) + ); SetupWidget( widget, OutputVectorDataInitializer() ); } diff --git a/Modules/Wrappers/QtWidget/include/otbQtFileSelectionWidget.h b/Modules/Wrappers/QtWidget/include/otbQtFileSelectionWidget.h index d7b42e3083116faed0e1d51627f39c48206114d6..ec1977b33a45fb3cfaf3c5f6f77bd80e135a3545 100644 --- a/Modules/Wrappers/QtWidget/include/otbQtFileSelectionWidget.h +++ b/Modules/Wrappers/QtWidget/include/otbQtFileSelectionWidget.h @@ -87,6 +87,7 @@ signals: protected slots: void SelectFile(); void CallFilenameChanged(); + void SetFileName(const QString &); private: QtFileSelectionWidget(const QtFileSelectionWidget&); //purposely not implemented diff --git a/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetComplexInputImageParameter.h b/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetComplexInputImageParameter.h index da397a519e74687e19513ef9e67c513c8fb34c66..249283011ea5b85fbe7f85aeb32ac1ece4c19691 100644 --- a/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetComplexInputImageParameter.h +++ b/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetComplexInputImageParameter.h @@ -45,6 +45,9 @@ public: QtWidgetComplexInputImageParameter(ComplexInputImageParameter*, QtWidgetModel*); ~QtWidgetComplexInputImageParameter() ITK_OVERRIDE; + inline const QLineEdit* GetInput() const; + inline QLineEdit* GetInput(); + protected slots: bool SetFileName( const QString& value ); void SelectFile(); @@ -65,6 +68,21 @@ private: QPushButton * m_Button; }; +inline +const QLineEdit* +QtWidgetComplexInputImageParameter +::GetInput() const +{ + return m_Input; +} + +inline +QLineEdit* +QtWidgetComplexInputImageParameter +::GetInput() +{ + return m_Input; +} } } diff --git a/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetComplexOutputImageParameter.h b/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetComplexOutputImageParameter.h index af01fc7f5143665eff8cfd97882c0ab941c17ad1..1ec7b3f3250570a5dcb66887de841a40606cd039 100644 --- a/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetComplexOutputImageParameter.h +++ b/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetComplexOutputImageParameter.h @@ -45,11 +45,16 @@ public: QtWidgetComplexOutputImageParameter(ComplexOutputImageParameter*, QtWidgetModel*); ~QtWidgetComplexOutputImageParameter() ITK_OVERRIDE; + inline const QLineEdit* GetInput() const; + inline QLineEdit* GetInput(); + /** Get the PixelType*/ //itkGetMacro(PixelType, int); -protected slots: +public slots: void SetFileName( const QString& value ); + +protected slots: void SelectFile(); void SetPixelType(int pixelType); @@ -72,6 +77,21 @@ private: }; +inline +const QLineEdit* +QtWidgetComplexOutputImageParameter +::GetInput() const +{ + return m_Input; +} + +inline +QLineEdit* +QtWidgetComplexOutputImageParameter +::GetInput() +{ + return m_Input; +} } } diff --git a/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetInputImageParameter.h b/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetInputImageParameter.h index 01684af9326ed3b20133ddedcce04d9f29f4c8ae..5c970fc5c7b6e41a5c57eed44931d5e3172e1f0d 100644 --- a/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetInputImageParameter.h +++ b/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetInputImageParameter.h @@ -52,9 +52,12 @@ signals: void FileNameIsSet(); protected slots: - bool SetFileName(); + bool SetFileName(const QString& value); void SelectFile(); +private slots: + void OnEditingFinished(); + private: QtWidgetInputImageParameter(const QtWidgetInputImageParameter&); //purposely not implemented void operator=(const QtWidgetInputImageParameter&); //purposely not implemented diff --git a/Modules/Wrappers/QtWidget/src/otbQtFileSelectionWidget.cxx b/Modules/Wrappers/QtWidget/src/otbQtFileSelectionWidget.cxx index 37e4f3eed3ee02c97da7956d506f55d3c82ab98c..44eb911061301a5c3373857794a037ac2059f088 100644 --- a/Modules/Wrappers/QtWidget/src/otbQtFileSelectionWidget.cxx +++ b/Modules/Wrappers/QtWidget/src/otbQtFileSelectionWidget.cxx @@ -116,15 +116,22 @@ QtFileSelectionWidget if( filename.isEmpty() ) return; - m_Input->setText( filename ); + SetFileName(filename); +} +void +QtFileSelectionWidget +::CallFilenameChanged() +{ emit FilenameChanged(); } void QtFileSelectionWidget -::CallFilenameChanged() +::SetFileName(const QString & filename) { + m_Input->setText( filename ); + emit FilenameChanged(); } diff --git a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetInputImageParameter.cxx b/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetInputImageParameter.cxx index 2929d528a5515d1f4696b390e99e4ef46b0b0b20..e41c35dc01c1ede50efab19452972e0970abd9ce 100644 --- a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetInputImageParameter.cxx +++ b/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetInputImageParameter.cxx @@ -69,7 +69,7 @@ void QtWidgetInputImageParameter::DoCreateWidget() m_HLayout->setContentsMargins(0, 0, 0, 0); m_Input = new QLineEdit; m_Input->setToolTip( m_InputImageParam->GetDescription() ); - connect( m_Input, SIGNAL(editingFinished()), this, SLOT(SetFileName()) ); + connect( m_Input, SIGNAL(editingFinished()), this, SLOT(OnEditingFinished()) ); connect( this, SIGNAL(FileNameIsSet()), GetModel(), SLOT(NotifyUpdate()) ); m_HLayout->addWidget(m_Input); @@ -105,9 +105,7 @@ QtWidgetInputImageParameter if( filename.isEmpty() ) return; - m_Input->setText( filename ); - - if( !SetFileName() ) + if( !SetFileName(filename) ) { std::ostringstream oss; @@ -123,13 +121,14 @@ QtWidgetInputImageParameter } } -bool QtWidgetInputImageParameter::SetFileName() +bool QtWidgetInputImageParameter::SetFileName(const QString& value) { bool res = true; // save value if( m_InputImageParam->SetFromFileName( - QFile::encodeName( m_Input->text() ).constData() ) == true ) + QFile::encodeName( value ).constData() ) == true ) { + m_Input->setText( value ); // notify of value change QString key( m_InputImageParam->GetKey() ); @@ -142,5 +141,10 @@ bool QtWidgetInputImageParameter::SetFileName() return res; } +void QtWidgetInputImageParameter::OnEditingFinished() +{ + SetFileName( m_Input->text() ); +} + } }