]> git.mxchange.org Git - flightgear.git/commitdiff
GUI changes contributed by Norman Vine.
authorcurt <curt>
Thu, 27 May 1999 00:21:22 +0000 (00:21 +0000)
committercurt <curt>
Thu, 27 May 1999 00:21:22 +0000 (00:21 +0000)
Simulator/GUI/gui.cxx
Simulator/GUI/gui.h

index d3db56ff3adb2da09a25e2aa9ab879028863f03a..5a50fe92d0078558964ef3a2e69b284cd57956b0 100644 (file)
 
 FG_USING_STD(string);
 
-// Pui hides low level access to the mouse and menu display states
-// so for now we track these in case we want to know about them
-puFont guiFnt = 0;               // Our High Level Gui Font
-fntTexFont *guiFntHandle = 0;    // lower level access to guiFnt's Font
-static int _mX = 0;              // current mouse x
-static int  _mY = 0;             //               y
-static int last_buttons = 0 ;    // mouse button state
-static int mouse_active = 0;     // is mouse displayed
-static int menu_on = 0;          //    menu  displayed
-
-
-// PUI objects
+puFont guiFnt = 0;
+fntTexFont *guiFntHandle = 0;
+
 static puMenuBar    *mainMenuBar = 0;
 //static puButton     *hideMenuButton = 0;
 
@@ -90,7 +81,6 @@ static puText       *YNdialogBoxMessage = 0;
 static puOneShot    *YNdialogBoxOkButton = 0;
 static puOneShot    *YNdialogBoxNoButton = 0;
 
-// Accessor CallBacks for external PUI Objects
 // extern void NewAltitude( puObject *cb );
 // extern void NewHeading( puObject *cb );
 extern void fgAPAdjust( puObject * );
@@ -99,6 +89,13 @@ extern void fgLatLonFormatToggle( puObject *);
 /* --------------------------------------------------------------------
 Mouse stuff
 ---------------------------------------------------------------------*/
+
+static int _mX = 0;
+static int  _mY = 0;
+static int last_buttons = 0 ;
+static int mouse_active = 0;
+static int menu_on = 0;
+
 void guiMotionFunc ( int x, int y )
 {
     _mX = x;
@@ -155,11 +152,6 @@ static inline void TurnCursorOff( void )
 #endif
 }
 
-// If the gui isn't active try to hide the mouse
-// an if the qui requested show the mouse
-// this can get confused if it rerequesting the gui object
-// should resync things.
-// see PUI macros in gui.hxx for normal use
 void maybeToggleMouse( void )
 {
     static int first_time = ~0;
@@ -199,7 +191,7 @@ void BusyCursor( int restore )
 void ConfirmExitDialog(void)
 {
     string Msg("Really Quit");
-    YNdialogBoxMessage -> setLabel(Msg.c_str());    
+    YNdialogBoxMessage -> setLabel(Msg.c_str());
     YNdialogBoxNoButton-> makeReturnDefault  (TRUE );
     FG_PUSH_PUI_DIALOG( YNdialogBox );
 }
@@ -216,26 +208,25 @@ void mkDialog (char *txt)
 }
 
 // Repair any damage done to the Panel by other Gui Items
-// see PUI macros in gui.hxx for use
 void guiFixPanel( void )
 {
     int toggle_pause;
     
     if ( current_options.get_panel_status() ) {
-        
-        FGView *v = &current_view;
-        FGTime *t = FGTime::cur_time_params;
+               
+       FGView *v = &current_view;
+       FGTime *t = FGTime::cur_time_params;
 
-        if( (toggle_pause = !t->getPause()) )
-            t->togglePauseMode();
-    
-        // this seems to be the only way to do this :-(
-        // problem is the viewport has been mucked with
-        xglViewport(0, 0 , (GLint)(v->winWidth), (GLint)(v->winHeight) );
-        FGPanel::OurPanel->ReInit(0, 0, 1024, 768);
-        
-        if(toggle_pause)
-            t->togglePauseMode();
+       if( (toggle_pause = !t->getPause()) )
+           t->togglePauseMode();
+       
+       // this seems to be the only way to do this :-(
+       // problem is the viewport has been mucked with
+       xglViewport(0, 0 , (GLint)(v->winWidth), (GLint)(v->winHeight) );
+       FGPanel::OurPanel->ReInit(0, 0, 1024, 768);
+               
+       if(toggle_pause)
+           t->togglePauseMode();
     }
 }
 
