]> git.mxchange.org Git - flightgear.git/blobdiff - src/GUI/prop_picker.cxx
Patch from Jim Wilson:
[flightgear.git] / src / GUI / prop_picker.cxx
index 383581310700edae08ccfc3f7cfa6d07fb1ab545..38002a0a6dd5a71c514351a77e0276514cb8bbc7 100755 (executable)
@@ -39,6 +39,7 @@
 #include <Main/globals.hxx>
 
 #include <simgear/compiler.h>
+#include <simgear/misc/props.hxx>
 
 #define DOTDOTSLASH "../"
 #define SLASH       "/"
@@ -470,7 +471,7 @@ void fgPropPicker::find_props ()
   for (i = 0; i < (int)node->nChildren(); i++) {
            SGPropertyNode * child = node->getChild(i);
            name = child->getName();
-           if ( node->getChild(name, 1) != 0 ) {
+           if ( node->getChild(name.c_str(), 1) != 0 ) {
                iindex = child->getIndex();
                sprintf(sindex, "[%d]", iindex);
                name += sindex;
@@ -486,11 +487,11 @@ void fgPropPicker::find_props ()
                values[ pi ] = new char[ 2 ] ;
            } else {
                 dflag[ pi ] = 0 ;
-               value = node->getStringValue ( name, "" );
+               value = node->getStringValue ( name.c_str(), "" );
                values[ pi ] = new char[ strlen(value.c_str())+2 ] ;
                 strcpy ( values [pi], value.c_str() );
                line += " = '" + value + "' " + "(";
-               line += getValueTypeString( node->getNode( name ) );
+               line += getValueTypeString( node->getNode( name.c_str() ) );
                 line += ")";
                 files[ pi ] = new char[ strlen(line.c_str())+2 ] ;
                strcpy ( files [ pi ], line.c_str() ) ;
@@ -499,12 +500,20 @@ void fgPropPicker::find_props ()
             ++pi;
   }
 
+  // truncate entries to 80 characters (plib pui limit)
+  for (i = 0; i < num_files; i++) {
+    if (strlen(files[i]) > 80) files[i][79] = '\0';
+  }
+
   files [ num_files ] = NULL ;
 
+  // leave the . and .. alone...
+  int ii = ( strcmp(files [0], "." ) == 0 ) ? 2 : 0;
+
   // Sort the entries.  This is a simple N^2 extraction sort.  More
   // elaborate algorithms aren't necessary for the few dozen
   // properties we're going to sort.
-  for(i=0; i<num_files; i++) {
+  for(i=ii; i<num_files; i++) {
     int j, min = i;
     char df, *tmp;
     for(j=i+1; j<num_files; j++)
@@ -526,8 +535,8 @@ void fgPropPicker::find_props ()
 
   // if non-empty list, adjust the size of the slider...
   if (num_files > 1) {
-    if ((11.0f/(num_files-1)) < 1) {
-      slider->setSliderFraction (11.0f/(num_files-1)) ;
+    if ((11.0f/(num_files)) < 1) {
+      slider->setSliderFraction (11.0f/(num_files)) ;
       slider->reveal();
       up_arrow->reveal();
       down_arrow->reveal();
@@ -603,3 +612,4 @@ fgPropEdit::fgPropEdit ( char *name, char *value, char *proppath ) : puDialogBox
         
     FG_FINALIZE_PUI_DIALOG( this );
 }
+