mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
undo: more fine-grained editing of cylinder
Don't overwrite the full cylinder when editing a single field. Implement three "modes": editing of type, pressure and gasmix. Don't consider individual fields, because some of them are related. E.g. you can change the gasmix by setting the MOD. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
4e8a838f74
commit
2eeb5f4fc2
7 changed files with 64 additions and 22 deletions
|
@ -5,6 +5,7 @@
|
|||
#define COMMAND_EDIT_H
|
||||
|
||||
#include "command_base.h"
|
||||
#include "command.h" // for EditCylinderType
|
||||
#include "core/subsurface-qt/divelistnotifier.h"
|
||||
|
||||
#include <QVector>
|
||||
|
@ -406,10 +407,16 @@ private:
|
|||
void redo() override;
|
||||
};
|
||||
|
||||
// Instead of implementing an undo command for every single field in a cylinder,
|
||||
// we only have one and pass an edit "type". We either edit the type, pressure
|
||||
// or gasmix fields. This has mostly historical reasons rooted in the way the
|
||||
// CylindersModel code works. The model works for undo and also in the planner
|
||||
// without undo. Having a single undo-command simplifies the code there.
|
||||
class EditCylinder : public EditCylinderBase {
|
||||
public:
|
||||
EditCylinder(int index, cylinder_t cyl, bool currentDiveOnly); // Clones cylinder
|
||||
EditCylinder(int index, cylinder_t cyl, EditCylinderType type, bool currentDiveOnly); // Clones cylinder
|
||||
private:
|
||||
EditCylinderType type;
|
||||
void undo() override;
|
||||
void redo() override;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue