Index: tolbase/lib/toltk/bftrview.tcl
===================================================================
--- tolbase/lib/toltk/bftrview.tcl	(revision 87b1c4652e16006502efdc352172af083d5602d1)
+++ tolbase/lib/toltk/bftrview.tcl	(revision 4592f768b2697d62dda5d41857e86a9938d2235c)
@@ -5,4 +5,5 @@
 #/////////////////////////////////////////////////////////////////////////////
 
+#@ OBSOLETO
 
 #/////////////////////////////////////////////////////////////////////////////
Index: tolbase/lib/toltk/tclIndex
===================================================================
--- tolbase/lib/toltk/tclIndex	(revision 87b1c4652e16006502efdc352172af083d5602d1)
+++ tolbase/lib/toltk/tclIndex	(revision 4592f768b2697d62dda5d41857e86a9938d2235c)
@@ -79,8 +79,4 @@
 set auto_index(::TolConsole::TableRecent) [list source [file join $dir tolbase.tcl]]
 set auto_index(::TolConsole::TableRecentClear) [list source [file join $dir tolbase.tcl]]
-set auto_index(::BayesTreeview::TreeviewFromFile) [list source [file join $dir bftrview.tcl]]
-set auto_index(::BayesTreeview::TreeviewToFile) [list source [file join $dir bftrview.tcl]]
-set auto_index(::BayesTreeview::NodeToFile) [list source [file join $dir bftrview.tcl]]
-set auto_index(::BayesTreeview::NodeFromFile) [list source [file join $dir bftrview.tcl]]
 set auto_index(::ODBCDialog::Create) [list source [file join $dir odbc.tcl]]
 set auto_index(::ODBCDialog::Destroy) [list source [file join $dir odbc.tcl]]
@@ -810,11 +806,11 @@
 set auto_index(::ListOrder::Down) [list source [file join $dir listorde.tcl]]
 
-set auto_index(Blt_ViewMode) [list source [file join $dir graph.tcl]]
-set auto_index(::blt::SetZoomScale) [list source [file join $dir graph.tcl]]
-set auto_index(::blt::ClearMode) [list source [file join $dir graph.tcl]]
-set auto_index(::blt::ZoomScale) [list source [file join $dir graph.tcl]]
-set auto_index(::blt::SetZoomPoint) [list source [file join $dir graph.tcl]]
-set auto_index(::blt::SetScrollPoint) [list source [file join $dir graph.tcl]]
-set auto_index(::blt::Scroll) [list source [file join $dir graph.tcl]]
+set auto_index(Rbc_ViewMode) [list source [file join $dir graph.tcl]]
+set auto_index(::rbc::SetZoomScale) [list source [file join $dir graph.tcl]]
+set auto_index(::rbc::ClearMode) [list source [file join $dir graph.tcl]]
+set auto_index(::rbc::ZoomScale) [list source [file join $dir graph.tcl]]
+set auto_index(::rbc::SetZoomPoint) [list source [file join $dir graph.tcl]]
+set auto_index(::rbc::SetScrollPoint) [list source [file join $dir graph.tcl]]
+set auto_index(::rbc::Scroll) [list source [file join $dir graph.tcl]]
 
 set auto_index(setini) [list source [file join $dir ini.tcl]]
@@ -1007,4 +1003,15 @@
 set auto_index(::bayesGraph::GrapOptGetNamesLines) [list source [file join $dir bysgropt.tcl]]
 set auto_index(::bayesGraph::GrapOptGetIdLines) [list source [file join $dir bysgropt.tcl]]
