00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "../Include/FlyLegacy.h"
00026 #include "../Include/Ui.h"
00027 #include "../Include/TimeManager.h"
00028 #include "../Include/Situation.h"
00029 #include "../Include/Globals.h"
00030
00031
00032 typedef struct {
00033 puDialogBox* dialog;
00034 puFrame* frame;
00035 puText* title;
00036 puComboBox* keyset;
00037 puLargeInput* text;
00038 puOneShot* ok;
00039
00040 char buffer[5000];
00041 } SKeysButtonsDialogData;
00042
00043 static SKeysButtonsDialogData *data = NULL;
00044
00045
00046 void keys_buttons_dlg_kill (void)
00047 {
00048 if (data == NULL) return;
00049
00050
00051 delete data->dialog;
00052
00053
00054 delete data;
00055 data = NULL;
00056 }
00057
00058 static void keys_buttons_ok_cb (puObject* obj)
00059 {
00060
00061 keys_buttons_dlg_kill ();
00062 }
00063
00064 static void keys_buttons_keyset_cb (puObject* obj)
00065 {
00066 puComboBox *cb = (puComboBox*)obj;
00067
00068
00069 strcpy (data->buffer, "");
00070
00071
00072 int iKset = cb->getCurrentItem();
00073 CKeySet* kset = globals->keymap->GetKeySet (iKset);
00074
00075
00076 int nDefs = kset->GetNumKeyDefinitions ();
00077 for (int i=0; i< nDefs; i++) {
00078 CKeyDefinition *kkey = kset->GetKeyDefinition (i);
00079
00080 char code[64];
00081 formatKeyCode (code, kkey->GetCode ());
00082
00083 char def[64];
00084 sprintf (def, "%-28s%22s\n", kkey->GetName(), code);
00085
00086 strcat (data->buffer, def);
00087 }
00088
00089 data->text->setText (data->buffer);
00090 data->text->setCursor (0);
00091 }
00092
00093 void keys_buttons_dlg_create (void)
00094 {
00095 if (data != NULL) return;
00096
00097
00098 data = new SKeysButtonsDialogData;
00099
00100
00101 data->dialog = new puDialogBox (20, 100);
00102 {
00103
00104 data->frame = new puFrame (0, 0, 500, 440);
00105
00106
00107 data->title = new puText (10, 410);
00108 data->title->setLabel ("Keys and Buttons:");
00109
00110
00111 int nSets = globals->keymap->GetNumKeySets();
00112 char **list = new char*[nSets+1];
00113 for (int i=0; i<nSets; i++) {
00114 CKeySet *kset = globals->keymap->GetKeySet (i);
00115 list[i] = new char[64];
00116 strcpy (list[i], kset->GetName ());
00117 }
00118 list[nSets] = NULL;
00119
00120
00121 data->keyset = new puComboBox (20, 380, 480, 400, list);
00122 data->keyset->setLabel ("Key Set : ");
00123 data->keyset->setLabelPlace (PUPLACE_CENTERED_LEFT);
00124 data->keyset->setStyle (PUSTYLE_BOXED);
00125 data->keyset->setCallback (keys_buttons_keyset_cb);
00126
00127
00128 data->text = new puLargeInput (20, 60, 460, 300, 2, 20);
00129 data->text->disableInput();
00130 data->text->setStyle (PUSTYLE_SMALL_SHADED);
00131 strcpy (data->buffer, "");
00132 data->text->setText (data->buffer);
00133
00134
00135 data->ok = new puOneShot (400, 20, 460, 40);
00136 data->ok->setLegend ("OK");
00137 data->ok->makeReturnDefault (true);
00138 data->ok->setStyle (PUSTYLE_SMALL_SHADED);
00139 data->ok->setCallback (keys_buttons_ok_cb);
00140 }
00141 data->dialog->close ();
00142 data->dialog->reveal ();
00143
00144
00145 data->keyset->setCurrentItem (0);
00146 }
00147