diff --git a/sources/diagramevent/diagrameventaddelement.cpp b/sources/diagramevent/diagrameventaddelement.cpp index ebf2042c4..434cba52e 100644 --- a/sources/diagramevent/diagrameventaddelement.cpp +++ b/sources/diagramevent/diagrameventaddelement.cpp @@ -21,6 +21,8 @@ #include "../diagram.h" #include "../undocommand/addgraphicsobjectcommand.h" #include "../factory/elementfactory.h" +#include "../qetapp.h" +#include "../qetdiagrameditor.h" #include "../qetgraphicsitem/element.h" #include "../qetgraphicsitem/conductor.h" @@ -49,6 +51,15 @@ DiagramEventAddElement::DiagramEventAddElement(ElementsLocation &location, Diagr m_element -> setFlag(QGraphicsItem::ItemIsSelectable, false); m_diagram -> addItem(m_element); m_running = true; + + if (!diagram->views().isEmpty()) { + const auto qde = QETApp::diagramEditorAncestorOf(diagram->views().at(0)); + if (qde) { + m_status_bar = qde->statusBar(); + } + } else { + m_status_bar.clear(); + } } } } @@ -65,6 +76,11 @@ DiagramEventAddElement::~DiagramEventAddElement() m_diagram->removeItem(m_element); m_element->deleteLater(); } + + if (m_status_bar) { + m_status_bar->clearMessage(); + } + for (auto view : m_diagram->views()) view -> setContextMenuPolicy(Qt::DefaultContextMenu); } @@ -77,8 +93,14 @@ DiagramEventAddElement::~DiagramEventAddElement() */ void DiagramEventAddElement::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (m_element) { - m_element->setPos(Diagram::snapToGrid(event->scenePos())); + if (m_element) + { + const auto pos_{Diagram::snapToGrid(event->scenePos())}; + m_element->setPos(pos_); + + if (m_status_bar) { + m_status_bar->showMessage(QLatin1String("x %1 : y %2").arg(QString::number(pos_.x()), QString::number(pos_.y()))); + } } event->setAccepted(true); } diff --git a/sources/diagramevent/diagrameventaddelement.h b/sources/diagramevent/diagrameventaddelement.h index da444b5c0..59552a9d1 100644 --- a/sources/diagramevent/diagrameventaddelement.h +++ b/sources/diagramevent/diagrameventaddelement.h @@ -22,6 +22,7 @@ #include "diagrameventinterface.h" class Element; +class QStatusBar; /** @brief The DiagramEventAddElement class @@ -51,6 +52,7 @@ class DiagramEventAddElement : public DiagramEventInterface ElementsLocation m_location; Element *m_element; QString m_integrate_path; + QPointer m_status_bar; }; #endif // DIAGRAMEVENTADDELEMENT_H diff --git a/sources/elementsmover.cpp b/sources/elementsmover.cpp index c6d070ad0..315e56a99 100644 --- a/sources/elementsmover.cpp +++ b/sources/elementsmover.cpp @@ -28,6 +28,8 @@ #include "qetgraphicsitem/elementtextitemgroup.h" #include "qetgraphicsitem/independenttextitem.h" #include "undocommand/addgraphicsobjectcommand.h" +#include "qetapp.h" +#include "qetdiagrameditor.h" /** @brief ElementsMover::ElementsMover Constructor @@ -38,16 +40,13 @@ ElementsMover::ElementsMover() : diagram_(nullptr), m_movement_driver(nullptr), m_moved_content() -{ - -} +{} /** @brief ElementsMover::~ElementsMover Destructor */ ElementsMover::~ElementsMover() -{ -} +{} /** @brief ElementsMover::isReady @@ -75,6 +74,15 @@ int ElementsMover::beginMovement(Diagram *diagram, QGraphicsItem *driver_item) if (!diagram) return(-1); diagram_ = diagram; + if (!diagram->views().isEmpty()) { + const auto qde = QETApp::diagramEditorAncestorOf(diagram->views().at(0)); + if (qde) { + m_status_bar = qde->statusBar(); + } + } else { + m_status_bar.clear(); + } + // Take count of driver item m_movement_driver = driver_item; @@ -146,6 +154,12 @@ void ElementsMover::continueMovement(const QPointF &movement) // } // we don't move it. c->updatePath(); } + + if (m_status_bar) + { + const auto point_{m_movement_driver->scenePos()}; + m_status_bar->showMessage(QLatin1String("x %1 : y %2").arg(QString::number(point_.x()), QString::number(point_.y()))); + } } /** @@ -227,4 +241,8 @@ void ElementsMover::endMovement() // There is no movement in progress now movement_running_ = false; m_moved_content.clear(); + + if (m_status_bar) { + m_status_bar->clearMessage(); + } } diff --git a/sources/elementsmover.h b/sources/elementsmover.h index 2f457f230..ceb7c9631 100644 --- a/sources/elementsmover.h +++ b/sources/elementsmover.h @@ -19,10 +19,14 @@ #define ELEMENTS_MOVER_H #include +#include + #include "diagramcontent.h" class ConductorTextItem; class Diagram; +class QStatusBar; + /** This class manages the interactive movement of different items (elements, conductors, text items etc...) on a particular diagram. @@ -57,5 +61,7 @@ class ElementsMover { Diagram *diagram_; QGraphicsItem *m_movement_driver; DiagramContent m_moved_content; + QPointer m_status_bar; + }; #endif