mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-17 12:40:35 +01:00
Show x:y pos when drag element in the status bar
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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<QStatusBar> m_status_bar;
|
||||
};
|
||||
|
||||
#endif // DIAGRAMEVENTADDELEMENT_H
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,10 +19,14 @@
|
||||
#define ELEMENTS_MOVER_H
|
||||
|
||||
#include <QPointF>
|
||||
#include <QPointer>
|
||||
|
||||
#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<QStatusBar> m_status_bar;
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user