void QgsSymbolSelectorWidget::updatePreview() { QImage preview = mSymbol->bigSymbolPreviewImage( &mPreviewExpressionContext ); lblPreview->setPixmap( QPixmap::fromImage( preview ) ); // Hope this is a appropriate place emit symbolModified(); }
void QgsSymbolV2SelectorDialog::updatePreview() { QImage preview = mSymbol->bigSymbolPreviewImage( mPresetExpressionContext.data() ); lblPreview->setPixmap( QPixmap::fromImage( preview ) ); // Hope this is a appropriate place emit symbolModified(); }
QgsSingleSymbolRendererWidget::QgsSingleSymbolRendererWidget( QgsVectorLayer* layer, QgsStyle* style, QgsFeatureRenderer* renderer ) : QgsRendererWidget( layer, style ) , mRenderer( nullptr ) { // try to recognize the previous renderer // (null renderer means "no previous renderer") if ( renderer ) { mRenderer = QgsSingleSymbolRenderer::convertFromRenderer( renderer ); } if ( !mRenderer ) { QgsSymbol* symbol = QgsSymbol::defaultSymbol( mLayer->geometryType() ); mRenderer = new QgsSingleSymbolRenderer( symbol ); } // load symbol from it mSingleSymbol = mRenderer->symbol()->clone(); // setup ui mSelector = new QgsSymbolSelectorWidget( mSingleSymbol, mStyle, mLayer, nullptr ); connect( mSelector, SIGNAL( symbolModified() ), this, SLOT( changeSingleSymbol() ) ); connect( mSelector, SIGNAL( showPanel( QgsPanelWidget* ) ), this, SLOT( openPanel( QgsPanelWidget* ) ) ); QVBoxLayout* layout = new QVBoxLayout( this ); layout->setContentsMargins( 0, 0, 0, 0 ); layout->addWidget( mSelector ); // advanced actions - data defined rendering QMenu* advMenu = mSelector->advancedMenu(); advMenu->addAction( tr( "Symbol levels..." ), this, SLOT( showSymbolLevels() ) ); }
void QgsSymbolSelectorWidget::lockLayer() { QgsSymbolLayer *layer = currentLayer(); if ( !layer ) return; layer->setLocked( btnLock->isChecked() ); emit symbolModified(); }
void QgsSymbolV2SelectorDialog::setLineWidth( double width ) { QgsLineSymbolV2* lineSymbol = static_cast<QgsLineSymbolV2*>( mSymbol ); if ( lineSymbol->width() == width ) return; lineSymbol->setWidth( width ); updateSymbolPreview(); emit symbolModified(); }
void QgsSymbolV2SelectorDialog::setMarkerSize( double size ) { QgsMarkerSymbolV2* markerSymbol = static_cast<QgsMarkerSymbolV2*>( mSymbol ); if ( markerSymbol->size() == size ) return; markerSymbol->setSize( size ); updateSymbolPreview(); emit symbolModified(); }
void QgsSymbolV2SelectorDialog::changeSymbolProperties() { QgsSymbolV2PropertiesDialog dlg( mSymbol, mVectorLayer, this ); if ( !dlg.exec() ) return; updateSymbolPreview(); updateSymbolInfo(); emit symbolModified(); }
QgsSymbolV2SelectorWidget::QgsSymbolV2SelectorWidget( QgsSymbolV2* symbol, QgsStyleV2* style, const QgsVectorLayer* vl, QWidget* parent ) : QgsPanelWidget( parent ) , mAdvancedMenu( nullptr ) , mVectorLayer( vl ) , mMapCanvas( nullptr ) { #ifdef Q_OS_MAC setWindowModality( Qt::WindowModal ); #endif mStyle = style; mSymbol = symbol; mPresentWidget = nullptr; setupUi( this ); // setup icons btnAddLayer->setIcon( QIcon( QgsApplication::iconPath( "symbologyAdd.svg" ) ) ); btnRemoveLayer->setIcon( QIcon( QgsApplication::iconPath( "symbologyRemove.svg" ) ) ); QIcon iconLock; iconLock.addFile( QgsApplication::iconPath( "locked.svg" ), QSize(), QIcon::Normal, QIcon::On ); iconLock.addFile( QgsApplication::iconPath( "locked.svg" ), QSize(), QIcon::Active, QIcon::On ); iconLock.addFile( QgsApplication::iconPath( "unlocked.svg" ), QSize(), QIcon::Normal, QIcon::Off ); iconLock.addFile( QgsApplication::iconPath( "unlocked.svg" ), QSize(), QIcon::Active, QIcon::Off ); btnLock->setIcon( iconLock ); btnDuplicate->setIcon( QIcon( QgsApplication::iconPath( "mActionDuplicateLayer.svg" ) ) ); btnUp->setIcon( QIcon( QgsApplication::iconPath( "symbologyUp.svg" ) ) ); btnDown->setIcon( QIcon( QgsApplication::iconPath( "symbologyDown.svg" ) ) ); model = new QStandardItemModel( layersTree ); // Set the symbol layersTree->setModel( model ); layersTree->setHeaderHidden( true ); QItemSelectionModel* selModel = layersTree->selectionModel(); connect( selModel, SIGNAL( currentChanged( const QModelIndex&, const QModelIndex& ) ), this, SLOT( layerChanged() ) ); loadSymbol( symbol, static_cast<SymbolLayerItem*>( model->invisibleRootItem() ) ); updatePreview(); connect( btnUp, SIGNAL( clicked() ), this, SLOT( moveLayerUp() ) ); connect( btnDown, SIGNAL( clicked() ), this, SLOT( moveLayerDown() ) ); connect( btnAddLayer, SIGNAL( clicked() ), this, SLOT( addLayer() ) ); connect( btnRemoveLayer, SIGNAL( clicked() ), this, SLOT( removeLayer() ) ); connect( btnLock, SIGNAL( clicked() ), this, SLOT( lockLayer() ) ); connect( btnDuplicate, SIGNAL( clicked() ), this, SLOT( duplicateLayer() ) ); connect( this, SIGNAL( symbolModified() ), this, SIGNAL( widgetChanged() ) ); updateUi(); // set symbol as active item in the tree QModelIndex newIndex = layersTree->model()->index( 0, 0 ); layersTree->setCurrentIndex( newIndex ); setPanelTitle( tr( "Symbol selector" ) ); }
void QgsSymbolV2SelectorDialog::on_mTransparencySlider_valueChanged( int value ) { if ( mSymbol ) { double alpha = 1 - ( value / 255.0 ); mSymbol->setAlpha( alpha ); displayTransparency( alpha ); updateSymbolPreview(); emit symbolModified(); } }
void QgsSymbolV2SelectorDialog::on_mSymbolUnitComboBox_currentIndexChanged( const QString & text ) { Q_UNUSED( text ); if ( mSymbol ) { mSymbol->setOutputUnit(( QgsSymbolV2::OutputUnit ) mSymbolUnitComboBox->currentIndex() ); updateSymbolPreview(); emit symbolModified(); } }
QgsSingleSymbolRendererV2Widget::QgsSingleSymbolRendererV2Widget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer ) : QgsRendererV2Widget( layer, style ) , mRenderer( NULL ) { // try to recognize the previous renderer // (null renderer means "no previous renderer") if ( renderer ) { mRenderer = QgsSingleSymbolRendererV2::convertFromRenderer( renderer ); } if ( !mRenderer ) { QgsSymbolV2* symbol = QgsSymbolV2::defaultSymbol( mLayer->geometryType() ); mRenderer = new QgsSingleSymbolRendererV2( symbol ); } // load symbol from it mSingleSymbol = mRenderer->symbol()->clone(); // setup ui setupUi( this ); mHtmlLineEdit->setToolTip( QgsRendererV2Widget::htmlToolTip() ); mSelector = new QgsSymbolV2SelectorDialog( mSingleSymbol, mStyle, mLayer, NULL, true ); connect( mSelector, SIGNAL( symbolModified() ), this, SLOT( changeSingleSymbol() ) ); mVerticalLayout->addWidget( mSelector ); mHtmlLineEdit->setText( mRenderer->html() ); mWMSLegendSettingsGroupBox->setCollapsed( true ); // advanced actions - data defined rendering QMenu* advMenu = mSelector->advancedMenu(); advMenu->addAction( tr( "Symbol levels..." ), this, SLOT( showSymbolLevels() ) ); mDataDefinedMenus = new QgsRendererV2DataDefinedMenus( advMenu, mLayer, mRenderer->rotationField(), mRenderer->sizeScaleField(), mRenderer->scaleMethod() ); connect( mDataDefinedMenus, SIGNAL( rotationFieldChanged( QString ) ), this, SLOT( rotationFieldChanged( QString ) ) ); connect( mDataDefinedMenus, SIGNAL( sizeScaleFieldChanged( QString ) ), this, SLOT( sizeScaleFieldChanged( QString ) ) ); connect( mDataDefinedMenus, SIGNAL( scaleMethodChanged( QgsSymbolV2::ScaleMethod ) ), this, SLOT( scaleMethodChanged( QgsSymbolV2::ScaleMethod ) ) ); //add legend symbol icon to button if ( mRenderer->legendSymbol() ) { QIcon icon = QgsSymbolLayerV2Utils::symbolPreviewIcon( mRenderer->legendSymbol(), mLegendIconButton->iconSize() ); mLegendIconButton->setIcon( icon ); } }
void QgsSymbolV2SelectorDialog::setSymbolColor() { #if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA) // Native Mac dialog works only for Qt Carbon // Qt bug: http://bugreports.qt.nokia.com/browse/QTBUG-14889 // FIXME need to also check max QT_VERSION when Qt bug fixed QColor color = QColorDialog::getColor( mSymbol->color(), this, "", QColorDialog::DontUseNativeDialog ); #else QColor color = QColorDialog::getColor( mSymbol->color(), this ); #endif if ( !color.isValid() ) return; mSymbol->setColor( color ); updateSymbolColor(); updateSymbolPreview(); emit symbolModified(); }
QgsSingleSymbolRendererV2Widget::QgsSingleSymbolRendererV2Widget( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer ) : QgsRendererV2Widget( layer, style ) { // try to recognize the previous renderer // (null renderer means "no previous renderer") if ( !renderer || renderer->type() != "singleSymbol" ) { // we're not going to use it - so let's delete the renderer delete renderer; // some default options QgsSymbolV2* symbol = QgsSymbolV2::defaultSymbol( mLayer->geometryType() ); mRenderer = new QgsSingleSymbolRendererV2( symbol ); } else { mRenderer = static_cast<QgsSingleSymbolRendererV2*>( renderer ); } // load symbol from it mSingleSymbol = mRenderer->symbol()->clone(); // setup ui mSelector = new QgsSymbolV2SelectorDialog( mSingleSymbol, mStyle, mLayer, NULL, true ); connect( mSelector, SIGNAL( symbolModified() ), this, SLOT( changeSingleSymbol() ) ); QVBoxLayout* layout = new QVBoxLayout; layout->addWidget( mSelector ); setLayout( layout ); // advanced actions - data defined rendering QMenu* advMenu = mSelector->advancedMenu(); advMenu->addAction( tr( "Symbol levels..." ), this, SLOT( showSymbolLevels() ) ); mDataDefinedMenus = new QgsRendererV2DataDefinedMenus( advMenu, mLayer->pendingFields(), mRenderer->rotationField(), mRenderer->sizeScaleField(), mRenderer->scaleMethod() ); connect( mDataDefinedMenus, SIGNAL( rotationFieldChanged( QString ) ), this, SLOT( rotationFieldChanged( QString ) ) ); connect( mDataDefinedMenus, SIGNAL( sizeScaleFieldChanged( QString ) ), this, SLOT( sizeScaleFieldChanged( QString ) ) ); connect( mDataDefinedMenus, SIGNAL( scaleMethodChanged( QgsSymbolV2::ScaleMethod ) ), this, SLOT( scaleMethodChanged( QgsSymbolV2::ScaleMethod ) ) ); }
void QgsSymbolV2SelectorDialog::setSymbolFromStyle( const QModelIndex & index ) { QString symbolName = index.data( Qt::UserRole ).toString(); lblSymbolName->setText( symbolName ); // get new instance of symbol from style QgsSymbolV2* s = mStyle->symbol( symbolName ); // remove all symbol layers from original symbol while ( mSymbol->symbolLayerCount() ) mSymbol->deleteSymbolLayer( 0 ); // move all symbol layers to our symbol while ( s->symbolLayerCount() ) { QgsSymbolLayerV2* sl = s->takeSymbolLayer( 0 ); mSymbol->appendSymbolLayer( sl ); } // delete the temporary symbol delete s; updateSymbolPreview(); updateSymbolInfo(); emit symbolModified(); }