[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