git-gui / lib / error.tclon commit Merge git://repo.or.cz/git-gui (a8816e7)
   1# git-gui branch (create/delete) support
   2# Copyright (C) 2006, 2007 Shawn Pearce
   3
   4proc _error_parent {} {
   5        set p [grab current .]
   6        if {$p eq {}} {
   7                return .
   8        }
   9        return $p
  10}
  11
  12proc error_popup {msg} {
  13        set title [appname]
  14        if {[reponame] ne {}} {
  15                append title " ([reponame])"
  16        }
  17        set cmd [list tk_messageBox \
  18                -icon error \
  19                -type ok \
  20                -title [append "$title: " [mc "error"]] \
  21                -message $msg]
  22        if {[winfo ismapped [_error_parent]]} {
  23                lappend cmd -parent [_error_parent]
  24        }
  25        eval $cmd
  26}
  27
  28proc warn_popup {msg} {
  29        set title [appname]
  30        if {[reponame] ne {}} {
  31                append title " ([reponame])"
  32        }
  33        set cmd [list tk_messageBox \
  34                -icon warning \
  35                -type ok \
  36                -title [append "$title: " [mc "warning"]] \
  37                -message $msg]
  38        if {[winfo ismapped [_error_parent]]} {
  39                lappend cmd -parent [_error_parent]
  40        }
  41        eval $cmd
  42}
  43
  44proc info_popup {msg} {
  45        set title [appname]
  46        if {[reponame] ne {}} {
  47                append title " ([reponame])"
  48        }
  49        tk_messageBox \
  50                -parent [_error_parent] \
  51                -icon info \
  52                -type ok \
  53                -title $title \
  54                -message $msg
  55}
  56
  57proc ask_popup {msg} {
  58        set title [appname]
  59        if {[reponame] ne {}} {
  60                append title " ([reponame])"
  61        }
  62        set cmd [list tk_messageBox \
  63                -icon question \
  64                -type yesno \
  65                -title $title \
  66                -message $msg]
  67        if {[winfo ismapped [_error_parent]]} {
  68                lappend cmd -parent [_error_parent]
  69        }
  70        eval $cmd
  71}
  72
  73proc hook_failed_popup {hook msg {is_fatal 1}} {
  74        set w .hookfail
  75        toplevel $w
  76
  77        frame $w.m
  78        label $w.m.l1 -text "$hook hook failed:" \
  79                -anchor w \
  80                -justify left \
  81                -font font_uibold
  82        text $w.m.t \
  83                -background white \
  84                -foreground black \
  85                -borderwidth 1 \
  86                -relief sunken \
  87                -width 80 -height 10 \
  88                -font font_diff \
  89                -yscrollcommand [list $w.m.sby set]
  90        scrollbar $w.m.sby -command [list $w.m.t yview]
  91        pack $w.m.l1 -side top -fill x
  92        if {$is_fatal} {
  93                label $w.m.l2 \
  94                        -text [mc "You must correct the above errors before committing."] \
  95                        -anchor w \
  96                        -justify left \
  97                        -font font_uibold
  98                pack $w.m.l2 -side bottom -fill x
  99        }
 100        pack $w.m.sby -side right -fill y
 101        pack $w.m.t -side left -fill both -expand 1
 102        pack $w.m -side top -fill both -expand 1 -padx 5 -pady 10
 103
 104        $w.m.t insert 1.0 $msg
 105        $w.m.t conf -state disabled
 106
 107        button $w.ok -text OK \
 108                -width 15 \
 109                -command "destroy $w"
 110        pack $w.ok -side bottom -anchor e -pady 10 -padx 10
 111
 112        bind $w <Visibility> "grab $w; focus $w"
 113        bind $w <Key-Return> "destroy $w"
 114        wm title $w [strcat "[appname] ([reponame]): " [mc "error"]]
 115        tkwait window $w
 116}