File indexing completed on 2024-05-12 03:47:26

0001 /*
0002     File                 : abstractcolumncommands.h
0003     Project              : LabPlot
0004     Description          : Commands to be called by AbstractColumn to modify AbstractColumnPrivate
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2007-2009 Tilman Benkert <thzs@gmx.net>
0007     SPDX-FileCopyrightText: 2010 Knut Franke <knut.franke@gmx.de>
0008     SPDX-FileCopyrightText: 2014-2021 Alexander Semke <alexander.semke@web.de>
0009     SPDX-License-Identifier: GPL-2.0-or-later
0010 */
0011 
0012 #ifndef ABSTRACTCOLUMNCOMMANDS_H
0013 #define ABSTRACTCOLUMNCOMMANDS_H
0014 
0015 #include "AbstractColumnPrivate.h"
0016 #include <QUndoCommand>
0017 
0018 class AbstractColumnClearMasksCmd : public QUndoCommand {
0019 public:
0020     explicit AbstractColumnClearMasksCmd(AbstractColumnPrivate*, QUndoCommand* parent = nullptr);
0021     ~AbstractColumnClearMasksCmd() override;
0022 
0023     void redo() override;
0024     void undo() override;
0025     void finalize() const;
0026 
0027 private:
0028     AbstractColumnPrivate* m_col;
0029     IntervalAttribute<bool> m_masking;
0030     bool m_copied;
0031 };
0032 
0033 class AbstractColumnSetMaskedCmd : public QUndoCommand {
0034 public:
0035     explicit AbstractColumnSetMaskedCmd(AbstractColumnPrivate*, const Interval<int>& interval, bool masked, QUndoCommand* parent = nullptr);
0036     ~AbstractColumnSetMaskedCmd() override;
0037 
0038     void redo() override;
0039     void undo() override;
0040     void finalize() const;
0041 
0042 private:
0043     AbstractColumnPrivate* m_col;
0044     Interval<int> m_interval;
0045     bool m_masked;
0046     IntervalAttribute<bool> m_masking;
0047     bool m_copied;
0048 };
0049 
0050 class AbstractColumnInsertRowsCmd : public QUndoCommand {
0051 public:
0052     explicit AbstractColumnInsertRowsCmd(AbstractColumn*, int before, int count, QUndoCommand* parent = nullptr);
0053     ~AbstractColumnInsertRowsCmd() override;
0054 
0055     void redo() override;
0056     void undo() override;
0057 
0058 protected:
0059     AbstractColumnPrivate* m_col;
0060     int m_before;
0061     int m_count;
0062 };
0063 
0064 class AbstractColumnRemoveRowsCmd : public QUndoCommand {
0065 public:
0066     explicit AbstractColumnRemoveRowsCmd(AbstractColumn* col, int first, int count, QUndoCommand* parent = nullptr);
0067     ~AbstractColumnRemoveRowsCmd() override;
0068 
0069     void redo() override;
0070     void undo() override;
0071 
0072 protected:
0073     AbstractColumnPrivate* m_col;
0074     int m_first;
0075     int m_count;
0076     IntervalAttribute<bool> m_masking;
0077 };
0078 
0079 class AbstractColumnSetHeatmapFormatCmd : public QUndoCommand {
0080 public:
0081     explicit AbstractColumnSetHeatmapFormatCmd(AbstractColumnPrivate*, const AbstractColumn::HeatmapFormat&, QUndoCommand* parent = nullptr);
0082     ~AbstractColumnSetHeatmapFormatCmd() override;
0083 
0084     void redo() override;
0085     void undo() override;
0086 
0087 private:
0088     AbstractColumnPrivate* m_col;
0089     AbstractColumn::HeatmapFormat m_format;
0090 };
0091 
0092 class AbstractColumnRemoveHeatmapFormatCmd : public QUndoCommand {
0093 public:
0094     explicit AbstractColumnRemoveHeatmapFormatCmd(AbstractColumnPrivate*, QUndoCommand* parent = nullptr);
0095     ~AbstractColumnRemoveHeatmapFormatCmd() override;
0096 
0097     void redo() override;
0098     void undo() override;
0099 
0100 private:
0101     AbstractColumnPrivate* m_col;
0102     AbstractColumn::HeatmapFormat m_format;
0103 };
0104 
0105 #endif // ifndef ABSTRACTCOLUMNCOMMANDS_H