+set auto_index(::TolProject::Node) [list source [file join $dir tolprj.tcl]]
+set auto_index(::TolProject::NodeDef) [list source [file join $dir tolprj.tcl]]
+set auto_index(::TolProject::NiFileName) [list source [file join $dir tolprj.tcl]]
+set auto_index(::TolProject::NiDescription) [list source [file join $dir tolprj.tcl]]
+set auto_index(::TolProject::NiType) [list source [file join $dir tolprj.tcl]]
+set auto_index(::TolProject::NiExclude) [list source [file join $dir tolprj.tcl]]
+set auto_index(::TolProject::NiExcludeTOL) [list source [file join $dir tolprj.tcl]]
+set auto_index(::TolProject::WtreeFromFile) [list source [file join $dir bftrview.tcl]]
+set auto_index(::TolProject::WtreeToFile) [list source [file join $dir bftrview.tcl]]
+set auto_index(::TolProject::BNodeToFile) [list source [file join $dir tolprj.tcl]]
+set auto_index(::TolProject::BNodeFromFile) [list source [file join $dir tolprj.tcl]]
 set auto_index(::TolProject::ComputeFullPath) [list source [file join $dir tolprj.tcl]]
 set auto_index(::TolProject::New) [list source [file join $dir tolprj.tcl]]
Index: tolbase/lib/toltk/tolprj.tcl
===================================================================
--- tolbase/lib/toltk/tolprj.tcl	(revision 87b1c4652e16006502efdc352172af083d5602d1)
+++ tolbase/lib/toltk/tolprj.tcl	(revision 4592f768b2697d62dda5d41857e86a9938d2235c)
@@ -41,4 +41,33 @@
 }
 
+#/////////////////////////////////////////////////////////////////////////////
+proc ::TolProject::NodeDef { } {
+#/////////////////////////////////////////////////////////////////////////////
+  return [list \
+    [list {image text} -label FileName] \
+    [list text -label Description] \
+    [list text -label Type] \
+    [list text -label Exclude] \
+    [list text -label ExcludeTOL]
+  ]
+}
+
+#/////////////////////////////////////////////////////////////////////////////
+proc ::TolProject::Node {icon filename desc type exclude excludetol} {
+#/////////////////////////////////////////////////////////////////////////////
+  return [list \
+    [list $icon $filename] \
+    [list $desc] \
+    [list $type] \
+    [list $exclude] \
+    [list $excludetol] \
+  ]
+}
+
+proc ::TolProject::NiFileName    { } { return 0 }
+proc ::TolProject::NiDescription { } { return 1 }
+proc ::TolProject::NiType        { } { return 2 }
+proc ::TolProject::NiExclude     { } { return 3 }
+proc ::TolProject::NiExcludeTOL  { } { return 4 }
 
 #/////////////////////////////////////////////////////////////////////////////
@@ -300,6 +329,6 @@
   $data(f) configure -title "[mc Project] $data(labelWindow)"
   set tv [GetTreeview $this]
-  $tv entry configure root -label [file tail $data(labelWindow)]\
-     -data [list FileName $data(nameFile)]
+  #@ Antes se usaba $data(nameFile) como FileName y $data(labelWindow) como label   
+  $tv item text root [NiFileName] [file tail $data(labelWindow)]
 }
 
@@ -419,12 +448,20 @@
   # treeview y scroll
   ScrolledWindow $f.sw
-  set data(treeview) [blt::treeview $f.sw.t -hideroot no -activeicons ""\
-            -highlightthickness 0 -font $toltk_options(fonts,Label)\
-            -selectcommand [list ::TolProject::SelectProc $this]]
-  $data(treeview) column insert end FileName Description Type Exclude ExcludeTOL \
-      -hide true
-  $data(treeview) style configure text -bg white     
+  set data(treeview) [::wtree $f.sw.t -table 0 -filter no \
+    -background white -showroot 1 -selectmode single -showheader 0 \
+    -highlightbackground gray75 -highlightcolor black \
+    -highlightthickness 0 -font $toltk_options(fonts,Label) \
+    -columns [::TolProject::NodeDef] ]
+  $data(treeview) item style set root [NiFileName] [$data(treeview) column cget [NiFileName] -itemstyle]
+  $data(treeview) item style set root [NiDescription] [$data(treeview) column cget [NiDescription] -itemstyle]
+  $data(treeview) item style set root [NiType] [$data(treeview) column cget [NiType] -itemstyle]
+  $data(treeview) item style set root [NiExclude] [$data(treeview) column cget [NiExclude] -itemstyle]
+  $data(treeview) item style set root [NiExcludeTOL] [$data(treeview) column cget [NiExcludeTOL] -itemstyle]
+  $data(treeview) column configure "range 1 end" -visible no
+  $data(treeview) column configure first -expand yes -weight 1
+  $data(treeview) column configure all -itembackground ""       
+  $data(treeview) notify bind $data(treeview) <Selection> "::TolProject::SelectProc $this"        
+  
   $f.sw setwidget $f.sw.t
