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 consider_informations Si vrai, les informations complementaires
(auteur, titre, ...) seront prises en compte
@param content_ptr si ce pointeur vers un DiagramContent n'est pas NULL, il
sera rempli avec le contenu ajoute au schema par le fromXml
@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::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));
}
/**
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
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 consider_informations Si vrai, les informations complementaires
(auteur, titre, ...) seront prises en compte
@param content_ptr si ce pointeur vers un DiagramContent n'est pas NULL, il
sera rempli avec le contenu ajoute au schema par le fromXml
@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::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
if (content_ptr != NULL) {
if (content_ptr) {
content_ptr -> elements = added_elements;
content_ptr -> conductorsToMove = added_conductors;
content_ptr -> textFields = added_texts;
}
write();
return(true);
}
@@ -833,7 +860,7 @@ void Diagram::moveElements(const QPointF &diff, QGraphicsItem *dontmove) {
// deplace les elements selectionnes
foreach(Element *element, elementsToMove()) {
if (dontmove != NULL && element == dontmove) continue;
if (dontmove && element == dontmove) continue;
element -> setPos(element -> pos() + diff);
}
@@ -850,7 +877,7 @@ void Diagram::moveElements(const QPointF &diff, QGraphicsItem *dontmove) {
// deplace les champs de texte
foreach(DiagramTextItem *dti, textsToMove()) {
if (dontmove != NULL && dti == dontmove) continue;
if (dontmove && dti == dontmove) continue;
dti -> setPos(dti -> pos() + diff);
}
}

View File

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

View File

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