Renamed history classes.

This commit is contained in:
Leonardo Zide
2026-03-12 23:12:10 -07:00
parent 283f53f318
commit 6b84216dd8
12 changed files with 513 additions and 513 deletions
+1 -1
View File
@@ -76,7 +76,7 @@ class lcLight;
enum class lcLightType;
enum class lcLightAreaShape;
class lcGroup;
class lcModelAction;
class lcModelHistory;
class PieceInfo;
typedef std::map<const PieceInfo*, std::map<int, int>> lcPartsList;
struct lcModelPartsEntry;
+17 -17
View File
@@ -24,7 +24,7 @@
#include "lc_library.h"
#include "lc_colors.h"
#include "lc_previewwidget.h"
#include "lc_modelaction.h"
#include "lc_modelhistory.h"
#if LC_ENABLE_GAMEPAD
#include <QtGamepad/QGamepad>
@@ -2780,17 +2780,17 @@ void lcMainWindow::HandleCommand(lcCommandId CommandId)
case LC_EDIT_SELECT_ALL:
if (ActiveModel)
ActiveModel->SelectAllPieces();
ActiveModel->SelectAllPiecesAction();
break;
case LC_EDIT_SELECT_NONE:
if (ActiveModel)
ActiveModel->ClearSelection();
ActiveModel->ClearSelectionAction();
break;
case LC_EDIT_SELECT_INVERT:
if (ActiveModel)
ActiveModel->InvertPieceSelection();
ActiveModel->InvertPieceSelectionAction();
break;
case LC_EDIT_SELECT_BY_NAME:
@@ -2967,62 +2967,62 @@ void lcMainWindow::HandleCommand(lcCommandId CommandId)
case LC_PIECE_MOVE_PLUSX:
if (ActiveModel)
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(lcMax(GetMoveXYSnap(), 0.1f), 0.0f, 0.0f)), true, false, true, true, lcModelActionEditMerge::KeyboardMove);
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(lcMax(GetMoveXYSnap(), 0.1f), 0.0f, 0.0f)), true, false, true, true, lcModelHistoryEditMerge::KeyboardMove);
break;
case LC_PIECE_MOVE_MINUSX:
if (ActiveModel)
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(-lcMax(GetMoveXYSnap(), 0.1f), 0.0f, 0.0f)), true, false, true, true, lcModelActionEditMerge::KeyboardMove);
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(-lcMax(GetMoveXYSnap(), 0.1f), 0.0f, 0.0f)), true, false, true, true, lcModelHistoryEditMerge::KeyboardMove);
break;
case LC_PIECE_MOVE_PLUSY:
if (ActiveModel)
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, lcMax(GetMoveXYSnap(), 0.1f), 0.0f)), true, false, true, true, lcModelActionEditMerge::KeyboardMove);
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, lcMax(GetMoveXYSnap(), 0.1f), 0.0f)), true, false, true, true, lcModelHistoryEditMerge::KeyboardMove);
break;
case LC_PIECE_MOVE_MINUSY:
if (ActiveModel)
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, -lcMax(GetMoveXYSnap(), 0.1f), 0.0f)), true, false, true, true, lcModelActionEditMerge::KeyboardMove);
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, -lcMax(GetMoveXYSnap(), 0.1f), 0.0f)), true, false, true, true, lcModelHistoryEditMerge::KeyboardMove);
break;
case LC_PIECE_MOVE_PLUSZ:
if (ActiveModel)
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, lcMax(GetMoveZSnap(), 0.1f))), true, false, true, true, lcModelActionEditMerge::KeyboardMove);
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, lcMax(GetMoveZSnap(), 0.1f))), true, false, true, true, lcModelHistoryEditMerge::KeyboardMove);
break;
case LC_PIECE_MOVE_MINUSZ:
if (ActiveModel)
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, -lcMax(GetMoveZSnap(), 0.1f))), true, false, true, true, lcModelActionEditMerge::KeyboardMove);
ActiveModel->MoveSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, -lcMax(GetMoveZSnap(), 0.1f))), true, false, true, true, lcModelHistoryEditMerge::KeyboardMove);
break;
case LC_PIECE_ROTATE_PLUSX:
if (ActiveModel)
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(lcMax(GetAngleSnap(), 1.0f), 0.0f, 0.0f)), true, false, true, lcModelActionEditMerge::KeyboardRotate);
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(lcMax(GetAngleSnap(), 1.0f), 0.0f, 0.0f)), true, false, true, lcModelHistoryEditMerge::KeyboardRotate);
break;
case LC_PIECE_ROTATE_MINUSX:
if (ActiveModel)
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(-lcMax(GetAngleSnap(), 1.0f), 0.0f, 0.0f)), true, false, true, lcModelActionEditMerge::KeyboardRotate);
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(-lcMax(GetAngleSnap(), 1.0f), 0.0f, 0.0f)), true, false, true, lcModelHistoryEditMerge::KeyboardRotate);
break;
case LC_PIECE_ROTATE_PLUSY:
if (ActiveModel)
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, lcMax(GetAngleSnap(), 1.0f), 0.0f)), true, false, true, lcModelActionEditMerge::KeyboardRotate);
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, lcMax(GetAngleSnap(), 1.0f), 0.0f)), true, false, true, lcModelHistoryEditMerge::KeyboardRotate);
break;
case LC_PIECE_ROTATE_MINUSY:
if (ActiveModel)
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, -lcMax(GetAngleSnap(), 1.0f), 0.0f)), true, false, true, lcModelActionEditMerge::KeyboardRotate);
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, -lcMax(GetAngleSnap(), 1.0f), 0.0f)), true, false, true, lcModelHistoryEditMerge::KeyboardRotate);
break;
case LC_PIECE_ROTATE_PLUSZ:
if (ActiveModel)
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, lcMax(GetAngleSnap(), 1.0f))), true, false, true, lcModelActionEditMerge::KeyboardRotate);
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, lcMax(GetAngleSnap(), 1.0f))), true, false, true, lcModelHistoryEditMerge::KeyboardRotate);
break;
case LC_PIECE_ROTATE_MINUSZ:
if (ActiveModel)
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, -lcMax(GetAngleSnap(), 1.0f))), true, false, true, lcModelActionEditMerge::KeyboardRotate);
ActiveModel->RotateSelectedObjects(ActiveView->GetMoveDirection(lcVector3(0.0f, 0.0f, -lcMax(GetAngleSnap(), 1.0f))), true, false, true, lcModelHistoryEditMerge::KeyboardRotate);
break;
case LC_PIECE_MINIFIG_WIZARD:
@@ -3504,7 +3504,7 @@ void lcMainWindow::HandleCommand(lcCommandId CommandId)
case LC_EDIT_CANCEL:
if (ActiveView && !ActiveView->CloseFindReplaceDialog())
ActiveView->CancelTrackingOrClearSelection();
ActiveView->CancelTrackingOrClearSelectionAction();
break;
case LC_TIMELINE_INSERT_BEFORE:
+369 -369
View File
File diff suppressed because it is too large Load Diff
+37 -37
View File
@@ -5,12 +5,12 @@
enum class lcObjectPropertyId;
enum class lcCameraProjection;
struct lcModelHistoryState;
class lcModelAction;
class lcModelActionSelection;
class lcModelActionObjectEdit;
class lcModelActionProperties;
enum class lcModelActionEditMerge;
struct lcModelHistoryEditState;
class lcModelHistory;
class lcModelHistorySelect;
class lcModelHistoryEdit;
class lcModelHistoryProperties;
enum class lcModelHistoryEditMerge;
#define LC_SEL_NO_PIECES 0x0001 // No pieces in model
#define LC_SEL_PIECE 0x0002 // At least 1 piece selected
@@ -111,7 +111,7 @@ public:
struct lcModelHistoryEntry
{
std::vector<std::unique_ptr<lcModelAction>> ModelActions;
std::vector<std::unique_ptr<lcModelHistory>> HistorySequence;
QString Description;
};
@@ -228,8 +228,8 @@ public:
template<typename StateType, typename ObjectType>
void LoadObjectHistoryState(const std::vector<StateType>& ObjectStates, std::vector<std::unique_ptr<ObjectType>>& Objects);
void LoadHistoryState(const lcModelHistoryState& HistoryState);
void SetModelProperties(const lcModelProperties& ModelProperties);
void LoadEditHistoryState(const lcModelHistoryEditState& HistoryState);
void LoadModelPropertiesState(const lcModelProperties& ModelProperties);
lcPiece* AddPiece(PieceInfo* Info, quint32 Section);
void AddPiece(std::unique_ptr<lcPiece> Piece, size_t PieceIndex);
@@ -314,13 +314,13 @@ public:
void GetModelParts(const lcMatrix44& WorldMatrix, int DefaultColorIndex, std::vector<lcModelPartsEntry>& ModelParts) const;
void GetSelectionInformation(int* Flags, std::vector<lcObject*>& Selection, lcObject** Focus) const;
void ClearSelection();
void SetSelectionAndFocus(const std::vector<lcObject*>& Selection, lcObject* Focus, quint32 Section, lcSelectionMode SelectionMode);
void FocusOrDeselectObject(lcObject* Object, uint32_t Section, lcSelectionMode SelectionMode);
void SelectAllPieces();
void InvertPieceSelection();
void AddToSelection(const std::vector<lcObject*>& Objects);
void RemoveFromSelection(const std::vector<lcObject*>& Objects);
void ClearSelectionAction();
void SetSelectionAndFocusAction(const std::vector<lcObject*>& Selection, lcObject* Focus, quint32 Section, lcSelectionMode SelectionMode);
void FocusOrDeselectObjectAction(lcObject* Object, uint32_t Section, lcSelectionMode SelectionMode);
void SelectAllPiecesAction();
void InvertPieceSelectionAction();
void AddToSelectionAction(const std::vector<lcObject*>& Objects);
void RemoveFromSelectionAction(const std::vector<lcObject*>& Objects);
void HideSelectedPieces();
void HideUnselectedPieces();
@@ -363,13 +363,13 @@ public:
void ZoomExtents(lcCamera* Camera, float Aspect, const lcMatrix44& WorldMatrix);
void Zoom(lcCamera* Camera, float Amount);
void MoveSelectedObjects(const lcVector3& Distance, bool AllowRelative, bool AlternateButtonDrag, bool Checkpoint, bool FirstMove, lcModelActionEditMerge ModelActionEditMerge)
void MoveSelectedObjects(const lcVector3& Distance, bool AllowRelative, bool AlternateButtonDrag, bool Checkpoint, bool FirstMove, lcModelHistoryEditMerge ModelHistoryEditMerge)
{
MoveSelectedObjects(Distance, Distance, AllowRelative, AlternateButtonDrag, Checkpoint, FirstMove, ModelActionEditMerge);
MoveSelectedObjects(Distance, Distance, AllowRelative, AlternateButtonDrag, Checkpoint, FirstMove, ModelHistoryEditMerge);
}
void MoveSelectedObjects(const lcVector3& PieceDistance, const lcVector3& ObjectDistance, bool AllowRelative, bool AlternateButtonDrag, bool Checkpoint, bool FirstMove, lcModelActionEditMerge ModelActionEditMerge);
void RotateSelectedObjects(const lcVector3& Angles, bool Relative, bool RotatePivotPoint, bool Checkpoint, lcModelActionEditMerge ModelActionEditMerge);
void MoveSelectedObjects(const lcVector3& PieceDistance, const lcVector3& ObjectDistance, bool AllowRelative, bool AlternateButtonDrag, bool Checkpoint, bool FirstMove, lcModelHistoryEditMerge ModelHistoryEditMerge);
void RotateSelectedObjects(const lcVector3& Angles, bool Relative, bool RotatePivotPoint, bool Checkpoint, lcModelHistoryEditMerge ModelHistoryEditMerge);
void ScaleSelectedPieces(const float Scale);
void TransformSelectedObjects(lcTransformType TransformType, const lcVector3& Transform);
void SetObjectsKeyFrame(const std::vector<lcObject*>& Objects, lcObjectPropertyId PropertyId, bool KeyFrame);
@@ -391,23 +391,23 @@ public:
protected:
void DeleteModel();
void RecordSelectionAction(std::function<void()> Callback);
void RecordClearSelectionAction();
void RecordSetFocusAction(lcObject* FocusObject, uint32_t FocusSection, lcSelectionMode SelectionMode);
void RecordSetSelectionAndFocusAction(const std::vector<lcObject*>& Objects, lcObject* FocusObject, uint32_t FocusSection, lcSelectionMode SelectionMode);
void RecordSelectAllPiecesAction();
void RecordInvertPieceSelectionAction();
void RecordAddToSelectionAction(const std::vector<lcObject*>& Objects);
void RecordRemoveFromSelectionAction(const std::vector<lcObject*>& Objects);
void BeginObjectEditAction(lcModelActionEditMerge ModelActionEditMerge);
void EndObjectEditAction();
void RecordModelPropertiesAction(const lcModelProperties& ModelProperties);
void AddSelectionHistory(std::function<void()> Callback);
void ClearSelection();
void SetFocus(lcObject* FocusObject, uint32_t FocusSection, lcSelectionMode SelectionMode);
void SetSelectionAndFocus(const std::vector<lcObject*>& Objects, lcObject* FocusObject, uint32_t FocusSection, lcSelectionMode SelectionMode);
void SelectAllPieces();
void InvertPieceSelection();
void AddToSelection(const std::vector<lcObject*>& Objects);
void RemoveFromSelection(const std::vector<lcObject*>& Objects);
void BeginEditHistory(lcModelHistoryEditMerge ModelHistoryEditMerge);
void EndEditHistory();
void SetModelProperties(const lcModelProperties& ModelProperties);
void RunActionSequence(const std::vector<std::unique_ptr<lcModelAction>>& ActionSequence, bool Apply);
void BeginActionSequence();
void EndActionSequence(const QString& Description);
void DiscardActionSequence();
void RevertActionSequence();
void RunHistorySequence(const std::vector<std::unique_ptr<lcModelHistory>>& HistorySequence, bool Apply);
void BeginHistorySequence();
void EndHistorySequence(const QString& Description);
void DiscardHistorySequence();
void RevertHistorySequence();
void RemoveFirstUndoIfUnchanged();
const lcModelHistoryEntry* GetFirstUndoChange() const;
@@ -441,7 +441,7 @@ protected:
std::vector<std::unique_ptr<lcGroup>> mGroups;
QStringList mFileLines;
std::vector<std::unique_ptr<lcModelAction>> mActionSequence;
std::vector<std::unique_ptr<lcModelHistory>> mHistorySequence;
const lcModelHistoryEntry* mSavedHistory = nullptr;
std::vector<std::unique_ptr<lcModelHistoryEntry>> mUndoHistory;
std::vector<std::unique_ptr<lcModelHistoryEntry>> mRedoHistory;
@@ -1,39 +1,39 @@
#include "lc_global.h"
#include "lc_modelaction.h"
#include "lc_modelhistory.h"
#include "lc_model.h"
#include "piece.h"
#include "camera.h"
#include "light.h"
#include "group.h"
void lcModelActionSelection::SaveStartState(const lcModel* Model)
void lcModelHistorySelect::SaveStartState(const lcModel* Model)
{
SaveState(mStartState, Model);
}
void lcModelActionSelection::SaveEndState(const lcModel* Model)
void lcModelHistorySelect::SaveEndState(const lcModel* Model)
{
SaveState(mEndState, Model);
}
void lcModelActionSelection::LoadStartState(lcModel* Model) const
void lcModelHistorySelect::LoadStartState(lcModel* Model) const
{
LoadState(mStartState, Model);
}
void lcModelActionSelection::LoadEndState(lcModel* Model) const
void lcModelHistorySelect::LoadEndState(lcModel* Model) const
{
LoadState(mEndState, Model);
}
bool lcModelActionSelection::StateChanged() const
bool lcModelHistorySelect::StateChanged() const
{
return mStartState != mEndState;
}
void lcModelActionSelection::SaveState(lcModelActionSelectionState& State, const lcModel* Model)
void lcModelHistorySelect::SaveState(lcModelHistorySelectState& State, const lcModel* Model)
{
State = lcModelActionSelectionState();
State = lcModelHistorySelectState();
const std::vector<std::unique_ptr<lcPiece>>& Pieces = Model->GetPieces();
State.PieceSelection.resize(Pieces.size(), false);
@@ -96,7 +96,7 @@ void lcModelActionSelection::SaveState(lcModelActionSelectionState& State, const
}
}
void lcModelActionSelection::LoadState(const lcModelActionSelectionState& State, lcModel* Model)
void lcModelHistorySelect::LoadState(const lcModelHistorySelectState& State, lcModel* Model)
{
const std::vector<std::unique_ptr<lcPiece>>& Pieces = Model->GetPieces();
const std::vector<std::unique_ptr<lcCamera>>& Cameras = Model->GetCameras();
@@ -142,21 +142,21 @@ void lcModelActionSelection::LoadState(const lcModelActionSelectionState& State,
}
}
bool operator!=(const lcModelHistoryState& a, const lcModelHistoryState& b)
bool operator!=(const lcModelHistoryEditState& a, const lcModelHistoryEditState& b)
{
return a.Groups != b.Groups || a.Pieces != b.Pieces || a.Cameras != b.Cameras || a.Lights != b.Lights;
}
lcModelActionObjectEdit::lcModelActionObjectEdit(lcModelActionEditMerge ModelActionEditMerge)
: mMerge(ModelActionEditMerge)
lcModelHistoryEdit::lcModelHistoryEdit(lcModelHistoryEditMerge ModelHistoryEditMerge)
: mMerge(ModelHistoryEditMerge)
{
}
lcModelActionObjectEdit::~lcModelActionObjectEdit()
lcModelHistoryEdit::~lcModelHistoryEdit()
{
}
void lcModelActionObjectEdit::SaveState(lcModelHistoryState& State, const lcModel* Model)
void lcModelHistoryEdit::SaveState(lcModelHistoryEditState& State, const lcModel* Model)
{
const std::vector<std::unique_ptr<lcGroup>>& Groups = Model->GetGroups();
@@ -179,82 +179,82 @@ void lcModelActionObjectEdit::SaveState(lcModelHistoryState& State, const lcMode
State.Lights.emplace_back(Light->GetHistoryState(Model));
}
void lcModelActionObjectEdit::LoadState(const lcModelHistoryState& State, lcModel* Model)
void lcModelHistoryEdit::LoadState(const lcModelHistoryEditState& State, lcModel* Model)
{
Model->LoadHistoryState(State);
Model->LoadEditHistoryState(State);
}
void lcModelActionObjectEdit::SaveStartState(const lcModel* Model)
void lcModelHistoryEdit::SaveStartState(const lcModel* Model)
{
SaveState(mStartState, Model);
}
void lcModelActionObjectEdit::SaveEndState(const lcModel* Model)
void lcModelHistoryEdit::SaveEndState(const lcModel* Model)
{
SaveState(mEndState, Model);
}
void lcModelActionObjectEdit::LoadStartState(lcModel* Model) const
void lcModelHistoryEdit::LoadStartState(lcModel* Model) const
{
LoadState(mStartState, Model);
}
void lcModelActionObjectEdit::LoadEndState(lcModel* Model) const
void lcModelHistoryEdit::LoadEndState(lcModel* Model) const
{
LoadState(mEndState, Model);
}
bool lcModelActionObjectEdit::StateChanged() const
bool lcModelHistoryEdit::StateChanged() const
{
return mStartState != mEndState;
}
bool lcModelActionObjectEdit::CanMergeWith(const lcModelAction* Other) const
bool lcModelHistoryEdit::CanMergeWith(const lcModelHistory* Other) const
{
const lcModelActionObjectEdit* OtherModelActionEdit = dynamic_cast<const lcModelActionObjectEdit*>(Other);
const lcModelHistoryEdit* OtherModelHistoryEdit = dynamic_cast<const lcModelHistoryEdit*>(Other);
return OtherModelActionEdit && mMerge != lcModelActionEditMerge::None && mMerge == OtherModelActionEdit->mMerge;
return OtherModelHistoryEdit && mMerge != lcModelHistoryEditMerge::None && mMerge == OtherModelHistoryEdit->mMerge;
}
void lcModelActionObjectEdit::MergeWith(lcModelAction* Other)
void lcModelHistoryEdit::MergeWith(lcModelHistory* Other)
{
lcModelActionObjectEdit* OtherModelActionEdit = dynamic_cast<lcModelActionObjectEdit*>(Other);
lcModelHistoryEdit* OtherModelHistoryEdit = dynamic_cast<lcModelHistoryEdit*>(Other);
if (OtherModelActionEdit)
mEndState = std::move(OtherModelActionEdit->mEndState);
if (OtherModelHistoryEdit)
mEndState = std::move(OtherModelHistoryEdit->mEndState);
}
void lcModelActionProperties::SaveStartState(const lcModel* Model)
void lcModelHistoryProperties::SaveStartState(const lcModel* Model)
{
SaveState(mStartState, Model);
}
void lcModelActionProperties::SaveEndState(const lcModel* Model)
void lcModelHistoryProperties::SaveEndState(const lcModel* Model)
{
SaveState(mEndState, Model);
}
void lcModelActionProperties::LoadStartState(lcModel* Model) const
void lcModelHistoryProperties::LoadStartState(lcModel* Model) const
{
LoadState(mStartState, Model);
}
void lcModelActionProperties::LoadEndState(lcModel* Model) const
void lcModelHistoryProperties::LoadEndState(lcModel* Model) const
{
LoadState(mEndState, Model);
}
bool lcModelActionProperties::StateChanged() const
bool lcModelHistoryProperties::StateChanged() const
{
return mStartState != mEndState;
}
void lcModelActionProperties::SaveState(lcModelProperties& State, const lcModel* Model)
void lcModelHistoryProperties::SaveState(lcModelProperties& State, const lcModel* Model)
{
State = Model->GetProperties();
}
void lcModelActionProperties::LoadState(const lcModelProperties& State, lcModel* Model)
void lcModelHistoryProperties::LoadState(const lcModelProperties& State, lcModel* Model)
{
Model->SetModelProperties(State);
Model->LoadModelPropertiesState(State);
}
@@ -5,11 +5,11 @@
enum class lcObjectType;
enum class lcSelectionMode;
class lcModelAction
class lcModelHistory
{
public:
lcModelAction() = default;
virtual ~lcModelAction() = default;
lcModelHistory() = default;
virtual ~lcModelHistory() = default;
virtual void SaveStartState(const lcModel* Model) = 0;
virtual void SaveEndState(const lcModel* Model) = 0;
@@ -17,20 +17,20 @@ public:
virtual void LoadEndState(lcModel* Model) const = 0;
virtual bool StateChanged() const = 0;
virtual bool CanMergeWith(const lcModelAction* Other) const
virtual bool CanMergeWith(const lcModelHistory* Other) const
{
Q_UNUSED(Other);
return false;
}
virtual void MergeWith(lcModelAction* Other)
virtual void MergeWith(lcModelHistory* Other)
{
Q_UNUSED(Other);
}
};
struct lcModelActionSelectionState
struct lcModelHistorySelectState
{
std::vector<bool> PieceSelection;
std::vector<bool> CameraSelection;
@@ -39,18 +39,18 @@ struct lcModelActionSelectionState
uint32_t FocusSection = ~0U;
lcObjectType FocusObjectType = static_cast<lcObjectType>(~0);
bool operator!=(const lcModelActionSelectionState& Other) const
bool operator!=(const lcModelHistorySelectState& Other) const
{
return PieceSelection != Other.PieceSelection || CameraSelection != Other.CameraSelection || LightSelection != Other.LightSelection ||
FocusIndex != Other.FocusIndex || FocusSection != Other.FocusSection || FocusObjectType != Other.FocusObjectType;
}
};
class lcModelActionSelection : public lcModelAction
class lcModelHistorySelect : public lcModelHistory
{
public:
lcModelActionSelection() = default;
virtual ~lcModelActionSelection() = default;
lcModelHistorySelect() = default;
virtual ~lcModelHistorySelect() = default;
void SaveStartState(const lcModel* Model) override;
void SaveEndState(const lcModel* Model) override;
@@ -59,11 +59,11 @@ public:
bool StateChanged() const override;
protected:
static void SaveState(lcModelActionSelectionState& State, const lcModel* Model);
static void LoadState(const lcModelActionSelectionState& State, lcModel* Model);
static void SaveState(lcModelHistorySelectState& State, const lcModel* Model);
static void LoadState(const lcModelHistorySelectState& State, lcModel* Model);
lcModelActionSelectionState mStartState;
lcModelActionSelectionState mEndState;
lcModelHistorySelectState mStartState;
lcModelHistorySelectState mEndState;
};
struct lcGroupHistoryState;
@@ -71,7 +71,7 @@ struct lcPieceHistoryState;
struct lcCameraHistoryState;
struct lcLightHistoryState;
struct lcModelHistoryState
struct lcModelHistoryEditState
{
std::vector<lcGroupHistoryState> Groups;
std::vector<lcPieceHistoryState> Pieces;
@@ -79,9 +79,9 @@ struct lcModelHistoryState
std::vector<lcLightHistoryState> Lights;
};
bool operator!=(const lcModelHistoryState& a, const lcModelHistoryState& b);
bool operator!=(const lcModelHistoryEditState& a, const lcModelHistoryEditState& b);
enum class lcModelActionEditMerge
enum class lcModelHistoryEditMerge
{
None,
KeyboardMove,
@@ -93,11 +93,11 @@ enum class lcModelActionEditMerge
PropertiesEdit = 0x40000000
};
class lcModelActionObjectEdit: public lcModelAction
class lcModelHistoryEdit : public lcModelHistory
{
public:
lcModelActionObjectEdit(lcModelActionEditMerge ModelActionEditMerge);
virtual ~lcModelActionObjectEdit();
lcModelHistoryEdit(lcModelHistoryEditMerge ModelHistoryEditMerge);
virtual ~lcModelHistoryEdit();
void SaveStartState(const lcModel* Model) override;
void SaveEndState(const lcModel* Model) override;
@@ -105,23 +105,23 @@ public:
void LoadEndState(lcModel* Model) const override;
bool StateChanged() const override;
bool CanMergeWith(const lcModelAction* Other) const override;
void MergeWith(lcModelAction* Other) override;
bool CanMergeWith(const lcModelHistory* Other) const override;
void MergeWith(lcModelHistory* Other) override;
protected:
static void SaveState(lcModelHistoryState& State, const lcModel* Model);
static void LoadState(const lcModelHistoryState& State, lcModel* Model);
static void SaveState(lcModelHistoryEditState& State, const lcModel* Model);
static void LoadState(const lcModelHistoryEditState& State, lcModel* Model);
lcModelHistoryState mStartState;
lcModelHistoryState mEndState;
lcModelActionEditMerge mMerge;
lcModelHistoryEditState mStartState;
lcModelHistoryEditState mEndState;
lcModelHistoryEditMerge mMerge;
};
class lcModelActionProperties : public lcModelAction
class lcModelHistoryProperties : public lcModelHistory
{
public:
lcModelActionProperties() = default;
virtual ~lcModelActionProperties() = default;
lcModelHistoryProperties() = default;
virtual ~lcModelHistoryProperties() = default;
void SaveStartState(const lcModel* Model) override;
void SaveEndState(const lcModel* Model) override;
+1 -1
View File
@@ -110,7 +110,7 @@ bool lcPreview::SetCurrentPiece(const QString& PartType, int ColorCode)
mIsModel = Info->IsModel();
mDescription = Info->m_strDescription;
mModel->SelectAllPieces();
mModel->SelectAllPiecesAction();
mModel->DeleteSelectedObjects();
Library->LoadPieceInfo(Info, false, true);
+6 -6
View File
@@ -12,7 +12,7 @@
#include "lc_colorpicker.h"
#include "lc_qutils.h"
#include "lc_partselectionpopup.h"
#include "lc_modelaction.h"
#include "lc_modelhistory.h"
lcPropertiesWidget::lcPropertiesWidget(QWidget* Parent)
: QWidget(Parent)
@@ -321,7 +321,7 @@ void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float V
lcVector3 Distance = Position - Center;
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelActionEditMerge::PropertiesMove);
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelHistoryEditMerge::PropertiesMove);
}
else if (PropertyId == lcObjectPropertyId::ObjectRotationX || PropertyId == lcObjectPropertyId::ObjectRotationY || PropertyId == lcObjectPropertyId::ObjectRotationZ)
{
@@ -343,7 +343,7 @@ void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float V
else if (PropertyId == lcObjectPropertyId::ObjectRotationZ)
Rotation[2] = Value;
Model->RotateSelectedObjects(Rotation - InitialRotation, true, false, true, lcModelActionEditMerge::PropertiesRotate);
Model->RotateSelectedObjects(Rotation - InitialRotation, true, false, true, lcModelHistoryEditMerge::PropertiesRotate);
mLastRotation = Rotation;
}
@@ -376,7 +376,7 @@ void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float V
lcVector3 Distance = End - Start;
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelActionEditMerge::PropertiesMove);
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelHistoryEditMerge::PropertiesMove);
if (Camera)
{
@@ -413,7 +413,7 @@ void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float V
lcVector3 Distance = End - Start;
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelActionEditMerge::PropertiesMove);
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelHistoryEditMerge::PropertiesMove);
if (Camera)
{
@@ -450,7 +450,7 @@ void lcPropertiesWidget::ChangeFloatValue(lcObjectPropertyId PropertyId, float V
lcVector3 Distance = End - Start;
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelActionEditMerge::PropertiesMove);
Model->MoveSelectedObjects(Distance, false, false, true, true, lcModelHistoryEditMerge::PropertiesMove);
if (Camera)
{
+1 -1
View File
@@ -552,7 +552,7 @@ void lcTimelineWidget::ItemSelectionChanged()
UpdateCurrentStepItem();
}
Model->SetSelectionAndFocus(Selection, CurrentPiece, LC_PIECE_SECTION_POSITION, lcSelectionMode::Single);
Model->SetSelectionAndFocusAction(Selection, CurrentPiece, LC_PIECE_SECTION_POSITION, lcSelectionMode::Single);
mIgnoreUpdates = false;
blockSignals(Blocked);
+12 -12
View File
@@ -2433,11 +2433,11 @@ void lcView::StopTracking(bool Accept)
std::vector<lcObject*> Objects = FindObjectsInBox(mMouseDownX, mMouseDownY, mMouseX, mMouseY);
if (mMouseModifiers & Qt::ControlModifier)
ActiveModel->AddToSelection(Objects);
ActiveModel->AddToSelectionAction(Objects);
else if (mMouseModifiers & Qt::ShiftModifier)
ActiveModel->RemoveFromSelection(Objects);
ActiveModel->RemoveFromSelectionAction(Objects);
else
ActiveModel->SetSelectionAndFocus(Objects, nullptr, 0, gMainWindow->GetSelectionMode());
ActiveModel->SetSelectionAndFocusAction(Objects, nullptr, 0, gMainWindow->GetSelectionMode());
}
break;
@@ -2498,7 +2498,7 @@ void lcView::StopTracking(bool Accept)
ActiveModel->UpdateAllViews();
}
void lcView::CancelTrackingOrClearSelection()
void lcView::CancelTrackingOrClearSelectionAction()
{
if (mTrackButton != lcTrackButton::None)
StopTracking(false);
@@ -2506,7 +2506,7 @@ void lcView::CancelTrackingOrClearSelection()
{
lcModel* ActiveModel = GetActiveModel();
if (ActiveModel)
ActiveModel->ClearSelection();
ActiveModel->ClearSelectionAction();
}
}
@@ -2585,14 +2585,14 @@ void lcView::OnButtonDown(lcTrackButton TrackButton)
lcObjectSection ObjectSection = FindObjectUnderPointer(false, false);
if (mMouseModifiers & Qt::ControlModifier)
ActiveModel->FocusOrDeselectObject(ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
ActiveModel->FocusOrDeselectObjectAction(ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
else if (mMouseModifiers & Qt::ShiftModifier)
{
if (ObjectSection.Object)
ActiveModel->RemoveFromSelection({ ObjectSection.Object });
ActiveModel->RemoveFromSelectionAction({ ObjectSection.Object });
}
else
ActiveModel->SetSelectionAndFocus(std::vector<lcObject*>(), ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
ActiveModel->SetSelectionAndFocusAction(std::vector<lcObject*>(), ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
StartTracking(TrackButton);
}
@@ -2658,7 +2658,7 @@ void lcView::OnButtonDown(lcTrackButton TrackButton)
ObjectSection.Object = Focus;
ObjectSection.Section = mTrackToolSection;
ActiveModel->SetSelectionAndFocus(std::vector<lcObject*>(), ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
ActiveModel->SetSelectionAndFocusAction(std::vector<lcObject*>(), ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
}
break;
@@ -2752,14 +2752,14 @@ void lcView::OnLeftButtonDoubleClick()
lcObjectSection ObjectSection = FindObjectUnderPointer(false, false);
if (mMouseModifiers & Qt::ControlModifier)
ActiveModel->FocusOrDeselectObject(ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
ActiveModel->FocusOrDeselectObjectAction(ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
else if (mMouseModifiers & Qt::ShiftModifier)
{
if (ObjectSection.Object)
ActiveModel->RemoveFromSelection({ ObjectSection.Object });
ActiveModel->RemoveFromSelectionAction({ ObjectSection.Object });
}
else
ActiveModel->SetSelectionAndFocus(std::vector<lcObject*>(), ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
ActiveModel->SetSelectionAndFocusAction(std::vector<lcObject*>(), ObjectSection.Object, ObjectSection.Section, gMainWindow->GetSelectionMode());
}
void lcView::OnMiddleButtonDown()
+1 -1
View File
@@ -242,7 +242,7 @@ public:
void UpdatePanGesture(int dx, int dy);
void EndPanGesture(bool Accept);
void StartOrbitTracking();
void CancelTrackingOrClearSelection();
void CancelTrackingOrClearSelectionAction();
void SetViewpoint(lcViewpoint Viewpoint);
void SetViewpoint(const lcVector3& Position);
+2 -2
View File
@@ -168,6 +168,7 @@ SOURCES += \
common/camera.cpp \
common/group.cpp \
common/image.cpp \
common/lc_modelhistory.cpp \
common/light.cpp \
common/minifig.cpp \
common/object.cpp \
@@ -207,7 +208,6 @@ SOURCES += \
common/lc_meshloader.cpp \
common/lc_minifigdialog.cpp \
common/lc_model.cpp \
common/lc_modelaction.cpp \
common/lc_modellistdialog.cpp \
common/lc_objectproperty.cpp \
common/lc_pagesetupdialog.cpp \
@@ -246,6 +246,7 @@ HEADERS += \
common/camera.h \
common/group.h \
common/image.h \
common/lc_modelhistory.h \
common/light.h \
common/minifig.h \
common/object.h \
@@ -287,7 +288,6 @@ HEADERS += \
common/lc_meshloader.h \
common/lc_minifigdialog.h \
common/lc_model.h \
common/lc_modelaction.h \
common/lc_modellistdialog.h \
common/lc_objectproperty.h \
common/lc_pagesetupdialog.h \