#!/bin/sh # # \ exec wish8.4 $0 $@ package require Tk package require Mk4tcl proc main { } { ladeDB gui } proc ladeDB { } { mk::file open db cddb.db } proc gui {} { # menu menu .menu . configure -menu .menu .menu add cascade -label Datei -menu .menu.file \ -underline 0 set m [menu .menu.file -tearoff 0] $m add command -label Beenden -command exit \ -accelerator "^q" .menu add cascade -label Suchen -menu .menu.suche set m [menu .menu.suche -tearoff 0] $m add radiobutton -variable ::suchOption \ -label "exakt" -value "-exact" $m add radiobutton -variable ::suchOption \ -label "enthält" -value " " $m add radiobutton -variable ::suchOption \ -label "regulärer Ausdruck" -value "-regexp" set ::suchOption -keyword label .artistL -text "Musiker" -anchor w entry .artistE -relief sunken -bg white bind .artistE suchen grid .artistL .artistE - -sticky nesw -padx 3 -pady 3 label .albumL -text "Album" -anchor w entry .albumE -relief sunken -bg white bind .albumE suchen grid .albumL .albumE - -sticky nesw -padx 3 -pady 3 listbox .tracks -yscrollcommand [list .sb set] \ -bg white scrollbar .sb -orient vertical -command [list .tracks yview] grid .tracks - .sb -sticky nesw -padx 3 -pady 3 frame .buttons grid .buttons - - -sticky news button .buttons.search -text "Suchen" -command {suchen} pack .buttons.search -anchor center grid columnconfigure . 0 -weight 1 grid columnconfigure . 1 -weight 10 grid columnconfigure . 2 -weight 0 grid rowconfigure . 2 -weight 10 } proc suchen {} { if {[string match [focus] .artistE]} { # suche nach musiker set cmd "mk::select db.cds $::suchOption 2 ARTIST {[.artistE get]}" } elseif {[string match [focus] .albumE]} { # suche nach album set cmd "mk::select db.cds -count 2 $::suchOption ALBUM {[.albumE get]}" } else { tk_messageBox -icon error \ -message "Bitte Titel oder Musiker eingeben" return } puts $cmd set t0 [clock clicks -milliseconds] set rows [eval $cmd] set t1 [clock clicks -milliseconds] puts "Suche dauerte [expr $t1 - $t0] ms" puts $rows if { [llength $rows ]== 0} { tk_messageBox -icon info -message "Nichts gefunden" .artistE delete 0 end .albumE delete 0 end .tracks delete 0 end return } if {[llength $rows] > 1} { tk_messageBox -icon info -message "Nehme erstes Ergebnis" } set row [lindex $rows 0] fülle $row } proc fülle {row} { .artistE delete 0 end .artistE insert 0 [ mk::get db.cds!$row ARTIST] .albumE delete 0 end .albumE insert 0 [ mk::get db.cds!$row ALBUM] set discid [mk::get db.cds!$row DISCID] .tracks delete 0 end foreach r [mk::select db.titles -exact DISCID $discid -sort NR] { .tracks insert end [format "%3i : %s" [mk::get db.titles!$r NR] \ [mk::get db.titles!$r LABEL] ] } } main