metavis.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #include "pch.h"
  2. #include "metavis.h"
  3. #include "SettingDialog.h"
  4. #include <QStandardPaths>
  5. #include <QDockwidget>
  6. #include <QLabel>
  7. #include <QLayout>
  8. #include <QDebug>
  9. #include <QStyleFactory>
  10. #include <QtWebChannel/QtWebChannel>
  11. #include <QtWebEngineWidgets/QWebEngineView>
  12. #include <QFileDialog>
  13. #include <QDir>
  14. #include <map>
  15. #include <boost/multiprecision/cpp_int.hpp>
  16. #include <QDesktopWidget>
  17. metavis::metavis(QWidget* parent)
  18. : QMainWindow(parent), bestGraph(createCustomWidget("Best vs Avg")), particleGraph(createCustomWidget("Particle")), minMaxGraph(createCustomWidget("MinMaxGraph"))
  19. {
  20. ui.setupUi(this);
  21. /* create settings object*/
  22. settings = new QSettings(QSettings::IniFormat, QSettings::UserScope, "TK", "metavis", this);
  23. setStyleSheet(styleSheet() + "QMainWindow::separator {background: rgb(200, 200, 200);width: 1px;height: 1px;}");
  24. setStyleSheet(styleSheet() + "QTabBar::tab:selected {color: rgb(0, 122, 204);}");
  25. setStyleSheet(styleSheet() + "QTabWidget::pane {border-top: 0px solid #C2C7CB;margin: -9px -9px -13px -9px;}");
  26. readMainWindowSettings();
  27. qDebug() << "Test Boost";
  28. boost::multiprecision::cpp_int bla = 1;
  29. createBitField();
  30. }
  31. void metavis::openSetting() {
  32. SettingDialog settingDialog(settings, this);
  33. /* Blocking operation */
  34. settingDialog.exec();
  35. }
  36. metavis::~metavis()
  37. {
  38. writeActualMainWindowSettings();
  39. }
  40. GraphView* metavis::createCustomWidget(QString titleString)
  41. {
  42. QDockWidget* dock = new QDockWidget(titleString, this);
  43. dock->setObjectName(titleString);
  44. dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
  45. GraphView* graph = new GraphView(dock, titleString, Bound(10, 20, 40.0, 50.0));
  46. graph->setUseFixedBound(true);
  47. graph->setMinimumSize(200, 200);
  48. graph->show();
  49. graph->repaint();
  50. dock->setWidget(graph);
  51. addDockWidget(Qt::LeftDockWidgetArea, dock);
  52. return graph;
  53. }
  54. void metavis::createBitField()
  55. {
  56. bitField = new GraphView(this, "BitField", Bound(0.0, 1.0, 0.0, 1600.0));
  57. bitField->setUseFixedBound(true);
  58. bitField->setMinimumSize(200, 200);
  59. //this->setCentralWidget(bitField);
  60. QHBoxLayout* layout = new QHBoxLayout;
  61. layout->addWidget(bitField);
  62. ui.BitFieldWidget->setLayout(layout);
  63. }
  64. void metavis::writeActualMainWindowSettings()
  65. {
  66. settings->beginGroup("MainWindow");
  67. settings->setValue("maximized", isMaximized());
  68. if (!isMaximized()) {
  69. /* position and size of the window if not maximized */
  70. settings->setValue("pos", pos());
  71. settings->setValue("size", size());
  72. settings->setValue("screenCount", QApplication::desktop()->screenCount());
  73. }
  74. settings->endGroup();
  75. }
  76. void metavis::readMainWindowSettings()
  77. {
  78. settings->beginGroup("MainWindow");
  79. if (QApplication::desktop()->screenCount() == settings->value("screenCount", 1)) {
  80. //Only when same screeenCount move the window;
  81. move(settings->value("pos", QPoint(200, 200)).toPoint());
  82. }
  83. resize(settings->value("size", QSize(600, 400)).toSize());
  84. if (settings->value("maximized", false).toBool()) {
  85. showMaximized();
  86. }
  87. settings->endGroup();
  88. }
  89. void metavis::openFile()
  90. {
  91. qDebug() << "openFile";
  92. QString fileName = QFileDialog::getOpenFileName(this, tr("Open LogFile"), QStandardPaths::displayName(QStandardPaths::DesktopLocation), tr("Metavis Logfile (*.metalog)"));
  93. if (fileName == ("")) {
  94. qDebug() << "No file selected";
  95. return;
  96. }
  97. qDebug() << "file:" << fileName;
  98. runVec.push_back(RunData(fileName.toStdString()));
  99. bestGraph->addLine(runVec[0].bestSolutionPerIteration, QColor(255, 0, 0));
  100. bestGraph->addLine(runVec[0].averageSolutionPerItertion, QColor(0, 0, 255));
  101. minMaxGraph->addLine(runVec[0].minSolutionPerItertion, QColor(255, 0, 0));
  102. minMaxGraph->addLine(runVec[0].maxSolutionPerItertion, QColor(0, 0, 255));
  103. minMaxGraph->addDots(runVec[0].dotsForDistribution, QColor(255, 165, 0, 100));
  104. for (auto iter = runVec[0].particleMap.begin(); iter != runVec[0].particleMap.end(); iter++) {
  105. particleGraph->addLine(iter->second);
  106. }
  107. //Test
  108. bitField->addDots(runVec[0].testForBitField, QColor(255, 165, 0, 100));
  109. }