QgsProjectionSelectionWidget::QgsProjectionSelectionWidget( QWidget *parent ) : QWidget( parent ) { mDialog = new QgsGenericProjectionSelector( this ); QHBoxLayout* layout = new QHBoxLayout(); layout->setContentsMargins( 0, 0, 0, 0 ); layout->setSpacing( 0 ); setLayout( layout ); mCrsComboBox = new QComboBox( this ); mCrsComboBox->addItem( tr( "invalid projection" ), QgsProjectionSelectionWidget::CurrentCrs ); mCrsComboBox->setSizePolicy( QSizePolicy::Ignored, QSizePolicy::Preferred ); if ( QgsProject::instance()->readNumEntry( "SpatialRefSys", "/ProjectionsEnabled", 0 ) ) { //only show project CRS if OTF reprojection is enabled - otherwise the //CRS stored in the project can be misleading QString projectCrsString = QgsProject::instance()->readEntry( "SpatialRefSys", "/ProjectCrs" ); mProjectCrs.createFromOgcWmsCrs( projectCrsString ); addProjectCrsOption(); } QSettings settings; QString defCrsString = settings.value( "/Projections/projectDefaultCrs", GEO_EPSG_CRS_AUTHID ).toString(); mDefaultCrs.createFromOgcWmsCrs( defCrsString ); if ( mDefaultCrs.authid() != mProjectCrs.authid() ) { //only show default CRS option if it's different to the project CRS, avoids //needlessly cluttering the widget addDefaultCrsOption(); } addRecentCrs(); layout->addWidget( mCrsComboBox ); mButton = new QToolButton( this ); mButton->setIcon( QgsApplication::getThemeIcon( "mActionSetProjection.svg" ) ); mButton->setToolTip( tr( "Select CRS" ) ); layout->addWidget( mButton ); setFocusPolicy( Qt::StrongFocus ); setFocusProxy( mButton ); connect( mButton, SIGNAL( clicked() ), this, SLOT( selectCrs() ) ); connect( mCrsComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( comboIndexChanged( int ) ) ); }
QgsProjectionSelectionWidget::QgsProjectionSelectionWidget( QWidget *parent ) : QWidget( parent ) { QHBoxLayout *layout = new QHBoxLayout(); layout->setContentsMargins( 0, 0, 0, 0 ); layout->setSpacing( 6 ); setLayout( layout ); mCrsComboBox = new QComboBox( this ); mCrsComboBox->addItem( tr( "invalid projection" ), QgsProjectionSelectionWidget::CurrentCrs ); mCrsComboBox->setSizePolicy( QSizePolicy::Ignored, QSizePolicy::Preferred ); mProjectCrs = QgsProject::instance()->crs(); addProjectCrsOption(); QgsSettings settings; mDefaultCrs = QgsCoordinateReferenceSystem( settings.value( QStringLiteral( "/projections/defaultProjectCrs" ), GEO_EPSG_CRS_AUTHID, QgsSettings::App ).toString() ); if ( mDefaultCrs.authid() != mProjectCrs.authid() ) { //only show default CRS option if it's different to the project CRS, avoids //needlessly cluttering the widget addDefaultCrsOption(); } addRecentCrs(); layout->addWidget( mCrsComboBox ); mButton = new QToolButton( this ); mButton->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mActionSetProjection.svg" ) ) ); mButton->setToolTip( tr( "Select CRS" ) ); layout->addWidget( mButton ); setFocusPolicy( Qt::StrongFocus ); setFocusProxy( mButton ); connect( mButton, &QToolButton::clicked, this, &QgsProjectionSelectionWidget::selectCrs ); connect( mCrsComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsProjectionSelectionWidget::comboIndexChanged ); }