void ScalePicker::selectTitle(QwtScaleWidget *scale, bool select) { if (!scale) return; if (d_title_selected == select && d_selected_axis == scale) return; Graph *g = plot(); g->deselect(); d_title_selected = select; d_selected_axis = scale; d_labels_selected = false; QwtText title = scale->title(); if (select){ title.setBackgroundPen(QPen(Qt::blue)); g->notifyFontChange(title.font()); g->notifyColorChange(title.color()); } else title.setBackgroundPen(QPen(Qt::NoPen)); scale->setTitle(title); }
void TitlePicker::setSelected(bool select) { if (!title || d_selected == select) return; d_selected = select; QwtText text = title->text(); if (select) text.setBackgroundPen(QPen(Qt::blue)); else text.setBackgroundPen(QPen(Qt::NoPen)); (static_cast<QwtPlot *>(parent()))->setTitle(text); }
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(); }
void ScaleDraw::drawLabel(QPainter *painter, double value) const { if (!d_plot) return; ScaleEngine *sc_engine = (ScaleEngine *)d_plot->axisScaleEngine(axis()); /*QwtScaleEngine *qwtsc_engine=d_plot->axisScaleEngine(axis()); ScaleEngine *sc_engine =dynamic_cast< ScaleEngine*>(qwtsc_engine); if(sc_engine!=NULL) {*/ if (sc_engine->hasBreak()){ bool invertedScale = sc_engine->testAttribute(QwtScaleEngine::Inverted); if (invertedScale && sc_engine->axisBreakRight() == value) return; if (!invertedScale && sc_engine->axisBreakLeft() == value) return; } //} QwtText lbl = tickLabel(painter->font(), value); if (lbl.isEmpty()) return; const QPoint pos = labelPosition(value); QSize labelSize = lbl.textSize(painter->font()); if ( labelSize.height() % 2 ) labelSize.setHeight(labelSize.height() + 1); const QMatrix m = labelMatrix(pos, labelSize); painter->save(); painter->setMatrix(m, true); if (d_selected) lbl.setBackgroundPen(QPen(Qt::blue)); else lbl.setBackgroundPen(QPen(Qt::NoPen)); lbl.draw(painter, QRect(QPoint(0, 0), labelSize)); painter->restore(); }
void ScalePicker::deselect() { if (!d_selected_axis) return; d_title_selected = false; d_labels_selected = false; QwtText title = d_selected_axis->title(); title.setBackgroundPen(QPen(Qt::NoPen)); d_selected_axis->setTitle(title); ScaleDraw *sc_draw = static_cast<ScaleDraw *>(d_selected_axis->scaleDraw()); sc_draw->setSelected(false); d_selected_axis->repaint(); d_selected_axis = nullptr; }
void ScalePicker::deselect() { if (!d_selected_axis) return; d_title_selected = false; d_labels_selected = false; QwtText title = d_selected_axis->title(); title.setBackgroundPen(QPen(Qt::NoPen)); d_selected_axis->setTitle(title); /* ScaleDraw *sc_draw = (ScaleDraw *)d_selected_axis->scaleDraw(); sc_draw->setSelected(false); */ d_selected_axis->repaint(); d_selected_axis = NULL; }
void ScaleDraw::drawLabel(QPainter *painter, double value) const { if (!d_plot) return; ScaleEngine *sc_engine = (ScaleEngine *)d_plot->axisScaleEngine(axis()); if (sc_engine->hasBreak() && sc_engine->axisBreakLeft() <= value && sc_engine->axisBreakRight() > value) return; QwtValueList majTicks = scaleDiv().ticks(QwtScaleDiv::MajorTick); if (majTicks.contains(value)){ switch (d_show_ticks_policy){ case ShowAll: break; case HideBegin: if (majTicks.first() == value) return; break; case HideEnd: if (majTicks.last() == value) return; break; case HideBeginEnd: if (majTicks.first() == value || majTicks.last() == value) return; break; } } QwtText lbl = tickLabel(painter->font(), value); if ( lbl.isEmpty() ) return; QPoint pos = labelPosition(value); QSize labelSize = lbl.textSize(painter->font()); if ( labelSize.height() % 2 ) labelSize.setHeight(labelSize.height() + 1); const QwtMetricsMap metricsMap = QwtPainter::metricsMap(); QwtPainter::resetMetricsMap(); labelSize = metricsMap.layoutToDevice(labelSize); pos = metricsMap.layoutToDevice(pos); painter->save(); painter->setMatrix(labelMatrix( pos, labelSize), true); if (d_selected) lbl.setBackgroundPen(QPen(Qt::blue)); else lbl.setBackgroundPen(QPen(Qt::NoPen)); lbl.setRenderFlags(labelAlignment()); lbl.draw (painter, QRect(QPoint(0, 0), labelSize) ); QwtPainter::setMetricsMap(metricsMap); // restore metrics map painter->restore(); }
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(); }