#include <Main/globals.hxx>
#include <Main/fg_props.hxx>
#include <Main/fg_os.hxx>
-#include <Main/renderer.hxx>
-#include <Main/viewmgr.hxx>
-#include <Main/WindowSystemAdapter.hxx>
-#include <Main/CameraGroup.hxx>
+#include <Viewer/renderer.hxx>
+#include <Viewer/viewmgr.hxx>
+#include <Viewer/WindowSystemAdapter.hxx>
+#include <Viewer/CameraGroup.hxx>
#include <GUI/new_gui.hxx>
# include <shellapi.h>
#endif
+#ifdef SG_MAC
+# include "FGCocoaMenuBar.hxx" // for cocoaOpenUrl
+#endif
+
#include "gui.h"
using std::string;
the Gui callback functions
____________________________________________________________________*/
-
-// Hier Neu :-) This is my newly added code
-// Added by David Findlay <nedz@bigpond.com>
-// on Sunday 3rd of December
-
-
-void helpCb ()
+void helpCb()
{
- string command;
-
- SGPath path( globals->get_fg_root() );
- path.append( "Docs/index.html" );
-
-#ifndef _WIN32
-
- command = globals->get_browser();
- string::size_type pos;
- if ((pos = command.find("%u", 0)) != string::npos)
- command.replace(pos, 2, path.str());
- else
- command += " " + path.str();
+ openBrowser( "Docs/index.html" );
+}
- command += " &";
- system( command.c_str() );
+bool openBrowser(const std::string& aAddress)
+{
+ bool ok = true;
+ string address(aAddress);
+
+ // do not resolve addresses with given protocol, i.e. "http://...", "ftp://..."
+ if (address.find("://")==string::npos)
+ {
+ // resolve local file path
+ SGPath path(address);
+ path = globals->resolve_maybe_aircraft_path(address);
+ if (!path.isNull())
+ address = path.str();
+ else
+ {
+ mkDialog ("Sorry, file not found!");
+ SG_LOG(SG_GENERAL, SG_ALERT, "openBrowser: Cannot find requested file '"
+ << address << "'.");
+ return false;
+ }
+ }
-#else // _WIN32
+#ifdef SG_MAC
+ if (address.find("://")==string::npos) {
+ address = "file://" + address;
+ }
+
+ cocoaOpenUrl(address);
+#elif defined _WIN32
// Look for favorite browser
- char Dummy[1024], ExecName[1024], browserParameter[1024];
char win32_name[1024];
# ifdef __CYGWIN__
- cygwin32_conv_to_full_win32_path(path.c_str(),win32_name);
+ cygwin32_conv_to_full_win32_path(address.c_str(),win32_name);
# else
- strncpy(win32_name,path.c_str(), 1024);
+ strncpy(win32_name,address.c_str(), 1024);
# endif
- Dummy[0] = 0;
- FindExecutable(win32_name, Dummy, ExecName);
- snprintf(browserParameter, 1024, "file:///%s", win32_name);
- ShellExecute ( NULL, "open", ExecName, browserParameter, Dummy,
+ ShellExecute ( NULL, "open", win32_name, NULL, NULL,
SW_SHOWNORMAL ) ;
+#else
+ // Linux, BSD, SGI etc
+ string command = globals->get_browser();
+ string::size_type pos;
+ if ((pos = command.find("%u", 0)) != string::npos)
+ command.replace(pos, 2, address);
+ else
+ command += " \"" + address +"\"";
+ command += " &";
+ ok = (system( command.c_str() ) == 0);
#endif
-
- mkDialog ("Help started in your web browser window.");
+
+ mkDialog("The file is shown in your web browser window.");
+ return ok;
}
#if defined( TR_HIRES_SNAP)
int curColumn = trGet(tr, TR_CURRENT_COLUMN);
// int curRow = trGet(tr, TR_CURRENT_ROW);
- renderer->update( false );
+ renderer->update();
// OSGFIXME
// if ( do_hud )
// fgUpdateHUD( curColumn*hud_col_step, curRow*hud_row_step,
if (_path.create_dir( 0755 )) {
SG_LOG(SG_GENERAL, SG_ALERT, "Cannot create screenshot directory '"
<< dir << "'. Trying home directory.");
- dir = fgGetString("/sim/fg-home");
+ dir = globals->get_fg_home();
}
char filename[24];
if (path.create_dir( 0755 )) {
SG_LOG(SG_GENERAL, SG_ALERT, "Cannot create screenshot directory '"
<< dir << "'. Trying home directory.");
- dir = fgGetString("/sim/fg-home");
+ dir = globals->get_fg_home();
}
char filename[24];