mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-19 14:50:53 +01:00
Ajout d'une classe DiagramContent pour eviter de passer plusieurs listes en parametre lorsqu'on veut transmettre tout ou partie du contenu du schema.
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@208 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
59
diagram.cpp
59
diagram.cpp
@@ -5,6 +5,7 @@
|
|||||||
#include "diagram.h"
|
#include "diagram.h"
|
||||||
#include "exportdialog.h"
|
#include "exportdialog.h"
|
||||||
#include "diagramcommands.h"
|
#include "diagramcommands.h"
|
||||||
|
#include "diagramcontent.h"
|
||||||
|
|
||||||
const int Diagram::xGrid = 10;
|
const int Diagram::xGrid = 10;
|
||||||
const int Diagram::yGrid = 10;
|
const int Diagram::yGrid = 10;
|
||||||
@@ -113,16 +114,7 @@ void Diagram::keyReleaseEvent(QKeyEvent *e) {
|
|||||||
!current_movement.isNull() && !e -> isAutoRepeat()
|
!current_movement.isNull() && !e -> isAutoRepeat()
|
||||||
) {
|
) {
|
||||||
// cree un objet d'annulation pour le mouvement qui vient de se finir
|
// cree un objet d'annulation pour le mouvement qui vient de se finir
|
||||||
undoStack().push(
|
undoStack().push(new MoveElementsCommand(this, selectedContent(), current_movement));
|
||||||
new MoveElementsCommand(
|
|
||||||
this,
|
|
||||||
elementsToMove(),
|
|
||||||
conductorsToMove(),
|
|
||||||
conductorsToUpdate(),
|
|
||||||
textsToMove(),
|
|
||||||
current_movement
|
|
||||||
)
|
|
||||||
);
|
|
||||||
invalidateMovedElements();
|
invalidateMovedElements();
|
||||||
current_movement = QPointF();
|
current_movement = QPointF();
|
||||||
}
|
}
|
||||||
@@ -300,14 +292,11 @@ QDomDocument Diagram::toXml(bool diagram) {
|
|||||||
@param position La position du diagram importe
|
@param position La position du diagram 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 added_elements si ce pointeur vers une liste d'elements n'est pas
|
@param content_ptr si ce pointeur vers un DiagramContentn'est pas NULL, il
|
||||||
NULL, il sera rempli avec les elements ajoutes au schema par le fromXml
|
sera rempli avec le contenu ajoute au schema par le fromXml
|
||||||
@param added_conductors si ce pointeur vers une liste de conducteurs n'est
|
|
||||||
pas NULL, il sera rempli avec les conducteurs ajoutes 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, QList<Element *> *added_elements_ptr, QList<Conductor *> *added_conductors_ptr, QList<DiagramTextItem *> *added_texts_ptr) {
|
bool Diagram::fromXml(QDomDocument &document, QPointF position, bool consider_informations, DiagramContent *content_ptr) {
|
||||||
QDomElement root = document.documentElement();
|
QDomElement root = document.documentElement();
|
||||||
// le premier element doit etre un schema
|
// le premier element doit etre un schema
|
||||||
if (root.tagName() != "diagram") return(false);
|
if (root.tagName() != "diagram") return(false);
|
||||||
@@ -457,9 +446,11 @@ bool Diagram::fromXml(QDomDocument &document, QPointF position, bool consider_in
|
|||||||
}
|
}
|
||||||
|
|
||||||
// remplissage des listes facultatives
|
// remplissage des listes facultatives
|
||||||
if (added_elements_ptr != NULL) *added_elements_ptr = added_elements;
|
if (content_ptr != NULL) {
|
||||||
if (added_conductors_ptr != NULL) *added_conductors_ptr = added_conductors;
|
content_ptr -> elements = added_elements;
|
||||||
if (added_texts_ptr != NULL) *added_texts_ptr = added_texts;
|
content_ptr -> conductorsToMove = added_conductors;
|
||||||
|
content_ptr -> textFields = added_texts;
|
||||||
|
}
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
@@ -604,3 +595,33 @@ bool Diagram::clipboardMayContainDiagram() {
|
|||||||
bool may_be_diagram = clipboard_text.startsWith("<diagram") && clipboard_text.endsWith("</diagram>");
|
bool may_be_diagram = clipboard_text.startsWith("<diagram") && clipboard_text.endsWith("</diagram>");
|
||||||
return(may_be_diagram);
|
return(may_be_diagram);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return Le contenu du schema. Les conducteurs sont tous places dans
|
||||||
|
conductorsToMove.
|
||||||
|
*/
|
||||||
|
DiagramContent Diagram::content() const {
|
||||||
|
DiagramContent dc;
|
||||||
|
foreach(QGraphicsItem *qgi, items()) {
|
||||||
|
if (Element *e = qgraphicsitem_cast<Element *>(qgi)) {
|
||||||
|
dc.elements << e;
|
||||||
|
} else if (DiagramTextItem *dti = qgraphicsitem_cast<DiagramTextItem *>(qgi)) {
|
||||||
|
dc.textFields << dti;
|
||||||
|
} else if (Conductor *c = qgraphicsitem_cast<Conductor *>(qgi)) {
|
||||||
|
dc.conductorsToMove << c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return(dc);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return le contenu selectionne du schema.
|
||||||
|
*/
|
||||||
|
DiagramContent Diagram::selectedContent() {
|
||||||
|
DiagramContent dc;
|
||||||
|
dc.elements = elementsToMove().toList();
|
||||||
|
dc.textFields = textsToMove().toList();
|
||||||
|
dc.conductorsToMove = conductorsToMove().toList();
|
||||||
|
dc.conductorsToUpdate = conductorsToUpdate();
|
||||||
|
return(dc);
|
||||||
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ class Element;
|
|||||||
class Terminal;
|
class Terminal;
|
||||||
class Conductor;
|
class Conductor;
|
||||||
class DiagramTextItem;
|
class DiagramTextItem;
|
||||||
|
class DiagramContent;
|
||||||
/**
|
/**
|
||||||
Cette classe represente un schema electrique.
|
Cette classe represente un schema electrique.
|
||||||
Elle gere les differents elements et conducteurs qui le composent
|
Elle gere les differents elements et conducteurs qui le composent
|
||||||
@@ -77,7 +78,7 @@ 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, QList<Element *> * = NULL, QList<Conductor *> * = NULL, QList<DiagramTextItem *> * = NULL);
|
bool fromXml(QDomDocument &, QPointF = QPointF(), bool = true, DiagramContent * = NULL);
|
||||||
|
|
||||||
// fonctions relatives aux options graphiques
|
// fonctions relatives aux options graphiques
|
||||||
void setDisplayGrid(bool);
|
void setDisplayGrid(bool);
|
||||||
@@ -101,6 +102,8 @@ class Diagram : public QGraphicsScene {
|
|||||||
const QHash<Conductor *, Terminal *> &conductorsToUpdate();
|
const QHash<Conductor *, Terminal *> &conductorsToUpdate();
|
||||||
const QSet<DiagramTextItem *> &textsToMove();
|
const QSet<DiagramTextItem *> &textsToMove();
|
||||||
QSet<Conductor *> selectedConductors() const;
|
QSet<Conductor *> selectedConductors() const;
|
||||||
|
DiagramContent content() const;
|
||||||
|
DiagramContent selectedContent();
|
||||||
void moveElements(const QPointF &, QGraphicsItem * = NULL);
|
void moveElements(const QPointF &, QGraphicsItem * = NULL);
|
||||||
|
|
||||||
QUndoStack &undoStack();
|
QUndoStack &undoStack();
|
||||||
|
|||||||
@@ -112,53 +112,43 @@ void AddConductorCommand::redo() {
|
|||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@param dia Schema dont on supprime des elements et conducteurs
|
@param dia Schema dont on supprime des elements et conducteurs
|
||||||
@param elements Elements supprimes
|
@param content Contenu supprime
|
||||||
@param conductors Conducteurs supprimes
|
|
||||||
@param texts Textes supprimes
|
|
||||||
@param parent QUndoCommand parent
|
@param parent QUndoCommand parent
|
||||||
*/
|
*/
|
||||||
DeleteElementsCommand::DeleteElementsCommand(
|
DeleteElementsCommand::DeleteElementsCommand(
|
||||||
Diagram *dia,
|
Diagram *dia,
|
||||||
QSet<Element *> elements,
|
const DiagramContent &content,
|
||||||
QSet<Conductor *> conductors,
|
|
||||||
QSet<DiagramTextItem *> texts,
|
|
||||||
QUndoCommand *parent
|
QUndoCommand *parent
|
||||||
) :
|
) :
|
||||||
QUndoCommand(parent),
|
QUndoCommand(parent),
|
||||||
removed_elements(elements),
|
removed_content(content),
|
||||||
removed_conductors(conductors),
|
|
||||||
removed_texts(texts),
|
|
||||||
diagram(dia)
|
diagram(dia)
|
||||||
{
|
{
|
||||||
setText(QObject::tr("supprimer ") + QET::ElementsAndConductorsSentence(removed_elements.count(), removed_conductors.count(), removed_texts.count()));
|
setText(QObject::tr("supprimer ") + removed_content.sentence(true));
|
||||||
foreach(QGraphicsItem *qgi, removed_elements) diagram -> qgiManager().manage(qgi);
|
diagram -> qgiManager().manage(removed_content.items());
|
||||||
foreach(QGraphicsItem *qgi, removed_conductors) diagram -> qgiManager().manage(qgi);
|
|
||||||
foreach(QGraphicsItem *qgi, removed_texts) diagram -> qgiManager().manage(qgi);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Destructeur
|
/// Destructeur
|
||||||
DeleteElementsCommand::~DeleteElementsCommand() {
|
DeleteElementsCommand::~DeleteElementsCommand() {
|
||||||
foreach(QGraphicsItem *qgi, removed_texts) diagram -> qgiManager().release(qgi);
|
diagram -> qgiManager().release(removed_content.items());
|
||||||
foreach(QGraphicsItem *qgi, removed_conductors) diagram -> qgiManager().release(qgi);
|
|
||||||
foreach(QGraphicsItem *qgi, removed_elements) diagram -> qgiManager().release(qgi);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// annule les suppressions
|
/// annule les suppressions
|
||||||
void DeleteElementsCommand::undo() {
|
void DeleteElementsCommand::undo() {
|
||||||
// remet les elements
|
// remet les elements
|
||||||
foreach(Element *e, removed_elements) {
|
foreach(Element *e, removed_content.elements) {
|
||||||
diagram -> addItem(e);
|
diagram -> addItem(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
// remet les conducteurs
|
// remet les conducteurs
|
||||||
foreach(Conductor *c, removed_conductors) {
|
foreach(Conductor *c, removed_content.conductors()) {
|
||||||
diagram -> addItem(c);
|
diagram -> addItem(c);
|
||||||
c -> terminal1 -> addConductor(c);
|
c -> terminal1 -> addConductor(c);
|
||||||
c -> terminal2 -> addConductor(c);
|
c -> terminal2 -> addConductor(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
// remet les textes
|
// remet les textes
|
||||||
foreach(DiagramTextItem *t, removed_texts) {
|
foreach(DiagramTextItem *t, removed_content.textFields) {
|
||||||
diagram -> addItem(t);
|
diagram -> addItem(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -166,19 +156,19 @@ void DeleteElementsCommand::undo() {
|
|||||||
/// refait les suppressions
|
/// refait les suppressions
|
||||||
void DeleteElementsCommand::redo() {
|
void DeleteElementsCommand::redo() {
|
||||||
// enleve les conducteurs
|
// enleve les conducteurs
|
||||||
foreach(Conductor *c, removed_conductors) {
|
foreach(Conductor *c, removed_content.conductors()) {
|
||||||
c -> terminal1 -> removeConductor(c);
|
c -> terminal1 -> removeConductor(c);
|
||||||
c -> terminal2 -> removeConductor(c);
|
c -> terminal2 -> removeConductor(c);
|
||||||
diagram -> removeItem(c);
|
diagram -> removeItem(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
// enleve les elements
|
// enleve les elements
|
||||||
foreach(Element *e, removed_elements) {
|
foreach(Element *e, removed_content.elements) {
|
||||||
diagram -> removeItem(e);
|
diagram -> removeItem(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
// enleve les textes
|
// enleve les textes
|
||||||
foreach(DiagramTextItem *t, removed_texts) {
|
foreach(DiagramTextItem *t, removed_content.textFields) {
|
||||||
diagram -> removeItem(t);
|
diagram -> removeItem(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -193,45 +183,37 @@ void DeleteElementsCommand::redo() {
|
|||||||
*/
|
*/
|
||||||
PasteDiagramCommand::PasteDiagramCommand(
|
PasteDiagramCommand::PasteDiagramCommand(
|
||||||
Diagram *dia,
|
Diagram *dia,
|
||||||
const QList<Element *> &e,
|
const DiagramContent &c,
|
||||||
const QList<Conductor *> &c,
|
|
||||||
const QList<DiagramTextItem *> &t,
|
|
||||||
QUndoCommand *parent
|
QUndoCommand *parent
|
||||||
) :
|
) :
|
||||||
QUndoCommand(parent),
|
QUndoCommand(parent),
|
||||||
elements(e),
|
content(c),
|
||||||
conductors(c),
|
|
||||||
texts(t),
|
|
||||||
diagram(dia),
|
diagram(dia),
|
||||||
first_redo(true)
|
first_redo(true)
|
||||||
{
|
{
|
||||||
setText(QObject::tr("coller ") + QET::ElementsAndConductorsSentence(elements.count(), conductors.count()));
|
setText(QObject::tr("coller ") + content.sentence());
|
||||||
foreach(QGraphicsItem *qgi, elements) diagram -> qgiManager().manage(qgi);
|
diagram -> qgiManager().manage(content.items());
|
||||||
foreach(QGraphicsItem *qgi, conductors) diagram -> qgiManager().manage(qgi);
|
|
||||||
foreach(QGraphicsItem *qgi, texts) diagram -> qgiManager().manage(qgi);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Destructeur
|
/// Destructeur
|
||||||
PasteDiagramCommand::~PasteDiagramCommand() {
|
PasteDiagramCommand::~PasteDiagramCommand() {
|
||||||
foreach(QGraphicsItem *qgi, texts) diagram -> qgiManager().release(qgi);
|
diagram -> qgiManager().release(content.items());
|
||||||
foreach(QGraphicsItem *qgi, conductors) diagram -> qgiManager().release(qgi);
|
|
||||||
foreach(QGraphicsItem *qgi, elements) diagram -> qgiManager().release(qgi);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// annule le coller
|
/// annule le coller
|
||||||
void PasteDiagramCommand::undo() {
|
void PasteDiagramCommand::undo() {
|
||||||
// enleve les conducteurs
|
// enleve les conducteurs
|
||||||
foreach(Conductor *c, conductors) {
|
foreach(Conductor *c, content.conductorsToMove) {
|
||||||
c -> terminal1 -> removeConductor(c);
|
c -> terminal1 -> removeConductor(c);
|
||||||
c -> terminal2 -> removeConductor(c);
|
c -> terminal2 -> removeConductor(c);
|
||||||
diagram -> removeItem(c);
|
diagram -> removeItem(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
// enleve les elements
|
// enleve les elements
|
||||||
foreach(Element *e, elements) diagram -> removeItem(e);
|
foreach(Element *e, content.elements) diagram -> removeItem(e);
|
||||||
|
|
||||||
// enleve les textes
|
// enleve les textes
|
||||||
foreach(DiagramTextItem *t, texts) diagram -> removeItem(t);
|
foreach(DiagramTextItem *t, content.textFields) diagram -> removeItem(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// refait le coller
|
/// refait le coller
|
||||||
@@ -239,40 +221,37 @@ void PasteDiagramCommand::redo() {
|
|||||||
if (first_redo) first_redo = false;
|
if (first_redo) first_redo = false;
|
||||||
else {
|
else {
|
||||||
// pose les elements
|
// pose les elements
|
||||||
foreach(Element *e, elements) diagram -> addItem(e);
|
foreach(Element *e, content.elements) diagram -> addItem(e);
|
||||||
|
|
||||||
// pose les conducteurs
|
// pose les conducteurs
|
||||||
foreach(Conductor *c, conductors) {
|
foreach(Conductor *c, content.conductorsToMove) {
|
||||||
diagram -> addItem(c);
|
diagram -> addItem(c);
|
||||||
c -> terminal1 -> addConductor(c);
|
c -> terminal1 -> addConductor(c);
|
||||||
c -> terminal2 -> addConductor(c);
|
c -> terminal2 -> addConductor(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
// pose les textes
|
// pose les textes
|
||||||
foreach(DiagramTextItem *t, texts) diagram -> addItem(t);
|
foreach(DiagramTextItem *t, content.textFields) diagram -> addItem(t);
|
||||||
}
|
}
|
||||||
foreach(Element *e, elements) e -> setSelected(true);
|
foreach(Element *e, content.elements) e -> setSelected(true);
|
||||||
foreach(Conductor *c, conductors) c -> setSelected(true);
|
foreach(Conductor *c, content.conductorsToMove) c -> setSelected(true);
|
||||||
foreach(DiagramTextItem *t, texts) t -> setSelected(true);
|
foreach(DiagramTextItem *t, content.textFields) t -> setSelected(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@param dia Schema dont on coupe des elements et conducteurs
|
@param dia Schema dont on coupe des elements et conducteurs
|
||||||
@param elements Elements coupes
|
@param content Contenu coupe
|
||||||
@param conductors Conducteurs coupes
|
|
||||||
@param parent QUndoCommand parent
|
@param parent QUndoCommand parent
|
||||||
*/
|
*/
|
||||||
CutDiagramCommand::CutDiagramCommand(
|
CutDiagramCommand::CutDiagramCommand(
|
||||||
Diagram *dia,
|
Diagram *dia,
|
||||||
QSet<Element *> elements,
|
const DiagramContent &content,
|
||||||
QSet<Conductor *> conductors,
|
|
||||||
QSet<DiagramTextItem *> texts,
|
|
||||||
QUndoCommand *parent
|
QUndoCommand *parent
|
||||||
) :
|
) :
|
||||||
DeleteElementsCommand(dia, elements, conductors, texts, parent)
|
DeleteElementsCommand(dia, content, parent)
|
||||||
{
|
{
|
||||||
setText(QObject::tr("couper ") + QET::ElementsAndConductorsSentence(elements.count(), conductors.count(), texts.count()));
|
setText(QObject::tr("couper ") + content.sentence(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Destructeur
|
/// Destructeur
|
||||||
@@ -282,32 +261,23 @@ CutDiagramCommand::~CutDiagramCommand() {
|
|||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@param dia Schema sur lequel on deplace des elements
|
@param dia Schema sur lequel on deplace des elements
|
||||||
@param move_elements Elements a deplacer
|
@param diagram_content Contenu a deplacer
|
||||||
@param move_conductors Conducteurs a deplacer
|
|
||||||
@param modify_conductors Conducteurs a mettre a jour
|
|
||||||
@param move_texts Textes a deplacer
|
|
||||||
@param m translation subie par les elements
|
@param m translation subie par les elements
|
||||||
@param parent QUndoCommand parent
|
@param parent QUndoCommand parent
|
||||||
*/
|
*/
|
||||||
MoveElementsCommand::MoveElementsCommand(
|
MoveElementsCommand::MoveElementsCommand(
|
||||||
Diagram *dia,
|
Diagram *dia,
|
||||||
const QSet<Element *> &move_elements,
|
const DiagramContent &diagram_content,
|
||||||
const QSet<Conductor *> &move_conductors,
|
|
||||||
const QHash<Conductor *, Terminal *> &modify_conductors,
|
|
||||||
const QSet<DiagramTextItem *> &move_texts,
|
|
||||||
const QPointF &m,
|
const QPointF &m,
|
||||||
QUndoCommand *parent
|
QUndoCommand *parent
|
||||||
) :
|
) :
|
||||||
QUndoCommand(parent),
|
QUndoCommand(parent),
|
||||||
diagram(dia),
|
diagram(dia),
|
||||||
elements_to_move(move_elements),
|
content_to_move(diagram_content),
|
||||||
conductors_to_move(move_conductors),
|
|
||||||
conductors_to_update(modify_conductors),
|
|
||||||
texts_to_move(move_texts),
|
|
||||||
movement(m),
|
movement(m),
|
||||||
first_redo(true)
|
first_redo(true)
|
||||||
{
|
{
|
||||||
setText(QObject::tr("d\351placer ") + QET::ElementsAndConductorsSentence(elements_to_move.count(), conductors_to_move.count(), texts_to_move.count()));
|
setText(QObject::tr("d\351placer ") + content_to_move.sentence());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Destructeur
|
/// Destructeur
|
||||||
@@ -331,22 +301,26 @@ void MoveElementsCommand::redo() {
|
|||||||
*/
|
*/
|
||||||
void MoveElementsCommand::move(const QPointF &actual_movement) {
|
void MoveElementsCommand::move(const QPointF &actual_movement) {
|
||||||
// deplace les elements
|
// deplace les elements
|
||||||
foreach(Element *element, elements_to_move) {
|
foreach(Element *element, content_to_move.elements) {
|
||||||
element -> setPos(element -> pos() + actual_movement);
|
element -> setPos(element -> pos() + actual_movement);
|
||||||
}
|
}
|
||||||
|
|
||||||
// deplace certains conducteurs
|
// deplace certains conducteurs
|
||||||
foreach(Conductor *conductor, conductors_to_move) {
|
foreach(Conductor *conductor, content_to_move.conductorsToMove) {
|
||||||
conductor -> setPos(conductor -> pos() + actual_movement);
|
conductor -> setPos(conductor -> pos() + actual_movement);
|
||||||
}
|
}
|
||||||
|
|
||||||
// recalcule les autres conducteurs
|
// recalcule les autres conducteurs
|
||||||
foreach(Conductor *conductor, conductors_to_update.keys()) {
|
foreach(Conductor *conductor, content_to_move.conductorsToUpdate.keys()) {
|
||||||
conductor -> updateWithNewPos(QRectF(), conductors_to_update[conductor], conductors_to_update[conductor] -> amarrageConductor());
|
conductor -> updateWithNewPos(
|
||||||
|
QRectF(),
|
||||||
|
content_to_move.conductorsToUpdate[conductor],
|
||||||
|
content_to_move.conductorsToUpdate[conductor] -> amarrageConductor()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// deplace les textes
|
// deplace les textes
|
||||||
foreach(DiagramTextItem *text, texts_to_move) {
|
foreach(DiagramTextItem *text, content_to_move.textFields) {
|
||||||
text -> setPos(text -> pos() + actual_movement);
|
text -> setPos(text -> pos() + actual_movement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#define DIAGRAM_COMMANDS_H
|
#define DIAGRAM_COMMANDS_H
|
||||||
#include "qet.h"
|
#include "qet.h"
|
||||||
#include "diagram.h"
|
#include "diagram.h"
|
||||||
|
#include "diagramcontent.h"
|
||||||
#include "diagramtextitem.h"
|
#include "diagramtextitem.h"
|
||||||
#include "conductor.h"
|
#include "conductor.h"
|
||||||
#include "conductorproperties.h"
|
#include "conductorproperties.h"
|
||||||
@@ -89,7 +90,7 @@ class AddConductorCommand : public QUndoCommand {
|
|||||||
class DeleteElementsCommand : public QUndoCommand {
|
class DeleteElementsCommand : public QUndoCommand {
|
||||||
// constructeurs, destructeur
|
// constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
DeleteElementsCommand(Diagram *, QSet<Element *>, QSet<Conductor *>, QSet<DiagramTextItem *>, QUndoCommand * = 0);
|
DeleteElementsCommand(Diagram *, const DiagramContent &, QUndoCommand * = 0);
|
||||||
virtual ~DeleteElementsCommand();
|
virtual ~DeleteElementsCommand();
|
||||||
private:
|
private:
|
||||||
DeleteElementsCommand(const DeleteElementsCommand &);
|
DeleteElementsCommand(const DeleteElementsCommand &);
|
||||||
@@ -101,12 +102,8 @@ class DeleteElementsCommand : public QUndoCommand {
|
|||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
/// liste des elements enleves
|
/// contenu enleve
|
||||||
QSet<Element *> removed_elements;
|
DiagramContent removed_content;
|
||||||
/// liste des conducteurs enleves
|
|
||||||
QSet<Conductor *> removed_conductors;
|
|
||||||
/// liste des textes enleves
|
|
||||||
QSet<DiagramTextItem *> removed_texts;
|
|
||||||
/// schema dont on supprime des elements et conducteurs
|
/// schema dont on supprime des elements et conducteurs
|
||||||
Diagram *diagram;
|
Diagram *diagram;
|
||||||
};
|
};
|
||||||
@@ -117,7 +114,7 @@ class DeleteElementsCommand : public QUndoCommand {
|
|||||||
class PasteDiagramCommand : public QUndoCommand {
|
class PasteDiagramCommand : public QUndoCommand {
|
||||||
// constructeurs, destructeur
|
// constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
PasteDiagramCommand(Diagram *, const QList<Element *> &, const QList<Conductor *> &, const QList<DiagramTextItem *> &, QUndoCommand * = 0);
|
PasteDiagramCommand(Diagram *, const DiagramContent &, QUndoCommand * = 0);
|
||||||
virtual ~PasteDiagramCommand();
|
virtual ~PasteDiagramCommand();
|
||||||
private:
|
private:
|
||||||
PasteDiagramCommand(const PasteDiagramCommand &);
|
PasteDiagramCommand(const PasteDiagramCommand &);
|
||||||
@@ -129,12 +126,8 @@ class PasteDiagramCommand : public QUndoCommand {
|
|||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
/// elements ajoutes
|
/// contenu ajoute
|
||||||
QList<Element *> elements;
|
DiagramContent content;
|
||||||
/// conducteurs ajoutes
|
|
||||||
QList<Conductor *> conductors;
|
|
||||||
/// textes ajoutes
|
|
||||||
QList<DiagramTextItem *> texts;
|
|
||||||
/// schema sur lequel on colle les elements et conducteurs
|
/// schema sur lequel on colle les elements et conducteurs
|
||||||
Diagram *diagram;
|
Diagram *diagram;
|
||||||
/// booleen pour empecher le premier appel a redo
|
/// booleen pour empecher le premier appel a redo
|
||||||
@@ -148,7 +141,7 @@ class PasteDiagramCommand : public QUndoCommand {
|
|||||||
class CutDiagramCommand : public DeleteElementsCommand {
|
class CutDiagramCommand : public DeleteElementsCommand {
|
||||||
// constructeurs, destructeur
|
// constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
CutDiagramCommand(Diagram *, QSet<Element *>, QSet<Conductor *>, QSet<DiagramTextItem *>, QUndoCommand * = 0);
|
CutDiagramCommand(Diagram *, const DiagramContent &, QUndoCommand * = 0);
|
||||||
virtual ~CutDiagramCommand();
|
virtual ~CutDiagramCommand();
|
||||||
private:
|
private:
|
||||||
CutDiagramCommand(const CutDiagramCommand &);
|
CutDiagramCommand(const CutDiagramCommand &);
|
||||||
@@ -161,7 +154,7 @@ class CutDiagramCommand : public DeleteElementsCommand {
|
|||||||
class MoveElementsCommand : public QUndoCommand {
|
class MoveElementsCommand : public QUndoCommand {
|
||||||
// constructeurs, destructeur
|
// constructeurs, destructeur
|
||||||
public:
|
public:
|
||||||
MoveElementsCommand(Diagram *, const QSet<Element *> &, const QSet<Conductor *> &, const QHash<Conductor *, Terminal *> &, const QSet<DiagramTextItem *> &, const QPointF &m, QUndoCommand * = 0);
|
MoveElementsCommand(Diagram *, const DiagramContent &, const QPointF &m, QUndoCommand * = 0);
|
||||||
virtual ~MoveElementsCommand();
|
virtual ~MoveElementsCommand();
|
||||||
private:
|
private:
|
||||||
MoveElementsCommand(const MoveElementsCommand &);
|
MoveElementsCommand(const MoveElementsCommand &);
|
||||||
@@ -176,14 +169,8 @@ class MoveElementsCommand : public QUndoCommand {
|
|||||||
private:
|
private:
|
||||||
/// schema sur lequel on deplace les elements
|
/// schema sur lequel on deplace les elements
|
||||||
Diagram *diagram;
|
Diagram *diagram;
|
||||||
/// elements a deplacer
|
/// contenu a deplacer
|
||||||
QSet<Element *> elements_to_move;
|
DiagramContent content_to_move;
|
||||||
/// conducteurs a deplacer
|
|
||||||
QSet<Conductor *> conductors_to_move;
|
|
||||||
/// conducteurs a actualiser
|
|
||||||
QHash<Conductor *, Terminal *> conductors_to_update;
|
|
||||||
/// textes a deplacer
|
|
||||||
QSet<DiagramTextItem *> texts_to_move;
|
|
||||||
/// mouvement effectue
|
/// mouvement effectue
|
||||||
QPointF movement;
|
QPointF movement;
|
||||||
/// booleen pour ne pas executer le premier redo()
|
/// booleen pour ne pas executer le premier redo()
|
||||||
|
|||||||
91
diagramcontent.cpp
Normal file
91
diagramcontent.cpp
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
#include "diagramcontent.h"
|
||||||
|
#include <QGraphicsItem>
|
||||||
|
#include "element.h"
|
||||||
|
#include "diagramtextitem.h"
|
||||||
|
#include "conductor.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
Constructeur par defaut. Ne contient rien.
|
||||||
|
*/
|
||||||
|
DiagramContent::DiagramContent() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Constructeur de copie.
|
||||||
|
*/
|
||||||
|
DiagramContent::DiagramContent(const DiagramContent &other) :
|
||||||
|
elements(other.elements),
|
||||||
|
textFields(other.textFields),
|
||||||
|
conductorsToUpdate(other.conductorsToUpdate),
|
||||||
|
conductorsToMove(other.conductorsToMove)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Constructeur
|
||||||
|
*/
|
||||||
|
DiagramContent::~DiagramContent() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return tous les conducteurs
|
||||||
|
*/
|
||||||
|
QList<Conductor *> DiagramContent::conductors() const {
|
||||||
|
return(conductorsToMove + conductorsToUpdate.keys());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Vide le conteneur
|
||||||
|
*/
|
||||||
|
void DiagramContent::clear() {
|
||||||
|
elements.clear();
|
||||||
|
textFields.clear();
|
||||||
|
conductorsToUpdate.clear();
|
||||||
|
conductorsToMove.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return la liste des items formant le contenu du schema
|
||||||
|
*/
|
||||||
|
QList<QGraphicsItem *> DiagramContent::items() const {
|
||||||
|
QList<QGraphicsItem *> items_list;
|
||||||
|
foreach(QGraphicsItem *qgi, conductors()) items_list << qgi;
|
||||||
|
foreach(QGraphicsItem *qgi, elements) items_list << qgi;
|
||||||
|
foreach(QGraphicsItem *qgi, textFields) items_list << qgi;
|
||||||
|
return(items_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param include_updated_conductors true pour compter les conducteurs mis a jour, false sinon
|
||||||
|
@return le nombre d'items formant le contenu du schema
|
||||||
|
*/
|
||||||
|
int DiagramContent::count(bool include_updated_conductors) const {
|
||||||
|
int conductors_count = conductorsToMove.count();
|
||||||
|
if (include_updated_conductors) conductors_count += conductorsToUpdate.count();
|
||||||
|
|
||||||
|
return(
|
||||||
|
elements.count()
|
||||||
|
+ textFields.count()
|
||||||
|
+ conductors_count
|
||||||
|
+ conductorsToUpdate.count()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Permet de composer rapidement la proposition "x elements, y conducteurs et
|
||||||
|
z champs de texte".
|
||||||
|
@param include_updated_conductors true pour compter les conducteurs mis a jour, false sinon
|
||||||
|
@return la proposition decrivant le contenu.
|
||||||
|
*/
|
||||||
|
QString DiagramContent::sentence(bool include_updated_conductors) const {
|
||||||
|
int conductors_count = conductorsToMove.count();
|
||||||
|
if (include_updated_conductors) conductors_count += conductorsToUpdate.count();
|
||||||
|
|
||||||
|
return(
|
||||||
|
QET::ElementsAndConductorsSentence(
|
||||||
|
elements.count(),
|
||||||
|
conductors_count,
|
||||||
|
textFields.count()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
39
diagramcontent.h
Normal file
39
diagramcontent.h
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
#ifndef DIAGRAM_CONTENT_H
|
||||||
|
#define DIAGRAM_CONTENT_H
|
||||||
|
#include <QtGui>
|
||||||
|
class Conductor;
|
||||||
|
class Element;
|
||||||
|
class Terminal;
|
||||||
|
class DiagramTextItem;
|
||||||
|
/**
|
||||||
|
Cette classe est un conteneur pour passer facilement le contenu d'un schema
|
||||||
|
a une fonction. Il permet d'acceder rapidement aux differents types de
|
||||||
|
composants que l'on peut trouver sur un schema, comme les elements, les
|
||||||
|
champs de texte, les conducteurs (a deplacer ou a mettre a jour, en cas de
|
||||||
|
deplacements), etc.
|
||||||
|
A noter que ce container ne contient pas systematiquement l'integralite
|
||||||
|
d'un schema. Il peut n'en contenir qu'une partie, typiquement les
|
||||||
|
composants selectionnes.
|
||||||
|
*/
|
||||||
|
class DiagramContent {
|
||||||
|
public:
|
||||||
|
DiagramContent();
|
||||||
|
DiagramContent(const DiagramContent &);
|
||||||
|
~DiagramContent();
|
||||||
|
|
||||||
|
/// Elements de texte du schema
|
||||||
|
QList<Element *> elements;
|
||||||
|
/// Champs de texte du schema
|
||||||
|
QList<DiagramTextItem *> textFields;
|
||||||
|
/// Conducteurs a mettre a jour du schema
|
||||||
|
QHash<Conductor *, Terminal *> conductorsToUpdate;
|
||||||
|
/// Conducteurs a deplacer du schema
|
||||||
|
QList<Conductor *> conductorsToMove;
|
||||||
|
|
||||||
|
QList<Conductor *> conductors() const;
|
||||||
|
QList<QGraphicsItem *> items() const;
|
||||||
|
QString sentence(bool = false) const;
|
||||||
|
int count(bool = false) const;
|
||||||
|
void clear();
|
||||||
|
};
|
||||||
|
#endif
|
||||||
@@ -135,10 +135,7 @@ void DiagramTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) {
|
|||||||
diagram_ptr -> undoStack().push(
|
diagram_ptr -> undoStack().push(
|
||||||
new MoveElementsCommand(
|
new MoveElementsCommand(
|
||||||
diagram_ptr,
|
diagram_ptr,
|
||||||
diagram_ptr -> elementsToMove(),
|
diagram_ptr -> selectedContent(),
|
||||||
diagram_ptr -> conductorsToMove(),
|
|
||||||
diagram_ptr -> conductorsToUpdate(),
|
|
||||||
diagram_ptr -> textsToMove(),
|
|
||||||
diagram_ptr -> current_movement
|
diagram_ptr -> current_movement
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -81,26 +81,9 @@ void DiagramView::deleteSelection() {
|
|||||||
// selection
|
// selection
|
||||||
if (scene -> focusItem()) return;
|
if (scene -> focusItem()) return;
|
||||||
|
|
||||||
QSet<Element *> garbage_elmt;
|
DiagramContent removed_content = scene -> selectedContent();
|
||||||
QSet<Conductor *> garbage_conductors;
|
|
||||||
QSet<DiagramTextItem *> garbage_texts;
|
|
||||||
|
|
||||||
// creation de deux listes : une pour les conducteurs, une pour les elements
|
|
||||||
foreach (QGraphicsItem *qgi, scene -> selectedItems()) {
|
|
||||||
// pour chaque qgi selectionne, il s'agit soit d'un element soit d'un conducteur
|
|
||||||
if (Conductor * c = qgraphicsitem_cast<Conductor *>(qgi)) {
|
|
||||||
// s'il s'agit d'un conducteur, on le met dans la liste des conducteurs
|
|
||||||
garbage_conductors << c;
|
|
||||||
} else if (Element *e = qgraphicsitem_cast<Element *>(qgi)) {
|
|
||||||
garbage_elmt << e;
|
|
||||||
// s'il s'agit d'un element, on veille a enlever ses conducteurs
|
|
||||||
garbage_conductors += e -> conductors().toSet();
|
|
||||||
} else if (DiagramTextItem *t = qgraphicsitem_cast<DiagramTextItem *>(qgi)) {
|
|
||||||
if (!t -> parentItem()) garbage_texts << t;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
scene -> clearSelection();
|
scene -> clearSelection();
|
||||||
scene -> undoStack().push(new DeleteElementsCommand(scene, garbage_elmt, garbage_conductors, garbage_texts));
|
scene -> undoStack().push(new DeleteElementsCommand(scene, removed_content));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -214,27 +197,9 @@ void DiagramView::zoomReset() {
|
|||||||
*/
|
*/
|
||||||
void DiagramView::cut() {
|
void DiagramView::cut() {
|
||||||
copy();
|
copy();
|
||||||
QSet<Element *> cut_elmt;
|
DiagramContent removed_content = scene -> selectedContent();
|
||||||
QSet<Conductor *> cut_conductors;
|
|
||||||
QSet<DiagramTextItem *> cut_texts;
|
|
||||||
|
|
||||||
// creation de deux listes : une pour les conducteurs, une pour les elements
|
|
||||||
foreach (QGraphicsItem *qgi, scene -> selectedItems()) {
|
|
||||||
// pour chaque qgi selectionne, il s'agit soit d'un element soit d'un conducteur
|
|
||||||
if (Conductor *c = qgraphicsitem_cast<Conductor *>(qgi)) {
|
|
||||||
// s'il s'agit d'un conducteur, on le met dans la liste des conducteurs
|
|
||||||
cut_conductors << c;
|
|
||||||
} else if (Element *e = qgraphicsitem_cast<Element *>(qgi)) {
|
|
||||||
cut_elmt << e;
|
|
||||||
// s'il s'agit d'un element, on veille a enlever ses conducteurs
|
|
||||||
cut_conductors += e -> conductors().toSet();
|
|
||||||
} else if (DiagramTextItem *t = qgraphicsitem_cast<DiagramTextItem *>(qgi)) {
|
|
||||||
// les textes recherches n'ont pas de parent
|
|
||||||
if (!t -> parentItem()) cut_texts << t;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
scene -> clearSelection();
|
scene -> clearSelection();
|
||||||
scene -> undoStack().push(new CutDiagramCommand(scene, cut_elmt, cut_conductors, cut_texts));
|
scene -> undoStack().push(new CutDiagramCommand(scene, scene -> selectedContent()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -260,16 +225,14 @@ void DiagramView::paste(const QPointF &pos, QClipboard::Mode clipboard_mode) {
|
|||||||
QDomDocument document_xml;
|
QDomDocument document_xml;
|
||||||
if (!document_xml.setContent(texte_presse_papier)) return;
|
if (!document_xml.setContent(texte_presse_papier)) return;
|
||||||
|
|
||||||
// listes pour recupere les elements et conducteurs ajoutes au schema par le coller
|
// objet pour recuperer le contenu ajoute au schema par le coller
|
||||||
QList<Element *> elements_pasted;
|
DiagramContent content_pasted;
|
||||||
QList<Conductor *> conductors_pasted;
|
scene -> fromXml(document_xml, pos, false, &content_pasted);
|
||||||
QList<DiagramTextItem *> texts_pasted;
|
|
||||||
scene -> fromXml(document_xml, pos, false, &elements_pasted, &conductors_pasted, &texts_pasted);
|
|
||||||
|
|
||||||
// si quelque chose a effectivement ete ajoute au schema, on cree un objet d'annulation
|
// si quelque chose a effectivement ete ajoute au schema, on cree un objet d'annulation
|
||||||
if (elements_pasted.count() || conductors_pasted.count() || texts_pasted.count()) {
|
if (content_pasted.count()) {
|
||||||
scene -> clearSelection();
|
scene -> clearSelection();
|
||||||
scene -> undoStack().push(new PasteDiagramCommand(scene, elements_pasted, conductors_pasted, texts_pasted));
|
scene -> undoStack().push(new PasteDiagramCommand(scene, content_pasted));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -264,10 +264,7 @@ void Element::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) {
|
|||||||
diagram_ptr -> undoStack().push(
|
diagram_ptr -> undoStack().push(
|
||||||
new MoveElementsCommand(
|
new MoveElementsCommand(
|
||||||
diagram_ptr,
|
diagram_ptr,
|
||||||
diagram_ptr -> elementsToMove(),
|
diagram_ptr -> selectedContent(),
|
||||||
diagram_ptr -> conductorsToMove(),
|
|
||||||
diagram_ptr -> conductorsToUpdate(),
|
|
||||||
diagram_ptr -> textsToMove(),
|
|
||||||
diagram_ptr -> current_movement
|
diagram_ptr -> current_movement
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ class ElementTextItem : public DiagramTextItem {
|
|||||||
// methodes
|
// methodes
|
||||||
public:
|
public:
|
||||||
virtual int type() const { return Type; }
|
virtual int type() const { return Type; }
|
||||||
|
virtual QRectF boundingRect() { return(QGraphicsTextItem::boundingRect().adjusted(0.0, -1.0, 0.0, 0.0)); }
|
||||||
bool followParentRotations() const;
|
bool followParentRotations() const;
|
||||||
void setFollowParentRotations(bool);
|
void setFollowParentRotations(bool);
|
||||||
void fromXml(const QDomElement &);
|
void fromXml(const QDomElement &);
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ HEADERS += aboutqet.h \
|
|||||||
diagramtextitem.h \
|
diagramtextitem.h \
|
||||||
insetproperties.h \
|
insetproperties.h \
|
||||||
conductorpropertieswidget.h \
|
conductorpropertieswidget.h \
|
||||||
|
diagramcontent.h \
|
||||||
conductorproperties.h
|
conductorproperties.h
|
||||||
SOURCES += aboutqet.cpp \
|
SOURCES += aboutqet.cpp \
|
||||||
borderinset.cpp \
|
borderinset.cpp \
|
||||||
@@ -140,6 +141,7 @@ SOURCES += aboutqet.cpp \
|
|||||||
diagramcommands.cpp \
|
diagramcommands.cpp \
|
||||||
diagramtextitem.cpp \
|
diagramtextitem.cpp \
|
||||||
conductorpropertieswidget.cpp \
|
conductorpropertieswidget.cpp \
|
||||||
|
diagramcontent.cpp \
|
||||||
conductorproperties.cpp
|
conductorproperties.cpp
|
||||||
RESOURCES += qelectrotech.qrc
|
RESOURCES += qelectrotech.qrc
|
||||||
TRANSLATIONS += lang/qet_en.ts lang/qt_fr.ts
|
TRANSLATIONS += lang/qet_en.ts lang/qt_fr.ts
|
||||||
|
|||||||
1
qet.cpp
1
qet.cpp
@@ -128,6 +128,7 @@ bool QET::attributeIsAReal(const QDomElement &e, QString nom_attribut, double *r
|
|||||||
Permet de composer rapidement la proposition "x elements et y conducteurs"
|
Permet de composer rapidement la proposition "x elements et y conducteurs"
|
||||||
@param elements_count nombre d élements
|
@param elements_count nombre d élements
|
||||||
@param conductors_count nombre de conducteurs
|
@param conductors_count nombre de conducteurs
|
||||||
|
@param texts_count nombre de champs de texte
|
||||||
@return la proposition decrivant le nombre d'elements et de conducteurs
|
@return la proposition decrivant le nombre d'elements et de conducteurs
|
||||||
*/
|
*/
|
||||||
QString QET::ElementsAndConductorsSentence(int elements_count, int conductors_count, int texts_count) {
|
QString QET::ElementsAndConductorsSentence(int elements_count, int conductors_count, int texts_count) {
|
||||||
|
|||||||
@@ -48,6 +48,25 @@ void QGIManager::release(QGraphicsItem *qgi) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Demande au QGIManager de gerer plusieurs QGI
|
||||||
|
@param qgis QGraphicsItems a gerer
|
||||||
|
*/
|
||||||
|
void QGIManager::manage(const QList<QGraphicsItem *> &qgis) {
|
||||||
|
foreach(QGraphicsItem *qgi, qgis) manage(qgi);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Indique au QGIManager que pour chaque QGI fourni, une reference vers celui-ci
|
||||||
|
a ete detruite.
|
||||||
|
S'il n'y a plus de references vers un QGI et que celui-ci n'est pas present
|
||||||
|
sur la scene de ce QGIManager, alors il sera detruit.
|
||||||
|
@param qgis QGraphicsItems a ne plus gerer
|
||||||
|
*/
|
||||||
|
void QGIManager::release(const QList<QGraphicsItem *> &qgis) {
|
||||||
|
foreach(QGraphicsItem *qgi, qgis) release(qgi);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Indique au QGIManager de detruire les QGraphicsItem restants lors de sa
|
Indique au QGIManager de detruire les QGraphicsItem restants lors de sa
|
||||||
destruction si ceux-ci n'appartiennent pas a la scene
|
destruction si ceux-ci n'appartiennent pas a la scene
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ class QGIManager {
|
|||||||
public:
|
public:
|
||||||
void manage(QGraphicsItem *);
|
void manage(QGraphicsItem *);
|
||||||
void release(QGraphicsItem *);
|
void release(QGraphicsItem *);
|
||||||
|
void manage(const QList<QGraphicsItem *> &);
|
||||||
|
void release(const QList<QGraphicsItem *> &);
|
||||||
void setDestroyQGIOnDelete(bool);
|
void setDestroyQGIOnDelete(bool);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user