00001
00002
00003
00004
00005
00006
00007 #ifndef DIGITIZE_STATE_CONTEXT_H
00008 #define DIGITIZE_STATE_CONTEXT_H
00009
00010 #include "DigitizeStateAbstractBase.h"
00011 #include "PointStyle.h"
00012 #include <QCursor>
00013 #include <QGraphicsView>
00014 #include <QObject>
00015 #include <QVector>
00016
00017 class CmdAbstractBase;
00018 class DocumentModelDigitizeCurve;
00019 class DocumentModelSegments;
00020 class MainWindow;
00021 class QUndoCommand;
00022
00024 class DigitizeStateContext : public QObject
00025 {
00026 Q_OBJECT;
00027
00028 public:
00030 DigitizeStateContext(MainWindow &mainWindow,
00031 QGraphicsView &view,
00032 bool isGnuplot);
00033 virtual ~DigitizeStateContext ();
00034
00036 QString activeCurve () const;
00037
00039 void appendNewCmd(CmdMediator *cmdMediator,
00040 QUndoCommand *cmd);
00041
00043 void handleContextMenuEvent (CmdMediator *cmdMediator,
00044 const QString &pointIdentifier);
00045
00047 void handleCurveChange (CmdMediator *cmdMediator);
00048
00050 void handleKeyPress (CmdMediator *cmdMediator,
00051 Qt::Key key,
00052 bool atLeastOneSelectedItem);
00053
00055 void handleLeave (CmdMediator *cmdMediator);
00056
00058 void handleMouseMove (CmdMediator *cmdMediator,
00059 QPointF pos);
00060
00062 void handleMousePress (CmdMediator *cmdMediator,
00063 QPointF pos);
00064
00066 void handleMouseRelease (CmdMediator *cmdMediator,
00067 QPointF pos);
00068
00070 void handleSetOverrideCursor (CmdMediator *cmdMediator,
00071 const QCursor &cursor);
00072
00074 bool isGnuplot () const;
00075
00077 MainWindow &mainWindow ();
00078
00080 const MainWindow &mainWindow () const;
00081
00083 void requestDelayedStateTransition (DigitizeState digitizeState);
00084
00086 void requestImmediateStateTransition (CmdMediator *cmdMediator,
00087 DigitizeState digitizeState);
00088
00090 void resetOnLoad (CmdMediator *cmdMediator);
00091
00093 void setCursor (CmdMediator *cmdMediator);
00094
00096 void setDragMode (QGraphicsView::DragMode dragMode);
00097
00099 void setImageIsLoaded (CmdMediator *cmdMediator,
00100 bool imageIsLoaded);
00101
00103 QString state() const;
00104
00106 void updateModelDigitizeCurve (CmdMediator *cmdMediator,
00107 const DocumentModelDigitizeCurve &modelDigitizeCurve);
00108
00110 void updateModelSegments(const DocumentModelSegments &modelSegments);
00111
00113 QGraphicsView &view();
00114
00115 private:
00116 DigitizeStateContext();
00117
00118 void completeRequestedStateTransitionIfExists (CmdMediator *cmdMediator);
00119
00120 MainWindow &m_mainWindow;
00121 QGraphicsView &m_view;
00122 bool m_imageIsLoaded;
00123
00124 QVector<DigitizeStateAbstractBase*> m_states;
00125 DigitizeState m_currentState;
00126 DigitizeState m_requestedState;
00127
00128 bool m_isGnuplot;
00129 };
00130
00131 #endif // DIGITIZE_STATE_CONTEXT_H