# include <config.h>
#endif
-#ifdef HAVE_WINDOWS_H
-# include <windows.h>
-#endif
-
#include <string.h> // for strcmp()
#include <simgear/compiler.h>
#include <simgear/debug/logstream.hxx>
#include <simgear/misc/sg_path.hxx>
#include <simgear/props/props.hxx>
+#include <simgear/props/props_io.hxx>
-#include STL_IOSTREAM
-#include STL_FSTREAM
-#include STL_STRING
+#include <istream>
+#include <fstream>
+#include <string>
#include <Main/globals.hxx>
#include <Main/fg_props.hxx>
//built-in layers
#include "built_in/FGMagRibbon.hxx"
-SG_USING_STD(istream);
-SG_USING_STD(ifstream);
-SG_USING_STD(string);
+using std::istream;
+using std::ifstream;
+using std::string;
\f
// button-less actions are fired initially
if (!node->hasValue("w") || !node->hasValue("h")) {
for (i = 0; i < bindings.size(); i++) {
- FGBinding b(bindings[i]);
+ SGBinding b(bindings[i], globals->get_props());
b.fire();
}
return 0;
SGPropertyNode * dest = fgGetNode("/sim/bindings/panel", true);
for (i = 0; i < bindings.size(); i++) {
- SG_LOG(SG_INPUT, SG_INFO, "Reading binding "
+ SG_LOG(SG_INPUT, SG_BULK, "Reading binding "
<< bindings[i]->getStringValue("command"));
j = 0;
binding = dest->getChild("binding", j, true);
copyProperties(bindings[i], binding);
- action->addBinding(new FGBinding(binding), 0);
+ action->addBinding(new SGBinding(binding, globals->get_props()), 0);
}
if (node->hasChild("mod-up")) {
binding = dest->getChild("binding", j, true);
copyProperties(bindings[i], binding);
- action->addBinding(new FGBinding(binding), 1);
+ action->addBinding(new SGBinding(binding, globals->get_props()), 1);
}
}
SGPropertyNode * target = 0;
if (type.empty()) {
- SG_LOG( SG_COCKPIT, SG_INFO,
+ SG_LOG( SG_COCKPIT, SG_BULK,
"No type supplied for transformation " << name
<< " assuming \"rotation\"" );
type = "rotation";
// Check for an interpolation table
const SGPropertyNode * trans_table = node->getNode("interpolation");
if (trans_table != 0) {
- SG_LOG( SG_COCKPIT, SG_INFO, "Found interpolation table with "
+ SG_LOG( SG_COCKPIT, SG_DEBUG, "Found interpolation table with "
<< trans_table->nChildren() << " children" );
- t->table = new SGInterpTable();
- for (int i = 0; i < trans_table->nChildren(); i++) {
- const SGPropertyNode * node = trans_table->getChild(i);
- if (!strcmp(node->getName(), "entry")) {
- double ind = node->getDoubleValue("ind", 0.0);
- double dep = node->getDoubleValue("dep", 0.0);
- SG_LOG( SG_COCKPIT, SG_INFO, "Adding interpolation entry "
- << ind << "==>" << dep );
- t->table->addEntry(ind, dep);
- } else {
- SG_LOG( SG_COCKPIT, SG_INFO, "Skipping " << node->getName()
- << " in interpolation" );
- }
- }
+ t->table = new SGInterpTable(trans_table);
} else {
t->table = 0;
}
if (type.empty()) {
- SG_LOG( SG_COCKPIT, SG_INFO,
+ SG_LOG( SG_COCKPIT, SG_BULK,
"No type supplied for layer " << name
<< " assuming \"texture\"" );
type = "texture";
}
readConditions(instrument, node);
- SG_LOG( SG_COCKPIT, SG_DEBUG, "Done reading instrument " << name );
return instrument;
}
//
// Grab the visible external viewing area, default to
//
- panel->setViewHeight(root->getIntValue("view-height",
- 768 - panel->getHeight() + 2));
+// panel->setViewHeight(root->getIntValue("view-height",
+// 768 - panel->getHeight() + 2));
//
// Grab the panel's initial offsets, default to 0, 0.
if (!fgHasNode("/sim/panel/y-offset"))
fgSetInt("/sim/panel/y-offset", root->getIntValue("y-offset", 0));
+ panel->setAutohide(root->getBoolValue("autohide", true));
+
//
// Assign the background texture, if any, or a bogus chequerboard.
//
if (bgTexture.empty())
bgTexture = "FOO";
panel->setBackground(FGTextureManager::createTexture(bgTexture.c_str()));
- SG_LOG( SG_COCKPIT, SG_INFO, "Set background texture to " << bgTexture );
//
// Get multibackground if any...
string mbgTexture = root->getStringValue("multibackground[0]");
if (!mbgTexture.empty()) {
panel->setMultiBackground(FGTextureManager::createTexture(mbgTexture.c_str()), 0);
- SG_LOG( SG_COCKPIT, SG_INFO, "Set background texture to " << mbgTexture );
mbgTexture = root->getStringValue("multibackground[1]");
if (mbgTexture.empty())
mbgTexture = "FOO";
panel->setMultiBackground(FGTextureManager::createTexture(mbgTexture.c_str()), 1);
- SG_LOG( SG_COCKPIT, SG_INFO, "Set background texture to " << mbgTexture );
mbgTexture = root->getStringValue("multibackground[2]");
if (mbgTexture.empty())
mbgTexture = "FOO";
panel->setMultiBackground(FGTextureManager::createTexture(mbgTexture.c_str()), 2);
- SG_LOG( SG_COCKPIT, SG_INFO, "Set background texture to " << mbgTexture );
mbgTexture = root->getStringValue("multibackground[3]");
if (mbgTexture.empty())
mbgTexture = "FOO";
panel->setMultiBackground(FGTextureManager::createTexture(mbgTexture.c_str()), 3);
- SG_LOG( SG_COCKPIT, SG_INFO, "Set background texture to " << mbgTexture );
mbgTexture = root->getStringValue("multibackground[4]");
if (mbgTexture.empty())
mbgTexture = "FOO";
panel->setMultiBackground(FGTextureManager::createTexture(mbgTexture.c_str()), 4);
- SG_LOG( SG_COCKPIT, SG_INFO, "Set background texture to " << mbgTexture );
mbgTexture = root->getStringValue("multibackground[5]");
if (mbgTexture.empty())
mbgTexture = "FOO";
panel->setMultiBackground(FGTextureManager::createTexture(mbgTexture.c_str()), 5);
- SG_LOG( SG_COCKPIT, SG_INFO, "Set background texture to " << mbgTexture );
mbgTexture = root->getStringValue("multibackground[6]");
if (mbgTexture.empty())
mbgTexture = "FOO";
panel->setMultiBackground(FGTextureManager::createTexture(mbgTexture.c_str()), 6);
- SG_LOG( SG_COCKPIT, SG_INFO, "Set background texture to " << mbgTexture );
mbgTexture = root->getStringValue("multibackground[7]");
if (mbgTexture.empty())
mbgTexture = "FOO";
panel->setMultiBackground(FGTextureManager::createTexture(mbgTexture.c_str()), 7);
- SG_LOG( SG_COCKPIT, SG_INFO, "Set background texture to " << mbgTexture );
}
//
// Create each instrument.
//
- SG_LOG( SG_COCKPIT, SG_INFO, "Reading panel instruments" );
+ SG_LOG( SG_COCKPIT, SG_DEBUG, "Reading panel instruments" );
const SGPropertyNode * instrument_group = root->getChild("instruments");
if (instrument_group != 0) {
int nInstruments = instrument_group->nChildren();
int y = node->getIntValue("y", -1);
int real_w = node->getIntValue("w", -1);
int real_h = node->getIntValue("h", -1);
- int w = node->getIntValue("w-base", -1);
- int h = node->getIntValue("h-base", -1);
+// int w = node->getIntValue("w-base", -1);
+// int h = node->getIntValue("h-base", -1);
if (x == -1 || y == -1) {
SG_LOG( SG_COCKPIT, SG_ALERT,
return 0;
}
- float w_scale = 1.0;
- float h_scale = 1.0;
+// float w_scale = 1.0;
+// float h_scale = 1.0;
if (real_w != -1) {
- w_scale = float(real_w) / float(w);
- w = real_w;
+// w_scale = float(real_w) / float(w);
+// w = real_w;
}
if (real_h != -1) {
- h_scale = float(real_h) / float(h);
- h = real_h;
+// h_scale = float(real_h) / float(h);
+// h = real_h;
}
- SG_LOG( SG_COCKPIT, SG_DEBUG, "Reading instrument " << name );
+ SG_LOG( SG_COCKPIT, SG_BULK, "Reading instrument " << name );
// Warning - hardwired size!!!
RenderArea2D* instrument = new RenderArea2D(158, 40, 158, 40, x, y);
SG_LOG( SG_COCKPIT, SG_WARN, "Unknown special instrument found" );
}
} else {
- SG_LOG( SG_COCKPIT, SG_INFO, "Skipping " << node->getName()
+ SG_LOG( SG_COCKPIT, SG_WARN, "Skipping " << node->getName()
<< " in instruments section" );
}
}
}
- SG_LOG( SG_COCKPIT, SG_INFO, "Done reading panel instruments" );
+ SG_LOG( SG_COCKPIT, SG_BULK, "Done reading panel instruments" );
//
FGPanel *
fgReadPanel (const string &relative_path)
{
- SGPath path(globals->get_fg_root());
- path.append(relative_path);
+ SGPath path = globals->resolve_aircraft_path(relative_path);
SGPropertyNode root;
-
+
try {
readProperties(path.str(), &root);
} catch (const sg_exception &e) {