From 7a9c504720e494ee07d16a6234b77c500af4da93 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 19 Feb 2012 14:50:24 +0000 Subject: Renamed class MapEntity to EntityWidget, added entity dragging. --- src/entitywidget.cc | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/entitywidget.cc (limited to 'src/entitywidget.cc') diff --git a/src/entitywidget.cc b/src/entitywidget.cc new file mode 100644 index 0000000..f04c177 --- /dev/null +++ b/src/entitywidget.cc @@ -0,0 +1,109 @@ +/* + entitywidget.cc + This file is part of the Project::OSiRiON world editor + and is distributed under the terms and conditions of + the GNU General Public License version 2 +*/ + +#include + +#include +#include +#include + +namespace editor +{ + +EntityWidget::EntityWidget(QWidget *parent) : QWidget(parent) +{ + is_selected = false; + is_dragging = false; + + entity_radius = 0; +} + +void EntityWidget::set_selected(const bool selected) +{ + is_selected = selected; + update(); +} + +void EntityWidget::set_label(const QString &label) +{ + entity_label = label; +} + +void EntityWidget::set_name(const QString &name) +{ + entity_name = name; +} + +void EntityWidget::set_radius(const float radius) +{ + entity_radius = radius; + +} + +void EntityWidget::set_location(const float x, const float y, const float z) +{ + entity_location[0] = x; + entity_location[1] = y; + entity_location[2] = z; +} + +void EntityWidget::set_properties(const QString &properties) +{ + entity_properties = properties; +} +void EntityWidget::add_property(const QString &key, const QString &value) +{ + if (entity_properties.size()) { + entity_properties += '\n'; + } + entity_properties += key; + entity_properties += '='; + entity_properties += value; +} + +void EntityWidget::paintEvent(QPaintEvent *event) +{ + QPen pen(Qt::black, 1, Qt::SolidLine); + QPainter painter(this); + + if (is_selected) { + pen.setColor(Qt::red); + painter.setPen(pen); + } + + painter.setPen(pen); + painter.drawEllipse(0, 0, width() - 1 , height() - 1); +} + +void EntityWidget::mousePressEvent(QMouseEvent *event) +{ + if (event->button() == Qt::LeftButton) { + //qDebug() << "clicked entity " << name(); + event->accept(); + is_dragging = true; + emit clicked(this); + } else { + event->ignore(); + is_dragging = false; + } +} + +void EntityWidget::mouseReleaseEvent(QMouseEvent *event) +{ + if (event->button() == Qt::LeftButton) { + is_dragging = false; + } +} + +void EntityWidget::mouseMoveEvent(QMouseEvent *event) +{ + if (is_dragging) { + emit dragged(this, event->pos().x(), event->pos().y()); + } +} + +} -- cgit v1.2.3