Annotation of micropolis/src/tk/library/demos/ixset, revision 1.1

1.1     ! root        1: #!/usr/local/bin/wish -f
        !             2: 
        !             3: #
        !             4: # A nice interface to "xset" to change X server settings
        !             5: #
        !             6: # History :
        !             7: #   91/11/23 : [email protected], [email protected] : design
        !             8: #   92/08/01 : [email protected] : cleaning
        !             9: #
        !            10: 
        !            11: #
        !            12: # Button actions
        !            13: #
        !            14: 
        !            15: proc quit {} {
        !            16:     destroy .
        !            17: }
        !            18: 
        !            19: proc ok {} {
        !            20:     writesettings
        !            21:     quit
        !            22: }
        !            23: 
        !            24: proc cancel {} {
        !            25:     readsettings
        !            26:     dispsettings
        !            27: }
        !            28: 
        !            29: # apply is just "writesettings"
        !            30: 
        !            31: 
        !            32: #
        !            33: # Read current settings
        !            34: #
        !            35: 
        !            36: proc readsettings {} {
        !            37:     global kbdrep ;    set kbdrep      "on"
        !            38:     global kbdcli ;    set kbdcli      0
        !            39:     global bellvol ;   set bellvol     100
        !            40:     global bellpit ;   set bellpit     440
        !            41:     global belldur ;   set belldur     100
        !            42:     global mouseacc ;  set mouseacc    "3/1"
        !            43:     global mousethr ;  set mousethr    4
        !            44:     global screenbla ; set screenbla   "blank"
        !            45:     global screentim ; set screentim   600
        !            46:     global screencyc ; set screencyc   600
        !            47: 
        !            48:     set xfd [open "|xset q" r]
        !            49:     while {[gets $xfd line] > -1} {
        !            50:        set kw [lindex $line 0]
        !            51: 
        !            52:        case $kw in {
        !            53:            {auto}
        !            54:                {
        !            55:                    set rpt [lindex $line 1]
        !            56:                    if {[expr "{$rpt} == {repeat:}"]} then {
        !            57:                        set kbdrep [lindex $line 2]
        !            58:                        set kbdcli [lindex $line 6]
        !            59:                    }
        !            60:                }
        !            61:            {bell}
        !            62:                {
        !            63:                    set bellvol [lindex $line 2]
        !            64:                    set bellpit [lindex $line 5]
        !            65:                    set belldur [lindex $line 8]
        !            66:                }
        !            67:            {acceleration:}
        !            68:                {
        !            69:                    set mouseacc [lindex $line 1]
        !            70:                    set mousethr [lindex $line 3]
        !            71:                }
        !            72:            {prefer}
        !            73:                {
        !            74:                    set bla [lindex $line 2]
        !            75:                    set screenbla [expr "{$bla} == {yes} ? {blank} : {noblank}"]
        !            76:                }
        !            77:            {timeout:}
        !            78:                {
        !            79:                    set screentim [lindex $line 1]
        !            80:                    set screencyc [lindex $line 3]
        !            81:                }
        !            82:        }
        !            83:     }
        !            84:     close $xfd
        !            85: 
        !            86:     # puts stdout [format "Key REPEAT = %s\n" $kbdrep]
        !            87:     # puts stdout [format "Key CLICK  = %s\n" $kbdcli]
        !            88:     # puts stdout [format "Bell VOLUME = %s\n" $bellvol]
        !            89:     # puts stdout [format "Bell PITCH = %s\n" $bellpit]
        !            90:     # puts stdout [format "Bell DURATION = %s\n" $belldur]
        !            91:     # puts stdout [format "Mouse ACCELERATION = %s\n" $mouseacc]
        !            92:     # puts stdout [format "Mouse THRESHOLD = %s\n" $mousethr]
        !            93:     # puts stdout [format "Screen BLANCK = %s\n" $screenbla]
        !            94:     # puts stdout [format "Screen TIMEOUT = %s\n" $screentim]
        !            95:     # puts stdout [format "Screen CYCLE = %s\n" $screencyc]
        !            96: }
        !            97: 
        !            98: 
        !            99: #
        !           100: # Write settings into the X server
        !           101: #
        !           102: 
        !           103: proc writesettings {} {
        !           104:     global kbdrep kbdcli  bellvol bellpit belldur
        !           105:     global mouseacc mousethr  screenbla screentim screencyc
        !           106: 
        !           107:     set bellvol                [.bell.vol get]
        !           108:     set bellpit                [.bell.val.pit.entry get]
        !           109:     set belldur                [.bell.val.dur.entry get]
        !           110: 
        !           111:     if {[expr "{$kbdrep} == {on}"]} then {
        !           112:        set kbdcli      [.kbd.val.cli get]
        !           113:     } else {
        !           114:        set kbdcli      "off"
        !           115:     }
        !           116: 
        !           117:     set mouseacc       [.mouse.hor.acc.entry get]
        !           118:     set mousethr       [.mouse.hor.thr.entry get]
        !           119: 
        !           120:     set screentim      [.screen.val.le.tim.entry get]
        !           121:     set screencyc      [.screen.val.le.cyc.entry get]
        !           122: 
        !           123:     exec xset \
        !           124:        b $bellvol $bellpit $belldur \
        !           125:        c $kbdcli \
        !           126:        r $kbdrep \
        !           127:        m $mouseacc $mousethr \
        !           128:        s $screentim $screencyc \
        !           129:        s $screenbla
        !           130: }
        !           131: 
        !           132: 
        !           133: #
        !           134: # Sends all settings to the window
        !           135: #
        !           136: 
        !           137: proc dispsettings {} {
        !           138:     global kbdrep kbdcli  bellvol bellpit belldur
        !           139:     global mouseacc mousethr  screenbla screentim screencyc
        !           140: 
        !           141:     .bell.vol set $bellvol
        !           142:     .bell.val.pit.entry delete 0 end
        !           143:     .bell.val.pit.entry insert 0 $bellpit
        !           144:     .bell.val.dur.entry delete 0 end
        !           145:     .bell.val.dur.entry insert 0 $belldur
        !           146: 
        !           147:     .kbd.val.onoff [expr "{$kbdrep} == {on} ? {select} : {deselect}"]
        !           148:     .kbd.val.cli set $kbdcli
        !           149: 
        !           150:     .mouse.hor.acc.entry delete 0 end
        !           151:     .mouse.hor.acc.entry insert 0 $mouseacc
        !           152:     .mouse.hor.thr.entry delete 0 end
        !           153:     .mouse.hor.thr.entry insert 0 $mousethr
        !           154: 
        !           155:     .screen.val.rb.blank [expr "{$screenbla}=={blank} ? {select} : {deselect}"]
        !           156:     .screen.val.rb.pat   [expr "{$screenbla}!={blank} ? {select} : {deselect}"]
        !           157:     .screen.val.le.tim.entry delete 0 end
        !           158:     .screen.val.le.tim.entry insert 0 $screentim
        !           159:     .screen.val.le.cyc.entry delete 0 end
        !           160:     .screen.val.le.cyc.entry insert 0 $screencyc
        !           161: }
        !           162: 
        !           163: 
        !           164: #
        !           165: # Create all windows, and pack them
        !           166: #
        !           167: 
        !           168: proc labelentry {path text length} {
        !           169:     frame $path
        !           170:     label $path.label -text $text
        !           171:     entry $path.entry -width $length -relief sunken
        !           172:     pack append $path $path.label {left expand} $path.entry {right expand}
        !           173: }
        !           174: 
        !           175: proc createwindows {} {
        !           176:     #
        !           177:     # Buttons
        !           178:     #
        !           179: 
        !           180:     frame .buttons
        !           181:     button .buttons.ok         -command "ok"                   -text "Ok"
        !           182:     button .buttons.apply      -command "writesettings"        -text "Apply"
        !           183:     button .buttons.cancel     -command "cancel"               -text "Cancel"
        !           184:     button .buttons.quit       -command "quit"                 -text "Quit"
        !           185: 
        !           186:     pack append .buttons \
        !           187:            .buttons.ok         {left expand pady 10} \
        !           188:            .buttons.apply      {left expand pady 10} \
        !           189:            .buttons.cancel     {left expand pady 10} \
        !           190:            .buttons.quit       {left expand pady 10}
        !           191: 
        !           192:     #
        !           193:     # Bell settings
        !           194:     #
        !           195: 
        !           196:     frame .bell -relief raised -borderwidth 2
        !           197:     label .bell.label  -text "Bell Settings"
        !           198:     scale .bell.vol \
        !           199:            -from 0 -to 100 -length 200 -tickinterval 20 \
        !           200:            -label "Volume (%)" -orient horizontal \
        !           201:            -bg Bisque1 -activeforeground Gray
        !           202: 
        !           203:     frame .bell.val
        !           204:     labelentry .bell.val.pit "Pitch (Hz)"    6
        !           205:     labelentry .bell.val.dur "Duration (ms)" 6
        !           206:     pack append .bell.val \
        !           207:            .bell.val.pit       {left padx 10} \
        !           208:            .bell.val.dur       {right padx 10}
        !           209: 
        !           210:     pack append .bell \
        !           211:            .bell.label         {top expand} \
        !           212:            .bell.vol           {top expand} \
        !           213:            .bell.val           {top expand}
        !           214: 
        !           215:     #
        !           216:     # Keyboard settings
        !           217:     #
        !           218: 
        !           219:     frame .kbd -relief raised -borderwidth 2
        !           220: 
        !           221:     label .kbd.label -text "Keyboard Repeat Settings"
        !           222: 
        !           223:     frame .kbd.val
        !           224:     checkbutton .kbd.val.onoff \
        !           225:            -text "On" \
        !           226:            -onvalue "on" -offvalue "off" -variable kbdrep \
        !           227:            -relief flat \
        !           228:            -activebackground Bisque1
        !           229:     scale .kbd.val.cli \
        !           230:            -from 0 -to 100 -length 200 -tickinterval 20 \
        !           231:            -label "Click Volume (%)" -orient horizontal \
        !           232:            -bg Bisque1 -activeforeground Gray
        !           233:     pack append .kbd.val \
        !           234:            .kbd.val.onoff      {left expand fill} \
        !           235:            .kbd.val.cli        {left expand}
        !           236: 
        !           237:     pack append .kbd \
        !           238:            .kbd.label          {top expand} \
        !           239:            .kbd.val            {top expand pady 4 fillx}
        !           240: 
        !           241:     #
        !           242:     # Mouse settings
        !           243:     #
        !           244: 
        !           245:     frame .mouse -relief raised -borderwidth 2
        !           246: 
        !           247:     label .mouse.label -text "Mouse Settings"
        !           248:     frame .mouse.hor
        !           249:     labelentry .mouse.hor.acc "Acceleration" 3
        !           250:     labelentry .mouse.hor.thr "Threshold (pixels)" 3
        !           251: 
        !           252:     pack append .mouse.hor \
        !           253:            .mouse.hor.acc      {left} \
        !           254:            .mouse.hor.thr      {right}
        !           255: 
        !           256:     pack append .mouse \
        !           257:            .mouse.label        {top} \
        !           258:            .mouse.hor          {top expand}
        !           259: 
        !           260:     #
        !           261:     # Screen Saver settings
        !           262:     #
        !           263: 
        !           264:     frame .screen -relief raised -borderwidth 2
        !           265: 
        !           266:     label .screen.label -text "Screen-saver Settings"
        !           267:     frame .screen.val
        !           268: 
        !           269:     frame .screen.val.rb
        !           270:     radiobutton .screen.val.rb.blank \
        !           271:            -variable screenblank -text "Blank" -relief flat \
        !           272:            -value "blank" -variable screenbla \
        !           273:            -activebackground Bisque1
        !           274:     radiobutton .screen.val.rb.pat \
        !           275:            -variable screenblank -text "Pattern" -relief flat \
        !           276:            -value "noblank" -variable screenbla \
        !           277:            -activebackground Bisque1
        !           278:     pack append .screen.val.rb \
        !           279:            .screen.val.rb.blank        {top pady 4 frame w} \
        !           280:            .screen.val.rb.pat  {top pady 4 frame w}
        !           281:     frame .screen.val.le
        !           282:     labelentry .screen.val.le.tim "Timeout (s)" 5
        !           283:     labelentry .screen.val.le.cyc "Cycle (s)" 5
        !           284:     pack append .screen.val.le \
        !           285:            .screen.val.le.tim  {top pady 4 frame e} \
        !           286:            .screen.val.le.cyc  {top pady 4 frame e}
        !           287: 
        !           288:     pack append .screen.val \
        !           289:            .screen.val.rb      {left} \
        !           290:            .screen.val.le      {left}
        !           291: 
        !           292:     pack append .screen \
        !           293:            .screen.label       {top} \
        !           294:            .screen.val         {top expand}
        !           295: 
        !           296:     #
        !           297:     # Main window
        !           298:     #
        !           299: 
        !           300:     pack append . \
        !           301:            .buttons    {top fill} \
        !           302:            .bell       {top fill pady 10 expand} \
        !           303:            .kbd        {top fill pady 10 expand} \
        !           304:            .mouse      {top fill pady 10 expand} \
        !           305:            .screen     {top fill pady 10 expand}
        !           306: 
        !           307:     #
        !           308:     # Let the user resize our window
        !           309:     #
        !           310:     wm minsize . 10 10
        !           311: }
        !           312: 
        !           313: ##############################################################################
        !           314: # Main program
        !           315: 
        !           316: #
        !           317: # Listen what "xset" tells us...
        !           318: #
        !           319: 
        !           320: readsettings
        !           321: 
        !           322: #
        !           323: # Create all windows
        !           324: #
        !           325: 
        !           326: createwindows
        !           327: 
        !           328: #
        !           329: # Write xset parameters
        !           330: #
        !           331: 
        !           332: dispsettings
        !           333: 
        !           334: #
        !           335: # Now, wait for user actions...
        !           336: #

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.