##// END OF EJS Templates
Replaces QString unit by a new struct...
Replaces QString unit by a new struct The Unit struct contains a flag that indicates if it's a time unit or not. It will be used to set the correct ticker for axes on a graph (default ticker or datetime ticker)

File last commit:

r176:a33df991d7dc
r177:4c64b786fec1
Show More
VisualizationWidget.cpp
105 lines | 3.4 KiB | text/x-c | CppLexer
/ gui / src / Visualization / VisualizationWidget.cpp
#include "Visualization/VisualizationWidget.h"
#include "Visualization/VisualizationGraphWidget.h"
#include "Visualization/VisualizationTabWidget.h"
#include "Visualization/VisualizationZoneWidget.h"
#include "Visualization/qcustomplot.h"
#include "ui_VisualizationWidget.h"
#include <QToolButton>
Q_LOGGING_CATEGORY(LOG_VisualizationWidget, "VisualizationWidget")
VisualizationWidget::VisualizationWidget(QWidget *parent)
: QWidget{parent}, ui{new Ui::VisualizationWidget}
{
ui->setupUi(this);
auto addTabViewButton = new QToolButton{ui->tabWidget};
addTabViewButton->setText(tr("Add View"));
addTabViewButton->setCursor(Qt::ArrowCursor);
addTabViewButton->setAutoRaise(true);
ui->tabWidget->setCornerWidget(addTabViewButton, Qt::TopRightCorner);
auto width = ui->tabWidget->cornerWidget()->width();
auto height = ui->tabWidget->cornerWidget()->height();
addTabViewButton->setMinimumHeight(height);
addTabViewButton->setMinimumWidth(width);
ui->tabWidget->setMinimumHeight(height);
ui->tabWidget->setMinimumWidth(width);
auto addTabView = [&]() {
auto index = ui->tabWidget->addTab(new VisualizationTabWidget(ui->tabWidget),
QString("View %1").arg(ui->tabWidget->count() + 1));
qCInfo(LOG_VisualizationWidget()) << tr("add the tab of index %1").arg(index);
};
auto removeTabView = [&](int index) {
ui->tabWidget->removeTab(index);
qCInfo(LOG_VisualizationWidget()) << tr("remove the tab of index %1").arg(index);
};
ui->tabWidget->setTabsClosable(true);
connect(addTabViewButton, &QToolButton::clicked, addTabView);
connect(ui->tabWidget, &QTabWidget::tabCloseRequested, removeTabView);
}
VisualizationWidget::~VisualizationWidget()
{
delete ui;
}
void VisualizationWidget::addTab(VisualizationTabWidget *tabWidget)
{
// NOTE: check is this method has to be deleted because of its dupplicated version visible as
// lambda function (in the constructor)
}
VisualizationTabWidget *VisualizationWidget::createTab()
{
}
void VisualizationWidget::removeTab(VisualizationTabWidget *tab)
{
// NOTE: check is this method has to be deleted because of its dupplicated version visible as
// lambda function (in the constructor)
}
void VisualizationWidget::accept(IVisualizationWidget *visitor)
{
// TODO: manage the visitor
}
void VisualizationWidget::close()
{
// The main view cannot be directly closed.
return;
}
QString VisualizationWidget::name() const
{
return QStringLiteral("MainView");
}
void VisualizationWidget::displayVariable(std::shared_ptr<Variable> variable) noexcept
{
if (auto currentTab = dynamic_cast<VisualizationTabWidget *>(ui->tabWidget->currentWidget())) {
if (auto newZone = currentTab->createZone()) {
if (auto newGraph = newZone->createGraph()) {
newGraph->addVariable(variable);
}
else {
qCDebug(LOG_VisualizationWidget())
<< tr("Can't display the variable : can't create the graph");
}
}
else {
qCDebug(LOG_VisualizationWidget())
<< tr("Can't display the variable : can't create a new zone in the current tab");
}
}
else {
qCDebug(LOG_VisualizationWidget())
<< tr("Can't display the variable : there is no current tab");
}
}