Show x:y pos when drag element in the status bar

This commit is contained in:
joshua
2022-11-04 20:25:49 +01:00
parent 850cc5d0f2
commit 0ae0ce04cd
4 changed files with 55 additions and 7 deletions

View File

@@ -21,6 +21,8 @@
#include "../diagram.h" #include "../diagram.h"
#include "../undocommand/addgraphicsobjectcommand.h" #include "../undocommand/addgraphicsobjectcommand.h"
#include "../factory/elementfactory.h" #include "../factory/elementfactory.h"
#include "../qetapp.h"
#include "../qetdiagrameditor.h"
#include "../qetgraphicsitem/element.h" #include "../qetgraphicsitem/element.h"
#include "../qetgraphicsitem/conductor.h" #include "../qetgraphicsitem/conductor.h"
@@ -49,6 +51,15 @@ DiagramEventAddElement::DiagramEventAddElement(ElementsLocation &location, Diagr
m_element -> setFlag(QGraphicsItem::ItemIsSelectable, false); m_element -> setFlag(QGraphicsItem::ItemIsSelectable, false);
m_diagram -> addItem(m_element); m_diagram -> addItem(m_element);
m_running = true; 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_diagram->removeItem(m_element);
m_element->deleteLater(); m_element->deleteLater();
} }
if (m_status_bar) {
m_status_bar->clearMessage();
}
for (auto view : m_diagram->views()) for (auto view : m_diagram->views())
view -> setContextMenuPolicy(Qt::DefaultContextMenu); view -> setContextMenuPolicy(Qt::DefaultContextMenu);
} }
@@ -77,8 +93,14 @@ DiagramEventAddElement::~DiagramEventAddElement()
*/ */
void DiagramEventAddElement::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void DiagramEventAddElement::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{ {
if (m_element) { if (m_element)
m_element->setPos(Diagram::snapToGrid(event->scenePos())); {
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); event->setAccepted(true);
} }

View File

@@ -22,6 +22,7 @@
#include "diagrameventinterface.h" #include "diagrameventinterface.h"
class Element; class Element;
class QStatusBar;
/** /**
@brief The DiagramEventAddElement class @brief The DiagramEventAddElement class
@@ -51,6 +52,7 @@ class DiagramEventAddElement : public DiagramEventInterface
ElementsLocation m_location; ElementsLocation m_location;
Element *m_element; Element *m_element;
QString m_integrate_path; QString m_integrate_path;
QPointer<QStatusBar> m_status_bar;
}; };
#endif // DIAGRAMEVENTADDELEMENT_H #endif // DIAGRAMEVENTADDELEMENT_H

View File

@@ -28,6 +28,8 @@
#include "qetgraphicsitem/elementtextitemgroup.h" #include "qetgraphicsitem/elementtextitemgroup.h"
#include "qetgraphicsitem/independenttextitem.h" #include "qetgraphicsitem/independenttextitem.h"
#include "undocommand/addgraphicsobjectcommand.h" #include "undocommand/addgraphicsobjectcommand.h"
#include "qetapp.h"
#include "qetdiagrameditor.h"
/** /**
@brief ElementsMover::ElementsMover Constructor @brief ElementsMover::ElementsMover Constructor
@@ -38,16 +40,13 @@ ElementsMover::ElementsMover() :
diagram_(nullptr), diagram_(nullptr),
m_movement_driver(nullptr), m_movement_driver(nullptr),
m_moved_content() m_moved_content()
{ {}
}
/** /**
@brief ElementsMover::~ElementsMover Destructor @brief ElementsMover::~ElementsMover Destructor
*/ */
ElementsMover::~ElementsMover() ElementsMover::~ElementsMover()
{ {}
}
/** /**
@brief ElementsMover::isReady @brief ElementsMover::isReady
@@ -75,6 +74,15 @@ int ElementsMover::beginMovement(Diagram *diagram, QGraphicsItem *driver_item)
if (!diagram) return(-1); if (!diagram) return(-1);
diagram_ = diagram; 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 // Take count of driver item
m_movement_driver = driver_item; m_movement_driver = driver_item;
@@ -146,6 +154,12 @@ void ElementsMover::continueMovement(const QPointF &movement)
// } // we don't move it. // } // we don't move it.
c->updatePath(); 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 // There is no movement in progress now
movement_running_ = false; movement_running_ = false;
m_moved_content.clear(); m_moved_content.clear();
if (m_status_bar) {
m_status_bar->clearMessage();
}
} }

View File

@@ -19,10 +19,14 @@
#define ELEMENTS_MOVER_H #define ELEMENTS_MOVER_H
#include <QPointF> #include <QPointF>
#include <QPointer>
#include "diagramcontent.h" #include "diagramcontent.h"
class ConductorTextItem; class ConductorTextItem;
class Diagram; class Diagram;
class QStatusBar;
/** /**
This class manages the interactive movement of different items (elements, This class manages the interactive movement of different items (elements,
conductors, text items etc...) on a particular diagram. conductors, text items etc...) on a particular diagram.
@@ -57,5 +61,7 @@ class ElementsMover {
Diagram *diagram_; Diagram *diagram_;
QGraphicsItem *m_movement_driver; QGraphicsItem *m_movement_driver;
DiagramContent m_moved_content; DiagramContent m_moved_content;
QPointer<QStatusBar> m_status_bar;
}; };
#endif #endif