]> git.mxchange.org Git - flightgear.git/commitdiff
- unify several indentation and coding styles (and no, this is not my
authormfranz <mfranz>
Fri, 19 May 2006 10:59:04 +0000 (10:59 +0000)
committermfranz <mfranz>
Fri, 19 May 2006 10:59:04 +0000 (10:59 +0000)
  preferred style, but the most sane of those used :-)
- remove trailing spaces
- cleanup

(all of this will make further work on the files easier)

src/GUI/prop_picker.cxx
src/GUI/prop_picker.hxx

index 01f0415f03251e70a15d8d56a25f3e90f76805c3..c467477367d35341a8cb7fdac0a5b0ea4121049f 100755 (executable)
@@ -9,17 +9,17 @@
      ********
      PLIB - A Suite of Portable Game Libraries
      Copyright (C) 2001  Steve Baker
+
      This library is free software; you can redistribute it and/or
      modify it under the terms of the GNU Library General Public
      License as published by the Free Software Foundation; either
      version 2 of the License, or (at your option) any later version.
+
      This library is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      Library General Public License for more details.
+
      You should have received a copy of the GNU General Public License
      along with this program; if not, write to the Free Software
      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
@@ -47,7 +47,8 @@
 
 SG_USING_STD(string);
 
-// A local alternative name, for use when a variable called "string" is in scope - e.g. in classes derived from puInput.
+// A local alternative name, for use when a variable called "string"
+// is in scope - e.g. in classes derived from puInput.
 typedef string stdString;
 
 #define DOTDOTSLASH "../"
@@ -63,121 +64,138 @@ static puObject *PP_widget = 0;
 
 static puObject *PE_widget = 0;
 
-void prop_pickerInit()
+
+
+// entry point: called from src/GUI/menubar.cxx -- do_properties_dialog() =====
+
+void prop_pickerView( puObject * )
 {
-       if( PP_widget == 0 ) {
-            fgPropPicker *PP = new fgPropPicker ( PROPPICK_X, PROPPICK_Y, PROPPICK_W, PROPPICK_H, 1, "/", "FG Properties");
-           PP_widget = PP;
-       }
+    if( PP_widget == 0 )
+        prop_pickerInit();
+
+    fgPropPicker *me = (fgPropPicker *)PP_widget -> getUserData();
+    // refresh
+    me -> find_props();
+    FG_PUSH_PUI_DIALOG( me );
 }
 
-void prop_pickerView( puObject * )
+
+
+
+// ============================================================================
+
+void prop_pickerInit()
 {
-       if( PP_widget == 0 ) {
-               prop_pickerInit();
-       }
-       fgPropPicker *me = (fgPropPicker *)PP_widget -> getUserData();
-        // refresh
-        me -> find_props();
-       FG_PUSH_PUI_DIALOG( me );
+    if ( PP_widget == 0 ) {
+        fgPropPicker *PP = new fgPropPicker ( PROPPICK_X, PROPPICK_Y, PROPPICK_W, PROPPICK_H,
+                1, "/", "FG Properties");
+        PP_widget = PP;
+    }
 }
 
+
 void prop_pickerRefresh()
 {
-       if( PP_widget == 0 ) {
-               prop_pickerInit();
-       }
-       fgPropPicker *me = (fgPropPicker *)PP_widget -> getUserData();
-       me -> find_props( true );
-       me -> clrValue();
+    if( PP_widget == 0 )
+        prop_pickerInit();
+
+    fgPropPicker *me = (fgPropPicker *)PP_widget -> getUserData();
+    me -> find_props( true );
+    me -> clrValue();
 }
 
+
 void prop_editOpen( const char * name, const char * value, char * proppath )
 {
-       if( PE_widget == 0 )
-               PE_widget = new fgPropEdit(name, value, proppath);
-
-       fgPropEdit *me = (fgPropEdit *)PE_widget -> getUserData();
-        me -> propname ->    setLabel          (name);
-        me -> propinput ->   setValue          (value);
-        strcpy(me -> propPath, proppath);
-        me -> propinput -> acceptInput ();
-       FG_PUSH_PUI_DIALOG( me );
+    if( PE_widget == 0 )
+        PE_widget = new fgPropEdit(name, value, proppath);
+
+    fgPropEdit *me = (fgPropEdit *)PE_widget -> getUserData();
+    me -> propname -> setLabel (name);
+    me -> propinput -> setValue (value);
+    strcpy(me -> propPath, proppath);
+    me -> propinput -> acceptInput ();
+    FG_PUSH_PUI_DIALOG( me );
 }
 
-// return a human readable form of the value "type"
+
 static string getValueTypeString( const SGPropertyNode_ptr node ) {
     string result;
 
-    if ( node == NULL ) {
-       return "unknown";
-    }
+    if ( node == NULL )
+        return "unknown";
 
     SGPropertyNode::Type type = node->getType();
-    if ( type == SGPropertyNode::UNSPECIFIED ) {
-       result = "unspecified";
-    } else if ( type == SGPropertyNode::NONE ) {
+    if ( type == SGPropertyNode::UNSPECIFIED )
+        result = "unspecified";
+    else if ( type == SGPropertyNode::NONE )
         result = "none";
-    } else if ( type == SGPropertyNode::BOOL ) {
-       result = "bool";
-    } else if ( type == SGPropertyNode::INT ) {
-       result = "int";
-    } else if ( type == SGPropertyNode::LONG ) {
-       result = "long";
-    } else if ( type == SGPropertyNode::FLOAT ) {
-       result = "float";
-    } else if ( type == SGPropertyNode::DOUBLE ) {
-       result = "double";
-    } else if ( type == SGPropertyNode::STRING ) {
-       result = "string";
-    }
+    else if ( type == SGPropertyNode::BOOL )
+        result = "bool";
+    else if ( type == SGPropertyNode::INT )
+        result = "int";
+    else if ( type == SGPropertyNode::LONG )
+        result = "long";
+    else if ( type == SGPropertyNode::FLOAT )
+        result = "float";
+    else if ( type == SGPropertyNode::DOUBLE )
+        result = "double";
+    else if ( type == SGPropertyNode::STRING )
+        result = "string";
 
     return result;
 }
 
