00001
00002
00003
00004
00005
00006
00007 #include "CmdAddPointAxis.h"
00008 #include "CmdMediator.h"
00009 #include "CursorFactory.h"
00010 #include "DigitizeStateAxis.h"
00011 #include "DigitizeStateContext.h"
00012 #include "DlgEditPointAxis.h"
00013 #include "Document.h"
00014 #include "GraphicsScene.h"
00015 #include "GraphicsView.h"
00016 #include "Logger.h"
00017 #include "MainWindow.h"
00018 #include "PointStyle.h"
00019 #include <QCursor>
00020 #include <QImage>
00021 #include <QMessageBox>
00022 #include <QTimer>
00023
00024 DigitizeStateAxis::DigitizeStateAxis (DigitizeStateContext &context) :
00025 DigitizeStateAbstractBase (context)
00026 {
00027 }
00028
00029 DigitizeStateAxis::~DigitizeStateAxis ()
00030 {
00031 }
00032
00033 QString DigitizeStateAxis::activeCurve () const
00034 {
00035 return AXIS_CURVE_NAME;
00036 }
00037
00038 void DigitizeStateAxis::begin (CmdMediator *cmdMediator,
00039 DigitizeState )
00040 {
00041 LOG4CPP_INFO_S ((*mainCat)) << "DigitizeStateAxis::begin";
00042
00043 setCursor(cmdMediator);
00044 context().setDragMode(QGraphicsView::NoDrag);
00045 context().mainWindow().updateViewsOfSettings(activeCurve ());
00046 }
00047
00048 void DigitizeStateAxis::createTemporaryPoint (CmdMediator *cmdMediator,
00049 const QPointF &posScreen)
00050 {
00051 LOG4CPP_DEBUG_S ((*mainCat)) << "DigitizeStateAxis::createTemporaryPoint";
00052
00053 GeometryWindow *NULL_GEOMETRY_WINDOW = 0;
00054
00055
00056 const Curve &curveAxes = cmdMediator->curveAxes();
00057 PointStyle pointStyleAxes = curveAxes.curveStyle().pointStyle();
00058 GraphicsPoint *point = context().mainWindow().scene().createPoint(Point::temporaryPointIdentifier (),
00059 pointStyleAxes,
00060 posScreen,
00061 NULL_GEOMETRY_WINDOW);
00062
00063 context().mainWindow().scene().addTemporaryPoint (Point::temporaryPointIdentifier(),
00064 point);
00065 }
00066
00067 QCursor DigitizeStateAxis::cursor(CmdMediator *cmdMediator) const
00068 {
00069 LOG4CPP_DEBUG_S ((*mainCat)) << "DigitizeStateAxis::cursor";
00070
00071 CursorFactory cursorFactory;
00072 QCursor cursor = cursorFactory.generate (cmdMediator->document().modelDigitizeCurve());
00073
00074 return cursor;
00075 }
00076
00077 void DigitizeStateAxis::end ()
00078 {
00079 LOG4CPP_INFO_S ((*mainCat)) << "DigitizeStateAxis::end";
00080 }
00081
00082 void DigitizeStateAxis::handleContextMenuEventAxis (CmdMediator * ,
00083 const QString &pointIdentifier)
00084 {
00085 LOG4CPP_INFO_S ((*mainCat)) << "DigitizeStateAxis::handleContextMenuEventAxis "
00086 << " point=" << pointIdentifier.toLatin1 ().data ();
00087 }
00088
00089 void DigitizeStateAxis::handleContextMenuEventGraph (CmdMediator * ,
00090 const QStringList &pointIdentifiers)
00091 {
00092 LOG4CPP_INFO_S ((*mainCat)) << "DigitizeStateAxis::handleContextMenuEventGraph "
00093 << "points=" << pointIdentifiers.join(",").toLatin1 ().data ();
00094 }
00095
00096 void DigitizeStateAxis::handleCurveChange(CmdMediator * )
00097 {
00098 LOG4CPP_INFO_S ((*mainCat)) << "DigitizeStateAxis::handleCurveChange";
00099 }
00100
00101 void DigitizeStateAxis::handleKeyPress (CmdMediator * ,
00102 Qt::Key key,
00103 bool )
00104 {
00105 LOG4CPP_INFO_S ((*mainCat)) << "DigitizeStateAxis::handleKeyPress"
00106 << " key=" << QKeySequence (key).toString ().toLatin1 ().data ();
00107 }
00108
00109 void DigitizeStateAxis::handleMouseMove (CmdMediator * ,
00110 QPointF )
00111 {
00112
00113 }
00114
00115 void DigitizeStateAxis::handleMousePress (CmdMediator * ,
00116 QPointF )
00117 {
00118 LOG4CPP_INFO_S ((*mainCat)) << "DigitizeStateAxis::handleMousePress";
00119 }
00120
00121 void DigitizeStateAxis::handleMouseRelease (CmdMediator *cmdMediator,
00122 QPointF posScreen)
00123 {
00124 LOG4CPP_INFO_S ((*mainCat)) << "DigitizeStateAxis::handleMouseRelease";
00125
00126 if (context().mainWindow().transformIsDefined()) {
00127
00128 QMessageBox::warning (0,
00129 QObject::tr ("Engauge Digitizer"),
00130 QObject::tr ("Three axis points have been defined, and no more are needed or allowed."));
00131
00132 } else {
00133
00134 createTemporaryPoint (cmdMediator,
00135 posScreen);
00136
00137
00138 DlgEditPointAxis *dlg = new DlgEditPointAxis (context ().mainWindow (),
00139 cmdMediator->document().modelCoords(),
00140 cmdMediator->document().modelGeneral(),
00141 context().mainWindow().modelMainWindow(),
00142 context().mainWindow().transformation(),
00143 cmdMediator->document().documentAxesPointsRequired());
00144 int rtn = dlg->exec ();
00145
00146 bool isXOnly;
00147 QPointF posGraph = dlg->posGraph (isXOnly);
00148 delete dlg;
00149
00150
00151 context().mainWindow().scene().removePoint(Point::temporaryPointIdentifier ());
00152
00153 if (rtn == QDialog::Accepted) {
00154
00155
00156
00157 bool isError;
00158 QString errorMessage;
00159 int nextOrdinal = cmdMediator->document().nextOrdinalForCurve(AXIS_CURVE_NAME);
00160
00161 cmdMediator->document().checkAddPointAxis(posScreen,
00162 posGraph,
00163 isError,
00164 errorMessage,
00165 isXOnly);
00166
00167 if (isError) {
00168
00169 QMessageBox::warning (0,
00170 QObject::tr ("Engauge Digitizer"),
00171 errorMessage);
00172
00173 } else {
00174
00175
00176 Document &document = cmdMediator->document ();
00177 QUndoCommand *cmd = new CmdAddPointAxis (context ().mainWindow(),
00178 document,
00179 posScreen,
00180 posGraph,
00181 nextOrdinal,
00182 isXOnly);
00183 context().appendNewCmd(cmdMediator,
00184 cmd);
00185 }
00186 }
00187 }
00188 }
00189
00190 QString DigitizeStateAxis::state() const
00191 {
00192 return "DigitizeStateAxis";
00193 }
00194
00195 void DigitizeStateAxis::updateAfterPointAddition ()
00196 {
00197 LOG4CPP_INFO_S ((*mainCat)) << "DigitizeStateAxis::updateAfterPointAddition";
00198 }
00199
00200 void DigitizeStateAxis::updateModelDigitizeCurve (CmdMediator *cmdMediator,
00201 const DocumentModelDigitizeCurve & )
00202 {
00203 LOG4CPP_INFO_S ((*mainCat)) << "DigitizeStateAxis::updateModelDigitizeCurve";
00204
00205 setCursor(cmdMediator);
00206 }
00207
00208 void DigitizeStateAxis::updateModelSegments(const DocumentModelSegments & )
00209 {
00210 LOG4CPP_INFO_S ((*mainCat)) << "DigitizeStateAxis::updateModelSegments";
00211 }