/* 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; } void EntityWidget::set_selected(const bool selected) { is_selected = selected; update(); } 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(); if (is_selected) 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) { // TODO add delay emit dragged(this, event->pos().x(), event->pos().y()); } } }