]> git.mxchange.org Git - flightgear.git/commitdiff
Cleaned up the ATC communication dialog code somewhat
authordaveluff <daveluff>
Wed, 22 Oct 2003 10:50:11 +0000 (10:50 +0000)
committerdaveluff <daveluff>
Wed, 22 Oct 2003 10:50:11 +0000 (10:50 +0000)
src/ATC/ATCDialog.cxx

index baa01d3b4f6f33a39fb08bfcde6b2487070eb0d4..a8529499f178a4d6795fa62f21aac50431e90472 100644 (file)
@@ -210,8 +210,6 @@ static void ATCDialogOK (puObject *me)
 // DCL
 static void ATCDialog(puObject *cb)
 {
-    //ApHeadingDialogInput   ->    setValue ( heading );
-    //ApHeadingDialogInput    -> acceptInput();
     FG_PUSH_PUI_DIALOG(atcDialog);
 }
 
@@ -303,26 +301,35 @@ FGATCDialog::FGATCDialog() {
 }
 
 FGATCDialog::~FGATCDialog() {
-       if(atcFreqDialog) delete atcFreqDialog;
-       if(atcFreqDisplay) delete atcFreqDisplay;
+       if(atcFreqDialog) puDeleteObject(atcFreqDialog);
+       if(atcFreqDisplay) puDeleteObject(atcFreqDisplay);
+       if(ATCMenuBox) puDeleteObject(ATCMenuBox);
 }
 
 void FGATCDialog::Init() {
        // Add ATC-freq-search to the command list
        globals->get_commands()->addCommand("ATC-freq-search", do_ATC_freq_search);
        
+       int w;
+       int h;
+       int x;
+       int y;
+       
        // Init the freq-search dialog
+       w = 300;
+       h = 150;
+       x = (fgGetInt("/sim/startup/xsize") / 2) - (w / 2);
+       y = 50;
        char *s;
-       int hsize = 150;
-       atcFreqDialog = new puDialogBox (150, 50);
+       atcFreqDialog = new puDialogBox (x, y);
        {
-               atcFreqDialogFrame = new puFrame (0, 0, 300, hsize);
-               atcFreqDialogMessage = new puText          (40, (hsize - 30));
+               atcFreqDialogFrame = new puFrame (0, 0, w, h);
+               atcFreqDialogMessage = new puText          (40, (h - 30));
                atcFreqDialogMessage->setDefaultValue ("Enter airport identifier:");
                atcFreqDialogMessage->getDefaultValue (&s);
                atcFreqDialogMessage->setLabel(s);
        
-               atcFreqDialogInput = new puInput (50, (hsize - 75), 150, (hsize - 45));
+               atcFreqDialogInput = new puInput (50, (h - 75), 150, (h - 45));
                        
                atcFreqDialogOkButton     =  new puOneShot         (50, 10, 110, 50);
                atcFreqDialogOkButton     ->     setLegend         (gui_msg_OK);
@@ -339,18 +346,21 @@ void FGATCDialog::Init() {
        FG_FINALIZE_PUI_DIALOG(atcFreqDialog);
        
        // Init the freq-display dialog
-       hsize = 100;
-       atcFreqDisplay = new puDialogBox (250, 50);
+       w = 400;
+       h = 100;
+       x = (fgGetInt("/sim/startup/xsize") / 2) - (w / 2);
+       y = 50;
+       atcFreqDisplay = new puDialogBox (x, y);
        {
-               atcFreqDisplayFrame   = new puFrame (0, 0, 400, hsize);
+               atcFreqDisplayFrame   = new puFrame (0, 0, w, h);
                
-               atcFreqDisplayMessage = new puText          (40, (hsize - 30));
+               atcFreqDisplayMessage = new puText          (40, (h - 30));
                atcFreqDisplayMessage    -> setDefaultValue ("No freqencies found");
                atcFreqDisplayMessage    -> getDefaultValue (&s);
                atcFreqDisplayMessage    -> setLabel        (s);
                
                for(int i=0; i<ATC_MAX_FREQ_DISPLAY; ++i) {
-                       atcFreqDisplayText[i] = new puText(40, hsize - 65 - (30 * i));
+                       atcFreqDisplayText[i] = new puText(40, h - 65 - (30 * i));
                        atcFreqDisplayText[i]->setDefaultValue("");
                        atcFreqDisplayText[i]-> getDefaultValue (&s);
                        atcFreqDisplayText[i]-> setLabel        (s);
@@ -363,6 +373,31 @@ void FGATCDialog::Init() {
                atcFreqDisplayOkButton     ->     setCallback       (FreqDisplayOK);
        }
        FG_FINALIZE_PUI_DIALOG(atcFreqDisplay);
+       
+       // Init AK's interactive ATC menus
+       w = 500;
+       h = 110;
+       x = (fgGetInt("/sim/startup/xsize") / 2) - (w / 2);
+       //y = (fgGetInt("/sim/startup/ysize") / 2) - (h / 2);
+       y = 50;
+       ATCMenuBox = new puDialogBox (x, y);
+       {
+               ATCMenuFrame = new puFrame (0,0,w,h);
+               ATCMenuBoxMessage = new puText (w / 2, h - 30);
+               ATCMenuBoxMessage -> setLabel( "No transmission available" );
+               ATCMenuBoxMessage -> setLabelPlace(PUPLACE_TOP_CENTERED);
+               ATCOptionsList = new puButtonBox (50, 60, 450, 50, NULL, true);
+               ATCOptionsList -> hide();
+               atcDialogOkButton     =  new puOneShot         ((w/2)-85, 10, (w/2)-25, 50);
+               atcDialogOkButton     ->     setLegend         (gui_msg_OK);
+               atcDialogOkButton     ->     makeReturnDefault (TRUE);
+               atcDialogOkButton     ->     setCallback       (AKATCDialogOK);
+               
+               atcDialogCancelButton =  new puOneShot         ((w/2)+25, 10, (w/2)+85, 50);
+               atcDialogCancelButton ->     setLegend         (gui_msg_CANCEL);
+               atcDialogCancelButton ->     setCallback       (AKATCDialogCancel);
+       }
+       FG_FINALIZE_PUI_DIALOG(ATCMenuBox);
 }
 
 // AK
@@ -424,19 +459,15 @@ void FGATCDialog::DoDialog() {
                fgSetBool("/sim/atc/opt8",false);
                fgSetBool("/sim/atc/opt9",false);
                
-               //int yc = 10;
-               int yc = 70;
-               int xsize = 600;
+               int w = 500;
+               int k = atcmlist.size();
+               int h = 110 + k * 25;
+               //cout << "k = " << k << '\n';
+               
+               ATCMenuFrame->setSize(w, h); 
                
-               if ( atcmlist.size() != 0 ){ 
-                       int k=atcmlist.size();
-                       //int k = 3;
-                       //cout << "k = " << k << endl;
-                       int y = (fgGetInt("/sim/startup/ysize") - 200 - 20 - k*20);
-                       ATCMenuBox = new puDialogBox (100, y);
-                       ATCMenuFrame      =  new puFrame (0,0,xsize,yc+40);
+               if(k) { 
                        // loop over all entries in atcmentrylist
-                       ATCOptionsList = new puButtonBox (50, 50, 450, 50+(k*25), NULL, true);
                        char** optList = new char*[k+1];
                        int kk = 0;
                        for ( ; current != last ; ++current ) {
@@ -449,36 +480,22 @@ void FGATCDialog::DoDialog() {
                                strcpy(optList[kk], mentry[kk].c_str());
                                //cout << "optList[" << kk << "] = " << optList[kk] << endl; 
                                mtrans[kk] =              current->transmission;
-                               //ATCMenuBoxMessage =  new puText (10, yc);
-                               //ATCMenuBoxMessage ->     setLabel( mentry[kk].c_str() );
-                               yc += 20;
                                ++kk;
                        } 
-                       yc += 2*20;
                        optList[k] = NULL;
                        ATCOptionsList->newList(optList);
+                       ATCOptionsList->setSize(w-100, h-100);
+                       ATCOptionsList->reveal();
+                       ATCMenuBoxMessage -> setLabel( "ATC Menu" );
+                       ATCMenuBoxMessage -> setPosition(w / 2, h - 30);
                } else {
-                       int y = (fgGetInt("/sim/startup/ysize") - 100 - 20 );
-                       ATCMenuBox = new puDialogBox (10, y);
-                       ATCMenuFrame      =  new puFrame (0,0,xsize,yc+40);
-                       ATCMenuBoxMessage =  new puText (10, yc-10);
+                       ATCOptionsList->hide();
                        ATCMenuBoxMessage ->     setLabel( "No transmission available" );
+                       ATCMenuBoxMessage -> setPosition(w / 2, h - 20);
                }
                
-               ATCMenuBoxMessage =  new puText (10, yc+10);
-               ATCMenuBoxMessage ->     setLabel( "ATC Menu" );
-               atcDialogOkButton     =  new puOneShot         ((xsize/2)-85, 10, (xsize/2)-25, 50);
-               atcDialogOkButton     ->     setLegend         (gui_msg_OK);
-               atcDialogOkButton     ->     makeReturnDefault (TRUE);
-               atcDialogOkButton     ->     setCallback       (AKATCDialogOK);
-               
-               atcDialogCancelButton =  new puOneShot         ((xsize/2)+25, 10, (xsize/2)+85, 50);
-               atcDialogCancelButton ->     setLegend         (gui_msg_CANCEL);
-               atcDialogCancelButton ->     setCallback       (AKATCDialogCancel);
-               FG_FINALIZE_PUI_DIALOG( ATCMenuBox );
                FG_PUSH_PUI_DIALOG( ATCMenuBox );
                
-               
                /*      
                if ( atckey != -1 && TransDisplayed && mtrans[atckey-1].c_str() != "" ) {
                        cout << mtrans[atckey-1].c_str() << endl;