-
    
   # empaquetamos los label de estado
@@ -440,19 +477,25 @@
 
 
-  bind $data(treeview) <Control-KeyRelease> [list ::TolProject::OnControlKey $this %K %k]
-
-  bind $data(treeview)  <Button-1> "::focus $data(treeview)"
-  $data(treeview) bind all <Button-1> "+break"
-  $data(treeview) bind all <Button-3> +[list ::TolProject::PostVariable $this %X %Y]
-  $data(treeview) bind all <Double-Button-1> "+mdidoc disableglobalraise; \
-                                              ::TolProject::OpenNodeIfTerminal $this"
-  $data(treeview) bind all <KeyPress-Return> +[list ::TolProject::OpenNodeIfTerminal $this]
-
-  $data(treeview) bind all <KeyPress-space>  +[list ::TolProject::NodeActiveAttributes $this]
-  $data(treeview) bind all <KeyPress-Delete> +[list ::TolProject::DeleteActiveNode     $this]
-  $data(treeview) bind all <KeyPress-F9>     "::TolProject::CompileActiveNode    $this ; break"
-  $data(treeview) bind all <KeyPress-F8>     "::TolProject::DecompileActiveNode  $this ; break"
+  bind $data(treeview).frameTree.t <Control-KeyRelease> [list ::TolProject::OnControlKey $this %K %k]
+
+  bind $data(treeview).frameTree.t <Button-1> "::focus $data(treeview)"  
  
-  set data(mainMenu)          [menu $data(treeview).m -tearoff 0]
+  bind $data(treeview).frameTree.t <Button-3> +[list ::TolProject::PostVariable $this %X %Y]
+  
+  set prevBind [bind $data(treeview).frameTree.t <Double-1>]
+  set newBind "[lrange $prevBind 0 [expr [llength $prevBind]-3]] ; mdidoc disableglobalraise ; ::TolProject::OpenNodeIfTerminal $this ; break"
+  #@ mdidoc disableglobalraise y break parece que cumplen el mismo cometido 
+  bind $data(treeview).frameTree.t <Double-1> $newBind
+  
+  set prevBind [bind $data(treeview).frameTree.t <KeyPress-Return>]
+  set newBind "[lrange $prevBind 0 [expr [llength $prevBind]-3]] ; ::TolProject::OpenNodeIfTerminal $this ; break"
+  bind $data(treeview).frameTree.t <KeyPress-Return> $newBind    
+
+  bind $data(treeview).frameTree.t <KeyPress-space>  +[list ::TolProject::NodeActiveAttributes $this]
+  bind $data(treeview).frameTree.t <KeyPress-Delete> +[list ::TolProject::DeleteActiveNode     $this]
+  bind $data(treeview).frameTree.t <KeyPress-F9>     "::TolProject::CompileActiveNode    $this ; break"
+  bind $data(treeview).frameTree.t <KeyPress-F8>     "::TolProject::DecompileActiveNode  $this ; break"  
+ 
+  set data(mainMenu) [menu $data(treeview).m -tearoff 0]
 
   bind $data(f) <Destroy> +[list ::TolProject::Destroy $this %W]
@@ -498,8 +541,12 @@
   set tv [GetTreeview $this]
   if [string equal [CheckOpen $this] "cancel"] return
-  $tv delete root
+  $tv item delete all
   set img [GetImageFromType ROOT]
