mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-09 00:08:52 -04:00
596 lines
17 KiB
Plaintext
596 lines
17 KiB
Plaintext
/************************************************************************
|
||
* This file has been generated automatically from *
|
||
* *
|
||
* src/core/browser/qgsdataitem.h *
|
||
* *
|
||
* Do not edit manually ! Edit header and run scripts/sipify.py again *
|
||
************************************************************************/
|
||
|
||
|
||
|
||
|
||
|
||
|
||
class QgsDataItem : QObject
|
||
{
|
||
%Docstring(signature="appended")
|
||
Base class for all items in the model.
|
||
|
||
Parent/children hierarchy is not based on QObject.
|
||
%End
|
||
|
||
%TypeHeaderCode
|
||
#include "qgsdataitem.h"
|
||
#include "qgslayeritem.h"
|
||
#include "qgsdirectoryitem.h"
|
||
#include "qgsfavoritesitem.h"
|
||
#include "qgszipitem.h"
|
||
#include "qgsdatacollectionitem.h"
|
||
#include "qgsprojectitem.h"
|
||
%End
|
||
%ConvertToSubClassCode
|
||
if ( qobject_cast<QgsLayerItem *>( sipCpp ) )
|
||
sipType = sipType_QgsLayerItem;
|
||
else if ( qobject_cast<QgsErrorItem *>( sipCpp ) )
|
||
sipType = sipType_QgsErrorItem;
|
||
else if ( qobject_cast<QgsDirectoryItem *>( sipCpp ) )
|
||
sipType = sipType_QgsDirectoryItem;
|
||
else if ( qobject_cast<QgsFavoritesItem *>( sipCpp ) )
|
||
sipType = sipType_QgsFavoritesItem;
|
||
else if ( qobject_cast<QgsZipItem *>( sipCpp ) )
|
||
sipType = sipType_QgsZipItem;
|
||
else if ( qobject_cast<QgsDataCollectionItem *>( sipCpp ) )
|
||
sipType = sipType_QgsDataCollectionItem;
|
||
else if ( qobject_cast<QgsProjectItem *>( sipCpp ) )
|
||
sipType = sipType_QgsProjectItem;
|
||
else
|
||
sipType = 0;
|
||
%End
|
||
public:
|
||
|
||
QgsDataItem( Qgis::BrowserItemType type, QgsDataItem *parent /TransferThis/, const QString &name, const QString &path, const QString &providerKey = QString() );
|
||
%Docstring
|
||
Constructor for QgsDataItem, with the specified ``parent`` item.
|
||
|
||
The ``name`` argument specifies the text to show in the model for the
|
||
item. A translated string should be used wherever appropriate.
|
||
|
||
The ``path`` argument gives the item path in the browser tree. The
|
||
``path`` string can take any form, but QgsDataItem items pointing to
|
||
different logical locations should always use a different item ``path``.
|
||
|
||
The optional ``providerKey`` string (added in QGIS 3.12) can be used to
|
||
specify the key for the :py:class:`QgsDataItemProvider` that created
|
||
this item.
|
||
%End
|
||
|
||
~QgsDataItem();
|
||
|
||
SIP_PYOBJECT __repr__();
|
||
%MethodCode
|
||
QString str = QStringLiteral( "<QgsDataItem: \"%1\" %2>" ).arg( sipCpp->name(), sipCpp->path() );
|
||
sipRes = PyUnicode_FromString( str.toUtf8().constData() );
|
||
%End
|
||
|
||
bool hasChildren();
|
||
|
||
virtual bool layerCollection() const;
|
||
%Docstring
|
||
Returns ``True`` if the data item is a collection of layers The default
|
||
implementation returns ``False``, subclasses must implement this method
|
||
if their children are layers.
|
||
|
||
.. versionadded:: 3.14
|
||
%End
|
||
|
||
int rowCount();
|
||
|
||
virtual QVector<QgsDataItem *> createChildren() /TransferBack/;
|
||
%Docstring
|
||
Create children. Children are not expected to have parent set.
|
||
|
||
.. warning::
|
||
|
||
This method MUST BE THREAD SAFE.
|
||
%End
|
||
%VirtualCatcherCode
|
||
PyObject *sipResObj = sipCallMethod( 0, sipMethod, "" );
|
||
// H = Convert a Python object to a mapped type instance.
|
||
// 5 = 1 (disallows the conversion of Py_None to NULL) + 4 (returns a copy of the C/C++ instance)
|
||
sipIsErr = !sipResObj || sipParseResult( 0, sipMethod, sipResObj, "H5", sipType_QVector_0101QgsDataItem, &sipRes ) < 0;
|
||
if ( !sipIsErr )
|
||
{
|
||
for ( QgsDataItem *item : sipRes )
|
||
{
|
||
PyObject *pyItem = sipGetPyObject( item, sipType_QgsDataItem );
|
||
if ( pyItem != NULL )
|
||
{
|
||
// pyItem is given an extra reference which is removed when the C++ instance’s destructor is called.
|
||
sipTransferTo( pyItem, Py_None );
|
||
}
|
||
}
|
||
}
|
||
if ( sipResObj != NULL )
|
||
{
|
||
Py_DECREF( sipResObj );
|
||
}
|
||
%End
|
||
|
||
Qgis::BrowserItemState state() const;
|
||
|
||
virtual void setState( Qgis::BrowserItemState state );
|
||
%Docstring
|
||
Set item state. It also take care about starting/stopping loading icon
|
||
animation.
|
||
|
||
:param state:
|
||
%End
|
||
|
||
virtual void addChildItem( QgsDataItem *child /Transfer/, bool refresh = false );
|
||
%Docstring
|
||
Inserts a new child item. The child will be inserted at a position using
|
||
an alphabetical order based on mName.
|
||
|
||
:param child: child item to insert. Ownership is transferred, and item
|
||
parent will be set and relevant connections made.
|
||
:param refresh: set to ``True`` to refresh populated item, emitting
|
||
relevant signals to the model
|
||
|
||
.. seealso:: :py:func:`deleteChildItem`
|
||
%End
|
||
|
||
virtual void deleteChildItem( QgsDataItem *child );
|
||
%Docstring
|
||
Removes and deletes a child item, emitting relevant signals to the
|
||
model.
|
||
|
||
:param child: child to remove. Item must exist as a current child.
|
||
|
||
.. seealso:: :py:func:`addChildItem`
|
||
%End
|
||
|
||
virtual QgsDataItem *removeChildItem( QgsDataItem *child ) /TransferBack/;
|
||
%Docstring
|
||
Removes a child item and returns it without deleting it. Emits relevant
|
||
signals to model as required.
|
||
|
||
:param child: child to remove
|
||
|
||
:return: pointer to the removed item or ``None`` if no such item was
|
||
found
|
||
%End
|
||
|
||
virtual bool equal( const QgsDataItem *other );
|
||
%Docstring
|
||
Returns ``True`` if this item is equal to another item (by testing item
|
||
type and path).
|
||
%End
|
||
|
||
virtual QWidget *paramWidget() /Factory,Deprecated="Since 3.10. "/;
|
||
%Docstring
|
||
Returns source widget from data item for
|
||
:py:class:`QgsBrowserPropertiesWidget`
|
||
|
||
Use :py:func:`QgsDataItemGuiProvider.createParamWidget()` instead
|
||
|
||
.. deprecated:: 3.10
|
||
%End
|
||
|
||
virtual QList<QAction *> actions( QWidget *parent );
|
||
%Docstring
|
||
Returns the list of actions available for this item. This is usually
|
||
used for the popup menu on right-clicking the item. Subclasses should
|
||
override this to provide actions.
|
||
|
||
Subclasses should ensure that ownership of created actions is correctly
|
||
handled by parenting them to the specified parent widget.
|
||
%End
|
||
|
||
virtual QList<QMenu *> menus( QWidget *parent );
|
||
%Docstring
|
||
Returns the list of menus available for this item. This is usually used
|
||
for the popup menu on right-clicking the item. Subclasses should
|
||
override this to provide actions. Subclasses should ensure that
|
||
ownership of created menus is correctly handled by parenting them to the
|
||
specified parent widget.
|
||
|
||
:param parent: a parent widget of the menu
|
||
|
||
:return: list of menus
|
||
%End
|
||
|
||
virtual bool acceptDrop() /Deprecated="Since 3.10. "/;
|
||
%Docstring
|
||
Returns whether the item accepts drag and dropped layers - e.g. for
|
||
importing a dataset to a provider. Subclasses should override this and
|
||
:py:func:`~QgsDataItem.handleDrop` to accept dropped layers.
|
||
|
||
.. seealso:: :py:func:`handleDrop`
|
||
|
||
.. seealso:: :py:func:`QgsDataItemGuiProvider.handleDrop`
|
||
|
||
.. deprecated:: 3.10
|
||
%End
|
||
|
||
|
||
virtual bool handleDrop( const QMimeData * /*data*/, Qt::DropAction /*action*/ ) /Deprecated="Since 3.10. "/;
|
||
%Docstring
|
||
Attempts to process the mime data dropped on this item. Subclasses must
|
||
override this and :py:func:`~QgsDataItem.acceptDrop` if they accept
|
||
dropped layers.
|
||
|
||
.. seealso:: :py:func:`acceptDrop`
|
||
|
||
.. seealso:: :py:func:`QgsDataItemGuiProvider.handleDrop`
|
||
|
||
.. deprecated:: 3.10
|
||
%End
|
||
|
||
virtual bool handleDoubleClick();
|
||
%Docstring
|
||
Called when a user double clicks on the item. Subclasses should return
|
||
``True`` if they have implemented a double-click handler and do not want
|
||
the default double-click behavior for items.
|
||
%End
|
||
|
||
virtual bool hasDragEnabled() const;
|
||
%Docstring
|
||
Returns ``True`` if the item may be dragged. Default implementation
|
||
returns ``False``. A draggable item has to implement
|
||
:py:func:`~QgsDataItem.mimeUris` that will be used to pass data.
|
||
|
||
.. seealso:: :py:func:`mimeUris`
|
||
%End
|
||
|
||
virtual QgsMimeDataUtils::Uri mimeUri() const /Deprecated="Since 3.18. Use mimeUris() instead."/;
|
||
%Docstring
|
||
Returns mime URI for the data item. Items that return valid URI will be
|
||
returned in mime data when dragging a selection from browser model.
|
||
|
||
.. seealso:: :py:func:`hasDragEnabled`
|
||
|
||
.. deprecated:: 3.18
|
||
|
||
Use :py:func:`~QgsDataItem.mimeUris` instead.
|
||
%End
|
||
|
||
virtual QgsMimeDataUtils::UriList mimeUris() const;
|
||
%Docstring
|
||
Returns mime URIs for the data item, most data providers will only
|
||
return a single URI but some data collection items (e.g. GPKG, OGR) may
|
||
report multiple URIs (e.g. for vector and raster layer types).
|
||
|
||
Items that return valid URI will be returned in mime data when dragging
|
||
a selection from browser model.
|
||
|
||
.. versionadded:: 3.18
|
||
%End
|
||
|
||
virtual bool setCrs( const QgsCoordinateReferenceSystem &crs ) /Deprecated="Since 3.6. This method is no longer used by QGIS and will be removed in QGIS 4.0."/;
|
||
%Docstring
|
||
Writes the selected crs into data source. The original data source will
|
||
be modified when calling this method.
|
||
|
||
.. deprecated:: 3.6
|
||
|
||
This method is no longer used by QGIS and will be removed in QGIS 4.0.
|
||
%End
|
||
|
||
virtual bool rename( const QString &name ) /Deprecated="Since 3.10. "/;
|
||
%Docstring
|
||
Sets a new ``name`` for the item, and returns ``True`` if the item was
|
||
successfully renamed.
|
||
|
||
Items which implement this method should return the QgsDataItem.Rename
|
||
capability.
|
||
|
||
The default implementation does nothing.
|
||
|
||
Use :py:class:`QgsDataItemGuiProvider`:
|
||
|
||
.. versionadded:: 3.4
|
||
|
||
.. deprecated:: 3.10
|
||
%End
|
||
|
||
|
||
virtual Qgis::BrowserItemCapabilities capabilities2() const;
|
||
%Docstring
|
||
Returns the capabilities for the data item.
|
||
|
||
.. seealso:: :py:func:`setCapabilities`
|
||
%End
|
||
|
||
virtual void setCapabilities( Qgis::BrowserItemCapabilities capabilities ) /PyName=setCapabilitiesV2/;
|
||
%Docstring
|
||
Sets the capabilities for the data item.
|
||
|
||
.. seealso:: :py:func:`capabilities2`
|
||
%End
|
||
|
||
void setCapabilities( int capabilities ) /Deprecated="Since 3.40. Use setCapabilitiesV2() instead."/;
|
||
%Docstring
|
||
.. deprecated:: 3.40
|
||
|
||
Use :py:func:`~QgsDataItem.setCapabilitiesV2` instead.
|
||
%End
|
||
|
||
|
||
static int findItem( QVector<QgsDataItem *> items, QgsDataItem *item );
|
||
|
||
|
||
|
||
Qgis::BrowserItemType type() const;
|
||
|
||
QgsDataItem *parent() const;
|
||
%Docstring
|
||
Gets item parent. QgsDataItem maintains its own items hierarchy, it does
|
||
not use QObject hierarchy.
|
||
%End
|
||
|
||
void setParent( QgsDataItem *parent );
|
||
%Docstring
|
||
Set item parent and connect / disconnect parent to / from item signals.
|
||
It does not add itself to parents children (mChildren)
|
||
%End
|
||
QVector<QgsDataItem *> children() const;
|
||
virtual QIcon icon();
|
||
|
||
QString name() const;
|
||
%Docstring
|
||
Returns the name of the item (the displayed text for the item).
|
||
|
||
.. seealso:: :py:func:`setName`
|
||
%End
|
||
|
||
void setName( const QString &name );
|
||
%Docstring
|
||
Sets the ``name`` of the item (the displayed text for the item).
|
||
|
||
.. seealso:: :py:func:`name`
|
||
%End
|
||
|
||
QString path() const;
|
||
void setPath( const QString &path );
|
||
|
||
QString providerKey() const;
|
||
%Docstring
|
||
Returns the provider key that created this item (e.g. "PostGIS")
|
||
|
||
If key has a prefix "special:", it marks that the item was not created
|
||
with a provider, but manually. For example "special:Favorites",
|
||
"special:Home"
|
||
|
||
.. versionadded:: 3.12
|
||
%End
|
||
|
||
void setProviderKey( const QString &value );
|
||
%Docstring
|
||
Sets the provider key that created this item (e.g. "PostGIS")
|
||
|
||
If key has a prefix "special:", it marks that the item was not created
|
||
with a provider, but manually. For example "special:Favorites"
|
||
|
||
.. versionadded:: 3.12
|
||
%End
|
||
|
||
static QString pathComponent( const QString &component );
|
||
%Docstring
|
||
Create path component replacing path separators
|
||
%End
|
||
|
||
virtual QVariant sortKey() const;
|
||
%Docstring
|
||
Returns the sorting key for the item. By default
|
||
:py:func:`~QgsDataItem.name` is returned, but
|
||
:py:func:`~QgsDataItem.setSortKey` can be used to set a custom sort key
|
||
for the item.
|
||
|
||
Alternatively subclasses can override this method to return a custom
|
||
sort key.
|
||
|
||
.. seealso:: :py:func:`setSortKey`
|
||
%End
|
||
|
||
void setSortKey( const QVariant &key );
|
||
%Docstring
|
||
Sets a custom sorting ``key`` for the item.
|
||
|
||
.. seealso:: :py:func:`sortKey`
|
||
%End
|
||
|
||
|
||
void setIcon( const QIcon &icon );
|
||
void setIconName( const QString &iconName );
|
||
|
||
void setToolTip( const QString &msg );
|
||
QString toolTip() const;
|
||
|
||
static void deleteLater( QVector<QgsDataItem *> &items );
|
||
|
||
void moveToThread( QThread *targetThread );
|
||
%Docstring
|
||
Move object and all its descendants to thread
|
||
%End
|
||
|
||
virtual QgsAbstractDatabaseProviderConnection *databaseConnection() const /Factory/;
|
||
%Docstring
|
||
For data items that represent a DB connection or one of its children,
|
||
this method returns a connection. All other data items will return NULL.
|
||
|
||
Ownership of the returned objects is transferred to the caller.
|
||
|
||
.. versionadded:: 3.16
|
||
%End
|
||
|
||
protected:
|
||
virtual void populate( const QVector<QgsDataItem *> &children );
|
||
|
||
virtual void refresh( const QVector<QgsDataItem *> &children );
|
||
%Docstring
|
||
Refresh the items from a specified list of child items.
|
||
%End
|
||
|
||
bool deferredDelete();
|
||
%Docstring
|
||
The item is scheduled to be deleted. E.g. if
|
||
:py:func:`~QgsDataItem.deleteLater` is called when item is in Populating
|
||
state (:py:func:`~QgsDataItem.createChildren` running in another
|
||
thread), the :py:func:`~QgsDataItem.deferredDelete` returns ``True`` and
|
||
item will be deleted once Populating finished. Items with slow
|
||
:py:func:`~QgsDataItem.reateChildren` (for example network or database
|
||
based) may check during :py:func:`~QgsDataItem.createChildren` if
|
||
:py:func:`~QgsDataItem.deferredDelete` returns ``True`` and return from
|
||
:py:func:`~QgsDataItem.createChildren` immediately because result will
|
||
be useless.
|
||
%End
|
||
|
||
|
||
|
||
public slots:
|
||
|
||
virtual void deleteLater();
|
||
%Docstring
|
||
Safely delete the item:
|
||
|
||
- disconnects parent
|
||
- unsets parent (but does not remove itself)
|
||
- deletes all its descendants recursively
|
||
- waits until Populating state (:py:func:`~QgsDataItem.createChildren`
|
||
in thread) finished without blocking main thread
|
||
- calls QObject.deleteLater()
|
||
%End
|
||
|
||
virtual void populate( bool foreground = false );
|
||
|
||
virtual void depopulate();
|
||
%Docstring
|
||
Remove children recursively and set as not populated. This is used when
|
||
refreshing collapsed items.
|
||
%End
|
||
|
||
virtual void refresh();
|
||
|
||
virtual void refreshConnections( const QString &providerKey = QString() );
|
||
%Docstring
|
||
Causes a data item provider to refresh all registered connections.
|
||
|
||
If ``providerKey`` is specified then only the matching provider will be
|
||
refreshed. Otherwise, all providers will be refreshed (which is
|
||
potentially very expensive!).
|
||
%End
|
||
|
||
virtual void childrenCreated();
|
||
|
||
signals:
|
||
|
||
void beginInsertItems( QgsDataItem *parent, int first, int last );
|
||
%Docstring
|
||
Emitted before child items are added to this data item.
|
||
|
||
This signal *must* be followed by
|
||
:py:func:`~QgsDataItem.endInsertItems`.
|
||
|
||
:param parent: the parent item having children added, will always be
|
||
this object
|
||
:param first: index of first child item to be added
|
||
:param last: index last child item, after the addition has occurred
|
||
|
||
.. seealso:: :py:func:`endInsertItems`
|
||
%End
|
||
|
||
void endInsertItems();
|
||
%Docstring
|
||
Emitted after child items have been added to this data item.
|
||
|
||
This signal will always be preceded by
|
||
:py:func:`~QgsDataItem.beginInsertItems`.
|
||
|
||
.. seealso:: :py:func:`beginInsertItems`
|
||
%End
|
||
|
||
void beginRemoveItems( QgsDataItem *parent, int first, int last );
|
||
%Docstring
|
||
Emitted before child items are removed from this data item.
|
||
|
||
This signal *must* be followed by
|
||
:py:func:`~QgsDataItem.endRemoveItems`.
|
||
|
||
:param parent: the parent item having children removed, will always be
|
||
this object
|
||
:param first: index of first child item to be removed
|
||
:param last: index of the last child item to be removed
|
||
|
||
.. seealso:: :py:func:`endRemoveItems`
|
||
%End
|
||
|
||
void endRemoveItems();
|
||
%Docstring
|
||
Emitted after child items have been removed from this data item.
|
||
|
||
This signal will always be preceded by
|
||
:py:func:`~QgsDataItem.beginRemoveItems`.
|
||
|
||
.. seealso:: :py:func:`beginRemoveItems`
|
||
%End
|
||
|
||
void dataChanged( QgsDataItem *item );
|
||
%Docstring
|
||
Emitted when data changes for an ``item``.
|
||
%End
|
||
|
||
void stateChanged( QgsDataItem *item, Qgis::BrowserItemState oldState );
|
||
%Docstring
|
||
Emitted when an item's state is changed.
|
||
%End
|
||
|
||
void connectionsChanged( const QString &providerKey = QString() );
|
||
%Docstring
|
||
Emitted when the connections of the provider with the specified
|
||
``providerKey`` have changed.
|
||
|
||
This signal is normally forwarded to the app in order to refresh the
|
||
connection item in the provider dialogs and to refresh the connection
|
||
items in the other open browsers.
|
||
%End
|
||
|
||
protected slots:
|
||
|
||
void updateIcon();
|
||
%Docstring
|
||
Will request a repaint of this icon.
|
||
%End
|
||
|
||
};
|
||
|
||
class QgsErrorItem : QgsDataItem
|
||
{
|
||
%Docstring(signature="appended")
|
||
A browser item that can be used to report problems (e.g. network error).
|
||
%End
|
||
|
||
%TypeHeaderCode
|
||
#include "qgsdataitem.h"
|
||
%End
|
||
public:
|
||
|
||
QgsErrorItem( QgsDataItem *parent, const QString &error, const QString &path );
|
||
|
||
SIP_PYOBJECT __repr__();
|
||
%MethodCode
|
||
QString str = QStringLiteral( "<QgsErrorItem: \"%1\" %2>" ).arg( sipCpp->name(), sipCpp->path() );
|
||
sipRes = PyUnicode_FromString( str.toUtf8().constData() );
|
||
%End
|
||
|
||
};
|
||
|
||
|
||
|
||
/************************************************************************
|
||
* This file has been generated automatically from *
|
||
* *
|
||
* src/core/browser/qgsdataitem.h *
|
||
* *
|
||
* Do not edit manually ! Edit header and run scripts/sipify.py again *
|
||
************************************************************************/
|