Skip to content

Commit eb39d23

Browse files
committedApr 9, 2018
Move processing algorithm configuration code to gui lib
1 parent 31d7e4b commit eb39d23

24 files changed

+232
-187
lines changed
 

‎python/core/core_auto.sip

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,6 @@
367367
%Include locator/qgslocator.sip
368368
%Include locator/qgslocatorfilter.sip
369369
%Include locator/qgslocatormodel.sip
370-
%Include processing/qgsprocessingalgorithmconfigurationwidget.sip
371370
%Include processing/qgsprocessingalgrunnertask.sip
372371
%Include processing/qgsprocessingfeedback.sip
373372
%Include processing/qgsprocessingprovider.sip

‎python/core/processing/qgsprocessingparameters.sip.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ their acceptable ranges, defaults, etc.
168168
FlagAdvanced,
169169
FlagHidden,
170170
FlagOptional,
171+
FlagIsModelOutput,
171172
};
172173
typedef QFlags<QgsProcessingParameterDefinition::Flag> Flags;
173174

‎python/core/processing/qgsprocessingregistry.sip.in

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -143,30 +143,6 @@ Return a list with all known parameter types.
143143
.. versionadded:: 3.2
144144
%End
145145

146-
void addAlgorithmConfigurationWidgetFactory( QgsProcessingAlgorithmConfigurationWidgetFactory *factory /Transfer/ );
147-
%Docstring
148-
Add a new configuration widget factory for customized algorithm configuration
149-
widgets. Ownership is taken.
150-
151-
.. versionadded:: 3.2
152-
%End
153-
154-
void removeAlgorithmConfigurationWidgetFactory( QgsProcessingAlgorithmConfigurationWidgetFactory *factory );
155-
%Docstring
156-
Remove a configuration widget factory for customized algorithm configuration
157-
widgets.
158-
159-
.. versionadded:: 3.2
160-
%End
161-
162-
QgsProcessingAlgorithmConfigurationWidget *algorithmConfigurationWidget( QgsProcessingAlgorithm *algorithm ) const;
163-
%Docstring
164-
algorithmConfigurationWidget
165-
@param algorithm
166-
@return
167-
%End
168-
169-
170146
signals:
171147

172148
void providerAdded( const QString &id );

‎python/gui/gui_auto.sip

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,8 @@
311311
%Include layout/qgslayoutviewtooltemporarymousepan.sip
312312
%Include layout/qgslayoutviewtoolzoom.sip
313313
%Include locator/qgslocatorwidget.sip
314+
%Include processing/qgsprocessingalgorithmconfigurationwidget.sip
314315
%Include processing/qgsprocessingalgorithmdialogbase.sip
315316
%Include processing/qgsprocessingconfigurationwidgets.sip
317+
%Include processing/qgsprocessingguiregistry.sip
316318
%Include qgsadvanceddigitizingcanvasitem.sip

‎python/gui/processing/qgsprocessingconfigurationwidgets.sip.in

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -11,44 +11,6 @@
1111

1212

1313

14-
class QgsProcessingConfigurationWidgets
15-
{
16-
%Docstring
17-
This class is responsible for the management of processing widgets which
18-
QGIS internally.
19-
20-
Standalone applications that require to show configuration widgets for processing
21-
algorithms will need to execute the following code to have the configuration
22-
interfaces available.
23-
24-
.. code-block:: python
25-
26-
# At startup time
27-
QgsApplicationProcessingConfigurationWidgets.initialize()
28-
29-
# At exit time
30-
QgsApplicationProcessingConfigurationWidgets.cleanup()
31-
%End
32-
33-
%TypeHeaderCode
34-
#include "qgsprocessingconfigurationwidgets.h"
35-
%End
36-
public:
37-
38-
static void initialize();
39-
%Docstring
40-
Initialize native configuration widgets.
41-
%End
42-
43-
static void cleanup();
44-
%Docstring
45-
Cleanup native configuration widgets.
46-
%End
47-
48-
private:
49-
QgsProcessingConfigurationWidgets();
50-
};
51-
5214

5315

