diff options
author | Stijn Buys <ingar@osirion.org> | 2012-02-19 14:50:24 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2012-02-19 14:50:24 +0000 |
commit | 7a9c504720e494ee07d16a6234b77c500af4da93 (patch) | |
tree | f7e66125b2c4c39f2007823c27dcc9b13d2b927b /src/entitywidget.cc | |
parent | 46f48143ed59eddafa86f2711f518792f362a46c (diff) |
Renamed class MapEntity to EntityWidget, added entity dragging.
Diffstat (limited to 'src/entitywidget.cc')
-rw-r--r-- | src/entitywidget.cc | 109 |
1 files changed, 109 insertions, 0 deletions
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 <entitywidget.h> + +#include <QPainter> +#include <QMouseEvent> +#include <QDebug> + +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()); + } +} + +} |