#if defined(HAVE_PLIB_PSL)
# include <Scripting/scriptmgr.hxx>
#endif
+#include <Scripting/NasalSys.hxx>
#include <Time/sunsolver.hxx>
#include <Time/tmp.hxx>
}
#endif // HAVE_PLIB_PSL
+/**
+ * Built-in command: run a Nasal script.
+ */
+static bool
+do_nasal (const SGPropertyNode * arg)
+{
+ return ((FGNasalSys*)globals->get_subsystem("nasal"))->handleCommand(arg);
+}
/**
* Built-in command: exit FlightGear.
/**
- * Built-in command: Show an XML-configured dialog.
- *
- * dialog-name: the name of the GUI dialog to display.
+ * Built-in command: reinit the data logging system based on the
+ * current contents of the /logger tree.
*/
static bool
do_data_logging_commit (const SGPropertyNode * arg)
return true;
}
+/**
+ * Built-in command: Add a dialog to the GUI system. Does *not*
+ * display the dialog. The property node should have the same format
+ * as a dialog XML configuration. It must include:
+ *
+ * name: the name of the GUI dialog for future reference.
+ */
+static bool
+do_dialog_new (const SGPropertyNode * arg)
+{
+ NewGUI * gui = (NewGUI *)globals->get_subsystem("gui");
+
+ // Note the casting away of const: this is *real*. Doing a
+ // "dialog-apply" command later on will mutate this property node.
+ // I'm not convinced that this isn't the Right Thing though; it
+ // allows client to create a node, pass it to dialog-new, and get
+ // the values back from the dialog by reading the same node.
+ // Perhaps command arguments are not as "const" as they would
+ // seem?
+ gui->newDialog((SGPropertyNode*)arg);
+ return true;
+}
/**
* Built-in command: Show an XML-configured dialog.
do_dialog_close (const SGPropertyNode * arg)
{
NewGUI * gui = (NewGUI *)globals->get_subsystem("gui");
+ if(arg->hasValue("dialog-name"))
+ return gui->closeDialog(arg->getStringValue("dialog-name"));
return gui->closeActiveDialog();
}
#if defined(HAVE_PLIB_PSL)
{ "script", do_script },
#endif // HAVE_PLIB_PSL
+ { "nasal", do_nasal },
{ "exit", do_exit },
{ "reinit", do_reinit },
{ "suspend", do_reinit },
{ "property-cycle", do_property_cycle },
{ "property-randomize", do_property_randomize },
{ "data-logging-commit", do_data_logging_commit },
+ { "dialog-new", do_dialog_new },
{ "dialog-show", do_dialog_show },
{ "dialog-close", do_dialog_close },
{ "dialog-show", do_dialog_show },