[qet] [3368] Diagram command add QGraphicsItem and derived : |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
Revision: 3368
Author: blacksun
Date: 2014-10-10 10:58:44 +0200 (Fri, 10 Oct 2014)
Log Message:
-----------
Diagram command add QGraphicsItem and derived :
Remove each comand for each type and replace it by generic class by using template class (addItemComand).
Modified Paths:
--------------
trunk/sources/diagram.cpp
trunk/sources/diagram.h
trunk/sources/diagramcommands.cpp
trunk/sources/diagramcommands.h
trunk/sources/diagramview.cpp
trunk/sources/dvevent/dveventaddimage.cpp
trunk/sources/dvevent/dveventaddshape.cpp
trunk/sources/dvevent/dveventaddtext.cpp
trunk/sources/qetgraphicsitem/element.cpp
trunk/sources/qetgraphicsitem/terminal.cpp
Modified: trunk/sources/diagram.cpp
===================================================================
--- trunk/sources/diagram.cpp 2014-10-09 09:02:41 UTC (rev 3367)
+++ trunk/sources/diagram.cpp 2014-10-10 08:58:44 UTC (rev 3368)
@@ -568,7 +568,7 @@
// charge les caracteristiques de l'element
if (nvel_elmt -> fromXml(element_xml, table_adr_id, handle_inputs_rotation)) {
// ajout de l'element au schema et a la liste des elements ajoutes
- addElement(nvel_elmt);
+ addItem(nvel_elmt);
added_elements << nvel_elmt;
} else {
delete nvel_elmt;
@@ -581,7 +581,7 @@
foreach (QDomElement text_xml, QET::findInDomElement(root, "inputs", "input")) {
IndependentTextItem *iti = new IndependentTextItem(this);
iti -> fromXml(text_xml);
- addIndependentTextItem(iti);
+ addItem(iti);
added_texts << iti;
}
@@ -727,18 +727,15 @@
}
/**
- Ajoute un element sur le schema
- @param element Element a ajouter
-*/
-void Diagram::addElement(Element *element) {
+ * @brief Diagram::addItem
+ * Add element to diagram
+ * @param element
+ */
+void Diagram::addItem(Element *element) {
if (!element || isReadOnly()) return;
-
- // ajoute l'element au schema
- if (element -> scene() != this) {
- addItem(element);
- }
-
- // surveille les modifications de ses champs de texte
+
+ if (element -> scene() != this)
+ QGraphicsScene::addItem(element);
foreach(ElementTextItem *eti, element -> texts()) {
connect(
eti,
@@ -750,33 +747,31 @@
}
/**
- Ajoute un conducteur sur le schema
- @param conductor Conducteur a ajouter
-*/
-void Diagram::addConductor(Conductor *conductor) {
+ * @brief Diagram::addItem
+ * Add conductor to scene.
+ * @param conductor
+ */
+void Diagram::addItem(Conductor *conductor) {
if (!conductor || isReadOnly()) return;
- // ajoute le conducteur au schema
if (conductor -> scene() != this) {
- addItem(conductor);
+ QGraphicsScene::addItem(conductor);
conductor -> terminal1 -> addConductor(conductor);
conductor -> terminal2 -> addConductor(conductor);
}
}
/**
- Aoute un champ de texte independant sur le schema
- @param iti Champ de texte a ajouter
-*/
-void Diagram::addIndependentTextItem(IndependentTextItem *iti) {
+ * @brief Diagram::addItem
+ * Add text item to diagram
+ * @param iti
+ */
+void Diagram::addItem(IndependentTextItem *iti) {
if (!iti || isReadOnly()) return;
- // ajoute le champ de texte au schema
- if (iti -> scene() != this) {
- addItem(iti);
- }
+ if (iti -> scene() != this)
+ QGraphicsScene::addItem(iti);
- // surveille les modifications apportees au champ de texte
connect(
iti,
SIGNAL(diagramTextChanged(DiagramTextItem *, const QString &, const QString &)),
@@ -785,28 +780,30 @@
);
}
-void Diagram::addDiagramImageItem(DiagramImageItem *dii) {
- if (!dii || isReadOnly()) return;
-
- //add image at diagram
- if (dii -> scene() != this) {
- addItem(dii);
- }
+/**
+ * @brief Diagram::addItem
+ * Generique method to add item to scene
+ * @param item
+ */
+void Diagram::addItem(QGraphicsItem *item) {
+ if (!item || isReadOnly()) return;
+ if (item -> scene() != this)
+ QGraphicsScene::addItem(item);
}
/**
- Enleve un element du schema
- @param element Element a enlever
-*/
-void Diagram::removeElement(Element *element) {
+ * @brief Diagram::removeItem
+ * Remove an element from the scene
+ * @param element
+ */
+void Diagram::removeItem(Element *element) {
if (!element || isReadOnly()) return;
-
+
// remove all links of element
element->unlinkAllElements();
- // enleve l'element au schema
- removeItem(element);
-
- // arrete la surveillance des modifications de ses champs de texte
+
+ QGraphicsScene::removeItem(element);
+
foreach(ElementTextItem *eti, element -> texts()) {
disconnect(
eti,
@@ -818,31 +815,29 @@
}
/**
- Enleve un conducteur du schema
- @param conductor Conducteur a enlever
-*/
-void Diagram::removeConductor(Conductor *conductor) {
+ * @brief Diagram::removeItem
+ * Remove a conductor from diagram
+ * @param conductor
+ */
+void Diagram::removeItem(Conductor *conductor) {
if (!conductor || isReadOnly()) return;
-
- // detache le conducteur sans le detruire
+
conductor -> terminal1 -> removeConductor(conductor);
conductor -> terminal2 -> removeConductor(conductor);
-
- // enleve le conducteur du schema
- removeItem(conductor);
+
+ QGraphicsScene::removeItem(conductor);
}
/**
- Enleve un champ de texte independant du schema
- @param iti Champ de texte a enlever
-*/
-void Diagram::removeIndependentTextItem(IndependentTextItem *iti) {
+ * @brief Diagram::removeItem
+ * Remove text field from diagram
+ * @param iti
+ */
+void Diagram::removeItem(IndependentTextItem *iti) {
if (!iti || isReadOnly()) return;
- // enleve le champ de texte au schema
- removeItem(iti);
-
- // arrete la surveillance des modifications apportees au champ de texte
+ QGraphicsScene::removeItem(iti);
+
disconnect(
iti,
SIGNAL(diagramTextChanged(DiagramTextItem *, const QString &, const QString &)),
@@ -851,6 +846,15 @@
);
}
+/**
+ * @brief Diagram::removeItem
+ * Generique methode to remove QGraphicsItem from diagram
+ * @param item
+ */
+void Diagram::removeItem(QGraphicsItem *item) {
+ QGraphicsScene::removeItem(item);
+}
+
void Diagram::titleChanged(const QString &title) {
emit(diagramTitleChanged(this, title));
}
Modified: trunk/sources/diagram.h
===================================================================
--- trunk/sources/diagram.h 2014-10-09 09:02:41 UTC (rev 3367)
+++ trunk/sources/diagram.h 2014-10-10 08:58:44 UTC (rev 3368)
@@ -147,15 +147,16 @@
// methods related to graphics items addition/removal on the diagram
void initElementsLinks();
- void addElement(Element *);
- void addConductor(Conductor *);
- void addIndependentTextItem(IndependentTextItem *);
- void addDiagramImageItem(DiagramImageItem *);
+ virtual void addItem (Element *element);
+ virtual void addItem (Conductor *conductor);
+ virtual void addItem (IndependentTextItem *iti);
+ virtual void addItem (QGraphicsItem *item);
+
+ virtual void removeItem (Element *element);
+ virtual void removeItem (Conductor *conductor);
+ virtual void removeItem (IndependentTextItem *iti);
+ virtual void removeItem (QGraphicsItem *item);
- void removeElement(Element *);
- void removeConductor(Conductor *);
- void removeIndependentTextItem(IndependentTextItem *);
-
// methods related to graphics options
ExportProperties applyProperties(const ExportProperties &);
void setDisplayGrid(bool);
Modified: trunk/sources/diagramcommands.cpp
===================================================================
--- trunk/sources/diagramcommands.cpp 2014-10-09 09:02:41 UTC (rev 3367)
+++ trunk/sources/diagramcommands.cpp 2014-10-10 08:58:44 UTC (rev 3368)
@@ -30,187 +30,35 @@
#include <QPropertyAnimation>
/**
- Constructeur
- @param d Schema auquel on ajoute un element
- @param elmt Element ajoute
- @param p Position a laquelle l'element est ajoute
- @param parent QUndoCommand parent
-*/
-AddElementCommand::AddElementCommand(
- Diagram *d,
- Element *elmt,
- const QPointF &p,
- QUndoCommand *parent
-) :
- QUndoCommand(QString(QObject::tr("ajouter 1 %1", "undo caption - %1 is an element name")).arg(elmt -> name()), parent),
- element(elmt),
- diagram(d),
- position(p)
-{
- diagram -> qgiManager().manage(element);
-}
-
-/// Destructeur
-AddElementCommand::~AddElementCommand() {
- diagram -> qgiManager().release(element);
-}
-
-/// Annule l'ajout
-void AddElementCommand::undo() {
- diagram -> showMe();
- diagram -> removeElement(element);
-}
-
-/// Refait l'ajout
-void AddElementCommand::redo() {
- diagram -> showMe();
- diagram -> addElement(element);
- element -> setPos(position);
- element -> setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
-}
-
-/**
- Constructeur
- @param dia Schema auquel on ajoute du texte
- @param text Texte ajoute
- @param pos Position a laquelle le texte est ajoute
- @param parent QUndoCommand parent
-*/
-AddTextCommand::AddTextCommand(Diagram *dia, IndependentTextItem *text, const QPointF &pos, QUndoCommand *parent) :
- QUndoCommand(QObject::tr("Ajouter un champ de texte", "undo caption"), parent),
- textitem(text),
- diagram(dia),
- position(pos)
-{
- diagram -> qgiManager().manage(textitem);
-}
-
-/// Destructeur
-AddTextCommand::~AddTextCommand() {
- diagram -> qgiManager().release(textitem);
-}
-
-/// Annule l'ajout
-void AddTextCommand::undo() {
- diagram -> showMe();
- diagram -> removeIndependentTextItem(textitem);
-}
-
-/// Refait l'ajout
-void AddTextCommand::redo() {
- diagram -> showMe();
- diagram -> addIndependentTextItem(textitem);
- textitem -> setPos(position);
-}
-
-/**
- Constructeur
- @param dia Schema auquel on ajoute une image
- @param image Image ajoute
- @param pos Position a laquelle l'image est ajoute
- @param parent QUndoCommand parent
+ * Specialized template function
*/
-AddImageCommand::AddImageCommand(Diagram *dia, DiagramImageItem *image, const QPointF &pos, QUndoCommand *parent):
- QUndoCommand(QObject::tr("Ajouter une image", "undo caption"), parent),
- imageitem(image),
- diagram(dia),
- position(pos)
-{
- diagram -> qgiManager().manage(imageitem);
+template<>
+QString itemText <DiagramImageItem *> (DiagramImageItem *item) {
+ Q_UNUSED(item);
+ return QObject::tr("une image");
}
-
-///Destructor
-AddImageCommand::~AddImageCommand() {
- diagram -> qgiManager().release(imageitem);
+template<>
+QString itemText <IndependentTextItem *> (IndependentTextItem *item) {
+ Q_UNUSED(item);
+ return QObject::tr("un champ texte");
}
-
-///Annule l'ajout
-void AddImageCommand::undo() {
- diagram -> showMe();
- diagram -> removeItem(imageitem);
+template<>
+QString itemText <Element *> (Element *item) {
+ return QObject::tr("un \351l\351ment : %1").arg(item->name());
}
-
-///Refait l'ajout
-void AddImageCommand::redo() {
- diagram -> showMe();
- diagram -> addDiagramImageItem(imageitem);
- imageitem -> setPos(position - imageitem -> boundingRect().center());
+template<>
+QString itemText <QetShapeItem *> (QetShapeItem *item) {
+ Q_UNUSED(item);
+ return QObject::tr("une shape");
}
-
-/**
- Constructeur
- @param dia Schema auquel on ajoute une shape
- @param shape Shape ajoute
- @param pos Position a laquelle l'shape est ajoute
- @param parent QUndoCommand parent
- */
-AddShapeCommand::AddShapeCommand(Diagram *dia, QetShapeItem *shape, const QPointF &pos, QUndoCommand *parent):
- QUndoCommand(QObject::tr("Ajouter une Shape", "undo caption"), parent),
- shapeitem(shape),
- diagram(dia),
- position(pos)
-{
- diagram -> qgiManager().manage(shapeitem);
+template<>
+QString itemText <Conductor *> (Conductor *item) {
+ Q_UNUSED(item);
+ return QObject::tr("un conducteur");
}
-///Destructor
-AddShapeCommand::~AddShapeCommand() {
- diagram -> qgiManager().release(shapeitem);
-}
-
-///Annule l'ajout
-void AddShapeCommand::undo() {
- diagram -> showMe();
- diagram -> removeItem(shapeitem);
-}
-
-///Refait l'ajout
-void AddShapeCommand::redo() {
- diagram -> showMe();
- if (shapeitem ->diagram() != diagram)
- diagram -> addItem(shapeitem);
- //diagram -> addDiagramImageItem(imageitem);
- //imageitem -> setPos(position - imageitem -> boundingRect().center());
-}
-
-
/**
Constructeur
- @param d Schema auquel on ajoute un conducteur
- @param c Conducteur ajoute
- @param parent QUndoCommand parent
-*/
-AddConductorCommand::AddConductorCommand(
- Diagram *d,
- Conductor *c,
- QUndoCommand *parent
-) :
- QUndoCommand(QObject::tr("ajouter un conducteur", "undo caption"), parent),
- conductor(c),
- diagram(d)
-{
- diagram -> qgiManager().manage(conductor);
-}
-
-/// Destructeur
-AddConductorCommand::~AddConductorCommand() {
- diagram -> qgiManager().release(conductor);
-}
-
-/// Annule l'ajout
-void AddConductorCommand::undo() {
- diagram -> showMe();
- diagram -> removeConductor(conductor);
-}
-
-/// Refait l'ajout
-void AddConductorCommand::redo() {
- diagram -> showMe();
- diagram -> addConductor(conductor);
-}
-
-/**
- Constructeur
@param dia Schema dont on supprime des elements et conducteurs
@param content Contenu supprime
@param parent QUndoCommand parent
@@ -245,17 +93,17 @@
diagram -> showMe();
// remet les elements
foreach(Element *e, removed_content.elements) {
- diagram -> addElement(e);
+ diagram -> addItem(e);
}
// remet les conducteurs
foreach(Conductor *c, removed_content.conductors(DiagramContent::AnyConductor)) {
- diagram -> addConductor(c);
+ diagram -> addItem(c);
}
// remet les textes
foreach(IndependentTextItem *t, removed_content.textFields) {
- diagram -> addIndependentTextItem(t);
+ diagram -> addItem(t);
}
foreach(DiagramImageItem *dii, removed_content.images) {
@@ -276,7 +124,7 @@
// Remove Conductor
foreach(Conductor *c, removed_content.conductors(DiagramContent::AnyConductor)) {
- diagram -> removeConductor(c);
+ diagram -> removeItem(c);
//If option one text per folio is enable, and the text item of
//current conductor is visible (that mean the conductor own the single displayed text)
@@ -293,12 +141,12 @@
// Remove elements
foreach(Element *e, removed_content.elements) {
- diagram -> removeElement(e);
+ diagram -> removeItem(e);
}
// Remove texts
foreach(IndependentTextItem *t, removed_content.textFields) {
- diagram -> removeIndependentTextItem(t);
+ diagram -> removeItem(t);
}
// Remove images
@@ -350,16 +198,16 @@
void PasteDiagramCommand::undo() {
diagram -> showMe();
// remove the conductors
- foreach(Conductor *c, content.conductorsToMove) diagram -> removeConductor(c);
+ foreach(Conductor *c, content.conductorsToMove) diagram -> removeItem(c);
// remove the elements
- foreach(Element *e, content.elements) diagram -> removeElement(e);
+ foreach(Element *e, content.elements) diagram -> removeItem(e);
// remove the texts
- foreach(IndependentTextItem *t, content.textFields) diagram -> removeIndependentTextItem(t);
+ foreach(IndependentTextItem *t, content.textFields) diagram -> removeItem(t);
- // remove the images
- foreach(DiagramImageItem *dii, content.images) diagram -> removeItem(dii);
+ // remove the images and shapes
+ foreach(QGraphicsItem *qgi, content.items(DiagramContent::Images | DiagramContent::Shapes)) diagram -> removeItem(qgi);
}
/// refait le coller
@@ -373,21 +221,18 @@
}
else {
// paste the elements
- foreach(Element *e, content.elements) diagram -> addElement(e);
+ foreach(Element *e, content.elements) diagram -> addItem(e);
// paste the conductors
- foreach(Conductor *c, content.conductorsToMove) diagram -> addConductor(c);
+ foreach(Conductor *c, content.conductorsToMove) diagram -> addItem(c);
// paste the texts
- foreach(IndependentTextItem *t, content.textFields) diagram -> addIndependentTextItem(t);
+ foreach(IndependentTextItem *t, content.textFields) diagram -> addItem(t);
- // paste the images
- foreach(DiagramImageItem *dii, content.images) diagram -> addDiagramImageItem(dii);
+ // paste the images and shapes
+ foreach(QGraphicsItem *qgi, content.items(DiagramContent::Images | DiagramContent::Shapes)) diagram -> addItem(qgi);
}
- foreach(Element *e, content.elements) e -> setSelected(true);
- foreach(Conductor *c, content.conductorsToMove) c -> setSelected(true);
- foreach(IndependentTextItem *t, content.textFields) t -> setSelected(true);
- foreach(DiagramImageItem *dii, content.images) dii -> setSelected(true);
+ foreach (QGraphicsItem *qgi, content.items()) qgi -> setSelected(true);
}
/**
Modified: trunk/sources/diagramcommands.h
===================================================================
--- trunk/sources/diagramcommands.h 2014-10-09 09:02:41 UTC (rev 3367)
+++ trunk/sources/diagramcommands.h 2014-10-10 08:58:44 UTC (rev 3368)
@@ -26,7 +26,8 @@
#include "qet.h"
#include "qetgraphicsitem/qetshapeitem.h"
#include "conductorprofile.h"
-class Diagram;
+#include "diagram.h"
+
class DiagramTextItem;
class Element;
class ElementTextItem;
@@ -34,138 +35,54 @@
class DiagramImageItem;
/**
- This command adds an element to a particular diagram.
-*/
-class AddElementCommand : public QUndoCommand {
- // constructors, destructor
+ * @brief The AddItemCommand class
+ * This command add an item in a diagram
+ * The item to add is template, but must be QGraphicsItem or derived.
+ */
+template <typename QGI>
+class AddItemCommand : public QUndoCommand {
public:
- AddElementCommand(Diagram *, Element *, const QPointF &, QUndoCommand * = 0);
- virtual ~AddElementCommand();
- private:
- AddElementCommand(const AddElementCommand &);
-
- // methods
- public:
- virtual void undo();
- virtual void redo();
-
- // attributes
- private:
- /// added element
- Element *element;
- /// diagram the element is added to
- Diagram *diagram;
- /// position of the element on the diagram
- QPointF position;
-};
+ AddItemCommand(QGI item, Diagram *diagram, const QPointF &pos = QPointF(), QUndoCommand *parent = nullptr) :
+ QUndoCommand (parent),
+ m_item (item),
+ m_diagram (diagram),
+ m_pos(pos)
+ {
+ setText(QObject::tr("Ajouter ") + itemText(item));
+ m_diagram -> qgiManager().manage(m_item);
+ }
-/**
- This command adds an independent (i.e. related to neither an element nor a
- conductor) text item to a particular diagram.
-*/
-class AddTextCommand : public QUndoCommand {
- // constructors, destructor
- public:
- AddTextCommand(Diagram *, IndependentTextItem *, const QPointF &, QUndoCommand * = 0);
- virtual ~AddTextCommand();
- private:
- AddTextCommand(const AddTextCommand &);
-
- // methods
- public:
- virtual void undo();
- virtual void redo();
-
- // attributes
- private:
- /// added text item
- IndependentTextItem *textitem;
- /// diagram the text item is added to
- Diagram *diagram;
- /// position of the text item on the diagram
- QPointF position;
-};
+ virtual ~AddItemCommand() {
+ m_diagram -> qgiManager().release(m_item);
+ }
-/**
- This command adds an image item to a particular diagram
-*/
-class AddImageCommand : public QUndoCommand {
- //constructors, destructor
- public:
- AddImageCommand (Diagram *, DiagramImageItem *, const QPointF &, QUndoCommand * = 0);
- virtual ~AddImageCommand();
- private:
- AddImageCommand(const AddImageCommand &);
+ virtual void undo() {
+ m_diagram -> showMe();
+ m_diagram -> removeItem(m_item);
+ }
- //methods
- public:
- virtual void undo();
- virtual void redo();
+ virtual void redo() {
+ m_diagram -> showMe();
+ m_diagram -> addItem(m_item);
+ m_item -> setPos(m_pos);
+ }
- // attributes
private:
- /// added image item
- DiagramImageItem *imageitem;
- /// diagram the image item is added to
- Diagram *diagram;
- /// position of the image item on the diagram
- QPointF position;
-
+ QGI m_item;
+ Diagram *m_diagram;
+ QPointF m_pos;
};
-
/**
- This command adds an image item to a particular diagram
-*/
-class AddShapeCommand : public QUndoCommand {
- //constructors, destructor
- public:
- AddShapeCommand (Diagram *, QetShapeItem *, const QPointF &, QUndoCommand * = 0);
- virtual ~AddShapeCommand();
- private:
- AddShapeCommand(const AddShapeCommand &);
+ *Template function: return generique name of a QGraphicsItem.
+ */
+template <typename T>
+QString itemText(T item) {
+ Q_UNUSED (item);
+ return QObject::tr("un item");
+}
- //methods
- public:
- virtual void undo();
- virtual void redo();
-
- // attributes
- private:
- /// added shape item
- QetShapeItem *shapeitem;
- /// diagram the image item is added to
- Diagram *diagram;
- /// position of the image item on the diagram
- QPointF position;
-
-};
-
/**
- This command adds a conductor to a particular diagram.
-*/
-class AddConductorCommand : public QUndoCommand {
- // constructors, destructor
- public:
- AddConductorCommand(Diagram *, Conductor *, QUndoCommand * = 0);
- virtual ~AddConductorCommand();
- private:
- AddConductorCommand(const AddConductorCommand &);
-
- // methods
- public:
- virtual void undo();
- virtual void redo();
-
- // attributes
- private:
- /// added conductor
- Conductor *conductor;
- /// diagram the conductor is added to
- Diagram *diagram;
-};
-
-/**
This command removes content from a particular diagram.
*/
class DeleteElementsCommand : public QUndoCommand {
Modified: trunk/sources/diagramview.cpp
===================================================================
--- trunk/sources/diagramview.cpp 2014-10-09 09:02:41 UTC (rev 3367)
+++ trunk/sources/diagramview.cpp 2014-10-10 08:58:44 UTC (rev 3368)
@@ -313,7 +313,7 @@
*/
void DiagramView::handleTextDrop(QDropEvent *e) {
if (scene -> isReadOnly() || (e -> mimeData() -> hasText() == false) ) return;
- scene -> undoStack().push(new AddTextCommand(scene, new IndependentTextItem (e -> mimeData() -> text()), mapToScene(e->pos())));
+ scene -> undoStack().push(new AddItemCommand<IndependentTextItem *>(new IndependentTextItem (e -> mimeData() -> text()), scene, mapToScene(e->pos())));
}
/**
@@ -844,8 +844,8 @@
return(false);
}
- // pose de l'element sur le schema
- diagram() -> undoStack().push(new AddElementCommand(diagram(), el, mapToScene(pos)));
+ //Add element to diagram
+ diagram() -> undoStack().push (new AddItemCommand<Element *>(el, diagram(), mapToScene(pos)));
return(true);
}
Modified: trunk/sources/dvevent/dveventaddimage.cpp
===================================================================
--- trunk/sources/dvevent/dveventaddimage.cpp 2014-10-09 09:02:41 UTC (rev 3367)
+++ trunk/sources/dvevent/dveventaddimage.cpp 2014-10-10 08:58:44 UTC (rev 3368)
@@ -54,7 +54,10 @@
*/
bool DVEventAddImage::mousePressEvent(QMouseEvent *event) {
if (m_image && event -> button() == Qt::LeftButton) {
- m_diagram -> undoStack().push(new AddImageCommand(m_diagram, m_image, m_dv->mapToScene(event->pos())));
+ QPointF pos = m_dv -> mapToScene(event -> pos());
+ pos.rx() -= m_image->boundingRect().width()/2;
+ pos.ry() -= m_image->boundingRect().height()/2;
+ m_diagram -> undoStack().push (new AddItemCommand<DiagramImageItem *>(m_image, m_diagram, pos));
m_dv -> setContextMenuPolicy(Qt::DefaultContextMenu);
m_running = false;
return true;
Modified: trunk/sources/dvevent/dveventaddshape.cpp
===================================================================
--- trunk/sources/dvevent/dveventaddshape.cpp 2014-10-09 09:02:41 UTC (rev 3367)
+++ trunk/sources/dvevent/dveventaddshape.cpp 2014-10-10 08:58:44 UTC (rev 3368)
@@ -76,7 +76,7 @@
// Next left click finish all shape item except the polyline
if (m_shape_type != QetShapeItem::Polyline && event->button() == Qt::LeftButton) {
m_shape_item -> setP2 (pos);
- m_diagram -> undoStack().push (new AddShapeCommand(m_diagram, m_shape_item, pos));
+ m_diagram -> undoStack().push (new AddItemCommand<QetShapeItem *> (m_shape_item, m_diagram));
m_dv -> setContextMenuPolicy(Qt::DefaultContextMenu);
m_running = false;
return true;
@@ -94,7 +94,7 @@
// m_running is set to false at the release of right button.
if (m_shape_type == QetShapeItem::Polyline && event -> button() == Qt::RightButton) {
m_shape_item -> setP2 (pos);
- m_diagram -> undoStack().push(new AddShapeCommand(m_diagram, m_shape_item, pos));
+ m_diagram -> undoStack().push (new AddItemCommand<QetShapeItem *> (m_shape_item, m_diagram));
return true;
}
Modified: trunk/sources/dvevent/dveventaddtext.cpp
===================================================================
--- trunk/sources/dvevent/dveventaddtext.cpp 2014-10-09 09:02:41 UTC (rev 3367)
+++ trunk/sources/dvevent/dveventaddtext.cpp 2014-10-10 08:58:44 UTC (rev 3368)
@@ -30,9 +30,9 @@
bool DVEventAddText::mousePressEvent(QMouseEvent *event) {
if (event->button() == Qt::LeftButton) {
- m_diagram -> undoStack().push(new AddTextCommand(m_diagram,
- new IndependentTextItem("_"),
- m_dv -> mapToScene(event -> pos())));
+ m_diagram -> undoStack().push(new AddItemCommand<IndependentTextItem *>(new IndependentTextItem("_"),
+ m_diagram,
+ m_dv -> mapToScene(event -> pos())));
return true;
}
return false;
Modified: trunk/sources/qetgraphicsitem/element.cpp
===================================================================
--- trunk/sources/qetgraphicsitem/element.cpp 2014-10-09 09:02:41 UTC (rev 3367)
+++ trunk/sources/qetgraphicsitem/element.cpp 2014-10-10 08:58:44 UTC (rev 3368)
@@ -38,6 +38,8 @@
link_type_ = Simple;
uuid_ = QUuid::createUuid();
setZValue(10);
+ setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+
}
/**
Modified: trunk/sources/qetgraphicsitem/terminal.cpp
===================================================================
--- trunk/sources/qetgraphicsitem/terminal.cpp 2014-10-09 09:02:41 UTC (rev 3367)
+++ trunk/sources/qetgraphicsitem/terminal.cpp 2014-10-10 08:58:44 UTC (rev 3368)
@@ -407,7 +407,7 @@
// autrement, on pose un conducteur
Conductor *new_conductor = new Conductor(this, other_terminal);
new_conductor -> setProperties(d -> defaultConductorProperties);
- d -> undoStack().push(new AddConductorCommand(d, new_conductor));
+ d -> undoStack().push(new AddItemCommand<Conductor *>(new_conductor, d));
new_conductor -> autoText();
}
}