Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

orxonox/trunk/gui: efficiency

File size: 6.6 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 ('h');
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  char windowName[100] = "Keyboard settings of ";
60  strcat (windowName, player);
61  pKeyWindow = new Window(windowName);
62  pKeyFrame = new Frame (windowName);
63   pKeysBox = new Box('v');
64   pKeysBox->setGroupName (player);
65    pKeysBox->fill(addKey(UP, "up"));
66    pKeysBox->fill(addKey(DOWN, "down"));
67    pKeysBox->fill(addKey(LEFT, "left"));
68    pKeysBox->fill(addKey(RIGHT, "right"));
69    pKeysBox->fill(addKey(SHOOT, "shoot"));
70   
71    closeButton = new Button("close");
72    closeButton->connectSignal("button_press_event", pKeyWindow, Window::windowClose);
73
74    pKeysBox->fill(closeButton);
75    pKeyFrame->fill(pKeysBox);
76   pKeyWindow->fill(pKeyFrame);
77   Window::addWindow(pKeyWindow);
78   pKeyWindow->connectSignal("destroy", pKeyWindow, Window::windowClose);
79   pKeyWindow->connectSignal("delete_event", pKeyWindow, Window::windowClose);
80
81  openButton = new Button (player);
82  openButton->connectSignal("button_press_event", pKeyWindow, Window::windowOpen);
83
84  inputWindow = new Window("inputWindow");
85
86  inputButton = new Button ("test");
87  inputWindow->fill (inputButton);
88  inputWindow->connectSignal("destroy",  Widget::doNothingSignal);
89  inputWindow->connectSignal("delete_event", Widget::doNothingSignal);
90
91}
92
93Widget* Player::addKey (KEYS key, char* name)
94{
95  inputKey[key] = new InputKey;
96  inputKey[key]->pKeyBox = new Box();
97  inputKey[key]->pKeyButton = new Button(name);
98  inputKey[key]->pKeyOLabel = new OptionLabel (name, name);
99  inputKey[key]->pKeyOLabel->saveable = true;
100 
101  //inputKey[key]->pKeyButton->connectSignal("key_press_event", inputKey[key]->pKeyButton, key_cb);
102  inputKey[key]->pKeyButton->connectSignal("button_press_event", inputKey[key], inputWindowEvent);
103
104  inputKey[key]->pKeyBox->fill(inputKey[key]->pKeyButton);
105  inputKey[key]->pKeyBox->fill(inputKey[key]->pKeyOLabel);
106  return inputKey[key]->pKeyBox;
107}
108
109Button* Player::getOpenButton()
110{
111  return openButton;
112}
113
114
115void Player::setkey(KEYS key)
116{
117  cout << "setting up Key: "<< key <<endl;
118}
119
120Window* Player::inputWindow = NULL;
121Button* Player::inputButton = NULL;
122long Player::keySignal = 0;
123
124gint Player::inputWindowEvent(GtkWidget* w, GdkEventKey* event, void* inputKey)
125{
126  inputButton->setTitle("press a Key");
127  keySignal = inputButton->connectSignal("key_press_event", inputKey, key_cb);
128  inputWindow->open();
129}
130 
131/**
132   \brief Function which gets keystrokes
133   \param w the widget that released the Function.
134   \param event The event that happened.
135   \param Widget the Widget which will be applied.
136   \returns Nothing
137*/
138gint Player::key_cb(GtkWidget* w, GdkEventKey* event, void* inputKey)
139{
140  InputKey* inputkey = (InputKey*) inputKey;
141  char title [20];
142
143  switch(event->keyval) 
144    {
145    case GDK_Up:
146      printf("Up arrow key!\n");
147      strcpy(title, "up");
148      break;
149    case GDK_Down:
150      printf("Down arrow key!\n");
151      strcpy(title, "down");
152      break;
153    case GDK_Left:
154      printf("Left arrow key!\n");
155      strcpy(title, "left");
156      break;
157    case GDK_Right:
158      printf("Right arrow key!\n");
159      strcpy(title, "right");
160      break;
161     
162    case GDK_space:
163      printf("Space Pressed.\n");
164      strcpy(title, "space");
165      break;
166     
167    case 65293:
168      printf("Enter Pressed\n");
169      strcpy(title, "enter");
170      break;
171     
172      // Special Keys //
173    case GDK_Escape:
174      printf("Esc Pressed.\n");
175      strcpy(title, "esc");
176      break;
177    case GDK_Tab:
178      printf("Tab Pressed.\n");
179      strcpy(title, "tab");
180      break;
181    case GDK_Shift_L:
182      printf("Left Shift!\n");
183      strcpy(title, "l_shift");
184      break;
185    case GDK_Shift_R:
186      printf("Right Shift!\n");
187      strcpy(title, "r_shift");
188      break;
189    case GDK_Control_L:
190      printf("Left Control!\n");
191      strcpy(title, "l_ctrl");
192      break;
193    case GDK_Control_R:
194      printf("Right Control!\n");
195      strcpy(title, "r_ctrl");
196      break;
197    case GDK_Alt_L:
198      printf("Left Alt!\n");
199      strcpy(title, "l_alt");
200      break;
201    case GDK_Alt_R:
202      printf("Rigth Alt!\n");
203      strcpy(title, "r_alt");
204      break;
205      // FXX KEYS //
206    case GDK_F1:
207      printf("F1!\n");
208      strcpy(title, "f1");
209      break;
210    case GDK_F2:
211      printf("F2!\n");
212      strcpy(title, "f2");
213      break;
214    case GDK_F3:
215      printf("F3!\n");
216      strcpy(title, "f3");
217      break;
218    case GDK_F4:
219      printf("F4!\n");
220      strcpy(title, "f4");
221      break;
222    case GDK_F5:
223      printf("F5!\n");
224      strcpy(title, "f5");
225      break;
226    case GDK_F6:
227      printf("F6!\n");
228      strcpy(title, "f6");
229      break;
230    case GDK_F7:
231      printf("F7!\n");
232      strcpy(title, "f7");
233      break;
234    case GDK_F8:
235      printf("F8!\n");
236      strcpy(title, "f8");
237      break;
238    case GDK_F9:
239      printf("F9\n");
240      strcpy(title, "f9");
241      break;
242    case GDK_F10:
243      printf("F10!\n");
244      strcpy(title, "f10");
245      break;
246    case GDK_F11:
247      printf("F11!\n");
248      strcpy(title, "f11");
249      break;
250    case GDK_F12:
251      printf("F12!\n");
252      strcpy(title, "f12");
253      break;
254     
255     
256    default:
257      char* tmp;
258      sprintf(tmp, "%c", event->keyval);
259      printf ("other key %s \n", tmp);
260      strcpy(title, tmp);
261      break;
262    }
263
264  inputkey->pKeyOLabel->setValue (title);
265  inputButton->disconnectSignal(keySignal);
266  inputWindow->close();
267}
Note: See TracBrowser for help on using the repository browser.