Engauge Digitizer  2
TutorialStatePointMatch.cpp
Go to the documentation of this file.
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 #include "Logger.h"
8 #include <qdebug.h>
9 #include <QGraphicsPixmapItem>
10 #include <QGraphicsScene>
11 #include <QGraphicsView>
12 #include "TutorialButton.h"
13 #include "TutorialDlg.h"
14 #include "TutorialStateContext.h"
16 
18  TutorialStateAbstractBase (context),
19  m_title (nullptr),
20  m_background (nullptr),
21  m_text0 (nullptr),
22  m_text1 (nullptr),
23  m_text2 (nullptr),
24  m_text3 (nullptr),
25  m_previous (nullptr),
26  m_next (nullptr)
27 {
28  LOG4CPP_INFO_S ((*mainCat)) << "TutorialStatePointMatch::TutorialStatePointMatch";
29 }
30 
32 {
33  LOG4CPP_INFO_S ((*mainCat)) << "TutorialStatePointMatch::begin ()";
34 
35  context().tutorialDlg().scene().clear ();
36 
37  m_title = createTitle (tr ("Point Match"));
38  m_background = createPixmapItem (":/engauge/img/panel_point_match.png",
39  QPoint (0, 30));
40  m_text0 = createTextItem (tr ("In Point Match mode, you pick\n"
41  "one sample point, and Engauge\n"
42  "then finds all matching points.\n\n"
43  "Step 1 - Click on Point Match mode."),
44  QPoint (300, 40));
45  m_text1 = createTextItem (tr ("Step 2 - Select the curve the new\n"
46  "points will belong to."),
47  QPoint (320, 140));
48  m_text2 = createTextItem (tr ("Step 3 - Click on a typical point.\n"
49  "The circle turns green when it\n"
50  "contains what may be a point."),
51  QPoint (320, 200));
52  m_text3 = createTextItem (tr ("Step 4 - Engauge will show a\n"
53  "matched point with a yellow cross.\n"
54  "Press the Right Arrow key to accept\n"
55  "the matched point. Repeat this step\n"
56  "until there are no more points."),
57  QPoint (320, 270));
58 
59  QSize backgroundSize = context().tutorialDlg().backgroundSize();
60 
61  m_previous = new TutorialButton (tr ("Previous"),
62  context().tutorialDlg().scene());
63  m_previous->setGeometry (QPoint (buttonMargin (),
64  backgroundSize.height() - buttonMargin() - m_previous->size().height()));
65  connect (m_previous, SIGNAL (signalTriggered ()), this, SLOT (slotPrevious ()));
66 
67  m_next = new TutorialButton (tr ("Next"),
68  context().tutorialDlg().scene());
69  m_next->setGeometry (QPoint (backgroundSize.width () - buttonMargin () - m_next->size ().width (),
70  backgroundSize.height () - buttonMargin () - m_next->size ().height ()));
71  connect (m_next, SIGNAL (signalTriggered ()), this, SLOT (slotNext ()));
72 }
73 
75 {
76  LOG4CPP_INFO_S ((*mainCat)) << "TutorialStatePointMatch::end ()";
77 
78  // It is not safe to remove and deallocate items here since an active TutorialButton
79  // may be on the stack. So we clear the scene as the first step in the next begin()
80 }
81 
83 {
84  LOG4CPP_INFO_S ((*mainCat)) << "TutorialStatePointMatch::slotNext";
85 
87 }
88 
90 {
91  LOG4CPP_INFO_S ((*mainCat)) << "TutorialStatePointMatch::slotPrevious";
92 
94 }
One state manages one panel of the tutorial.
QSize size() const
Size of this button.
void setGeometry(const QPoint &pos)
Set the position. This is called after creation so screen extent is available for positioning calcula...
Show a button with text for clicking ion. The button is implemented using layering of two graphics it...
virtual void begin()
Transition into this state.
#define LOG4CPP_INFO_S(logger)
Definition: convenience.h:18
QGraphicsScene & scene()
Single scene the covers the entire tutorial dialog.
Definition: TutorialDlg.cpp:76
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.
QSize backgroundSize() const
Make geometry available for layout.
Definition: TutorialDlg.cpp:44
virtual void end()
Transition out of this state.
log4cpp::Category * mainCat
Definition: Logger.cpp:14
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...
void requestDelayedStateTransition(TutorialState tutorialState)
Request a transition to the specified state from the current state.
TutorialStatePointMatch(TutorialStateContext &context)
Single constructor.
void slotNext()
Slot called when next button is triggered.
TutorialDlg & tutorialDlg()
Access to tutorial dialogs and its scene.
void slotPrevious()
Slot called to return to previous panel.