Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/trunk/gui/orxonox_gui_keys.cc @ 3152

Last change on this file since 3152 was 3152, checked in by bensch, 19 years ago

orxonox/trunk/gui: keys in the new Style

File size: 5.3 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   This program is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   GNU General Public License for more details.
15
16   You should have received a copy of the GNU General Public License
17   along with this program; if not, write to the Free Software Foundation,
18   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
19
20
21   ### File Specific:
22   main-programmer: Benjamin Grauer
23
24*/
25
26#include "orxonox_gui_keys.h"
27
28/**
29   \brief Creates an Keyboard-Frame
30*/
31OrxonoxGuiKeys::OrxonoxGuiKeys ()
32{
33  keysFrame = new Frame ("Keyboard-Options:");
34  keysFrame->setGroupName("Keyboard");
35  keysBox = new Box ('v');
36  player1 = new Player("player1");
37  //  player2 = new Player("player2");
38
39  keysBox->fill(player1->getOpenButton());
40  //  keysBox->fill(player2->getOpenButton());
41
42  keysFrame->fill (keysBox);
43}
44
45/**
46   \brief Return the Frame
47   \return Returns the Audio-frame
48*/
49Widget* OrxonoxGuiKeys::getWidget ()
50{
51  return keysFrame;
52}
53
54
55
56/* PLAYER */
57Player::Player(char* player)
58{
59  openButton = new Button (player);
60  openButton->connectSignal("button_press_event", this, openWindowEvent);
61
62  pKeyWindow = new Window("keys of player");
63   pKeysBox = new Box('v');
64    pKeysBox->fill(addKey(UP, "up"));
65    pKeysBox->fill(addKey(DOWN, "down"));
66    pKeysBox->fill(addKey(LEFT, "left"));
67    pKeysBox->fill(addKey(RIGHT, "right"));
68    pKeysBox->fill(addKey(SHOOT, "shoot"));
69   
70    closeButton = new Button("close");
71    closeButton->connectSignal("button_press_event", this, closeWindowEvent);
72    pKeysBox->fill(closeButton);
73   pKeyWindow->fill(pKeysBox);
74   //  Window::addWindow(pKeyWindow);
75}
76
77Widget* Player::addKey (KEYS key, char* name)
78{
79  pKeyBox[key] = new Box();
80  pKeyLabel[key] = new Label (name);
81  pKeyButton[key] = new Button(name);
82  pKeyButton[key]->saveable = true;
83 
84  pKeyButton[key]->connectSignal("key_press_event", pKeyButton[key], key_cb);
85 
86  pKeyBox[key]->fill(pKeyLabel[key]);
87  pKeyBox[key]->fill(pKeyButton[key]);
88  return pKeyBox[key];
89}
90
91Button* Player::getOpenButton()
92{
93  return openButton;
94}
95
96
97void Player::setkey(KEYS key)
98{
99  cout << "setting up Key: "<< key <<endl;
100}
101
102gint Player::openWindowEvent (GtkWidget* widget, GdkEvent* event, void* player)
103{
104  static_cast<Player*>(player)->pKeyWindow->open();
105}
106
107gint Player::closeWindowEvent (GtkWidget* widget, GdkEvent* event, void* player)
108{
109  static_cast<Player*>(player)->pKeyWindow->close();
110}
111
112/**
113   \brief Function which gets keystrokes
114   \param w the widget that released the Function.
115   \param event The event that happened.
116   \param Widget the Widget which will be applied.
117   \returns Nothing
118*/
119gint Player::key_cb(GtkWidget* w, GdkEventKey* event, void* widget)
120{
121  Button* button = static_cast<Button*>(widget);
122
123  switch(event->keyval) {
124  case GDK_Up:
125    printf("Up arrow key!\n");
126    button->setTitle("up");
127    break;
128  case GDK_Down:
129    printf("Down arrow key!\n");
130    button->setTitle("down");
131    break;
132  case GDK_Left:
133    printf("Left arrow key!\n");
134    button->setTitle("left");
135    break;
136  case GDK_Right:
137    printf("Right arrow key!\n");
138    button->setTitle("right");
139    break;
140
141  case GDK_space:
142    printf("Space Pressed.\n");
143    button->setTitle("space");
144    break;
145
146  case 65293:
147    printf("Enter Pressed\n");
148    button->setTitle("enter");
149    break;
150
151    // Special Keys //
152  case GDK_Shift_L:
153    printf("Left Shift!\n");
154    button->setTitle("l_shift");
155    break;
156  case GDK_Shift_R:
157    printf("Right Shift!\n");
158    button->setTitle("r_shift");
159    break;
160  case GDK_Control_L:
161    printf("Left Control!\n");
162    button->setTitle("l_ctrl");
163    break;
164  case GDK_Control_R:
165    printf("Right Control!\n");
166    button->setTitle("r_ctrl");
167    break;
168  case GDK_Alt_L:
169    printf("Left Alt!\n");
170    button->setTitle("l_alt");
171    break;
172  case GDK_Alt_R:
173    printf("Rigth Alt!\n");
174    button->setTitle("r_alt");
175    break;
176    // FXX KEYS //
177  case GDK_F1:
178    printf("F1!\n");
179    button->setTitle("f1");
180    break;
181  case GDK_F2:
182    printf("F2!\n");
183    button->setTitle("f2");
184    break;
185  case GDK_F3:
186    printf("F3!\n");
187    button->setTitle("f3");
188    break;
189  case GDK_F4:
190    printf("F4!\n");
191    button->setTitle("f4");
192    break;
193  case GDK_F5:
194    printf("F5!\n");
195    button->setTitle("f5");
196    break;
197  case GDK_F6:
198    printf("F6!\n");
199    button->setTitle("f6");
200    break;
201  case GDK_F7:
202    printf("F7!\n");
203    button->setTitle("f7");
204    break;
205  case GDK_F8:
206    printf("F8!\n");
207    button->setTitle("f8");
208    break;
209  case GDK_F9:
210    printf("F9\n");
211    button->setTitle("f9");
212    break;
213  case GDK_F10:
214    printf("F10!\n");
215    button->setTitle("f10");
216    break;
217  case GDK_F11:
218    printf("F11!\n");
219    button->setTitle("f11");
220    break;
221  case GDK_F12:
222    printf("F12!\n");
223    button->setTitle("f12");
224    break;
225
226
227  default:
228    char* tmp;
229    sprintf(tmp, "%c", event->keyval);
230    printf ("other key %s \n", tmp);
231    button->setTitle(tmp);
232    break;
233  }
234}
Note: See TracBrowser for help on using the repository browser.