QGIS API Documentation 3.40.0-Bratislava (b56115d8743)
Loading...
Searching...
No Matches
qgsdatasourceselectdialog.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsdatasourceselectdialog.h - QgsDataSourceSelectDialog
3
4 ---------------------
5 begin : 1.11.2018
6 copyright : (C) 2018 by Alessandro Pasotti
8 ***************************************************************************
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 ***************************************************************************/
16#ifndef QGSDATASOURCESELECTDIALOG_H
17#define QGSDATASOURCESELECTDIALOG_H
18
19#include "ui_qgsdatasourceselectdialog.h"
20
21#include "qgis_gui.h"
22#include "qgis.h"
23#include "qgsmimedatautils.h"
24#include "qgsbrowserguimodel.h"
26
27#include <QObject>
28#include <QLabel>
29#include <QDialog>
30
46class GUI_EXPORT QgsDataSourceSelectWidget: public QgsPanelWidget, private Ui::QgsDataSourceSelectDialog
47{
48 Q_OBJECT
49 public:
50
59 QgsDataSourceSelectWidget( QgsBrowserGuiModel *browserModel = nullptr,
60 bool setFilterByLayerType = false,
62 QWidget *parent = nullptr );
63
64
66
70 void setLayerTypeFilter( Qgis::LayerType layerType );
71
78 void setDescription( const QString &description );
79
89 void expandPath( const QString &path, bool selectPath = false );
90
94 QgsMimeDataUtils::Uri uri() const;
95
97 void showFilterWidget( bool visible );
99 void setFilterSyntax( QAction * );
101 void setCaseSensitive( bool caseSensitive );
103 void setFilter();
105 void showEvent( QShowEvent *e ) override;
106
107 void dragEnterEvent( QDragEnterEvent *event ) override;
108 void dropEvent( QDropEvent *event ) override;
109
110 signals:
111
117 void validationChanged( bool isValid );
118
123
128
129 private slots:
130
132 void onLayerSelected( const QModelIndex &index );
133
134 void itemDoubleClicked( const QModelIndex &index );
135
136 private:
137
139 void refreshModel( const QModelIndex &index );
140
141 void setValid( bool valid );
142
144 QString acceptableFilePath( QDropEvent *event ) const;
145
146 QgsBrowserProxyModel mBrowserProxyModel;
147 QgsBrowserGuiModel *mBrowserModel = nullptr;
149 QLabel *mDescriptionLabel = nullptr;
150 bool mIsValid = true;
151};
152
153
169class GUI_EXPORT QgsDataSourceSelectDialog: public QDialog
170{
171 Q_OBJECT
172
173 public:
174
183 QgsDataSourceSelectDialog( QgsBrowserGuiModel *browserModel = nullptr,
184 bool setFilterByLayerType = false,
186 QWidget *parent = nullptr );
187
191 void setLayerTypeFilter( Qgis::LayerType layerType );
192
199 void setDescription( const QString &description );
200
210 void expandPath( const QString &path, bool selectPath = false );
211
215 QgsMimeDataUtils::Uri uri() const;
216
218 void showFilterWidget( bool visible );
220 void setFilterSyntax( QAction * );
222 void setCaseSensitive( bool caseSensitive );
224 void setFilter();
225
226 private:
227
228 QgsDataSourceSelectWidget *mWidget = nullptr;
229
230};
231
232#endif // QGSDATASOURCESELECTDIALOG_H
LayerType
Types of layers that can be added to a map.
Definition qgis.h:169
@ Vector
Vector layer.
A model for showing available data sources and other items in a structured tree.
A QSortFilterProxyModel subclass for filtering and sorting browser model items.
The QgsDataSourceSelectDialog class embeds the browser view to select an existing data source.
The QgsDataSourceSelectWidget class embeds the browser view to select an existing data source.
void selectionChanged()
Emitted when the current selection changes in the widget.
void itemTriggered(const QgsMimeDataUtils::Uri &uri)
Emitted when an item is triggered, e.g.
void validationChanged(bool isValid)
This signal is emitted whenever the validation status of the widget changes.
~QgsDataSourceSelectWidget() override
Base class for any widget that can be shown as a inline panel.