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

0001 /*
0002     File                 : SignallingUndoCommand.h
0003     Project              : SciDAVis / LabPlot
0004     Description          : An undo command calling a method/signal/slot on a
0005     QObject on redo/undo.
0006     --------------------------------------------------------------------
0007     SPDX-FileCopyrightText: 2010 Knut Franke <Knut.Franke*gmx.net (use @ for *)>
0008     SPDX-License-Identifier: GPL-2.0-or-later
0009 */
0010 
0011 #ifndef SIGNALLING_UNDO_COMMAND_H
0012 #define SIGNALLING_UNDO_COMMAND_H
0013 
0014 #include <QByteArray>
0015 #include <QUndoCommand>
0016 
0017 class SignallingUndoCommand : public QUndoCommand {
0018 public:
0019     SignallingUndoCommand(const QString& text,
0020                           QObject* receiver,
0021                           const char* redoMethod,
0022                           const char* undoMethod,
0023                           QGenericArgument val0 = QGenericArgument(),
0024                           QGenericArgument val1 = QGenericArgument(),
0025                           QGenericArgument val2 = QGenericArgument(),
0026                           QGenericArgument val3 = QGenericArgument());
0027     ~SignallingUndoCommand() override;
0028 
0029     void redo() override;
0030     void undo() override;
0031 
0032 private:
0033     QGenericArgument arg(int index);
0034     QByteArray m_redo, m_undo;
0035     QObject* m_receiver;
0036     int m_argument_count;
0037     int* m_argument_types;
0038     void** m_argument_data;
0039 };
0040 
0041 #endif // ifndef SIGNALLING_UNDO_COMMAND_H