Extended undo/redo framework into ObjectEditor.
This commit is contained in:
@@ -81,9 +81,15 @@ void LabelModel::restore( const LabelModel *savedModel )
|
|||||||
mFrame = savedModel->mFrame;
|
mFrame = savedModel->mFrame;
|
||||||
mRotate = savedModel->mRotate;
|
mRotate = savedModel->mRotate;
|
||||||
|
|
||||||
foreach ( LabelModelObject* object, savedModel->mObjectList )
|
foreach ( LabelModelObject* savedObject, savedModel->mObjectList )
|
||||||
{
|
{
|
||||||
mObjectList.append( object->clone() );
|
LabelModelObject* object = savedObject->clone();
|
||||||
|
|
||||||
|
object->setParent( this );
|
||||||
|
mObjectList << object;
|
||||||
|
|
||||||
|
connect( object, SIGNAL(changed()), this, SLOT(onObjectChanged()) );
|
||||||
|
connect( object, SIGNAL(moved()), this, SLOT(onObjectMoved()) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Emit signals based on potential changes
|
// Emit signals based on potential changes
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ void MainWindow::setModel( LabelModel *label )
|
|||||||
|
|
||||||
mPropertiesView->setModel( mModel, mUndoRedoModel );
|
mPropertiesView->setModel( mModel, mUndoRedoModel );
|
||||||
mLabelEditor->setModel( mModel, mUndoRedoModel );
|
mLabelEditor->setModel( mModel, mUndoRedoModel );
|
||||||
mObjectEditor->setModel( mModel );
|
mObjectEditor->setModel( mModel, mUndoRedoModel );
|
||||||
mPrintView->setModel( mModel );
|
mPrintView->setModel( mModel );
|
||||||
|
|
||||||
mContents->setEnabled( true );
|
mContents->setEnabled( true );
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
#include "LabelModel.h"
|
#include "LabelModel.h"
|
||||||
#include "LabelModelObject.h"
|
#include "LabelModelObject.h"
|
||||||
#include "LabelModelBoxObject.h"
|
#include "LabelModelBoxObject.h"
|
||||||
|
#include "UndoRedoModel.h"
|
||||||
|
|
||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
|
|
||||||
@@ -51,9 +52,10 @@ ObjectEditor::ObjectEditor( QWidget *parent )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ObjectEditor::setModel( LabelModel* model )
|
void ObjectEditor::setModel( LabelModel* model, UndoRedoModel* undoRedoModel )
|
||||||
{
|
{
|
||||||
mModel = model;
|
mModel = model;
|
||||||
|
mUndoRedoModel = undoRedoModel;
|
||||||
|
|
||||||
connect( mModel, SIGNAL(sizeChanged()), this, SLOT(onLabelSizeChanged()) );
|
connect( mModel, SIGNAL(sizeChanged()), this, SLOT(onLabelSizeChanged()) );
|
||||||
connect( mModel, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()) );
|
connect( mModel, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()) );
|
||||||
@@ -277,6 +279,8 @@ void ObjectEditor::onLineControlsChanged()
|
|||||||
{
|
{
|
||||||
mBlocked = true;
|
mBlocked = true;
|
||||||
|
|
||||||
|
mUndoRedoModel->checkpoint( tr("Line") );
|
||||||
|
|
||||||
mObject->setLineWidth( glabels::Distance::pt(lineWidthSpin->value()) );
|
mObject->setLineWidth( glabels::Distance::pt(lineWidthSpin->value()) );
|
||||||
mObject->setLineColorNode( lineColorButton->colorNode() );
|
mObject->setLineColorNode( lineColorButton->colorNode() );
|
||||||
|
|
||||||
@@ -291,6 +295,8 @@ void ObjectEditor::onFillControlsChanged()
|
|||||||
{
|
{
|
||||||
mBlocked = true;
|
mBlocked = true;
|
||||||
|
|
||||||
|
mUndoRedoModel->checkpoint( tr("Fill") );
|
||||||
|
|
||||||
mObject->setFillColorNode( fillColorButton->colorNode() );
|
mObject->setFillColorNode( fillColorButton->colorNode() );
|
||||||
|
|
||||||
mBlocked = false;
|
mBlocked = false;
|
||||||
@@ -304,6 +310,8 @@ void ObjectEditor::onPositionControlsChanged()
|
|||||||
{
|
{
|
||||||
mBlocked = true;
|
mBlocked = true;
|
||||||
|
|
||||||
|
mUndoRedoModel->checkpoint( tr("Move") );
|
||||||
|
|
||||||
glabels::Distance x = glabels::Distance(posXSpin->value(), mUnits);
|
glabels::Distance x = glabels::Distance(posXSpin->value(), mUnits);
|
||||||
glabels::Distance y = glabels::Distance(posYSpin->value(), mUnits);
|
glabels::Distance y = glabels::Distance(posYSpin->value(), mUnits);
|
||||||
|
|
||||||
@@ -320,6 +328,8 @@ void ObjectEditor::onRectSizeControlsChanged()
|
|||||||
{
|
{
|
||||||
mBlocked = true;
|
mBlocked = true;
|
||||||
|
|
||||||
|
mUndoRedoModel->checkpoint( tr("Size") );
|
||||||
|
|
||||||
glabels::Distance spinW = glabels::Distance(sizeWSpin->value(), mUnits);
|
glabels::Distance spinW = glabels::Distance(sizeWSpin->value(), mUnits);
|
||||||
glabels::Distance spinH = glabels::Distance(sizeHSpin->value(), mUnits);
|
glabels::Distance spinH = glabels::Distance(sizeHSpin->value(), mUnits);
|
||||||
|
|
||||||
@@ -352,6 +362,8 @@ void ObjectEditor::onShadowControlsChanged()
|
|||||||
{
|
{
|
||||||
mBlocked = true;
|
mBlocked = true;
|
||||||
|
|
||||||
|
mUndoRedoModel->checkpoint( tr("Shadow") );
|
||||||
|
|
||||||
mObject->setShadow( shadowEnableCheck->isChecked() );
|
mObject->setShadow( shadowEnableCheck->isChecked() );
|
||||||
mObject->setShadowX( glabels::Distance(shadowXSpin->value(), mUnits) );
|
mObject->setShadowX( glabels::Distance(shadowXSpin->value(), mUnits) );
|
||||||
mObject->setShadowY( glabels::Distance(shadowYSpin->value(), mUnits) );
|
mObject->setShadowY( glabels::Distance(shadowYSpin->value(), mUnits) );
|
||||||
|
|||||||
@@ -24,9 +24,10 @@
|
|||||||
#include "ui_ObjectEditor.h"
|
#include "ui_ObjectEditor.h"
|
||||||
#include "libglabels/Distance.h"
|
#include "libglabels/Distance.h"
|
||||||
|
|
||||||
|
// Forward references
|
||||||
class LabelModel; // Forward reference
|
class LabelModel;
|
||||||
class LabelModelObject; // Forward reference
|
class LabelModelObject;
|
||||||
|
class UndoRedoModel;
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
@@ -47,7 +48,7 @@ public:
|
|||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
// Public methods
|
// Public methods
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
void setModel( LabelModel* model );
|
void setModel( LabelModel* model, UndoRedoModel* undoRedoModel );
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
@@ -85,6 +86,7 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
LabelModel* mModel;
|
LabelModel* mModel;
|
||||||
LabelModelObject* mObject;
|
LabelModelObject* mObject;
|
||||||
|
UndoRedoModel* mUndoRedoModel;
|
||||||
|
|
||||||
glabels::Units mUnits;
|
glabels::Units mUnits;
|
||||||
int mSpinDigits;
|
int mSpinDigits;
|
||||||
|
|||||||
Reference in New Issue
Block a user