#ifndef _GUI_H_
#define _GUI_H_
-#include <pu.h> // plib include
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
-extern void guiInit();
-extern void guiMotionFunc ( int x, int y );
-extern void guiMouseFunc(int button, int updown, int x, int y);
-extern void maybeToggleMouse( void );
-extern void BusyCursor( int restore );
+#ifdef HAVE_WINDOWS_H
+# include <windows.h>
+#endif
+
+#include <GL/glut.h> // needed before pu.h
+#include <plib/pu.h> // plib include
+
+#include <simgear/misc/exception.hxx>
+// gui.cxx
+extern void guiInit();
extern void guiToggleMenu(void);
extern void mkDialog(const char *txt);
+extern void guiErrorMessage(const char *txt);
+extern void guiErrorMessage(const char *txt, const sg_throwable &throwable);
extern void ConfirmExitDialog(void);
-extern void guiFixPanel( void );
extern void fgDumpSnapShot();
extern puFont guiFnt;
extern fntTexFont *guiFntHandle;
+extern int gui_menu_on;
// GLOBAL COMMON DIALOG BOX TEXT STRINGS
extern char *gui_msg_OK; // "OK"
extern char *gui_msg_CANCEL; // "CANCEL"
extern char *gui_msg_RESET; // "RESET"
+// mouse.cxx
+extern void guiInitMouse(int width, int height);
+extern void guiMotionFunc ( int x, int y );
+extern void guiMouseFunc(int button, int updown, int x, int y);
+extern void maybeToggleMouse( void );
+extern void BusyCursor( int restore );
+extern void CenterView( void );
+extern void TurnCursorOn( void );
+extern void TurnCursorOff( void );
+
// MACROS TO HELP KEEP PUI LIVE INTERFACE STACK IN SYNC
// These insure that the mouse is active when dialog is shown
// and try to the maintain the original mouse state when hidden
// These will also repair any damage done to the Panel if active
// Activate Dialog Box
-#define FG_PUSH_PUI_DIALOG( X ) \
- maybeToggleMouse(); \
- puPushLiveInterface( (X) ) ; \
- ( X )->reveal()
+inline void FG_PUSH_PUI_DIALOG( puObject *X ) {
+ maybeToggleMouse();
+ puPushLiveInterface( (puInterface *)X ) ;
+ X->reveal() ;
+}
// Deactivate Dialog Box
-#define FG_POP_PUI_DIALOG( X ) \
- (X)->hide(); \
- puPopLiveInterface(); \
- guiFixPanel(); \
+inline void FG_POP_PUI_DIALOG( puObject *X ) {
+ X->hide();
+ puPopLiveInterface();
maybeToggleMouse();
+}
// Finalize Dialog Box Construction
-#define FG_FINALIZE_PUI_DIALOG( X ) \
- ( X )->close(); \
- ( X )->hide(); \
+inline void FG_FINALIZE_PUI_DIALOG( puObject *X ) {
+ ((puGroup *)X)->close();
+ X->hide();
puPopLiveInterface();
+}
#endif // _GUI_H_