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 ); }
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 ); }
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; }
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 ); }
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 ); }
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; }