Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/entitywidget.cc')
-rw-r--r--src/entitywidget.cc109
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());
+ }
+}
+
+}