@@ -118,6 +118,8 @@ QgsSymbolsListWidget::QgsSymbolsListWidget( QgsSymbolV2* symbol, QgsStyleV2* sty
118118 btnColor->setAllowAlpha ( true );
119119 btnColor->setColorDialogTitle ( tr ( " Select color" ) );
120120 btnColor->setContext ( " symbology" );
121+
122+ connect ( btnSaveSymbol, SIGNAL ( clicked () ), this , SLOT ( saveSymbol () ) );
121123}
122124
123125QgsSymbolsListWidget::~QgsSymbolsListWidget ()
@@ -360,6 +362,34 @@ void QgsSymbolsListWidget::addSymbolToStyle()
360362 populateSymbolView ();
361363}
362364
365+ void QgsSymbolsListWidget::saveSymbol ()
366+ {
367+ bool ok;
368+ QString name = QInputDialog::getText ( this , tr ( " Symbol name" ),
369+ tr ( " Please enter name for the symbol:" ), QLineEdit::Normal, tr ( " New symbol" ), &ok );
370+ if ( !ok || name.isEmpty () )
371+ return ;
372+
373+ // check if there is no symbol with same name
374+ if ( mStyle ->symbolNames ().contains ( name ) )
375+ {
376+ int res = QMessageBox::warning ( this , tr ( " Save symbol" ),
377+ tr ( " Symbol with name '%1' already exists. Overwrite?" )
378+ .arg ( name ),
379+ QMessageBox::Yes | QMessageBox::No );
380+ if ( res != QMessageBox::Yes )
381+ {
382+ return ;
383+ }
384+ }
385+
386+ // add new symbol to style and re-populate the list
387+ mStyle ->addSymbol ( name, mSymbol ->clone () );
388+
389+ // make sure the symbol is stored
390+ mStyle ->saveSymbol ( name, mSymbol ->clone (), 0 , QStringList () );
391+ }
392+
363393void QgsSymbolsListWidget::on_mSymbolUnitWidget_changed ()
364394{
365395 if ( mSymbol )
0 commit comments