5416

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/************************************************************************
2+
* This file has been generated automatically from *
3+
* *
4+
* src/gui/processing/qgsprocessingguiregistry.h *
5+
* *
6+
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
7+
************************************************************************/
8+
9+
10+
11+
12+
13+
14+
class QgsProcessingGuiRegistry
15+
{
16+
%Docstring
17+
The QgsProcessingGuiRegistry is a home for widgets for processing
18+
configuration widgets.
19+
20+
.. versionadded:: 3.2
21+
%End
22+
23+
%TypeHeaderCode
24+
#include "qgsprocessingguiregistry.h"
25+
%End
26+
public:
27+
QgsProcessingGuiRegistry();
28+
~QgsProcessingGuiRegistry();
29+
30+
void addAlgorithmConfigurationWidgetFactory( QgsProcessingAlgorithmConfigurationWidgetFactory *factory /Transfer/ );
31+
%Docstring
32+
Add a new configuration widget factory for customized algorithm configuration
33+
widgets. Ownership is taken.
34+
35+
.. versionadded:: 3.2
36+
%End
37+
38+
void removeAlgorithmConfigurationWidgetFactory( QgsProcessingAlgorithmConfigurationWidgetFactory *factory );
39+
%Docstring
40+
Remove a configuration widget factory for customized algorithm configuration
41+
widgets.
42+
43+
.. versionadded:: 3.2
44+
%End
45+
46+
QgsProcessingAlgorithmConfigurationWidget *algorithmConfigurationWidget( QgsProcessingAlgorithm *algorithm ) const;
47+
%Docstring
48+
algorithmConfigurationWidget
49+
@param algorithm
50+
@return
51+
%End
52+
53+
};
54+
55+
/************************************************************************
56+
* This file has been generated automatically from *
57+
* *
58+
* src/gui/processing/qgsprocessingguiregistry.h *
59+
* *
60+
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
61+
************************************************************************/

‎python/gui/qgsgui.sip.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ Returns the global map layer action registry, used for registering map layer act
6262
Returns the global layout item GUI registry, used for registering the GUI behavior of layout items.
6363
%End
6464

65+
static QgsProcessingGuiRegistry *processingGuiRegistry();
66+
6567
static void enableAutoGeometryRestore( QWidget *widget, const QString &key = QString() );
6668
%Docstring
6769
Register the widget to allow its position to be automatically saved and restored when open and closed.

‎python/plugins/processing/modeler/ModelerParametersDialog.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@
5353
QgsProcessingOutputDefinition,
5454
QgsSettings)
5555

