예제 #1
0
void ScalePicker::determinePosition(const QPoint &pos, int coord)
{
  QwtScaleWidget *scale = static_cast<QwtScaleWidget *>(this->parent());
  QRect rect = this->scaleRect(scale);
  QPoint shiftPt;
  if (coord == 0)
  {
    if (QwtScaleDraw::LeftScale == scale->alignment())
    {
      shiftPt.setX(rect.right());
      shiftPt.setY(pos.y());
    }
    if (QwtScaleDraw::RightScale == scale->alignment())
    {
      shiftPt.setX(rect.left());
      shiftPt.setY(pos.y());
    }
  }
  if (coord == 1)
  {
    if (QwtScaleDraw::TopScale == scale->alignment())
    {
      shiftPt.setX(pos.x());
      shiftPt.setY(rect.bottom());
    }
    if (QwtScaleDraw::BottomScale == scale->alignment())
    {
      shiftPt.setX(pos.x());
      shiftPt.setY(rect.top());
    }
  }
  this->mouseClicked(scale, shiftPt, false);
}
예제 #2
0
파일: TextEditor.cpp 프로젝트: dezed/mantid
TextEditor::TextEditor(Graph *g): QTextEdit(g), d_target(NULL)
{
	setAttribute(Qt::WA_DeleteOnClose);
	setFrameShadow(QFrame::Plain);
	setFrameShape(QFrame::Box);
	setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
	setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

	QPalette palette = this->palette();
	palette.setColor(QPalette::Active, QPalette::WindowText, Qt::blue);
	palette.setColor(QPalette::Active, QPalette::Base, Qt::white);
	setPalette(palette);

	QString text;
	if (g->selectedText()){
		d_target = g->selectedText();
		setGeometry(d_target->geometry());
    auto legend = dynamic_cast<LegendWidget*>(d_target);
		text = legend ? legend->text() : "";
		d_target->hide();
	} else if (g->titleSelected()){
		d_target = g->plotWidget()->titleLabel();
		QwtText t = g->plotWidget()->title();
		text = t.text();
		setAlignment((Qt::Alignment)t.renderFlags());
		setGeometry(d_target->geometry());
	} else if (g->selectedScale()){
		d_target = g->selectedScale();
		QwtScaleWidget *scale = (QwtScaleWidget*)d_target;
		QwtText t = scale->title();
		text = t.text();
		setAlignment((Qt::Alignment)t.renderFlags());

		QRect rect = g->axisTitleRect(scale);
		if (scale->alignment() == QwtScaleDraw::BottomScale ||
			scale->alignment() == QwtScaleDraw::TopScale){
			resize(rect.size());
			move(QPoint(d_target->x() + rect.x(), d_target->y() + rect.y()));
		} else {
			resize(QSize(rect.height(), rect.width()));
			if (scale->alignment() == QwtScaleDraw::LeftScale)
                move(QPoint(d_target->x() + rect.x(), d_target->y() + rect.y() + rect.height()/2));
            else if (scale->alignment() == QwtScaleDraw::RightScale)
                move(QPoint(d_target->x() - rect.height(), d_target->y() + rect.y() + rect.height()/2));

			t.setText(" ");
			t.setBackgroundPen(QPen(Qt::NoPen));
			scale->setTitle(t);
		}
	}

	QTextCursor cursor = textCursor();
	cursor.insertText(text);
	d_initial_text = text;

	show();
	setFocus();
}
예제 #3
0
QPoint *ScalePicker::getLocation(double axisval)
{
  QwtScaleWidget *scale = static_cast<QwtScaleWidget *>(this->parent());
  const QwtScaleDraw *sd = scale->scaleDraw();

  QRect rect = this->scaleRect(scale);

  int margin = 10; // 10 pixels tolerance
  rect.setRect(rect.x() - margin, rect.y() - margin,
  rect.width() + 2 * margin, rect.height() +  2 * margin);

  int point = sd->map().transform(axisval);
  QPoint *pos = new QPoint();

  switch(scale->alignment())
  {
  case QwtScaleDraw::LeftScale:
  {
    pos->setX(rect.x());
    pos->setY(point);
    break;
  }
  case QwtScaleDraw::RightScale:
  {
    pos->setX(rect.x());
    pos->setY(point);
    break;
  }
  case QwtScaleDraw::BottomScale:
  {
    pos->setX(point);
    pos->setY(rect.y());
    break;
  }
  case QwtScaleDraw::TopScale:
  {
    pos->setX(point);
    pos->setY(rect.y());
    break;
  }
  }
  return pos;
}
예제 #4
0
TextEditor::TextEditor(Graph *g): QTextEdit(g), d_graph(g)
{
	setAttribute(Qt::WA_DeleteOnClose);
	setFrameShadow(QFrame::Plain);
	setFrameShape(QFrame::Box);
	setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
	setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

	QPalette palette = this->palette();
	palette.setColor(QPalette::Active, QPalette::WindowText, Qt::blue);
	palette.setColor(QPalette::Active, QPalette::Base, Qt::white);
	setPalette(palette);

	bool moveCrs = true;
	QString text;
	if (g->activeText()){
		setParent(g->multiLayer()->canvas());
		d_target = g->activeText();
		setGeometry(d_target->geometry());
		text = ((LegendWidget*)d_target)->text();
		d_target->hide();
		setFont(((LegendWidget*)d_target)->font());
	} else if (g->titleSelected()){
		d_target = g->titleLabel();
		QwtText t = g->title();
		text = t.text();
		setAlignment((Qt::Alignment)t.renderFlags());
		setFont(t.font());
		setGeometry(d_target->geometry());
	} else if (g->selectedScale()){
		d_target = g->selectedScale();
		QwtScaleWidget *scale = (QwtScaleWidget*)d_target;
		QwtText t = scale->title();
		text = t.text();
		setAlignment((Qt::Alignment)t.renderFlags());
		setFont(t.font());

		QRect rect = g->axisTitleRect(scale);
		if (scale->alignment() == QwtScaleDraw::BottomScale ||
			scale->alignment() == QwtScaleDraw::TopScale){
			resize(rect.size());
			move(QPoint(d_target->x() + rect.x(), d_target->y() + rect.y()));
		} else {
			resize(QSize(rect.height(), rect.width()));
			if (scale->alignment() == QwtScaleDraw::LeftScale)
                move(QPoint(d_target->x() + rect.x(), d_target->y() + rect.y() + rect.height()/2));
            else if (scale->alignment() == QwtScaleDraw::RightScale)
                move(QPoint(d_target->x() - rect.height(), d_target->y() + rect.y() + rect.height()/2));

			t.setText(" ");
			t.setBackgroundPen(QPen(Qt::NoPen));
			scale->setTitle(t);
			moveCrs = false;
		}
	}

	QTextCursor cursor = textCursor();
	cursor.insertText(text);
	d_initial_text = text;

	setWordWrapMode (QTextOption::NoWrap);
	setAlignment(Qt::AlignCenter);

	QTextFrame *frame = document()->rootFrame();
	QTextFrameFormat format = frame->frameFormat();
	format.setTopMargin(format.topMargin () + 3);
	frame->setFrameFormat(format);
	show();

	if (moveCrs)
		setTextCursor(cursorForPosition(mapFromGlobal(QCursor::pos())));
	setFocus();
}