Ejemplo n.º 1
0
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();
  }
}
Ejemplo n.º 2
0
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 );
    }
  }
}