#include "pch.h" #include "metavis.h" #include "SettingDialog.h" #include #include #include #include #include #include #include #include #include #include #include #include #include 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: 0px solid #C2C7CB;margin: -9px -9px -13px -9px;}"); readMainWindowSettings(); qDebug() << "Test Boost"; boost::multiprecision::cpp_int bla = 1; createBitField(); } void metavis::openSetting() { SettingDialog settingDialog(settings, this); /* Blocking operation */ settingDialog.exec(); } metavis::~metavis() { writeActualMainWindowSettings(); } GraphView* metavis::createCustomWidget(QString titleString) { QDockWidget* dock = new QDockWidget(titleString, this); dock->setObjectName(titleString); dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); GraphView* graph = new GraphView(dock, titleString, Bound(10, 20, 40.0, 50.0)); graph->setUseFixedBound(true); graph->setMinimumSize(200, 200); graph->show(); graph->repaint(); dock->setWidget(graph); addDockWidget(Qt::LeftDockWidgetArea, dock); return graph; } void metavis::createBitField() { bitField = new GraphView(this, "BitField", Bound(0.0, 1.0, 0.0, 1600.0)); bitField->setUseFixedBound(true); bitField->setMinimumSize(200, 200); //this->setCentralWidget(bitField); QHBoxLayout* layout = new QHBoxLayout; layout->addWidget(bitField); ui.BitFieldWidget->setLayout(layout); } 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->setValue("screenCount", QApplication::desktop()->screenCount()); } settings->endGroup(); } void metavis::readMainWindowSettings() { settings->beginGroup("MainWindow"); if (QApplication::desktop()->screenCount() == settings->value("screenCount", 1)) { //Only when same screeenCount move the window; move(settings->value("pos", QPoint(200, 200)).toPoint()); } resize(settings->value("size", QSize(600, 400)).toSize()); if (settings->value("maximized", false).toBool()) { showMaximized(); } 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); } //Test bitField->addDots(runVec[0].testForBitField, QColor(255, 165, 0, 100)); }