Skip to content

Commit d8b271d

Browse files
committedDec 27, 2012
Merge pull request #367 from tecoholic/imp_style
Improved Style functionality. Fix recursive symbol dialogs
2 parents c419888 + 6a9c994 commit d8b271d

File tree

7 files changed

+34
-31
lines changed

7 files changed

+34
-31
lines changed
 

‎scripts/symbol_xml2db.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,15 +90,15 @@
9090
symdom.getElementsByTagName( "layer" )[ layerno ].appendChild( symbol )
9191
c.execute( "UPDATE symbol SET xml=? WHERE name=?", ( symdom.toxml(), parent_name ))
9292
else:
93-
c.execute( "INSERT INTO symbol VALUES (?,?,?,?)", ( None, symbol_name, symbol.toxml(), None ) )
93+
c.execute( "INSERT INTO symbol VALUES (?,?,?,?)", ( None, symbol_name, symbol.toxml(), 0 ) )
9494
conn.commit()
9595

9696

9797
# ColorRamps
9898
colorramps = dom.getElementsByTagName( "colorramp" )
9999
for ramp in colorramps:
100100
ramp_name = ramp.getAttribute( "name" )
101-
c.execute( "INSERT INTO colorramp VALUES (?,?,?,?)", ( None, ramp_name, ramp.toxml(), None ) )
101+
c.execute( "INSERT INTO colorramp VALUES (?,?,?,?)", ( None, ramp_name, ramp.toxml(), 0 ) )
102102
conn.commit()
103103

104104
# Finally close the sqlite cursor

‎src/core/symbology-ng/qgsstylev2.cpp

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -299,8 +299,14 @@ bool QgsStyleV2::load( QString filename )
299299
return false;
300300
}
301301

302+
// Make sure there are no Null fields in parenting symbols ang groups
303+
char *query = sqlite3_mprintf( "UPDATE symbol SET groupid=0 WHERE groupid IS NULL;"
304+
"UPDATE colorramp SET groupid=0 WHERE groupid IS NULL;"
305+
"UPDATE symgroup SET parent=0 WHERE parent IS NULL;");
306+
runEmptyQuery( query );
307+
302308
// First create all the main symbols
303-
const char *query = "SELECT * FROM symbol";
309+
query = sqlite3_mprintf( "SELECT * FROM symbol" );
304310

305311
sqlite3_stmt *ppStmt;
306312
int nError = sqlite3_prepare_v2( mCurrentDB, query, -1, &ppStmt, NULL );
@@ -323,8 +329,8 @@ bool QgsStyleV2::load( QString filename )
323329

324330
sqlite3_finalize( ppStmt );
325331

