Skip to content

Commit 4941a0e

Browse files
committed
Add new, duplicate and delete composer to iface
- Works via QgsComposerView, which is already exposed in iface
1 parent d56ad40 commit 4941a0e

File tree

4 files changed

+99
-0
lines changed

4 files changed

+99
-0
lines changed

python/gui/qgisinterface.sip

+20
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,26 @@ class QgisInterface : QObject
121121
/**Return mainwindows / composer views of running composer instances (currently only one)*/
122122
virtual QList<QgsComposerView*> activeComposers() = 0;
123123

124+
/** Create a new composer
125+
* @param title window title for new composer (one will be generated if empty)
126+
* @return pointer to composer's view
127+
* @note new composer window will be shown and activated (added in 1.9)
128+
*/
129+
virtual QgsComposerView* createNewComposer( QString title = QString( "" ) ) = 0;
130+
131+
/** Duplicate an existing parent composer from composer view
132+
* @param composerView pointer to existing composer view
133+
* @param title window title for duplicated composer (one will be generated if empty)
134+
* @return pointer to duplicate composer's view
135+
* @note dupicate composer window will be hidden until loaded, then shown and activated (added in 1.9)
136+
*/
137+
virtual QgsComposerView* duplicateComposer( QgsComposerView* composerView, QString title = QString( "" ) ) = 0;
138+
139+
/** Deletes parent composer of composer view, after closing composer window
140+
* @note (added in 1.9)
141+
*/
142+
virtual void deleteComposer( QgsComposerView* composerView ) = 0;
143+
124144
/** Return changeable options built from settings and/or defaults
125145
* @note (added in 1.9)
126146
*/

src/app/qgisappinterface.cpp

+39
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include "qgisappstylesheet.h"
2727
#include "qgisapp.h"
2828
#include "qgscomposer.h"
29+
#include "qgscomposerview.h"
2930
#include "qgsmaplayer.h"
3031
#include "qgsmaplayerregistry.h"
3132
#include "qgsmapcanvas.h"
@@ -290,6 +291,44 @@ QList<QgsComposerView*> QgisAppInterface::activeComposers()
290291
return composerViewList;
291292
}
292293

294+
QgsComposerView* QgisAppInterface::createNewComposer( QString title )
295+
{
296+
QgsComposer* composerObj = 0;
297+
composerObj = qgis->createNewComposer( title );
298+
if ( composerObj )
299+
{
300+
return composerObj->view();
301+
}
302+
return 0;
303+
}
304+
305+
QgsComposerView* QgisAppInterface::duplicateComposer( QgsComposerView* composerView, QString title )
306+
{
307+
QgsComposer* composerObj = 0;
308+
composerObj = qobject_cast<QgsComposer *>( composerView->composerWindow() );
309+
if ( composerObj )
310+
{
311+
QgsComposer* dupComposer = qgis->duplicateComposer( composerObj, title );
312+
if ( dupComposer )
313+
{
314+
return dupComposer->view();
315+
}
316+
}
317+
return 0;
318+
}
319+
320+
void QgisAppInterface::deleteComposer( QgsComposerView* composerView )
321+
{
322+
composerView->composerWindow()->close();
323+
324+
QgsComposer* composerObj = 0;
325+
composerObj = qobject_cast<QgsComposer *>( composerView->composerWindow() );
326+
if ( composerObj )
327+
{
328+
qgis->deleteComposer( composerObj );
329+
}
330+
}
331+
293332
QMap<QString, QVariant> QgisAppInterface::defaultStyleSheetOptions()
294333
{
295334
return qgis->styleSheetBuilder()->defaultOptions();

src/app/qgisappinterface.h

+20
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,26 @@ class QgisAppInterface : public QgisInterface
125125

126126
QList<QgsComposerView*> activeComposers();
127127

128+
/** Create a new composer
129+
* @param title window title for new composer (one will be generated if empty)
130+
* @return pointer to composer's view
131+
* @note new composer window will be shown and activated (added in 1.9)
132+
*/
133+
QgsComposerView* createNewComposer( QString title = QString( "" ) );
134+
135+
/** Duplicate an existing parent composer from composer view
136+
* @param composerView pointer to existing composer view
137+
* @param title window title for duplicated composer (one will be generated if empty)
138+
* @return pointer to duplicate composer's view
139+
* @note dupicate composer window will be hidden until loaded, then shown and activated (added in 1.9)
140+
*/
141+
QgsComposerView* duplicateComposer( QgsComposerView* composerView, QString title = QString( "" ) );
142+
143+
/** Deletes parent composer of composer view, after closing composer window
144+
* @note (added in 1.9)
145+
*/
146+
void deleteComposer( QgsComposerView* composerView );
147+
128148
/** Return changeable options built from settings and/or defaults
129149
* @note (added in 1.9)
130150
*/

src/gui/qgisinterface.h

+20
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,26 @@ class GUI_EXPORT QgisInterface : public QObject
166166
/**Return mainwindows / composer views of running composer instances (currently only one)*/
167167
virtual QList<QgsComposerView*> activeComposers() = 0;
168168

169+
/** Create a new composer
170+
* @param title window title for new composer (one will be generated if empty)
171+
* @return pointer to composer's view
172+
* @note new composer window will be shown and activated (added in 1.9)
173+
*/
174+
virtual QgsComposerView* createNewComposer( QString title = QString( "" ) ) = 0;
175+
176+
/** Duplicate an existing parent composer from composer view
177+
* @param composerView pointer to existing composer view
178+
* @param title window title for duplicated composer (one will be generated if empty)
179+
* @return pointer to duplicate composer's view
180+
* @note dupicate composer window will be hidden until loaded, then shown and activated (added in 1.9)
181+
*/
182+
virtual QgsComposerView* duplicateComposer( QgsComposerView* composerView, QString title = QString( "" ) ) = 0;
183+
184+
/** Deletes parent composer of composer view, after closing composer window
185+
* @note (added in 1.9)
186+
*/
187+
virtual void deleteComposer( QgsComposerView* composerView ) = 0;
188+
169189
/** Return changeable options built from settings and/or defaults
170190
* @note (added in 1.9)
171191
*/

0 commit comments

Comments
 (0)