##// END OF EJS Templates
Adds title and close items in plot overlay
Alexandre Leroux -
r667:29f9f4126213
parent child
Show More
@@ -4,10 +4,15
4
4
5 #include <Common/DateUtils.h>
5 #include <Common/DateUtils.h>
6
6
7 #include <SqpApplication.h>
8
7 namespace {
9 namespace {
8
10
9 const auto DATETIME_FORMAT = QStringLiteral("yyyy/MM/dd hh:mm:ss:zzz");
11 const auto DATETIME_FORMAT = QStringLiteral("yyyy/MM/dd hh:mm:ss:zzz");
10
12
13 /// Name of the overlay layer in QCustomPlot
14 const auto OVERLAY_LAYER = QStringLiteral("overlay");
15
11 const auto TOOLTIP_FORMAT = QStringLiteral("key: %1\nvalue: %2");
16 const auto TOOLTIP_FORMAT = QStringLiteral("key: %1\nvalue: %2");
12
17
13 /// Offset used to shift the tooltip of the mouse
18 /// Offset used to shift the tooltip of the mouse
@@ -40,6 +45,33 void initPointTracerStyle(QCPItemTracer &tracer) noexcept
40 tracer.setBrush(Qt::black);
45 tracer.setBrush(Qt::black);
41 }
46 }
42
47
48 void initClosePixmapStyle(QCPItemPixmap &pixmap) noexcept
49 {
50 // Icon
51 pixmap.setPixmap(
52 sqpApp->style()->standardIcon(QStyle::SP_TitleBarCloseButton).pixmap(QSize{16, 16}));
53
54 // Position
55 pixmap.topLeft->setType(QCPItemPosition::ptAxisRectRatio);
56 pixmap.topLeft->setCoords(1, 0);
57 pixmap.setClipToAxisRect(false);
58
59 // Can be selected
60 pixmap.setSelectable(true);
61 }
62
63 void initTitleTextStyle(QCPItemText &text) noexcept
64 {
65 // Font and background styles
66 text.setColor(Qt::gray);
67 text.setBrush(Qt::white);
68
69 // Position
70 text.setPositionAlignment(Qt::AlignTop | Qt::AlignLeft);
71 text.position->setType(QCPItemPosition::ptAxisRectRatio);
72 text.position->setCoords(0.5, 0);
73 }
74
43 } // namespace
75 } // namespace
44
76
45 struct VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegatePrivate {
77 struct VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegatePrivate {
@@ -47,16 +79,28 struct VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegateP
47 : m_Plot{graphWidget.plot()},
79 : m_Plot{graphWidget.plot()},
48 m_PointTracer{new QCPItemTracer{&m_Plot}},
80 m_PointTracer{new QCPItemTracer{&m_Plot}},
49 m_TracerTimer{},
81 m_TracerTimer{},
82 m_ClosePixmap{new QCPItemPixmap{&m_Plot}},
83 m_TitleText{new QCPItemText{&m_Plot}}
50 {
84 {
51 initPointTracerStyle(*m_PointTracer);
85 initPointTracerStyle(*m_PointTracer);
52
86
53 m_TracerTimer.setInterval(TOOLTIP_TIMEOUT);
87 m_TracerTimer.setInterval(TOOLTIP_TIMEOUT);
54 m_TracerTimer.setSingleShot(true);
88 m_TracerTimer.setSingleShot(true);
89
90 // Inits "close button" in plot overlay
91 m_ClosePixmap->setLayer(OVERLAY_LAYER);
92 initClosePixmapStyle(*m_ClosePixmap);
93 // Inits graph name in plot overlay
94 m_TitleText->setLayer(OVERLAY_LAYER);
95 m_TitleText->setText(graphWidget.name());
96 initTitleTextStyle(*m_TitleText);
55 }
97 }
56
98
57 QCustomPlot &m_Plot;
99 QCustomPlot &m_Plot;
58 QCPItemTracer *m_PointTracer;
100 QCPItemTracer *m_PointTracer;
59 QTimer m_TracerTimer;
101 QTimer m_TracerTimer;
102 QCPItemPixmap *m_ClosePixmap; /// Graph's close button
103 QCPItemText *m_TitleText; /// Graph's title
60 };
104 };
61
105
62 VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegate(
106 VisualizationGraphRenderingDelegate::VisualizationGraphRenderingDelegate(
General Comments 0
You need to be logged in to leave comments. Login now