QGIS API Documentation  3.21.0-Master (909859188c)
qgsprocessingdxflayerswidgetwrapper.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsprocessingdxflayerswidgetwrapper.h
3  ---------------------
4  Date : September 2020
5  Copyright : (C) 2020 by Alexander bruy
6  Email : alexander dot bruy at gmail dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSPROCESSINGDXFLAYERSWIDGETWRAPPER_H
17 #define QGSPROCESSINGDXFLAYERSWIDGETWRAPPER_H
18 
19 #define SIP_NO_FILE
20 
21 #include "qgsprocessingcontext.h"
24 #include "qgsdxfexport.h"
25 
26 #include "ui_qgsprocessingdxflayerdetailswidgetbase.h"
27 
28 class QLineEdit;
29 class QToolButton;
30 
32 
33 class GUI_EXPORT QgsProcessingDxfLayerDetailsWidget : public QgsPanelWidget, private Ui::QgsProcessingDxfLayerDetailsWidget
34 {
35  public:
36  QgsProcessingDxfLayerDetailsWidget( const QVariant &value, QgsProject *project );
37 
38  QVariant value() const;
39 
40  QDialogButtonBox *buttonBox() { return mButtonBox; }
41 
42  private:
43  QgsVectorLayer *mLayer = nullptr;
44  QgsProcessingContext mContext;
45 };
46 
47 
48 class GUI_EXPORT QgsProcessingDxfLayersPanelWidget : public QgsProcessingMultipleSelectionPanelWidget
49 {
50  Q_OBJECT
51 
52  public:
53 
57  QgsProcessingDxfLayersPanelWidget(
58  const QVariant &value,
59  QgsProject *project,
60  QWidget *parent SIP_TRANSFERTHIS = nullptr );
61 
62  private slots:
63 
64  void configureLayer();
65 
66  private:
67  void setItemValue( QStandardItem *item, const QVariant &value );
68  QString titleForLayer( const QgsDxfExport::DxfLayer &layer );
69 
70  QgsProject *mProject = nullptr;
71  QgsProcessingContext mContext;
72 };
73 
74 
75 class GUI_EXPORT QgsProcessingDxfLayersWidget : public QWidget
76 {
77  Q_OBJECT
78 
79  public:
80 
81  QgsProcessingDxfLayersWidget( QWidget *parent = nullptr );
82 
83  QVariant value() const { return mValue; }
84  void setValue( const QVariant &value );
85 
86  void setProject( QgsProject *project );
87 
88  signals:
89 
90  void changed();
91 
92  private slots:
93 
94  void showDialog();
95 
96  private:
97 
98  void updateSummaryText();
99 
100  QLineEdit *mLineEdit = nullptr;
101  QToolButton *mToolButton = nullptr;
102 
103  QVariantList mValue;
104 
105  QgsProject *mProject = nullptr;
106 
107  friend class TestProcessingGui;
108 };
109 
110 
111 class GUI_EXPORT QgsProcessingDxfLayersWidgetWrapper : public QgsAbstractProcessingParameterWidgetWrapper, public QgsProcessingParameterWidgetFactoryInterface
112 {
113  Q_OBJECT
114 
115  public:
116 
117  QgsProcessingDxfLayersWidgetWrapper( const QgsProcessingParameterDefinition *parameter = nullptr,
118  QgsProcessingGui::WidgetType type = QgsProcessingGui::Standard, QWidget *parent = nullptr );
119 
120  // QgsProcessingParameterWidgetFactoryInterface
121  QString parameterType() const override;
123 
124  // QgsProcessingParameterWidgetWrapper interface
125  QWidget *createWidget() override SIP_FACTORY;
126  void setWidgetContext( const QgsProcessingParameterWidgetContext &context ) override;
127 
128  protected:
129 
130  void setWidgetValue( const QVariant &value, QgsProcessingContext &context ) override;
131  QVariant widgetValue() const override;
132 
133  QStringList compatibleParameterTypes() const override;
134  QStringList compatibleOutputTypes() const override;
135 
136  private:
137 
138  QgsProcessingDxfLayersWidget *mPanel = nullptr;
139 
140  friend class TestProcessingGui;
141 };
142 
144 
145 #endif // QGSPROCESSINGDXFLAYERSWIDGETWRAPPER_H
A widget wrapper for Processing parameter value widgets.
Base class for any widget that can be shown as a inline panel.
Contains information about the context in which a processing algorithm is executed.
WidgetType
Types of dialogs which Processing widgets can be created for.
@ Standard
Standard algorithm dialog.
Base class for the definition of processing parameters.
Contains settings which reflect the context in which a Processing parameter widget is shown,...
An interface for Processing widget wrapper factories.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition: qgsproject.h:101
Represents a vector layer which manages a vector based data sets.
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
#define SIP_FACTORY
Definition: qgis_sip.h:76
Layers and optional attribute index to split into multiple layers using attribute value as layer name...
Definition: qgsdxfexport.h:73