-  $tv entry configure root -icons [list $img $img]\
-      -data [list FileName "" Description "Root node" Type ROOT Exclude 0 ExcludeTOL 0]
+  $tv item image root [NiFileName] $img
+  $tv item text root [NiFileName] ""  
+  $tv item text root [NiDescription] "Root node"
+  $tv item text root [NiType] "ROOT" 
+  $tv item text root [NiExclude] 0
+  $tv item text root [NiExcludeTOL] 0
   InitState $this new
 }
@@ -579,5 +626,4 @@
 }
 
-
 #/////////////////////////////////////////////////////////////////////////////
   proc ::TolProject::GetFromFile {this path {run 0}} {
@@ -594,9 +640,6 @@
   upvar \#0 ${this}::data data
   set tv [GetTreeview $this]
-  $tv delete root
-  foreach item [$tv tag names] {
-    $tv tag forget $item
-  }
-  if {[::BayesTreeview::TreeviewFromFile $tv $path ::TolProject::GetImageFromType]} {
+  $tv item delete all
+  if {[::TolProject::WtreeFromFile $tv $path ::TolProject::GetImageFromType]} {
     set data(baseDir) [file dirname $path]
     set data(lastOpenedNodeDir) $data(baseDir)
@@ -752,5 +795,5 @@
 
   #Guardar la transformación de treeview a archivo
-  if {[::BayesTreeview::TreeviewToFile [GetTreeview $this] \
+  if {[::TolProject::WtreeToFile [GetTreeview $this] \
       [::TolProject::ComputeFullPath $this $path]]} {
     #Añadir al archivo la entrada para que pueda ser llamado desde tol.exe
@@ -803,14 +846,10 @@
   set tv [GetTreeview $this]
   # Guardar data del nodo actual
-  array set aryData [$tv entry cget $index -data]
-#rcsi
-  if {![info exists aryData(ExcludeTOL)]} {
-    set aryData(ExcludeTOL) 0
-  }
-#rcsf
-  if ![string equal $aryData(ExcludeTOL) 1] {
+  set excludeTOL [$tv item text $index [NiExcludeTOL]]
+  if ![string equal $excludeTOL 1] {
     if {[IsCompilable $this $index] } {
+      set filename [$tv item text $index [NiFileName]]
       set item "Set $name.$data(num)"
-      set value "Include(\"$aryData(FileName)\");"
+      set value "Include(\"$filename\");"
       Tolcon_Trace "item: $item, value: $value"
       writeini $fd $key $item $value
@@ -818,5 +857,5 @@
     }
     # Llamar recursivamente para los hijos
-    foreach child [$tv entry children $index] {
+    foreach child [$tv item children $index] {
       NodeToFile $this $child $fd $name
     }
@@ -863,7 +902,8 @@
   upvar \#0 ${this}::data data
   set tv [GetTreeview $this]
-  set node [$tv index anchor]
-  array set aryData [$tv entry cget $node -data]
-  $data(sb,desc) configure -text $aryData(Description)
+  set node [$tv selection get end] ;# anchor
+  if { $node eq "" } return
+  set description [$tv item text $node [NiDescription]] 
+  $data(sb,desc) configure -text "$description"
 }
 
@@ -887,5 +927,5 @@
   set state [expr {$data(compiling)? "disabled" : "normal" }]
 
-  set node [$tv index current]
+  set node [$tv selection get end] ;# current
   if { [string length $node] } {
     if [IsTerminal $this $node] {
@@ -894,10 +934,11 @@
   
       # Compute insertion point and prepare menu entry      
-      set parent [$tv index parent]
-      set prev [$tv index prevsibling]
+      set nodefocus [$tv selection get end] ;# focus
+      set parent [$tv item parent $nodefocus]   
+      set prev [$tv item prevsibling $nodefocus]
       if {[string equal $prev ""]} {
         set prevCount 1
       } else {
-        set prevCount [expr [lsearch [$tv entry children $parent] $node] + 1]
+        set prevCount [expr [lsearch [$tv item children $parent] $node] + 1]
       } 
       $menu add command -label [mc "Add node"] \
@@ -954,5 +995,5 @@
   upvar \#0 ${this}::data data
   set tv [GetTreeview $this]
-  set node [$tv index anchor]
+  set node [$tv selection get end] ;# anchor
   OpenNode $this $node
 }
@@ -972,11 +1013,12 @@
   set tv [GetTreeview $this]
   
-  array set aryData [$tv entry cget $node -data]
-  switch $aryData(Type) {
+  set type [$tv item text $node [NiType]]
+  set filename [$tv item text $node [NiFileName]]
+  switch $type {
     TOL { ::Editor::Open \
-          [::TolProject::ComputeFullPath $this $aryData(FileName)] }
+          [::TolProject::ComputeFullPath $this $filename] }
     BDT -
     BST { ::EditTable::Open \
-          [::TolProject::ComputeFullPath $this $aryData(FileName)] } 
+          [::TolProject::ComputeFullPath $this $filename] } 
   }
 }
@@ -1030,12 +1072,19 @@
       }
      
-      set idx [$tv insert -at $node $prev "$data(name)"]
-      $tv entry configure $idx -label $data(name) \
-         -data [list FileName $data(name) Description $data(desc)\
-                     Type     $data(type) Exclude     $data(exclude)\
-                                          ExcludeTOL  $data(excludeTOL)]
-      if ![string equal [set img [GetImageFromType $data(type)]] ""] {
-        $tv entry configure $idx -icons [list $img $img]
+      set img [GetImageFromType $data(type)]                                        
+      set tv_row [::TolProject::Node $img $data(name) $data(desc) $data(type) $data(exclude) $data(excludeTOL)]
+      if {$prev eq "end"} {
+        set where end
+      } else {
+        set where next
+        set node $prev
       }
+      if { $data(type) eq "Fol" } {
+        set hasbutton 1
+      } else {
+        set hasbutton 0
+      }
+      #@ Tolcon_Trace "prev $prev node $node where $where"
+      $tv insert $tv_row -at $where -relative $node -button $hasbutton
       set data(isSaved) 0
     }
@@ -1048,5 +1097,5 @@
   upvar \#0 ${this}::data data
   set tv [GetTreeview $this]
-  set node [$tv index anchor]
+  set node [$tv selection get end] ;# anchor
   NodeAttributes $this $node
 }
@@ -1069,5 +1118,5 @@
   set excl_old $data(exclude)
   set exct_old $data(excludeTOL)
-  set title "[$tv entry cget $node -label] [mc Attributes]"
+  set title "[$tv item text $node [NiFileName]] [mc Attributes]"
   DialogAttributes $this $tv $title
   # si no se ha pulsado cancelar
@@ -1078,7 +1127,8 @@
         ![string equal $excl_old $data(exclude)] ||
         ![string equal $exct_old $data(excludeTOL)]} {
-      $tv entry configure $node -label $data(name)  \
-         -data [list FileName $data(name)    Description $data(desc)\
-                     Exclude  $data(exclude) ExcludeTOL  $data(excludeTOL)]
+      $tv item text root FileName $data(name)  
+      $tv item text root Description $data(desc)
+      $tv item text root Exclude $data(exclude)
+      $tv item text root ExcludeTOL $data(excludeTOL)                       
       set data(isSaved) 0
     }
@@ -1093,5 +1143,5 @@
   upvar \#0 ${this}::data data
   set tv [GetTreeview $this]
-  set node [$tv index current]
+  set node [$tv selection get end] ;# current
   DeleteNode $this $node
 }
@@ -1110,5 +1160,5 @@
 
   set tv [GetTreeview $this]
-  set name [$tv entry cget $node -label]
+  set name [$tv item text $node [NiFileName]]
   set answer [tk_messageBox -title [mc "Question"]\
             -parent $tv\
@@ -1116,6 +1166,5 @@
             -type yesno -icon question]
   if { [string compare $answer yes] == 0 } {
-
-    $tv delete $node
+    $tv item delete $node
     set data(isSaved) 0
   }
@@ -1128,5 +1177,5 @@
   upvar \#0 ${this}::data data
   set tv [GetTreeview $this]
-  set node [$tv index current]
+  set node [$tv selection get end] ;# current
   CompileNode $this $node
 }
@@ -1145,14 +1194,16 @@
   upvar \#0 ${this}::data data
   set tv [GetTreeview $this]
-  array set aryData [$tv entry cget $node -data]
-  if ![string equal $aryData(Exclude) 1] {
+  set exclude [$tv item text $node [NiExclude]]
+  if ![string equal $exclude 1] {  
     if [IsCompilable $this $node] {
       #Tolcon_Trace "  Compilo $node"
       set data(compiling) 1
+      #@T set filename $aryData(FileName)
+      set filename [$tv item text $node [NiFileName]]      
       ::TolConsole::Include \
-        [::TolProject::ComputeFullPath $this $aryData(FileName)]
+        [::TolProject::ComputeFullPath $this $filename]
       set data(compiling) 0
     }
-    foreach child [$tv entry children $node] {
+    foreach child [$tv item children $node] {
       CompileNode $this $child
     }
@@ -1173,10 +1224,10 @@
 #/////////////////////////////////////////////////////////////////////////////
   set tv [GetTreeview $this]
-  array set aryData [$tv entry cget $node -data]
   #Tolcon_Trace "CompileIfBeforeNode. node: $node, ref: $ref"
-  if ![$tv entry isbefore $node $ref] {
+  set isbefore [expr [$tv item order $node] < [$tv item order $ref]]  
+  if !$isbefore {
     CompileNode $this $node
   } else  {
-    foreach child [$tv entry children $node] {
+    foreach child [$tv item children $node] {
       CompileIfBeforeNode $this $child $ref
     }
@@ -1197,11 +1248,11 @@
 #/////////////////////////////////////////////////////////////////////////////
   set tv [GetTreeview $this]
-  array set aryData [$tv entry cget $node -data]
-  #Tolcon_Trace "CompileIfBeforeNode. node: $node, ref: $ref"
+  #Tolcon_Trace "CompileUpToHereNode. node: $node, ref: $ref"
+  set isbefore [expr [$tv item order $node] < [$tv item order $ref]]  
   if {((![string eq root $node] && [string eq $node $ref]) ||
-       (![string eq root $node] && [$tv entry isbefore $node $ref]))} {
+       (![string eq root $node] && $isbefore))} {
     CompileNode $this $node
   } else  {
-    foreach child [$tv entry children $node] {
+    foreach child [$tv item children $node] {
       CompileUpToHereNode $this $child $ref
     }
@@ -1215,5 +1266,5 @@
   upvar \#0 ${this}::data data
   set tv [GetTreeview $this]
-  set node [$tv index current]
+  set node [$tv selection get end] ;# current
   DecompileNode $this $node
 }
@@ -1230,12 +1281,13 @@
 #/////////////////////////////////////////////////////////////////////////////
   set tv [GetTreeview $this]
-  array set aryData [$tv entry cget $node -data]
-  if ![string equal $aryData(Exclude) 1] {
+  set exclude [$tv item text $node [NiExclude]]
+  if ![string equal $exclude 1] {
     if [IsCompilable $this $node] {
+      set filename [$tv item text $node [NiFileName]]      
       catch {::TolInspector::DecompileFile \
-             [::TolProject::ComputeFullPath $this $aryData(FileName)]}
+             [::TolProject::ComputeFullPath $this $filename]}
       ::TolInspector::UpdateFileRoot
     }
-    foreach child [$tv entry children $node] {
+    foreach child [$tv item children $node] {
       DecompileNode $this $child
     }
@@ -1276,16 +1328,9 @@
   upvar \#0 ${this}::data data
   set tv [GetTreeview $this]
-  array set aryData [$tv entry cget $index -data]
-  set data(name) $aryData(FileName)
-  set data(desc) $aryData(Description)
-  set data(type) $aryData(Type)
-  set data(exclude) $aryData(Exclude)
-#rcsi
-# Hay proyectos que no tienen esta variable, le damos valor 0 
-  if {![info exists aryData(ExcludeTOL)]} {
-    set aryData(ExcludeTOL) 0
-  }
-#rcsf
-  set data(excludeTOL) $aryData(ExcludeTOL)
+  set data(name)       [$tv item text $index [NiFileName]]
+  set data(desc)       [$tv item text $index [NiDescription]]
+  set data(type)       [$tv item text $index [NiType]]
+  set data(exclude)    [$tv item text $index [NiExclude]]
+  set data(excludeTOL) [$tv item text $index [NiExcludeTOL]] ;#$aryData(ExcludeTOL)
 }
 
@@ -1328,6 +1373,6 @@
   set terminal 0
   set tv [GetTreeview $this]
-  array set aryData [$tv entry cget $node -data]
-  switch $aryData(Type) {
+  set type [$tv item text $node [NiType]]
+  switch $type {
     Fol -
     ROOT { set terminal 0 }
@@ -1354,6 +1399,6 @@
   set compilable 0
   set tv [GetTreeview $this]
-  array set aryData [$tv entry cget $node -data]
-  switch $aryData(Type) {
+  set type [$tv item text $node [NiType]]
+  switch $type {
     Fol -
     ROOT { set compilable 0 }
@@ -1845,3 +1890,169 @@
 
 
+#@ Métodos (4) antes en ::BayesTreeview (bftrview.tcl)
+
+#/////////////////////////////////////////////////////////////////////////////
+  proc ::TolProject::WtreeFromFile {tv path {proc ""}} {
+#
+# PURPOSE: Loads a wtree info data from a text especification file of a wtree. 
+#
+# PARAMETERS:
+#   tv   -> wtree's path
+#   path -> name of file
+#   proc -> procedure that converts type node to the path of the image of node
+#
+# RETURN: Returns 1 if wtree has been loaded correctly or 0 if not.
+#
+#/////////////////////////////////////////////////////////////////////////////
+  if ![file exists $path] {
+    return -code error "File $path doesn't exist"
+  }
+  #@ Tolcon_Trace "Llamada a WtreeFromFile"
+  set fd [iniparse:openfile $path] 
+  BNodeFromFile $tv root "" $fd $proc
+  iniparse:closefile $fd
+  return 1
+}
+
+
+#/////////////////////////////////////////////////////////////////////////////
+  proc ::TolProject::WtreeToFile {tv path} {
+#
+# PURPOSE: Saves a wtree info data into a text especification file of a wtree.
+#
+# PARAMETERS:
+#   tv   -> wtree's path
+#   path -> name of file
+#
+# RETURN: Returns 1 if file has been saved correctly or 0 if not.
+#
+#/////////////////////////////////////////////////////////////////////////////
+  #borrar archivo pq iniparse:openfile abre para solo lectura si existe
+  file delete $path
+  set fd [iniparse:openfile $path] 
+  BNodeToFile $tv root $fd
+  iniparse:closefile $fd
+  return 1
+}
+
+
+#/////////////////////////////////////////////////////////////////////////////
+  proc ::TolProject::BNodeToFile {tv index fd} {
+#
+# PURPOSE: Saves a wtree's node info data into a text file.
+#
+# PARAMETERS:
+#   tv    -> wtree's path
+#   index -> wtree node index
+#   fd    -> channel identifier of text file
+#
+#/////////////////////////////////////////////////////////////////////////////
+  set key $index
+
+  # Guardar data del nodo actual
+  #@T array set aryData [$tv entry cget $index -data]
+  #@T set columnNames [array names aryData]
+  set columnNames [list FileName Description Type Exclude ExcludeTOL]
+  foreach item $columnNames {
+    writeini $fd $key $item [$tv item text $index [Ni$item]]
+  }
+  
+  #@T writeini $fd $key Label [$tv entry cget $index -label]
+  writeini $fd $key Label [$tv item text $index [NiFileName]]
+  # Guardar sus hijos
+  #@T writeini $fd $key Children [$tv entry children $index]
+  writeini $fd $key Children [$tv item children $index]
+
+  # Llamar recursivamente para los hijos
+  foreach child [$tv item children $index] {
+    Tolcon_Trace "child $child"
+    BNodeToFile $tv $child $fd
+  }
+}
+
+
+#/////////////////////////////////////////////////////////////////////////////
+  proc ::TolProject::BNodeFromFile {tv index parent fd {imgFromType ""}} {
+#
+# PURPOSE: Loads a wtree's node info data from a text file.
+#
+# PARAMETERS:
+#   tv     -> wtree's path
+#   index  -> wtree node index
+#   parent -> wtree node's parent index
+#   fd     -> channel identifier of text file
+#
+#/////////////////////////////////////////////////////////////////////////////
+  set key $index
+
+  #@T if ![string equal $parent ""] {
+  #@T   set idx [$tv insert -at $parent end $index ]
+  #@T } else {
+  #@T   set idx root
+  #@T }
+  #@T # Configurar data del nodo actual
+  #@T foreach item [readini $fd $key] {
+  #@T   set value [readini $fd $key $item]
+  #@T   if {[lsearch -exact [$tv column names] $item] != -1} {
+  #@T     $tv entry configure $idx -data [list $item $value]    
+  #@T   }
+  #@T   if [string equal $item "Label"] {
+  #@T     $tv entry configure $idx -label $value
+  #@T   }
+  #@T   if {[string equal $item "Type"] && ![string equal $imgFromType ""]} {
+  #@T     if ![string equal [set img [$imgFromType $value]] ""] {
+  #@T       #@ $tv entry configure $idx -icons [list $img $img]
+  #@T       $tv item image $idx FileName $img
+  #@T     }
+  #@T   }
+  #@T }
+  set image ""  
+  set filename ""
+  set description ""
+  set type ""
+  set exclude 0
+  set excludeTOL 0 ;#@T!! puede que no lo tenga el prj
+  foreach item [readini $fd $key] {
+    set value [readini $fd $key $item]
+    switch -exact $item {
+      FileName { set filename $value }
+      Description { set description $value }
+      Type { set type $value }
+      Exclude { set exclude $value }
+      ExcludeTOL { set excludeTOL $value }
+      Label { set void 0 }      
+    }
+    if {[string equal $item "Type"] && ![string equal $imgFromType ""]} {
+      if ![string equal [set img [$imgFromType $value]] ""] {
+        #@ $tv entry configure $idx -icons [list $img $img]
+        set image $img
+      }
+    }
+  }
+  if ![string equal $parent ""] {
+    #@T se inserta un nodo
+    #@T set idx [$tv insert -at $parent end $index ]
+    set tv_row [::TolProject::Node $img $filename $description $type $exclude $excludeTOL]
+    if { $type eq "Fol" } {
+      set hasbutton 1
+    } else {
+      set hasbutton 0
+    }  
+    set idx [$tv insert $tv_row -at end -relative $parent -button $hasbutton]
+  } else {
+    #@T se actualiza root
+    $tv item image root [NiFileName] $img
+    $tv item text root [NiFileName] $filename 
+    $tv item text root [NiDescription] $description
+    $tv item text root [NiType] $type
+    $tv item text root [NiExclude] $exclude
+    $tv item text root [NiExcludeTOL] $excludeTOL
+    set idx root
+  }  
+  # Llamar recursivamente para los hijos
+  foreach child [readini $fd $key Children] {
+    BNodeFromFile $tv $child $idx $fd $imgFromType
+  }
+}
+
 ::TolProject::ReadIniSpecial
