Add generic "open-browser" command to show URLs or local HTML/text pages.
Replace deprecated "old-help-dialog" command with generic "open-browser". Can also be used to add links to aircraft manuals in the menubar (local file or http) , i.e. <binding> <command>open-browser</command> <path>Aircraft/ogeL/FlightManual.html</path> </binding>
This commit is contained in:
parent
5b8ab277fd
commit
30e2db94b1
4 changed files with 50 additions and 29 deletions
|
@ -42,6 +42,7 @@ class GraphicsContext;
|
|||
// gui.cxx
|
||||
extern void guiStartInit(osg::GraphicsContext*);
|
||||
extern bool guiFinishInit();
|
||||
extern bool openBrowser(string address);
|
||||
extern void mkDialog(const char *txt);
|
||||
extern void guiErrorMessage(const char *txt);
|
||||
extern void guiErrorMessage(const char *txt, const sg_throwable &throwable);
|
||||
|
|
|
@ -156,46 +156,60 @@ void guiErrorMessage (const char *txt, const sg_throwable &throwable)
|
|||
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;
|
||||
openBrowser( "Docs/index.html" );
|
||||
}
|
||||
|
||||
SGPath path( globals->get_fg_root() );
|
||||
path.append( "Docs/index.html" );
|
||||
bool openBrowser(string address)
|
||||
{
|
||||
bool ok = true;
|
||||
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
command = globals->get_browser();
|
||||
string command = globals->get_browser();
|
||||
string::size_type pos;
|
||||
if ((pos = command.find("%u", 0)) != string::npos)
|
||||
command.replace(pos, 2, path.str());
|
||||
command.replace(pos, 2, address);
|
||||
else
|
||||
command += " " + path.str();
|
||||
command += " " + address;
|
||||
|
||||
command += " &";
|
||||
system( command.c_str() );
|
||||
ok = (system( command.c_str() ) == 0);
|
||||
|
||||
#else // _WIN32
|
||||
|
||||
// Look for favorite browser
|
||||
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
|
||||
ShellExecute ( NULL, "open", win32_name, NULL, NULL,
|
||||
SW_SHOWNORMAL ) ;
|
||||
|
||||
#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)
|
||||
|
|
|
@ -37,14 +37,6 @@ do_hires_snapshot_dialog (const SGPropertyNode * arg)
|
|||
}
|
||||
#endif // TR_HIRES_SNAP
|
||||
|
||||
extern void helpCb ();
|
||||
static bool
|
||||
do_help_dialog (const SGPropertyNode * arg)
|
||||
{
|
||||
helpCb();
|
||||
return true;
|
||||
}
|
||||
|
||||
static struct {
|
||||
const char * name;
|
||||
SGCommandMgr::command_t command;
|
||||
|
@ -52,7 +44,6 @@ static struct {
|
|||
#if defined(TR_HIRES_SNAP)
|
||||
{ "old-hires-snapshot-dialog", do_hires_snapshot_dialog },
|
||||
#endif
|
||||
{ "old-help-dialog", do_help_dialog },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
|
|
|
@ -1040,6 +1040,20 @@ do_dialog_update (const SGPropertyNode * arg)
|
|||
}
|
||||
}
|
||||
|
||||
static bool
|
||||
do_open_browser (const SGPropertyNode * arg)
|
||||
{
|
||||
string path;
|
||||
if (arg->hasValue("path"))
|
||||
path = arg->getStringValue("path");
|
||||
else
|
||||
if (arg->hasValue("url"))
|
||||
path = arg->getStringValue("url");
|
||||
else
|
||||
return false;
|
||||
|
||||
return openBrowser(path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply a value in the active XML-configured dialog.
|
||||
|
@ -1468,6 +1482,7 @@ static struct {
|
|||
{ "dialog-close", do_dialog_close },
|
||||
{ "dialog-update", do_dialog_update },
|
||||
{ "dialog-apply", do_dialog_apply },
|
||||
{ "open-browser", do_open_browser },
|
||||
{ "gui-redraw", do_gui_redraw },
|
||||
{ "add-model", do_add_model },
|
||||
{ "set-cursor", do_set_cursor },
|
||||
|
|
Loading…
Add table
Reference in a new issue