Extended undo/redo framework into ObjectEditor.

This commit is contained in:
Jim Evins
2016-04-30 20:48:57 -04:00
parent ec26cbb07a
commit ec85e2c0ef
4 changed files with 28 additions and 8 deletions
+8 -2
View File
@@ -81,9 +81,15 @@ void LabelModel::restore( const LabelModel *savedModel )
mFrame = savedModel->mFrame;
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
+1 -1
View File
@@ -168,7 +168,7 @@ void MainWindow::setModel( LabelModel *label )
mPropertiesView->setModel( mModel, mUndoRedoModel );
mLabelEditor->setModel( mModel, mUndoRedoModel );
mObjectEditor->setModel( mModel );
mObjectEditor->setModel( mModel, mUndoRedoModel );
mPrintView->setModel( mModel );
mContents->setEnabled( true );
+13 -1
View File
@@ -24,6 +24,7 @@
#include "LabelModel.h"
#include "LabelModelObject.h"
#include "LabelModelBoxObject.h"
#include "UndoRedoModel.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;
mUndoRedoModel = undoRedoModel;
connect( mModel, SIGNAL(sizeChanged()), this, SLOT(onLabelSizeChanged()) );
connect( mModel, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()) );
@@ -277,6 +279,8 @@ void ObjectEditor::onLineControlsChanged()
{
mBlocked = true;
mUndoRedoModel->checkpoint( tr("Line") );
mObject->setLineWidth( glabels::Distance::pt(lineWidthSpin->value()) );
mObject->setLineColorNode( lineColorButton->colorNode() );
@@ -291,6 +295,8 @@ void ObjectEditor::onFillControlsChanged()
{
mBlocked = true;
mUndoRedoModel->checkpoint( tr("Fill") );
mObject->setFillColorNode( fillColorButton->colorNode() );
mBlocked = false;
@@ -304,6 +310,8 @@ void ObjectEditor::onPositionControlsChanged()
{
mBlocked = true;
mUndoRedoModel->checkpoint( tr("Move") );
glabels::Distance x = glabels::Distance(posXSpin->value(), mUnits);
glabels::Distance y = glabels::Distance(posYSpin->value(), mUnits);
@@ -320,6 +328,8 @@ void ObjectEditor::onRectSizeControlsChanged()
{
mBlocked = true;
mUndoRedoModel->checkpoint( tr("Size") );
glabels::Distance spinW = glabels::Distance(sizeWSpin->value(), mUnits);
glabels::Distance spinH = glabels::Distance(sizeHSpin->value(), mUnits);
@@ -352,6 +362,8 @@ void ObjectEditor::onShadowControlsChanged()
{
mBlocked = true;
mUndoRedoModel->checkpoint( tr("Shadow") );
mObject->setShadow( shadowEnableCheck->isChecked() );
mObject->setShadowX( glabels::Distance(shadowXSpin->value(), mUnits) );
mObject->setShadowY( glabels::Distance(shadowYSpin->value(), mUnits) );
+6 -4
View File
@@ -24,9 +24,10 @@
#include "ui_ObjectEditor.h"
#include "libglabels/Distance.h"
class LabelModel; // Forward reference
class LabelModelObject; // Forward reference
// Forward references
class LabelModel;
class LabelModelObject;
class UndoRedoModel;
///
@@ -47,7 +48,7 @@ public:
/////////////////////////////////
// Public methods
/////////////////////////////////
void setModel( LabelModel* model );
void setModel( LabelModel* model, UndoRedoModel* undoRedoModel );
/////////////////////////////////
@@ -85,6 +86,7 @@ private slots:
private:
LabelModel* mModel;
LabelModelObject* mObject;
UndoRedoModel* mUndoRedoModel;
glabels::Units mUnits;
int mSpinDigits;