void QgsTileScaleWidget::layerChanged( QgsMapLayer *layer ) { QgsRasterLayer *rl = qobject_cast<QgsRasterLayer *>( layer ); if ( !rl || rl->providerKey() != "wms" || !rl->publicSource().contains( "tiled=" ) ) { mResolutions.clear(); mSlider->setDisabled( true ); } else { QString uri = rl->publicSource().mid( rl->publicSource().indexOf( "tiled=" ) + 6 ); int pos = uri.indexOf( "," ); if ( pos >= 0 ) uri = uri.left( pos ); QStringList params = uri.split( ";" ); params.takeFirst(); params.takeFirst(); mResolutions.clear(); foreach( QString r, params ) mResolutions << r.toDouble(); qSort( mResolutions ); for ( int i = 0; i < mResolutions.size(); i++ ) QgsDebugMsg( QString( "found resolution %1: %2" ).arg( i ).arg( mResolutions[i] ) ); mSlider->setRange( 0, mResolutions.size() - 1 ); mSlider->setTickInterval( 1 ); mSlider->setInvertedAppearance( true ); mSlider->setPageStep( 1 ); mSlider->setTracking( false ); scaleChanged( mMapCanvas->scale() ); mSlider->setEnabled( true ); show(); } }
void QgsRasterCalcDialog::insertAvailableRasterBands() { mAvailableRasterBands = QgsRasterCalculatorEntry::rasterEntries().toList(); mRasterBandsListWidget->clear(); for ( const auto &entry : qgis::as_const( mAvailableRasterBands ) ) { QgsRasterLayer *rlayer = entry.raster; if ( rlayer && rlayer->dataProvider() && rlayer->dataProvider()->name() == QLatin1String( "gdal" ) ) { if ( !mExtentSizeSet ) //set bounding box / resolution of output to the values of the first possible input layer { setExtentSize( rlayer->width(), rlayer->height(), rlayer->extent() ); mCrsSelector->setCrs( rlayer->crs() ); } QListWidgetItem *item = new QListWidgetItem( entry.ref, mRasterBandsListWidget ); item->setData( Qt::ToolTipRole, rlayer->publicSource() ); mRasterBandsListWidget->addItem( item ); } } }