326-
const char *rquery = "SELECT * FROM colorramp";
327-
nError = sqlite3_prepare_v2( mCurrentDB, rquery, -1, &ppStmt, NULL );
332+
query = sqlite3_mprintf( "SELECT * FROM colorramp" );
333+
nError = sqlite3_prepare_v2( mCurrentDB, query, -1, &ppStmt, NULL );
328334
while ( nError == SQLITE_OK && sqlite3_step( ppStmt ) == SQLITE_ROW )
329335
{
330336
QDomDocument doc;
@@ -470,7 +476,7 @@ QgsSymbolGroupMap QgsStyleV2::childGroupNames( QString parent )
470476
// decide the query to be run based on parent group
471477
if ( parent == "" || parent == QString() )
472478
{
473-
query = sqlite3_mprintf( "SELECT * FROM symgroup WHERE parent IS NULL" );
479+
query = sqlite3_mprintf( "SELECT * FROM symgroup WHERE parent=0" );
474480
}
475481
else
476482
{
@@ -512,15 +518,11 @@ QStringList QgsStyleV2::symbolsOfGroup( StyleEntity type, int groupid )
512518
char *query;
513519
if ( type == SymbolEntity )
514520
{
515-
query = groupid
516-
? sqlite3_mprintf( "SELECT name FROM symbol WHERE groupid=%d", groupid )
517-
: sqlite3_mprintf( "SELECT name FROM symbol WHERE groupid IS NULL" );
521+
query = sqlite3_mprintf( "SELECT name FROM symbol WHERE groupid=%d", groupid );
518522
}
519523
else if ( type == ColorrampEntity )
520524
{
521-
query = groupid
522-
? sqlite3_mprintf( "SELECT name FROM colorramp WHERE groupid=%d", groupid )
523-
: sqlite3_mprintf( "SELECT name FROM colorramp WHERE groupid IS NULL" );
525+
query = sqlite3_mprintf( "SELECT name FROM colorramp WHERE groupid=%d", groupid );
524526
}
525527
else
526528
{
@@ -596,9 +598,7 @@ int QgsStyleV2::addGroup( QString groupName, int parentid )
596598
if ( !mCurrentDB )
597599
return 0;
598600

599-
char *query = parentid == 0
600-
? sqlite3_mprintf( "INSERT INTO symgroup VALUES (NULL, '%q', NULL)", groupName.toUtf8().constData() )
601-
: sqlite3_mprintf( "INSERT INTO symgroup VALUES (NULL, '%q', %d)", groupName.toUtf8().constData(), parentid );
601+
char *query = sqlite3_mprintf( "INSERT INTO symgroup VALUES (NULL, '%q', %d)", groupName.toUtf8().constData(), parentid );
602602

603603
sqlite3_stmt *ppStmt;
604604
int nErr = sqlite3_prepare_v2( mCurrentDB, query, -1, &ppStmt, NULL );
@@ -666,13 +666,9 @@ char* QgsStyleV2::getGroupRemoveQuery( int id )
666666

667667
sqlite3_finalize( ppStmt );
668668

669-
return parentid
670-
? sqlite3_mprintf( "UPDATE symbol SET groupid=%d WHERE groupid=%d;"
671-
"UPDATE symgroup SET parent=%d WHERE parent=%d;"
672-
"DELETE FROM symgroup WHERE id=%d", parentid, id, parentid, id, id )
673-
: sqlite3_mprintf( "UPDATE symbol SET groupid=NULL WHERE groupid=%d;"
674-
"UPDATE symgroup SET parent=NULL WHERE parent=%d;"
675-
"DELETE FROM symgroup WHERE id=%d", id, id, id );
669+
return sqlite3_mprintf( "UPDATE symbol SET groupid=%d WHERE groupid=%d;"
670+
"UPDATE symgroup SET parent=%d WHERE parent=%d;"
671+
"DELETE FROM symgroup WHERE id=%d", parentid, id, parentid, id, id );
676672
}
677673

678674
void QgsStyleV2::remove( StyleEntity type, int id )
@@ -734,14 +730,10 @@ bool QgsStyleV2::group( StyleEntity type, QString name, int groupid )
734730
switch ( type )
735731
{
736732
case SymbolEntity:
737-
query = groupid
738-
? sqlite3_mprintf( "UPDATE symbol SET groupid=%d WHERE name='%q'", groupid, name.toUtf8().constData() )
739-
: sqlite3_mprintf( "UPDATE symbol SET groupid=NULL WHERE name='%q'", name.toUtf8().constData() );
733+
query = sqlite3_mprintf( "UPDATE symbol SET groupid=%d WHERE name='%q'", groupid, name.toUtf8().constData() );
740734
break;
741735
case ColorrampEntity:
742-
query = groupid
743-
? sqlite3_mprintf( "UPDATE colorramp SET groupid=%d WHERE name='%q'", groupid, name.toUtf8().constData() )
744-
: sqlite3_mprintf( "UPDATE colorramp SET groupid=NULL WHERE name='%q'", name.toUtf8().constData() );
736+
query = sqlite3_mprintf( "UPDATE colorramp SET groupid=%d WHERE name='%q'", groupid, name.toUtf8().constData() );
745737
break;
746738

747739
default:

‎src/gui/symbology-ng/qgsstylev2managerdialog.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,10 @@ bool QgsStyleV2ManagerDialog::addSymbol()
350350
}
351351

352352
// get symbol design
353+
// NOTE : Set the parent widget as "this" to notify the Symbol selector
354+
// that, it is being called by Style Manager, so recursive calling
355+
// of style manger and symbol slector can be arrested
356+
// Look Also: editSymbol()
353357
QgsSymbolV2SelectorDialog dlg( symbol, mStyle, NULL, this );
354358
if ( dlg.exec() == 0 )
355359
{

‎src/gui/symbology-ng/qgssymbolslistwidget.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,13 @@ QgsSymbolsListWidget::QgsSymbolsListWidget( QgsSymbolV2* symbol, QgsStyleV2* sty
6262
viewSymbols->setModel( model );
6363
connect( viewSymbols->selectionModel(), SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ), this, SLOT( setSymbolFromStyle( const QModelIndex & ) ) );
6464

65+
if ( parent )
66+
{
67+
if ( dynamic_cast<QgsStyleV2ManagerDialog*>( parent->parentWidget() ) )
68+
{
69+
btnStyle->setVisible( false );
70+
}
71+
}
6572
// Set the Style Menu under btnStyle
6673
QMenu *styleMenu = new QMenu( btnStyle );
6774
QAction *styleMgrAction = new QAction( "Style Manager", styleMenu );

‎src/gui/symbology-ng/qgssymbolslistwidget.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class GUI_EXPORT QgsSymbolsListWidget : public QWidget, private Ui::SymbolsListW
3030
Q_OBJECT
3131

3232
public:
33-
QgsSymbolsListWidget( QgsSymbolV2* symbol, QgsStyleV2* style, QMenu* menu, QWidget* parent = NULL );
33+
QgsSymbolsListWidget( QgsSymbolV2* symbol, QgsStyleV2* style, QMenu* menu, QWidget* parent );
3434

3535
public slots:
3636
void setSymbolFromStyle( const QModelIndex & index );

‎src/gui/symbology-ng/qgssymbolv2selectordialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ void QgsSymbolV2SelectorDialog::layerChanged()
332332
{
333333
// then it must be a symbol
334334
// Now populate symbols of that type using the symbols list widget:
335-
QWidget *symbolsList = new QgsSymbolsListWidget( currentItem->symbol(), mStyle, mAdvancedMenu );
335+
QWidget *symbolsList = new QgsSymbolsListWidget( currentItem->symbol(), mStyle, mAdvancedMenu, this );
336336
setWidget( symbolsList );
337337
connect( symbolsList, SIGNAL( changed() ), this, SLOT( symbolChanged() ) );
338338
}

‎src/gui/symbology-ng/qgssymbolv2selectordialog.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class GUI_EXPORT QgsSymbolV2SelectorDialog : public QDialog, private Ui::QgsSymb
3737
Q_OBJECT
3838

3939
public:
40-
QgsSymbolV2SelectorDialog( QgsSymbolV2* symbol, QgsStyleV2* style, const QgsVectorLayer* vl, QWidget* parent = NULL, bool embedded = false );
40+
QgsSymbolV2SelectorDialog( QgsSymbolV2* symbol, QgsStyleV2* style, const QgsVectorLayer* vl, QWidget* parent = 0, bool embedded = false );
4141

4242
//! return menu for "advanced" button - create it if doesn't exist and show the advanced button
4343
QMenu* advancedMenu();

0 commit comments

Comments
 (0)
Please sign in to comment.