@@ -243,13 +234,13 @@ void guiFixPanel( void )
 void guiToggleMenu(void)
 {
     if( menu_on ) {
-        // printf("Hiding Menu\n");
-        mainMenuBar->hide  ();
-        TurnCursorOff();
+       // printf("Hiding Menu\n");
+       mainMenuBar->hide  ();
+       TurnCursorOff();
     } else {
-        // printf("Showing Menu\n");
-        mainMenuBar->reveal();
-        TurnCursorOn();
+       // printf("Showing Menu\n");
+       mainMenuBar->reveal();
+       TurnCursorOn();
     }
     menu_on = ~menu_on;
 }
@@ -277,11 +268,10 @@ void hideMenuCb (puObject *cb)
     guiToggleMenu();
 }
 
-// This is the accessor function
 void goodBye(puObject *)
 {
-    // FG_LOG( FG_INPUT, FG_ALERT, 
-    //                 "Program exiting normally at user request." );
+    // FG_LOG( FG_INPUT, FG_ALERT,
+    //         "Program exiting normally at user request." );
     cout << "Program exiting normally at user request." << endl;
 
     // if(gps_bug)
@@ -298,13 +288,15 @@ void goAwayCb (puObject *me)
 
 void mkDialogInit (void)
 {
-//  printf("mkDialogInit\n");
-    dialogBox = new puDialogBox (150, 50);
+    // printf("mkDialogInit\n");
+    int x = (current_options.get_xsize()/2 - 400/2);
+    int y = (current_options.get_ysize()/2 - 100/2);
+    dialogBox = new puDialogBox (x, y); // 150, 50
     {
-        dialogFrame = new puFrame (0,0,400, 100);
-        dialogBoxMessage  =  new puText         (10, 70);
-        dialogBoxMessage  -> setLabel           ("");
-        dialogBoxOkButton =  new puOneShot      (180, 10, 240, 50);
+       dialogFrame = new puFrame (0,0,400,100);
+       dialogBoxMessage  =  new puText         (10, 70);
+       dialogBoxMessage  -> setLabel           ("");
+       dialogBoxOkButton =  new puOneShot      (180, 10, 240, 50);
     }
     FG_FINALIZE_PUI_DIALOG( dialogBox );
 }
@@ -321,26 +313,30 @@ void goAwayYesNoCb(puObject *me)
 
 void ConfirmExitDialogInit(void)
 {
-//  printf("ConfirmExitDialogInit\n");
+    // printf("ConfirmExitDialogInit\n");
     string Msg("Really Quit");
-//  int len = 350/2 - puGetStringWidth( puGetDefaultLabelFont(), AptLabel )/2;
+    // int len = 350/2 - puGetStringWidth( puGetDefaultLabelFont(), AptLabel )/2;
     int len = 200 - puGetStringWidth( puGetDefaultLabelFont(), Msg.c_str() )/2;
-    
-    YNdialogBox = new puDialogBox (150, 50);
+       
+    int x = (current_options.get_xsize()/2 - 400/2);
+    int y = (current_options.get_ysize()/2 - 100/2);
+       
+    YNdialogBox = new puDialogBox (x, y); // 150, 50
+    // YNdialogBox = new puDialogBox (150, 50);
     {
-        YNdialogFrame = new puFrame (0,0,400, 100);
-        
-        YNdialogBoxMessage  =  new puText         (len, 70);
-        YNdialogBoxMessage  -> setLabel           (Msg.c_str());
-        
-        YNdialogBoxOkButton =  new puOneShot      (100, 10, 160, 50);
-        YNdialogBoxOkButton -> setLegend          ("OK");
-        YNdialogBoxOkButton -> setCallback        (goodBye);
-        
-        YNdialogBoxNoButton =  new puOneShot      (240, 10, 300, 50);
-        YNdialogBoxNoButton -> setLegend          ("NO");
-//      YNdialogBoxNoButton -> makeReturnDefault  (TRUE );
-        YNdialogBoxNoButton -> setCallback        (goAwayYesNoCb);
+       YNdialogFrame = new puFrame (0,0,400, 100);
+               
+       YNdialogBoxMessage  =  new puText         (len, 70);
+       YNdialogBoxMessage  -> setLabel           (Msg.c_str());
+               
+       YNdialogBoxOkButton =  new puOneShot      (100, 10, 160, 50);
+       YNdialogBoxOkButton -> setLegend          ("OK");
+       YNdialogBoxOkButton -> setCallback        (goodBye);
+               
+       YNdialogBoxNoButton =  new puOneShot      (240, 10, 300, 50);
+       YNdialogBoxNoButton -> setLegend          ("NO");
+       //              YNdialogBoxNoButton -> makeReturnDefault  (TRUE );
+       YNdialogBoxNoButton -> setCallback        (goAwayYesNoCb);
     }
     FG_FINALIZE_PUI_DIALOG( YNdialogBox );
 }
@@ -357,8 +353,8 @@ void helpCb (puObject *)
 #if defined(FX) && !defined(WIN32)
 #  if defined(XMESA_FX_FULLSCREEN) && defined(XMESA_FX_WINDOW)
     if ( global_fullscreen ) {
-        global_fullscreen = false;
-        XMesaSetFXmode( XMESA_FX_WINDOW );
+       global_fullscreen = false;
+       XMesaSetFXmode( XMESA_FX_WINDOW );
     }
 #  endif
 #endif
@@ -407,7 +403,7 @@ void AptDialog_OK (puObject *)
     FGTime *t = FGTime::cur_time_params;
     int PauseMode = t->getPause();
     if(!PauseMode)
-        t->togglePauseMode();
+       t->togglePauseMode();
 
     char *s;
     AptDialogInput->getValue(&s);
@@ -416,29 +412,29 @@ void AptDialog_OK (puObject *)
     AptDialog_Cancel( NULL );
     
     if ( AptId.length() ) {
-        // set initial position from airport id
-        
-        fgAIRPORTS airports;
-        fgAIRPORT a;
-        
-        FG_LOG( FG_GENERAL, FG_INFO,
-                "Attempting to set starting position from airport code "
-                << s );
-        
-        airports.load("apt_simple");
-        if ( airports.search( AptId, &a ) )
-        {
-            current_options.set_airport_id( AptId.c_str() );
-            BusyCursor(0);
-            fgReInitSubsystems();
-            BusyCursor(1);
-        } else {
-            AptId  += " not in database.";
-            mkDialog(AptId.c_str());
-        }
+       // set initial position from airport id
+               
+       fgAIRPORTS airports;
+       fgAIRPORT a;
+               
+       FG_LOG( FG_GENERAL, FG_INFO,
+               "Attempting to set starting position from airport code "
+               << s );
+               
+       airports.load("apt_simple");
+       if ( airports.search( AptId, &a ) )
+           {
+               current_options.set_airport_id( AptId.c_str() );
+               BusyCursor(0);
+               fgReInitSubsystems();
+               BusyCursor(1);
+           } else {
+               AptId  += " not in database.";
+               mkDialog(AptId.c_str());
+           }
     }
     if( PauseMode != t->getPause() )
-        t->togglePauseMode();
+       t->togglePauseMode();
 }
 
 void AptDialog_Reset(puObject *)
