mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-16 00:05:45 -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
|
||||
qgslayertreeviewfilterindicator.cpp
|
||||
qgslayertreeviewmemoryindicator.cpp
|
||||
qgslayertreeviewnocrsindicator.cpp
|
||||
qgslayertreeviewnonremovableindicator.cpp
|
||||
qgslayertreeviewbadlayerindicator.cpp
|
||||
qgsmapcanvasdockwidget.cpp
|
||||
@ -309,6 +310,7 @@ SET (QGIS_APP_MOC_HDRS
|
||||
qgslayertreeviewembeddedindicator.h
|
||||
qgslayertreeviewmemoryindicator.h
|
||||
qgslayertreeviewfilterindicator.h
|
||||
qgslayertreeviewnocrsindicator.h
|
||||
qgslayertreeviewnonremovableindicator.h
|
||||
qgslayertreeviewbadlayerindicator.h
|
||||
qgsmapcanvasdockwidget.h
|
||||
|
@ -224,6 +224,7 @@ Q_GUI_EXPORT extern int qt_defaultDpiX();
|
||||
#include "qgslayertreeviewmemoryindicator.h"
|
||||
#include "qgslayertreeviewbadlayerindicator.h"
|
||||
#include "qgslayertreeviewnonremovableindicator.h"
|
||||
#include "qgslayertreeviewnocrsindicator.h"
|
||||
#include "qgslayout.h"
|
||||
#include "qgslayoutatlas.h"
|
||||
#include "qgslayoutcustomdrophandler.h"
|
||||
@ -4160,6 +4161,7 @@ void QgisApp::initLayerTreeView()
|
||||
new QgsLayerTreeViewFilterIndicatorProvider( 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 QgsLayerTreeViewNoCrsIndicatorProvider( 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 );
|
||||
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