mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-28 01:56:24 +00:00
Changed: #1302 Added drawing of circle for point primitive
--HG-- branch : gsoc2011-worldeditorqt
This commit is contained in:
parent
8116d76d1e
commit
14964373fb
7 changed files with 125 additions and 72 deletions
|
@ -59,7 +59,18 @@ void addNewGraphicsItems(const QModelIndex &primIndex, PrimitivesTreeModel *mode
|
||||||
{
|
{
|
||||||
vec = primitive->getPrimVector();
|
vec = primitive->getPrimVector();
|
||||||
NLLIGO::CPrimPoint *primPoint = static_cast<NLLIGO::CPrimPoint *>(primitive);
|
NLLIGO::CPrimPoint *primPoint = static_cast<NLLIGO::CPrimPoint *>(primitive);
|
||||||
item = scene->addWorldItemPoint(QPointF(vec->x, -vec->y + cellSize), primPoint->Angle);
|
|
||||||
|
// Draw arrow ?
|
||||||
|
bool showArrow = node->primitiveClass()->ShowArrow;
|
||||||
|
|
||||||
|
// Have a radius ?
|
||||||
|
std::string strRadius;
|
||||||
|
qreal radius = 0;
|
||||||
|
if (primitive->getPropertyByName ("radius", strRadius))
|
||||||
|
radius = atof(strRadius.c_str());
|
||||||
|
|
||||||
|
item = scene->addWorldItemPoint(QPointF(vec->x, -vec->y + cellSize),
|
||||||
|
primPoint->Angle, radius, showArrow);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NLLIGO::CPrimitiveClass::Path:
|
case NLLIGO::CPrimitiveClass::Path:
|
||||||
|
@ -397,7 +408,7 @@ void MoveWorldItemsCommand::undo()
|
||||||
{
|
{
|
||||||
Node *node = m_model->pathToNode(m_listPaths.at(i));
|
Node *node = m_model->pathToNode(m_listPaths.at(i));
|
||||||
AbstractWorldItem *item = qvariant_cast<AbstractWorldItem *>(node->data(Constants::GRAPHICS_DATA_QT4_2D));
|
AbstractWorldItem *item = qvariant_cast<AbstractWorldItem *>(node->data(Constants::GRAPHICS_DATA_QT4_2D));
|
||||||
item->moveOn(-m_offset);
|
item->moveBy(-m_offset.x(), -m_offset.y());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -409,7 +420,7 @@ void MoveWorldItemsCommand::redo()
|
||||||
{
|
{
|
||||||
Node *node = m_model->pathToNode(m_listPaths.at(i));
|
Node *node = m_model->pathToNode(m_listPaths.at(i));
|
||||||
AbstractWorldItem *item = qvariant_cast<AbstractWorldItem *>(node->data(Constants::GRAPHICS_DATA_QT4_2D));
|
AbstractWorldItem *item = qvariant_cast<AbstractWorldItem *>(node->data(Constants::GRAPHICS_DATA_QT4_2D));
|
||||||
item->moveOn(m_offset);
|
item->moveBy(m_offset.x(), m_offset.y());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_firstRun = false;
|
m_firstRun = false;
|
||||||
|
|
|
@ -59,9 +59,10 @@ WorldEditorScene::~WorldEditorScene()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
AbstractWorldItem *WorldEditorScene::addWorldItemPoint(const QPointF &point, const float angle)
|
AbstractWorldItem *WorldEditorScene::addWorldItemPoint(const QPointF &point, const qreal angle,
|
||||||
|
const qreal radius, bool showArrow)
|
||||||
{
|
{
|
||||||
WorldItemPoint *item = new WorldItemPoint(point, angle);
|
WorldItemPoint *item = new WorldItemPoint(point, angle, radius, showArrow);
|
||||||
addItem(item);
|
addItem(item);
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
@ -203,7 +204,7 @@ void WorldEditorScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)
|
||||||
{
|
{
|
||||||
Q_FOREACH(QGraphicsItem *item, m_selectedItems)
|
Q_FOREACH(QGraphicsItem *item, m_selectedItems)
|
||||||
{
|
{
|
||||||
qgraphicsitem_cast<AbstractWorldItem *>(item)->moveOn(offset);
|
item->moveBy(offset.x(), offset.y());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,7 +56,8 @@ public:
|
||||||
QUndoStack *undoStack, QObject *parent = 0);
|
QUndoStack *undoStack, QObject *parent = 0);
|
||||||
virtual ~WorldEditorScene();
|
virtual ~WorldEditorScene();
|
||||||
|
|
||||||
AbstractWorldItem *addWorldItemPoint(const QPointF &point, const float angle);
|
AbstractWorldItem *addWorldItemPoint(const QPointF &point, const qreal angle,
|
||||||
|
const qreal radius, bool showArrow);
|
||||||
AbstractWorldItem *addWorldItemPath(const QPolygonF &polyline);
|
AbstractWorldItem *addWorldItemPath(const QPolygonF &polyline);
|
||||||
AbstractWorldItem *addWorldItemZone(const QPolygonF &polygon);
|
AbstractWorldItem *addWorldItemZone(const QPolygonF &polygon);
|
||||||
|
|
||||||
|
|
|
@ -322,9 +322,12 @@ int AbstractWorldItem::type() const
|
||||||
return Type;
|
return Type;
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldItemPoint::WorldItemPoint(const QPointF &point, const qreal angle, QGraphicsItem *parent)
|
WorldItemPoint::WorldItemPoint(const QPointF &point, const qreal angle, const qreal radius,
|
||||||
|
bool showArrow, QGraphicsItem *parent)
|
||||||
: AbstractWorldItem(parent),
|
: AbstractWorldItem(parent),
|
||||||
m_angle((2 * NLMISC::Pi - angle) * 180 / NLMISC::Pi)
|
m_angle((2 * NLMISC::Pi - angle) * 180 / NLMISC::Pi),
|
||||||
|
m_radius(radius),
|
||||||
|
m_showArrow(showArrow)
|
||||||
{
|
{
|
||||||
setZValue(WORLD_POINT_LAYER);
|
setZValue(WORLD_POINT_LAYER);
|
||||||
|
|
||||||
|
@ -335,17 +338,41 @@ WorldItemPoint::WorldItemPoint(const QPointF &point, const qreal angle, QGraphic
|
||||||
m_rect.setCoords(-SIZE_POINT, -SIZE_POINT, SIZE_POINT, SIZE_POINT);
|
m_rect.setCoords(-SIZE_POINT, -SIZE_POINT, SIZE_POINT, SIZE_POINT);
|
||||||
|
|
||||||
m_pen.setColor(QColor(255, 100, 10));
|
m_pen.setColor(QColor(255, 100, 10));
|
||||||
m_pen.setWidth(5);
|
//m_pen.setWidth(0);
|
||||||
|
|
||||||
m_selectedPen.setColor(QColor(0, 255, 0));
|
m_selectedPen.setColor(Qt::white);
|
||||||
m_selectedPen.setWidth(5);
|
//m_selectedPen.setWidth(0);
|
||||||
|
|
||||||
m_brush.setColor(QColor(255, 100, 10));
|
m_brush.setColor(QColor(255, 100, 10));
|
||||||
m_brush.setStyle(Qt::SolidPattern);
|
m_brush.setStyle(Qt::SolidPattern);
|
||||||
|
|
||||||
m_selectedBrush.setColor(Qt::NoPen);
|
m_selectedBrush.setColor(Qt::white);
|
||||||
m_selectedBrush.setStyle(Qt::SolidPattern);
|
m_selectedBrush.setStyle(Qt::SolidPattern);
|
||||||
|
|
||||||
|
|
||||||
|
if (m_radius != 0)
|
||||||
|
{
|
||||||
|
// Create circle
|
||||||
|
int segmentCount = 30;
|
||||||
|
QPointF circlePoint(m_radius, 0);
|
||||||
|
m_circle << circlePoint;
|
||||||
|
for (int i = 1; i < segmentCount + 1; ++i)
|
||||||
|
{
|
||||||
|
qreal angle = i * (2 * NLMISC::Pi / segmentCount);
|
||||||
|
circlePoint.setX(cos(angle) * m_radius);
|
||||||
|
circlePoint.setY(sin(angle) * m_radius);
|
||||||
|
m_circle << circlePoint;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create arrow
|
||||||
|
if (showArrow)
|
||||||
|
{
|
||||||
|
m_arrow.push_back(QLine(0, 0, SIZE_ARROW, 0));
|
||||||
|
m_arrow.push_back(QLine(SIZE_ARROW - 2, -2, SIZE_ARROW, 0));
|
||||||
|
m_arrow.push_back(QLine(SIZE_ARROW - 2, 2, SIZE_ARROW, 0));
|
||||||
|
}
|
||||||
|
|
||||||
//setFlag(ItemIsSelectable);
|
//setFlag(ItemIsSelectable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -353,13 +380,6 @@ WorldItemPoint::~WorldItemPoint()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldItemPoint::moveOn(const QPointF &offset)
|
|
||||||
{
|
|
||||||
prepareGeometryChange();
|
|
||||||
|
|
||||||
setPos(pos() + offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
void WorldItemPoint::rotateOn(const QPointF &pivot, const qreal deltaAngle)
|
void WorldItemPoint::rotateOn(const QPointF &pivot, const qreal deltaAngle)
|
||||||
{
|
{
|
||||||
prepareGeometryChange();
|
prepareGeometryChange();
|
||||||
|
@ -367,8 +387,8 @@ void WorldItemPoint::rotateOn(const QPointF &pivot, const qreal deltaAngle)
|
||||||
QPolygonF rotatedPolygon(m_rect);
|
QPolygonF rotatedPolygon(m_rect);
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
rotatedPolygon.translate(pos());
|
rotatedPolygon.translate(pos() - pivot);
|
||||||
rotatedPolygon.translate(-pivot);
|
//rotatedPolygon.translate(-pivot);
|
||||||
|
|
||||||
QTransform trans;
|
QTransform trans;
|
||||||
trans = trans.rotate(deltaAngle);
|
trans = trans.rotate(deltaAngle);
|
||||||
|
@ -385,8 +405,8 @@ void WorldItemPoint::scaleOn(const QPointF &pivot, const QPointF &factor)
|
||||||
QPolygonF scaledPolygon(m_rect);
|
QPolygonF scaledPolygon(m_rect);
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
scaledPolygon.translate(pos());
|
scaledPolygon.translate(pos() - pivot);
|
||||||
scaledPolygon.translate(-pivot);
|
//scaledPolygon.translate(-pivot);
|
||||||
|
|
||||||
QTransform trans;
|
QTransform trans;
|
||||||
trans = trans.scale(factor.x(), factor.y());
|
trans = trans.scale(factor.x(), factor.y());
|
||||||
|
@ -408,6 +428,7 @@ void WorldItemPoint::radiusOn(const qreal radius)
|
||||||
|
|
||||||
void WorldItemPoint::setColor(const QColor &color)
|
void WorldItemPoint::setColor(const QColor &color)
|
||||||
{
|
{
|
||||||
|
m_pen.setColor(color);
|
||||||
m_brush.setColor(color);
|
m_brush.setColor(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -430,26 +451,26 @@ void WorldItemPoint::paint(QPainter *painter, const QStyleOptionGraphicsItem *op
|
||||||
// Here comes the magic:
|
// Here comes the magic:
|
||||||
//painter->setClipRect(option->exposedRect);
|
//painter->setClipRect(option->exposedRect);
|
||||||
|
|
||||||
painter->setPen(Qt::NoPen);
|
painter->setPen(m_pen);
|
||||||
|
|
||||||
if (option->state & QStyle::State_Selected)
|
// Draw circle
|
||||||
{
|
// Draws artefacts with using opengl painter
|
||||||
painter->setBrush(m_selectedBrush);
|
// painter->drawEllipse(-m_radius / 2, -m_radius / 2, m_radius, m_radius);
|
||||||
}
|
painter->drawPolygon(m_circle);
|
||||||
else
|
|
||||||
{
|
|
||||||
painter->setBrush(m_brush);
|
|
||||||
}
|
|
||||||
|
|
||||||
painter->drawRect(m_rect);
|
|
||||||
|
|
||||||
painter->setPen(Qt::red);
|
|
||||||
|
|
||||||
painter->rotate(m_angle);
|
painter->rotate(m_angle);
|
||||||
|
|
||||||
painter->drawLine(0, 0, SIZE_ARROW, 0);
|
// Draw arrow
|
||||||
painter->drawLine(SIZE_ARROW - 2, -2, SIZE_ARROW, 0);
|
painter->drawLines(m_arrow);
|
||||||
painter->drawLine(SIZE_ARROW - 2, 2, SIZE_ARROW, 0);
|
|
||||||
|
painter->setPen(Qt::NoPen);
|
||||||
|
if (option->state & QStyle::State_Selected)
|
||||||
|
painter->setBrush(m_selectedBrush);
|
||||||
|
else
|
||||||
|
painter->setBrush(m_brush);
|
||||||
|
|
||||||
|
// Draw point
|
||||||
|
painter->drawRect(m_rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant WorldItemPoint::itemChange(GraphicsItemChange change, const QVariant &value)
|
QVariant WorldItemPoint::itemChange(GraphicsItemChange change, const QVariant &value)
|
||||||
|
@ -469,35 +490,34 @@ WorldItemPath::WorldItemPath(const QPolygonF &polygon, QGraphicsItem *parent)
|
||||||
setZValue(WORLD_PATH_LAYER);
|
setZValue(WORLD_PATH_LAYER);
|
||||||
|
|
||||||
m_pen.setColor(Qt::black);
|
m_pen.setColor(Qt::black);
|
||||||
m_pen.setWidth(5);
|
m_pen.setWidth(3);
|
||||||
|
m_pen.setJoinStyle(Qt::MiterJoin);
|
||||||
|
|
||||||
m_selectedPen.setColor(Qt::white);
|
m_selectedPen.setColor(Qt::white);
|
||||||
m_selectedPen.setWidth(5);
|
m_selectedPen.setWidth(3);
|
||||||
|
m_selectedPen.setJoinStyle(Qt::MiterJoin);
|
||||||
|
|
||||||
|
QPointF center = m_polygon.boundingRect().center();
|
||||||
|
m_polygon.translate(-center);
|
||||||
|
setPos(center);
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldItemPath::~WorldItemPath()
|
WorldItemPath::~WorldItemPath()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldItemPath::moveOn(const QPointF &offset)
|
|
||||||
{
|
|
||||||
prepareGeometryChange();
|
|
||||||
|
|
||||||
m_polygon.translate(offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
void WorldItemPath::rotateOn(const QPointF &pivot, const qreal deltaAngle)
|
void WorldItemPath::rotateOn(const QPointF &pivot, const qreal deltaAngle)
|
||||||
{
|
{
|
||||||
prepareGeometryChange();
|
prepareGeometryChange();
|
||||||
|
|
||||||
QPolygonF rotatedPolygon(m_polygon);
|
QPolygonF rotatedPolygon(m_polygon);
|
||||||
rotatedPolygon.translate(-pivot);
|
rotatedPolygon.translate(pos() - pivot);
|
||||||
|
|
||||||
QTransform trans;
|
QTransform trans;
|
||||||
trans = trans.rotate(deltaAngle);
|
trans = trans.rotate(deltaAngle);
|
||||||
m_polygon = trans.map(rotatedPolygon);
|
m_polygon = trans.map(rotatedPolygon);
|
||||||
|
|
||||||
m_polygon.translate(pivot);
|
m_polygon.translate(pivot - pos());
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldItemPath::scaleOn(const QPointF &pivot, const QPointF &factor)
|
void WorldItemPath::scaleOn(const QPointF &pivot, const QPointF &factor)
|
||||||
|
@ -505,13 +525,13 @@ void WorldItemPath::scaleOn(const QPointF &pivot, const QPointF &factor)
|
||||||
prepareGeometryChange();
|
prepareGeometryChange();
|
||||||
|
|
||||||
QPolygonF scaledPolygon(m_polygon);
|
QPolygonF scaledPolygon(m_polygon);
|
||||||
scaledPolygon.translate(-pivot);
|
scaledPolygon.translate(pos() - pivot);
|
||||||
|
|
||||||
QTransform trans;
|
QTransform trans;
|
||||||
trans = trans.scale(factor.x(), factor.y());
|
trans = trans.scale(factor.x(), factor.y());
|
||||||
m_polygon = trans.map(scaledPolygon);
|
m_polygon = trans.map(scaledPolygon);
|
||||||
|
|
||||||
m_polygon.translate(pivot);
|
m_polygon.translate(pivot - pos());
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldItemPath::turnOn(const qreal angle)
|
void WorldItemPath::turnOn(const qreal angle)
|
||||||
|
@ -583,31 +603,28 @@ WorldItemZone::WorldItemZone(const QPolygonF &polygon, QGraphicsItem *parent)
|
||||||
|
|
||||||
m_selectedBrush.setColor(QColor(255, 255, 255, 100));
|
m_selectedBrush.setColor(QColor(255, 255, 255, 100));
|
||||||
m_selectedBrush.setStyle(Qt::SolidPattern);
|
m_selectedBrush.setStyle(Qt::SolidPattern);
|
||||||
|
|
||||||
|
QPointF center = m_polygon.boundingRect().center();
|
||||||
|
m_polygon.translate(-center);
|
||||||
|
setPos(center);
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldItemZone::~WorldItemZone()
|
WorldItemZone::~WorldItemZone()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldItemZone::moveOn(const QPointF &offset)
|
|
||||||
{
|
|
||||||
prepareGeometryChange();
|
|
||||||
|
|
||||||
m_polygon.translate(offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
void WorldItemZone::rotateOn(const QPointF &pivot, const qreal deltaAngle)
|
void WorldItemZone::rotateOn(const QPointF &pivot, const qreal deltaAngle)
|
||||||
{
|
{
|
||||||
prepareGeometryChange();
|
prepareGeometryChange();
|
||||||
|
|
||||||
QPolygonF rotatedPolygon(m_polygon);
|
QPolygonF rotatedPolygon(m_polygon);
|
||||||
rotatedPolygon.translate(-pivot);
|
rotatedPolygon.translate(pos() - pivot);
|
||||||
|
|
||||||
QTransform trans;
|
QTransform trans;
|
||||||
trans = trans.rotate(deltaAngle);
|
trans = trans.rotate(deltaAngle);
|
||||||
m_polygon = trans.map(rotatedPolygon);
|
m_polygon = trans.map(rotatedPolygon);
|
||||||
|
|
||||||
m_polygon.translate(pivot);
|
m_polygon.translate(pivot - pos());
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldItemZone::scaleOn(const QPointF &pivot, const QPointF &factor)
|
void WorldItemZone::scaleOn(const QPointF &pivot, const QPointF &factor)
|
||||||
|
@ -615,13 +632,14 @@ void WorldItemZone::scaleOn(const QPointF &pivot, const QPointF &factor)
|
||||||
prepareGeometryChange();
|
prepareGeometryChange();
|
||||||
|
|
||||||
QPolygonF scaledPolygon(m_polygon);
|
QPolygonF scaledPolygon(m_polygon);
|
||||||
scaledPolygon.translate(-pivot);
|
|
||||||
|
scaledPolygon.translate(pos() - pivot);
|
||||||
|
|
||||||
QTransform trans;
|
QTransform trans;
|
||||||
trans = trans.scale(factor.x(), factor.y());
|
trans = trans.scale(factor.x(), factor.y());
|
||||||
m_polygon = trans.map(scaledPolygon);
|
m_polygon = trans.map(scaledPolygon);
|
||||||
|
|
||||||
m_polygon.translate(pivot);
|
m_polygon.translate(pivot - pos());
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldItemZone::turnOn(const qreal angle)
|
void WorldItemZone::turnOn(const qreal angle)
|
||||||
|
|
|
@ -129,7 +129,6 @@ public:
|
||||||
|
|
||||||
enum { Type = QGraphicsItem::UserType + 1 };
|
enum { Type = QGraphicsItem::UserType + 1 };
|
||||||
|
|
||||||
virtual void moveOn(const QPointF &offset) = 0;
|
|
||||||
virtual void rotateOn(const QPointF &pivot, const qreal deltaAngle) = 0;
|
virtual void rotateOn(const QPointF &pivot, const qreal deltaAngle) = 0;
|
||||||
// TODO: add modes: IgnoreAspectRatio, KeepAspectRatio
|
// TODO: add modes: IgnoreAspectRatio, KeepAspectRatio
|
||||||
virtual void scaleOn(const QPointF &pivot, const QPointF &factor) = 0;
|
virtual void scaleOn(const QPointF &pivot, const QPointF &factor) = 0;
|
||||||
|
@ -150,10 +149,10 @@ public:
|
||||||
class WorldItemPoint: public AbstractWorldItem
|
class WorldItemPoint: public AbstractWorldItem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
WorldItemPoint(const QPointF &point, const qreal angle, QGraphicsItem *parent = 0);
|
WorldItemPoint(const QPointF &point, const qreal angle, const qreal radius,
|
||||||
|
bool showArrow, QGraphicsItem *parent = 0);
|
||||||
virtual ~WorldItemPoint();
|
virtual ~WorldItemPoint();
|
||||||
|
|
||||||
virtual void moveOn(const QPointF &offset);
|
|
||||||
virtual void rotateOn(const QPointF &pivot, const qreal deltaAngle);
|
virtual void rotateOn(const QPointF &pivot, const qreal deltaAngle);
|
||||||
virtual void scaleOn(const QPointF &pivot, const QPointF &factor);
|
virtual void scaleOn(const QPointF &pivot, const QPointF &factor);
|
||||||
virtual void turnOn(const qreal angle);
|
virtual void turnOn(const qreal angle);
|
||||||
|
@ -171,13 +170,16 @@ protected:
|
||||||
private:
|
private:
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
static const int SIZE_POINT = 4;
|
static const int SIZE_POINT = 3;
|
||||||
|
|
||||||
QPen m_pen, m_selectedPen;
|
QPen m_pen, m_selectedPen;
|
||||||
QBrush m_brush, m_selectedBrush;
|
QBrush m_brush, m_selectedBrush;
|
||||||
|
|
||||||
|
QPolygonF m_circle;
|
||||||
|
QVector<QLine> m_arrow;
|
||||||
QRectF m_rect;
|
QRectF m_rect;
|
||||||
qreal m_angle;
|
qreal m_angle, m_radius;
|
||||||
|
bool m_showArrow;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -191,7 +193,6 @@ public:
|
||||||
WorldItemPath(const QPolygonF &polygon, QGraphicsItem *parent = 0);
|
WorldItemPath(const QPolygonF &polygon, QGraphicsItem *parent = 0);
|
||||||
virtual ~WorldItemPath();
|
virtual ~WorldItemPath();
|
||||||
|
|
||||||
virtual void moveOn(const QPointF &offset);
|
|
||||||
virtual void rotateOn(const QPointF &pivot, const qreal deltaAngle);
|
virtual void rotateOn(const QPointF &pivot, const qreal deltaAngle);
|
||||||
virtual void scaleOn(const QPointF &pivot, const QPointF &factor);
|
virtual void scaleOn(const QPointF &pivot, const QPointF &factor);
|
||||||
virtual void turnOn(const qreal angle);
|
virtual void turnOn(const qreal angle);
|
||||||
|
@ -221,7 +222,6 @@ public:
|
||||||
WorldItemZone(const QPolygonF &polygon, QGraphicsItem *parent = 0);
|
WorldItemZone(const QPolygonF &polygon, QGraphicsItem *parent = 0);
|
||||||
virtual ~WorldItemZone();
|
virtual ~WorldItemZone();
|
||||||
|
|
||||||
virtual void moveOn(const QPointF &offset);
|
|
||||||
virtual void rotateOn(const QPointF &pivot, const qreal deltaAngle);
|
virtual void rotateOn(const QPointF &pivot, const qreal deltaAngle);
|
||||||
virtual void scaleOn(const QPointF &pivot, const QPointF &factor);
|
virtual void scaleOn(const QPointF &pivot, const QPointF &factor);
|
||||||
virtual void turnOn(const qreal angle);
|
virtual void turnOn(const qreal angle);
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#include <QtCore/QSettings>
|
#include <QtCore/QSettings>
|
||||||
#include <QtGui/QFileDialog>
|
#include <QtGui/QFileDialog>
|
||||||
#include <QtGui/QStatusBar>
|
#include <QtGui/QStatusBar>
|
||||||
|
#include <QtGui/QMessageBox>
|
||||||
|
|
||||||
namespace WorldEditor
|
namespace WorldEditor
|
||||||
{
|
{
|
||||||
|
@ -45,7 +46,8 @@ namespace WorldEditor
|
||||||
WorldEditorWindow::WorldEditorWindow(QWidget *parent)
|
WorldEditorWindow::WorldEditorWindow(QWidget *parent)
|
||||||
: QMainWindow(parent),
|
: QMainWindow(parent),
|
||||||
m_primitivesModel(0),
|
m_primitivesModel(0),
|
||||||
m_undoStack(0)
|
m_undoStack(0),
|
||||||
|
m_oglWidget(0)
|
||||||
{
|
{
|
||||||
m_ui.setupUi(this);
|
m_ui.setupUi(this);
|
||||||
m_undoStack = new QUndoStack(this);
|
m_undoStack = new QUndoStack(this);
|
||||||
|
@ -123,6 +125,25 @@ QUndoStack *WorldEditorWindow::undoStack() const
|
||||||
return m_undoStack;
|
return m_undoStack;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WorldEditorWindow::maybeSave()
|
||||||
|
{
|
||||||
|
QMessageBox *messageBox = new QMessageBox(tr("SDI"),
|
||||||
|
tr("The data has been modified.\n"
|
||||||
|
"Do you want to save your changes?"),
|
||||||
|
QMessageBox::Warning,
|
||||||
|
QMessageBox::Yes | QMessageBox::Default,
|
||||||
|
QMessageBox::No,
|
||||||
|
QMessageBox::Cancel | QMessageBox::Escape,
|
||||||
|
this, Qt::Sheet);
|
||||||
|
|
||||||
|
messageBox->setButtonText(QMessageBox::Yes,
|
||||||
|
tr("Save"));
|
||||||
|
|
||||||
|
messageBox->setButtonText(QMessageBox::No, tr("Don’t Save"));
|
||||||
|
|
||||||
|
messageBox->show();
|
||||||
|
}
|
||||||
|
|
||||||
void WorldEditorWindow::open()
|
void WorldEditorWindow::open()
|
||||||
{
|
{
|
||||||
QString fileName = QFileDialog::getOpenFileName(this,
|
QString fileName = QFileDialog::getOpenFileName(this,
|
||||||
|
|
|
@ -46,6 +46,7 @@ public:
|
||||||
~WorldEditorWindow();
|
~WorldEditorWindow();
|
||||||
|
|
||||||
QUndoStack *undoStack() const;
|
QUndoStack *undoStack() const;
|
||||||
|
void maybeSave();
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
|
|
Loading…
Reference in a new issue