@@ -447,8 +443,6 @@ void AptDialog_Reset(puObject *)
     AptDialogInput->setCursor( 0 ) ;
 }
 
-
-// This is the accessor function
 void NewAirport(puObject *cb)
 {
     string AptLabel("Enter New Airport ID");
@@ -465,40 +459,40 @@ static void NewAirportInit(void)
     cout << "NewAirportInit" << endl;
 
     string AptLabel("Enter New Airport ID");
-//  int len = 350/2 - puGetStringWidth( puGetDefaultLabelFont(), AptLabel )/2;
+    //  int len = 350/2 - puGetStringWidth( puGetDefaultLabelFont(), AptLabel )/2;
     int len = 150 - puGetStringWidth( puGetDefaultLabelFont(), AptLabel.c_str() )/2;
     
     AptDialog = new puDialogBox (150, 50);
     {
-        AptDialogFrame   = new puFrame           (0,0,350, 150);
-        AptDialogMessage = new puText            (len, 110);
-        
-        AptDialogInput   = new puInput           ( 50, 70, 300, 100 );
-        
-        AptDialogOkButton     =  new puOneShot   (50, 10, 110, 50);
-        AptDialogOkButton     ->     setLegend   ("OK");
-        AptDialogOkButton     ->     setCallback (AptDialog_OK);
-        
-        AptDialogCancelButton =  new puOneShot   (140, 10, 210, 50);
-        AptDialogCancelButton ->     setLegend   ("Cancel");
-        AptDialogCancelButton ->     setCallback (AptDialog_Cancel);
-        
-        AptDialogResetButton  =  new puOneShot   (240, 10, 300, 50);
-        AptDialogResetButton  ->     setLegend   ("Reset");
-        AptDialogResetButton  ->     setCallback (AptDialog_Reset);
+       AptDialogFrame   = new puFrame           (0,0,350, 150);
+       AptDialogMessage = new puText            (len, 110);
+               
+       AptDialogInput   = new puInput           ( 50, 70, 300, 100 );
+               
+       AptDialogOkButton     =  new puOneShot   (50, 10, 110, 50);
+       AptDialogOkButton     ->     setLegend   ("OK");
+       AptDialogOkButton     ->     setCallback (AptDialog_OK);
+               
+       AptDialogCancelButton =  new puOneShot   (140, 10, 210, 50);
+       AptDialogCancelButton ->     setLegend   ("Cancel");
+       AptDialogCancelButton ->     setCallback (AptDialog_Cancel);
+               
+       AptDialogResetButton  =  new puOneShot   (240, 10, 300, 50);
+       AptDialogResetButton  ->     setLegend   ("Reset");
+       AptDialogResetButton  ->     setCallback (AptDialog_Reset);
     }
     FG_FINALIZE_PUI_DIALOG( AptDialog );
 }
 
 
 /* -----------------------------------------------------------------------
-   The menu stuff 
-   ---------------------------------------------------------------------*/
+The menu stuff 
+---------------------------------------------------------------------*/
 char *fileSubmenu               [] = {
     "Exit", "Close", "---------", "Print", "---------", "Save", "Reset", NULL };
 puCallback fileSubmenuCb        [] = {
-    MayBeGoodBye, hideMenuCb, NULL, notCb, NULL, notCb, reInit, NULL};  
-    
+    MayBeGoodBye, hideMenuCb, NULL, notCb, NULL, notCb, reInit, NULL}; 
+       
 char *editSubmenu               [] = {
     "Edit text", NULL };
 puCallback editSubmenuCb        [] = {
@@ -547,7 +541,7 @@ void guiInit()
 
     // Install our fast fonts
     string fntpath = current_options.get_fg_root() + "/Fonts/" + 
-        "typewriter" + ".txf";
+       "typewriter" + ".txf";
     guiFntHandle = new fntTexFont ;
     guiFntHandle -> load ( fntpath.c_str() ) ;
     puFont GuiFont ( guiFntHandle, 15 ) ;
@@ -555,26 +549,26 @@ void guiInit()
     guiFnt = puGetDefaultLabelFont();
   
     if ( current_options.get_mouse_pointer() == 0 ) {
-        // no preference specified for mouse pointer, attempt to autodetect...
-        // Determine if we need to render the cursor, or if the windowing
-        // system will do it.  First test if we are rendering with glide.
-        if ( strstr ( general.get_glRenderer(), "Glide" ) ) {
-            // Test for the MESA_GLX_FX env variable
-            if ( (mesa_win_state = getenv( "MESA_GLX_FX" )) != NULL) {
-                // test if we are fullscreen mesa/glide
-                if ( (mesa_win_state[0] == 'f') ||
-                     (mesa_win_state[0] == 'F') ) {
-                    puShowCursor ();
-                }
-            }
-        }
-        mouse_active = ~mouse_active;
+       // no preference specified for mouse pointer, attempt to autodetect...
+       // Determine if we need to render the cursor, or if the windowing
+       // system will do it.  First test if we are rendering with glide.
+       if ( strstr ( general.get_glRenderer(), "Glide" ) ) {
+           // Test for the MESA_GLX_FX env variable
+           if ( (mesa_win_state = getenv( "MESA_GLX_FX" )) != NULL) {
+               // test if we are fullscreen mesa/glide
+               if ( (mesa_win_state[0] == 'f') ||
+                    (mesa_win_state[0] == 'F') ) {
+                   puShowCursor ();
+               }
+           }
+       }
+       mouse_active = ~mouse_active;
     } else if ( current_options.get_mouse_pointer() == 1 ) {
-        // don't show pointer
+       // don't show pointer
     } else if ( current_options.get_mouse_pointer() == 2 ) {
-        // force showing pointer
-        puShowCursor();
-        mouse_active = ~mouse_active;
+       // force showing pointer
+       puShowCursor();
+       mouse_active = ~mouse_active;
     }
 
     // Set up our Dialog Boxes
index e2fc514e5d2f8799329c566a2bfac5b06357a982..75d20f80eeb06178a96250c35a78e5189bfbf6bd 100644 (file)
@@ -50,7 +50,6 @@ extern fntTexFont *guiFntHandle;
 // Activate Dialog Box
 #define FG_PUSH_PUI_DIALOG( X ) \
     maybeToggleMouse(); \
-    puPushGroup( (X) ) ; \
     puPushLiveInterface( (X) ) ; \
     ( X )->reveal()
 
@@ -58,7 +57,6 @@ extern fntTexFont *guiFntHandle;
 #define FG_POP_PUI_DIALOG( X ) \
     (X)->hide(); \
     puPopLiveInterface(); \
-    puPopGroup(); \
     guiFixPanel(); \
     maybeToggleMouse();