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); }
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(); }
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; }
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(); }