#endif
#ifdef HAVE_WINDOWS_H
-# include <windows.h>
+# include <windows.h>
#endif
#include <Include/compiler.h>
#include <stdlib.h>
#include <string.h>
+#include <Include/general.hxx>
+#include <Debug/logstream.hxx>
#include <Aircraft/aircraft.hxx>
#include <Airports/simple.hxx>
-#include <Autopilot/autopilot.hxx>
-#include <Debug/logstream.hxx>
#include <FDM/flight.hxx>
-#include <Include/general.hxx>
-#include <Main/fg_init.hxx>
#include <Main/options.hxx>
+#include <Main/fg_init.hxx>
+#include <Time/fg_time.hxx>
#include "gui.h"
FG_USING_STD(string);
+static puMenuBar *mainMenuBar;
+static puButton *hideMenuButton;
-puMenuBar *mainMenuBar;
-puButton *hideMenuButton;
-puDialogBox *dialogBox;
-puText *dialogBoxMessage;
-puOneShot *dialogBoxOkButton;
-puText *timerText;
+static puDialogBox *dialogBox;
+static puFrame *dialogFrame;
+static puText *dialogBoxMessage;
+static puOneShot *dialogBoxOkButton;
+extern void fgAPAdjust( puObject * );
+// extern void fgLatLonFormatToggle( puObject *);
/* --------------------------------------------------------------------
- Mouse stuff
- ---------------------------------------------------------------------*/
+Mouse stuff
+---------------------------------------------------------------------*/
+
+static int _mX = 0;
+static int _mY = 0;
+static int last_buttons = 0 ;
void guiMotionFunc ( int x, int y )
{
+ _mX = x;
+ _mY = y;
puMouse ( x, y ) ;
glutPostRedisplay () ;
}
void guiMouseFunc(int button, int updown, int x, int y)
{
+ _mX = x;
+ _mY = y;
+ if ( updown == PU_DOWN )
+ last_buttons |= ( 1 << button ) ;
+ else
+ last_buttons &= ~( 1 << button ) ;
+
puMouse (button, updown, x,y);
glutPostRedisplay ();
}
+int guiGetMouseButton(void)
+{
+ return last_buttons;
+}
+
+void guiGetMouse(int *x, int *y)
+{
+ *x = _mX;
+ *y = _mY;
+};
+
/* -----------------------------------------------------------------------
the Gui callback functions
____________________________________________________________________*/
fgReInitSubsystems();
}
+void guiToggleMenu(void)
+{
+ hideMenuButton ->
+ setValue ((int) !(hideMenuButton -> getValue() ) );
+ hideMenuButton -> invokeCallback();
+}
+
+
+void MenuHideMenuCb(puObject *cb)
+{
+ mainMenuBar -> hide ();
+ // printf("Hiding Menu\n");
+ hideMenuButton -> setLegend ("Show Menu");
+#if defined ( WIN32 ) || defined(__CYGWIN32__)
+ glutSetCursor(GLUT_CURSOR_NONE);
+#else // I guess this is what we want to do ??
+ // puHideCursor(); // does not work with VooDoo
+#endif
+}
+
void hideMenuCb (puObject *cb)
{
if (cb -> getValue () )
{
mainMenuBar -> reveal();
- printf("Showing Menu");
+ // printf("Showing Menu\n");
hideMenuButton -> setLegend ("Hide Menu");
+#if defined ( WIN32 ) || defined(__CYGWIN32__)
+ glutSetCursor(GLUT_CURSOR_INHERIT);
+#else // I guess this is what we want to do ??
+ // puShowCursor(); // does not work with VooDoo
+#endif
}
else
{
mainMenuBar -> hide ();
- printf("Hiding Menu");
+ // printf("Hiding Menu\n");
hideMenuButton -> setLegend ("Show Menu");
+#if defined ( WIN32 ) || defined(__CYGWIN32__)
+ glutSetCursor(GLUT_CURSOR_NONE);
+#else // I guess this is what we want to do ??
+ // puHideCursor(); // does not work with VooDoo
+#endif
}
}
exit(-1);
}
-
-void goAwayCb (puObject *)
+
+
+void goAwayCb (puObject *me)
{
+ delete dialogBoxOkButton;
+ dialogBoxOkButton = NULL;
+
+ delete dialogBoxMessage;
+ dialogBoxMessage = NULL;
+
+ delete dialogFrame;
+ dialogFrame = NULL;
+
delete dialogBox;
dialogBox = NULL;
}
{
dialogBox = new puDialogBox (150, 50);
{
- new puFrame (0,0,400, 100);
- dialogBoxMessage = new puText (10, 70);
- dialogBoxMessage -> setLabel (txt);
+ dialogFrame = new puFrame (0,0,400, 100);
+ dialogBoxMessage = new puText (10, 70);
+ dialogBoxMessage -> setLabel (txt);
dialogBoxOkButton = new puOneShot (180, 10, 240, 50);
dialogBoxOkButton -> setLegend ("OK");
dialogBoxOkButton -> makeReturnDefault (TRUE );
dialogBox -> reveal();
}
+void notCb (puObject *)
+{
+ mkDialog ("This function isn't implemented yet");
+}
+
+void helpCb (puObject *)
+{
+ string command;
+
+#if defined(FX) && !defined(WIN32)
+# if defined(XMESA_FX_FULLSCREEN) && defined(XMESA_FX_WINDOW)
+ if ( global_fullscreen ) {
+ global_fullscreen = false;
+ XMesaSetFXmode( XMESA_FX_WINDOW );
+ }
+# endif
+#endif
+
+#if !defined(WIN32)
+ string url = "http://www.flightgear.org/Docs/InstallGuide/getstart.html";
+
+ if ( system("xwininfo -name Netscape > /dev/null 2>&1") == 0 ) {
+ command = "netscape -remote \"openURL(" + url + ")\" &";
+ } else {
+ command = "netscape " + url + " &";
+ }
+#else
+ command = "webrun.bat";
+#endif
+
+ system( command.c_str() );
+ string text = "Help started in netscape window.";
+
+ mkDialog (text.c_str());
+}
/// The beginnings of teleportation :-)
// Needs cleaning up but works
static string AptDialog_OldAptId;
static string AptDialog_NewAptId;
-static int AptDialog_ValidAptId;
+static int AptDialog_ValidAptId;
static void validateApt (puObject *inpApt)
{
AptDialog_NewAptId = s;
- FG_LOG( FG_GENERAL, FG_INFO, "Validating apt id = " << s );
-
if ( AptDialog_NewAptId.length() ) {
// set initial position from airport id
void AptDialog_Cancel(puObject *)
{
+ FGTime *t = FGTime::cur_time_params;
+
delete AptDialogResetButton;
AptDialogResetButton = NULL;
delete AptDialog;
AptDialog = NULL;
+
+ t->togglePauseMode();
}
void AptDialog_OK (puObject *me)
void NewAirportInit(puObject *cb)
{
FGInterface *f;
+ FGTime *t;
+
f = current_aircraft.fdm_state;
-
+ t = FGTime::cur_time_params;
+
char *AptLabel = "Enter New Airport ID";
int len = 350/2 - puGetStringWidth(NULL, AptLabel)/2;
len = 0;
AptDialogInput -> setCursor ( len );
AptDialogInput -> setSelectRegion ( 5, 9 );
-
- AptDialogOkButton = new puOneShot (50, 10, 110, 50);
- AptDialogOkButton -> setLegend ("OK");
- AptDialogOkButton -> makeReturnDefault (TRUE );
- AptDialogOkButton -> setCallback (AptDialog_OK);
-
- AptDialogCancelButton = new puOneShot (140, 10, 210, 50);
- AptDialogCancelButton -> setLegend ("Cancel");
- AptDialogCancelButton -> makeReturnDefault (TRUE );
- AptDialogCancelButton -> setCallback (AptDialog_Cancel);
-
- AptDialogResetButton = new puOneShot (240, 10, 300, 50);
- AptDialogResetButton -> setLegend ("Reset");
- AptDialogResetButton -> makeReturnDefault (TRUE );
- AptDialogResetButton -> setCallback (AptDialog_Reset);
+
+ AptDialogOkButton = new puOneShot (50, 10, 110, 50);
+ AptDialogOkButton -> setLegend ("OK");
+ AptDialogOkButton -> makeReturnDefault (TRUE );
+ AptDialogOkButton -> setCallback (AptDialog_OK);
+
+ AptDialogCancelButton = new puOneShot (140, 10, 210, 50);
+ AptDialogCancelButton -> setLegend ("Cancel");
+ AptDialogCancelButton -> makeReturnDefault (TRUE );
+ AptDialogCancelButton -> setCallback (AptDialog_Cancel);
+
+ AptDialogResetButton = new puOneShot (240, 10, 300, 50);
+ AptDialogResetButton -> setLegend ("Reset");
+ AptDialogResetButton -> makeReturnDefault (TRUE );
+ AptDialogResetButton -> setCallback (AptDialog_Reset);
}
AptDialog -> close();
AptDialog -> reveal();
}
-void notCb (puObject *)
-{
- mkDialog ("This function isn't implemented yet");
-}
-
-void helpCb (puObject *)
-{
- string command;
-
-#if defined(FX) && !defined(WIN32)
-# if defined(XMESA_FX_FULLSCREEN) && defined(XMESA_FX_WINDOW)
- if ( global_fullscreen ) {
- global_fullscreen = false;
- XMesaSetFXmode( XMESA_FX_WINDOW );
- }
-# endif
-#endif
-
-#if !defined(WIN32)
- string url = "http://www.flightgear.org/Docs/InstallGuide/getstart.html";
-
- if ( system("xwininfo -name Netscape > /dev/null 2>&1") == 0 ) {
- command = "netscape -remote \"openURL(" + url + ")\" &";
- } else {
- command = "netscape " + url + " &";
- }
-#else
- command = "webrun.bat";
-#endif
-
- system( command.c_str() );
- string text = "Help started in netscape window.";
-
- mkDialog ( (char*)text.c_str() );
-}
-
/* -----------------------------------------------------------------------
The menu stuff
---------------------------------------------------------------------*/
-char *fileSubmenu [] = { "Exit", "Close", "---------", "Print",
- "---------", "Save", "Reset", NULL };
-char *editSubmenu [] = { "Edit text", NULL };
-char *viewSubmenu [] = { "Cockpit View > ", "View >","------------",
- "View options...", NULL };
-char *aircraftSubmenu [] = { "Autopilot ...", "Engine ...", "Navigation",
- "Communication", NULL};
-char *environmentSubmenu [] = { "Airport", "Terrain", "Weather", NULL};
-char *optionsSubmenu [] = { "Preferences", "Realism & Reliablity...",
- NULL};
-char *helpSubmenu [] = { "About...", "Help", NULL };
-
-puCallback fileSubmenuCb [] = { goodBye, hideMenuCb, NULL, notCb,
- NULL, notCb, reInit, NULL};
+char *fileSubmenu [] = {
+ "Exit", "Close", "---------", "Print", "---------", "Save", "Reset", NULL };
+char *editSubmenu [] = {
+ "Edit text", NULL };
+char *viewSubmenu [] = {
+ "Cockpit View > ", "View >","------------", "View options...", NULL };
+char *aircraftSubmenu [] = {
+ "Autopilot ...", "Engine ...", "Navigation", "Communication", NULL};
+char *environmentSubmenu [] = {
+ "Airport", "Terrain", "Weather", NULL};
+char *optionsSubmenu [] = {
+ "Preferences", "Realism & Reliablity...", NULL};
+char *helpSubmenu [] = {
+ "About...", "Help", NULL };
+
+puCallback fileSubmenuCb [] = { goodBye, MenuHideMenuCb, NULL, notCb, NULL, notCb, reInit, NULL};
puCallback editSubmenuCb [] = { notCb, NULL };
puCallback viewSubmenuCb [] = { notCb, notCb, NULL, notCb, NULL };
puCallback aircraftSubmenuCb [] = { fgAPAdjust, notCb, notCb, notCb, NULL };
// 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') ||
+ if ( (mesa_win_state[0] == 'f') ||
(mesa_win_state[0] == 'F') ) {
puShowCursor ();
}
// puSetDefaultStyle ( PUSTYLE_SMALL_BEVELLED );
puSetDefaultStyle ( PUSTYLE_DEFAULT );
- // puSetDefaultColourScheme (0.2, 0.4, 0.8, 0.5);
- puSetDefaultColourScheme (0.8, 0.8, 0.8, 0.5);
-
+ // puSetDefaultColourScheme (0.2, 0.4, 0.8, 0.5);
+ puSetDefaultColourScheme (0.8, 0.8, 0.8, 0.4);
/* OK the rest is largely put in here to mimick Steve Baker's
"complex" example It should change in future versions */
-
- // timerText = new puText (300, 10);
- // timerText -> setColour (PUCOL_LABEL, 1.0, 1.0, 1.0);
/* Make a button to hide the menu bar */
hideMenuButton = new puButton (10,10, 150, 50);
mainMenuBar -> add_submenu ("Edit", editSubmenu, editSubmenuCb);
mainMenuBar -> add_submenu ("View", viewSubmenu, viewSubmenuCb);
mainMenuBar -> add_submenu ("Aircraft", aircraftSubmenu, aircraftSubmenuCb);
- mainMenuBar -> add_submenu ("Environment", environmentSubmenu,
+ mainMenuBar -> add_submenu ("Environment", environmentSubmenu,
environmentSubmenuCb);
mainMenuBar -> add_submenu ("Options", optionsSubmenu, optionsSubmenuCb);
mainMenuBar -> add_submenu ("Help", helpSubmenu, helpSubmenuCb);