Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2012-02-25 16:56:25 +0000
committerStijn Buys <ingar@osirion.org>2012-02-25 16:56:25 +0000
commite10c0a7602c612993e6b99348bab507b7def0881 (patch)
tree2d863e946024fc3560221bedcddb149b253b4918 /src/mapwidget.cc
parent01f671303b75f3e4c683e3ff47b7ee120f0cda12 (diff)
Add entity manipulator widget, added support for editing entity angles.
Diffstat (limited to 'src/mapwidget.cc')
-rw-r--r--src/mapwidget.cc21
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();