EX> // Balises C++, évitant les doublons d'includes CM> #ifndef {{CODE_UPPER}}_ACTION{{NAME_UPPER}}_H CM> #define {{CODE_UPPER}}_ACTION{{NAME_UPPER}}_H CM> EX> // Inclusion de la classe pour la vue correspondant à l'action (interface) CM> #include "views/actions/{{CODE_LOWER}}_action{{NAME_LOWER}}options.h" EX> EX> // Inclusion de la classe parente des actions en mode graphique CM> #include "ctlibaction/ct_actions/abstract/ct_abstractactionforgraphicsview.h" CM> EX> // Inclusion des classes Qt nécessaires CM> #include CM> #include CM> #include CM> #include CM> EX> // Inclure ensuite les éventuelles classes de définitions nécessaires à votre étape CM> #include "ct_itemdrawable/ct_pointcluster.h" CM> CM> /*! CM> * \class {{CODE_UPPER}}_Action{{NAME}} CM> * \ingroup Steps_{{CODE_UPPER}} CM> * CM> * \brief Cette classe créée une action en mode graphique pour {{NAME}} CM> * CM> */ CM> EX> // Une action doit hériter de CT_AbstractActionForGraphicsView (ou d'une classe abstraite d'action) CM> class {{CODE_UPPER}}_Action{{NAME}} : public CT_AbstractActionForGraphicsView CM> { EX> // Macro Qt, donnant accès à certaines fonctionnalités EX> // En l'occurence, permet de récupérer le nom de l'étape CM> Q_OBJECT CM> CM> public: EX> // Conteneur d'échange d'information entre l'étape et l'action CM> class {{CODE_UPPER}}_Action{{NAME}}_dataContainer CM> { CM> public: CM> {{CODE_UPPER}}_Action{{NAME}}_dataContainer(); EX> EX> // On peut définir ici toutes les données nécessaires EX> QList* _sceneList; EX> double _limitBuffer; CM> }; CM> EX> // Constructeur/destructeur de l'étape CM> {{CODE_UPPER}}_Action{{NAME}}({{CODE_UPPER}}_Action{{NAME}}_dataContainer* dataContainer); CM> ~{{CODE_UPPER}}_Action{{NAME}}(); CM> EX> // Méthodes caractéristiques de l'actions CM> QString uniqueName() const; CM> QString title() const; CM> QString description() const; CM> QIcon icon() const; CM> QString type() const; CM> EX> // Initialisation lors de la création CM> void init(); CM> EX> // Méthodes pour l'intéraction CM> bool mousePressEvent (QMouseEvent *e); CM> bool mouseMoveEvent (QMouseEvent *e); CM> bool mouseReleaseEvent(QMouseEvent *e); CM> bool wheelEvent (QWheelEvent *e); CM> bool keyPressEvent (QKeyEvent *e); CM> bool keyReleaseEvent (QKeyEvent *e); CM> CM> void draw (GraphicsViewInterface &view, PainterInterface &painter); CM> void drawOverlay(GraphicsViewInterface &view, QPainter &painter); CM> EX> // Méthode de copie de l'action CM> CT_AbstractAction* createInstance() const; CM> CM> public slots: EX> // Lorsqu'on agit avec le rendu, il faut parfois le mettre à jour, via ce slot CM> void update(); CM> CM> private: EX> // Dans la zone privée : les paramètres de l'étapes (initialisés dans le constructeur) CM> {{CODE_UPPER}}_Action{{NAME}}_dataContainer* _dataContainer; CM> }; CM> CM> #endif // {{CODE_UPPER}}_ACTION{{NAME_UPPER}}_H