home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Freesoft 1999 February
/
Freesoft_1999-02_cd.bin
/
Recenz
/
Utility
/
DisplayDoctorLinux
/
scitech-display-doctor-1.0beta-3.i386.rpm
/
scitech-display-doctor-1.0beta.3.cpio.gz
/
scitech-display-doctor-1.0beta.3.cpio
/
usr
/
lib
/
nucleus
/
XF86Setup
/
modeselect.tcl
< prev
next >
Wrap
Text File
|
1998-09-19
|
6KB
|
197 lines
# $XConsortium: modeselect.tcl /main/2 1996/10/25 10:21:20 kaleb $
#
#
#
#
# $XFree86: xc/programs/Xserver/hw/xfree86/XF86Setup/modeselect.tcl,v 3.1.2.3 1998/02/21 06:07:00 robin Exp $
#
# Copyright 1996 by Joseph V. Moss <joe@XFree86.Org>
# 1997 by Dirk H Hohndel <hohndel@XFree86.Org>
#
# See the file "LICENSE" for information regarding redistribution terms,
# and for a DISCLAIMER OF ALL WARRANTIES.
#
#
# routines to select the modes that the user actually wants to use
#
proc Modeselect_compare_modes { m1 m2 } {
scan $m1 "%d%*c%d" m1x m1y
scan $m2 "%d%*c%d" m2x m2y
return [expr $m1x*$m1y - $m2x*$m2y ]
}
proc Modeselect_create_widgets { win } {
global MonitorIDs monDevNum monCanvas MonitorDescriptions
global pc98_EGC messages lbuttons
global DefaultColorDepth DefaultRefreshRate
set w [winpathprefix $win]
set DefaultColorDepth 16
set lbuttons {}
if !$pc98_EGC {
frame $w.modesel -width 640 -height 420 \
-relief ridge -borderwidth 5
} else {
frame $w.modesel -width 640 -height 400 \
-relief ridge -borderwidth 5
}
frame $w.modesel.top
frame $w.modesel.mid -relief sunken -borderwidth 3
frame $w.modesel.bot
entry $w.modesel.refresh -textvariable DefaultRefreshRate
pack $w.modesel.top -side top
# pack $w.modesel.refresh -side right -expand yes
pack $w.modesel.mid -side top -expand yes
pack $w.modesel.bot -side top
label $w.modesel.top.title -text $messages(modeselect.1)
frame $w.modesel.type
pack $w.modesel.top.title $w.modesel.type -in $w.modesel.top -side top
set canv [canvas $w.modesel.buttons]
checkbutton $win.modesel.buttons.nomode -text $messages(modeselect.19) -indicatoron no
Modeselection_build_buttons $w $canv
scrollbar $w.modesel.sb \
-command [list $canv yview]
pack $canv -in $w.modesel.mid \
-side left -fill both -expand yes -pady 2m
pack $w.modesel.sb -in $w.modesel.mid -side right \
-fill y -expand yes
frame $w.modesel.dcd
label $w.modesel.dcd.title -text $messages(modeselect.14)
radiobutton $w.modesel.8bpp -text $messages(modeselect.15) \
-indicatoron false -variable ColorDepth \
-value "depth8" -underline 19 \
-command [list modesel_color_select $w 8]
radiobutton $w.modesel.16bpp -text $messages(modeselect.16) \
-indicatoron false -variable ColorDepth \
-value "depth16" -underline 19 \
-command [list modesel_color_select $w 16]
$w.modesel.16bpp select
radiobutton $w.modesel.24bpp -text $messages(modeselect.17) \
-indicatoron false -variable ColorDepth \
-value "depth24" -underline 19 \
-command [list modesel_color_select $w 24]
radiobutton $w.modesel.32bpp -text $messages(modeselect.18) \
-indicatoron false -variable ColorDepth \
-value "depth32" -underline 19 \
-command [list modesel_color_select $w 32]
pack $w.modesel.8bpp $w.modesel.16bpp $w.modesel.24bpp \
$w.modesel.32bpp -side left -fill x -expand yes \
-in $w.modesel.dcd
pack $w.modesel.dcd.title $w.modesel.dcd -side left -fill y -expand yes
}
proc Modeselection_build_buttons { win canv } {
global DefaultColorDepth lbuttons SelectedMonitorModes
# if { [array exists SelectedMonitorModes] == 1 } {
# foreach i [array names SelectedMonitorModes *] {
# set SelectedMonitorModes($i) "#removed"
# }
# }
# $canv delete modelist_buttons
set lbuttons {}
set all_modes [vbe_getmoderes 8]
# $DefaultColorDepth]
foreach res [lsort -command Modeselect_compare_modes $all_modes] {
if { [catch {$win.modesel.buttons.m$res deselect} ] != 0 } {
checkbutton $win.modesel.buttons.m$res \
-text $res \
-indicatoron no -variable m$res \
-command [list modesel_enable $win " $res*"]
}
lappend lbuttons $win.modesel.buttons.m$res
$win.modesel.buttons.m$res select
modesel_enable $win " $res*"
}
if { [llength $lbuttons] == 0 } {
lappend lbuttons $win.modesel.buttons.nomode
}
set ht 0
set wd 0
foreach wb $lbuttons {
set bwd [winfo reqwidth $wb]
if {$wd < $bwd} {set wd $bwd}
}
foreach wb $lbuttons {
$canv create window \
[expr ($wd-[winfo reqwidth $wb])/2] $ht \
-anchor nw -window $wb -tags modelist_buttons
set ht [expr $ht + [winfo reqheight $wb]]
}
$canv configure -yscrollcommand [list $win.modesel.sb set] \
-scrollregion [list 0 0 $wd $ht] \
-width $wd
}
proc Modeselection_activate { win } {
set w [winpathprefix $win]
pack $w.modesel -side top -fill both -expand yes
}
proc Modeselection_deactivate { win } {
set w [winpathprefix $win]
pack forget $w.modesel
}
proc modesel_color_select { win val } {
global DefaultColorDepth
set w [winpathprefix $win]
if { $val != $DefaultColorDepth } {
set DefaultColorDepth $val
# Modeselection_build_buttons $w $w.modesel.buttons
}
}
proc modesel_enable { win val } {
global MonitorStdModes SelectedMonitorModes haveSelectedModes
set w [winpathprefix $win]
set haveSelectedModes 1
# we need to handle the fact that these are toggle buttons, so every
# other time this is selected, the user actually wants to deselect
# the entries
# this would be much easier if I have a way to remove pairs from an array...
if { [array get SelectedMonitorModes $val] != "" } {
# puts stderr "$val already existed"
#
foreach desc [array names SelectedMonitorModes $val] {
if [string match \#removed $SelectedMonitorModes($desc)] {
# ok, we're enabling again
set SelectedMonitorModes($desc) $MonitorStdModes($desc)
} else {
# puts stderr "invalidating for $desc"
set SelectedMonitorModes($desc) "#removed"
}
}
} else {
# puts stderr "add $val to selected modes"
foreach desc [array names MonitorStdModes $val] {
set modeline $MonitorStdModes($desc)
# puts stderr "$desc :: $modeline"
set SelectedMonitorModes($desc) $modeline
}
}
# puts Enable
# foreach desc [array names SelectedMonitorModes] {
# puts stderr "$desc -> $SelectedMonitorModes($desc)"
# }
}