You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/filters/kspread/csv/xmltree.cc

155 lines
4.6 KiB

/* 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;
}