Correction : l'application enregistrait les schemas lorsque l'on faisait un copier/coller.

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@604 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier
2009-04-28 18:04:29 +00:00
parent f683d778ff
commit d5fe30de90
3 changed files with 40 additions and 12 deletions

View File

@@ -344,8 +344,8 @@ QDomDocument Diagram::toXml(bool diagram) {
@param position La position du schema importe @param position La position du schema importe
@param consider_informations Si vrai, les informations complementaires @param consider_informations Si vrai, les informations complementaires
(auteur, titre, ...) seront prises en compte (auteur, titre, ...) seront prises en compte
@param content_ptr si ce pointeur vers un DiagramContent n'est pas NULL, il @param content_ptr si ce pointeur vers un DiagramContent est different de 0,
sera rempli avec le contenu ajoute au schema par le fromXml il sera rempli avec le contenu ajoute au schema par le fromXml
@return true si l'import a reussi, false sinon @return true si l'import a reussi, false sinon
*/ */
bool Diagram::fromXml(QDomDocument &document, QPointF position, bool consider_informations, DiagramContent *content_ptr) { bool Diagram::fromXml(QDomDocument &document, QPointF position, bool consider_informations, DiagramContent *content_ptr) {
@@ -353,6 +353,34 @@ bool Diagram::fromXml(QDomDocument &document, QPointF position, bool consider_in
return(fromXml(root, position, consider_informations, content_ptr)); return(fromXml(root, position, consider_informations, content_ptr));
} }
/**
Importe le schema decrit dans un element XML. Cette methode delegue son travail a Diagram::fromXml
Si l'import reussit, cette methode initialise egalement le document XML
interne permettant de bien gerer l'enregistrement de ce schema dans le
projet auquel il appartient.
@see Diagram::fromXml
@param document Le document XML a analyser
@param position La position du schema importe
@param consider_informations Si vrai, les informations complementaires
(auteur, titre, ...) seront prises en compte
@param content_ptr si ce pointeur vers un DiagramContent est different de 0,
il sera rempli avec le contenu ajoute au schema par le fromXml
@return true si l'import a reussi, false sinon
*/
bool Diagram::initFromXml(QDomElement &document, QPointF position, bool consider_informations, DiagramContent *content_ptr) {
// import le contenu et les proprietes du schema depuis l'element XML fourni en parametre
bool from_xml = fromXml(document, position, consider_informations, content_ptr);
// initialise le document XML interne a partir de l'element XML fourni en parametre
if (from_xml) {
xml_document.clear();
xml_document.appendChild(xml_document.importNode(document, true));
// a ce stade, le document XML interne contient le code XML qui a ete importe, et non pas une version re-exporte par la methode toXml()
}
return(from_xml);
}
/** /**
Importe le schema decrit dans un element XML. Si une position est Importe le schema decrit dans un element XML. Si une position est
precisee, les elements importes sont positionnes de maniere a ce que le precisee, les elements importes sont positionnes de maniere a ce que le
@@ -362,8 +390,8 @@ bool Diagram::fromXml(QDomDocument &document, QPointF position, bool consider_in
@param position La position du schema importe @param position La position du schema importe
@param consider_informations Si vrai, les informations complementaires @param consider_informations Si vrai, les informations complementaires
(auteur, titre, ...) seront prises en compte (auteur, titre, ...) seront prises en compte
@param content_ptr si ce pointeur vers un DiagramContent n'est pas NULL, il @param content_ptr si ce pointeur vers un DiagramContent est different de 0,
sera rempli avec le contenu ajoute au schema par le fromXml il sera rempli avec le contenu ajoute au schema par le fromXml
@return true si l'import a reussi, false sinon @return true si l'import a reussi, false sinon
*/ */
bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_informations, DiagramContent *content_ptr) { bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_informations, DiagramContent *content_ptr) {
@@ -526,13 +554,12 @@ bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_inf
} }
// remplissage des listes facultatives // remplissage des listes facultatives
if (content_ptr != NULL) { if (content_ptr) {
content_ptr -> elements = added_elements; content_ptr -> elements = added_elements;
content_ptr -> conductorsToMove = added_conductors; content_ptr -> conductorsToMove = added_conductors;
content_ptr -> textFields = added_texts; content_ptr -> textFields = added_texts;
} }
write();
return(true); return(true);
} }
@@ -833,7 +860,7 @@ void Diagram::moveElements(const QPointF &diff, QGraphicsItem *dontmove) {
// deplace les elements selectionnes // deplace les elements selectionnes
foreach(Element *element, elementsToMove()) { foreach(Element *element, elementsToMove()) {
if (dontmove != NULL && element == dontmove) continue; if (dontmove && element == dontmove) continue;
element -> setPos(element -> pos() + diff); element -> setPos(element -> pos() + diff);
} }
@@ -850,7 +877,7 @@ void Diagram::moveElements(const QPointF &diff, QGraphicsItem *dontmove) {
// deplace les champs de texte // deplace les champs de texte
foreach(DiagramTextItem *dti, textsToMove()) { foreach(DiagramTextItem *dti, textsToMove()) {
if (dontmove != NULL && dti == dontmove) continue; if (dontmove && dti == dontmove) continue;
dti -> setPos(dti -> pos() + diff); dti -> setPos(dti -> pos() + diff);
} }
} }

View File

@@ -108,8 +108,9 @@ class Diagram : public QGraphicsScene {
// fonctions relatives a l'import / export XML // fonctions relatives a l'import / export XML
QDomDocument toXml(bool = true); QDomDocument toXml(bool = true);
bool fromXml(QDomDocument &, QPointF = QPointF(), bool = true, DiagramContent * = NULL); bool initFromXml(QDomElement &, QPointF = QPointF(), bool = true, DiagramContent * = 0);
bool fromXml(QDomElement &, QPointF = QPointF(), bool = true, DiagramContent * = NULL); bool fromXml(QDomDocument &, QPointF = QPointF(), bool = true, DiagramContent * = 0);
bool fromXml(QDomElement &, QPointF = QPointF(), bool = true, DiagramContent * = 0);
void write(); void write();
void write(const QDomElement &); void write(const QDomElement &);
bool wasWritten() const; bool wasWritten() const;
@@ -152,7 +153,7 @@ class Diagram : public QGraphicsScene {
QSet<Conductor *> selectedConductors() const; QSet<Conductor *> selectedConductors() const;
DiagramContent content() const; DiagramContent content() const;
DiagramContent selectedContent(); DiagramContent selectedContent();
void moveElements(const QPointF &, QGraphicsItem * = NULL); void moveElements(const QPointF &, QGraphicsItem * = 0);
bool usesElement(const ElementsLocation &); bool usesElement(const ElementsLocation &);
QUndoStack &undoStack(); QUndoStack &undoStack();

View File

@@ -729,7 +729,7 @@ void QETProject::readDiagramsXml() {
QDomElement diagram_xml_element = diagram_nodes.at(i).toElement(); QDomElement diagram_xml_element = diagram_nodes.at(i).toElement();
Diagram *diagram = new Diagram(); Diagram *diagram = new Diagram();
diagram -> setProject(this); diagram -> setProject(this);
bool diagram_loading = diagram -> fromXml(diagram_xml_element); bool diagram_loading = diagram -> initFromXml(diagram_xml_element);
if (diagram_loading) { if (diagram_loading) {
// recupere l'attribut order du schema // recupere l'attribut order du schema
int diagram_order = -1; int diagram_order = -1;