123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574 |
- // Include own headers
- #include "EditWidget.hpp"
- #include "../gui/ui_EditWidget.h"
- // Include modules
- #include "OSGWidget.hpp"
- #include "PickHandler.hpp"
- #include "TrackPointRenderer.hpp"
- #include "OpenScadRenderer.hpp"
- #include "MeshTools.hpp"
- // Include dependencies
- #include <sstream>
- #include <iostream>
- #include <QFileDialog>
- EditWidget::EditWidget(QWidget* parent): QWidget(parent), ui(new Ui::EditWidget) {
- ui->setupUi(this);
- ui->actionPointDoubleIdentifier->setVisible(false);
- ui->insertionToolButton->setCheckable(true);
- ui->insertionToolButton->setChecked(true);
- QObject::connect(ui->insertionToolButton, &QToolButton::clicked, this, [=](){ this->selectTool(InsertionTool); });
- ui->selectionToolButton->setCheckable(true);
- QObject::connect(ui->selectionToolButton, &QToolButton::clicked, this, [=](){ this->selectTool(SelectionTool); });
- QObject::connect(ui->tabWidget, &QTabWidget::currentChanged, this, &EditWidget::tabChanged);
- // Modifiers
- QObject::connect(ui->anchorX, &QDoubleSpinBox::valueChanged, this, &EditWidget::changePositions);
- QObject::connect(ui->anchorY, &QDoubleSpinBox::valueChanged, this, &EditWidget::changePositions);
- QObject::connect(ui->anchorZ, &QDoubleSpinBox::valueChanged, this, &EditWidget::changePositions);
- QObject::connect(ui->normalModX, &QDoubleSpinBox::valueChanged, this, &EditWidget::updateNormalModifier);
- QObject::connect(ui->normalModY, &QDoubleSpinBox::valueChanged, this, &EditWidget::updateNormalModifier);
- QObject::connect(ui->normalModZ, &QDoubleSpinBox::valueChanged, this, &EditWidget::updateNormalModifier);
- QObject::connect(ui->rotateAroundNormal, &QDoubleSpinBox::valueChanged, this, [=](){ this->updateNormalRotation(false); });
- QObject::connect(ui->compensation, &QCheckBox::stateChanged, this, [=](){ this->updateCompensation(false); });
- QObject::connect(ui->modifierReset, &QPushButton::clicked, this, &EditWidget::resetNormalModifier);
- // OptiTrack settings
- QObject::connect(ui->optiTrackLength, &QDoubleSpinBox::valueChanged, this, [=](){ this->updateOptiTrackSettings(false); });
- QObject::connect(ui->optiTrackRadius, &QDoubleSpinBox::valueChanged, this, [=](){ this->updateOptiTrackSettings(false); });
- QObject::connect(ui->optiTrackLoadDefaults, &QPushButton::clicked, this, [=](){ this->updateOptiTrackSettings(true); });
- QObject::connect(ui->optiTrackSanityCheck, &QPushButton::clicked, this, &EditWidget::manualOptiTrackSanityCheck);
- QObject::connect(ui->optiTrackEnableSanityCheck, &QCheckBox::stateChanged, this, &EditWidget::setOptiTrackSanityCheckStatus);
- // EMF Track settings
- QObject::connect(ui->emfTrackWidth, &QDoubleSpinBox::valueChanged, this, [=](){ this->updateEMFTrackSettings(false); });
- QObject::connect(ui->emfTrackHeight, &QDoubleSpinBox::valueChanged, this, [=](){ this->updateEMFTrackSettings(false); });
- QObject::connect(ui->emfTrackDepth, &QDoubleSpinBox::valueChanged, this, [=](){ this->updateEMFTrackSettings(false); });
- QObject::connect(ui->emfTrackLoadDefaults, &QPushButton::clicked, this, [=](){ this->updateEMFTrackSettings(true); });
- // StramVRTrack settings
- QObject::connect(ui->steamVrTrackLength, &QDoubleSpinBox::valueChanged, this, [=](){ this->updateSteamVRTrackSettings(false); });
- QObject::connect(ui->steamVrTrackLoadDefaults, &QPushButton::clicked, this, [=](){ this->updateSteamVRTrackSettings(true); });
- QObject::connect(ui->steamVrTrackCollisionCheck, &QPushButton::clicked, this, &EditWidget::manualSteamVRTrackCollisionCheck);
- QObject::connect(ui->steamVrTrackEnableCollisionCheck, &QCheckBox::stateChanged, this, &EditWidget::setSteamVRTrackCollisionCheckStatus);
- // Action point settings
- QObject::connect(ui->actionPointIdentifier, &QLineEdit::textChanged, this, &EditWidget::updateActionPointSettings);
- QObject::connect(ui->actionPointLoadDefaults, &QPushButton::clicked, this, &EditWidget::resetActionPointSettings);
- // Delete button
- QObject::connect(ui->deleteTrackPoint, &QPushButton::clicked, this, &EditWidget::deleteCurrentTrackPoint);
- // Export button
- QObject::connect(ui->exportButton, &QPushButton::clicked, this, &EditWidget::exportProject);
- if (!OpenScadRenderer::openScadAvailable()) {
- ui->exportGroup->setEnabled(false);
- }
- ui->exportProgress->setVisible(false);
- ui->exportLabel->setVisible(false);
- }
- EditWidget::~EditWidget() {
- delete ui;
- }
- void EditWidget::updatePositions(osg::Vec3 point) {
- ui->anchorX->setValue(point.x());
- ui->anchorY->setValue(point.y());
- ui->anchorZ->setValue(point.z());
- }
- void EditWidget::updateNormals(osg::Vec3 normal) {
- ui->normalX->setText(QString::number(normal.x()));
- ui->normalY->setText(QString::number(normal.y()));
- ui->normalZ->setText(QString::number(normal.z()));
- }
- void EditWidget::invalidatePositions() {
- ui->deleteTrackPoint->setEnabled(false);
- ui->anchorX->setValue(0.0f);
- ui->anchorY->setValue(0.0f);
- ui->anchorZ->setValue(0.0f);
- ui->normalX->setText("-");
- ui->normalY->setText("-");
- ui->normalZ->setText("-");
- }
- ActiveTrackingSystem EditWidget::getSelectedTrackingSystem() {
- switch(ui->tabWidget->currentIndex()) {
- case 0: {
- return OptiTrack;
- }
- case 1: {
- return EMFTrack;
- }
- case 2: {
- return SteamVRTrack;
- }
- default: {
- return ActionPoints;
- }
- }
- }
- void EditWidget::setSelection(int id) {
- selectedPoint = id;
- ui->deleteTrackPoint->setEnabled(true);
- TrackPoint* point;
- switch(ui->tabWidget->currentIndex()) {
- case 0: {
- OptiTrackPoint* optiPoint = MainWindow::getInstance()->getStore()->getOptiTrackPoints()[id];
- setOptiTrackSettings(optiPoint->getLength(), optiPoint->getRadius());
- point = static_cast<TrackPoint*>(optiPoint);
- break;
- }
- case 1: {
- EMFTrackPoint* emfPoint = MainWindow::getInstance()->getStore()->getEMFTrackPoints()[id];
- setEMFTrackSettings(emfPoint->getWidth(), emfPoint->getHeight(), emfPoint->getDepth());
- point = static_cast<TrackPoint*>(emfPoint);
- break;
- }
- case 2: {
- SteamVRTrackPoint* steamVrPoint = MainWindow::getInstance()->getStore()->getSteamVRTrackPoints()[id];
- setSteamVRTrackSettings(steamVrPoint->getLength());
- point = static_cast<TrackPoint*>(steamVrPoint);
- break;
- }
- default: {
- ActionPoint* actionPoint = MainWindow::getInstance()->getStore()->getActionPoints()[id];
- setActionPointSettings(actionPoint->getIdentifier());
- point = static_cast<TrackPoint*>(actionPoint);
- break;
- }
- }
- updatePositions(point->getTranslation());
- updateNormals(point->getNormal());
- setNormalModifier(point->getNormalModifier());
- }
- int EditWidget::getSelectedPoint() {
- return selectedPoint;
- }
- void EditWidget::updateTrackpointCount() {
- int count;
- count = MainWindow::getInstance()->getStore()->getCount(OptiTrack);
- {
- QString countString("TRACKPOINTS SET: ");
- countString.append(QString::number(count));
- ui->optiTrackCount->setText(countString);
- setCountCheckString(OptiTrack);
- }
- count = MainWindow::getInstance()->getStore()->getCount(EMFTrack);
- {
- QString countString("TRACKPOINTS SET: ");
- countString.append(QString::number(count));
- ui->emfTrackCount->setText(countString);
- setCountCheckString(EMFTrack);
- }
- count = MainWindow::getInstance()->getStore()->getCount(SteamVRTrack);
- {
- QString countString("TRACKPOINTS SET: ");
- countString.append(QString::number(count));
- ui->steamVrTrackCount->setText(countString);
- setCountCheckString(SteamVRTrack);
- }
- count = MainWindow::getInstance()->getStore()->getCount(ActionPoints);
- {
- QString countString("ACTION POINTS SET: ");
- countString.append(QString::number(count));
- ui->actionPointCount->setText(countString);
- }
- }
- void EditWidget::showEvent(QShowEvent* event) {
- QWidget::showEvent(event);
- resetAllSettings();
- }
- void EditWidget::resetAllSettings() {
- selectedPoint = -1;
- resetNormalModifier();
- updateOptiTrackSettings(true);
- updateEMFTrackSettings(true);
- updateSteamVRTrackSettings(true);
- resetActionPointSettings();
- updateTrackpointCount();
- }
- void EditWidget::setExportAvailable(bool available) {
- ui->exportButton->setVisible(available);
- ui->exportProgress->setVisible(!available);
- ui->exportLabel->setVisible(!available);
- }
- void EditWidget::setExportStatus(int jobs, int done) {
- ui->exportProgress->setValue(done);
- std::stringstream text;
- text << "Export running: " << done << " of " << jobs << " finished.";
- ui->exportLabel->setText(QString::fromUtf8(text.str().c_str()));
- }
- bool EditWidget::getOptiTrackSanityCheckStatus() {
- return _optiTrackSanityCheck;
- }
- bool EditWidget::getSteamVRTrackCollisionCheckStatus() {
- return _steamVrTrackCollisionCheck;
- }
- void EditWidget::selectTool(Tool tool) {
- switch(tool) {
- case InsertionTool: {
- ui->insertionToolButton->setChecked(true);
- ui->selectionToolButton->setChecked(false);
- MainWindow::getInstance()->getOsgWidget()->getPicker()->setSelection(true);
- resetAllSettings();
- invalidatePositions();
- setPositionEditing(true);
- break;
- }
- case SelectionTool: {
- ui->insertionToolButton->setChecked(false);
- ui->selectionToolButton->setChecked(true);
- MainWindow::getInstance()->getOsgWidget()->getPicker()->setSelection(false);
- setPositionEditing(false);
- break;
- }
- }
- }
- void EditWidget::tabChanged(int index) {
- if (selectedPoint < 0) {
- MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
- }
- selectedPoint = -1;
- ActiveTrackingSystem activeTrackingSystem = getSelectedTrackingSystem();
- MainWindow::getInstance()->getOsgWidget()->getPointRenderer()->render(activeTrackingSystem);
- }
- void EditWidget::updateNormalModifier() {
- osg::Vec3 modifier = osg::Vec3(ui->normalModX->value(), ui->normalModY->value(), ui->normalModZ->value());
- if (selectedPoint < 0) {
- MainWindow::getInstance()->getStore()->updateNormalModifier(modifier);
- MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
- } else {
- ActiveTrackingSystem activeTrackingSystem = getSelectedTrackingSystem();
- MainWindow::getInstance()->getStore()->getTrackPointById(selectedPoint, activeTrackingSystem)->updateNormalModifier(modifier);
- MainWindow::getInstance()->getOsgWidget()->getPointRenderer()->render(activeTrackingSystem);
- MainWindow::getInstance()->getStore()->projectModified();
- if (activeTrackingSystem == OptiTrack) {
- MeshTools::optiTrackSanityCheck(MainWindow::getInstance()->getStore()->getOptiTrackPoints(), false);
- } else if (activeTrackingSystem == SteamVRTrack) {
- MeshTools::steamVrTrackCollisionCheck(MainWindow::getInstance()->getStore()->getSteamVRTrackPoints(), false, MainWindow::getInstance()->getOsgWidget()->getVerifyGroup());
- }
- }
- }
- void EditWidget::resetNormalModifier() {
- osg::Vec3 modifier = osg::Vec3(0.0f, 0.0f, 0.0f);
- ui->normalModX->setValue(0.0f);
- ui->normalModY->setValue(0.0f);
- ui->normalModZ->setValue(0.0f);
- if (selectedPoint < 0) {
- MainWindow::getInstance()->getStore()->updateNormalModifier(modifier);
- MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
- } else {
- ActiveTrackingSystem activeTrackingSystem = getSelectedTrackingSystem();
- MainWindow::getInstance()->getStore()->getTrackPointById(selectedPoint, activeTrackingSystem)->updateNormalModifier(modifier);
- MainWindow::getInstance()->getOsgWidget()->getPointRenderer()->render(activeTrackingSystem);
- MainWindow::getInstance()->getStore()->projectModified();
- if (activeTrackingSystem == OptiTrack) {
- MeshTools::optiTrackSanityCheck(MainWindow::getInstance()->getStore()->getOptiTrackPoints(), false);
- } else if (activeTrackingSystem == SteamVRTrack) {
- MeshTools::steamVrTrackCollisionCheck(MainWindow::getInstance()->getStore()->getSteamVRTrackPoints(), false, MainWindow::getInstance()->getOsgWidget()->getVerifyGroup());
- }
- }
- }
- void EditWidget::setNormalModifier(osg::Vec3 normalModifier) {
- ui->normalModX->setValue(normalModifier.x());
- ui->normalModY->setValue(normalModifier.y());
- ui->normalModZ->setValue(normalModifier.z());
- }
- void EditWidget::updateNormalRotation(bool reset) {
- float normalRotation;
- if (reset) {
- normalRotation = 0.0f;
- } else {
- normalRotation = ui->rotateAroundNormal->value();
- }
- if (selectedPoint < 0) {
- MainWindow::getInstance()->getStore()->updateNormalRotation(normalRotation);
- MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
- } else {
- ActiveTrackingSystem activeTrackingSystem = getSelectedTrackingSystem();
- MainWindow::getInstance()->getStore()->getTrackPointById(selectedPoint, activeTrackingSystem)->updateNormalRotation(normalRotation);
- MainWindow::getInstance()->getOsgWidget()->getPointRenderer()->render(activeTrackingSystem);
- MainWindow::getInstance()->getStore()->projectModified();
- if (activeTrackingSystem == OptiTrack) {
- MeshTools::optiTrackSanityCheck(MainWindow::getInstance()->getStore()->getOptiTrackPoints(), false);
- } else if (activeTrackingSystem == SteamVRTrack) {
- MeshTools::steamVrTrackCollisionCheck(MainWindow::getInstance()->getStore()->getSteamVRTrackPoints(), false, MainWindow::getInstance()->getOsgWidget()->getVerifyGroup());
- }
- }
- }
- void EditWidget::setNormalRotation(float normalRotation) {
- ui->rotateAroundNormal->value();
- }
- void EditWidget::updateCompensation(bool reset) {
- bool compensation;
- if (reset) {
- compensation = true;
- } else {
- compensation = ui->compensation->checkState() == Qt::Checked ? true : false;
- }
- if (selectedPoint < 0) {
- MainWindow::getInstance()->getStore()->updateCompensation(compensation);
- MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
- } else {
- ActiveTrackingSystem activeTrackingSystem = getSelectedTrackingSystem();
- MainWindow::getInstance()->getStore()->getTrackPointById(selectedPoint, activeTrackingSystem)->updateCompensation(compensation);
- MainWindow::getInstance()->getOsgWidget()->getPointRenderer()->render(activeTrackingSystem);
- MainWindow::getInstance()->getStore()->projectModified();
- }
- }
- void EditWidget::setCompensation(bool compensation) {
- if (compensation) {
- ui->compensation->setCheckState(Qt::Checked);
- } else {
- ui->compensation->setCheckState(Qt::Unchecked);
- }
- }
- void EditWidget::updateOptiTrackSettings(bool reset) {
- OptiTrackSettings settings;
- if (reset) {
- settings = {OPTITRACK_DEFAULT_LENGTH, OPTITRACK_DEFAULT_RADIUS};
- setOptiTrackSettings(OPTITRACK_DEFAULT_LENGTH, OPTITRACK_DEFAULT_RADIUS);
- } else {
- settings = {ui->optiTrackLength->value(), ui->optiTrackRadius->value()};
- }
- if (selectedPoint < 0) {
- MainWindow::getInstance()->getStore()->updateOptiTrackSettings(settings);
- MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
- } else {
- MainWindow::getInstance()->getStore()->getOptiTrackPoints()[selectedPoint]->updateOptiTrackSettings(settings);
- MainWindow::getInstance()->getOsgWidget()->getPointRenderer()->render(OptiTrack);
- MainWindow::getInstance()->getStore()->projectModified();
- MeshTools::optiTrackSanityCheck(MainWindow::getInstance()->getStore()->getOptiTrackPoints(), false);
- }
- }
- void EditWidget::setOptiTrackSettings(double length, double radius) {
- ui->optiTrackLength->setValue(length);
- ui->optiTrackRadius->setValue(radius);
- }
- void EditWidget::updateEMFTrackSettings(bool reset) {
- EMFTrackSettings settings;
- if (reset) {
- settings = {EMFTRACK_DEFAULT_WIDTH, EMFTRACK_DEFAULT_HEIGHT, EMFTRACK_DEFAULT_DEPTH};
- setEMFTrackSettings(EMFTRACK_DEFAULT_WIDTH, EMFTRACK_DEFAULT_HEIGHT, EMFTRACK_DEFAULT_DEPTH);
- } else {
- settings = {ui->emfTrackWidth->value(), ui->emfTrackHeight->value(), ui->emfTrackDepth->value()};
- }
- if (selectedPoint < 0) {
- MainWindow::getInstance()->getStore()->updateEMFTrackSettings(settings);
- MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
- } else {
- MainWindow::getInstance()->getStore()->getEMFTrackPoints()[selectedPoint]->updateEMFTrackSettings(settings);
- MainWindow::getInstance()->getOsgWidget()->getPointRenderer()->render(EMFTrack);
- MainWindow::getInstance()->getStore()->projectModified();
- }
- }
- void EditWidget::setEMFTrackSettings(double width, double height, double depth) {
- ui->emfTrackWidth->setValue(width);
- ui->emfTrackHeight->setValue(height);
- ui->emfTrackDepth->setValue(depth);
- }
- void EditWidget::updateSteamVRTrackSettings(bool reset) {
- SteamVRTrackSettings settings;
- if (reset) {
- settings = {STEAMVR_DEFAULT_LENGTH};
- setSteamVRTrackSettings(STEAMVR_DEFAULT_LENGTH);
- } else {
- settings = {ui->steamVrTrackLength->value()};
- }
- if (selectedPoint < 0) {
- MainWindow::getInstance()->getStore()->updateSteamVRTrackSettings(settings);
- MainWindow::getInstance()->getOsgWidget()->getPicker()->updateRenderer();
- } else {
- MainWindow::getInstance()->getStore()->getSteamVRTrackPoints()[selectedPoint]->updateSteamVRTrackSettings(settings);
- MainWindow::getInstance()->getOsgWidget()->getPointRenderer()->render(SteamVRTrack);
- MainWindow::getInstance()->getStore()->projectModified();
- MeshTools::steamVrTrackCollisionCheck(MainWindow::getInstance()->getStore()->getSteamVRTrackPoints(), false, MainWindow::getInstance()->getOsgWidget()->getVerifyGroup());
- }
- }
- void EditWidget::setSteamVRTrackSettings(double length) {
- ui->steamVrTrackLength->setValue(length);
- }
- void EditWidget::updateActionPointSettings(QString qinput) {
- std::string input = qinput.toUtf8().constData();
- if (MainWindow::getInstance()->getStore()->actionPointIdentifierInUse(input, selectedPoint) > 0) {
- ui->actionPointDoubleIdentifier->setVisible(true);
- } else {
- ui->actionPointDoubleIdentifier->setVisible(false);
- QString qtext = ui->actionPointIdentifier->text();
- ActionPointSettings settings = {qtext.toUtf8().constData()};
- if (selectedPoint < 0) {
- MainWindow::getInstance()->getStore()->updateActionPointSettings(settings);
- } else {
- MainWindow::getInstance()->getStore()->getActionPoints()[selectedPoint]->updateActionPointSettings(settings);
- MainWindow::getInstance()->getStore()->projectModified();
- }
- }
- }
- void EditWidget::resetActionPointSettings() {
- int iterator = 0;
- ActionPointSettings settings;
- std::string candidate;
- while (true) {
- candidate = "point";
- candidate += std::to_string(iterator);
- unsigned int result = MainWindow::getInstance()->getStore()->actionPointIdentifierInUse(candidate, selectedPoint);
- if (result == 0) {
- settings = {candidate};
- break;
- }
- iterator++;
- }
- ui->actionPointIdentifier->setText(QString::fromStdString(candidate));
- if (selectedPoint < 0) {
- MainWindow::getInstance()->getStore()->updateActionPointSettings(settings);
- } else {
- MainWindow::getInstance()->getStore()->getActionPoints()[selectedPoint]->updateActionPointSettings(settings);
- MainWindow::getInstance()->getStore()->projectModified();
- }
- }
- void EditWidget::setActionPointSettings(std::string identifier) {
- ui->actionPointIdentifier->setText(QString::fromStdString(identifier));
- if (MainWindow::getInstance()->getStore()->actionPointIdentifierInUse(identifier, selectedPoint) > 0) {
- ui->actionPointDoubleIdentifier->setVisible(true);
- } else {
- ui->actionPointDoubleIdentifier->setVisible(false);
- }
- }
- void EditWidget::deleteCurrentTrackPoint() {
- ActiveTrackingSystem activeTrackingSystem = getSelectedTrackingSystem();
- MainWindow::getInstance()->getStore()->removeTrackPoint(selectedPoint, activeTrackingSystem);
- selectedPoint = -1;
- switch(activeTrackingSystem) {
- case OptiTrack: {
- updateOptiTrackSettings(true);
- break;
- }
- case EMFTrack: {
- updateEMFTrackSettings(true);
- break;
- }
- case SteamVRTrack: {
- updateSteamVRTrackSettings(true);
- break;
- }
- case ActionPoints: {
- resetActionPointSettings();
- break;
- }
- }
- resetNormalModifier();
- invalidatePositions();
- MainWindow::getInstance()->getOsgWidget()->getPointRenderer()->render(activeTrackingSystem);
- }
- void EditWidget::exportProject() {
- Qt::CheckState optiTrackSelected = ui->optiTrackCkeckbox->checkState();
- Qt::CheckState emfTrackSelected = ui->emfTrackCheckbox->checkState();
- Qt::CheckState steamVrTrackSelected = ui->steamVrCheckbox->checkState();
- ExportSettings settings = {optiTrackSelected == Qt::Checked, emfTrackSelected == Qt::Checked, steamVrTrackSelected == Qt::Checked};
- QString fileName = QFileDialog::getSaveFileName(this, tr("Export your TrackpointApp Project"), "", tr("3MF Files (*.3mf)"));
- std::string exportFile = fileName.toUtf8().constData();
- MainWindow::getInstance()->getStore()->exportProject(exportFile, settings);
- }
- void EditWidget::changePositions() {
- osg::Vec3 origin = osg::Vec3(ui->anchorX->value(), ui->anchorY->value(), ui->anchorZ->value());
- if (selectedPoint >= 0) {
- ActiveTrackingSystem activeTrackingSystem = getSelectedTrackingSystem();
- MainWindow::getInstance()->getStore()->getTrackPointById(selectedPoint, activeTrackingSystem)->updatePositions(origin);
- MainWindow::getInstance()->getOsgWidget()->getPointRenderer()->render(activeTrackingSystem);
- MainWindow::getInstance()->getStore()->projectModified();
- }
- }
- void EditWidget::setPositionEditing(bool mode) {
- ui->anchorX->setReadOnly(mode);
- ui->anchorY->setReadOnly(mode);
- ui->anchorZ->setReadOnly(mode);
- }
- void EditWidget::manualOptiTrackSanityCheck() {
- MeshTools::optiTrackSanityCheck(MainWindow::getInstance()->getStore()->getOptiTrackPoints(), true);
- }
- void EditWidget::setOptiTrackSanityCheckStatus() {
- _optiTrackSanityCheck = ui->compensation->checkState() == Qt::Checked ? true : false;
- }
- void EditWidget::manualSteamVRTrackCollisionCheck() {
- MeshTools::steamVrTrackCollisionCheck(MainWindow::getInstance()->getStore()->getSteamVRTrackPoints(), true, MainWindow::getInstance()->getOsgWidget()->getVerifyGroup());
- }
- void EditWidget::setSteamVRTrackCollisionCheckStatus() {
- _steamVrTrackCollisionCheck = ui->compensation->checkState() == Qt::Checked ? true : false;
- }
- void EditWidget::setCountCheckString(ActiveTrackingSystem activeTrackingSystem) {
- int required = MainWindow::getInstance()->getStore()->getMinimumRequiredPoints(activeTrackingSystem);
- int available = MainWindow::getInstance()->getStore()->getCount(activeTrackingSystem);
- std::cout << available << " " << required << std::endl;
- QString okString("Everything is fine.");
- QString okStyle("color: lightgreen");
- QString errorString = QStringLiteral("Insufficient trackpoint count: Placed %1 but needs at least %2").arg(available).arg(required);
- QString errorStyle("color: yellow");
- switch(activeTrackingSystem) {
- case OptiTrack:
- if (available >= required) {
- ui->optiTrackCheck->setText(okString);
- ui->optiTrackCheck->setStyleSheet(okStyle);
- } else {
- ui->optiTrackCheck->setText(errorString);
- ui->optiTrackCheck->setStyleSheet(errorStyle);
- }
- break;
- case EMFTrack:
- if (available >= required) {
- ui->emfTrackCheck->setText(okString);
- ui->emfTrackCheck->setStyleSheet(okStyle);
- } else {
- ui->emfTrackCheck->setText(errorString);
- ui->emfTrackCheck->setStyleSheet(errorStyle);
- }
- break;
- case SteamVRTrack:
- if (available >= required) {
- ui->steamvrCheck->setText(okString);
- ui->steamvrCheck->setStyleSheet(okStyle);
- } else {
- ui->steamvrCheck->setText(errorString);
- ui->steamvrCheck->setStyleSheet(errorStyle);
- }
- break;
- case ActionPoints:
- break;
- }
- }
|