c80d7be5e1
This patch enables the use of themed Tk widgets with Tk 8.5 and above. These make a significant difference on Windows in making the application appear native. On Windows and MacOSX ttk defaults to the native look as much as possible. On X11 the user may select a theme using the TkTheme XRDB resource class by adding an line to the .Xresources file. The set of installed theme names is available using the Tk command 'ttk::themes'. The default on X11 is similar to the current un-themed style - a kind of thin bordered motif look. A new git config variable 'gui.usettk' may be set to disable this if the user prefers the classic Tk look. Using Tk 8.4 will also avoid the use of themed widgets as these are only available since 8.5. Some support is included for Tk 8.6 features (themed spinbox and native font chooser for MacOSX and Windows). Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
120 lines
2.5 KiB
Tcl
120 lines
2.5 KiB
Tcl
# 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 [append "$title: " [mc "error"]] \
|
|
-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 [append "$title: " [mc "warning"]] \
|
|
-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 "$hook hook failed:" \
|
|
-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 [strcat "[appname] ([reponame]): " [mc "error"]]
|
|
wm deiconify $w
|
|
tkwait window $w
|
|
}
|