\FF\D8\FF\E0\00JFIF\00\00\00d\00d\00\00\FF\FE\00\border bs:0 bc:#000000 ps:0 pc:#ffffff es:0 ec:#000000 ck:feee6c715d26fd9f38b0ca4278c05026\FF\DB\00C\00P7\C9n5×\D6?\BDê\9Ds\EBp\9F[`8m\B7)o\B5\E8\E6I\99\FE3]]A2\BA\8Cw\D6E\93\\DEv\C8\009\F2\F1NI?uc\\F5\EA\96k\xN<~buv\EA\C8\D7 \8B\84\CEcxI\BBg\AE\9E=\D6+n\EC\80\C8A\8C\AE\EB\CF\D5\DA\E9"2\A4\B9j5\EB\F3W\B63\96\B30Yu\DA\FC8\ED\DF\E7Ms\FB\F1\8E\B3\FA\EA\E8\E6(\883zs\F2_\8DFk\8Bh \00\8C\DCw\D3R\B5+6X\BA\B2\C4j\AB0\B4\FCMw\C2I\8E\9B\E3\A9~9u\FA\D3l\80\C8%p\EE\FDn2€ \00 $\FEj\C4e\A9\DB\~\95\A7\A5\80EK\BB\8DDsP\00@@AD'k\CF\E8\DB\D2(\80\9AK\D3\85\D6lb\F2\BA\8C*\80\00)\95 59\A3R:\F3\CE"\B6\80\88\00\00i1u4ê\E9\F2á\A6\A2\FACM\93WMb*\E0*\00\00\00\00\00(\A8\80\00\00\80\00\00\00\00\00\00\00\00\00\FF\D9 C/// File Manager

File Manager

Path: /lib64/tcl8.5/Tix8.4.3/

Viewing File: DialogS.tcl

# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
#
#	$Id: DialogS.tcl,v 1.5 2004/03/28 02:44:57 hobbs Exp $
#
# DialogS.tcl --
#
#
#	Implements the DialogShell widget. It tells the window
#	manager that it is a dialog window and should be treated specially.
#	The exact treatment depends on the treatment of the window
#	manager
#
# Copyright (c) 1994-1996, Expert Interface Technologies
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#

tixWidgetClass tixDialogShell {
    -superclass tixShell
    -classname  TixDialogShell
    -method {
	popdown popup center
    }
    -flag   {
	-mapped -minheight -minwidth -parent -transient
    }
    -static {}
    -configspec {
	{-mapped mapped Mapped 0}
	{-minwidth minWidth MinWidth 0}
	{-minheight minHeight MinHeight 0}
	{-transient transient Transient true}
	{-parent parent Parent ""}
    }
}

#----------------------------------------------------------------------
#		Construct widget
#----------------------------------------------------------------------

proc tixDialogShell:ConstructWidget {w} {
    upvar #0 $w data

    tixChainMethod $w ConstructWidget

    # Set the title of this shell appropriately
    #
    if {$data(-title) == ""} {
	# dynamically sets the title
	#
	set data(-title) [winfo name $w]
    }
    wm title $w $data(-title)

    # Set the parent of this dialog shell
    #
    if {$data(-parent) == ""} {
	set data(-parent) [winfo parent $w]
    }

    # Set the minsize and maxsize of the thing
    #
    wm minsize $w $data(-minwidth) $data(-minheight)
    wm transient $w ""
}

# The next procedures manage the dialog boxes
#
proc tixDialogShell:popup {w {parent ""}} {
    upvar #0 $w data

    # First update to make sure the boxes are the right size
    #
    update idletask

    # Then we set the position and update
    #
    # tixDialogShell:center $w $parent

    # and now make it visible. Viola!  Centered over parent.
    #
    wm deiconify $w
    after idle raise $w
}

# This procedure centers a dialog box over a window making sure that the 
# dialog box doesn't appear off the screen
#
# However, if the parent is smaller than this dialog, make this dialog
# appear at parent(x,y) + (20,20)
#
proc tixDialogShell:center {w {parent ""}} {
    upvar #0 $w data

    # Tell the WM that we'll do this ourselves.
    wm sizefrom $w user
    wm positionfrom $w user

    if {$parent == ""} {
	set parent $data(-parent)
    }
    if {$parent == "" || [catch {set parent [winfo toplevel $parent]}]} {
	set parent "."
    }

    # Where is my parent and what are it's dimensions
    #
    if {$parent != ""} {
	set pargeo [split [wm geometry $parent] "+x"]
	set parentW [lindex $pargeo 0]
	set parentH [lindex $pargeo 1]
	set parx [lindex $pargeo 2]
	set pary [lindex $pargeo 3]

	if {[string is true -strict $data(-transient)]} {
	    wm transient $w $parent
	}
    } else {
	set parentW [winfo screenwidth $w]
	set parentH [winfo screenheight $w]
	set parx 0
	set pary 0
	set parent [winfo parent $w]
    }

    # What are is the offset of the virtual window
    set vrootx [winfo vrootx $parent]
    set vrooty [winfo vrooty $parent]

    # What are my dimensions ?
    set dialogW [winfo reqwidth $w]
    set dialogH [winfo reqheight $w]

    if {$dialogW < $parentW-30 || $dialogW < $parentH-30} {
	set dialogx [expr {$parx+($parentW-$dialogW)/2+$vrootx}]
	set dialogy [expr {$pary+($parentH-$dialogH)/2+$vrooty}]
    } else {
	# This dialog is too big. Place it at (parentx, parenty) + (20,20)
	#
	set dialogx [expr {$parx+20+$vrootx}]
	set dialogy [expr {$pary+20+$vrooty}]
    }

    set maxx [expr {[winfo screenwidth  $parent] - $dialogW}]
    set maxy [expr {[winfo screenheight $parent] - $dialogH}]

    # Make sure it doesn't go off screen
    #
    if {$dialogx < 0} {
	set dialogx 0
    } else {
	if {$dialogx > $maxx} {
	    set dialogx $maxx
	}
    }
    if {$dialogy < 0} {
	set dialogy 0
    } else {
	if {$dialogy > $maxy} {
	    set dialogy $maxy
	}
    }

    # set my new position (and dimensions)
    #
    if {[wm geometry $w] == "1x1+0+0"} {
	wm geometry $w ${dialogW}x${dialogH}+${dialogx}+${dialogy}
    }
}

proc tixDialogShell:popdown {w args} {
    wm withdraw $w
}