background thread for STDIN reading + proxy with signals/slots for passing data to the GUI thread
#include <QTabWidget>
#include <QPushButton>
#include <QLabel>
#include <QStatusBar>
#include <QSplitter>
#include "RelpipeChartMainWindow.h"
using namespace relpipe::reader;
using namespace relpipe::reader::handlers;
RelpipeChartMainWindow::RelpipeChartMainWindow() {
widget.setupUi(this);
tabs->addTab(new QPushButton("here will be options", tabs), "Options");
statusBar()->addWidget(new QLabel("Loading relations...", widget.statusbar));
// TODO: remove; just demo
QPushButton* emitButton = new QPushButton("emit", widget.statusbar);
statusBar()->addWidget(emitButton);
QObject::connect(
emitButton, &QPushButton::pressed,
this, &RelpipeChartMainWindow::slot123
);
// ---
setCentralWidget(tabs);
}
RelpipeChartMainWindow::~RelpipeChartMainWindow() {
}
void RelpipeChartMainWindow::slot123() {
// TODO: remove; just demo
statusBar()->addWidget(new QPushButton("slot123", widget.statusbar));
}
void RelpipeChartMainWindow::startRelation(string_t name, std::vector<AttributeMetadata> attributes) {
// TODO: chart and table
QSplitter* splitter = new QSplitter(Qt::Orientation::Vertical, tabs);
splitter->addWidget(new QPushButton("here will be the chart", splitter));
splitter->addWidget(new QPushButton("here will be the table", splitter));
tabs->addTab(splitter, QString::fromWCharArray(name.c_str()));
}
void RelpipeChartMainWindow::attribute(const string_t& value) {
// TODO: fill table and draw chart
}
void RelpipeChartMainWindow::endOfPipe() {
// TODO: just display a message
statusBar()->addWidget(new QPushButton("endOfPipe", widget.statusbar));
}