/* 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) { entity_properties += key; entity_properties += '='; entity_properties += value; entity_properties += '\n'; } void EntityWidget::add_subsection(const QString &name) { if (entity_subsections.size()) { entity_subsections += '\n'; } entity_subsections += '['; entity_subsections += name; entity_subsections += ']'; entity_subsections += '\n'; } void EntityWidget::add_subsection_property(const QString &key, const QString &value) { entity_subsections += key; entity_subsections += '='; entity_subsections += value; entity_subsections += '\n'; } 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()); } } }