GUIInfo::~GUIInfo ()
{
- for (int i = 0; i < bindings.size(); i++) {
+ for (unsigned int i = 0; i < bindings.size(); i++) {
delete bindings[i];
bindings[i] = 0;
}
// Implementation of FGDialog.
////////////////////////////////////////////////////////////////////////
-FGDialog::FGDialog (SGPropertyNode_ptr props)
+FGDialog::FGDialog (SGPropertyNode * props)
: _object(0)
{
display(props);
{
puDeleteObject(_object);
- int i;
+ unsigned int i;
// Delete all the arrays we made
// and were forced to keep around
for (i = 0; i < _char_arrays.size(); i++) {
for (int j = 0; _char_arrays[i][j] != 0; j++)
free(_char_arrays[i][j]); // added with strdup
- delete _char_arrays[i];
+ delete[] _char_arrays[i];
}
// Delete all the info objects we
void
FGDialog::updateValue (const char * objectName)
{
- for (int i = 0; i < _propertyObjects.size(); i++) {
+ for (unsigned int i = 0; i < _propertyObjects.size(); i++) {
const string &name = _propertyObjects[i]->name;
if (name == objectName)
copy_to_pui(_propertyObjects[i]->node,
void
FGDialog::applyValue (const char * objectName)
{
- for (int i = 0; i < _propertyObjects.size(); i++) {
+ for (unsigned int i = 0; i < _propertyObjects.size(); i++) {
if (_propertyObjects[i]->name == objectName)
copy_from_pui(_propertyObjects[i]->object,
_propertyObjects[i]->node);
void
FGDialog::updateValues ()
{
- for (int i = 0; i < _propertyObjects.size(); i++)
+ for (unsigned int i = 0; i < _propertyObjects.size(); i++)
copy_to_pui(_propertyObjects[i]->node, _propertyObjects[i]->object);
}
void
FGDialog::applyValues ()
{
- for (int i = 0; i < _propertyObjects.size(); i++)
+ for (unsigned int i = 0; i < _propertyObjects.size(); i++)
copy_from_pui(_propertyObjects[i]->object,
_propertyObjects[i]->node);
}
void
-FGDialog::display (SGPropertyNode_ptr props)
+FGDialog::display (SGPropertyNode * props)
{
if (_object != 0) {
SG_LOG(SG_GENERAL, SG_ALERT, "This widget is already active");
return;
}
- _object = makeObject(props, 1024, 768);
+ _object = makeObject(props,
+ globals->get_props()->getIntValue("/sim/startup/xsize"),
+ globals->get_props()->getIntValue("/sim/startup/ysize"));
if (_object != 0) {
_object->reveal();
} else if (type == "combo") {
vector<SGPropertyNode_ptr> value_nodes = props->getChildren("value");
char ** entries = make_char_array(value_nodes.size());
- for (int i = 0, j = value_nodes.size() - 1;
+ for (unsigned int i = 0, j = value_nodes.size() - 1;
i < value_nodes.size();
i++, j--)
entries[i] = strdup((char *)value_nodes[i]->getStringValue());
dial->setWrap(props->getBoolValue("wrap", true));
setupObject(dial, props);
return dial;
+ } else if (type == "select") {
+ vector<SGPropertyNode_ptr> value_nodes;
+ SGPropertyNode * selection_node =
+ fgGetNode(props->getChild("selection")->getStringValue(), true);
+
+ for (int q = 0; q < selection_node->nChildren(); q++)
+ value_nodes.push_back(selection_node->getChild(q));
+
+ char ** entries = make_char_array(value_nodes.size());
+ for (unsigned int i = 0, j = value_nodes.size() - 1;
+ i < value_nodes.size();
+ i++, j--)
+ entries[i] = strdup((char *)value_nodes[i]->getName());
+ puSelectBox * select =
+ new puSelectBox(x, y, x + width, y + height, entries);
+ setupObject(select, props);
+ return select;
} else {
return 0;
}
if (nodes.size() > 0) {
GUIInfo * info = new GUIInfo(this);
- for (int i = 0; i < nodes.size(); i++)
+ for (unsigned int i = 0; i < nodes.size(); i++)
info->bindings.push_back(new FGBinding(nodes[i]));
object->setCallback(action_callback);
object->setUserData(info);