diff --git a/python/gui/qgisinterface.sip b/python/gui/qgisinterface.sip index 9eacbf198dd..b312dcb0987 100644 --- a/python/gui/qgisinterface.sip +++ b/python/gui/qgisinterface.sip @@ -121,6 +121,26 @@ class QgisInterface : QObject /**Return mainwindows / composer views of running composer instances (currently only one)*/ virtual QList activeComposers() = 0; + /** Create a new composer + * @param title window title for new composer (one will be generated if empty) + * @return pointer to composer's view + * @note new composer window will be shown and activated (added in 1.9) + */ + virtual QgsComposerView* createNewComposer( QString title = QString( "" ) ) = 0; + + /** Duplicate an existing parent composer from composer view + * @param composerView pointer to existing composer view + * @param title window title for duplicated composer (one will be generated if empty) + * @return pointer to duplicate composer's view + * @note dupicate composer window will be hidden until loaded, then shown and activated (added in 1.9) + */ + virtual QgsComposerView* duplicateComposer( QgsComposerView* composerView, QString title = QString( "" ) ) = 0; + + /** Deletes parent composer of composer view, after closing composer window + * @note (added in 1.9) + */ + virtual void deleteComposer( QgsComposerView* composerView ) = 0; + /** Return changeable options built from settings and/or defaults * @note (added in 1.9) */ diff --git a/src/app/qgisappinterface.cpp b/src/app/qgisappinterface.cpp index 579c5873c52..e2cc121579b 100644 --- a/src/app/qgisappinterface.cpp +++ b/src/app/qgisappinterface.cpp @@ -26,6 +26,7 @@ #include "qgisappstylesheet.h" #include "qgisapp.h" #include "qgscomposer.h" +#include "qgscomposerview.h" #include "qgsmaplayer.h" #include "qgsmaplayerregistry.h" #include "qgsmapcanvas.h" @@ -290,6 +291,44 @@ QList QgisAppInterface::activeComposers() return composerViewList; } +QgsComposerView* QgisAppInterface::createNewComposer( QString title ) +{ + QgsComposer* composerObj = 0; + composerObj = qgis->createNewComposer( title ); + if ( composerObj ) + { + return composerObj->view(); + } + return 0; +} + +QgsComposerView* QgisAppInterface::duplicateComposer( QgsComposerView* composerView, QString title ) +{ + QgsComposer* composerObj = 0; + composerObj = qobject_cast( composerView->composerWindow() ); + if ( composerObj ) + { + QgsComposer* dupComposer = qgis->duplicateComposer( composerObj, title ); + if ( dupComposer ) + { + return dupComposer->view(); + } + } + return 0; +} + +void QgisAppInterface::deleteComposer( QgsComposerView* composerView ) +{ + composerView->composerWindow()->close(); + + QgsComposer* composerObj = 0; + composerObj = qobject_cast( composerView->composerWindow() ); + if ( composerObj ) + { + qgis->deleteComposer( composerObj ); + } +} + QMap QgisAppInterface::defaultStyleSheetOptions() { return qgis->styleSheetBuilder()->defaultOptions(); diff --git a/src/app/qgisappinterface.h b/src/app/qgisappinterface.h index 9c5fb3d45a7..d3eb4ba7692 100644 --- a/src/app/qgisappinterface.h +++ b/src/app/qgisappinterface.h @@ -125,6 +125,26 @@ class QgisAppInterface : public QgisInterface QList activeComposers(); + /** Create a new composer + * @param title window title for new composer (one will be generated if empty) + * @return pointer to composer's view + * @note new composer window will be shown and activated (added in 1.9) + */ + QgsComposerView* createNewComposer( QString title = QString( "" ) ); + + /** Duplicate an existing parent composer from composer view + * @param composerView pointer to existing composer view + * @param title window title for duplicated composer (one will be generated if empty) + * @return pointer to duplicate composer's view + * @note dupicate composer window will be hidden until loaded, then shown and activated (added in 1.9) + */ + QgsComposerView* duplicateComposer( QgsComposerView* composerView, QString title = QString( "" ) ); + + /** Deletes parent composer of composer view, after closing composer window + * @note (added in 1.9) + */ + void deleteComposer( QgsComposerView* composerView ); + /** Return changeable options built from settings and/or defaults * @note (added in 1.9) */ diff --git a/src/gui/qgisinterface.h b/src/gui/qgisinterface.h index 475039c6c40..f8278b83037 100644 --- a/src/gui/qgisinterface.h +++ b/src/gui/qgisinterface.h @@ -166,6 +166,26 @@ class GUI_EXPORT QgisInterface : public QObject /**Return mainwindows / composer views of running composer instances (currently only one)*/ virtual QList activeComposers() = 0; + /** Create a new composer + * @param title window title for new composer (one will be generated if empty) + * @return pointer to composer's view + * @note new composer window will be shown and activated (added in 1.9) + */ + virtual QgsComposerView* createNewComposer( QString title = QString( "" ) ) = 0; + + /** Duplicate an existing parent composer from composer view + * @param composerView pointer to existing composer view + * @param title window title for duplicated composer (one will be generated if empty) + * @return pointer to duplicate composer's view + * @note dupicate composer window will be hidden until loaded, then shown and activated (added in 1.9) + */ + virtual QgsComposerView* duplicateComposer( QgsComposerView* composerView, QString title = QString( "" ) ) = 0; + + /** Deletes parent composer of composer view, after closing composer window + * @note (added in 1.9) + */ + virtual void deleteComposer( QgsComposerView* composerView ) = 0; + /** Return changeable options built from settings and/or defaults * @note (added in 1.9) */