/usr/include/qgis/qgsprojectionselector.h is in libqgis-dev 2.8.6+dfsg-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 | /***************************************************************************
* qgsprojectionselector.h *
* Copyright (C) 2005 by Tim Sutton *
* tim@linfiniti.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 QGSCRSSELECTOR_H
#define QGSCRSSELECTOR_H
#include <ui_qgsprojectionselectorbase.h>
#include <QSet>
#include <QStringList>
#include "qgis.h"
class QResizeEvent;
/** \ingroup gui
* A widget for selecting a Coordinate reference system from a tree.
* @see QgsGenericProjectionSelector.
@author Tim Sutton
*/
class GUI_EXPORT QgsProjectionSelector : public QWidget, private Ui::QgsProjectionSelectorBase
{
Q_OBJECT
public:
QgsProjectionSelector( QWidget* parent, const char *name = "", Qt::WindowFlags fl = 0 );
~QgsProjectionSelector();
/**
* \brief Populate the proj tree view with user defined projection names...
*
* \param crsFilter a list of OGC Coordinate Reference Systems to filter the
* list of projections by. This is useful in (e.g.) WMS situations
* where you just want to offer what the WMS server can support.
*
* \todo Should this be public?
*/
void loadUserCrsList( QSet<QString> *crsFilter = 0 );
/**
* \brief Populate the proj tree view with system projection names...
*
* \param crsFilter a list of OGC Coordinate Reference Systems to filter the
* list of projections by. This is useful in (e.g.) WMS situations
* where you just want to offer what the WMS server can support.
*
* \todo Should this be public?
*/
void loadCrsList( QSet<QString> *crsFilter = 0 );
/*!
* \brief Make the string safe for use in SQL statements.
* This involves escaping single quotes, double quotes, backslashes,
* and optionally, percentage symbols. Percentage symbols are used
* as wildcards sometimes and so when using the string as part of the
* LIKE phrase of a select statement, should be escaped.
* \arg const QString in The input string to make safe.
* \return The string made safe for SQL statements.
*/
const QString sqlSafeString( const QString theSQL );
//! Gets the current authority-style projection identifier
QString selectedAuthId();
public slots:
void setSelectedCrsName( QString theCRSName );
QString selectedName();
void setSelectedCrsId( long theCRSID );
void setSelectedAuthId( QString authId );
QString selectedProj4String();
//! Gets the current PostGIS-style projection identifier
long selectedPostgresSrId();
//! Gets the current QGIS projection identfier
long selectedCrsId();
/**
* \brief filters this widget by the given CRSs
*
* Sets this widget to filter the available projections to those listed
* by the given Coordinate Reference Systems.
*
* \param crsFilter a list of OGC Coordinate Reference Systems to filter the
* list of projections by. This is useful in (e.g.) WMS situations
* where you just want to offer what the WMS server can support.
*
* \warning This function's behaviour is undefined if it is called after the widget is shown.
*/
void setOgcWmsCrsFilter( QSet<QString> crsFilter );
void on_lstCoordinateSystems_currentItemChanged( QTreeWidgetItem *current, QTreeWidgetItem *prev );
void on_lstRecent_currentItemChanged( QTreeWidgetItem *current, QTreeWidgetItem *prev );
void on_cbxHideDeprecated_stateChanged();
void on_leSearch_textChanged( const QString & );
//! mark selected projection for push to front
void pushProjectionToFront();
protected:
/** Used to ensure the projection list view is actually populated */
void showEvent( QShowEvent * theEvent ) override;
/** Used to manage column sizes */
void resizeEvent( QResizeEvent * theEvent ) override;
private:
/**
* \brief converts the CRS group to a SQL expression fragment
*
* Converts the given Coordinate Reference Systems to a format suitable
* for use in SQL for querying against the QGIS CRS database.
*
* \param crsFilter a list of OGC Coordinate Reference Systems to filter the
* list of projections by. This is useful in (e.g.) WMS situations
* where you just want to offer what the WMS server can support.
*
*/
QString ogcWmsCrsFilterAsSqlExpression( QSet<QString> * crsFilter );
/**
* \brief does the legwork of applying CRS Selection
*
* \warning This function does nothing unless getUserList() and getUserProjList()
* Have already been called
*
* \warning This function only expands the parents of the selection and
* does not scroll the list to the selection if the widget is not visible.
* Therefore you will typically want to use this in a showEvent().
*/
void applySelection( int column = NONE, QString value = QString::null );
/**
* \brief gets an arbitrary sqlite3 expression from the selection
*
* \param e The sqlite3 expression (typically "srid" or "sridid")
*/
QString getSelectedExpression( QString e );
/** Show the user a warning if the srs database could not be found */
void showDBMissingWarning( const QString theFileName );
// List view nodes for the tree view of projections
//! User defined projections node
QTreeWidgetItem *mUserProjList;
//! GEOGCS node
QTreeWidgetItem *mGeoList;
//! PROJCS node
QTreeWidgetItem *mProjList;
//! Users custom coordinate system file
QString mCustomCsFile;
//! File name of the sqlite3 database
QString mSrsDatabaseFileName;
/**
* Utility method used in conjunction with name based searching tool
*/
long getLargestCRSIDMatch( QString theSql );
//! add recently used CRS
void insertRecent( long theCrsId );
//! Has the Projection List been populated?
bool mProjListDone;
//! Has the User Projection List been populated?
bool mUserProjListDone;
//! Has the Recent Projection List been populated?
bool mRecentProjListDone;
enum columns { NAME_COLUMN, AUTHID_COLUMN, QGIS_CRS_ID_COLUMN, NONE };
int mSearchColumn;
QString mSearchValue;
bool mPushProjectionToFront;
//! The set of OGC WMS CRSs that want to be applied to this widget
QSet<QString> mCrsFilter;
//! Most recently used projections (trimmed at 25 entries)
QStringList mRecentProjections;
//! hide deprecated CRSes
void hideDeprecated( QTreeWidgetItem *item );
private slots:
//! get list of authorities
QStringList authorities();
signals:
void sridSelected( QString theSRID );
//! Refresh any listening canvases
void refresh();
//! Let listeners know if find has focus so they can adjust the default button
void searchBoxHasFocus( bool );
//! Notify others that the widget is now fully initialized, including deferred selection of projection
//! @note added in 2.4
void initialized();
};
#endif
|