diff options
Diffstat (limited to 'src/gui/KeyManager.cc')
-rw-r--r-- | src/gui/KeyManager.cc | 64 |
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()); +} + + + +} |