mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-04 00:04:03 -04:00
372 lines
13 KiB
C++
372 lines
13 KiB
C++
/***************************************************************************
|
|
qgsgui.h
|
|
--------
|
|
begin : May 2017
|
|
copyright : (C) 2017 by Nyall Dawson
|
|
email : nyall dot dawson at gmail dot com
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#ifndef QGSGUI_H
|
|
#define QGSGUI_H
|
|
|
|
#include "qgis_gui.h"
|
|
#include "qgis_sip.h"
|
|
#include <QWidget>
|
|
#include <memory>
|
|
|
|
class QgsSettingsRegistryGui;
|
|
class QgsEditorWidgetRegistry;
|
|
class QgsShortcutsManager;
|
|
class QgsLayerTreeEmbeddedWidgetRegistry;
|
|
class QgsMapLayerActionRegistry;
|
|
class QgsSourceSelectProviderRegistry;
|
|
class QgsNative;
|
|
class QgsLayoutItemGuiRegistry;
|
|
class QgsAnnotationItemGuiRegistry;
|
|
class QgsAdvancedDigitizingToolsRegistry;
|
|
class QgsWidgetStateHelper;
|
|
class QgsProcessingGuiRegistry;
|
|
class QgsProcessingFavoriteAlgorithmManager;
|
|
class QgsProcessingRecentAlgorithmLog;
|
|
class QgsWindowManagerInterface;
|
|
class QgsDataItemGuiProviderRegistry;
|
|
class QgsProviderGuiRegistry;
|
|
class QgsProjectStorageGuiRegistry;
|
|
class QgsNumericFormatGuiRegistry;
|
|
class QgsCodeEditorColorSchemeRegistry;
|
|
class QgsMessageBar;
|
|
class QgsSubsetStringEditorProviderRegistry;
|
|
class QgsProviderSourceWidgetProviderRegistry;
|
|
class QgsRelationWidgetRegistry;
|
|
class QgsMapToolShapeRegistry;
|
|
class QgsHistoryProviderRegistry;
|
|
class QgsSensorGuiRegistry;
|
|
class QgsSettingsEditorWidgetRegistry;
|
|
class QgsInputControllerManager;
|
|
|
|
/**
|
|
* \ingroup gui
|
|
* \brief QgsGui is a singleton class containing various registry and other global members
|
|
* related to GUI classes.
|
|
*/
|
|
class GUI_EXPORT QgsGui : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
/**
|
|
* Defines the behavior to use when setting the CRS for a newly created project.
|
|
*/
|
|
enum ProjectCrsBehavior
|
|
{
|
|
UseCrsOfFirstLayerAdded = 1, //!< Set the project CRS to the CRS of the first layer added to a new project
|
|
UsePresetCrs = 2, //!< Always set new projects to use a preset default CRS
|
|
};
|
|
Q_ENUM( ProjectCrsBehavior )
|
|
|
|
QgsGui( const QgsGui &other ) = delete;
|
|
QgsGui &operator=( const QgsGui &other ) = delete;
|
|
|
|
/**
|
|
* Returns a pointer to the singleton instance.
|
|
*/
|
|
static QgsGui *instance();
|
|
|
|
/**
|
|
* Returns the global native interface, which offers abstraction to the host OS's underlying public
|
|
* interfaces.
|
|
* \note Not available in Python bindings
|
|
*/
|
|
SIP_SKIP static QgsNative *nativePlatformInterface();
|
|
|
|
/**
|
|
* Returns the gui's settings registry, used for managing gui settings.
|
|
* \since QGIS 3.22
|
|
*/
|
|
static QgsSettingsRegistryGui *settingsRegistryGui() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the global editor widget registry, used for managing all known edit widget factories.
|
|
*/
|
|
static QgsEditorWidgetRegistry *editorWidgetRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the global source select provider registry, used for managing all known source select widget factories.
|
|
*/
|
|
static QgsSourceSelectProviderRegistry *sourceSelectProviderRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the global shortcuts manager, used for managing a QAction and QShortcut sequences.
|
|
*/
|
|
static QgsShortcutsManager *shortcutsManager();
|
|
|
|
/**
|
|
* Returns the global layer tree embedded widget registry, used for registering widgets that may be embedded into layer tree view.
|
|
*/
|
|
static QgsLayerTreeEmbeddedWidgetRegistry *layerTreeEmbeddedWidgetRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the global map layer action registry, used for registering map layer actions.
|
|
*/
|
|
static QgsMapLayerActionRegistry *mapLayerActionRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the global layout item GUI registry, used for registering the GUI behavior of layout items.
|
|
*/
|
|
static QgsLayoutItemGuiRegistry *layoutItemGuiRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the global annotation item GUI registry, used for registering the GUI behavior of annotation items.
|
|
*
|
|
* \since QGIS 3.22
|
|
*/
|
|
static QgsAnnotationItemGuiRegistry *annotationItemGuiRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the global advanced digitizing tools registry, used for registering advanced digitizing tools.
|
|
*
|
|
* \since QGIS 3.40
|
|
*/
|
|
static QgsAdvancedDigitizingToolsRegistry *advancedDigitizingToolsRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the global processing gui registry, used for registering the GUI behavior of processing algorithms.
|
|
* \since QGIS 3.2
|
|
*/
|
|
static QgsProcessingGuiRegistry *processingGuiRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the global numeric format gui registry, used for registering the GUI widgets associated with QgsNumericFormats.
|
|
* \since QGIS 3.12
|
|
*/
|
|
static QgsNumericFormatGuiRegistry *numericFormatGuiRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the global code editor color scheme registry, used for registering the color schemes for QgsCodeEditor widgets.
|
|
* \since QGIS 3.16
|
|
*/
|
|
static QgsCodeEditorColorSchemeRegistry *codeEditorColorSchemeRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the global processing recent algorithm log, used for tracking recently used processing algorithms.
|
|
* \since QGIS 3.4
|
|
*/
|
|
static QgsProcessingRecentAlgorithmLog *processingRecentAlgorithmLog();
|
|
|
|
/**
|
|
* Returns the global Processing favorite algorithm manager, used for tracking favorite Processing algorithms.
|
|
* \since QGIS 3.40
|
|
*/
|
|
static QgsProcessingFavoriteAlgorithmManager *processingFavoriteAlgorithmManager();
|
|
|
|
/**
|
|
* Returns the global data item GUI provider registry, used for tracking providers which affect the browser
|
|
* GUI.
|
|
* \since QGIS 3.6
|
|
*/
|
|
static QgsDataItemGuiProviderRegistry *dataItemGuiProviderRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the global GUI-related project storage registry
|
|
* \since QGIS 3.10
|
|
*/
|
|
static QgsProjectStorageGuiRegistry *projectStorageGuiRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the registry of GUI-related components of data providers
|
|
* \since QGIS 3.10
|
|
*/
|
|
static QgsProviderGuiRegistry *providerGuiRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the registry of GUI-related components for sensors
|
|
* \since QGIS 3.32
|
|
*/
|
|
static QgsSensorGuiRegistry *sensorGuiRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the registry of subset string editors of data providers
|
|
* \since QGIS 3.18
|
|
*/
|
|
static QgsSubsetStringEditorProviderRegistry *subsetStringEditorProviderRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the registry of provider source widget providers.
|
|
* \since QGIS 3.18
|
|
*/
|
|
static QgsProviderSourceWidgetProviderRegistry *sourceWidgetProviderRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the global relation widget registry, used for managing all known relation widget factories.
|
|
* \since QGIS 3.18
|
|
*/
|
|
static QgsRelationWidgetRegistry *relationWidgetRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the registry of shape map tools
|
|
* \note Not available in Python bindings
|
|
* \since QGIS 3.26
|
|
*/
|
|
static QgsMapToolShapeRegistry *mapToolShapeRegistry() SIP_SKIP;
|
|
|
|
/**
|
|
* Returns the global history provider registry, used for tracking history providers.
|
|
* \since QGIS 3.24
|
|
*/
|
|
static QgsHistoryProviderRegistry *historyProviderRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Returns the registry of settings editors.
|
|
* \since QGIS 3.32
|
|
*/
|
|
static QgsSettingsEditorWidgetRegistry *settingsEditorWidgetRegistry() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* Register the widget to allow its position to be automatically saved and restored when open and closed.
|
|
* Use this to avoid needing to call saveGeometry() and restoreGeometry() on your widget.
|
|
*/
|
|
static void enableAutoGeometryRestore( QWidget *widget, const QString &key = QString() );
|
|
|
|
/**
|
|
* Returns the global window manager, if set.
|
|
* \see setWindowManager()
|
|
* \since QGIS 3.4
|
|
*/
|
|
static QgsWindowManagerInterface *windowManager();
|
|
|
|
/**
|
|
* Sets the global window \a manager. Ownership is transferred to the QgsGui instance.
|
|
* \see windowManager()
|
|
* \since QGIS 3.4
|
|
*/
|
|
static void setWindowManager( QgsWindowManagerInterface *manager SIP_TRANSFER );
|
|
|
|
/**
|
|
* Returns the global input controller manager.
|
|
* \since QGIS 3.32
|
|
*/
|
|
static QgsInputControllerManager *inputControllerManager() SIP_KEEPREFERENCE;
|
|
|
|
/**
|
|
* HIG flags, which indicate the Human Interface Guidelines for the current platform.
|
|
* \since QGIS 3.4
|
|
*/
|
|
enum HigFlag SIP_ENUM_BASETYPE( IntFlag )
|
|
{
|
|
HigMenuTextIsTitleCase = 1 << 0, //!< Menu action texts should be title case
|
|
HigDialogTitleIsTitleCase = 1 << 1 //!< Dialog titles should be title case
|
|
};
|
|
Q_DECLARE_FLAGS( HigFlags, HigFlag )
|
|
|
|
/**
|
|
* Returns the platform's HIG flags.
|
|
* \since QGIS 3.4
|
|
*/
|
|
static QgsGui::HigFlags higFlags();
|
|
|
|
~QgsGui();
|
|
|
|
/**
|
|
* Samples the color on screen at the specified global \a point (pixel).
|
|
*
|
|
* \since QGIS 3.10
|
|
*/
|
|
static QColor sampleColor( QPoint point );
|
|
|
|
/**
|
|
* Returns the screen at the given global \a point (pixel).
|
|
*
|
|
* \since QGIS 3.10
|
|
*/
|
|
static QScreen *findScreenAt( QPoint point );
|
|
|
|
/**
|
|
* Returns TRUE if python macros are currently allowed to be run
|
|
* If the global option is to ask user, a modal dialog will be shown
|
|
* \param lambda a pointer to a lambda method. If specified, the dialog is not modal,
|
|
* a message is shown with a button to enable macro.
|
|
* The lambda will be run either if macros are currently allowed or if the user accepts the message.
|
|
* The \a messageBar must be given in such case.
|
|
* \param messageBar the message bar must be provided if a lambda method is used.
|
|
*/
|
|
static bool pythonMacroAllowed( void ( *lambda )() = nullptr, QgsMessageBar *messageBar = nullptr ) SIP_SKIP;
|
|
|
|
/**
|
|
* Initializes callout widgets.
|
|
*
|
|
* \note Not available in Python bindings
|
|
* \since QGIS 3.40
|
|
*/
|
|
static void initCalloutWidgets() SIP_SKIP;
|
|
|
|
///@cond PRIVATE
|
|
void emitOptionsChanged() SIP_SKIP;
|
|
///@endcond
|
|
|
|
signals:
|
|
|
|
/**
|
|
* This signal is emitted whenever the application options have been changed.
|
|
*
|
|
* This signal is a "blanket" signal, and will be emitted whenever the options dialog
|
|
* has been accepted regardless of whether or not individual settings are changed.
|
|
* It is designed as a "last resort" fallback only, allowing widgets to respond
|
|
* to possible settings changes.
|
|
*
|
|
* \since QGIS 3.16
|
|
*/
|
|
void optionsChanged();
|
|
|
|
private:
|
|
|
|
QgsGui();
|
|
|
|
QgsSettingsRegistryGui *mSettingsRegistryGui = nullptr;
|
|
QgsProviderGuiRegistry *mProviderGuiRegistry = nullptr;
|
|
QgsWidgetStateHelper *mWidgetStateHelper = nullptr;
|
|
QgsNative *mNative = nullptr;
|
|
QgsEditorWidgetRegistry *mEditorWidgetRegistry = nullptr;
|
|
QgsSourceSelectProviderRegistry *mSourceSelectProviderRegistry = nullptr;
|
|
QgsShortcutsManager *mShortcutsManager = nullptr;
|
|
QgsLayerTreeEmbeddedWidgetRegistry *mLayerTreeEmbeddedWidgetRegistry = nullptr;
|
|
QgsMapLayerActionRegistry *mMapLayerActionRegistry = nullptr;
|
|
QgsLayoutItemGuiRegistry *mLayoutItemGuiRegistry = nullptr;
|
|
QgsAnnotationItemGuiRegistry *mAnnotationItemGuiRegistry = nullptr;
|
|
QgsAdvancedDigitizingToolsRegistry *mAdvancedDigitizingToolsRegistry = nullptr;
|
|
QgsProcessingGuiRegistry *mProcessingGuiRegistry = nullptr;
|
|
QgsProcessingFavoriteAlgorithmManager *mProcessingFavoriteAlgorithmManager = nullptr;
|
|
QgsProcessingRecentAlgorithmLog *mProcessingRecentAlgorithmLog = nullptr;
|
|
QgsNumericFormatGuiRegistry *mNumericFormatGuiRegistry = nullptr;
|
|
QgsDataItemGuiProviderRegistry *mDataItemGuiProviderRegistry = nullptr;
|
|
QgsCodeEditorColorSchemeRegistry *mCodeEditorColorSchemeRegistry = nullptr;
|
|
QgsProjectStorageGuiRegistry *mProjectStorageGuiRegistry = nullptr;
|
|
QgsSubsetStringEditorProviderRegistry *mSubsetStringEditorProviderRegistry = nullptr;
|
|
QgsProviderSourceWidgetProviderRegistry *mProviderSourceWidgetProviderRegistry = nullptr;
|
|
QgsRelationWidgetRegistry *mRelationEditorRegistry = nullptr;
|
|
QgsMapToolShapeRegistry *mShapeMapToolRegistry = nullptr;
|
|
QgsHistoryProviderRegistry *mHistoryProviderRegistry = nullptr;
|
|
QgsSensorGuiRegistry *mSensorGuiRegistry = nullptr;
|
|
QgsSettingsEditorWidgetRegistry *mSettingsEditorRegistry = nullptr;
|
|
QgsInputControllerManager *mInputControllerManager = nullptr;
|
|
std::unique_ptr< QgsWindowManagerInterface > mWindowManager;
|
|
|
|
#ifdef SIP_RUN
|
|
QgsGui( const QgsGui &other );
|
|
#endif
|
|
|
|
};
|
|
|
|
Q_DECLARE_OPERATORS_FOR_FLAGS( QgsGui::HigFlags )
|
|
|
|
#endif // QGSGUI_H
|