#include "metavis.h" #include "SettingDialog.h" #include #include #include #include #include #include #include #include #include #include #include #include "LineGraph.h" metavis::metavis(QWidget* parent) : QMainWindow(parent), bestGraph(createCustomWidget("Best vs Avg")), particleGraph(createCustomWidget("Particle")), minMaxGraph(createCustomWidget("MinMaxGraph")) { ui.setupUi(this); /* create settings object*/ settings = new QSettings(QSettings::IniFormat, QSettings::UserScope, "TK", "metavis", this); setStyleSheet(styleSheet() + "QMainWindow::separator {background: rgb(200, 200, 200);width: 1px;height: 1px;}"); setStyleSheet(styleSheet() + "QTabBar::tab:selected {color: rgb(0, 122, 204);}"); setStyleSheet(styleSheet() + "QTabWidget::pane {border-top: 2px solid #C2C7CB;}"); /*CustomLineGraph* random = createCustomWidget(QString("Random")); random->generateAndAddRandomLine(); random->generateAndAddRandomLine(); random->generateAndAddRandomLine();*/ /*createCustomWidget(); createCustomWidget(); createCustomWidget();*/ readMainWindowSettings(); } void metavis::openSetting() { SettingDialog settingDialog(settings, this); /* Blocking operation */ settingDialog.exec(); } metavis::~metavis() { writeActualMainWindowSettings(); } void metavis::createChartWidget() { QDockWidget* dock = new QDockWidget("Customers", this); dock->setObjectName("TestWidget"); dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); LineGraph* widget = new LineGraph(dock); widget->setMinimumSize(100, 100); dock->setBaseSize(300, 300); QPalette pal; pal.setColor(QPalette::Background, Qt::lightGray); dock->setPalette(pal); //widget->setPalette(pal); dock->setWidget(widget); addDockWidget(Qt::RightDockWidgetArea, dock); } void metavis::createWebEngineWidget() { QDockWidget* dock = new QDockWidget("Customers", this); dock->setObjectName("TestWidget"); dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); QWebEngineView* view = new QWebEngineView(dock); view->load(QUrl("file:///web.html")); //view->load(QUrl("http://youtube.de/")); view->show(); view->setMinimumSize(200, 200); dock->setBaseSize(300, 300); QPalette pal; pal.setColor(QPalette::Background, Qt::lightGray); dock->setPalette(pal); view->setPalette(pal); dock->setWidget(view); addDockWidget(Qt::LeftDockWidgetArea, dock); } CustomLineGraph* metavis::createCustomWidget(QString titleString) { QDockWidget* dock = new QDockWidget(titleString, this); dock->setObjectName(titleString); dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); CustomLineGraph* bestGraph = new CustomLineGraph(dock, titleString); bestGraph->setMinimumSize(200, 200); bestGraph->show(); bestGraph->repaint(); dock->setBaseSize(300, 300); dock->repaint(); QPalette pal; pal.setColor(QPalette::Background, Qt::lightGray); //dock->setPalette(pal); //widget->setPalette(pal); dock->setWidget(bestGraph); addDockWidget(Qt::LeftDockWidgetArea, dock); return bestGraph; } void metavis::writeActualMainWindowSettings() { settings->beginGroup("MainWindow"); settings->setValue("maximized", isMaximized()); if (!isMaximized()) { /* position and size of the window if not maximized */ settings->setValue("pos", pos()); settings->setValue("size", size()); } settings->endGroup(); } void metavis::readMainWindowSettings() { settings->beginGroup("MainWindow"); if (settings->value("maximized", false).toBool()) { showMaximized(); } else { /* Position and size of the window if not maximized*/ resize(settings->value("size", QSize(600, 400)).toSize()); move(settings->value("pos", QPoint(200, 200)).toPoint()); } settings->endGroup(); } void metavis::openFile() { qDebug() << "openFile"; QString fileName = QFileDialog::getOpenFileName(this, tr("Open LogFile"), QStandardPaths::displayName(QStandardPaths::DesktopLocation), tr("Metavis Logfile (*.metalog)")); if (fileName == ("")) { qDebug() << "No file selected"; return; } qDebug() << "file:" << fileName; runVec.push_back(RunData(fileName.toStdString())); bestGraph->addLine(runVec[0].bestSolutionPerIteration, QColor(255, 0, 0)); bestGraph->addLine(runVec[0].averageSolutionPerItertion, QColor(0, 0, 255)); minMaxGraph->addLine(runVec[0].minSolutionPerItertion, QColor(255, 0, 0)); minMaxGraph->addLine(runVec[0].maxSolutionPerItertion, QColor(0, 0, 255)); minMaxGraph->addDots(runVec[0].dotsForDistribution, QColor(255, 165, 0, 100)); for (auto iter = runVec[0].particleMap.begin(); iter != runVec[0].particleMap.end(); iter++) { particleGraph->addLine(iter->second); } }