@@ -42,6 +42,8 @@ QgsComposerManager::QgsComposerManager( QWidget * parent, Qt::WindowFlags f ): Q
42
42
restoreGeometry ( settings.value ( " /Windows/ComposerManager/geometry" ).toByteArray () );
43
43
44
44
connect ( mButtonBox , SIGNAL ( rejected () ), this , SLOT ( close () ) );
45
+ connect ( QgisApp::instance (), SIGNAL ( composerAdded ( QgsComposerView* ) ), this , SLOT ( refreshComposers () ) );
46
+ connect ( QgisApp::instance (), SIGNAL ( composerRemoved ( QgsComposerView* ) ), this , SLOT ( refreshComposers () ) );
45
47
46
48
pb = new QPushButton ( tr ( " &Show" ) );
47
49
mButtonBox ->addButton ( pb, QDialogButtonBox::ActionRole );
@@ -59,28 +61,6 @@ QgsComposerManager::QgsComposerManager( QWidget * parent, Qt::WindowFlags f ): Q
59
61
mButtonBox ->addButton ( pb, QDialogButtonBox::ActionRole );
60
62
connect ( pb, SIGNAL ( clicked () ), this , SLOT ( rename_clicked () ) );
61
63
62
- initialize ();
63
- }
64
-
65
- QgsComposerManager::~QgsComposerManager ()
66
- {
67
- QSettings settings;
68
- settings.setValue ( " /Windows/ComposerManager/geometry" , saveGeometry () );
69
- }
70
-
71
- void QgsComposerManager::initialize ()
72
- {
73
- QSettings settings;
74
- QSet<QgsComposer*> composers = QgisApp::instance ()->printComposers ();
75
- QSet<QgsComposer*>::const_iterator it = composers.constBegin ();
76
- for ( ; it != composers.constEnd (); ++it )
77
- {
78
- QListWidgetItem* item = new QListWidgetItem (( *it )->title (), mComposerListWidget );
79
- item->setFlags ( Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable );
80
- mItemComposerMap .insert ( item, *it );
81
- }
82
- mComposerListWidget ->sortItems ();
83
-
84
64
mTemplate ->addItem ( tr ( " Empty composer" ) );
85
65
mTemplate ->addItem ( tr ( " Specific" ) );
86
66
@@ -109,6 +89,30 @@ void QgsComposerManager::initialize()
109
89
}
110
90
111
91
mTemplatePathLineEdit ->setText ( settings.value ( " /UI/ComposerManager/templatePath" , QString ( " " ) ).toString () );
92
+
93
+ refreshComposers ();
94
+ }
95
+
96
+ QgsComposerManager::~QgsComposerManager ()
97
+ {
98
+ QSettings settings;
99
+ settings.setValue ( " /Windows/ComposerManager/geometry" , saveGeometry () );
100
+ }
101
+
102
+ void QgsComposerManager::refreshComposers ()
103
+ {
104
+ mItemComposerMap .clear ();
105
+ mComposerListWidget ->clear ();
106
+
107
+ QSet<QgsComposer*> composers = QgisApp::instance ()->printComposers ();
108
+ QSet<QgsComposer*>::const_iterator it = composers.constBegin ();
109
+ for ( ; it != composers.constEnd (); ++it )
110
+ {
111
+ QListWidgetItem* item = new QListWidgetItem (( *it )->title (), mComposerListWidget );
112
+ item->setFlags ( Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable );
113
+ mItemComposerMap .insert ( item, *it );
114
+ }
115
+ mComposerListWidget ->sortItems ();
112
116
}
113
117
114
118
QMap<QString, QString> QgsComposerManager::defaultTemplates ( bool fromUser ) const
@@ -200,25 +204,11 @@ void QgsComposerManager::on_mAddButton_clicked()
200
204
}
201
205
}
202
206
203
- if ( loadedOK )
207
+ if ( newComposer && ! loadedOK )
204
208
{
205
- // do not close on Add, since user may want to add multiple composers from templates
206
- QListWidgetItem* item = new QListWidgetItem ( newComposer->title (), mComposerListWidget );
207
- item->setFlags ( Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable );
208
- mItemComposerMap .insert ( item, newComposer );
209
-
210
- mComposerListWidget ->sortItems ();
211
- mComposerListWidget ->setCurrentItem ( item );
212
- mComposerListWidget ->setFocus ();
213
- }
214
- else
215
- {
216
- if ( newComposer )
217
- {
218
- newComposer->close ();
219
- QgisApp::instance ()->deleteComposer ( newComposer );
220
- newComposer = 0 ;
221
- }
209
+ newComposer->close ();
210
+ QgisApp::instance ()->deleteComposer ( newComposer );
211
+ newComposer = 0 ;
222
212
QMessageBox::warning ( this , tr ( " Template error" ), tr ( " Error, could not load template file" ) );
223
213
}
224
214
}
@@ -288,10 +278,6 @@ void QgsComposerManager::remove_clicked()
288
278
{
289
279
QgisApp::instance ()->deleteComposer ( it.value () );
290
280
}
291
- mItemComposerMap .remove ( item );
292
- mComposerListWidget ->removeItemWidget ( item );
293
- // and remove the list widget row
294
- delete ( mComposerListWidget ->takeItem ( mComposerListWidget ->row ( item ) ) );
295
281
}
296
282
297
283
void QgsComposerManager::show_clicked ()
@@ -350,7 +336,6 @@ void QgsComposerManager::show_clicked()
350
336
if ( c )
351
337
{
352
338
c->readXML( templateDoc );
353
- mItemComposerMap.insert( it.key(), c );
354
339
}
355
340
}
356
341
0 commit comments