EditWidget.cpp 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. // Include own headers
  2. #include "EditWidget.hpp"
  3. #include "../gui/ui_EditWidget.h"
  4. // Include modules
  5. #include "OSGWidget.hpp"
  6. #include "PickHandler.hpp"
  7. // Include dependencies
  8. #include <QFileDialog>
  9. EditWidget::EditWidget(QWidget* parent): QWidget(parent), ui(new Ui::EditWidget) {
  10. ui->setupUi(this);
  11. ui->insertionToolButton->setCheckable(true);
  12. ui->insertionToolButton->setChecked(true);
  13. QObject::connect(ui->insertionToolButton, &QToolButton::clicked, this, [=](){ this->selectTool(InsertionTool); });
  14. ui->selectionToolButton->setCheckable(true);
  15. QObject::connect(ui->selectionToolButton, &QToolButton::clicked, this, [=](){ this->selectTool(SelectionTool); });
  16. // Modifiers
  17. QObject::connect(ui->normalModX, &QDoubleSpinBox::valueChanged, this, &EditWidget::updateNormalModifier);
  18. QObject::connect(ui->normalModY, &QDoubleSpinBox::valueChanged, this, &EditWidget::updateNormalModifier);
  19. QObject::connect(ui->normalModZ, &QDoubleSpinBox::valueChanged, this, &EditWidget::updateNormalModifier);
  20. QObject::connect(ui->modifierReset, &QPushButton::clicked, this, &EditWidget::resetNormalModifier);
  21. // OptiTrack settings
  22. QObject::connect(ui->optiTrackLength, &QDoubleSpinBox::valueChanged, this, &EditWidget::updateOptiTrackSettings);
  23. QObject::connect(ui->optiTrackRadius, &QDoubleSpinBox::valueChanged, this, &EditWidget::updateOptiTrackSettings);
  24. QObject::connect(ui->optiTrackLoadDefaults, &QPushButton::clicked, this, &EditWidget::resetOptiTrackSettings);
  25. // Export button
  26. QObject::connect(ui->exportButton, &QPushButton::clicked, this, &EditWidget::exportProject);
  27. }
  28. EditWidget::~EditWidget() {
  29. delete ui;
  30. }
  31. void EditWidget::updatePositions(osg::Vec3 point) {
  32. ui->anchorX->setText(QString::number(point.x()));
  33. ui->anchorY->setText(QString::number(point.y()));
  34. ui->anchorZ->setText(QString::number(point.z()));
  35. }
  36. void EditWidget::updateNormals(osg::Vec3 normal) {
  37. ui->normalX->setText(QString::number(normal.x()));
  38. ui->normalY->setText(QString::number(normal.y()));
  39. ui->normalZ->setText(QString::number(normal.z()));
  40. }
  41. void EditWidget::invalidatePositions() {
  42. ui->anchorX->setText("-");
  43. ui->anchorY->setText("-");
  44. ui->anchorZ->setText("-");
  45. ui->normalX->setText("-");
  46. ui->normalY->setText("-");
  47. ui->normalZ->setText("-");
  48. }
  49. ActiveTrackingSystem EditWidget::getSelectedTrackingSystem() {
  50. switch(ui->tabWidget->currentIndex()) {
  51. case 0: {
  52. return OptiTrack;
  53. }
  54. case 1: {
  55. return EMFTrack;
  56. }
  57. case 2: {
  58. return SteamVRTrack;
  59. }
  60. default: {
  61. return ActionPoints;
  62. }
  63. }
  64. }
  65. void EditWidget::showEvent(QShowEvent* event) {
  66. QWidget::showEvent(event);
  67. resetOptiTrackSettings();
  68. }
  69. void EditWidget::selectTool(Tool tool) {
  70. switch(tool) {
  71. case InsertionTool: {
  72. ui->insertionToolButton->setChecked(true);
  73. ui->selectionToolButton->setChecked(false);
  74. MainWindow::getInstance()->getOsgWidget()->getPicker()->setSelection(true);
  75. break;
  76. }
  77. case SelectionTool: {
  78. ui->insertionToolButton->setChecked(false);
  79. ui->selectionToolButton->setChecked(true);
  80. MainWindow::getInstance()->getOsgWidget()->getPicker()->setSelection(false);
  81. break;
  82. }
  83. }
  84. }
  85. void EditWidget::updateNormalModifier() {
  86. osg::Vec3 modifier = osg::Vec3(ui->normalModX->value(), ui->normalModY->value(), ui->normalModZ->value());
  87. MainWindow::getInstance()->getStore()->updateNormalModifier(modifier);
  88. MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
  89. }
  90. void EditWidget::resetNormalModifier() {
  91. osg::Vec3 modifier = osg::Vec3(0.0f, 0.0f, 0.0f);
  92. ui->normalModX->setValue(0.0f);
  93. ui->normalModY->setValue(0.0f);
  94. ui->normalModZ->setValue(0.0f);
  95. MainWindow::getInstance()->getStore()->updateNormalModifier(modifier);
  96. MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
  97. }
  98. void EditWidget::updateOptiTrackSettings() {
  99. OptiTrackSettings settings = {ui->optiTrackLength->value(), ui->optiTrackRadius->value()};
  100. MainWindow::getInstance()->getStore()->updateOptiTrackSettings(settings);
  101. MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
  102. }
  103. void EditWidget::resetOptiTrackSettings() {
  104. OptiTrackSettings settings = {OPTITRACK_DEFAULT_LENGTH, OPTITRACK_DEFAULT_RADIUS};
  105. ui->optiTrackLength->setValue(OPTITRACK_DEFAULT_LENGTH);
  106. ui->optiTrackRadius->setValue(OPTITRACK_DEFAULT_RADIUS);
  107. MainWindow::getInstance()->getStore()->updateOptiTrackSettings(settings);
  108. MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
  109. }
  110. void EditWidget::exportProject() {
  111. Qt::CheckState optiTrackSelected = ui->optiTrackCkeckbox->checkState();
  112. Qt::CheckState emfTrackSelected = ui->emfTrackCheckbox->checkState();
  113. Qt::CheckState steamVrTrackSelected = ui->steamVrCheckbox->checkState();
  114. ExportSettings settings = {optiTrackSelected == Qt::Checked, emfTrackSelected == Qt::Checked, steamVrTrackSelected == Qt::Checked};
  115. QString fileName = QFileDialog::getSaveFileName(this, tr("Export your TrackpointApp Project"), "", tr("3MF Files (*.3mf)"));
  116. std::string exportFile = fileName.toUtf8().constData();
  117. MainWindow::getInstance()->getStore()->exportProject(exportFile, settings);
  118. }