Skip to content

Commit eda3d6e

Browse files
committedDec 5, 2017
Fix use of QWidgets from non-gui thread
1 parent 2ca9054 commit eda3d6e

File tree

2 files changed

+24
-13
lines changed

2 files changed

+24
-13
lines changed
 

‎src/gui/processing/qgsprocessingalgorithmdialogbase.cpp

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,40 +24,39 @@
2424

2525
///@cond NOT_STABLE
2626

27-
QgsProcessingAlgorithmDialogFeedback::QgsProcessingAlgorithmDialogFeedback( QgsProcessingAlgorithmDialogBase *dialog )
27+
QgsProcessingAlgorithmDialogFeedback::QgsProcessingAlgorithmDialogFeedback()
2828
: QgsProcessingFeedback()
29-
, mDialog( dialog )
3029
{
3130
}
3231

3332
void QgsProcessingAlgorithmDialogFeedback::setProgressText( const QString &text )
3433
{
35-
mDialog->setProgressText( text );
34+
emit progressTextChanged( text );
3635
}
3736

3837
void QgsProcessingAlgorithmDialogFeedback::reportError( const QString &error )
3938
{
40-
mDialog->reportError( error );
39+
emit errorReported( error );
4140
}
4241

4342
void QgsProcessingAlgorithmDialogFeedback::pushInfo( const QString &info )
4443
{
45-
mDialog->pushInfo( info );
44+
emit infoPushed( info );
4645
}
4746

4847
void QgsProcessingAlgorithmDialogFeedback::pushCommandInfo( const QString &info )
4948
{
50-
mDialog->pushCommandInfo( info );
49+
emit commandInfoPushed( info );
5150
}
5251

5352
void QgsProcessingAlgorithmDialogFeedback::pushDebugInfo( const QString &info )
5453
{
55-
mDialog->pushDebugInfo( info );
54+
emit debugInfoPushed( info );
5655
}
5756

5857
void QgsProcessingAlgorithmDialogFeedback::pushConsoleInfo( const QString &info )
5958
{
60-
mDialog->pushConsoleInfo( info );
59+
emit consoleInfoPushed( info );
6160
}
6261

6362
//
@@ -158,8 +157,14 @@ QVariantMap QgsProcessingAlgorithmDialogBase::getParameterValues() const
158157

159158
QgsProcessingFeedback *QgsProcessingAlgorithmDialogBase::createFeedback()
160159
{
161-
auto feedback = qgis::make_unique< QgsProcessingAlgorithmDialogFeedback >( this );
160+
auto feedback = qgis::make_unique< QgsProcessingAlgorithmDialogFeedback >();
162161
connect( feedback.get(), &QgsProcessingFeedback::progressChanged, this, &QgsProcessingAlgorithmDialogBase::setPercentage );
162+
connect( feedback.get(), &QgsProcessingAlgorithmDialogFeedback::commandInfoPushed, this, &QgsProcessingAlgorithmDialogBase::pushCommandInfo );
163+
connect( feedback.get(), &QgsProcessingAlgorithmDialogFeedback::consoleInfoPushed, this, &QgsProcessingAlgorithmDialogBase::pushConsoleInfo );
164+
connect( feedback.get(), &QgsProcessingAlgorithmDialogFeedback::debugInfoPushed, this, &QgsProcessingAlgorithmDialogBase::pushDebugInfo );
165+
connect( feedback.get(), &QgsProcessingAlgorithmDialogFeedback::errorReported, this, &QgsProcessingAlgorithmDialogBase::reportError );
166+
connect( feedback.get(), &QgsProcessingAlgorithmDialogFeedback::infoPushed, this, &QgsProcessingAlgorithmDialogBase::pushInfo );
167+
connect( feedback.get(), &QgsProcessingAlgorithmDialogFeedback::progressTextChanged, this, &QgsProcessingAlgorithmDialogBase::setProgressText );
163168
connect( buttonCancel, &QPushButton::clicked, feedback.get(), &QgsProcessingFeedback::cancel );
164169
return feedback.release();
165170
}

‎src/gui/processing/qgsprocessingalgorithmdialogbase.h

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,16 @@ class QgsProcessingAlgorithmDialogFeedback : public QgsProcessingFeedback
4646
/**
4747
* Constructor for QgsProcessingAlgorithmDialogFeedback.
4848
*/
49-
QgsProcessingAlgorithmDialogFeedback( QgsProcessingAlgorithmDialogBase *dialog );
49+
QgsProcessingAlgorithmDialogFeedback();
50+
51+
signals:
52+
53+
void progressTextChanged( const QString &text );
54+
void errorReported( const QString &text );
55+
void infoPushed( const QString &text );
56+
void commandInfoPushed( const QString &text );
57+
void debugInfoPushed( const QString &text );
58+
void consoleInfoPushed( const QString &text );
5059

5160
public slots:
5261

@@ -57,9 +66,6 @@ class QgsProcessingAlgorithmDialogFeedback : public QgsProcessingFeedback
5766
void pushDebugInfo( const QString &info ) override;
5867
void pushConsoleInfo( const QString &info ) override;
5968

60-
private:
61-
62-
QgsProcessingAlgorithmDialogBase *mDialog = nullptr;
6369

6470
};
6571
#endif

0 commit comments

Comments
 (0)
Please sign in to comment.