1 /**************************************************************************
4 * Written 1998 by Durk Talsma, started Juni, 1998. For the flight gear
7 * Additional mouse supported added by David Megginson, 1999.
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation; either version 2 of the
12 * License, or (at your option) any later version.
14 * This program is distributed in the hope that it will be useful, but
15 * WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24 **************************************************************************/
31 #include <simgear/compiler.h>
39 #include <simgear/structure/exception.hxx>
40 #include <simgear/misc/sg_path.hxx>
41 #include <simgear/props/props.hxx>
42 #include <simgear/props/props_io.hxx>
46 #include <Include/general.hxx>
47 #include <Main/main.hxx>
48 #include <Main/globals.hxx>
49 #include <Main/fg_props.hxx>
50 #include <Main/WindowSystemAdapter.hxx>
51 #include <GUI/new_gui.hxx>
54 #include "gui_local.hxx"
58 using namespace flightgear;
63 /* -------------------------------------------------------------------------
65 _____________________________________________________________________*/
69 class GUIInitOperation : public GraphicsContextOperation
72 GUIInitOperation() : GraphicsContextOperation(std::string("GUI init"))
75 void run(GraphicsContext* gc)
77 WindowSystemAdapter* wsa = WindowSystemAdapter::getWSA();
79 puSetDefaultStyle ( PUSTYLE_SMALL_SHADED ); //PUSTYLE_DEFAULT
80 puSetDefaultColourScheme (0.8, 0.8, 0.9, 1);
82 FGFontCache *fc = globals->get_fontcache();
83 fc->initializeFonts();
85 = fc->get(globals->get_locale()->getStringValue("font",
88 puSetDefaultFonts(*GuiFont, *GuiFont);
89 guiFnt = puGetDefaultLabelFont();
91 LayoutWidget::setDefaultFont(GuiFont, 15);
93 if (!fgHasNode("/sim/startup/mouse-pointer")) {
94 // no preference specified for mouse pointer, attempt to autodetect...
95 // Determine if we need to render the cursor, or if the windowing
96 // system will do it. First test if we are rendering with
98 // XXX Not bloody likely in 2008...
99 if ( strstr ( general.get_glRenderer(), "Glide" ) ) {
100 // Test for the MESA_GLX_FX env variable
101 char *mesa_win_state = getenv( "MESA_GLX_FX" );
102 if (mesa_win_state != NULL) {
103 // test if we are fullscreen mesa/glide
104 if ( (mesa_win_state[0] == 'f') ||
105 (mesa_win_state[0] == 'F') ) {
110 } else if ( !fgGetBool("/sim/startup/mouse-pointer") ) {
111 // don't show pointer
113 // force showing pointer
119 ref_ptr<GUIInitOperation> initOp;
124 initOp = new GUIInitOperation;
125 WindowSystemAdapter* wsa = WindowSystemAdapter::getWSA();
126 GraphicsContext* gc = wsa->getGUIGraphicsContext();
127 gc->add(initOp.get());
134 if (!initOp->isFinished())