#!/usr/local/bin/wish8.3 # Das Tree-Widget aus den BWidgets # Carsten Zerbst, carsten.zerbst@groy-groy.de lappend auto_path [file join [pwd] BWidget-1.4.1] package require BWidget 1.4.1 set sw [ScrolledWindow .sw -relief sunken -borderwidth 2] grid $sw -sticky nesw set tree [Tree $sw.tree -background white \ -selectbackground LightSkyBlue \ -opencmd knotenÖffnet \ -closecmd knotenSchließt ] $sw setwidget $tree $tree bindText selektiert $tree bindImage selektiert label .label -textvariable fileInfo -anchor w grid .label -sticky ew grid columnconfigure . 0 -weight 10 grid rowconfigure . 0 -weight 10 grid rowconfigure . 1 -weight 1 # Callbacks proc knotenÖffnet {node} { # Icon austauschen $::tree itemconfigure $node -image [Bitmap::get openfold] # alte Kinder-Knoten Löschen $::tree delete [$::tree nodes $node] # Verzeichniss aus Knoten set path [$::tree itemcget $node -data] # Knoten für alle Kinder anlegen foreach child [glob -nocomplain [file join $path *]] { if {[file isfile $child]} { set icon [Bitmap::get file] set dc never } else { set icon [Bitmap::get folder] set dc allways } $::tree insert end $node $child -data $child \ -text [file tail $child] \ -image $icon -drawcross $dc } } proc knotenSchließt {node} { $::tree itemconfigure $node \ -image [Bitmap::get folder] } proc selektiert {node} { $::tree selection set $node set path [$::tree itemcget $node -data] set ::fileInfo "[file tail $path], [file size $path] bytes" } # den erste Knoten einfügen $tree insert end root pwd -data [pwd] -text [pwd] \ -image [Bitmap::get folder] # ... und öffnen $tree opentree pwd false wm title . "FileBrowser"