Engauge Digitizer  2
 All Classes Files Functions Variables Enumerations Enumerator Friends Pages
DigitizeStateContext.h
1 #ifndef DIGITIZE_STATE_CONTEXT_H
2 #define DIGITIZE_STATE_CONTEXT_H
3 
4 #include "DigitizeStateAbstractBase.h"
5 #include "PointStyle.h"
6 #include <QCursor>
7 #include <QGraphicsView>
8 #include <QObject>
9 #include <QVector>
10 
11 class CmdAbstractBase;
12 class CmdMediator;
15 class MainWindow;
16 class QUndoCommand;
17 
19 class DigitizeStateContext : public QObject
20 {
21  Q_OBJECT;
22 
23 public:
26  QGraphicsView &view,
27  bool isGnuplot);
28  virtual ~DigitizeStateContext ();
29 
31  QString activeCurve () const;
32 
34  void appendNewCmd(QUndoCommand *cmd);
35 
39 
42 
44  const CmdMediator &cmdMediator () const;
45 
47  void handleContextMenuEvent (const QString &pointIdentifier);
48 
50  void handleCurveChange ();
51 
53  void handleKeyPress (Qt::Key key,
54  bool atLeastOneSelectedItem);
55 
57  void handleLeave ();
58 
60  void handleMouseMove (QPointF pos);
61 
63  void handleMousePress (QPointF pos);
64 
66  void handleMouseRelease (QPointF pos);
67 
69  void handleSetOverrideCursor (const QCursor &cursor);
70 
72  bool isGnuplot () const;
73 
76 
78  const MainWindow &mainWindow () const;
79 
81  void requestDelayedStateTransition (DigitizeState digitizeState);
82 
84  void requestImmediateStateTransition (DigitizeState digitizeState);
85 
87  void setCursor ();
88 
90  void setDragMode (QGraphicsView::DragMode dragMode);
91 
93  void setImageIsLoaded (bool imageIsLoaded);
94 
96  QString state() const;
97 
99  void updateModelDigitizeCurve (const DocumentModelDigitizeCurve &modelDigitizeCurve);
100 
102  void updateModelSegments(const DocumentModelSegments &modelSegments);
103 
105  QGraphicsView &view();
106 
107 private:
109 
110  void completeRequestedStateTransitionIfExists ();
111 
112  MainWindow &m_mainWindow;
113  QGraphicsView &m_view;
114  bool m_imageIsLoaded; // Cursor and dragging can be affected by whether or not image is loaded
115 
116  QVector<DigitizeStateAbstractBase*> m_states;
117  DigitizeState m_currentState;
118  DigitizeState m_requestedState; // Same as m_currentState until requestDelayedStateTransition is called
119 
120  CmdMediator *m_cmdMediator;
121 
122  bool m_isGnuplot;
123 };
124 
125 #endif // DIGITIZE_STATE_CONTEXT_H
void requestDelayedStateTransition(DigitizeState digitizeState)
Initiate state transition to be performed later, when DigitizeState is off the stack.
void handleMouseMove(QPointF pos)
See DigitizeStateAbstractBase::handleMouseMove.
CmdMediator & cmdMediator()
Provide CmdMediator for indirect access to the Document.
void setDragMode(QGraphicsView::DragMode dragMode)
Set QGraphicsView drag mode (in m_view). Called from DigitizeStateAbstractBase subclasses.
void setImageIsLoaded(bool imageIsLoaded)
Set the image so QGraphicsView cursor and drag mode are accessible.
QString activeCurve() const
Curve name for active Curve. This can include AXIS_CURVE_NAME, and empty string.
void bindToCmdMediatorAndResetOnLoad(CmdMediator *cmdMediator)
Bind to CmdMediator class.
void updateModelDigitizeCurve(const DocumentModelDigitizeCurve &modelDigitizeCurve)
Update the digitize curve settings.
void handleContextMenuEvent(const QString &pointIdentifier)
See DigitizeStateAbstractBase::handleContextMenuEvent.
MainWindow & mainWindow()
Reference to the MainWindow, without const.
Model for DlgSettingsDigitizeCurve and CmdSettingsDigitizeCurve.
Container for all DigitizeStateAbstractBase subclasses. This functions as the context class in a stan...
void updateModelSegments(const DocumentModelSegments &modelSegments)
Update the segments given the new settings.
QString state() const
State name for debugging.
void requestImmediateStateTransition(DigitizeState digitizeState)
Perform immediate state transition. Called from outside state machine.
void handleLeave()
See DigitizeStateAbstractBase::handleLeave.
void appendNewCmd(QUndoCommand *cmd)
Append just-created QUndoCommand to command stack. This is called from DigitizeStateAbstractBase subc...
Command queue stack.
Definition: CmdMediator.h:16
Model for DlgSettingsSegments and CmdSettingsSegments.
bool isGnuplot() const
Get method for gnuplot flag.
void handleSetOverrideCursor(const QCursor &cursor)
See DigitizeStateAbstractBase::handleSetOverrideCursor.
QGraphicsView & view()
QGraphicsView for use by DigitizeStateAbstractBase subclasses.
void handleCurveChange()
See DigitizeStateAbstractBase::handleCurveChange.
void handleMouseRelease(QPointF pos)
See DigitizeStateAbstractBase::handleMouseRelease.
void handleKeyPress(Qt::Key key, bool atLeastOneSelectedItem)
See DigitizeStateAbstractBase::handleKeyPress.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition: MainWindow.h:60
void setCursor()
Set cursor after asking state for the new cursor shape.
void handleMousePress(QPointF pos)
See DigitizeStateAbstractBase::handleMousePress.