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 MainWindowModel;
00022 class QUndoCommand;
00023
00025 class DigitizeStateContext : public QObject
00026 {
00027 Q_OBJECT;
00028
00029 public:
00031 DigitizeStateContext(MainWindow &mainWindow,
00032 QGraphicsView &view,
00033 bool isGnuplot);
00034 virtual ~DigitizeStateContext ();
00035
00037 QString activeCurve () const;
00038
00040 void appendNewCmd(CmdMediator *cmdMediator,
00041 QUndoCommand *cmd);
00042
00044 void handleContextMenuEventAxis (CmdMediator *cmdMediator,
00045 const QString &pointIdentifier);
00046
00048 void handleContextMenuEventGraph (CmdMediator *cmdMediator,
00049 const QStringList &pointIdentifiers);
00050
00052 void handleCurveChange (CmdMediator *cmdMediator);
00053
00055 void handleKeyPress (CmdMediator *cmdMediator,
00056 Qt::Key key,
00057 bool atLeastOneSelectedItem);
00058
00060 void handleMouseMove (CmdMediator *cmdMediator,
00061 QPointF pos);
00062
00064 void handleMousePress (CmdMediator *cmdMediator,
00065 QPointF pos);
00066
00068 void handleMouseRelease (CmdMediator *cmdMediator,
00069 QPointF pos);
00070
00072 bool isGnuplot () const;
00073
00075 MainWindow &mainWindow ();
00076
00078 const MainWindow &mainWindow () const;
00079
00081 void requestDelayedStateTransition (DigitizeState digitizeState);
00082
00084 void requestImmediateStateTransition (CmdMediator *cmdMediator,
00085 DigitizeState digitizeState);
00086
00088 void resetOnLoad (CmdMediator *cmdMediator);
00089
00091 void setCursor (CmdMediator *cmdMediator);
00092
00094 void setDragMode (QGraphicsView::DragMode dragMode);
00095
00097 void setImageIsLoaded (CmdMediator *cmdMediator,
00098 bool imageIsLoaded);
00099
00101 QString state() const;
00102
00104 void updateAfterPointAddition ();
00105
00107 void updateModelDigitizeCurve (CmdMediator *cmdMediator,
00108 const DocumentModelDigitizeCurve &modelDigitizeCurve);
00109
00111 void updateModelSegments(const DocumentModelSegments &modelSegments);
00112
00114 QGraphicsView &view();
00115
00116 private:
00117 DigitizeStateContext();
00118
00119 void completeRequestedStateTransitionIfExists (CmdMediator *cmdMediator);
00120
00121 MainWindow &m_mainWindow;
00122 QGraphicsView &m_view;
00123 bool m_imageIsLoaded;
00124
00125 QVector<DigitizeStateAbstractBase*> m_states;
00126 DigitizeState m_currentState;
00127 DigitizeState m_requestedState;
00128
00129 bool m_isGnuplot;
00130 };
00131
00132 #endif // DIGITIZE_STATE_CONTEXT_H