Exemplo n.º 1
0
bool CanvasPicker::selectMarker(const QMouseEvent *e)
{
	Graph *g = plot();
	const QPoint point = e->pos();
	QList<QwtPlotMarker *> lines = g->linesList();
	foreach(QwtPlotMarker *i, lines){
		ArrowMarker* mrkL = (ArrowMarker*)i;
		int d = qRound(mrkL->width() + floor(mrkL->headLength()*tan(M_PI*mrkL->headAngle()/180.0)+0.5));
		double dist = mrkL->dist(point.x(), point.y());
		if (dist <= d){
			disableEditing();
			if (e->modifiers() & Qt::ShiftModifier) {
				plot()->setSelectedMarker(i, true);
				return true;
			} else if (e->button() == Qt::RightButton) {
				mrkL->setEditable(false);
				g->setSelectedMarker(i, true);
				return true;
			}
			g->deselectMarker();
			mrkL->setEditable(true);
			g->setSelectedMarker(i, false);
			d_editing_marker = mrkL;
			return true;
		}
	}