/**
* Spacenav Demo Qt
* Copyright © 2019 František Kučera (Frantovo.cz, GlobalCode.info)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "SpacenavWindow.h"
SpacenavWindow::SpacenavWindow() {
widget.setupUi(this);
resize(640, 480);
setWindowTitle("Spacenav Demo");
std::vector<QCheckBox*> buttons{ widget.button0, widget.button1};
for (QCheckBox* b : buttons) b->setEnabled(false);
std::vector<QProgressBar*> motions{
widget.motionX, widget.motionY, widget.motionZ,
widget.rotationX, widget.rotationY, widget.rotationZ
};
for (QProgressBar* m : motions) {
m->setMinimum(-500);
m->setMaximum(500);
m->setValue(0);
m->setFormat("%v");
}
widget.period->setMinimum(0);
widget.period->setMaximum(100);
widget.period->setValue(0);
widget.period->setFormat("%v ms");
widget.period->setToolTip("duration in milliseconds from the last change");
}
SpacenavWindow::~SpacenavWindow() {
}
void SpacenavWindow::spacenavMotionEvent(SpacenavWrapper::Event::MotionEvent e) {
widget.motionX->setValue(e.x);
widget.motionY->setValue(e.y);
widget.motionZ->setValue(e.z);
widget.rotationX->setValue(e.rx);
widget.rotationY->setValue(e.ry);
widget.rotationZ->setValue(e.rz);
widget.period->setValue(e.period);
// std::wcerr << L"period: " << e.period << std::endl;
}
void SpacenavWindow::spacenavButtonEvent(SpacenavWrapper::Event::ButtonEvent e) {
if (e.number == 0) widget.button0->setChecked(e.pressed);
if (e.number == 1) widget.button1->setChecked(e.pressed);
}
void SpacenavWindow::spacenavConnectionStatus(SpacenavWrapper::ConnectionStatus s) {
if (s == SpacenavWrapper::ConnectionStatus::DOMAIN_SOCKET) widget.connection->setText("connected through: domain socket");
if (s == SpacenavWrapper::ConnectionStatus::X11) widget.connection->setText("connected through: X11");
}