src/SpacenavWindow.cpp
author František Kučera <franta-hg@frantovo.cz>
Thu, 07 Mar 2019 17:03:43 +0100
branchv_0
changeset 7 b6c0e1574a8b
parent 6 49560660d230
child 8 f351c261cbfd
permissions -rw-r--r--
display buttons, motions and rotations of all axes

/**
 * 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, either version 3 of the License, or
 * (at your option) any later version.
 *
 * 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");
	}
}

SpacenavWindow::~SpacenavWindow() {
}

void SpacenavWindow::spacenavMotionEvent(SpacenavWrapper::Event::MotionEvent e) {
	setWindowTitle("m event!");
	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);
}

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);
}