Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

orxonox/trunk/gui: moved some stuff to gui_gtk

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