Blob Blame History Raw
#!/usr/bin/wish
# Matt Willis - simple tk interface to fmtools
# mute button added by James Smith
# The radio is turned off after leaving.
# -*- tcl -*-

# These are stations in the Rio de Janeiro area. Customize for your own locale.
set stations \
        "
        MPB          90.3
        CBN          92.5
        BandNews     94.9
        PARADISO     95.7
        Nativa       96.5
        98FM         98.0
        MEC          98.9
        JBFM         99.7
        O_Dia        100.5
        Transamerica 101.3
        JovenPan     102.1
        Oi           102.9
        Antena1      103.7
        "

# initial volume [0,100]
set volume 100
set n [expr [llength $stations]/2]
# default radio station
set radbut 3
set rvol 100
set state 0

# make tuner buttons
frame .labels
for {set i 0} {$i<$n} {incr i 1} {
    radiobutton .r$i -value $i -variable radbut \
     -text [lindex $stations [expr $i *2]] -command setstation
    pack .r$i -anchor w -in .labels
}

# turns the radio on
eval exec fm on

frame .rhs
scale .vol -orient horizontal -from 0 -to 100 -showvalue 0 \
 -variable volume -label Volume:
entry .stn -bg black -fg green -font "-*-helvetica-*-r-*-*-20-*-*-*-*-*-*-*" \
 -width 6 -justify right -state disabled
button .exit -command out -text exit
button .mute -command mute -text mute

pack .vol .stn .exit .mute -in .rhs


pack .labels .rhs -side left
.vol configure -command setvolume

proc setstation {} {
    global stations radbut volume
#   roma 20091221
#   eval exec fm [lindex $stations [expr $radbut*2+1]] $volume
    eval exec fm [lindex $stations [expr $radbut*2+1]]
    eval exec amixer -q -c 0 set PCM $volume%
    .stn configure -state normal
    .stn delete 0 end
    .stn insert 0  [lindex $stations [expr $radbut*2+1]]
    .stn configure -state disabled
}

proc setvolume {sliderval} {
    setstation
}

proc out {} {
    global stations radbut volume
#   roma 20070217
#   eval exec fm [lindex $stations [expr $radbut*2+1]] 0
    eval exec fm off
    exit
}

proc mute {} {
    global stations radbut volume rvol state
    if {$state==0} {
    set rvol $volume
#   roma 20070217
#   eval exec fm [lindex $stations [expr $radbut*2+1]] 0
    eval exec fm off
    set state 1
    .mute config -text unmute

    } else {
#   eval exec fm [lindex $stations [expr $radbut*2+1]] $volume
    eval exec fm on
    set state 0
    .mute config -text mute
    }
}