# window.tcl
# Copyright (c) 2001 Digi International Inc., All Rights Reserved
# 
# This software contains proprietary and confidential information of Digi
# International Inc.  By accepting transfer of this copy, Recipient agrees
# to retain this software in confidence, to prevent disclosure to others,
# and to make no use of this software other than that for which it was
# delivered.  This is an unpublished copyrighted work of Digi International
# Inc.  Except as permitted by federal law, 17 USC 117, copying is strictly
# prohibited.
# 
# Restricted Rights Legend
#
# Use, duplication, or disclosure by the Government is subject to
# restrictions set forth in sub-paragraph (c)(1)(ii) of The Rights in
# Technical Data and Computer Software clause at DFARS 252.227-7031 or
# subparagraphs (c)(1) and (2) of the Commercial Computer Software -
# Restricted Rights at 48 CFR 52.227-19, as applicable.
#
# Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
#
# ***************************************************************************


namespace eval ::window {

proc center {window} {
	set cxScreen [winfo screenwidth .]
	set cyScreen [winfo screenheight .]   
	set windowParent [winfo parent $window]

	if {$windowParent == ""} {
		set cxParent $cxScreen
		set cyParent $cyScreen
		set xParent 0
		set yParent 0
	} else {
		set cxParent [winfo width $windowParent]
		set cyParent [winfo height $windowParent]
		set xParent [winfo x $windowParent]
		set yParent [winfo y $windowParent]
	}                                     

	wm geometry $window +[expr {$cxScreen - 1}]+[expr {$cyScreen - 1}]
	update
	set cxWindow [winfo width $window]
	set cyWindow [winfo height $window]   
	set dx [expr ($cxParent - $cxWindow) / 2]
	set dy [expr ($cyParent - $cyWindow) / 2]   

    wm geometry $window +[expr $xParent + $dx]+[expr $yParent + $dy]
	update
}

proc abs_center {window} {
	set cxScreen [winfo screenwidth $window]
	set cyScreen [winfo screenheight $window]
	set cxWindow [winfo width $window]
	set cyWindow [winfo height $window]
	set dx [expr ($cxScreen - $cxWindow) / 2]
	set dy [expr ($cyScreen - $cyWindow) / 2]
	wm geometry $window +$dx+$dy
	update
}
proc top_center {window} { 
	set cxScreen [winfo screenwidth .]
	set cyScreen [winfo screenheight .]   
	set windowParent [winfo parent $window]

	if {$windowParent == ""} {
		set cxParent $cxScreen
		set cyParent $cyScreen
		set xParent 0
		set yParent 0
	} else {
		set cxParent [winfo width $windowParent]
		set cyParent [winfo height $windowParent]
		set xParent [winfo x $windowParent]
		set yParent [winfo y $windowParent]
	}  

	wm geometry $window +[expr {$cxScreen - 1}]+[expr {$cyScreen - 1}]
	update
	set cxWindow [winfo width $window]
	set cyWindow [winfo height $window]   

	set dx [expr ($cxParent - $cxWindow) / 2]
	set dy [expr round($cyParent * .03) - 1]
	set lstWindows {nt 2k 95 98 Me w2k w9598}
	if { [lsearch $lstWindows $::info::strOS] != -1} {
		set dy 0
	}   

    wm geometry $window +[expr $xParent + $dx]+[expr $yParent + $dy]
	update
}

# end namespace
}
