mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-20 00:06:36 -04:00
[needs-docs] Add an indicator icon for layers with an unknown/invalid CRS
This commit is contained in:
parent
937415663f
commit
b6596cde30
@ -62,6 +62,7 @@ SET(QGIS_APP_SRCS
|
|||||||
qgslayertreeviewembeddedindicator.cpp
|
qgslayertreeviewembeddedindicator.cpp
|
||||||
qgslayertreeviewfilterindicator.cpp
|
qgslayertreeviewfilterindicator.cpp
|
||||||
qgslayertreeviewmemoryindicator.cpp
|
qgslayertreeviewmemoryindicator.cpp
|
||||||
|
qgslayertreeviewnocrsindicator.cpp
|
||||||
qgslayertreeviewnonremovableindicator.cpp
|
qgslayertreeviewnonremovableindicator.cpp
|
||||||
qgslayertreeviewbadlayerindicator.cpp
|
qgslayertreeviewbadlayerindicator.cpp
|
||||||
qgsmapcanvasdockwidget.cpp
|
qgsmapcanvasdockwidget.cpp
|
||||||
@ -309,6 +310,7 @@ SET (QGIS_APP_MOC_HDRS
|
|||||||
qgslayertreeviewembeddedindicator.h
|
qgslayertreeviewembeddedindicator.h
|
||||||
qgslayertreeviewmemoryindicator.h
|
qgslayertreeviewmemoryindicator.h
|
||||||
qgslayertreeviewfilterindicator.h
|
qgslayertreeviewfilterindicator.h
|
||||||
|
qgslayertreeviewnocrsindicator.h
|
||||||
qgslayertreeviewnonremovableindicator.h
|
qgslayertreeviewnonremovableindicator.h
|
||||||
qgslayertreeviewbadlayerindicator.h
|
qgslayertreeviewbadlayerindicator.h
|
||||||
qgsmapcanvasdockwidget.h
|
qgsmapcanvasdockwidget.h
|
||||||
|
@ -224,6 +224,7 @@ Q_GUI_EXPORT extern int qt_defaultDpiX();
|
|||||||
#include "qgslayertreeviewmemoryindicator.h"
|
#include "qgslayertreeviewmemoryindicator.h"
|
||||||
#include "qgslayertreeviewbadlayerindicator.h"
|
#include "qgslayertreeviewbadlayerindicator.h"
|
||||||
#include "qgslayertreeviewnonremovableindicator.h"
|
#include "qgslayertreeviewnonremovableindicator.h"
|
||||||
|
#include "qgslayertreeviewnocrsindicator.h"
|
||||||
#include "qgslayout.h"
|
#include "qgslayout.h"
|
||||||
#include "qgslayoutatlas.h"
|
#include "qgslayoutatlas.h"
|
||||||
#include "qgslayoutcustomdrophandler.h"
|
#include "qgslayoutcustomdrophandler.h"
|
||||||
@ -4160,6 +4161,7 @@ void QgisApp::initLayerTreeView()
|
|||||||
new QgsLayerTreeViewFilterIndicatorProvider( mLayerTreeView ); // gets parented to the layer view
|
new QgsLayerTreeViewFilterIndicatorProvider( mLayerTreeView ); // gets parented to the layer view
|
||||||
new QgsLayerTreeViewEmbeddedIndicatorProvider( mLayerTreeView ); // gets parented to the layer view
|
new QgsLayerTreeViewEmbeddedIndicatorProvider( mLayerTreeView ); // gets parented to the layer view
|
||||||
new QgsLayerTreeViewMemoryIndicatorProvider( mLayerTreeView ); // gets parented to the layer view
|
new QgsLayerTreeViewMemoryIndicatorProvider( mLayerTreeView ); // gets parented to the layer view
|
||||||
|
new QgsLayerTreeViewNoCrsIndicatorProvider( mLayerTreeView ); // gets parented to the layer view
|
||||||
QgsLayerTreeViewBadLayerIndicatorProvider *badLayerIndicatorProvider = new QgsLayerTreeViewBadLayerIndicatorProvider( mLayerTreeView ); // gets parented to the layer view
|
QgsLayerTreeViewBadLayerIndicatorProvider *badLayerIndicatorProvider = new QgsLayerTreeViewBadLayerIndicatorProvider( mLayerTreeView ); // gets parented to the layer view
|
||||||
connect( badLayerIndicatorProvider, &QgsLayerTreeViewBadLayerIndicatorProvider::requestChangeDataSource, this, &QgisApp::changeDataSource );
|
connect( badLayerIndicatorProvider, &QgsLayerTreeViewBadLayerIndicatorProvider::requestChangeDataSource, this, &QgisApp::changeDataSource );
|
||||||
new QgsLayerTreeViewNonRemovableIndicatorProvider( mLayerTreeView ); // gets parented to the layer view
|
new QgsLayerTreeViewNonRemovableIndicatorProvider( mLayerTreeView ); // gets parented to the layer view
|
||||||
|
65
src/app/qgslayertreeviewnocrsindicator.cpp
Normal file
65
src/app/qgslayertreeviewnocrsindicator.cpp
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
qgslayertreeviewnocrsindicator.h
|
||||||
|
--------------------------------------
|
||||||
|
Date : October 2019
|
||||||
|
Copyright : (C) 2019 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. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "qgslayertreeviewnocrsindicator.h"
|
||||||
|
#include "qgslayertreeview.h"
|
||||||
|
#include "qgslayertree.h"
|
||||||
|
#include "qgslayertreemodel.h"
|
||||||
|
#include "qgslayertreeutils.h"
|
||||||
|
#include "qgsvectorlayer.h"
|
||||||
|
#include "qgisapp.h"
|
||||||
|
|
||||||
|
QgsLayerTreeViewNoCrsIndicatorProvider::QgsLayerTreeViewNoCrsIndicatorProvider( QgsLayerTreeView *view )
|
||||||
|
: QgsLayerTreeViewIndicatorProvider( view )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void QgsLayerTreeViewNoCrsIndicatorProvider::onIndicatorClicked( const QModelIndex &index )
|
||||||
|
{
|
||||||
|
QgsLayerTreeNode *node = mLayerTreeView->layerTreeModel()->index2node( index );
|
||||||
|
if ( !QgsLayerTree::isLayer( node ) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QgsLayerTreeViewNoCrsIndicatorProvider::acceptLayer( QgsMapLayer *layer )
|
||||||
|
{
|
||||||
|
return layer && layer->isSpatial() && !layer->crs().isValid();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QgsLayerTreeViewNoCrsIndicatorProvider::iconName( QgsMapLayer *layer )
|
||||||
|
{
|
||||||
|
Q_UNUSED( layer )
|
||||||
|
return QStringLiteral( "/mIconProjectionDisabled.svg" );
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QgsLayerTreeViewNoCrsIndicatorProvider::tooltipText( QgsMapLayer *layer )
|
||||||
|
{
|
||||||
|
Q_UNUSED( layer )
|
||||||
|
return tr( "<b>Layer has no coordinate reference system set!</b><br>This layer is not georeferenced and has no geographic location available." );
|
||||||
|
}
|
||||||
|
|
||||||
|
void QgsLayerTreeViewNoCrsIndicatorProvider::connectSignals( QgsMapLayer *layer )
|
||||||
|
{
|
||||||
|
QgsLayerTreeViewIndicatorProvider::connectSignals( layer );
|
||||||
|
connect( layer, &QgsMapLayer::crsChanged, this, &QgsLayerTreeViewNoCrsIndicatorProvider::onLayerChanged );
|
||||||
|
}
|
||||||
|
|
||||||
|
void QgsLayerTreeViewNoCrsIndicatorProvider::disconnectSignals( QgsMapLayer *layer )
|
||||||
|
{
|
||||||
|
QgsLayerTreeViewIndicatorProvider::disconnectSignals( layer );
|
||||||
|
disconnect( layer, &QgsMapLayer::crsChanged, this, &QgsLayerTreeViewNoCrsIndicatorProvider::onLayerChanged );
|
||||||
|
}
|
43
src/app/qgslayertreeviewnocrsindicator.h
Normal file
43
src/app/qgslayertreeviewnocrsindicator.h
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
qgslayertreeviewnocrsindicator.h
|
||||||
|
--------------------------------------
|
||||||
|
Date : October 2019
|
||||||
|
Copyright : (C) 2019 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 QGSLAYERTREEVIEWNOCRSINDICATOR_H
|
||||||
|
#define QGSLAYERTREEVIEWNOCRSINDICATOR_H
|
||||||
|
|
||||||
|
#include "qgslayertreeviewindicatorprovider.h"
|
||||||
|
|
||||||
|
//! Adds indicators showing whether layers have an unknown/not set CRS
|
||||||
|
class QgsLayerTreeViewNoCrsIndicatorProvider : public QgsLayerTreeViewIndicatorProvider
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit QgsLayerTreeViewNoCrsIndicatorProvider( QgsLayerTreeView *view );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
void connectSignals( QgsMapLayer *layer ) override;
|
||||||
|
void disconnectSignals( QgsMapLayer *layer ) override;
|
||||||
|
|
||||||
|
protected slots:
|
||||||
|
|
||||||
|
void onIndicatorClicked( const QModelIndex &index ) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool acceptLayer( QgsMapLayer *layer ) override;
|
||||||
|
QString iconName( QgsMapLayer *layer ) override;
|
||||||
|
QString tooltipText( QgsMapLayer *layer ) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // QGSLAYERTREEVIEWNOCRSINDICATOR_H
|
Loading…
x
Reference in New Issue
Block a user