[QGIS Commit] r9732 - in branches/advanced_printing_branch2/src:
app/composer ui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Wed Dec 3 07:52:21 EST 2008
Author: mhugent
Date: 2008-12-03 07:52:20 -0500 (Wed, 03 Dec 2008)
New Revision: 9732
Modified:
branches/advanced_printing_branch2/src/app/composer/qgscomposer.cpp
branches/advanced_printing_branch2/src/app/composer/qgscomposer.h
branches/advanced_printing_branch2/src/ui/qgscomposerbase.ui
Log:
First implementation of template mechanism
Modified: branches/advanced_printing_branch2/src/app/composer/qgscomposer.cpp
===================================================================
--- branches/advanced_printing_branch2/src/app/composer/qgscomposer.cpp 2008-12-03 11:20:02 UTC (rev 9731)
+++ branches/advanced_printing_branch2/src/app/composer/qgscomposer.cpp 2008-12-03 12:52:20 UTC (rev 9732)
@@ -72,6 +72,8 @@
QString myIconPath = QgsApplication::activeThemePath();
// Actions defined in qgscomposerbase.ui:
+ //mActionSaveAsTemplate
+ //mActionLoadFromTemplate
// mActionAddNewMap
// mActionAddNewLegend
// mActionAddNewLabel
@@ -79,6 +81,12 @@
// mActionAddImage
// mActionSelectMoveItem
+ connect(mActionSaveAsTemplate, SIGNAL(triggered()), this, SLOT(saveAsTemplate()));
+
+ //QAction* loadFromTemplateAction = toolBar->addAction(tr("Load from template"));
+ connect(mActionLoadFromTemplate, SIGNAL(triggered()), this, SLOT(loadFromTemplate()));
+ //toolBar->addAction(loadFromTemplateAction);
+
QAction* moveItemContentAction = new QAction( QIcon( QPixmap( myIconPath + "mActionMoveItemContent.png" ) ),
tr( "Move Content" ), 0 );
moveItemContentAction->setToolTip( tr( "Move item content" ) );
@@ -310,6 +318,8 @@
{
//now set all the icons - getThemeIcon will fall back to default theme if its
//missing from active theme
+ mActionLoadFromTemplate->setIcon(QgisApp::getThemeIcon("/mActionFileOpen.png"));
+ mActionSaveAsTemplate->setIcon(QgisApp::getThemeIcon("/mActionFileSaveAs.png"));
mActionExportAsImage->setIcon( QgisApp::getThemeIcon( "/mActionExportMapServer.png" ) );
mActionExportAsSVG->setIcon( QgisApp::getThemeIcon( "/mActionSaveAsSVG.png" ) );
mActionPrint->setIcon( QgisApp::getThemeIcon( "/mActionFilePrint.png" ) );
@@ -806,6 +816,50 @@
}
}
+void QgsComposer::saveAsTemplate(void)
+{
+ //show file dialog
+ QString saveFileName = QFileDialog::getSaveFileName( 0, tr("save template"), QString(), "*.qpt");
+ if(saveFileName.isEmpty())
+ {
+ return;
+ }
+
+ QFile templateFile(saveFileName);
+ if(!templateFile.open(QIODevice::ReadWrite))
+ {
+ return;
+ }
+
+ QDomDocument saveDocument;
+ writeXML(saveDocument, saveDocument);
+
+ if(templateFile.write (saveDocument.toByteArray()) == -1)
+ {
+ QMessageBox::warning(0, tr("Save error"), tr("Error, could not save file"));
+ }
+}
+
+void QgsComposer::loadFromTemplate(void)
+{
+ QString openFileString = QFileDialog::getOpenFileName(0, tr("Load template"), QString(), "*.qpt");
+ QFile templateFile(openFileString);
+ if(!templateFile.open(QIODevice::ReadOnly))
+ {
+ QMessageBox::warning(0, tr("Read error"), tr("Error, could not read file"));
+ return;
+ }
+
+ QDomDocument templateDocument;
+ if(!templateDocument.setContent(&templateFile, false))
+ {
+ QMessageBox::warning(0, tr("Read error"), tr("Content of template file is not valid"));
+ return;
+ }
+
+ readXML(templateDocument);
+}
+
void QgsComposer::moveItemContent()
{
if ( mView )
@@ -956,6 +1010,7 @@
void QgsComposer::writeXML( QDomDocument& doc )
{
+
QDomNodeList nl = doc.elementsByTagName( "qgis" );
if ( nl.count() < 1 )
{
@@ -967,8 +1022,13 @@
return;
}
+ writeXML(qgisElem, doc);
+}
+
+void QgsComposer::writeXML(QDomNode& parentNode, QDomDocument& doc)
+{
QDomElement composerElem = doc.createElement( "Composer" );
- qgisElem.appendChild( composerElem );
+ parentNode.appendChild( composerElem );
//store composer items:
QMap<QgsComposerItem*, QWidget*>::const_iterator itemIt = mItemWidgetMap.constBegin();
@@ -984,9 +1044,6 @@
{
mComposition->writeXML( composerElem, doc );
}
-
-
- return;
}
void QgsComposer::readXML( const QDomDocument& doc )
Modified: branches/advanced_printing_branch2/src/app/composer/qgscomposer.h
===================================================================
--- branches/advanced_printing_branch2/src/app/composer/qgscomposer.h 2008-12-03 11:20:02 UTC (rev 9731)
+++ branches/advanced_printing_branch2/src/app/composer/qgscomposer.h 2008-12-03 12:52:20 UTC (rev 9732)
@@ -129,6 +129,11 @@
//! Add new picture
void on_mActionAddImage_activated( void );
+ //! Save composer as template
+ void saveAsTemplate(void);
+
+ void loadFromTemplate(void);
+
//! Set tool to move item content
void moveItemContent();
@@ -228,6 +233,8 @@
//! Displays a warning because of possible min/max size in WMS
void showWMSPrintingWarning();
+ //! Writes state under DOM element
+ void writeXML(QDomNode& parentNode, QDomDocument& doc);
//! Pointer to composer view
QgsComposerView *mView;
Modified: branches/advanced_printing_branch2/src/ui/qgscomposerbase.ui
===================================================================
--- branches/advanced_printing_branch2/src/ui/qgscomposerbase.ui 2008-12-03 11:20:02 UTC (rev 9731)
+++ branches/advanced_printing_branch2/src/ui/qgscomposerbase.ui 2008-12-03 12:52:20 UTC (rev 9732)
@@ -229,6 +229,8 @@
<attribute name="toolBarBreak" >
<bool>false</bool>
</attribute>
+ <addaction name="mActionLoadFromTemplate" />
+ <addaction name="mActionSaveAsTemplate" />
<addaction name="mActionExportAsImage" />
<addaction name="mActionExportAsSVG" />
<addaction name="mActionPrint" />
@@ -367,6 +369,22 @@
<string>Add Image</string>
</property>
</action>
+ <action name="mActionLoadFromTemplate" >
+ <property name="icon" >
+ <iconset>../../images/themes/default/mActionFileOpen.png</iconset>
+ </property>
+ <property name="text" >
+ <string>loadFromTemplate</string>
+ </property>
+ </action>
+ <action name="mActionSaveAsTemplate" >
+ <property name="icon" >
+ <iconset>../../images/themes/default/mActionFileSaveAs.png</iconset>
+ </property>
+ <property name="text" >
+ <string>saveAsTemplate</string>
+ </property>
+ </action>
</widget>
<tabstops>
<tabstop>mOptionsTabWidget</tabstop>
More information about the QGIS-commit
mailing list