diff options
Diffstat (limited to 'src/mapwidget.cc')
-rw-r--r-- | src/mapwidget.cc | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/mapwidget.cc b/src/mapwidget.cc index d2c5676..fe84ada 100644 --- a/src/mapwidget.cc +++ b/src/mapwidget.cc @@ -6,6 +6,7 @@ */ #include "entitywidget.h" +#include "manipulator.h" #include "mapwidget.h" #include <QPainter> @@ -20,6 +21,7 @@ namespace editor MapWidget::MapWidget(QWidget *parent) : QWidget(parent) { //setMinimumSize(256,256); + mapwidget_manipulator = new Manipulator(this); // zoom sucks but it works mapwidget_zoom = 16; @@ -93,6 +95,7 @@ void MapWidget::mouseMoveEvent(QMouseEvent *event) event->accept(); resizeChildren(); + update(); } } @@ -115,6 +118,11 @@ void MapWidget::resizeChildren() entity->setGeometry(center_x + x, center_y + y, radius * 2 , radius * 2); //qDebug() << "Moving entity to " << x << " " << y; + if (entity->selected()) { + mapwidget_manipulator->setSize(entity); + mapwidget_manipulator->setProperties(entity->properties()); + mapwidget_manipulator->update(); + } } } @@ -125,7 +133,9 @@ void MapWidget::deselect() EntityWidget *entitywidget = mapwidget_enties.at(i); entitywidget->set_selected(false); } - emit propertiesChanged(0); + + emit propertiesChanged(0); + mapwidget_manipulator->setMode(Manipulator::None); } void MapWidget::dragEntity(EntityWidget *entity, int x, int y) @@ -142,11 +152,13 @@ void MapWidget::dragEntity(EntityWidget *entity, int x, int y) ); emit propertiesChanged(entity->properties()); - resizeChildren(); + resizeChildren(); + mapwidget_manipulator->setMode(Manipulator::Move); } void MapWidget::select(EntityWidget *entity) { + mapwidget_manipulator->setMode(Manipulator::None); for (int i = 0; i < mapwidget_enties.size(); ++i) { EntityWidget *entitywidget = mapwidget_enties.at(i); @@ -156,6 +168,9 @@ void MapWidget::select(EntityWidget *entity) entity->set_selected(true); //qDebug() << "selected entity " << entity->name(); emit propertiesChanged(entity->properties()); + mapwidget_manipulator->setMode(Manipulator::Select); + mapwidget_manipulator->setProperties(entity->properties()); + mapwidget_manipulator->setSize(entity); } else { @@ -246,7 +261,7 @@ EntityWidget *MapWidget::addEntity() // connect the EntityWidget::clicked() signal to the MapWidget::selected() slot connect(entitywidget, SIGNAL(clicked(EntityWidget *)), this, SLOT(select(EntityWidget *))); - connect(entitywidget, SIGNAL(dragged(EntityWidget *, int, int)), this, SLOT(dragEntity(EntityWidget *, int, int))); + connect(entitywidget, SIGNAL(dragMove(EntityWidget *, int, int)), this, SLOT(dragEntity(EntityWidget *, int, int))); entitywidget->show(); |