summaryrefslogtreecommitdiff
path: root/lib/error.tcl
blob: 8968a57f33e37584e3589f03918db2cb89db24e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# git-gui branch (create/delete) support
# Copyright (C) 2006, 2007 Shawn Pearce

proc _error_parent {} {
	set p [grab current .]
	if {$p eq {}} {
		return .
	}
	return $p
}

proc error_popup {msg} {
	set title [appname]
	if {[reponame] ne {}} {
		append title " ([reponame])"
	}
	set cmd [list tk_messageBox \
		-icon error \
		-type ok \
		-title [mc "%s: error" $title] \
		-message $msg]
	if {[winfo ismapped [_error_parent]]} {
		lappend cmd -parent [_error_parent]
	}
	eval $cmd
}

proc warn_popup {msg} {
	set title [appname]
	if {[reponame] ne {}} {
		append title " ([reponame])"
	}
	set cmd [list tk_messageBox \
		-icon warning \
		-type ok \
		-title [mc "%s: warning" $title] \
		-message $msg]
	if {[winfo ismapped [_error_parent]]} {
		lappend cmd -parent [_error_parent]
	}
	eval $cmd
}

proc info_popup {msg} {
	set title [appname]
	if {[reponame] ne {}} {
		append title " ([reponame])"
	}
	tk_messageBox \
		-parent [_error_parent] \
		-icon info \
		-type ok \
		-title $title \
		-message $msg
}

proc ask_popup {msg} {
	set title [appname]
	if {[reponame] ne {}} {
		append title " ([reponame])"
	}
	set cmd [list tk_messageBox \
		-icon question \
		-type yesno \
		-title $title \
		-message $msg]
	if {[winfo ismapped [_error_parent]]} {
		lappend cmd -parent [_error_parent]
	}
	eval $cmd
}

proc hook_failed_popup {hook msg {is_fatal 1}} {
	global use_ttk NS
	set w .hookfail
	Dialog $w
	wm withdraw $w

	${NS}::frame $w.m
	${NS}::label $w.m.l1 -text [mc "%s hook failed:" $hook] \
		-anchor w \
		-justify left \
		-font font_uibold
	text $w.m.t \
		-background white \
		-foreground black \
		-borderwidth 1 \
		-relief sunken \
		-width 80 -height 10 \
		-font font_diff \
		-yscrollcommand [list $w.m.sby set]
	${NS}::scrollbar $w.m.sby -command [list $w.m.t yview]
	pack $w.m.l1 -side top -fill x
	if {$is_fatal} {
		${NS}::label $w.m.l2 \
			-text [mc "You must correct the above errors before committing."] \
			-anchor w \
			-justify left \
			-font font_uibold
		pack $w.m.l2 -side bottom -fill x
	}
	pack $w.m.sby -side right -fill y
	pack $w.m.t -side left -fill both -expand 1
	pack $w.m -side top -fill both -expand 1 -padx 5 -pady 10

	$w.m.t insert 1.0 $msg
	$w.m.t conf -state disabled

	${NS}::button $w.ok -text OK \
		-width 15 \
		-command "destroy $w"
	pack $w.ok -side bottom -anchor e -pady 10 -padx 10

	bind $w <Visibility> "grab $w; focus $w"
	bind $w <Key-Return> "destroy $w"
	wm title $w [mc "%s (%s): error" [appname] [reponame]]
	wm deiconify $w
	tkwait window $w
}