Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method CreateForSnapshot ( 
 | 
  LibOpt_Snapshot snapshot, 
 | 
  String path, 
 | 
  shadow[LibOpt_UIOwner] owner 
 | 
) id:Method_LibOpt_FormSnapshotColumns_CreateForSnapshot 
 | 
{ 
 | 
  #keys: '[139164.4.767485964]' 
 | 
  Body: 
 | 
  [* 
 | 
    type_name := typeofexpression( snapshot ).Name() 
 | 
     
 | 
    nvt := NamedValueTreeIO::Export( snapshot ); 
 | 
    root := nvt.Root().Child( nvt.GetHandle( type_name ) ); 
 | 
     
 | 
    tv := typeofexpression( snapshot ).TypeView(); 
 | 
    traverse( ApplicationScope.TypeInterface( typeofexpression( snapshot ) ), Attributes, att, 
 | 
              not att.IsSystem() ) 
 | 
    { 
 | 
      child := guard( root.Child( nvt.GetHandle( att.Name() ) ), null( NamedValue ) ); 
 | 
      value := ''; 
 | 
      type := ''; 
 | 
      if( att.IsImage() ) 
 | 
      { 
 | 
        type := 'Image'; 
 | 
        value := Char::Construct( 128247 ); 
 | 
      }      
 | 
      else 
 | 
      { 
 | 
        Form.ExtractAttribute( child, type, value );   
 | 
      } 
 | 
     
 | 
      owner.UISnapshotAttribute( relnew, 
 | 
                                 Path := path, 
 | 
                                 AttributeName := att.Name(), 
 | 
                                 Value := value, 
 | 
                                 Description := guard( select( tv, Attributes, tv_att, tv_att.Name() = att.Name() ).Description(), '' ), 
 | 
                                 Type := type, 
 | 
                                 Snapshot := snapshot ); 
 | 
    } 
 | 
     
 | 
    traverse( snapshot, Children, subsnapshot, not subsnapshot.istype( LibOpt_SnapshotComponent ) ) 
 | 
    { 
 | 
      this.CreateForSnapshot( subsnapshot, path + '.' + subsnapshot.Type(), owner ); 
 | 
    } 
 | 
  *] 
 | 
} 
 |