// user-configured dialogs and new commands where necessary.
////////////////////////////////////////////////////////////////////////
-extern void saveFlight (puObject *);
-static bool
-do_save_dialog (const SGPropertyNode * arg)
-{
- saveFlight(0);
- return true;
-}
-
-extern void loadFlight (puObject *);
-static bool
-do_load_dialog (const SGPropertyNode * arg)
-{
- loadFlight(0);
- return true;
-}
-
extern void reInit (puObject *);
static bool
do_reinit_dialog (const SGPropertyNode * arg)
}
#endif
-extern void PilotOffsetAdjust (puObject *);
-static bool
-do_pilot_offset_dialog (const SGPropertyNode * arg)
-{
- PilotOffsetAdjust(0);
- return true;
-}
-
extern void fgHUDalphaAdjust (puObject *);
static bool
do_hud_alpha_dialog (const SGPropertyNode * arg)
const char * name;
SGCommandMgr::command_t command;
} deprecated_dialogs [] = {
- { "old-save-dialog", do_save_dialog },
- { "old-load-dialog", do_load_dialog },
{ "old-reinit-dialog", do_reinit_dialog },
#if defined(TR_HIRES_SNAP)
{ "old-hires-snapshot-dialog", do_hires_snapshot_dialog },
#if defined( WIN32 ) && !defined( __CYGWIN__) && !defined(__MINGW32__)
{ "old-print-dialog", do_print_dialog },
#endif
- { "old-pilot-offset-dialog", do_pilot_offset_dialog },
{ "old-hud-alpha-dialog", do_hud_alpha_dialog },
{ "old-properties-dialog", do_properties_dialog },
{ "old-ap-add-waypoint-dialog", do_ap_add_waypoint_dialog },
void
FGMenuBar::init ()
{
- if (_menuBar != 0) // FIXME: check if PUI owns the pointer
- delete _menuBar;
+ delete _menuBar; // FIXME: check if PUI owns the pointer
make_menubar();
-
// FIXME: temporary commands to get at
// old, hard-coded dialogs.
add_deprecated_dialogs();
for (unsigned int i = 0, j = item_nodes.size() - 1;
i < item_nodes.size();
i++, j--) {
-
+
// Set up the PUI entries for this item
items[j] = strdup((char *)item_nodes[i]->getStringValue("label"));
callbacks[j] = menu_callback;
// Load all the bindings for this item
- vector<SGPropertyNode_ptr> binding_nodes =
- item_nodes[i]->getChildren("binding");
-
- for (unsigned int k = 0; k < binding_nodes.size(); k++)
- _bindings[items[j]].push_back(new FGBinding(binding_nodes[k]));
+ vector<SGPropertyNode_ptr> bindings = item_nodes[i]->getChildren("binding");
+ SGPropertyNode * dest = fgGetNode("/sim/bindings/menu", true);
+
+ for (unsigned int k = 0; k < bindings.size(); k++) {
+ unsigned int m = 0;
+ SGPropertyNode *binding;
+ while (dest->getChild("binding", m))
+ m++;
+
+ binding = dest->getChild("binding", m, true);
+ copyProperties(bindings[k], binding);
+ _bindings[items[j]].push_back(new FGBinding(binding));
+ }
}
_menuBar->add_submenu(name, items, callbacks);