EditWidget.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. EditWidget::EditWidget(QWidget* parent): QWidget(parent), ui(new Ui::EditWidget) {
  8. ui->setupUi(this);
  9. ui->insertionToolButton->setCheckable(true);
  10. ui->insertionToolButton->setChecked(true);
  11. QObject::connect(ui->insertionToolButton, &QToolButton::clicked, this, [=](){ this->selectTool(InsertionTool); });
  12. ui->selectionToolButton->setCheckable(true);
  13. QObject::connect(ui->selectionToolButton, &QToolButton::clicked, this, [=](){ this->selectTool(SelectionTool); });
  14. // Modifiers
  15. QObject::connect(ui->normalModX, &QDoubleSpinBox::valueChanged, this, &EditWidget::updateNormalModifier);
  16. QObject::connect(ui->normalModY, &QDoubleSpinBox::valueChanged, this, &EditWidget::updateNormalModifier);
  17. QObject::connect(ui->normalModZ, &QDoubleSpinBox::valueChanged, this, &EditWidget::updateNormalModifier);
  18. QObject::connect(ui->modifierReset, &QPushButton::clicked, this, &EditWidget::resetNormalModifier);
  19. // OptiTrack settings
  20. QObject::connect(ui->optiTrackLength, &QDoubleSpinBox::valueChanged, this, &EditWidget::updateOptiTrackSettings);
  21. QObject::connect(ui->optiTrackRadius, &QDoubleSpinBox::valueChanged, this, &EditWidget::updateOptiTrackSettings);
  22. QObject::connect(ui->optiTrackLoadDefaults, &QPushButton::clicked, this, &EditWidget::resetOptiTrackSettings);
  23. }
  24. EditWidget::~EditWidget() {
  25. delete ui;
  26. }
  27. void EditWidget::updatePositions(osg::Vec3 point) {
  28. ui->anchorX->setText(QString::number(point.x()));
  29. ui->anchorY->setText(QString::number(point.y()));
  30. ui->anchorZ->setText(QString::number(point.z()));
  31. }
  32. void EditWidget::updateNormals(osg::Vec3 normal) {
  33. ui->normalX->setText(QString::number(normal.x()));
  34. ui->normalY->setText(QString::number(normal.y()));
  35. ui->normalZ->setText(QString::number(normal.z()));
  36. }
  37. void EditWidget::invalidatePositions() {
  38. ui->anchorX->setText("-");
  39. ui->anchorY->setText("-");
  40. ui->anchorZ->setText("-");
  41. ui->normalX->setText("-");
  42. ui->normalY->setText("-");
  43. ui->normalZ->setText("-");
  44. }
  45. void EditWidget::showEvent(QShowEvent* event) {
  46. QWidget::showEvent(event);
  47. resetOptiTrackSettings();
  48. }
  49. void EditWidget::selectTool(Tool tool) {
  50. switch(tool) {
  51. case InsertionTool: {
  52. ui->insertionToolButton->setChecked(true);
  53. ui->selectionToolButton->setChecked(false);
  54. MainWindow::getInstance()->getOsgWidget()->getPicker()->setSelection(true);
  55. break;
  56. }
  57. case SelectionTool: {
  58. ui->insertionToolButton->setChecked(false);
  59. ui->selectionToolButton->setChecked(true);
  60. MainWindow::getInstance()->getOsgWidget()->getPicker()->setSelection(false);
  61. break;
  62. }
  63. }
  64. }
  65. void EditWidget::updateNormalModifier() {
  66. osg::Vec3 modifier = osg::Vec3(ui->normalModX->value(), ui->normalModY->value(), ui->normalModZ->value());
  67. MainWindow::getInstance()->getStore()->updateNormalModifier(modifier);
  68. MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
  69. }
  70. void EditWidget::resetNormalModifier() {
  71. osg::Vec3 modifier = osg::Vec3(0.0f, 0.0f, 0.0f);
  72. ui->normalModX->setValue(0.0f);
  73. ui->normalModY->setValue(0.0f);
  74. ui->normalModZ->setValue(0.0f);
  75. MainWindow::getInstance()->getStore()->updateNormalModifier(modifier);
  76. MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
  77. }
  78. void EditWidget::updateOptiTrackSettings() {
  79. OptiTrackSettings settings = {ui->optiTrackLength->value(), ui->optiTrackRadius->value()};
  80. MainWindow::getInstance()->getStore()->updateOptiTrackSettings(settings);
  81. MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
  82. }
  83. void EditWidget::resetOptiTrackSettings() {
  84. OptiTrackSettings settings = {OPTITRACK_DEFAULT_LENGTH, OPTITRACK_DEFAULT_RADIUS};
  85. ui->optiTrackLength->setValue(OPTITRACK_DEFAULT_LENGTH);
  86. ui->optiTrackRadius->setValue(OPTITRACK_DEFAULT_RADIUS);
  87. MainWindow::getInstance()->getStore()->updateOptiTrackSettings(settings);
  88. MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
  89. }