Engauge Digitizer  2
TutorialStateAbstractBase.h
1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #ifndef TUTORIAL_STATE_ABSTRACT_BASE_H
8 #define TUTORIAL_STATE_ABSTRACT_BASE_H
9 
10 #include <QObject>
11 
12 enum TutorialState {
13  TUTORIAL_STATE_AXIS_POINTS,
14  TUTORIAL_STATE_CHECKLIST_WIZARD_LINES,
15  TUTORIAL_STATE_CHECKLIST_WIZARD_POINTS,
16  TUTORIAL_STATE_COLOR_FILTER,
17  TUTORIAL_STATE_CURVE_SELECTION,
18  TUTORIAL_STATE_CURVE_TYPE,
19  TUTORIAL_STATE_INTRODUCTION,
20  TUTORIAL_STATE_POINT_MATCH,
21  TUTORIAL_STATE_SEGMENT_FILL,
22  NUM_TUTORIAL_STATES
23 };
24 
25 class QGraphicsPixmapItem;
26 class QGraphicsTextItem;
28 
30 class TutorialStateAbstractBase : public QObject
31 {
32  public:
35  virtual ~TutorialStateAbstractBase();
36 
38  virtual void begin () = 0;
39 
41  virtual void end () = 0;
42 
43  protected:
44 
46  int buttonMargin () const;
47 
50 
52  QGraphicsPixmapItem *createPixmapItem (const QString &resource,
53  const QPoint &pos);
54 
56  QGraphicsTextItem *createTextItem (const QString &text,
57  const QPoint &pos);
58 
60  QGraphicsTextItem *createTitle (const QString &text);
61 
62  private:
64 
65  TutorialStateContext &m_context;
66 };
67 
68 #endif // TUTORIAL_STATE_ABSTRACT_BASE_H
One state manages one panel of the tutorial.
virtual void end()=0
Transition out of this state.
TutorialStateContext & context()
Context class for the tutorial state machine.
QGraphicsTextItem * createTextItem(const QString &text, const QPoint &pos)
Factory method for text items.
QGraphicsTextItem * createTitle(const QString &text)
Factory method for title items.
QGraphicsPixmapItem * createPixmapItem(const QString &resource, const QPoint &pos)
Factory method for pixmap items.
virtual void begin()=0
Transition into this state.
Context class for tutorial state machine.
int buttonMargin() const
Buttons are placed up against bottom side, and left or right side, separated by this margin...