]> Shamusworld >> Repos - architektonas/blob - src/base/rs_actioninterface.h
Refactoring: Moved RS_GraphicView to GraphicView.
[architektonas] / src / base / rs_actioninterface.h
1 #ifndef RS_ACTIONINTERFACE_H
2 #define RS_ACTIONINTERFACE_H
3
4 #include <QtGui>
5 #include "rs_snapper.h"
6
7 class RS_CommandEvent;
8 class RS_Document;
9 class Drawing;
10 class RS_EntityContainer;
11 class GraphicView;
12 class Vector;
13
14 /**
15  * This is the interface that must be implemented for all
16  * action classes. Action classes handle actions such
17  * as drawing lines, moving entities or zooming in.
18  *
19  * Inherited from QObject for Qt translation features.
20  *
21  * @author Andrew Mustun
22  */
23 class RS_ActionInterface: public QObject, public RS_Snapper
24 {
25 //huh? no slots/signals here...    Q_OBJECT
26 //WHY derive from QObject???
27 //for the TR macro???
28 //mebbe...
29         public:
30                 RS_ActionInterface(const char * name, RS_EntityContainer & container,
31                         GraphicView & graphicView);
32                 virtual ~RS_ActionInterface();
33
34                 virtual RS2::ActionType rtti();
35                 QString getName();
36                 virtual void init(int status = 0);
37                 virtual void mouseMoveEvent(QMouseEvent *);
38                 virtual void mousePressEvent(QMouseEvent *);
39                 virtual void mouseReleaseEvent(QMouseEvent *);
40                 virtual void keyPressEvent(QKeyEvent * e);
41                 virtual void keyReleaseEvent(QKeyEvent * e);
42                 virtual void coordinateEvent(Vector *);
43                 virtual void commandEvent(RS_CommandEvent *);
44                 virtual QStringList getAvailableCommands();
45                 virtual void setStatus(int status);
46                 virtual int getStatus();
47                 virtual void trigger();
48                 virtual void updateMouseButtonHints();
49                 virtual void updateMouseCursor();
50                 virtual void updateToolBar();
51                 virtual bool isFinished();
52                 virtual void setFinished();
53                 virtual void finish();
54                 virtual void setPredecessor(RS_ActionInterface * pre);
55                 virtual void suspend();
56                 virtual void resume();
57                 virtual void hideOptions();
58                 virtual void showOptions();
59                 bool checkCommand(const QString & cmd, const QString & str,
60                         RS2::ActionType action = RS2::ActionNone);
61                 QString command(const QString & cmd);
62                 QString msgAvailableCommands();
63
64         private:
65                 /**
66                  * Current status of the action. After an action has
67                  * been created the action status is set to 0. Actions
68                  * that are terminated have a status of -1. Other status
69                  * numbers can be used to describe the stage this action
70                  * is in. E.g. a window zoom consists of selecting the
71                  * first corner (status 0), and selecting the second
72                  * corner (status 1).
73                  */
74                 int status;
75
76         protected:
77                 /** Action name. Used internally for debugging */
78                 QString name;
79
80                 /**
81                  * This flag is set when the action has terminated and
82                  * can be deleted.
83                  */
84                 bool finished;
85
86                 /**
87                  * Pointer to the graphic is this container is a graphic.
88                  * NULL otherwise
89                  */
90                 Drawing * graphic;
91
92                 /**
93                  * Pointer to the document (graphic or block) or NULL.
94                  */
95                 RS_Document * document;
96
97                 /**
98                  * Predecessor of this action or NULL.
99                  */
100                 RS_ActionInterface * predecessor;
101 };
102
103 #endif