diff --git a/texttools.tcl b/texttools.tcl index 9eb219e..d8a1096 100755 --- a/texttools.tcl +++ b/texttools.tcl @@ -1,5 +1,25 @@ #!/usr/bin/env wish +set active_transform 0 + +proc oneline {text} { + return [regsub -all \n+ $text " "] +} + +proc wordcount {text} { + set lines [expr [llength [split $text \n]] - 1] + set words [llength [regexp -all -inline {\S+} $text]] + set len [string length $text] + + lappend out $lines + lappend out $words + lappend out $len + return $out +} + +lappend transforms [list {One line} oneline] +lappend transforms [list {Line/Word/Char} wordcount] + wm geometry . 750x650 wm title . "Text Tools" @@ -7,8 +27,10 @@ text .content text .output listbox .transform -.transform insert end {One line} -.transform insert end Line/Word/Char +foreach {elem} $transforms { + .transform insert end [lindex $elem 0] +} +.transform selection set $active_transform grid .transform -row 1 -column 1 -rowspan 2 grid .content -row 1 -column 2 @@ -16,23 +38,23 @@ grid .output -row 2 -column 2 focus .content -proc wordcount {} { +proc update_output {} { + global active_transform + global transforms + set text [.content get 1.0 end] - set lines [expr [llength [split $text \n]] - 1] - set words [llength [regexp -all -inline {\S+} $text]] - set len [string length $text] - - lappend out $lines - lappend out $words - lappend out $len + set tf [lindex $transforms $active_transform] + set out [[lindex $tf 1] $text] .output replace 1.0 end $out } -bind .content wordcount +bind .content update_output -proc select_transform {} { - puts {transform selected} +proc select_transform {args} { + global active_transform + set active_transform [.transform curselection] + update_output } bind .transform select_transform