void QgsStyleManagerDialog::populateSymbols( const QStringList& symbolNames, bool check ) { QStandardItemModel* model = qobject_cast<QStandardItemModel*>( listItems->model() ); model->clear(); int type = currentItemType(); for ( int i = 0; i < symbolNames.count(); ++i ) { QString name = symbolNames[i]; QgsSymbol* symbol = mStyle->symbol( name ); if ( symbol && symbol->type() == type ) { QStandardItem* item = new QStandardItem( name ); QIcon icon = QgsSymbolLayerUtils::symbolPreviewIcon( symbol, listItems->iconSize() ); item->setIcon( icon ); item->setData( name ); // used to find out original name when user edited the name item->setCheckable( check ); item->setToolTip( name ); // add to model model->appendRow( item ); } delete symbol; } selectedSymbolsChanged( QItemSelection(), QItemSelection() ); symbolSelected( listItems->currentIndex() ); }
void QgsStyleManagerDialog::populateList() { if ( currentItemType() > 3 ) { Q_ASSERT( 0 && "not implemented" ); return; } groupChanged( groupTree->selectionModel()->currentIndex() ); }
void QgsStyleManagerDialog::editItem() { bool changed = false; if ( currentItemType() < 3 ) { changed = editSymbol(); } else if ( currentItemType() == 3 ) { changed = editColorRamp(); } else { Q_ASSERT( 0 && "not implemented" ); } if ( changed ) populateList(); }
void QgsStyleManagerDialog::removeItem() { bool changed = false; if ( currentItemType() < 3 ) { changed = removeSymbol(); } else if ( currentItemType() == 3 ) { changed = removeColorRamp(); } else { Q_ASSERT( 0 && "not implemented" ); } if ( changed ) { populateList(); populateTypes(); } }
void QgsStyleManagerDialog::on_tabItemType_currentChanged( int ) { // when in Color Ramp tab, add menu to add item button and hide "Export symbols as PNG/SVG" bool flag = currentItemType() != 3; btnAddItem->setMenu( flag ? nullptr : mMenuBtnAddItemColorRamp ); actnExportAsPNG->setVisible( flag ); actnExportAsSVG->setVisible( flag ); // set icon and grid size, depending on type if ( currentItemType() == 1 || currentItemType() == 3 ) { listItems->setIconSize( QSize( 75, 50 ) ); listItems->setGridSize( QSize( 100, 80 ) ); } else { listItems->setIconSize( QSize( 50, 50 ) ); listItems->setGridSize( QSize( 75, 80 ) ); } populateList(); }
void QgsStyleV2ManagerDialog::on_tabItemType_currentChanged( int ) { // when in Color Ramp tab, add menu to add item button if ( currentItemType() == 3 ) { QStringList rampTypes; rampTypes << tr( "Gradient" ) << tr( "Random" ) << tr( "ColorBrewer" ); rampTypes << tr( "cpt-city" ); // todo, only for rasters? QMenu* menu = new QMenu( btnAddItem ); foreach ( QString rampType, rampTypes ) { menu->addAction( rampType ); }
void QgsStyleManagerDialog::tabItemType_currentChanged( int ) { // when in Color Ramp tab, add menu to add item button and hide "Export symbols as PNG/SVG" bool flag = currentItemType() != 3; searchBox->setPlaceholderText( flag ? tr( "Filter symbols…" ) : tr( "Filter color ramps…" ) ); btnAddItem->setMenu( flag ? nullptr : mMenuBtnAddItemColorRamp ); actnExportAsPNG->setVisible( flag ); actnExportAsSVG->setVisible( flag ); listItems->setIconSize( QSize( 100, 90 ) ); listItems->setGridSize( QSize( 120, 110 ) ); populateList(); }
bool QgsStyleManagerDialog::addSymbol() { // create new symbol with current type QgsSymbol* symbol; QString name = tr( "new symbol" ); switch ( currentItemType() ) { case QgsSymbol::Marker: symbol = new QgsMarkerSymbol(); name = tr( "new marker" ); break; case QgsSymbol::Line: symbol = new QgsLineSymbol(); name = tr( "new line" ); break; case QgsSymbol::Fill: symbol = new QgsFillSymbol(); name = tr( "new fill symbol" ); break; default: Q_ASSERT( 0 && "unknown symbol type" ); return false; } // get symbol design // NOTE : Set the parent widget as "this" to notify the Symbol selector // that, it is being called by Style Manager, so recursive calling // of style manager and symbol selector can be arrested // See also: editSymbol() QgsSymbolSelectorDialog dlg( symbol, mStyle, nullptr, this ); if ( dlg.exec() == 0 ) { delete symbol; return false; } // get unique name bool nameInvalid = true; while ( nameInvalid ) { bool ok; name = QInputDialog::getText( this, tr( "Symbol Name" ), tr( "Please enter a name for new symbol:" ), QLineEdit::Normal, name, &ok ); if ( !ok ) { delete symbol; return false; } // validate name if ( name.isEmpty() ) { QMessageBox::warning( this, tr( "Save symbol" ), tr( "Cannot save symbol without name. Enter a name." ) ); } else if ( mStyle->symbolNames().contains( name ) ) { int res = QMessageBox::warning( this, tr( "Save symbol" ), tr( "Symbol with name '%1' already exists. Overwrite?" ) .arg( name ), QMessageBox::Yes | QMessageBox::No ); if ( res == QMessageBox::Yes ) { nameInvalid = false; } } else { // valid name nameInvalid = false; } } // add new symbol to style and re-populate the list mStyle->addSymbol( name, symbol, true ); // TODO groups and tags mModified = true; return true; }