1 // SPDX-FileCopyrightText: 2002 Dominique Devriese <devriese@kde.org>
2 
3 // SPDX-License-Identifier: GPL-2.0-or-later
4 
5 #ifndef KIG_MODES_MACRO_H
6 #define KIG_MODES_MACRO_H
7 
8 #include "base_mode.h"
9 
10 #include <QObject>
11 
12 class MacroWizard;
13 
14 class DefineMacroMode
15   : public BaseMode
16 {
17 public:
18   explicit DefineMacroMode( KigPart& );
19   ~DefineMacroMode();
20 
21   void dragRect( const QPoint& p, KigWidget& w ) override;
22   void leftClickedObject( ObjectHolder* o, const QPoint& p,
23                           KigWidget& w, bool ctrlOrShiftDown ) override;
24   using BaseMode::midClicked;
25   using BaseMode::rightClicked;
26   using BaseMode::mouseMoved;
27 
28   // called by MacroWizard class
29   void givenPageEntered();
30   void finalPageEntered();
31   bool validateObjects();
32   void finishPressed();
33   void cancelPressed();
34 
35   bool hasGivenArgs() const;
36   bool hasFinalArgs() const;
37 
38 protected:
39   void rightClicked( const std::vector<ObjectHolder*>& oco, const QPoint& p, KigWidget& w ) override;
40   void midClicked( const QPoint& p, KigWidget& w ) override;
41   void mouseMoved( const std::vector<ObjectHolder*>& os, const QPoint& p, KigWidget& w, bool shiftpressed ) override;
42   void enableActions() override;
43   /**
44    * quit this mode...
45    */
46   void abandonMacro();
47 
48   QPoint plc;
49   MacroWizard* mwizard;
50 
51   // we can't use a set for this because the order is important
52   std::vector<ObjectHolder*> mgiven;
53   std::vector<ObjectHolder*> mfinal;
54 };
55 
56 #endif
57