metavis.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. #include "metavis.h"
  2. #include "SettingDialog.h"
  3. #include <QStandardPaths>
  4. #include <QDockwidget>
  5. #include <QLabel>
  6. #include <QLayout>
  7. #include <QDebug>
  8. #include <QStyleFactory>
  9. #include <QtWebChannel/QtWebChannel>
  10. #include <QtWebEngineWidgets/QWebEngineView>
  11. #include <QFileDialog>
  12. #include <QDir>
  13. #include <map>
  14. #include "LineGraph.h"
  15. metavis::metavis(QWidget* parent)
  16. : QMainWindow(parent), bestGraph(createCustomWidget("Best vs Avg")), particleGraph(createCustomWidget("Particle")), minMaxGraph(createCustomWidget("MinMaxGraph"))
  17. {
  18. ui.setupUi(this);
  19. /* create settings object*/
  20. settings = new QSettings(QSettings::IniFormat, QSettings::UserScope, "TK", "metavis", this);
  21. setStyleSheet(styleSheet() + "QMainWindow::separator {background: rgb(200, 200, 200);width: 1px;height: 1px;}");
  22. setStyleSheet(styleSheet() + "QTabBar::tab:selected {color: rgb(0, 122, 204);}");
  23. setStyleSheet(styleSheet() + "QTabWidget::pane {border-top: 2px solid #C2C7CB;}");
  24. /*CustomLineGraph* random = createCustomWidget(QString("Random"));
  25. random->generateAndAddRandomLine();
  26. random->generateAndAddRandomLine();
  27. random->generateAndAddRandomLine();*/
  28. /*createCustomWidget();
  29. createCustomWidget();
  30. createCustomWidget();*/
  31. readMainWindowSettings();
  32. }
  33. void metavis::openSetting() {
  34. SettingDialog settingDialog(settings, this);
  35. /* Blocking operation */
  36. settingDialog.exec();
  37. }
  38. metavis::~metavis()
  39. {
  40. writeActualMainWindowSettings();
  41. }
  42. void metavis::createChartWidget()
  43. {
  44. QDockWidget* dock = new QDockWidget("Customers", this);
  45. dock->setObjectName("TestWidget");
  46. dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
  47. LineGraph* widget = new LineGraph(dock);
  48. widget->setMinimumSize(100, 100);
  49. dock->setBaseSize(300, 300);
  50. QPalette pal;
  51. pal.setColor(QPalette::Background, Qt::lightGray);
  52. dock->setPalette(pal);
  53. //widget->setPalette(pal);
  54. dock->setWidget(widget);
  55. addDockWidget(Qt::RightDockWidgetArea, dock);
  56. }
  57. void metavis::createWebEngineWidget()
  58. {
  59. QDockWidget* dock = new QDockWidget("Customers", this);
  60. dock->setObjectName("TestWidget");
  61. dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
  62. QWebEngineView* view = new QWebEngineView(dock);
  63. view->load(QUrl("file:///web.html"));
  64. //view->load(QUrl("http://youtube.de/"));
  65. view->show();
  66. view->setMinimumSize(200, 200);
  67. dock->setBaseSize(300, 300);
  68. QPalette pal;
  69. pal.setColor(QPalette::Background, Qt::lightGray);
  70. dock->setPalette(pal);
  71. view->setPalette(pal);
  72. dock->setWidget(view);
  73. addDockWidget(Qt::LeftDockWidgetArea, dock);
  74. }
  75. CustomLineGraph* metavis::createCustomWidget(QString titleString)
  76. {
  77. QDockWidget* dock = new QDockWidget(titleString, this);
  78. dock->setObjectName(titleString);
  79. dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
  80. CustomLineGraph* bestGraph = new CustomLineGraph(dock, titleString);
  81. bestGraph->setMinimumSize(200, 200);
  82. bestGraph->show();
  83. bestGraph->repaint();
  84. dock->setBaseSize(300, 300);
  85. dock->repaint();
  86. QPalette pal;
  87. pal.setColor(QPalette::Background, Qt::lightGray);
  88. //dock->setPalette(pal);
  89. //widget->setPalette(pal);
  90. dock->setWidget(bestGraph);
  91. addDockWidget(Qt::LeftDockWidgetArea, dock);
  92. return bestGraph;
  93. }
  94. void metavis::writeActualMainWindowSettings()
  95. {
  96. settings->beginGroup("MainWindow");
  97. settings->setValue("maximized", isMaximized());
  98. if (!isMaximized()) {
  99. /* position and size of the window if not maximized */
  100. settings->setValue("pos", pos());
  101. settings->setValue("size", size());
  102. }
  103. settings->endGroup();
  104. }
  105. void metavis::readMainWindowSettings()
  106. {
  107. settings->beginGroup("MainWindow");
  108. if (settings->value("maximized", false).toBool()) {
  109. showMaximized();
  110. }
  111. else {
  112. /* Position and size of the window if not maximized*/
  113. resize(settings->value("size", QSize(600, 400)).toSize());
  114. move(settings->value("pos", QPoint(200, 200)).toPoint());
  115. }
  116. settings->endGroup();
  117. }
  118. void metavis::openFile()
  119. {
  120. qDebug() << "openFile";
  121. QString fileName = QFileDialog::getOpenFileName(this, tr("Open LogFile"), QStandardPaths::displayName(QStandardPaths::DesktopLocation), tr("Metavis Logfile (*.metalog)"));
  122. if (fileName == ("")) {
  123. qDebug() << "No file selected";
  124. return;
  125. }
  126. qDebug() << "file:" << fileName;
  127. runVec.push_back(RunData(fileName.toStdString()));
  128. bestGraph->addLine(runVec[0].bestSolutionPerIteration, QColor(255, 0, 0));
  129. bestGraph->addLine(runVec[0].averageSolutionPerItertion, QColor(0, 0, 255));
  130. minMaxGraph->addLine(runVec[0].minSolutionPerItertion, QColor(255, 0, 0));
  131. minMaxGraph->addLine(runVec[0].maxSolutionPerItertion, QColor(0, 0, 255));
  132. minMaxGraph->addDots(runVec[0].dotsForDistribution, QColor(255, 165, 0, 100));
  133. for (auto iter = runVec[0].particleMap.begin(); iter != runVec[0].particleMap.end(); iter++) {
  134. particleGraph->addLine(iter->second);
  135. }
  136. }