1 /***************************************************************************
2 * Copyright (C) 2007 by Schpilka Yannick *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
20 * In addition, as a special exception, the copyright holders give *
21 * permission to link the code of this program with any edition of *
22 * the Qt library by Trolltech AS, Norway (or with modified versions *
23 * of Qt that use the same license as Qt), and distribute linked *
24 * combinations including the two. You must obey the GNU General *
25 * Public License in all respects for all of the code used other than *
26 * Qt. If you modify this file, you may extend this exception to *
27 * your version of the file, but you are not obligated to do so. If *
28 * you do not wish to do so, delete this exception statement from *
30 ***************************************************************************/
31 #include "gihandler.h"
34 #include <qmessagebox.h>
36 #include <qpushbutton.h>
37 #include <qtextedit.h>
41 GIHandler::GIHandler(Graph
*g
){
47 GIHandler::~GIHandler(){
51 bool GIHandler::startElement(const QString
&,
54 const QXmlAttributes
&att
){
57 if (!giTag
&& qName
!= "gi"){
58 erreur
= QObject::tr("This file is not supported, gi required");
63 QString v
= att
.value("version");
64 if (!v
.isEmpty() && v
!= "1.0"){
65 erreur
= QObject::tr("This file is not a GI version 1.0 file");
71 else if(qName
=="graph"){
72 QString v
= att
.value("id");
79 else if(qName
=="node"){
80 current_node
= att
.value("id");
81 c_node
= new Node(graph
,current_node
);
82 int x
= att
.value("x").toInt();
83 int y
= att
.value("y").toInt();
84 graph
->add(c_node
,QPoint(x
,y
));
87 else if(qName
=="edge"){
88 QString n1
= att
.value("source");
89 QString n2
= att
.value("dest");
90 QString type
= att
.value("type");
91 int dir
= att
.value("direction").toInt();
96 else if (NodeContent::typeByName( qName ) > 0) {
97 int t = NodeContent::typeByName( qName );
98 NodeContent *c = new NodeContent(c_node,t,nbr++);
100 erreur = QObject::tr("Cannot load " + qName + "content");
103 QString url = att.value("url");
114 bool GIHandler::endElement (const QString
&,
116 const QString
&qName
){
119 else if(qName
=="node"){
126 bool GIHandler::characters (const QString
&txt
){
131 bool GIHandler::fatalError (const QXmlParseException
&exception
){
132 QMessageBox::critical (graph
,
133 QObject::tr("Graph Interface Parser"),
134 QObject::tr("Parse error at line %1, column %2:\n""%3")
135 .arg(exception
.lineNumber())
136 .arg(exception
.columnNumber())
137 .arg(exception
.message()));
141 QString
GIHandler::errorString() const{