Fix use of QWidgets from non-gui thread

This commit is contained in:
Nyall Dawson 2017-12-05 20:01:01 +10:00
parent 2ca90545e6
commit eda3d6e475
2 changed files with 24 additions and 13 deletions

View File

@ -24,40 +24,39 @@
///@cond NOT_STABLE ///@cond NOT_STABLE
QgsProcessingAlgorithmDialogFeedback::QgsProcessingAlgorithmDialogFeedback( QgsProcessingAlgorithmDialogBase *dialog ) QgsProcessingAlgorithmDialogFeedback::QgsProcessingAlgorithmDialogFeedback()
: QgsProcessingFeedback() : QgsProcessingFeedback()
, mDialog( dialog )
{ {
} }
void QgsProcessingAlgorithmDialogFeedback::setProgressText( const QString &text ) void QgsProcessingAlgorithmDialogFeedback::setProgressText( const QString &text )
{ {
mDialog->setProgressText( text ); emit progressTextChanged( text );
} }
void QgsProcessingAlgorithmDialogFeedback::reportError( const QString &error ) void QgsProcessingAlgorithmDialogFeedback::reportError( const QString &error )
{ {
mDialog->reportError( error ); emit errorReported( error );
} }
void QgsProcessingAlgorithmDialogFeedback::pushInfo( const QString &info ) void QgsProcessingAlgorithmDialogFeedback::pushInfo( const QString &info )
{ {
mDialog->pushInfo( info ); emit infoPushed( info );
} }
void QgsProcessingAlgorithmDialogFeedback::pushCommandInfo( const QString &info ) void QgsProcessingAlgorithmDialogFeedback::pushCommandInfo( const QString &info )
{ {
mDialog->pushCommandInfo( info ); emit commandInfoPushed( info );
} }
void QgsProcessingAlgorithmDialogFeedback::pushDebugInfo( const QString &info ) void QgsProcessingAlgorithmDialogFeedback::pushDebugInfo( const QString &info )
{ {
mDialog->pushDebugInfo( info ); emit debugInfoPushed( info );
} }
void QgsProcessingAlgorithmDialogFeedback::pushConsoleInfo( const QString &info ) void QgsProcessingAlgorithmDialogFeedback::pushConsoleInfo( const QString &info )
{ {
mDialog->pushConsoleInfo( info ); emit consoleInfoPushed( info );
} }
// //
@ -158,8 +157,14 @@ QVariantMap QgsProcessingAlgorithmDialogBase::getParameterValues() const
QgsProcessingFeedback *QgsProcessingAlgorithmDialogBase::createFeedback() QgsProcessingFeedback *QgsProcessingAlgorithmDialogBase::createFeedback()
{ {
auto feedback = qgis::make_unique< QgsProcessingAlgorithmDialogFeedback >( this ); auto feedback = qgis::make_unique< QgsProcessingAlgorithmDialogFeedback >();
connect( feedback.get(), &QgsProcessingFeedback::progressChanged, this, &QgsProcessingAlgorithmDialogBase::setPercentage ); connect( feedback.get(), &QgsProcessingFeedback::progressChanged, this, &QgsProcessingAlgorithmDialogBase::setPercentage );
connect( feedback.get(), &QgsProcessingAlgorithmDialogFeedback::commandInfoPushed, this, &QgsProcessingAlgorithmDialogBase::pushCommandInfo );
connect( feedback.get(), &QgsProcessingAlgorithmDialogFeedback::consoleInfoPushed, this, &QgsProcessingAlgorithmDialogBase::pushConsoleInfo );
connect( feedback.get(), &QgsProcessingAlgorithmDialogFeedback::debugInfoPushed, this, &QgsProcessingAlgorithmDialogBase::pushDebugInfo );
connect( feedback.get(), &QgsProcessingAlgorithmDialogFeedback::errorReported, this, &QgsProcessingAlgorithmDialogBase::reportError );
connect( feedback.get(), &QgsProcessingAlgorithmDialogFeedback::infoPushed, this, &QgsProcessingAlgorithmDialogBase::pushInfo );
connect( feedback.get(), &QgsProcessingAlgorithmDialogFeedback::progressTextChanged, this, &QgsProcessingAlgorithmDialogBase::setProgressText );
connect( buttonCancel, &QPushButton::clicked, feedback.get(), &QgsProcessingFeedback::cancel ); connect( buttonCancel, &QPushButton::clicked, feedback.get(), &QgsProcessingFeedback::cancel );
return feedback.release(); return feedback.release();
} }

View File

@ -46,7 +46,16 @@ class QgsProcessingAlgorithmDialogFeedback : public QgsProcessingFeedback
/** /**
* Constructor for QgsProcessingAlgorithmDialogFeedback. * Constructor for QgsProcessingAlgorithmDialogFeedback.
*/ */
QgsProcessingAlgorithmDialogFeedback( QgsProcessingAlgorithmDialogBase *dialog ); QgsProcessingAlgorithmDialogFeedback();
signals:
void progressTextChanged( const QString &text );
void errorReported( const QString &text );
void infoPushed( const QString &text );
void commandInfoPushed( const QString &text );
void debugInfoPushed( const QString &text );
void consoleInfoPushed( const QString &text );
public slots: public slots:
@ -57,9 +66,6 @@ class QgsProcessingAlgorithmDialogFeedback : public QgsProcessingFeedback
void pushDebugInfo( const QString &info ) override; void pushDebugInfo( const QString &info ) override;
void pushConsoleInfo( const QString &info ) override; void pushConsoleInfo( const QString &info ) override;
private:
QgsProcessingAlgorithmDialogBase *mDialog = nullptr;
}; };
#endif #endif