File indexing completed on 2024-04-21 04:32:03

0001 /*
0002  * Copyright (C) 2010-2015 by Stephen Allewell
0003  * steve.allewell@gmail.com
0004  *
0005  * This program is free software; you can redistribute it and/or modify
0006  * it under the terms of the GNU General Public License as published by
0007  * the Free Software Foundation; either version 2 of the License, or
0008  * (at your option) any later version.
0009  */
0010 
0011 #ifndef Commands_H
0012 #define Commands_H
0013 
0014 #include <QPoint>
0015 #include <QRect>
0016 #include <QString>
0017 #include <QUndoCommand>
0018 #include <QVariant>
0019 
0020 #include "DocumentPalette.h"
0021 #include "PrinterConfiguration.h"
0022 #include "Stitch.h"
0023 #include "StitchData.h"
0024 
0025 class BackgroundImage;
0026 class Document;
0027 class DocumentFloss;
0028 class Editor;
0029 class Floss;
0030 class MainWindow;
0031 class Palette;
0032 class Pattern;
0033 class Preview;
0034 
0035 class FilePropertiesCommand : public QUndoCommand
0036 {
0037 public:
0038     explicit FilePropertiesCommand(Document *);
0039     virtual ~FilePropertiesCommand() = default;
0040 
0041     virtual void redo() Q_DECL_OVERRIDE;
0042     virtual void undo() Q_DECL_OVERRIDE;
0043 
0044 private:
0045     Document *m_document;
0046 };
0047 
0048 class ImportImageCommand : public QUndoCommand
0049 {
0050 public:
0051     explicit ImportImageCommand(Document *);
0052     virtual ~ImportImageCommand() = default;
0053 
0054     virtual void redo() Q_DECL_OVERRIDE;
0055     virtual void undo() Q_DECL_OVERRIDE;
0056 
0057 private:
0058     Document *m_document;
0059 };
0060 
0061 class PaintStitchesCommand : public QUndoCommand
0062 {
0063 public:
0064     explicit PaintStitchesCommand(Document *);
0065     virtual ~PaintStitchesCommand() = default;
0066 
0067     virtual void redo() Q_DECL_OVERRIDE;
0068     virtual void undo() Q_DECL_OVERRIDE;
0069 
0070 private:
0071     Document *m_document;
0072 };
0073 
0074 class PaintKnotsCommand : public QUndoCommand
0075 {
0076 public:
0077     explicit PaintKnotsCommand(Document *);
0078     virtual ~PaintKnotsCommand() = default;
0079 
0080     virtual void redo() Q_DECL_OVERRIDE;
0081     virtual void undo() Q_DECL_OVERRIDE;
0082 
0083 private:
0084     Document *m_document;
0085 };
0086 
0087 class DrawLineCommand : public QUndoCommand
0088 {
0089 public:
0090     explicit DrawLineCommand(Document *);
0091     virtual ~DrawLineCommand() = default;
0092 
0093     virtual void redo() Q_DECL_OVERRIDE;
0094     virtual void undo() Q_DECL_OVERRIDE;
0095 
0096 private:
0097     Document *m_document; /**< pointer to the associated Document */
0098 };
0099 
0100 class EraseStitchesCommand : public QUndoCommand
0101 {
0102 public:
0103     explicit EraseStitchesCommand(Document *);
0104     virtual ~EraseStitchesCommand() = default;
0105 
0106     virtual void redo() Q_DECL_OVERRIDE;
0107     virtual void undo() Q_DECL_OVERRIDE;
0108 
0109 private:
0110     Document *m_document;
0111 };
0112 
0113 class DrawRectangleCommand : public QUndoCommand
0114 {
0115 public:
0116     explicit DrawRectangleCommand(Document *document);
0117     virtual ~DrawRectangleCommand() = default;
0118 
0119     virtual void redo() Q_DECL_OVERRIDE;
0120     virtual void undo() Q_DECL_OVERRIDE;
0121 
0122 private:
0123     Document *m_document; /**< pointer to the associated Document */
0124 };
0125 
0126 class FillRectangleCommand : public QUndoCommand
0127 {
0128 public:
0129     explicit FillRectangleCommand(Document *document);
0130     virtual ~FillRectangleCommand() = default;
0131 
0132     virtual void redo() Q_DECL_OVERRIDE;
0133     virtual void undo() Q_DECL_OVERRIDE;
0134 
0135 private:
0136     Document *m_document; /**< pointer to the associated Document */
0137 };
0138 
0139 class DrawEllipseCommand : public QUndoCommand
0140 {
0141 public:
0142     explicit DrawEllipseCommand(Document *document);
0143     virtual ~DrawEllipseCommand() = default;
0144 
0145     virtual void redo() Q_DECL_OVERRIDE;
0146     virtual void undo() Q_DECL_OVERRIDE;
0147 
0148 private:
0149     Document *m_document; /**< pointer to the associated Document */
0150 };
0151 
0152 class FillEllipseCommand : public QUndoCommand
0153 {
0154 public:
0155     explicit FillEllipseCommand(Document *document);
0156     virtual ~FillEllipseCommand() = default;
0157 
0158     virtual void redo() Q_DECL_OVERRIDE;
0159     virtual void undo() Q_DECL_OVERRIDE;
0160 
0161 private:
0162     Document *m_document; /**< pointer to the associated Document */
0163 };
0164 
0165 class FillPolygonCommand : public QUndoCommand
0166 {
0167 public:
0168     explicit FillPolygonCommand(Document *);
0169     virtual ~FillPolygonCommand() = default;
0170 
0171     virtual void redo() Q_DECL_OVERRIDE;
0172     virtual void undo() Q_DECL_OVERRIDE;
0173 
0174 private:
0175     Document *m_document;
0176 };
0177 
0178 class AddStitchCommand : public QUndoCommand
0179 {
0180 public:
0181     AddStitchCommand(Document *, const QPoint &, Stitch::Type, int, QUndoCommand *);
0182     virtual ~AddStitchCommand();
0183 
0184     virtual void redo() Q_DECL_OVERRIDE;
0185     virtual void undo() Q_DECL_OVERRIDE;
0186 
0187 private:
0188     Document *m_document;
0189     QPoint m_cell;
0190     Stitch::Type m_type;
0191     int m_colorIndex;
0192     StitchQueue *m_original;
0193 };
0194 
0195 class DeleteStitchCommand : public QUndoCommand
0196 {
0197 public:
0198     DeleteStitchCommand(Document *, const QPoint &, Stitch::Type, int, QUndoCommand *);
0199     virtual ~DeleteStitchCommand();
0200 
0201     virtual void redo() Q_DECL_OVERRIDE;
0202     virtual void undo() Q_DECL_OVERRIDE;
0203 
0204 private:
0205     Document *m_document;
0206     QPoint m_cell;
0207     Stitch::Type m_type;
0208     int m_colorIndex;
0209     StitchQueue *m_original;
0210 };
0211 
0212 class AddBackstitchCommand : public QUndoCommand
0213 {
0214 public:
0215     AddBackstitchCommand(Document *, const QPoint &, const QPoint &, int);
0216     virtual ~AddBackstitchCommand() = default;
0217 
0218     virtual void redo() Q_DECL_OVERRIDE;
0219     virtual void undo() Q_DECL_OVERRIDE;
0220 
0221 private:
0222     Document *m_document;
0223     QPoint m_start;
0224     QPoint m_end;
0225     int m_colorIndex;
0226 };
0227 
0228 class DeleteBackstitchCommand : public QUndoCommand
0229 {
0230 public:
0231     DeleteBackstitchCommand(Document *, const QPoint &, const QPoint &, int);
0232     virtual ~DeleteBackstitchCommand();
0233 
0234     virtual void redo() Q_DECL_OVERRIDE;
0235     virtual void undo() Q_DECL_OVERRIDE;
0236 
0237 private:
0238     Document *m_document;
0239     QPoint m_start;
0240     QPoint m_end;
0241     int m_colorIndex;
0242     Backstitch *m_backstitch;
0243 };
0244 
0245 class AddKnotCommand : public QUndoCommand
0246 {
0247 public:
0248     AddKnotCommand(Document *, const QPoint &, int, QUndoCommand *);
0249     virtual ~AddKnotCommand() = default;
0250 
0251     virtual void redo() Q_DECL_OVERRIDE;
0252     virtual void undo() Q_DECL_OVERRIDE;
0253 
0254 private:
0255     Document *m_document;
0256     QPoint m_snap;
0257     int m_colorIndex;
0258 };
0259 
0260 class DeleteKnotCommand : public QUndoCommand
0261 {
0262 public:
0263     DeleteKnotCommand(Document *, const QPoint &, int, QUndoCommand *);
0264     virtual ~DeleteKnotCommand();
0265 
0266     virtual void redo() Q_DECL_OVERRIDE;
0267     virtual void undo() Q_DECL_OVERRIDE;
0268 
0269 private:
0270     Document *m_document;
0271     QPoint m_snap;
0272     int m_colorIndex;
0273     Knot *m_knot;
0274 };
0275 
0276 class SetPropertyCommand : public QUndoCommand
0277 {
0278 public:
0279     SetPropertyCommand(Document *, const QString &, const QVariant &, QUndoCommand *parent = nullptr);
0280     virtual ~SetPropertyCommand() = default;
0281 
0282     virtual void redo() Q_DECL_OVERRIDE;
0283     virtual void undo() Q_DECL_OVERRIDE;
0284 
0285 private:
0286     Document *m_document;
0287     QString m_name;
0288     QVariant m_value;
0289     QVariant m_oldValue;
0290 };
0291 
0292 class AddBackgroundImageCommand : public QUndoCommand
0293 {
0294 public:
0295     AddBackgroundImageCommand(Document *, QSharedPointer<BackgroundImage>, MainWindow *);
0296     virtual ~AddBackgroundImageCommand() = default;
0297 
0298     virtual void redo() Q_DECL_OVERRIDE;
0299     virtual void undo() Q_DECL_OVERRIDE;
0300 
0301 private:
0302     Document *m_document;
0303     QSharedPointer<BackgroundImage> m_backgroundImage;
0304     MainWindow *m_mainWindow;
0305 };
0306 
0307 class FitBackgroundImageCommand : public QUndoCommand
0308 {
0309 public:
0310     FitBackgroundImageCommand(Document *, QSharedPointer<BackgroundImage>, const QRect &);
0311     virtual ~FitBackgroundImageCommand() = default;
0312 
0313     virtual void redo() Q_DECL_OVERRIDE;
0314     virtual void undo() Q_DECL_OVERRIDE;
0315 
0316 private:
0317     Document *m_document;
0318     QSharedPointer<BackgroundImage> m_backgroundImage;
0319     QRect m_rect;
0320 };
0321 
0322 class ShowBackgroundImageCommand : public QUndoCommand
0323 {
0324 public:
0325     ShowBackgroundImageCommand(Document *, QSharedPointer<BackgroundImage>, bool);
0326     virtual ~ShowBackgroundImageCommand() = default;
0327 
0328     virtual void redo() Q_DECL_OVERRIDE;
0329     virtual void undo() Q_DECL_OVERRIDE;
0330 
0331 private:
0332     Document *m_document;
0333     QSharedPointer<BackgroundImage> m_backgroundImage;
0334     bool m_visible;
0335 };
0336 
0337 class RemoveBackgroundImageCommand : public QUndoCommand
0338 {
0339 public:
0340     RemoveBackgroundImageCommand(Document *, QSharedPointer<BackgroundImage>, MainWindow *);
0341     virtual ~RemoveBackgroundImageCommand();
0342 
0343     virtual void redo() Q_DECL_OVERRIDE;
0344     virtual void undo() Q_DECL_OVERRIDE;
0345 
0346 private:
0347     Document *m_document;
0348     QSharedPointer<BackgroundImage> m_backgroundImage;
0349     MainWindow *m_mainWindow;
0350 };
0351 
0352 class AddDocumentFlossCommand : public QUndoCommand
0353 {
0354 public:
0355     AddDocumentFlossCommand(Document *, int, DocumentFloss *, QUndoCommand *parent = nullptr);
0356     virtual ~AddDocumentFlossCommand() = default;
0357 
0358     virtual void redo() Q_DECL_OVERRIDE;
0359     virtual void undo() Q_DECL_OVERRIDE;
0360 
0361 private:
0362     Document *m_document;
0363     int m_key;
0364     DocumentFloss *m_documentFloss;
0365 };
0366 
0367 class RemoveDocumentFlossCommand : public QUndoCommand
0368 {
0369 public:
0370     RemoveDocumentFlossCommand(Document *, int, DocumentFloss *, QUndoCommand *parent = nullptr);
0371     virtual ~RemoveDocumentFlossCommand();
0372 
0373     virtual void redo() Q_DECL_OVERRIDE;
0374     virtual void undo() Q_DECL_OVERRIDE;
0375 
0376 private:
0377     Document *m_document;
0378     int m_key;
0379     DocumentFloss *m_documentFloss;
0380 };
0381 
0382 class ReplaceDocumentFlossCommand : public QUndoCommand
0383 {
0384 public:
0385     ReplaceDocumentFlossCommand(Document *, int, DocumentFloss *);
0386     virtual ~ReplaceDocumentFlossCommand();
0387 
0388     virtual void redo() Q_DECL_OVERRIDE;
0389     virtual void undo() Q_DECL_OVERRIDE;
0390 
0391 private:
0392     Document *m_document;
0393     int m_key;
0394     DocumentFloss *m_documentFloss;
0395 };
0396 
0397 class ClearUnusedFlossesCommand : public QUndoCommand
0398 {
0399 public:
0400     explicit ClearUnusedFlossesCommand(Document *);
0401     virtual ~ClearUnusedFlossesCommand() = default;
0402 
0403     virtual void redo() Q_DECL_OVERRIDE;
0404     virtual void undo() Q_DECL_OVERRIDE;
0405 
0406 private:
0407     Document *m_document;
0408 };
0409 
0410 class ResizeDocumentCommand : public QUndoCommand
0411 {
0412 public:
0413     ResizeDocumentCommand(Document *, int, int, QUndoCommand *parent = nullptr);
0414     virtual ~ResizeDocumentCommand() = default;
0415 
0416     void redo() Q_DECL_OVERRIDE;
0417     void undo() Q_DECL_OVERRIDE;
0418 
0419 private:
0420     Document *m_document;
0421     int m_width;
0422     int m_height;
0423     int m_originalWidth;
0424     int m_originalHeight;
0425     int m_xOffset;
0426     int m_yOffset;
0427     QPoint m_snapOffset;
0428 };
0429 
0430 class CropToPatternCommand : public QUndoCommand
0431 {
0432 public:
0433     explicit CropToPatternCommand(Document *);
0434     virtual ~CropToPatternCommand() = default;
0435 
0436     void redo() Q_DECL_OVERRIDE;
0437     void undo() Q_DECL_OVERRIDE;
0438 
0439 private:
0440     Document *m_document;
0441     unsigned m_originalWidth;
0442     unsigned m_originalHeight;
0443     int m_xOffset;
0444     int m_yOffset;
0445     QRect m_extents;
0446 };
0447 
0448 class CropToSelectionCommand : public QUndoCommand
0449 {
0450 public:
0451     CropToSelectionCommand(Document *, const QRect &);
0452     virtual ~CropToSelectionCommand() = default;
0453 
0454     void redo() Q_DECL_OVERRIDE;
0455     void undo() Q_DECL_OVERRIDE;
0456 
0457 private:
0458     Document *m_document;
0459     QRect m_selectionArea;
0460     QByteArray m_originalPattern;
0461 };
0462 
0463 class InsertColumnsCommand : public QUndoCommand
0464 {
0465 public:
0466     InsertColumnsCommand(Document *, const QRect &);
0467     virtual ~InsertColumnsCommand() = default;
0468 
0469     void redo() Q_DECL_OVERRIDE;
0470     void undo() Q_DECL_OVERRIDE;
0471 
0472 private:
0473     Document *m_document;
0474     QRect m_selectionArea;
0475 };
0476 
0477 class InsertRowsCommand : public QUndoCommand
0478 {
0479 public:
0480     InsertRowsCommand(Document *, const QRect &);
0481     virtual ~InsertRowsCommand() = default;
0482 
0483     void redo() Q_DECL_OVERRIDE;
0484     void undo() Q_DECL_OVERRIDE;
0485 
0486 private:
0487     Document *m_document;
0488     QRect m_selectionArea;
0489 };
0490 
0491 class ExtendPatternCommand : public QUndoCommand
0492 {
0493 public:
0494     ExtendPatternCommand(Document *, int, int, int, int);
0495     virtual ~ExtendPatternCommand() = default;
0496 
0497     void redo() Q_DECL_OVERRIDE;
0498     void undo() Q_DECL_OVERRIDE;
0499 
0500 private:
0501     Document *m_document;
0502     int m_top;
0503     int m_left;
0504     int m_right;
0505     int m_bottom;
0506 };
0507 
0508 class CentrePatternCommand : public QUndoCommand
0509 {
0510 public:
0511     explicit CentrePatternCommand(Document *);
0512     virtual ~CentrePatternCommand() = default;
0513 
0514     void redo() Q_DECL_OVERRIDE;
0515     void undo() Q_DECL_OVERRIDE;
0516 
0517 private:
0518     Document *m_document;
0519     int m_xOffset;
0520     int m_yOffset;
0521 };
0522 
0523 class UpdateDocumentPaletteCommand : public QUndoCommand
0524 {
0525 public:
0526     UpdateDocumentPaletteCommand(Document *, const DocumentPalette &);
0527     virtual ~UpdateDocumentPaletteCommand() = default;
0528 
0529     void redo() Q_DECL_OVERRIDE;
0530     void undo() Q_DECL_OVERRIDE;
0531 
0532 private:
0533     Document *m_document;
0534     DocumentPalette m_palette;
0535 };
0536 
0537 class ChangeSchemeCommand : public QUndoCommand
0538 {
0539 public:
0540     ChangeSchemeCommand(Document *, const QString &, QUndoCommand *parent = nullptr);
0541     virtual ~ChangeSchemeCommand() = default;
0542 
0543     void redo() Q_DECL_OVERRIDE;
0544     void undo() Q_DECL_OVERRIDE;
0545 
0546 private:
0547     Document *m_document;
0548     QString m_schemeName;
0549     QByteArray m_originalPalette;
0550 };
0551 
0552 class EditorReadDocumentSettingsCommand : public QUndoCommand
0553 {
0554 public:
0555     explicit EditorReadDocumentSettingsCommand(Editor *);
0556     virtual ~EditorReadDocumentSettingsCommand() = default;
0557 
0558     void redo() Q_DECL_OVERRIDE;
0559     void undo() Q_DECL_OVERRIDE;
0560 
0561 private:
0562     Editor *m_editor;
0563 };
0564 
0565 class PreviewReadDocumentSettingsCommand : public QUndoCommand
0566 {
0567 public:
0568     explicit PreviewReadDocumentSettingsCommand(Preview *);
0569     virtual ~PreviewReadDocumentSettingsCommand() = default;
0570 
0571     void redo() Q_DECL_OVERRIDE;
0572     void undo() Q_DECL_OVERRIDE;
0573 
0574 private:
0575     Preview *m_preview;
0576 };
0577 
0578 class PaletteReplaceColorCommand : public QUndoCommand
0579 {
0580 public:
0581     PaletteReplaceColorCommand(Document *document, int, int);
0582     virtual ~PaletteReplaceColorCommand() = default;
0583 
0584     void redo() Q_DECL_OVERRIDE;
0585     void undo() Q_DECL_OVERRIDE;
0586 
0587 private:
0588     Document *m_document;
0589     int m_originalIndex;
0590     int m_replacementIndex;
0591     QList<Stitch *> m_stitches;
0592     QList<Backstitch *> m_backstitches;
0593     QList<Knot *> m_knots;
0594 };
0595 
0596 class PaletteSwapColorCommand : public QUndoCommand
0597 {
0598 public:
0599     PaletteSwapColorCommand(Document *, int, int);
0600     virtual ~PaletteSwapColorCommand() = default;
0601 
0602     void redo() Q_DECL_OVERRIDE;
0603     void undo() Q_DECL_OVERRIDE;
0604 
0605 private:
0606     Document *m_document;
0607     int m_originalIndex;
0608     int m_swappedIndex;
0609 };
0610 
0611 class UpdatePrinterConfigurationCommand : public QUndoCommand
0612 {
0613 public:
0614     UpdatePrinterConfigurationCommand(Document *, const PrinterConfiguration &);
0615     virtual ~UpdatePrinterConfigurationCommand() = default;
0616 
0617     void redo() Q_DECL_OVERRIDE;
0618     void undo() Q_DECL_OVERRIDE;
0619 
0620 private:
0621     Document *m_document;
0622     PrinterConfiguration m_printerConfiguration;
0623 };
0624 
0625 class EditCutCommand : public QUndoCommand
0626 {
0627 public:
0628     EditCutCommand(Document *document,
0629                    const QRect &selectionArea,
0630                    int colorMask,
0631                    const QList<Stitch::Type> &stitchMasks,
0632                    bool excludeBackstitches,
0633                    bool excludeKnots);
0634     virtual ~EditCutCommand();
0635 
0636     void redo() Q_DECL_OVERRIDE;
0637     void undo() Q_DECL_OVERRIDE;
0638 
0639 private:
0640     Document *m_document;
0641     QRect m_selectionArea;
0642     int m_colorMask;
0643     QList<Stitch::Type> m_stitchMasks;
0644     bool m_excludeBackstitches;
0645     bool m_excludeKnots;
0646 
0647     Pattern *m_originalPattern;
0648 };
0649 
0650 class EditPasteCommand : public QUndoCommand
0651 {
0652 public:
0653     EditPasteCommand(Document *document, Pattern *pattern, const QPoint &cell, bool merge, const QString &);
0654     virtual ~EditPasteCommand() = default;
0655 
0656     void redo() Q_DECL_OVERRIDE;
0657     void undo() Q_DECL_OVERRIDE;
0658 
0659 private:
0660     Document *m_document;
0661     Pattern *m_pastePattern;
0662     QPoint m_cell;
0663     bool m_merge;
0664 
0665     QByteArray m_originalPattern;
0666 };
0667 
0668 class MirrorSelectionCommand : public QUndoCommand
0669 {
0670 public:
0671     MirrorSelectionCommand(Document *,
0672                            const QRect &,
0673                            int,
0674                            const QList<Stitch::Type> &,
0675                            bool,
0676                            bool,
0677                            Qt::Orientation,
0678                            bool,
0679                            const QByteArray &,
0680                            Pattern *,
0681                            const QPoint &,
0682                            bool merge);
0683     virtual ~MirrorSelectionCommand();
0684 
0685     virtual void redo() Q_DECL_OVERRIDE;
0686     virtual void undo() Q_DECL_OVERRIDE;
0687 
0688 private:
0689     Document *m_document;
0690     QRect m_selectionArea;
0691     int m_colorMask;
0692     QList<Stitch::Type> m_stitchMasks;
0693     bool m_excludeBackstitches;
0694     bool m_excludeKnots;
0695     Qt::Orientation m_orientation;
0696     bool m_copies;
0697     QByteArray m_originalPatternData;
0698     Pattern *m_invertedPattern;
0699     QPoint m_pasteCell;
0700     bool m_merge;
0701 };
0702 
0703 class RotateSelectionCommand : public QUndoCommand
0704 {
0705 public:
0706     RotateSelectionCommand(Document *,
0707                            const QRect &,
0708                            int,
0709                            const QList<Stitch::Type> &,
0710                            bool,
0711                            bool,
0712                            StitchData::Rotation,
0713                            bool,
0714                            const QByteArray &,
0715                            Pattern *,
0716                            const QPoint &,
0717                            bool);
0718     virtual ~RotateSelectionCommand();
0719 
0720     void redo() Q_DECL_OVERRIDE;
0721     void undo() Q_DECL_OVERRIDE;
0722 
0723 private:
0724     Document *m_document;
0725     QRect m_selectionArea;
0726     int m_colorMask;
0727     QList<Stitch::Type> m_stitchMasks;
0728     bool m_excludeBackstitches;
0729     bool m_excludeKnots;
0730     StitchData::Rotation m_rotation;
0731     bool m_copies;
0732     QByteArray m_originalPatternData;
0733     Pattern *m_rotatedPattern;
0734     QPoint m_pasteCell;
0735     bool m_merge;
0736 };
0737 
0738 class AlphabetCommand : public QUndoCommand
0739 {
0740 public:
0741     explicit AlphabetCommand(Document *);
0742     virtual ~AlphabetCommand();
0743 
0744     void redo() Q_DECL_OVERRIDE;
0745     void undo() Q_DECL_OVERRIDE;
0746 
0747     void push(QUndoCommand *);
0748     QUndoCommand *pop();
0749 
0750     int childCount() const;
0751 
0752 private:
0753     Document *m_document;
0754     QList<QUndoCommand *> m_children;
0755 };
0756 
0757 class ConfigurationCommand : public QUndoCommand
0758 {
0759 public:
0760     explicit ConfigurationCommand(MainWindow *mainWindow);
0761     virtual ~ConfigurationCommand() = default;
0762 
0763     void redo() Q_DECL_OVERRIDE;
0764     void undo() Q_DECL_OVERRIDE;
0765 
0766 private:
0767     MainWindow *m_mainWindow;
0768 };
0769 
0770 #endif // Commands_H