[QGIS Commit] r8918 -
branches/advanced_printing_branch/src/app/composer
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sat Jul 26 10:24:21 EDT 2008
Author: mhugent
Date: 2008-07-26 10:24:20 -0400 (Sat, 26 Jul 2008)
New Revision: 8918
Modified:
branches/advanced_printing_branch/src/app/composer/qgscomposer.cpp
branches/advanced_printing_branch/src/app/composer/qgscomposer.h
branches/advanced_printing_branch/src/app/composer/qgscomposeritem.cpp
branches/advanced_printing_branch/src/app/composer/qgscomposeritem.h
branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.cpp
branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.h
branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.cpp
branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.h
branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp
branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h
branches/advanced_printing_branch/src/app/composer/qgscomposermap.cpp
branches/advanced_printing_branch/src/app/composer/qgscomposermap.h
branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.cpp
branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.h
Log:
First code to save items to xml
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposer.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposer.cpp 2008-07-26 09:36:31 UTC (rev 8917)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposer.cpp 2008-07-26 14:24:20 UTC (rev 8918)
@@ -126,6 +126,7 @@
mSizeGrip->resize(mSizeGrip->sizeHint());
mSizeGrip->move(rect().bottomRight() - mSizeGrip->rect().bottomRight());
+#if 0 //hopefully not necessary any more
if ( ! connect( mQgis, SIGNAL( projectRead() ), this, SLOT( projectRead()) ) ) {
qDebug( "unable to connect to projectRead" );
}
@@ -136,10 +137,19 @@
if ( ! connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(saveWindowState()) ) ) {
qDebug( "unable to connect to aboutToQuit" );
}
+#endif //0
+
restoreWindowState();
selectItem(); // Set selection tool
mView->setFocus();
+
+ //connect with signals from QgsProject to read/write project files
+ if(QgsProject::instance())
+ {
+ connect(QgsProject::instance(), SIGNAL(readProject(const QDomDocument&)), this, SLOT(readXML(const QDomDocument& doc)));
+ connect(QgsProject::instance(), SIGNAL(writeProject(QDomDocument&)), this, SLOT(writeXML(QDomDocument&)));
+ }
}
QgsComposer::~QgsComposer()
@@ -1105,24 +1115,39 @@
return ok;
}
-bool QgsComposer::writeXML( QDomNode & node, QDomDocument & doc )
+void QgsComposer::writeXML(QDomDocument& doc)
{
-#ifdef QGISDEBUG
- std::cout << "QgsComposer::writeXML" << std::endl;
-#endif
- QDomElement compositionsNode = doc.createElement("compositions");
+ QDomNodeList nl = doc.elementsByTagName("qgis");
+ if (nl.count() < 1)
+ {
+ return;
+ }
+ QDomElement qgisElem = nl.at(0).toElement();
+ if(qgisElem.isNull())
+ {
+ return;
+ }
+
+ QDomElement composerNode = doc.createElement("composer");
+ qgisElem.appendChild( composerNode );
- node.appendChild( compositionsNode );
+ //store composer items:
+ QMap<QgsComposerItem*, QWidget*>::const_iterator itemIt = mItemWidgetMap.constBegin();
+ for(; itemIt != mItemWidgetMap.constEnd(); ++itemIt)
+ {
+ itemIt.key()->writeXML(composerNode, doc);
+ }
- return true;
+ //store composer view
+
+ //store composition
+
+ return;
}
-bool QgsComposer::readXML( QDomNode & node )
+void QgsComposer::readXML(const QDomDocument& doc)
{
-#ifdef QGISDEBUG
- std::cout << "QgsComposer::readXML" << std::endl;
-#endif
- return true;
+ //todo...
}
void QgsComposer::addComposerMap(QgsComposerMap* map)
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposer.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposer.h 2008-07-26 09:36:31 UTC (rev 8917)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposer.h 2008-07-26 14:24:20 UTC (rev 8918)
@@ -86,12 +86,6 @@
/** \brief read state from project */
bool readSettings ( void );
- //! Stores state in DOM node
- bool writeXML( QDomNode & node, QDomDocument & doc);
-
- //! Sets state from DOM document
- bool readXML( QDomNode & node );
-
//! Restore the window and toolbar state
void restoreWindowState();
@@ -183,6 +177,15 @@
/**Shows the configuration widget for a composer item*/
void showItemOptions(const QgsComposerItem* i);
+ //XML, usually connected with QgsProject::readProject and QgsProject::writeProject
+
+ //! Stores state in DOM node
+ void writeXML(QDomDocument& doc);
+
+ //! Sets state from DOM document
+ void readXML( const QDomDocument& doc);
+
+
private:
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposeritem.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposeritem.cpp 2008-07-26 09:36:31 UTC (rev 8917)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposeritem.cpp 2008-07-26 14:24:20 UTC (rev 8918)
@@ -58,11 +58,51 @@
bool QgsComposerItem::readSettings ( void ) { return true; }
bool QgsComposerItem::removeSettings ( void ) { return true; }
-
-bool QgsComposerItem::writeXML( QDomNode & node, QDomDocument & doc, bool templ ) { return true; }
-bool QgsComposerItem::readXML( QDomNode & node ) { return true; }
+bool QgsComposerItem::_writeXML(QDomElement& itemElem, QDomDocument& doc)
+{
+ //to come
+ return true;
+}
+bool QgsComposerItem::readXML( QDomElement& elem) { return true; }
+
+void QgsComposerItem::writeFontXML(const QFont& font, QDomElement& parent, QDomDocument& doc)
+{
+ if(parent.isNull())
+ {
+ return;
+ }
+
+ QDomElement fontElem = doc.createElement("Font");
+ bool boldValue = font.bold();
+ bool italic = font.italic();
+ double size = font.pointSizeF();
+
+ if(boldValue)
+ {
+ fontElem.setAttribute("bold", "true");
+ }
+ else
+ {
+ fontElem.setAttribute("bold", "false");
+ }
+
+ if(italic)
+ {
+ fontElem.setAttribute("italic", "true");
+ }
+ else
+ {
+ fontElem.setAttribute("italic", "false");
+ }
+
+ fontElem.setAttribute("pointSize", QString::number(size));
+ fontElem.setAttribute("family", font.family());
+
+ parent.appendChild(fontElem);
+}
+
void QgsComposerItem::mouseMoveEvent ( QGraphicsSceneMouseEvent * event )
{
qWarning("QgsComposerItem::mouseMoveEvent");
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposeritem.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposeritem.h 2008-07-26 09:36:31 UTC (rev 8917)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposeritem.h 2008-07-26 14:24:20 UTC (rev 8918)
@@ -21,8 +21,8 @@
#include <QGraphicsRectItem>
class QWidget;
-class QDomNode;
class QDomDocument;
+class QDomElement;
class QqsComposition;
@@ -75,16 +75,24 @@
virtual void setSceneRect(const QRectF& rectangle);
/** stores state in DOM node
- * @param node is DOM node corresponding to '???' tag
+ * @param node is DOM node corresponding to 'Composer' tag
* @param temp write template file
*/
- virtual bool writeXML( QDomNode & node, QDomDocument & doc, bool templ = false );
+ virtual bool writeXML(QDomElement& elem, QDomDocument & doc) = 0;
+ /**Writes parameter that are not subclass specific in document. Usually called from subclass specific methods*/
+ bool _writeXML(QDomElement& itemElem, QDomDocument& doc);
+
+ /**Creates a font element and appends it to parent*/
+ void writeFontXML(const QFont& font, QDomElement& parent, QDomDocument& doc);
+
/** sets state from DOM document
- * @param node is DOM node corresponding to '???' tag
+ * @param node is DOM node corresponding to 'Composer' tag
*/
- virtual bool readXML( QDomNode & node );
+ virtual bool readXML( QDomElement& elem);
+
+
bool frame() const {return mFrame;}
void setFrame(bool drawFrame){mFrame = drawFrame;}
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.cpp 2008-07-26 09:36:31 UTC (rev 8917)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.cpp 2008-07-26 14:24:20 UTC (rev 8918)
@@ -164,3 +164,8 @@
p->drawRect (QRectF( 0, 0, rect().width(), rect().height()));
}
}
+
+bool QgsComposerItemGroup::writeXML(QDomElement& elem, QDomDocument & doc)
+{
+ return true;
+}
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.h 2008-07-26 09:36:31 UTC (rev 8917)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposeritemgroup.h 2008-07-26 14:24:20 UTC (rev 8918)
@@ -40,6 +40,12 @@
/** resizes an item in x- and y direction (scene coordinates)*/
void resize(double dx, double dy);
+ /** stores state in DOM node
+ * @param elem is DOM element corresponding to 'Composer' tag
+ * @param temp write template file
+ */
+ bool writeXML(QDomElement& elem, QDomDocument & doc);
+
signals:
void childItemDeleted(QgsComposerItem* item);
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.cpp 2008-07-26 09:36:31 UTC (rev 8917)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.cpp 2008-07-26 14:24:20 UTC (rev 8918)
@@ -16,6 +16,7 @@
***************************************************************************/
#include "qgscomposerlabel.h"
+#include <QDomElement>
#include <QPainter>
QgsComposerLabel::QgsComposerLabel( QgsComposition *composition): QgsComposerItem(composition), mMargin(0.0)
@@ -64,4 +65,26 @@
setSceneRect(QRectF(transform().dx(), transform().dy(), fontInfo.width(mText) + 2 * mMargin, fontInfo.ascent() + 2 * mMargin));
}
+bool QgsComposerLabel::writeXML(QDomElement& elem, QDomDocument & doc)
+{
+ if(elem.isNull())
+ {
+ return false;
+ }
+ QDomElement composerLabelElem = doc.createElement("ComposerLabel");
+
+ composerLabelElem.setAttribute("labelText", mText);
+ composerLabelElem.setAttribute("margin", mMargin);
+
+
+ //font
+ QDomElement labelFontElem = doc.createElement("LabelFont");
+ writeFontXML(mFont, labelFontElem, doc);
+ composerLabelElem.appendChild(labelFontElem);
+
+ elem.appendChild(composerLabelElem);
+ return _writeXML(composerLabelElem, doc);
+}
+
+
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.h 2008-07-26 09:36:31 UTC (rev 8917)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.h 2008-07-26 14:24:20 UTC (rev 8918)
@@ -37,6 +37,12 @@
void setFont(const QFont& f);
double margin(){return mMargin;}
void setMargin(double m){mMargin = m;}
+
+ /** stores state in DOM node
+ * @param node is DOM node corresponding to 'Composer' tag
+ * @param temp write template file
+ */
+ bool writeXML(QDomElement& elem, QDomDocument & doc);
private:
// Text
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp 2008-07-26 09:36:31 UTC (rev 8917)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp 2008-07-26 14:24:20 UTC (rev 8918)
@@ -317,3 +317,8 @@
currentXPosition += mSymbolWidth;
}
+
+bool QgsComposerLegend::writeXML(QDomElement& elem, QDomDocument & doc)
+{
+ return true;
+}
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h 2008-07-26 09:36:31 UTC (rev 8917)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h 2008-07-26 14:24:20 UTC (rev 8918)
@@ -72,6 +72,12 @@
double symbolHeight() const {return mSymbolHeight;}
void setSymbolHeight(double h){mSymbolHeight = h;}
+ /** stores state in DOM node
+ * @param elem is DOM element corresponding to 'Composer' tag
+ * @param temp write template file
+ */
+ bool writeXML(QDomElement& elem, QDomDocument & doc);
+
protected:
QString mTitle;
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposermap.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposermap.cpp 2008-07-26 09:36:31 UTC (rev 8917)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposermap.cpp 2008-07-26 14:24:20 UTC (rev 8918)
@@ -325,3 +325,8 @@
}
return result;
}
+
+bool QgsComposerMap::writeXML(QDomElement& elem, QDomDocument & doc)
+{
+ return true;
+}
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposermap.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposermap.h 2008-07-26 09:36:31 UTC (rev 8917)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposermap.h 2008-07-26 14:24:20 UTC (rev 8918)
@@ -104,6 +104,12 @@
const QgsMapCanvas* mapCanvas() const {return mMapCanvas;}
+ /** stores state in DOM node
+ * @param elem is DOM element corresponding to 'Composer' tag
+ * @param temp write template file
+ */
+ bool writeXML(QDomElement& elem, QDomDocument & doc);
+
public slots:
// Called if map canvas has changed
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.cpp 2008-07-26 09:36:31 UTC (rev 8917)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.cpp 2008-07-26 14:24:20 UTC (rev 8918)
@@ -241,4 +241,9 @@
}
}
+bool QgsComposerScaleBar::writeXML(QDomElement& elem, QDomDocument & doc)
+{
+ return true;
+}
+
Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.h 2008-07-26 09:36:31 UTC (rev 8917)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.h 2008-07-26 14:24:20 UTC (rev 8918)
@@ -98,6 +98,12 @@
/**Returns string of first label (important for drawing, labeling, size calculation*/
QString firstLabelString() const;
+ /** stores state in DOM node
+ * @param elem is DOM element corresponding to 'Composer' tag
+ * @param temp write template file
+ */
+ bool writeXML(QDomElement& elem, QDomDocument & doc);
+
public slots:
void updateSegmentSize();
/**Sets mCompositionMap to 0 if the map is deleted*/
More information about the QGIS-commit
mailing list