Motiv
Marvelous OTF2 Traces Interactive Visualizer
Loading...
Searching...
No Matches
Timeline.cpp
1/*
2 * Marvelous OTF2 Traces Interactive Visualizer (MOTIV)
3 * Copyright (C) 2023 Florian Gallrein, Björn Gehrke
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18#include "Timeline.hpp"
19#include "src/ui/ScrollSynchronizer.hpp"
20
21#include <QGridLayout>
22
23Timeline::Timeline(TraceDataProxy *data, QWidget *parent) : QWidget(parent), data(data) {
24 auto layout = new QGridLayout(this);
25
26 this->header = new TimelineHeader(this->data, this);
27 layout->addWidget(this->header, 0, 1);
28
29 this->labelList = new TimelineLabelList(this->data, this);
30 layout->addWidget(this->labelList, 1, 0);
31
32 this->view = new TimelineView(this->data, this);
33 layout->addWidget(this->view, 1, 1);
34
35 // This prevents the labelList from expanding to 50% of the width.
36 // Not really a satisfactory solution.
37 layout->setColumnStretch(0, 1);
38 layout->setColumnStretch(1, 9);
39
40 auto scrollSyncer = new ScrollSynchronizer(this);
41 scrollSyncer->addWidget(this->labelList);
42 scrollSyncer->addWidget(this->view);
43}
Synchronizes the scroll state of two or more widgets that inherit from QAbstractScrollArea.
The TimelineHeader displays a horizontal bar with evenly distributed labels marking a time point.
The TimelineLabelList displays a vertical bar with a list of rank names.
The main view component rendering the trace.
Timeline(TraceDataProxy *data, QWidget *parent=nullptr)
Creates a new instance of the Timeline class.
Definition: Timeline.cpp:23
Model class providing access to data and pub/sub architecture of change events.