+
+
+
+// property picker class ======================================================
+
 void fgPropPicker::fgPropPickerHandleSlider ( puObject * slider )
 {
-  puListBox* list_box = (puListBox*) slider -> getUserData () ;
-
-  float val ;
-  slider -> getValue ( &val ) ;
-  val = 1.0f - val ;
-  int scroll_range = list_box->getNumItems () - list_box->getNumVisible() ;
-  if ( scroll_range > 0 )
-  {
-    int index = int ( scroll_range * val + 0.5 ) ;
-    list_box -> setTopItem ( index ) ;
-  }
+    puListBox* list_box = (puListBox*) slider -> getUserData ();
+
+    float val;
+    slider -> getValue ( &val );
+    val = 1.0f - val;
+    int scroll_range = list_box->getNumItems () - list_box->getNumVisible();
+
+    if ( scroll_range > 0 ) {
+        int index = int ( scroll_range * val + 0.5 );
+        list_box -> setTopItem ( index );
+    }
 }
 
+
 void fgPropPicker::fgPropPickerHandleArrow ( puObject *arrow )
 {
-  puSlider *slider = (puSlider *) arrow->getUserData () ;
-  puListBox* list_box = (puListBox*) slider -> getUserData () ;
-
-  int type = ((puArrowButton *)arrow)->getArrowType() ;
-  int inc = ( type == PUARROW_DOWN     ) ?   1 :
-            ( type == PUARROW_UP       ) ?  -1 :
-            ( type == PUARROW_FASTDOWN ) ?  10 :
-            ( type == PUARROW_FASTUP   ) ? -10 : 0 ;
-
-  float val ;
-  slider -> getValue ( &val ) ;
-  val = 1.0f - val ;
-  int scroll_range = list_box->getNumItems () - list_box->getNumVisible() ;
-  if ( scroll_range > 0 )
-  {
-    int index = int ( scroll_range * val + 0.5 ) ;
-    index += inc ;
-    // if ( index > scroll_range ) index = scroll_range ;
-    // Allow buttons to scroll further than the slider does
-    if ( index > ( list_box->getNumItems () - 1 ) )
-      index = ( list_box->getNumItems () - 1 ) ;
-    if ( index < 0 ) index = 0 ;
-
-    slider -> setValue ( 1.0f - (float)index / scroll_range ) ;
-    list_box -> setTopItem ( index ) ;
-  }
+    puSlider *slider = (puSlider *) arrow->getUserData ();
+    puListBox* list_box = (puListBox*) slider -> getUserData ();
+
+    int type = ((puArrowButton *)arrow)->getArrowType();
+    int inc = ( type == PUARROW_DOWN     ) ?   1 :
+              ( type == PUARROW_UP       ) ?  -1 :
+              ( type == PUARROW_FASTDOWN ) ?  10 :
+              ( type == PUARROW_FASTUP   ) ? -10 : 0;
+
+    float val;
+    slider -> getValue ( &val );
+    val = 1.0f - val;
+    int scroll_range = list_box->getNumItems () - list_box->getNumVisible();
+
+    if ( scroll_range > 0 ) {
+        int index = int ( scroll_range * val + 0.5 );
+        index += inc;
+        // if ( index > scroll_range ) index = scroll_range;
+        // Allow buttons to scroll further than the slider does
+        if ( index > ( list_box->getNumItems () - 1 ) )
+            index = ( list_box->getNumItems () - 1 );
+        if ( index < 0 )
+            index = 0;
+
+        slider -> setValue ( 1.0f - (float)index / scroll_range );
+        list_box -> setTopItem ( index );
+    }
 }
 
 
