#!/usr/bin/wish
#############################################################################

set MyName	TkAlsaMixer 

# if existe read amixer setting
if [ file exists $env(HOME)/.amixerrc] {
 	
 set fic [ open $env(HOME)/.amixerrc r]	

 set ligne [gets $fic]
 while { [string compare [string range $ligne 0 0] \# ] ==0 } {
  set ligne [ gets $fic] 
 }
  set ligne [ gets $fic]
  set mute_master [string range $ligne   [expr [string length $ligne]-3 ] [expr [string length $ligne] -3 ]]
  set sc_master   [string range $ligne 2 [expr [string first : $ligne]-1 ] ]
  
  set ligne [ gets $fic]
  set mute_master1 [string range $ligne   [expr [string length $ligne]-3 ] [expr [string length $ligne] -3 ]]
  set sc_master1   [string range $ligne 2 [expr [string first : $ligne]-1 ] ]

  set ligne [ gets $fic]
  set mute_pcm [string range $ligne   [expr [string length $ligne]-3 ] [expr [string length $ligne] -3 ]]
  set sc_pcm   [string range $ligne 2 [expr [string first : $ligne]-1 ] ]

  set ligne [ gets $fic]
  set mute_pcm1 [string range $ligne   [expr [string length $ligne]-3 ] [expr [string length $ligne] -3 ]]
  set sc_pcm1   [string range $ligne 2 [expr [string first : $ligne]-1 ] ]

  set ligne [ gets $fic]
  set mute_cd [string range $ligne   [expr [string length $ligne]-3 ] [expr [string length $ligne] -3 ]]
  set sc_cd   [string range $ligne 2 [expr [string first : $ligne]-1 ] ]

  set ligne [ gets $fic]
  set mute_linein [string range $ligne   [expr [string length $ligne]-3 ] [expr [string length $ligne] -3 ]]
  set sc_linein   [string range $ligne 2 [expr [string first : $ligne]-1 ] ]

  set ligne [ gets $fic]
  set mute_mic [string range $ligne   [expr [string length $ligne]-3 ] [expr [string length $ligne] -3 ]]
  set sc_mic   [string range $ligne 2 [expr [string first : $ligne]-1 ] ]

  set ligne [ gets $fic]
  set mute_auxa [string range $ligne   [expr [string length $ligne]-3 ] [expr [string length $ligne] -3 ]]
  set sc_auxa   [string range $ligne 2 [expr [string first : $ligne]-1 ] ]

  set ligne [ gets $fic]
  set mute_m1 [string range $ligne   [expr [string length $ligne]-3 ] [expr [string length $ligne] -3 ]]
  set sc_m1  [string range $ligne 2 [expr [string first : $ligne]-1 ] ]

  set ligne [ gets $fic]
  set mute_m2 [string range $ligne   [expr [string length $ligne]-3 ] [expr [string length $ligne] -3 ]]
  set sc_m2  [string range $ligne 2 [expr [string first : $ligne]-1 ] ]

  #puts "sc_master:<$sc_master> mute_maser<$mute_master>"

 } else {
  

	set mute_master		1
	set mute_master1	1
	set mute_pcm		1
	set mute_pcm1 		1
	set mute_cd		1
	set mute_linein 	1
	set mute_mic		1	
	set mute_m1		1
	set mute_m2		1
	set mute_auxa		1
	set mute_m1		1	
	set mute_m2		1

	set sc_master		10
	set sc_master1		10
	set sc_pcm		10
	set sc_pcm1 		10
	set sc_cd		10
	set sc_linein 		10
	set sc_mic		10	
	set sc_m1		10
	set sc_m2		10
	set sc_auxa		10
	set sc_m1		10
	set sc_m2		10 
}
  	
    wm resizable  . 0 0 
    wm title  . "Drol's simple amixer Frontend / Alpha 0.0.0.0.1 unstable version ! 07 dec 98 ;-)"

    frame .f2  -borderwidth 1 -height 550 -width 630 
   
    frame .f2.fra20 -height 75 -relief groove -width 150 
    label .f2.fra20.01  -borderwidth 0 -relief raised -text Master 
    scale .f2.fra20.02 -highlightthickness 0 -orient vert -width 10 -from 100 -to 0 \
    -variable sc_master -command { exec amixer -q Master } 
    checkbutton .f2.fra20.03 -highlightthickness 0 -text Mute -variable mute_master \
    -command { if $mute_master { exec amixer -q Master mute } else { exec amixer -q Master unmute }  }  
     
   
    frame .f2.fra21 -height 75 -relief groove -width 150 
    label .f2.fra21.01  -borderwidth 0 -relief raised -text { Master 1}  
	scale .f2.fra21.02 -highlightthickness 0 -orient vert -width 10  -from 100 -to 0 \
	-variable sc_master1 -command { exec amixer -q "Master M" }
	checkbutton .f2.fra21.03 -highlightthickness 0 -text Mute -variable mute_master1 \
    -command { if $mute_master1 { exec amixer -q "Master M" mute } else { exec amixer -q "Master M" unmute }  }
	
	
    frame .f2.fra22 -height 75 -relief groove -width 150 
    label .f2.fra22.01 -borderwidth 0 -relief raised -text { PCM} 
    scale .f2.fra22.02 -highlightthickness 0 -orient vert -width 10 -from 100 -to 0 \
    -variable sc_pcm -command { exec amixer -q PCM }
 
    checkbutton .f2.fra22.03 -highlightthickness 0 -text Mute -variable mute_pcm \
    -command { if $mute_pcm { exec amixer -q PCM mute } else { exec amixer -q PCM unmute }  }
   
    frame .f2.fra24 -height 75 -width 150 
    label .f2.fra24.01 -borderwidth 0 -relief raised -text { PCM 1} 
    scale .f2.fra24.02 -highlightthickness 0 -orient vert -width 10 -from 100 -to 0 \
    -variable sc_pcm1 -command { exec amixer -q "PCM 1" }
 
    checkbutton .f2.fra24.03 -highlightthickness 0 -text Mute -variable mute_pcm1 \
    -command { if $mute_pcm1 { exec amixer -q "PCM 1" mute } else { exec amixer -q "PCM 1" unmute }  }
   

    
	frame .f2.fra25 -height 75 -relief groove -width 150 
	label .f2.fra25.01 -borderwidth 0 -relief raised -text { CD} 
    scale .f2.fra25.02 -highlightthickness 0 -orient vert -width 10  -from 100 -to 0 \
    -variable sc_cd -command { exec amixer -q CD }
 
	checkbutton .f2.fra25.03 -highlightthickness 0 -text Mute  -variable mute_cd \
    -command { if $mute_cd { exec amixer -q CD mute } else { exec amixer -q CD unmute }  }
   


   
    frame .f2.fra26 -height 75 -relief groove -width 150  
	label .f2.fra26.01 -borderwidth 0 -relief raised -text { Line-in } 
    scale .f2.fra26.02 -highlightthickness 0 -orient vert -width 10  -from 100 -to 0\
    -variable sc_linein -command { exec amixer -q Line-in }
	checkbutton .f2.fra26.03 -highlightthickness 0 -text Mute -variable mute_linein \
    -command { if $mute_linein { exec amixer -q Line-in mute } else { exec amixer -q Line-in  unmute }  }

   
    frame .f2.fra27 -height 75 -relief groove -width 150  
	label .f2.fra27.01  -borderwidth 0 -relief raised -text { Mic}
    scale .f2.fra27.02  -highlightthickness 0 -orient vert -width 10  -from 100 -to 0 \
    -variable sc_mic -command { exec amixer -q MIC }
    checkbutton .f2.fra27.03 -highlightthickness 0 -text Mute  -variable mute_mic \
    -command { if $mute_mic { exec amixer -q MIC mute } else { exec amixer -q MIC unmute }  }
   
 
   frame .f2.fra29 -height 75 -relief groove -width 150 
	label .f2.fra29.01 -borderwidth 0 -relief raised -text { Mono 1 } 
    scale .f2.fra29.02 -highlightthickness 0 -orient vert -width 10  -from 100 -to 0 \
    -variable sc_m1 -command { exec amixer -q "Mono 1" } 
    checkbutton .f2.fra29.03 -highlightthickness 0 -text Mute -variable mute_m1 \
    -command { if $mute_m1 { exec amixer -q "Mono 1"  mute } else { exec amixer -q "Mono 1" unmute }  }
    
 
 
      frame .f2.fra30 -height 75 -relief groove -width 150 
	label .f2.fra30.01 -borderwidth 0 -relief raised -text { Mono 2 } 
    scale .f2.fra30.02 -highlightthickness 0 -orient vert -width 10  -from 100 -to 0 \
    -variable sc_m2 -command { exec amixer -q "Mono 2" } 
    checkbutton .f2.fra30.03 -highlightthickness 0 -text Mute -variable mute_m2 \
    -command { if $mute_m2 { exec amixer -q "Mono 2"  mute } else { exec amixer -q "Mono 2" unmute }  }
    
	frame .f2.fra28 -height 75 -relief groove -width 150 
	label .f2.fra28.01 -borderwidth 0 -relief raised -text { Aux A } 
    scale .f2.fra28.02 -highlightthickness 0 -orient vert -width 10  -from 100 -to 0 \
    -variable sc_auxa -command { exec amixer -q "Aux A" } 
    checkbutton .f2.fra28.03 -highlightthickness 0 -text Mute -variable mute_auxa \
    -command { if $mute_auxa { exec amixer -q "Aux A"  mute } else { exec amixer -q "Aux A" unmute }  }
   
    button .bt_quitter -padx 11 -pady 4 -text Exit \
    -command { exec amixer -p $env(HOME) -w  ; destroy . }
    
 #   button .bt_help  -padx 11 -pady 4 -text Help  \
 #   -command { tk_dialog . "HELP" "need amixer and Alsa Sound drivers modules loaded ! any remark: dvigneron@nordnetfr" "" ""} 

  
	
    ###################
    # SETTING GEOMETRY
    ###################
    pack .f2 -in  . -pady 5 -side top 
    pack .f2.fra20  -in .f2   -pady 10 -side left 
    pack .f2.fra20.01 -in .f2.fra20  -fill x -side top 
    pack .f2.fra20.02  -in .f2.fra20  -fill x -pady 5 -side top 
    pack .f2.fra20.03 -in .f2.fra20   -pady 5 -side top 
    pack .f2.fra21  -in .f2   -pady 10 -side left 
    pack .f2.fra21.01 -in .f2.fra21  -fill x -side top 
    pack .f2.fra21.02  -in .f2.fra21  -fill x -pady 5 -side top 
    pack .f2.fra21.03  -in .f2.fra21   -pady 5 -side top 
    pack .f2.fra22 -in .f2   -pady 10 -side left 
    pack .f2.fra22.01   -in .f2.fra22  -fill x -side top 
    pack .f2.fra22.02 -in .f2.fra22  -fill x -pady 5 -side top 
    pack .f2.fra22.03  -in .f2.fra22   -pady 5  -side top 
    pack .f2.fra24 -in .f2   -pady 10 -side left 
    pack .f2.fra24.01   -in .f2.fra24    -side top 
    pack .f2.fra24.02 -in .f2.fra24  -fill x -pady 5  -side top 
    pack .f2.fra24.03 -in .f2.fra24   -pady 5 -side top 
    pack .f2.fra25  -in .f2   -pady 10  -side left 
    pack .f2.fra25.01 -in .f2.fra25  -fill x -side top 
    pack .f2.fra25.02  -in .f2.fra25  -fill x -pady 5 -side top 
    pack .f2.fra25.03 -in .f2.fra25   -pady 5 -side top 
    pack .f2.fra26  -in .f2   -pady 10 -side left 
    pack .f2.fra26.01 -in .f2.fra26  -fill x -side top 
    pack .f2.fra26.02  -in .f2.fra26  -fill x -pady 5 -side top 
    pack .f2.fra26.03  -in .f2.fra26   -pady 5 -side top 
    pack .f2.fra27 -in .f2   -pady 10 -side left 
    pack .f2.fra27.01  -in .f2.fra27  -fill x -side top 
    pack .f2.fra27.02 -in .f2.fra27  -fill x -pady 5 -side top 
    pack .f2.fra27.03 -in .f2.fra27   -pady 5  -side top 
    pack .f2.fra28 -in .f2   -pady 10 -side left 
    pack .f2.fra28.01  -in .f2.fra28  -fill x -side top 
    pack .f2.fra28.02 -in .f2.fra28  -fill x -pady 5 -side top 
    pack .f2.fra28.03 -in .f2.fra28   -pady 5 -side top 
    pack .f2.fra29 -in .f2   -pady 10 -side left 
    pack .f2.fra29.01  -in .f2.fra29  -fill x -side top 
    pack .f2.fra29.02 -in .f2.fra29  -fill x -pady 5 -side top 
    pack .f2.fra29.03 -in .f2.fra29   -pady 5 -side top 
    pack .f2.fra30 -in .f2   -pady 10 -side left 
    pack .f2.fra30.01  -in .f2.fra30  -fill x -side top 
    pack .f2.fra30.02 -in .f2.fra30 -fill x -pady 5 -side top 
    pack .f2.fra30.03 -in .f2.fra30  -pady 5 -side top 
    

    pack .bt_quitter  -in  .  -padx 5 -pady 2 -side left 
 #   pack .bt_help 	-in  .  -padx 5 -pady 2 -side right 
    
    