56-
from qgis.gui import (QgsMessageBar,
56+
from qgis.gui import (QgsGui,
57+
QgsMessageBar,
5758
QgsScrollArea,
5859
QgsFilterLineEdit,
5960
QgsHelp)
@@ -119,7 +120,7 @@ def setupUi(self):
119120
line.setFrameShape(QFrame.HLine)
120121
line.setFrameShadow(QFrame.Sunken)
121122
self.verticalLayout.addWidget(line)
122-
self.algorithmItem = QgsApplication.instance().processingRegistry().algorithmConfigurationWidget(self._alg)
123+
self.algorithmItem = QgsGui.instance().processingGuiRegistry().algorithmConfigurationWidget(self._alg)
123124
if self.configuration:
124125
self.algorithmItem.setConfiguration(self.configuration)
125126
self.verticalLayout.addWidget(self.algorithmItem)
@@ -332,6 +333,13 @@ def createAlgorithm(self):
332333
output.setChildOutputName(dest.name())
333334
outputs[name] = output
334335

336+
if dest.flags() & QgsProcessingParameterDefinition.FlagIsModelOutput:
337+
if not name in outputs:
338+
output = QgsProcessingModelOutput(dest.name(), dest.name())
339+
output.setChildId(alg.childId())
340+
output.setChildOutputName(dest.name())
341+
outputs[dest.name()] = output
342+
335343
alg.setModelOutputs(outputs)
336344

337345
selectedOptions = self.dependenciesPanel.selectedoptions

‎src/analysis/processing/qgsalgorithmfilter.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,11 @@ void QgsFilterAlgorithm::initAlgorithm( const QVariantMap &configuration )
7575
const QVariantMap outputDef = output.toMap();
7676
const QString name = QStringLiteral( "OUTPUT_%1" ).arg( outputDef.value( QStringLiteral( "name" ) ).toString() );
7777
QgsProcessingParameterFeatureSink *outputParam = new QgsProcessingParameterFeatureSink( name, outputDef.value( QStringLiteral( "name" ) ).toString() );
78-
outputParam->setFlags( QgsProcessingParameterDefinition::FlagHidden );
78+
QgsProcessingParameterDefinition::Flags flags = QgsProcessingParameterDefinition::Flags();
79+
flags |= QgsProcessingParameterDefinition::FlagHidden;
80+
if ( outputDef.value( QStringLiteral( "isModelOutput" ) ).toBool() )
81+
flags |= QgsProcessingParameterDefinition::FlagIsModelOutput;
82+
outputParam->setFlags( flags );
7983
addParameter( outputParam );
8084
mOutputs.append( new Output( name, outputDef.value( QStringLiteral( "expression" ) ).toString() ) );
8185
}
@@ -92,6 +96,8 @@ QVariantMap QgsFilterAlgorithm::processAlgorithm( const QVariantMap &parameters,
9296
for ( Output *output : qgis::as_const( mOutputs ) )
9397
{
9498
output->sink.reset( parameterAsSink( parameters, output->name, context, output->destinationIdentifier, source->fields(), source->wkbType(), source->sourceCrs() ) );
99+
if ( !output->sink )
100+
return QVariantMap();
95101
output->expression.prepare( &expressionContext );
96102
}
97103

@@ -115,7 +121,9 @@ QVariantMap QgsFilterAlgorithm::processAlgorithm( const QVariantMap &parameters,
115121
for ( Output *output : qgis::as_const( mOutputs ) )
116122
{
117123
if ( output->expression.evaluate( &expressionContext ).toBool() )
124+
{
118125
output->sink->addFeature( f, QgsFeatureSink::FastInsert );
126+
}
119127
}
120128

121129
feedback->setProgress( current * step );

‎src/app/qgisapp.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,6 @@ Q_GUI_EXPORT extern int qt_defaultDpiX();
246246
#include "qgsruntimeprofiler.h"
247247
#include "qgshandlebadlayers.h"
248248
#include "qgsprintlayout.h"
249-
#include "qgsprocessingconfigurationwidgets.h"
250249
#include "qgsprocessingregistry.h"
251250
#include "qgsproject.h"
252251
#include "qgsprojectlayergroupdialog.h"
@@ -1458,7 +1457,6 @@ QgisApp::~QgisApp()
14581457

14591458
// cancel request for FileOpen events
14601459
QgsApplication::setFileOpenEventReceiver( nullptr );
1461-
QgsProcessingConfigurationWidgets::cleanup();
14621460

14631461
unregisterCustomLayoutDropHandler( mLayoutQptDropHandler );
14641462

@@ -10497,7 +10495,6 @@ void QgisApp::initNativeProcessing()
1049710495
#ifdef HAVE_3D
1049810496
QgsApplication::processingRegistry()->addProvider( new Qgs3DAlgorithms( QgsApplication::processingRegistry() ) );
1049910497
#endif
10500-
QgsProcessingConfigurationWidgets::initialize();
1050110498
}
1050210499

1050310500
void QgisApp::initLayouts()

‎src/core/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ SET(QGIS_CORE_SRCS
102102
locator/qgslocatormodel.cpp
103103

104104
processing/qgsprocessingalgorithm.cpp
105-
processing/qgsprocessingalgorithmconfigurationwidget.cpp
106105
processing/qgsprocessingalgrunnertask.cpp
107106
processing/qgsprocessingcontext.cpp
108107
processing/qgsprocessingfeedback.cpp
@@ -669,7 +668,6 @@ SET(QGIS_CORE_MOC_HDRS
669668
locator/qgslocatorfilter.h
670669
locator/qgslocatormodel.h
671670

672-
processing/qgsprocessingalgorithmconfigurationwidget.h
673671
processing/qgsprocessingalgrunnertask.h
674672
processing/qgsprocessingfeedback.h
675673
processing/qgsprocessingprovider.h

‎src/core/processing/qgsprocessingparameters.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ class CORE_EXPORT QgsProcessingParameterDefinition
247247
FlagAdvanced = 1 << 1, //!< Parameter is an advanced parameter which should be hidden from users by default
248248
FlagHidden = 1 << 2, //!< Parameter is hidden and should not be shown to users
249249
FlagOptional = 1 << 3, //!< Parameter is optional
250+
FlagIsModelOutput = 1 << 4, //!< Destination parameter is final output. The parameter name will be used.
250251
};
251252
Q_DECLARE_FLAGS( Flags, Flag )
252253

‎src/core/processing/qgsprocessingregistry.cpp

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#include "qgsprocessingregistry.h"
1919
#include "qgsvectorfilewriter.h"
2020
#include "qgsprocessingparametertypeimpl.h"
21-
#include "qgsprocessingalgorithmconfigurationwidget.h"
2221

2322
QgsProcessingRegistry::QgsProcessingRegistry( QObject *parent SIP_TRANSFERTHIS )
2423
: QObject( parent )
@@ -189,28 +188,3 @@ QList<QgsProcessingParameterType *> QgsProcessingRegistry::parameterTypes() cons
189188
{
190189
return mParameterTypes.values();
191190
}
192-
193-
void QgsProcessingRegistry::addAlgorithmConfigurationWidgetFactory( QgsProcessingAlgorithmConfigurationWidgetFactory *factory )
194-
{
195-
mAlgorithmConfigurationWidgetFactories.append( factory );
196-
}
197-
198-
void QgsProcessingRegistry::removeAlgorithmConfigurationWidgetFactory( QgsProcessingAlgorithmConfigurationWidgetFactory *factory )
199-
{
200-
mAlgorithmConfigurationWidgetFactories.removeAll( factory );
201-
delete factory;
202-
}
203-
204-
QgsProcessingAlgorithmConfigurationWidget *QgsProcessingRegistry::algorithmConfigurationWidget( QgsProcessingAlgorithm *algorithm ) const
205-
{
206-
for ( const auto *factory : mAlgorithmConfigurationWidgetFactories )
207-
{
208-
if ( factory->canCreateFor( algorithm ) )
209-
{
210-
return factory->create( algorithm );
211-
}
212-
}
213-
214-
return nullptr;
215-
}
216-

‎src/core/processing/qgsprocessingregistry.h

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -169,30 +169,6 @@ class CORE_EXPORT QgsProcessingRegistry : public QObject
169169
*/
170170
QList<QgsProcessingParameterType *> parameterTypes() const;
171171

172-
/**
173-
* Add a new configuration widget factory for customized algorithm configuration
174-
* widgets. Ownership is taken.
175-
*
176-
* \since QGIS 3.2
177-
*/
178-
void addAlgorithmConfigurationWidgetFactory( QgsProcessingAlgorithmConfigurationWidgetFactory *factory SIP_TRANSFER );
179-
180-
/**
181-
* Remove a configuration widget factory for customized algorithm configuration
182-
* widgets.
183-
*
184-
* \since QGIS 3.2
185-
*/
186-
void removeAlgorithmConfigurationWidgetFactory( QgsProcessingAlgorithmConfigurationWidgetFactory *factory );
187-
188-
/**
189-
* @brief algorithmConfigurationWidget
190-
* @param algorithm
191-
* @return
192-
*/
193-
QgsProcessingAlgorithmConfigurationWidget *algorithmConfigurationWidget( QgsProcessingAlgorithm *algorithm ) const;
194-
195-
196172
signals:
197173

198174
//! Emitted when a provider has been added to the registry.
@@ -224,8 +200,6 @@ class CORE_EXPORT QgsProcessingRegistry : public QObject
224200
//! Hash of available parameter types by id. This object owns the pointers.
225201
QMap<QString, QgsProcessingParameterType *> mParameterTypes;
226202

227-
QList <QgsProcessingAlgorithmConfigurationWidgetFactory *> mAlgorithmConfigurationWidgetFactories;
228-
229203
#ifdef SIP_RUN
230204
QgsProcessingRegistry( const QgsProcessingRegistry &other );
231205
#endif

‎src/gui/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,10 @@ SET(QGIS_GUI_SRCS
192192
ogr/qgsnewogrconnection.cpp
193193
ogr/qgsvectorlayersaveasdialog.cpp
194194

195+
processing/qgsprocessingalgorithmconfigurationwidget.cpp
195196
processing/qgsprocessingalgorithmdialogbase.cpp
196197
processing/qgsprocessingconfigurationwidgets.cpp
198+
processing/qgsprocessingguiregistry.cpp
197199

198200
qgisinterface.cpp
199201
qgsactionmenu.cpp
@@ -710,8 +712,10 @@ SET(QGIS_GUI_MOC_HDRS
710712

711713
locator/qgslocatorwidget.h
712714

715+
processing/qgsprocessingalgorithmconfigurationwidget.h
713716
processing/qgsprocessingalgorithmdialogbase.h
714717
processing/qgsprocessingconfigurationwidgets.h
718+
processing/qgsprocessingguiregistry.h
715719
)
716720
SET_PROPERTY(GLOBAL PROPERTY QGIS_GUI_MOC_HDRS ${QGIS_GUI_MOC_HDRS})
717721

@@ -870,10 +874,11 @@ INCLUDE_DIRECTORIES(
870874
${CMAKE_SOURCE_DIR}/src/gui/auth
871875
${CMAKE_SOURCE_DIR}/src/gui/editorwidgets
872876
${CMAKE_SOURCE_DIR}/src/gui/editorwidgets/core
877+
${CMAKE_SOURCE_DIR}/src/gui/effects
873878
${CMAKE_SOURCE_DIR}/src/gui/layertree
874879
${CMAKE_SOURCE_DIR}/src/gui/layout
875-
${CMAKE_SOURCE_DIR}/src/gui/effects
876880
${CMAKE_SOURCE_DIR}/src/gui/ogr
881+
${CMAKE_SOURCE_DIR}/src/gui/processing
877882
${CMAKE_SOURCE_DIR}/src/core
878883
${CMAKE_SOURCE_DIR}/src/core/annotations
879884
${CMAKE_SOURCE_DIR}/src/core/auth

0 commit comments

Comments
 (0)
Please sign in to comment.