Exemplo n.º 1
0
void TestQgsPaintEffectRegistry::instanceHasDefaultEffects()
{
  //check that effect instance is initially populated with some effects
  //(assumes that there is some default effects)
  QgsPaintEffectRegistry* registry = QgsApplication::paintEffectRegistry();
  QVERIFY( registry->effects().length() > 0 );
}
void QgsPaintEffectPropertiesWidget::effectTypeChanged()
{
  QgsPaintEffect* effect = mEffect;
  if ( !effect )
    return;

  QString newEffectType = mEffectTypeCombo->currentData().toString();
  if ( effect->type() == newEffectType )
    return;

  // get creation function for new effect from registry
  QgsPaintEffectRegistry* registry = QgsApplication::paintEffectRegistry();
  QgsPaintEffectAbstractMetadata* am = registry->effectMetadata( newEffectType );
  if ( !am ) // check whether the metadata is assigned
    return;

  // change effect to a new (with different type)
  // base new effect on existing effect's properties
  QgsPaintEffect* newEffect = am->createPaintEffect( effect->properties() );
  if ( !newEffect )
    return;

  updateEffectWidget( newEffect );
  emit changeEffect( newEffect );

  mEffect = newEffect;
}
void QgsPaintEffectPropertiesWidget::updateEffectWidget( QgsPaintEffect* effect )
{
  if ( !effect )
  {
    stackedWidget->setCurrentWidget( pageDummy );
    return;
  }

  if ( stackedWidget->currentWidget() != pageDummy )
  {
    // stop updating from the original widget
    disconnect( stackedWidget->currentWidget(), SIGNAL( changed() ), this, SLOT( emitSignalChanged() ) );
    stackedWidget->removeWidget( stackedWidget->currentWidget() );
  }

  QgsPaintEffectRegistry* registry = QgsApplication::paintEffectRegistry();
  QgsPaintEffectAbstractMetadata* am = registry->effectMetadata( effect->type() );
  if ( am )
  {
    QgsPaintEffectWidget* w = am->createWidget();
    if ( w )
    {
      w->setPaintEffect( effect );
      stackedWidget->addWidget( w );
      stackedWidget->setCurrentWidget( w );
      // start receiving updates from widget
      connect( w, SIGNAL( changed() ), this, SLOT( emitSignalChanged() ) );
      return;
    }
  }
  // When anything is not right
  stackedWidget->setCurrentWidget( pageDummy );
}
Exemplo n.º 4
0
void TestQgsPaintEffectRegistry::createEffect()
{
  QgsPaintEffectRegistry* registry = QgsApplication::paintEffectRegistry();
  QgsPaintEffect* effect = registry->createEffect( QStringLiteral( "Dummy" ) );

  QVERIFY( effect );
  DummyPaintEffect* dummyEffect = dynamic_cast<DummyPaintEffect*>( effect );
  QVERIFY( dummyEffect );
  delete effect;

  //try creating a bad effect
  effect = registry->createEffect( QStringLiteral( "bad effect" ) );
  QVERIFY( !effect );
}
Exemplo n.º 5
0
void TestQgsPaintEffectRegistry::fetchEffects()
{
  QgsPaintEffectRegistry* registry = QgsApplication::paintEffectRegistry();
  QStringList effects = registry->effects();

  QVERIFY( effects.contains( "Dummy" ) );

  QgsPaintEffectAbstractMetadata* metadata = registry->effectMetadata( QStringLiteral( "Dummy" ) );
  QCOMPARE( metadata->name(), QString( "Dummy" ) );

  //metadata for bad effect
  metadata = registry->effectMetadata( QStringLiteral( "bad effect" ) );
  QVERIFY( !metadata );
}
void QgsPaintEffectPropertiesWidget::populateEffectTypes()
{
  QgsPaintEffectRegistry* registry = QgsApplication::paintEffectRegistry();
  QStringList types = registry->effects();

  Q_FOREACH ( const QString& type, types )
  {
    //don't show stack effect
    if ( type == QLatin1String( "effectStack" ) )
      continue;

    mEffectTypeCombo->addItem( registry->effectMetadata( type )->visibleName(), type );
  }
}
static bool _initWidgetFunction( const QString& name, QgsPaintEffectWidgetFunc f )
{
  QgsPaintEffectRegistry* registry = QgsApplication::paintEffectRegistry();

  QgsPaintEffectAbstractMetadata* abstractMetadata = registry->effectMetadata( name );
  if ( !abstractMetadata )
  {
    QgsDebugMsg( QString( "Failed to find paint effect entry in registry: %1" ).arg( name ) );
    return false;
  }
  QgsPaintEffectMetadata* metadata = dynamic_cast<QgsPaintEffectMetadata*>( abstractMetadata );
  if ( !metadata )
  {
    QgsDebugMsg( QString( "Failed to cast paint effect's metadata: " ) .arg( name ) );
    return false;
  }
  metadata->setWidgetFunction( f );
  return true;
}
Exemplo n.º 8
0
void TestQgsPaintEffectRegistry::addEffect()
{
  //create an empty registry
  QgsPaintEffectRegistry* registry = QgsApplication::paintEffectRegistry();
  int previousCount = registry->effects().length();

  registry->addEffectType( new QgsPaintEffectMetadata( QStringLiteral( "Dummy" ), QStringLiteral( "Dummy effect" ), DummyPaintEffect::create ) );
  QCOMPARE( registry->effects().length(), previousCount + 1 );
  //try adding again, should have no effect
  registry->addEffectType( new QgsPaintEffectMetadata( QStringLiteral( "Dummy" ), QStringLiteral( "Dummy effect" ), DummyPaintEffect::create ) );
  QCOMPARE( registry->effects().length(), previousCount + 1 );

  //try adding empty metadata
  registry->addEffectType( nullptr );
  QCOMPARE( registry->effects().length(), previousCount + 1 );
}
Exemplo n.º 9
0
void TestQgsPaintEffectRegistry::addEffect()
{
  //create an empty registry
  QgsPaintEffectRegistry* registry = QgsPaintEffectRegistry::instance();
  int previousCount = registry->effects().length();

  registry->addEffectType( new QgsPaintEffectMetadata( "Dummy", "Dummy effect", DummyPaintEffect::create ) );
  QCOMPARE( registry->effects().length(), previousCount + 1 );
  //try adding again, should have no effect
  registry->addEffectType( new QgsPaintEffectMetadata( "Dummy", "Dummy effect", DummyPaintEffect::create ) );
  QCOMPARE( registry->effects().length(), previousCount + 1 );

  //try adding empty metadata
  registry->addEffectType( nullptr );
  QCOMPARE( registry->effects().length(), previousCount + 1 );
}
Exemplo n.º 10
0
void TestQgsPaintEffectRegistry::defaultStack()
{
  QgsPaintEffectRegistry* registry = QgsApplication::paintEffectRegistry();
  QgsEffectStack* effect = static_cast<QgsEffectStack*>( registry->defaultStack() );
  QVERIFY( registry->isDefaultStack( effect ) );
  effect->effect( 1 )->setEnabled( true );
  QVERIFY( !registry->isDefaultStack( effect ) );
  effect->effect( 1 )->setEnabled( false );
  effect->effect( 2 )->setEnabled( false ); //third effect should be enabled by default
  QVERIFY( !registry->isDefaultStack( effect ) );
  effect->effect( 2 )->setEnabled( true );
  effect->appendEffect( new QgsEffectStack() );
  QVERIFY( !registry->isDefaultStack( effect ) );
  delete effect;
  QgsPaintEffect* effect2 = new DummyPaintEffect();
  QVERIFY( !registry->isDefaultStack( effect2 ) );
  delete effect2;
}