OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [start/] [insight/] [tk/] [library/] [bgerror.tcl] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
# bgerror.tcl --
2
#
3
# This file contains a default version of the bgerror procedure.  It
4
# posts a dialog box with the error message and gives the user a chance
5
# to see a more detailed stack trace.
6
#
7
# SCCS: @(#) bgerror.tcl 1.16 97/08/06 09:19:50
8
#
9
# Copyright (c) 1992-1994 The Regents of the University of California.
10
# Copyright (c) 1994-1996 Sun Microsystems, Inc.
11
#
12
# See the file "license.terms" for information on usage and redistribution
13
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
14
 
15
 
16
# bgerror --
17
# This is the default version of bgerror. 
18
# It tries to execute tkerror, if that fails it posts a dialog box containing
19
# the error message and gives the user a chance to ask to see a stack
20
# trace.
21
# Arguments:
22
# err -                 The error message.
23
 
24
proc bgerror err {
25
    global errorInfo tcl_platform
26
 
27
    # save errorInfo which would be erased in the catch below otherwise.
28
    set info $errorInfo ;
29
 
30
    # For backward compatibility :
31
    # Let's try to execute "tkerror" (using catch {tkerror ...} 
32
    # instead of searching it with info procs so the application gets
33
    # a chance to auto load it using its favorite "unknown" mecanism.
34
    # (we do the default dialog only if we get a TCL_ERROR (=1) return
35
    #  code from the tkerror trial, other ret codes are passed back
36
    #  to our caller (tcl background error handler) so the called "tkerror"
37
    #  can still use  return -code break, to skip remaining messages
38
    #  in the error queue for instance)  -- dl
39
    set ret [catch {tkerror $err} msg];
40
    if {$ret != 1} {return -code $ret $msg}
41
 
42
    # Ok the application's tkerror either failed or was not found
43
    # we use the default dialog then :
44
    if {$tcl_platform(platform) == "macintosh"} {
45
        set ok Ok
46
    } else {
47
        set ok OK
48
    }
49
    set button [tk_dialog .bgerrorDialog "Error in Tcl Script" \
50
            "Error: $err" error 0 $ok "Skip Messages" "Stack Trace"]
51
    if {$button == 0} {
52
        return
53
    } elseif {$button == 1} {
54
        return -code break
55
    }
56
 
57
    set w .bgerrorTrace
58
    catch {destroy $w}
59
    toplevel $w -class ErrorTrace
60
    wm minsize $w 1 1
61
    wm title $w "Stack Trace for Error"
62
    wm iconname $w "Stack Trace"
63
    button $w.ok -text OK -command "destroy $w" -default active
64
    if {$tcl_platform(platform) == "macintosh"} {
65
      text $w.text -relief flat -bd 2 -highlightthickness 0 -setgrid true \
66
            -yscrollcommand "$w.scroll set" -width 60 -height 20
67
    } else {
68
      text $w.text -relief sunken -bd 2 -yscrollcommand "$w.scroll set" \
69
            -setgrid true -width 60 -height 20
70
    }
71
    scrollbar $w.scroll -relief sunken -command "$w.text yview"
72
    pack $w.ok -side bottom -padx 3m -pady 2m
73
    pack $w.scroll -side right -fill y
74
    pack $w.text -side left -expand yes -fill both
75
    $w.text insert 0.0 $info
76
    $w.text mark set insert 0.0
77
 
78
    bind $w <Return> "destroy $w"
79
    bind $w.text <Return> "destroy $w; break"
80
 
81
    # Center the window on the screen.
82
 
83
    wm withdraw $w
84
    update idletasks
85
    set x [expr {[winfo screenwidth $w]/2 - [winfo reqwidth $w]/2 \
86
            - [winfo vrootx [winfo parent $w]]}]
87
    set y [expr {[winfo screenheight $w]/2 - [winfo reqheight $w]/2 \
88
            - [winfo vrooty [winfo parent $w]]}]
89
    wm geom $w +$x+$y
90
    wm deiconify $w
91
 
92
    # Be sure to release any grabs that might be present on the
93
    # screen, since they could make it impossible for the user
94
    # to interact with the stack trace.
95
 
96
    if {[grab current .] != ""} {
97
        grab release [grab current .]
98
    }
99
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.