Annotation of capa/capa51/GUITools/utils.tcl, revision 1.3
1.2 albertel 1: #Utilities for Grader. Used for centering dialogues
1.1 albertel 2: #stolen from TkNet.
3:
4: ###############################################################
5: # TkNet - Utilities Module
6: # Charlie KEMPSON - charlie@siren.demon.co.uk
7: # http://public.logica.com/~kempsonc/tknet.htm
8: # Version 1.1
9: ###############################################################
10:
11: ###############################################################
12: #
13: # Copyright (c) 1995-1996 Charlie Kempson
14: #
15: # This program is free software; you can redistribute it
16: # and/or modify it under the terms of the GNU General
17: # Public License as published by the Free Software
18: # Foundation (version 2 of the License).
19: #
20: # This program is distributed in the hope that it will
21: # be useful, but WITHOUT ANY WARRANTY; without even the
22: # implied warranty of MERCHANTABILITY or FITNESS FOR A
23: # PARTICULAR PURPOSE. See the GNU General Public License
24: # for more details.
25: #
26: # For a copy of the GNU General Public License, write to the
1.3 ! albertel 27: # Free Software Foundation, Inc. 59 Temple Place, Suite 330,
! 28: # Boston, MA 02111, USA.
1.1 albertel 29: ###############################################################
30: ###############################################################
31: # Centre a window on the screen (or parent)
32: proc Centre_Dialog {window {position ""} {parent ""}} {
33:
34: # Withdraw dialog and update all windows
35: wm withdraw $window
36: update idletasks
37: set win_width [winfo reqwidth $window]
38: set win_height [winfo reqheight $window]
39:
40: # Read the positioning argument (pointer, widget, default)
41: switch -glob -- $position {
42: p* {
43: # place at POINTER (centered is $a == center)
44: wm geometry $window +[expr \
45: [winfo pointerx $window]-$win_width \
46: /2]+[expr [winfo pointery $window]-\
47: $win_height/2]
48: }
49: w* {
50: # center about WIDGET $parent
51: wm geometry $window +[expr [winfo rootx $parent]+ \
52: ([winfo width $parent]-$win_width)/2]+[expr \
53: [winfo rooty $parent]+([winfo height \
54: $parent]-$win_height)/2]
55: }
56: default {
57: wm geometry $window +[expr ([winfo screenwidth \
58: $window]-$win_width) / 2]+[expr ([winfo screenheight \
59: $window]- $win_height) / 2]
60: }
61: }
62:
63: # Now show the window
64: wm deiconify $window
65: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>