@@ -185,150 +203,137 @@ void fgPropPicker::chop_file ( char *fname )
 {
   /* removes everything back to the last '/' */
 
-  for ( int i = strlen(fname)-1 ; fname[i] != SLASH[0] && i >= 0 ; i-- )
-    fname[i] = '\0' ;
+    for ( int i = strlen(fname)-1; fname[i] != SLASH[0] && i >= 0; i-- )
+        fname[i] = '\0';
 }
 
 
 void fgPropPicker::go_up_one_directory ( char *fname )
 {
-  /* removes everything back to the last but one '/' */
+    /* removes everything back to the last but one '/' */
 
-  chop_file ( fname ) ;
+    chop_file ( fname );
 
-  if ( strlen ( fname ) == 0 )
-  {
-    /* Empty string!  The only way to go up is to append a "../" */
+    if ( strlen ( fname ) == 0 ) {
+        /* Empty string!  The only way to go up is to append a "../" */
+        strcpy ( fname, DOTDOTSLASH );
+        return;
+    }
 
-    strcpy ( fname, DOTDOTSLASH ) ;
-    return ;
-  }
+    /* If the last path element is a "../" then we'll have to add another "../" */
 
-  /* If the last path element is a "../" then we'll have to add another "../" */
+    if ( strcmp ( & fname [ strlen(fname)-3 ], DOTDOTSLASH ) == 0 ) {
+        if ( strlen ( fname ) + 4 >= PUSTRING_MAX ) {
+            ulSetError ( UL_WARNING, "PUI: fgPropPicker - path is too long, max is %d.",
+                    PUSTRING_MAX );
+            return;
+        }
 
-  if ( strcmp ( & fname [ strlen(fname)-3 ], DOTDOTSLASH ) == 0 )
-  {
-   if ( strlen ( fname ) + 4 >= PUSTRING_MAX )
-    {
-      ulSetError ( UL_WARNING, "PUI: fgPropPicker - path is too long, max is %d.",
-                          PUSTRING_MAX ) ;
-      return ;
+        strcat ( fname, DOTDOTSLASH );
+        return;
     }
 
-    strcat ( fname, DOTDOTSLASH ) ;
-    return ;
-  }
-
-  /* Otherwise, just delete the last element of the path. */
+    /* Otherwise, just delete the last element of the path. */
+    /* Remove the trailing slash - then remove the rest as if it was a file name */
 
-  /* Remove the trailing slash - then remove the rest as if it was a file name */
-
-  fname [ strlen(fname)-1 ] = '\0' ;
-  chop_file ( fname ) ;
+    fname [ strlen(fname)-1 ] = '\0';
+    chop_file ( fname );
 }
 
 
 void fgPropPicker::handle_select ( puObject* list_box )
 {
-  fgPropPicker* prop_picker = (fgPropPicker*) list_box -> getUserData () ;
-  int selected ;
-  list_box -> getValue ( &selected ) ;
-
-  if ( selected >= 0 && selected < prop_picker -> num_files )
-  {
-    char *dst = prop_picker -> startDir ;
-    char *src = prop_picker -> files [ selected ] ;
-
-    if (prop_picker->dotFiles && (selected < 2)) {
-        if ( strcmp ( src, "." ) == 0 ) {
-            /* Do nothing - but better refresh anyway. */
-       
-            prop_picker -> find_props () ;
-            return ;
-        } else if ( strcmp ( src, ".." ) == 0 ) {
-            /* Do back up one level - so refresh. */
-       
-            go_up_one_directory ( dst ) ;
-            prop_picker -> find_props () ;
-            return ;
+    fgPropPicker* prop_picker = (fgPropPicker*) list_box -> getUserData ();
+    int selected;
+    list_box -> getValue ( &selected );
+
+    if ( selected >= 0 && selected < prop_picker -> num_files ) {
+        char *dst = prop_picker -> startDir;
+        char *src = prop_picker -> files [ selected ];
+
+        if (prop_picker->dotFiles && (selected < 2)) {
+            if ( strcmp ( src, "." ) == 0 ) {
+                /* Do nothing - but better refresh anyway. */
+
+                prop_picker -> find_props ();
+                return;
+            } else if ( strcmp ( src, ".." ) == 0 ) {
+                /* Do back up one level - so refresh. */
+
+                go_up_one_directory ( dst );
+                prop_picker -> find_props ();
+                return;
+            }
         }
-    }
 
-    //  we know we're dealing with a regular entry, so convert
-    // it to an index into children[]
-    if (prop_picker->dotFiles) selected -= 2; 
-    SGPropertyNode_ptr child = prop_picker->children[selected];
-    assert(child != NULL);
-               
-    // check if it's a directory (had children)
-    if ( child->nChildren() ) {
-      /* If this is a directory - then descend into it and refresh */
-
-      if ( strlen ( dst ) + strlen ( src ) + 2 >= PUSTRING_MAX )
-      {
-       ulSetError ( UL_WARNING,
-          "PUI: fgPropPicker - path is too long, max is %d.", PUSTRING_MAX ) ;
-       return ;
-      }
-
-      strcat ( dst, src ) ; /* add path to descend to */
-      prop_picker -> find_props () ;
-      return ;
-    }
+        // we know we're dealing with a regular entry, so convert
+        // it to an index into children[]
+        if (prop_picker->dotFiles)
+            selected -= 2;
+        SGPropertyNode_ptr child = prop_picker->children[selected];
+        assert(child != NULL);
+
+        // check if it's a directory (had children)
+        if ( child->nChildren() ) {
+            /* If this is a directory - then descend into it and refresh */
+
+            if ( strlen ( dst ) + strlen ( src ) + 2 >= PUSTRING_MAX ) {
+                ulSetError ( UL_WARNING,
+                        "PUI: fgPropPicker - path is too long, max is %d.", PUSTRING_MAX );
+                return;
+            }
+
+            strcat ( dst, src ); /* add path to descend to */
+            prop_picker -> find_props ();
+            return;
+        }
 
-    /* If this is a regular file - then just append it to the string */
+        /* If this is a regular file - then just append it to the string */
 
-    if ( strlen ( dst ) + strlen ( src ) + 2 >= PUSTRING_MAX )
-    {
-      ulSetError ( UL_WARNING, 
-        "PUI: fgPropPicker - path is too long, max is %d.", PUSTRING_MAX ) ;
-      return ;
-    }
+        if ( strlen ( dst ) + strlen ( src ) + 2 >= PUSTRING_MAX ) {
+            ulSetError ( UL_WARNING,
+                    "PUI: fgPropPicker - path is too long, max is %d.", PUSTRING_MAX );
+            return;
+        }
 
-    if (child->getType() == SGPropertyNode::BOOL && (fgGetKeyModifiers() & KEYMOD_CTRL)) {
-        child->setBoolValue(!child->getBoolValue());
-        prop_pickerRefresh();
-    } else
-        prop_editOpen(child->getName(), child->getStringValue(), dst);
-  }
-  else
-  {
-    /*
-      The user clicked on blank screen - maybe we should
-      refresh just in case some other process created the
-      file.
-    */
-      // should be obsolete once we observe child add/remove on our top node
-      prop_picker -> find_props () ;
-  }
+        if (child->getType() == SGPropertyNode::BOOL && (fgGetKeyModifiers() & KEYMOD_CTRL)) {
+            child->setBoolValue(!child->getBoolValue());
+            prop_pickerRefresh();
+        } else
+            prop_editOpen(child->getName(), child->getStringValue(), dst);
+
+    } else {
+          // The user clicked on blank screen - maybe we should
+          // refresh just in case some other process created the file.
+          // Should be obsolete once we observe child add/remove on our top node
+          prop_picker -> find_props ();
+    }
 }
 
 
 void fgPropPicker::fgPropPickerHandleOk ( puObject* b )
 {
-  fgPropPicker* prop_picker = (fgPropPicker*) b -> getUserData () ;
+    fgPropPicker* prop_picker = (fgPropPicker*) b -> getUserData ();
 
-  /* nothing to do, just hide */
-  FG_POP_PUI_DIALOG( prop_picker );
+    /* nothing to do, just hide */
+    FG_POP_PUI_DIALOG( prop_picker );
 }
 
 
 void fgPropPicker::delete_arrays ()
 {
-  if ( files )
-  {
-    for ( int i=0; i<num_files; i++ ) {
-               delete[] files[i];
-    }
+    if ( files ) {
+        for ( int i=0; i<num_files; i++ )
+            delete[] files[i];
+
+        for (int C=0; C<num_children; ++C) {
+            if (children[C]->nChildren() == 0)
+                children[C]->removeChangeListener(this);
+        }
 
-    for (int C=0; C<num_children; ++C) {
-        if (children[C]->nChildren() == 0)
-            children[C]->removeChangeListener(this);
+        delete[] files;
+        delete[] children;
     }
-       
-    delete[] files;
-    delete[] children;
-  }
 }
 
 /*
@@ -338,199 +343,202 @@ fgPropPicker::~fgPropPicker ()
   delete_arrays();
 
   if ( this == puActiveWidget () )
-    puDeactivateWidget () ;
+    puDeactivateWidget ();
 }
 
 */
 
+
 fgPropPicker::fgPropPicker ( int x, int y, int w, int h, int arrows,
-                                      const char *dir, const char *title ) :
-  fgPopup ( x,y ),
-  _gui((NewGUI *)globals->get_subsystem("gui"))
+                             const char *dir, const char *title ) :
+    fgPopup ( x,y ),
+    _gui((NewGUI *)globals->get_subsystem("gui"))
 {
-  puFont LegendFont, LabelFont;
-  puGetDefaultFonts ( &LegendFont, &LabelFont );
-  FGColor txtcol(_gui->getColor("label"));
-  txtcol.merge(_gui->getColor("text"));
-  txtcol.merge(_gui->getColor("text-label"));
-
-  files = NULL ;
-  num_files = 0 ;
-
-  strcpy ( startDir, dir ) ;
-  // printf ( "StartDirLEN=%i", strlen(startDir));
-  if ( arrows > 2 ) arrows = 2 ;
-  if ( arrows < 0 ) arrows = 0 ;
-  arrow_count = arrows ;
-
-  frame = new puFrame ( 0, 0, w, h );
-
-  setUserData( this );
-
-  proppath = new puText            (10, h-30);
-  proppath ->    setLabel          (startDir);
-  proppath ->    setColor(PUCOL_LABEL, txtcol.red(), txtcol.green(),
-                          txtcol.blue(), txtcol.alpha());
-
-  slider = new puSlider (w-30,40+20*arrows,h-100-40*arrows,TRUE,20);
-  slider->setValue(1.0f);
-  
-  list_box = new puListBox ( 10, 40, w-40, h-60 ) ;
-  list_box -> setLabel ( title );
-  list_box -> setLabelPlace ( PUPLACE_ABOVE ) ;
-  list_box -> setStyle ( -PUSTYLE_SMALL_SHADED ) ;
-  list_box -> setUserData ( this ) ;
-  list_box -> setCallback ( handle_select ) ;
-  list_box -> setValue ( 0 ) ;
-  list_box -> setColor(PUCOL_LABEL, txtcol.red(), txtcol.green(),
-                       txtcol.blue(), txtcol.alpha());
-
-  ok_button = new puOneShot ( 10, 10, (w<170)?(w/2-5):80, 30 ) ;
-  ok_button -> setLegend ( "Ok" ) ;
-  ok_button -> setUserData ( this ) ;
-  ok_button -> setCallback ( fgPropPickerHandleOk ) ;
-
-  if ( arrows > 0 )
-  {
-    down_arrow = new puArrowButton ( w-30, 20+20*arrows, w-10, 40+20*arrows, PUARROW_DOWN ) ;
-    down_arrow->setUserData ( slider ) ;
-    down_arrow->setCallback ( fgPropPickerHandleArrow ) ;
-
-    up_arrow = new puArrowButton ( w-30, h-60-20*arrows, w-10, h-40-20*arrows, PUARROW_UP ) ;
-    up_arrow->setUserData ( slider ) ;
-    up_arrow->setCallback ( fgPropPickerHandleArrow ) ;
-  }
-
-  // after picker is built, load the list box with data...
-  find_props () ;
-
-//  printf("after Props files[1]=%s\n",files[1]);
-//  printf("num items %i", list_box -> getNumItems ());
-
-  slider -> setUserData ( list_box ) ;
-  slider -> setCallback ( fgPropPickerHandleSlider ) ;
-
-  FG_FINALIZE_PUI_DIALOG( this );
+    puFont LegendFont, LabelFont;
+    puGetDefaultFonts ( &LegendFont, &LabelFont );
+    FGColor txtcol(_gui->getColor("label"));
+    txtcol.merge(_gui->getColor("text"));
+    txtcol.merge(_gui->getColor("text-label"));
+
+    files = NULL;
+    num_files = 0;
+
+    strcpy ( startDir, dir );
+    // printf ( "StartDirLEN=%i", strlen(startDir));
+    if ( arrows > 2 )
+        arrows = 2;
+    if ( arrows < 0 )
+        arrows = 0;
+    arrow_count = arrows;
+
+    frame = new puFrame ( 0, 0, w, h );
+
+    setUserData( this );
+
+    proppath = new puText (10, h-30);
+    proppath -> setLabel (startDir);
+    proppath -> setColor(PUCOL_LABEL, txtcol.red(), txtcol.green(),
+                         txtcol.blue(), txtcol.alpha());
+
+    slider = new puSlider (w-30,40+20*arrows,h-100-40*arrows,TRUE,20);
+    slider->setValue(1.0f);
+
+    list_box = new puListBox ( 10, 40, w-40, h-60 );
+    list_box -> setLabel ( title );
+    list_box -> setLabelPlace ( PUPLACE_ABOVE );
+    list_box -> setStyle ( -PUSTYLE_SMALL_SHADED );
+    list_box -> setUserData ( this );
+    list_box -> setCallback ( handle_select );
+    list_box -> setValue ( 0 );
+    list_box -> setColor(PUCOL_LABEL, txtcol.red(), txtcol.green(),
+                         txtcol.blue(), txtcol.alpha());
+
+    ok_button = new puOneShot ( 10, 10, (w<170)?(w/2-5):80, 30 );
+    ok_button -> setLegend ( "Ok" );
+    ok_button -> setUserData ( this );
+    ok_button -> setCallback ( fgPropPickerHandleOk );
+
+    if ( arrows > 0 ) {
+        down_arrow = new puArrowButton ( w-30, 20+20*arrows, w-10, 40+20*arrows, PUARROW_DOWN );
+        down_arrow->setUserData ( slider );
+        down_arrow->setCallback ( fgPropPickerHandleArrow );
+
+        up_arrow = new puArrowButton ( w-30, h-60-20*arrows, w-10, h-40-20*arrows, PUARROW_UP );
+        up_arrow->setUserData ( slider );
+        up_arrow->setCallback ( fgPropPickerHandleArrow );
+    }
+
+    // after picker is built, load the list box with data...
+    find_props ();
+
+    // printf("after Props files[1]=%s\n",files[1]);
+    // printf("num items %i", list_box -> getNumItems ());
+
+    slider -> setUserData ( list_box );
+    slider -> setCallback ( fgPropPickerHandleSlider );
+
+    FG_FINALIZE_PUI_DIALOG( this );
 }
 
 
 // Like strcmp, but for sorting property nodes into a suitable display order.
 static int nodeNameCompare(const void *ppNode1, const void *ppNode2)
 {
-  const SGPropertyNode_ptr pNode1 = *(const SGPropertyNode_ptr *)ppNode1;
-  const SGPropertyNode_ptr pNode2 = *(const SGPropertyNode_ptr *)ppNode2;
+    const SGPropertyNode_ptr pNode1 = *(const SGPropertyNode_ptr *)ppNode1;
+    const SGPropertyNode_ptr pNode2 = *(const SGPropertyNode_ptr *)ppNode2;
 
-  // Compare name first, and then index.
-  int diff = strcmp(pNode1->getName(), pNode2->getName());
-  if (diff) return diff;
-  return pNode1->getIndex() - pNode2->getIndex();
+    // Compare name first, and then index.
+    int diff = strcmp(pNode1->getName(), pNode2->getName());
+    if (diff)
+        return diff;
+
+    return pNode1->getIndex() - pNode2->getIndex();
 }
 
 
 // Replace the current list of properties with the children of node "startDir".
 void fgPropPicker::find_props ( bool restore_pos )
 {
-  int pi;
-  int i;
-
-  delete_arrays();
-  num_files = 0 ;
-
-//  printf("dir begin of find_props=%s\n",startDir);
-//  printf("len of dir=%i",strlen(startDir));
-  SGPropertyNode * node = globals->get_props()->getNode(startDir);
-
-  num_files = (node) ? (int)node->nChildren() : 0;
-               
-  // instantiate string objects and add [.] and [..] for subdirs
-  if (strcmp(startDir,"/") == 0) {
-    files = new char* [ num_files+1 ] ;
-    pi = 0;
-    dotFiles = false;
-  } else {
-    // add two for the .. and .
-    num_files = num_files + 2;
-    // make room for .. and .
-    files = new char* [ num_files+1 ] ;
-
-    stdString line = ".";
-    files [ 0 ] = new char[line.size() + 1];
-    strcpy ( files [ 0 ], line.c_str() );
-
-    line = "..";
-    files [ 1 ] = new char[line.size() + 1];
-    strcpy ( files [ 1 ], line.c_str() );
-
-    pi = 2;
-    dotFiles = true;
-  };
-
-
-  if (node) {
-    // Get the list of children
-    num_children = node->nChildren();
-    children = new SGPropertyNode_ptr[num_children];
-    for (i = 0; i < num_children; i++) {
-      children[i] = node->getChild(i);
+    int pi;
+    int i;
+
+    delete_arrays();
+    num_files = 0;
+
+    // printf("dir begin of find_props=%s\n",startDir);
+    // printf("len of dir=%i",strlen(startDir));
+    SGPropertyNode * node = globals->get_props()->getNode(startDir);
+
+    num_files = node ? (int)node->nChildren() : 0;
+
+    // instantiate string objects and add [.] and [..] for subdirs
+    if (strcmp(startDir,"/") == 0) {
+        files = new char* [ num_files+1 ];
+        pi = 0;
+        dotFiles = false;
+    } else {
+        // add two for the .. and .
+        num_files = num_files + 2;
+        // make room for .. and .
+        files = new char* [ num_files+1 ];
+
+        stdString line = ".";
+        files [ 0 ] = new char[line.size() + 1];
+        strcpy ( files [ 0 ], line.c_str() );
+
+        line = "..";
+        files [ 1 ] = new char[line.size() + 1];
+        strcpy ( files [ 1 ], line.c_str() );
+
+        pi = 2;
+        dotFiles = true;
     }
-       
-    // Sort the children into display order
-    qsort(children, num_children, sizeof(children[0]), nodeNameCompare);
-
-    // Make lists of the children's names, values, etc.
-    for (i = 0; i < num_children; i++) {
-        SGPropertyNode * child = children[i];
-        stdString name = child->getDisplayName(true);
-
-        if ( child->nChildren() > 0 ) {
-            files[ pi ] = new char[ strlen(name.c_str())+2 ] ;
-            strcpy ( files [ pi ], name.c_str() ) ;
-            strcat ( files [ pi ], "/" ) ;
-        } else {
-            files[pi] = NULL; // ensure it's NULL before setting intial value
-            updateTextForEntry(i);
-            // observe it
-            child->addChangeListener(this);
+
+
+    if (node) {
+        num_children = node->nChildren();
+        children = new SGPropertyNode_ptr[num_children];
+        for (i = 0; i < num_children; i++)
+            children[i] = node->getChild(i);
+
+        qsort(children, num_children, sizeof(children[0]), nodeNameCompare);
+
+        // Make lists of the children's names, values, etc.
+        for (i = 0; i < num_children; i++) {
+            SGPropertyNode * child = children[i];
+            stdString name = child->getDisplayName(true);
+
+            if ( child->nChildren() > 0 ) {
+                files[ pi ] = new char[ strlen(name.c_str())+2 ];
+                strcpy ( files [ pi ], name.c_str() );
+                strcat ( files [ pi ], "/" );
+            } else {
+                files[pi] = NULL; // ensure it's NULL before setting intial value
+                updateTextForEntry(i);
+                // observe it
+                child->addChangeListener(this);
+            }
+
+            ++pi;
         }
-               
-        ++pi;
     }
-  }
-
-  files [ num_files ] = NULL ;
-
-  proppath ->    setLabel          (startDir);
-
-  int top = list_box->getTopItem();
-  list_box -> newList ( files ) ;
-  if (restore_pos)
-      list_box->setTopItem(top);
-
-  // adjust the size of the slider...
-  if (num_files > list_box->getNumVisible()) {
-    slider->setSliderFraction((float)list_box->getNumVisible() / num_files);
-    if (!restore_pos)
-        slider->setValue(1.0f);
-    slider->reveal();
-    up_arrow->reveal();
-    down_arrow->reveal();
-  } else {
-    slider->hide();
-    up_arrow->hide();
-    down_arrow->hide();      
-  }
+
+    files [ num_files ] = NULL;
+
+    proppath -> setLabel(startDir);
+
+    int top = list_box->getTopItem();
+    list_box -> newList ( files );
+    if (restore_pos)
+        list_box->setTopItem(top);
+
+    // adjust the size of the slider...
+    if (num_files > list_box->getNumVisible()) {
+        slider->setSliderFraction((float)list_box->getNumVisible() / num_files);
+        if (!restore_pos)
+            slider->setValue(1.0f);
+
+        slider->reveal();
+        up_arrow->reveal();
+        down_arrow->reveal();
+
+    } else {
+        slider->hide();
+        up_arrow->hide();
+        down_arrow->hide();
+    }
 }
 
+
 void fgPropPicker::updateTextForEntry(int index)
 {
     assert((index >= 0) && (index < num_children));
     SGPropertyNode_ptr node = children[index];
-       
-    // take a copy of the value        
+
+    // take a copy of the value
     stdString value = node->getStringValue();
 
-    stdString line = node->getDisplayName() + stdString(" = '")
-        + value + "' " + "(";
+    stdString line = node->getDisplayName() + stdString(" = '") + value + "' " + "(";
     line += getValueTypeString( node );
 
     if (fgGetBool("/sim/gui/dialogs/property-browser/show-flags", false)) {
@@ -555,15 +563,17 @@ void fgPropPicker::updateTextForEntry(int index)
     if (line.length() >= PUSTRING_MAX)
         line[PUSTRING_MAX-1] = '\0';
 
-    if (dotFiles) index +=2;
-               
+    if (dotFiles)
+        index +=2;
+
     // don't leak everywhere if we're updating
     delete[] files[index];
-               
-    files[index] = new char[ strlen(line.c_str())+2 ] ;
-    strcpy ( files [ index ], line.c_str() ) ;
+
+    files[index] = new char[ strlen(line.c_str())+2 ];
+    strcpy ( files [ index ], line.c_str() );
 }
 
+
 void fgPropPicker::valueChanged(SGPropertyNode *nd)
 {
     for (int C=0; C<num_children; ++C)
@@ -573,32 +583,39 @@ void fgPropPicker::valueChanged(SGPropertyNode *nd)
         }
 }
 
+
+
+
+// property editor class ======================================================
+
 void fgPropEdit::fgPropEditHandleCancel ( puObject* b )
 {
-  fgPropEdit* prop_edit = (fgPropEdit*) b -> getUserData () ;
-  prop_pickerRefresh();
-  FG_POP_PUI_DIALOG( prop_edit );
+    fgPropEdit* prop_edit = (fgPropEdit*) b -> getUserData ();
+    prop_pickerRefresh();
+    FG_POP_PUI_DIALOG( prop_edit );
 }
 
+
 void fgPropEdit::fgPropEditHandleOK ( puObject* b )
 {
-  fgPropEdit* prop_edit = (fgPropEdit*) b -> getUserData () ;
-  const char* tname;
-  char* tvalue;
+    fgPropEdit* prop_edit = (fgPropEdit*) b -> getUserData ();
+    const char* tname;
+    char* tvalue;
 
-  // use label text for property node to be updated
-  tname = prop_edit -> propname -> getLabel();
-  prop_edit -> propinput -> getValue( &tvalue );
+    // use label text for property node to be updated
+    tname = prop_edit -> propname -> getLabel();
+    prop_edit -> propinput -> getValue( &tvalue );
 
-  SGPropertyNode * node = globals->get_props()->getNode(prop_edit -> propPath);
-  node->getNode( prop_edit -> propname -> getLabel(), true)->setStringValue(tvalue);
+    SGPropertyNode * node = globals->get_props()->getNode(prop_edit -> propPath);
+    node->getNode( prop_edit -> propname -> getLabel(), true)->setStringValue(tvalue);
 
-  // update the picker display so it shows new value
-  prop_pickerRefresh();
+    // update the picker display so it shows new value
+    prop_pickerRefresh();
 
-  FG_POP_PUI_DIALOG( prop_edit );
+    FG_POP_PUI_DIALOG( prop_edit );
 }
 
+
 fgPropEdit::fgPropEdit ( const char *name, const char *value, char *proppath ) :
     fgPopup ( 0, 0 ),
     _gui((NewGUI *)globals->get_subsystem("gui"))
@@ -612,32 +629,33 @@ fgPropEdit::fgPropEdit ( const char *name, const char *value, char *proppath ) :
     // locate in relation to picker widget...
     int fx = PROPPICK_X;
     int fy = PROPPICK_Y + PROPPICK_H;
-    frame   = new puFrame           (fx,fy, fx+500, fy+120);
+    frame   = new puFrame (fx,fy, fx+500, fy+120);
 
     strcpy (propPath, proppath);
 
     setUserData( this );
 
-    propname = new puText            (fx+10, fy+90);
-    propname ->    setLabel          (name);
-    propname ->    setColor(PUCOL_LABEL, txtcol.red(), txtcol.green(),
-                            txtcol.blue(), txtcol.alpha());
-        
-    propinput   = new puInput           (fx+10, fy+50, fx+480, fy+80);
-    propinput   ->    setValue          (value);
-    propinput   ->    acceptInput();
-        
-
-    ok_button     =  new puOneShot   (fx+10, fy+10, fx+80, fy+30);
-    ok_button     ->     setUserData (this);
-    ok_button     ->     setLegend   (gui_msg_OK);
-    ok_button     ->     setCallback (fgPropEditHandleOK);
-    ok_button     ->     makeReturnDefault(TRUE);
-        
-    cancel_button =  new puOneShot   (fx+100, fy+10, fx+180, fy+30);
-    cancel_button     ->     setUserData (this);
-    cancel_button ->     setLegend   (gui_msg_CANCEL);
-    cancel_button ->     setCallback (fgPropEditHandleCancel);
-        
+    propname = new puText (fx+10, fy+90);
+    propname -> setLabel(name);
+    propname -> setColor(PUCOL_LABEL, txtcol.red(), txtcol.green(),
+            txtcol.blue(), txtcol.alpha());
+
+    propinput = new puInput (fx+10, fy+50, fx+480, fy+80);
+    propinput -> setValue (value);
+    propinput -> acceptInput();
+
+    ok_button = new puOneShot (fx+10, fy+10, fx+80, fy+30);
+    ok_button -> setUserData (this);
+    ok_button -> setLegend (gui_msg_OK);
+    ok_button -> setCallback (fgPropEditHandleOK);
+    ok_button -> makeReturnDefault (TRUE);
+
+    cancel_button = new puOneShot (fx+100, fy+10, fx+180, fy+30);
+    cancel_button -> setUserData (this);
+    cancel_button -> setLegend (gui_msg_CANCEL);
+    cancel_button -> setCallback (fgPropEditHandleCancel);
+
     FG_FINALIZE_PUI_DIALOG( this );
 }
+
+
index 2bb87cb7fee554b8c2f6112b8311e69052be653b..6986c749668a24a67803fe99e22af7f5b25a5f6c 100755 (executable)
@@ -1,7 +1,5 @@
-/*
-  prop_picker.hxx
-
-*/
+#ifndef _PROP_PICKER_HXX
+#define _PROP_PICKER_HXX
 
 #include <plib/pu.h>
 
@@ -15,93 +13,89 @@ void prop_pickerView( puObject * );
 void prop_pickerRefresh();
 void prop_editOpen( const char * name, const char * value );
 
-class fgPropPicker       ;
-class fgPropEdit       ;
-
-class fgPropPicker : 
-    public fgPopup,
-    public SGPropertyChangeListener
-{
-
-  static void handle_select ( puObject *b ) ;
-  static void input_entered ( puObject *b ) ;
-  static void fgPropPickerHandleSlider ( puObject * slider );
-  static void fgPropPickerHandleArrow ( puObject *arrow );
-  static void fgPropPickerHandleOk ( puObject* b );
-
-  void delete_arrays () ;
-
-  /** update the text string in the puList using the given node and
-      updating the requested offset. The value of dotFiles is taken
-      into account before the index is applied, i.e this should be
-      an index into 'children' */
-  void updateTextForEntry(int index);
-       
-  char** files ;
-  int num_files   ;
-  int arrow_count ;
-  char startDir [ PUSTRING_MAX * 2 ] ;
-
-  SGPropertyNode_ptr* children;
-  int num_children;
-       
-  /** set if we're display the . and .. entries at the start of the
-      list */
-  bool dotFiles;
-       
-/* puInput   *input         ; */
 
-protected:
+class fgPropPicker;
+class fgPropEdit;
 
-  puFrame   *frame         ;
-  puListBox *list_box      ;
-  puSlider  *slider        ;
-  puOneShot *cancel_button ;
-  puOneShot *ok_button     ;
-  puArrowButton *down_arrow ;
-  puArrowButton *up_arrow ;
+class fgPropPicker : public fgPopup, public SGPropertyChangeListener {
 
-  NewGUI * _gui;
+    static void handle_select ( puObject *b );
+    static void input_entered ( puObject *b );
+    static void fgPropPickerHandleSlider ( puObject * slider );
+    static void fgPropPickerHandleArrow ( puObject *arrow );
+    static void fgPropPickerHandleOk ( puObject* b );
+
+    void delete_arrays ();
+
+    // update the text string in the puList using the given node and
+    // updating the requested offset. The value of dotFiles is taken
+    // into account before the index is applied, i.e this should be
+    // an index into 'children' */
+    void updateTextForEntry(int index);
+
+    char** files;
+    int num_files;
+    int arrow_count;
+    char startDir [ PUSTRING_MAX * 2 ];
+
+    SGPropertyNode_ptr* children;
+    int num_children;
+
+    // set if we're display the . and .. entries at the start of the
+    // list
+    bool dotFiles;
+
+protected:
+    puFrame *frame;
+    puListBox *list_box;
+    puSlider *slider;
+    puOneShot *cancel_button;
+    puOneShot *ok_button;
+    puArrowButton *down_arrow;
+    puArrowButton *up_arrow;
+
+    NewGUI * _gui;
 
 public:
-  puText    *proppath      ;
-  void find_props ( bool restore_slider_pos = false ) ;
-  fgPropPicker ( int x, int y, int w, int h, int arrows,
-                 const char *dir, const char *title = "Pick a file" ) ;
+    puText *proppath;
+    void find_props ( bool restore_slider_pos = false );
+    fgPropPicker ( int x, int y, int w, int h, int arrows,
+                   const char *dir, const char *title = "Pick a file" );
 
-  ~fgPropPicker () {;}
+    ~fgPropPicker () {}
 
-  static void go_up_one_directory ( char *fname ) ;
-  static void chop_file ( char *fname ) ;
+    static void go_up_one_directory ( char *fname );
+    static void chop_file ( char *fname );
 
-  // over-ride the method from SGPropertyNodeListener
-  virtual void valueChanged (SGPropertyNode * node);
-} ;
+    // over-ride the method from SGPropertyNodeListener
+    virtual void valueChanged (SGPropertyNode * node);
+};
 
-class fgPropEdit : public fgPopup
-{
 
-  static void fgPropEditHandleCancel ( puObject *b ) ;
+
+class fgPropEdit : public fgPopup {
+
+  static void fgPropEditHandleCancel ( puObject *b );
   static void fgPropEditHandleOK ( puObject* b );
 
 protected:
-
-  puFrame   *frame         ;
-  puOneShot *cancel_button ;
-  puOneShot *ok_button     ;
+  puFrame *frame;
+  puOneShot *cancel_button;
+  puOneShot *ok_button;
 
   NewGUI * _gui;
 
 public:
-  puText    *propname     ;
-  puInput   *propinput     ;
-  char propPath [ PUSTRING_MAX * 2 ] ;
+  puText *propname;
+  puInput *propinput;
+  char propPath [ PUSTRING_MAX * 2 ];
 
-  fgPropEdit ( const char *name, const char *value, char *proppath ) ;
+  fgPropEdit ( const char *name, const char *value, char *proppath );
 
-  ~fgPropEdit () {;}
+  ~fgPropEdit () {}
 
-  static void go_up_one_directory ( char *fname ) ;
-  static void chop_file ( char *fname ) ;
+  static void go_up_one_directory ( char *fname );
+  static void chop_file ( char *fname );
+};
 
-} ;
+#endif // _PROP_PICKER_HXX