summaryrefslogtreecommitdiff
path: root/src/gui/KeyManager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/KeyManager.cc')
-rw-r--r--src/gui/KeyManager.cc64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/gui/KeyManager.cc b/src/gui/KeyManager.cc
new file mode 100644
index 0000000..c7ccca0
--- /dev/null
+++ b/src/gui/KeyManager.cc
@@ -0,0 +1,64 @@
+/*
+ * KeyManager.cc
+ *
+ * Created on: May 4, 2011
+ * Author: jakob
+ */
+
+#include "KeyManager.h"
+#include "Stage.h"
+#include "util.h"
+#include <QGLWidget>
+
+using namespace vhc::util;
+
+namespace vhc {
+
+
+KeyManager::KeyManager(Stage& stage): stage(stage), keys() {
+
+}
+
+KeyManager::~KeyManager() {}
+
+void KeyManager::press(int key) {
+ std::set<int>::iterator it = keys.begin();
+
+ keys.insert(it, key);
+
+ switch(key) {
+ case Qt::Key_Escape:
+ QApplication::exit(0);
+ break;
+ case Qt::Key_1:
+ stage.setDisplayMode(FILL);
+ break;
+ case Qt::Key_2:
+ stage.setDisplayMode(WIREFRAME);
+ break;
+ case Qt::Key_3:
+ stage.setDisplayMode(POINTS);
+ break;
+ case Qt::Key_Space:
+ stage.setRunning(!stage.isRunning());
+ break;
+ case Qt::Key_QuoteLeft:
+ stage.getParticleRenderer().enableDrawSpheres(!stage.getParticleRenderer().isDrawSpheresEnabled());
+ break;
+ default:
+ break;
+ }
+
+};
+
+void KeyManager::release(int key) {
+ keys.erase(key);
+}
+
+bool KeyManager::isPressed(int key) const {
+ return (keys.find(key) != keys.end());
+}
+
+
+
+}