Share Model merge; Merge initializers; undo/redo descs (#65)

- use "shared" pointer between Model and undo/redo instances
- adds missing initializers to Merge and Text classes
- adds checkpoints for mouse resize, barcode, and image reset.
- renames the position dialog checkpoint from Move -> Position to differentiate it from a mouse move.
- adds the Undo/Redo action descriptions to the menu items.
- adds unit tests for the Merge and Model change, and for ColorNode, RawText and TextNode.
This commit is contained in:
gitlost
2019-07-20 19:41:01 +01:00
committed by Jim Evins
parent f03aa0db3d
commit 6ab3a12b92
19 changed files with 1440 additions and 20 deletions
+15 -8
View File
@@ -61,12 +61,19 @@ namespace glabels
}
Model::Model( merge::Merge* merge )
: mUntitledInstance(0), mModified(true), mRotate(false)
{
mMerge = merge; // Shared
}
///
/// Destructor.
///
Model::~Model()
{
delete mMerge;
// Final instance of mMerge to be deleted by Model owner
}
@@ -75,7 +82,13 @@ namespace glabels
///
Model* Model::save() const
{
auto* savedModel = new Model;
auto* savedModel = new Model( mMerge ); // mMerge shared between models
if ( mFileName.isEmpty() && mUntitledInstance == 0 )
{
qDebug() << "Model::save: Warning: called before mUntitledInstance has been initialized: untitled names will differ";
}
savedModel->restore( this );
return savedModel;
@@ -112,18 +125,12 @@ namespace glabels
connect( object, SIGNAL(moved()), this, SLOT(onObjectMoved()) );
}
delete mMerge;
mMerge = savedModel->mMerge->clone();
// Emit signals based on potential changes
emit changed();
emit selectionChanged();
emit modifiedChanged();
emit nameChanged();
emit sizeChanged();
emit mergeChanged();
emit mergeSourceChanged();
emit mergeSelectionChanged();
}