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
QgsProcessingAlgorithmDialogFeedback::QgsProcessingAlgorithmDialogFeedback( QgsProcessingAlgorithmDialogBase *dialog )
QgsProcessingAlgorithmDialogFeedback::QgsProcessingAlgorithmDialogFeedback()
: QgsProcessingFeedback()
, mDialog( dialog )
{
}
void QgsProcessingAlgorithmDialogFeedback::setProgressText( const QString &text )
{
mDialog->setProgressText( text );
emit progressTextChanged( text );
}
void QgsProcessingAlgorithmDialogFeedback::reportError( const QString &error )
{
mDialog->reportError( error );
emit errorReported( error );
}
void QgsProcessingAlgorithmDialogFeedback::pushInfo( const QString &info )
{
mDialog->pushInfo( info );
emit infoPushed( info );
}
void QgsProcessingAlgorithmDialogFeedback::pushCommandInfo( const QString &info )
{
mDialog->pushCommandInfo( info );
emit commandInfoPushed( info );
}
void QgsProcessingAlgorithmDialogFeedback::pushDebugInfo( const QString &info )
{
mDialog->pushDebugInfo( info );
emit debugInfoPushed( info );
}
void QgsProcessingAlgorithmDialogFeedback::pushConsoleInfo( const QString &info )
{
mDialog->pushConsoleInfo( info );
emit consoleInfoPushed( info );
}
//
@ -158,8 +157,14 @@ QVariantMap QgsProcessingAlgorithmDialogBase::getParameterValues() const
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(), &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 );
return feedback.release();
}

View File

@ -46,7 +46,16 @@ class QgsProcessingAlgorithmDialogFeedback : public QgsProcessingFeedback
/**
* 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:
@ -57,9 +66,6 @@ class QgsProcessingAlgorithmDialogFeedback : public QgsProcessingFeedback
void pushDebugInfo( const QString &info ) override;
void pushConsoleInfo( const QString &info ) override;
private:
QgsProcessingAlgorithmDialogBase *mDialog = nullptr;
};
#endif