/* orxonox - the future of 3D-vertical-scrollers Copyright (C) 2004 orx 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 2, 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, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ### File Specific: main-programmer: Benjamin Grauer */ #include "orxonox_gui_keys.h" /** \brief Creates an Keyboard-Frame */ OrxonoxGuiKeys::OrxonoxGuiKeys () { keysFrame = new Frame ("Keyboard-Options:"); keysFrame->setGroupName("Keyboard"); keysBox = new Box ('v'); player1 = new Player("player1"); // player2 = new Player("player2"); keysBox->fill(player1->getOpenButton()); // keysBox->fill(player2->getOpenButton()); keysFrame->fill (keysBox); } /** \brief Return the Frame \return Returns the Audio-frame */ Widget* OrxonoxGuiKeys::getWidget () { return keysFrame; } /* PLAYER */ Player::Player(char* player) { openButton = new Button (player); openButton->connectSignal("button_press_event", this, openWindowEvent); keyWindow = new Window("keys of player"); keysBox = new Box('v'); keysBox->fill(addKey(UP, "up")); keysBox->fill(addKey(DOWN, "down")); keysBox->fill(addKey(LEFT, "left")); keysBox->fill(addKey(RIGHT, "right")); keysBox->fill(addKey(SHOOT, "shoot")); keyWindow->fill(keysBox); windowIsOpen = false; } Widget* Player::addKey (KEYS key, char* name) { keyBox[key] = new Box(); keyLabel[key] = new Label (name); keyButton[key] = new Button(name); keyButton[key]->saveable; keyButton[key]->connectSignal("key_press_event", keyButton[key], key_cb); keyBox[key]->fill(keyLabel[key]); keyBox[key]->fill(keyButton[key]); return keyBox[key]; } Button* Player::getOpenButton() { return openButton; } void Player::setkey(KEYS key) { cout << "setting up Key: "<< key <showall(); else keyWindow->hide(); windowIsOpen = !windowIsOpen; } gint Player::openWindowEvent (GtkWidget* widget, GdkEvent* event, void* player) { static_cast(player)->openWindow(); } /** \brief Function which gets keystrokes \param w the widget that released the Function. \param event The event that happened. \param Widget the Widget which will be applied. \returns Nothing */ gint Player::key_cb(GtkWidget* w, GdkEventKey* event, void* widget) { Button* button = static_cast(widget); switch(event->keyval) { case GDK_Up: printf("Up arrow key!\n"); button->setTitle("up"); break; case GDK_Down: printf("Down arrow key!\n"); button->setTitle("down"); break; case GDK_Left: printf("Left arrow key!\n"); button->setTitle("left"); break; case GDK_Right: printf("Right arrow key!\n"); button->setTitle("right"); break; case GDK_space: printf("Space Pressed.\n"); button->setTitle("space"); break; case 65293: printf("Enter Pressed\n"); button->setTitle("enter"); break; // Special Keys // case GDK_Shift_L: printf("Left Shift!\n"); button->setTitle("l_shift"); break; case GDK_Shift_R: printf("Right Shift!\n"); button->setTitle("r_shift"); break; case GDK_Control_L: printf("Left Control!\n"); button->setTitle("l_ctrl"); break; case GDK_Control_R: printf("Right Control!\n"); button->setTitle("r_ctrl"); break; case GDK_Alt_L: printf("Left Alt!\n"); button->setTitle("l_alt"); break; case GDK_Alt_R: printf("Rigth Alt!\n"); button->setTitle("r_alt"); break; // FXX KEYS // case GDK_F1: printf("F1!\n"); button->setTitle("f1"); break; case GDK_F2: printf("F2!\n"); button->setTitle("f2"); break; case GDK_F3: printf("F3!\n"); button->setTitle("f3"); break; case GDK_F4: printf("F4!\n"); button->setTitle("f4"); break; case GDK_F5: printf("F5!\n"); button->setTitle("f5"); break; case GDK_F6: printf("F6!\n"); button->setTitle("f6"); break; case GDK_F7: printf("F7!\n"); button->setTitle("f7"); break; case GDK_F8: printf("F8!\n"); button->setTitle("f8"); break; case GDK_F9: printf("F9\n"); button->setTitle("f9"); break; case GDK_F10: printf("F10!\n"); button->setTitle("f10"); break; case GDK_F11: printf("F11!\n"); button->setTitle("f11"); break; case GDK_F12: printf("F12!\n"); button->setTitle("f12"); break; default: char* tmp; sprintf(tmp, "%c", event->keyval); printf ("other key %s \n", tmp); button->setTitle(tmp); break; } }