QGIS API Documentation 4.1.0-Master (5bf3c20f3c9)
Loading...
Searching...
No Matches
qgsoptionsdialogbase.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsoptionsdialogbase.h - base vertical tabs option dialog
3
4 ---------------------
5 begin : March 24, 2013
6 copyright : (C) 2013 by Larry Shaffer
7 email : larrys at dakcarto dot com
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
17#ifndef QGSOPTIONSDIALOGBASE_H
18#define QGSOPTIONSDIALOGBASE_H
19
20#include <functional>
21
22#include "qgis_gui.h"
23#include "qgsguiutils.h"
24#include "qgssettings.h"
25
26#include <QDialog>
27#include <QPointer>
28#include <QSortFilterProxyModel>
29#include <QStyledItemDelegate>
30
31class QDialogButtonBox;
32class QListWidget;
33class QModelIndex;
34class QPalette;
35class QPainter;
36class QStackedWidget;
37class QStyleOptionViewItem;
38class QSplitter;
39class QStandardItem;
40class QTreeView;
41class QStandardItemModel;
42
45
46#ifndef SIP_RUN
48class GUI_EXPORT QgsOptionsProxyModel : public QSortFilterProxyModel
49{
50 Q_OBJECT
51 public:
52 QgsOptionsProxyModel( QObject *parent );
53
54 void setPageHidden( int page, bool hidden );
55 QModelIndex pageNumberToSourceIndex( int page ) const;
56 int sourceIndexToPageNumber( const QModelIndex &index ) const;
57 bool filterAcceptsRow( int source_row, const QModelIndex &source_parent ) const override;
58
59 private:
60 QMap<int, bool> mHiddenPages;
61};
63#endif
64
65
85
86class GUI_EXPORT QgsOptionsDialogBase : public QDialog
87{
88 Q_OBJECT
89
90 public:
98 QgsOptionsDialogBase( const QString &settingsKey, QWidget *parent SIP_TRANSFERTHIS = nullptr, Qt::WindowFlags fl = Qt::WindowFlags(), QgsSettings *settings = nullptr );
99 ~QgsOptionsDialogBase() override;
100
106 void initOptionsBase( bool restoreUi = true, const QString &title = QString() );
107
108 // set custom QgsSettings pointer if dialog used outside QGIS (in plugin)
109 void setSettings( QgsSettings *settings );
110
116 void restoreOptionsBaseUi( const QString &title = QString() );
117
123 void restoreLastPage();
124
130 void resizeAlltabs( int index );
131
135 bool iconOnly() const { return mIconOnly; }
136
142 void setCurrentPage( const QString &page );
143
160 void addPage( const QString &title, const QString &tooltip, const QIcon &icon, QWidget *widget SIP_TRANSFER, const QStringList &path = QStringList(), const QString &key = QString() );
161
181 void insertPage(
182 const QString &title, const QString &tooltip, const QIcon &icon, QWidget *widget SIP_TRANSFER, const QString &before, const QStringList &path = QStringList(), const QString &key = QString()
183 );
184
185 public slots:
186
191 void searchText( const QString &text );
192
193 protected slots:
195 virtual void updateOptionsListVerticalTabs();
197 virtual void optionsStackedWidget_CurrentChanged( int index );
199 virtual void optionsStackedWidget_WidgetRemoved( int index );
200
201 void warnAboutMissingObjects();
202
203 protected:
204 void showEvent( QShowEvent *e ) override;
205 void paintEvent( QPaintEvent *e ) override;
206
207 virtual void updateWindowTitle();
208
213 void registerTextSearchWidgets();
214
220 QStandardItem *createItem( const QString &name, const QString &tooltip, const QString &icon ) SIP_SKIP;
221
222 QList<QPair<QgsOptionsDialogHighlightWidget *, int>> mRegisteredSearchWidgets;
223
224 QString mOptsKey;
225 bool mInit = false;
226 QListWidget *mOptListWidget = nullptr;
227 QTreeView *mOptTreeView = nullptr;
228 QStandardItemModel *mOptTreeModel = nullptr;
229 QgsOptionsProxyModel *mTreeProxyModel = nullptr;
230
231 QStackedWidget *mOptStackedWidget = nullptr;
232 QSplitter *mOptSplitter = nullptr;
233 QDialogButtonBox *mOptButtonBox = nullptr;
236 bool mIconOnly = false;
237 // pointer to app or custom, external QgsSettings
238 // QPointer in case custom settings obj gets deleted while dialog is open
239 QPointer<QgsSettings> mSettings;
240 bool mDelSettings = false;
241
242 private:
243 void setListToItemAtIndex( int index );
244};
245
246#endif // QGSOPTIONSDIALOGBASE_H
QLineEdit subclass with built in support for clearing the widget's value and handling custom null val...
QPointer< QgsSettings > mSettings
void resizeAlltabs(int index)
Resizes all tabs when the dialog is resized.
void restoreLastPage()
Refocus the active tab from the last time the dialog was shown.
QList< QPair< QgsOptionsDialogHighlightWidget *, int > > mRegisteredSearchWidgets
QgsOptionsDialogBase(const QString &settingsKey, QWidget *parent=nullptr, Qt::WindowFlags fl=Qt::WindowFlags(), QgsSettings *settings=nullptr)
Constructor.
QgsFilterLineEdit * mSearchLineEdit
void setSettings(QgsSettings *settings)
QDialogButtonBox * mOptButtonBox
QgsOptionsProxyModel * mTreeProxyModel
QStandardItemModel * mOptTreeModel
void restoreOptionsBaseUi(const QString &title=QString())
Restore the base ui.
QStackedWidget * mOptStackedWidget
void initOptionsBase(bool restoreUi=true, const QString &title=QString())
Set up the base ui connections for vertical tabs.
bool iconOnly() const
Determine if the options list is in icon only mode.
Container for a widget to be used to search text in the option dialog.
Stores settings for use within QGIS.
Definition qgssettings.h:68
#define SIP_TRANSFERTHIS
Definition qgis_sip.h:52
#define SIP_SKIP
Definition qgis_sip.h:133
#define SIP_TRANSFER
Definition qgis_sip.h:35