diff options
Diffstat (limited to 'filters/kspread/csv/xmltree.cpp')
-rw-r--r-- | filters/kspread/csv/xmltree.cpp | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/filters/kspread/csv/xmltree.cpp b/filters/kspread/csv/xmltree.cpp new file mode 100644 index 000000000..f5c56373a --- /dev/null +++ b/filters/kspread/csv/xmltree.cpp @@ -0,0 +1,154 @@ +/* This file is part of the KDE project + Copyright (C) 1999 David Faure <faure@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. +*/ + +#include <xmltree.h> + +#include <tqdatetime.h> +#include <kdebug.h> + + +XMLTree::XMLTree(TQDomDocument &qdoc) : root(qdoc) +{ + root=TQDomDocument("spreadsheet"); + root.appendChild( root.createProcessingInstruction( "xml", "version=\"1.0\" encoding=\"UTF-8\"" ) ); + doc = root.createElement( "spreadsheet" ); + + doc.setAttribute("editor", "KSpread CSV Filter"); + doc.setAttribute("mime", "application/x-kspread"); + root.appendChild(doc); + + TQDomElement paper = root.createElement("paper"); + paper.setAttribute("format", "A4"); + paper.setAttribute("orientation", "Portrait"); + TQDomElement borders = root.createElement( "borders" ); + borders.setAttribute( "left", 20 ); + borders.setAttribute( "top", 20 ); + borders.setAttribute( "right", 20 ); + borders.setAttribute( "bottom", 20 ); + paper.appendChild( borders ); + doc.appendChild(paper); + + map = root.createElement("map"); + doc.appendChild(map); + + sheet = root.createElement("table"); + + sheet.setAttribute("name", "foobar"); + map.appendChild(sheet); + + row = 1; + column = 1; +} + +XMLTree::~XMLTree() +{ + //if(root) // We're using fancy references, now! (Werner) + //delete root; +} + +// Not needed anymore (Werner) +//const TQString XMLTree::part() +//{ +// TQString s; +// TQTextStream t(s, IO_WriteOnly); + +// TQTime tmr; +// tmr.start(); +// kdDebug(30501) << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" << endl; + +// root.save(t); // Why does this take sooooo long (approx. 8s on my Athlon 500 with a + // quite small file :( ) + +// David: gdb says that TQString::replace calls itself recursively an enormous amount of time +// This is called by TQStringBuffer::writeBlock (), called by TQTextStream::writeBlock () +// called by TQTextStream::operator<< () in TQDOM_AttrPrivate::save (). +// +// And this looks related to the UTF 8 encoding ... + +// kdDebug(30501) << (const char*)TQString::number((int)tmr.elapsed()) << endl; +// kdDebug(30501) << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" << endl; + +// t << '\0'; + +// return s; +//} + +bool XMLTree::cell( const TQString & contents ) +{ + TQDomElement e = root.createElement("cell"); + //e.appendChild(getFormat(xf)); + //e.appendChild(getFont(xf)); + + e.setAttribute("row", row); + e.setAttribute("column", column++); + + TQDomElement format=root.createElement("format"); + format.setAttribute("float", "3"); + format.setAttribute("alignY", "2"); + format.setAttribute("floatcolor", "2"); + format.setAttribute("faktor", "1"); + format.setAttribute("precision", "-1"); + format.setAttribute("align", "4"); + + TQDomElement pen=root.createElement("pen"); + pen.setAttribute("width", "1"); + pen.setAttribute("style", "0"); + pen.setAttribute("color", "#000000"); + + TQDomElement lborder=root.createElement("left-border"); + lborder.appendChild(pen); + format.appendChild(lborder); + + pen=root.createElement("pen"); + pen.setAttribute("width", "1"); + pen.setAttribute("style", "0"); + pen.setAttribute("color", "#000000"); + + TQDomElement tborder=root.createElement("top-border"); + tborder.appendChild(pen); + format.appendChild(tborder); + + pen=root.createElement("pen"); + pen.setAttribute("width", "1"); + pen.setAttribute("style", "0"); + pen.setAttribute("color", "#000000"); + + TQDomElement fdia=root.createElement("fall-diagonal"); + fdia.appendChild(pen); + format.appendChild(fdia); + + pen=root.createElement("pen"); + pen.setAttribute("width", "1"); + pen.setAttribute("style", "0"); + pen.setAttribute("color", "#000000"); + + TQDomElement udia=root.createElement("up-diagonal"); + udia.appendChild(pen); + format.appendChild(udia); + + e.appendChild(format); + + TQDomElement text=root.createElement("text"); + text.appendChild(root.createTextNode(contents)); + e.appendChild(text); + + sheet.appendChild(e); + + return true; +} |