gitk: Use named fonts instead of the font specification

This replaces the use of $mainfont, $textfont and $uifont with named
fonts called mainfont, textfont and uifont.  We also have variants
called mainfontbold and textfontbold.  This makes it much easier to
make sure font size changes are reflected everywhere they should be,
since configuring a named font automatically changes all the widgets
that are using that font.

Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Paul Mackerras 2007-10-04 22:27:13 +10:00
parent 64b5f146fd
commit 9c311b3208

257
gitk
View File

@ -133,7 +133,7 @@ proc stop_rev_list {} {
} }
proc getcommits {} { proc getcommits {} {
global phase canv mainfont curview global phase canv curview
set phase getcommits set phase getcommits
initlayout initlayout
@ -615,7 +615,7 @@ proc confirm_popup msg {
proc makewindow {} { proc makewindow {} {
global canv canv2 canv3 linespc charspc ctext cflist global canv canv2 canv3 linespc charspc ctext cflist
global textfont mainfont uifont tabstop global tabstop
global findtype findtypemenu findloc findstring fstring geometry global findtype findtypemenu findloc findstring fstring geometry
global entries sha1entry sha1string sha1but global entries sha1entry sha1string sha1but
global diffcontextstring diffcontext global diffcontextstring diffcontext
@ -630,19 +630,19 @@ proc makewindow {} {
menu .bar menu .bar
.bar add cascade -label "File" -menu .bar.file .bar add cascade -label "File" -menu .bar.file
.bar configure -font $uifont .bar configure -font uifont
menu .bar.file menu .bar.file
.bar.file add command -label "Update" -command updatecommits .bar.file add command -label "Update" -command updatecommits
.bar.file add command -label "Reread references" -command rereadrefs .bar.file add command -label "Reread references" -command rereadrefs
.bar.file add command -label "List references" -command showrefs .bar.file add command -label "List references" -command showrefs
.bar.file add command -label "Quit" -command doquit .bar.file add command -label "Quit" -command doquit
.bar.file configure -font $uifont .bar.file configure -font uifont
menu .bar.edit menu .bar.edit
.bar add cascade -label "Edit" -menu .bar.edit .bar add cascade -label "Edit" -menu .bar.edit
.bar.edit add command -label "Preferences" -command doprefs .bar.edit add command -label "Preferences" -command doprefs
.bar.edit configure -font $uifont .bar.edit configure -font uifont
menu .bar.view -font $uifont menu .bar.view -font uifont
.bar add cascade -label "View" -menu .bar.view .bar add cascade -label "View" -menu .bar.view
.bar.view add command -label "New view..." -command {newview 0} .bar.view add command -label "New view..." -command {newview 0}
.bar.view add command -label "Edit view..." -command editview \ .bar.view add command -label "Edit view..." -command editview \
@ -656,7 +656,7 @@ proc makewindow {} {
.bar add cascade -label "Help" -menu .bar.help .bar add cascade -label "Help" -menu .bar.help
.bar.help add command -label "About gitk" -command about .bar.help add command -label "About gitk" -command about
.bar.help add command -label "Key bindings" -command keys .bar.help add command -label "Key bindings" -command keys
.bar.help configure -font $uifont .bar.help configure -font uifont
. configure -menu .bar . configure -menu .bar
# the gui has upper and lower half, parts of a paned window. # the gui has upper and lower half, parts of a paned window.
@ -713,10 +713,10 @@ proc makewindow {} {
set entries $sha1entry set entries $sha1entry
set sha1but .tf.bar.sha1label set sha1but .tf.bar.sha1label
button $sha1but -text "SHA1 ID: " -state disabled -relief flat \ button $sha1but -text "SHA1 ID: " -state disabled -relief flat \
-command gotocommit -width 8 -font $uifont -command gotocommit -width 8 -font uifont
$sha1but conf -disabledforeground [$sha1but cget -foreground] $sha1but conf -disabledforeground [$sha1but cget -foreground]
pack .tf.bar.sha1label -side left pack .tf.bar.sha1label -side left
entry $sha1entry -width 40 -font $textfont -textvariable sha1string entry $sha1entry -width 40 -font textfont -textvariable sha1string
trace add variable sha1string write sha1change trace add variable sha1string write sha1change
pack $sha1entry -side left -pady 2 pack $sha1entry -side left -pady 2
@ -745,9 +745,9 @@ proc makewindow {} {
# Status label and progress bar # Status label and progress bar
set statusw .tf.bar.status set statusw .tf.bar.status
label $statusw -width 15 -relief sunken -font $uifont label $statusw -width 15 -relief sunken -font uifont
pack $statusw -side left -padx 5 pack $statusw -side left -padx 5
set h [expr {[font metrics $uifont -linespace] + 2}] set h [expr {[font metrics uifont -linespace] + 2}]
set progresscanv .tf.bar.progress set progresscanv .tf.bar.progress
canvas $progresscanv -relief sunken -height $h -borderwidth 2 canvas $progresscanv -relief sunken -height $h -borderwidth 2
set progressitem [$progresscanv create rect -1 0 0 $h -fill green] set progressitem [$progresscanv create rect -1 0 0 $h -fill green]
@ -760,10 +760,10 @@ proc makewindow {} {
set progupdatepending 0 set progupdatepending 0
# build up the bottom bar of upper window # build up the bottom bar of upper window
label .tf.lbar.flabel -text "Find " -font $uifont label .tf.lbar.flabel -text "Find " -font uifont
button .tf.lbar.fnext -text "next" -command dofind -font $uifont button .tf.lbar.fnext -text "next" -command dofind -font uifont
button .tf.lbar.fprev -text "prev" -command {dofind 1} -font $uifont button .tf.lbar.fprev -text "prev" -command {dofind 1} -font uifont
label .tf.lbar.flab2 -text " commit " -font $uifont label .tf.lbar.flab2 -text " commit " -font uifont
pack .tf.lbar.flabel .tf.lbar.fnext .tf.lbar.fprev .tf.lbar.flab2 \ pack .tf.lbar.flabel .tf.lbar.fnext .tf.lbar.fprev .tf.lbar.flab2 \
-side left -fill y -side left -fill y
set gdttype "containing:" set gdttype "containing:"
@ -772,27 +772,27 @@ proc makewindow {} {
"touching paths:" \ "touching paths:" \
"adding/removing string:"] "adding/removing string:"]
trace add variable gdttype write gdttype_change trace add variable gdttype write gdttype_change
$gm conf -font $uifont $gm conf -font uifont
.tf.lbar.gdttype conf -font $uifont .tf.lbar.gdttype conf -font uifont
pack .tf.lbar.gdttype -side left -fill y pack .tf.lbar.gdttype -side left -fill y
set findstring {} set findstring {}
set fstring .tf.lbar.findstring set fstring .tf.lbar.findstring
lappend entries $fstring lappend entries $fstring
entry $fstring -width 30 -font $textfont -textvariable findstring entry $fstring -width 30 -font textfont -textvariable findstring
trace add variable findstring write find_change trace add variable findstring write find_change
set findtype Exact set findtype Exact
set findtypemenu [tk_optionMenu .tf.lbar.findtype \ set findtypemenu [tk_optionMenu .tf.lbar.findtype \
findtype Exact IgnCase Regexp] findtype Exact IgnCase Regexp]
trace add variable findtype write findcom_change trace add variable findtype write findcom_change
.tf.lbar.findtype configure -font $uifont .tf.lbar.findtype configure -font uifont
.tf.lbar.findtype.menu configure -font $uifont .tf.lbar.findtype.menu configure -font uifont
set findloc "All fields" set findloc "All fields"
tk_optionMenu .tf.lbar.findloc findloc "All fields" Headline \ tk_optionMenu .tf.lbar.findloc findloc "All fields" Headline \
Comments Author Committer Comments Author Committer
trace add variable findloc write find_change trace add variable findloc write find_change
.tf.lbar.findloc configure -font $uifont .tf.lbar.findloc configure -font uifont
.tf.lbar.findloc.menu configure -font $uifont .tf.lbar.findloc.menu configure -font uifont
pack .tf.lbar.findloc -side right pack .tf.lbar.findloc -side right
pack .tf.lbar.findtype -side right pack .tf.lbar.findtype -side right
pack $fstring -side left -expand 1 -fill x pack $fstring -side left -expand 1 -fill x
@ -820,10 +820,10 @@ proc makewindow {} {
frame .bleft.mid frame .bleft.mid
button .bleft.top.search -text "Search" -command dosearch \ button .bleft.top.search -text "Search" -command dosearch \
-font $uifont -font uifont
pack .bleft.top.search -side left -padx 5 pack .bleft.top.search -side left -padx 5
set sstring .bleft.top.sstring set sstring .bleft.top.sstring
entry $sstring -width 20 -font $textfont -textvariable searchstring entry $sstring -width 20 -font textfont -textvariable searchstring
lappend entries $sstring lappend entries $sstring
trace add variable searchstring write incrsearch trace add variable searchstring write incrsearch
pack $sstring -side left -expand 1 -fill x pack $sstring -side left -expand 1 -fill x
@ -834,9 +834,9 @@ proc makewindow {} {
radiobutton .bleft.mid.new -text "New version" \ radiobutton .bleft.mid.new -text "New version" \
-command changediffdisp -variable diffelide -value {1 0} -command changediffdisp -variable diffelide -value {1 0}
label .bleft.mid.labeldiffcontext -text " Lines of context: " \ label .bleft.mid.labeldiffcontext -text " Lines of context: " \
-font $uifont -font uifont
pack .bleft.mid.diff .bleft.mid.old .bleft.mid.new -side left pack .bleft.mid.diff .bleft.mid.old .bleft.mid.new -side left
spinbox .bleft.mid.diffcontext -width 5 -font $textfont \ spinbox .bleft.mid.diffcontext -width 5 -font textfont \
-from 1 -increment 1 -to 10000000 \ -from 1 -increment 1 -to 10000000 \
-validate all -validatecommand "diffcontextvalidate %P" \ -validate all -validatecommand "diffcontextvalidate %P" \
-textvariable diffcontextstring -textvariable diffcontextstring
@ -846,7 +846,7 @@ proc makewindow {} {
pack .bleft.mid.labeldiffcontext .bleft.mid.diffcontext -side left pack .bleft.mid.labeldiffcontext .bleft.mid.diffcontext -side left
set ctext .bleft.ctext set ctext .bleft.ctext
text $ctext -background $bgcolor -foreground $fgcolor \ text $ctext -background $bgcolor -foreground $fgcolor \
-state disabled -font $textfont \ -state disabled -font textfont \
-yscrollcommand scrolltext -wrap none -yscrollcommand scrolltext -wrap none
if {$have_tk85} { if {$have_tk85} {
$ctext conf -tabstyle wordprocessor $ctext conf -tabstyle wordprocessor
@ -860,7 +860,7 @@ proc makewindow {} {
lappend fglist $ctext lappend fglist $ctext
$ctext tag conf comment -wrap $wrapcomment $ctext tag conf comment -wrap $wrapcomment
$ctext tag conf filesep -font [concat $textfont bold] -back "#aaaaaa" $ctext tag conf filesep -font textfontbold -back "#aaaaaa"
$ctext tag conf hunksep -fore [lindex $diffcolors 2] $ctext tag conf hunksep -fore [lindex $diffcolors 2]
$ctext tag conf d0 -fore [lindex $diffcolors 0] $ctext tag conf d0 -fore [lindex $diffcolors 0]
$ctext tag conf d1 -fore [lindex $diffcolors 1] $ctext tag conf d1 -fore [lindex $diffcolors 1]
@ -882,8 +882,8 @@ proc makewindow {} {
$ctext tag conf m15 -fore "#ff70b0" $ctext tag conf m15 -fore "#ff70b0"
$ctext tag conf mmax -fore darkgrey $ctext tag conf mmax -fore darkgrey
set mergemax 16 set mergemax 16
$ctext tag conf mresult -font [concat $textfont bold] $ctext tag conf mresult -font textfontbold
$ctext tag conf msep -font [concat $textfont bold] $ctext tag conf msep -font textfontbold
$ctext tag conf found -back yellow $ctext tag conf found -back yellow
.pwbottom add .bleft .pwbottom add .bleft
@ -894,18 +894,18 @@ proc makewindow {} {
frame .bright.mode frame .bright.mode
radiobutton .bright.mode.patch -text "Patch" \ radiobutton .bright.mode.patch -text "Patch" \
-command reselectline -variable cmitmode -value "patch" -command reselectline -variable cmitmode -value "patch"
.bright.mode.patch configure -font $uifont .bright.mode.patch configure -font uifont
radiobutton .bright.mode.tree -text "Tree" \ radiobutton .bright.mode.tree -text "Tree" \
-command reselectline -variable cmitmode -value "tree" -command reselectline -variable cmitmode -value "tree"
.bright.mode.tree configure -font $uifont .bright.mode.tree configure -font uifont
grid .bright.mode.patch .bright.mode.tree -sticky ew grid .bright.mode.patch .bright.mode.tree -sticky ew
pack .bright.mode -side top -fill x pack .bright.mode -side top -fill x
set cflist .bright.cfiles set cflist .bright.cfiles
set indent [font measure $mainfont "nn"] set indent [font measure mainfont "nn"]
text $cflist \ text $cflist \
-selectbackground $selectbgcolor \ -selectbackground $selectbgcolor \
-background $bgcolor -foreground $fgcolor \ -background $bgcolor -foreground $fgcolor \
-font $mainfont \ -font mainfont \
-tabs [list $indent [expr {2 * $indent}]] \ -tabs [list $indent [expr {2 * $indent}]] \
-yscrollcommand ".bright.sb set" \ -yscrollcommand ".bright.sb set" \
-cursor [. cget -cursor] \ -cursor [. cget -cursor] \
@ -917,7 +917,7 @@ proc makewindow {} {
pack $cflist -side left -fill both -expand 1 pack $cflist -side left -fill both -expand 1
$cflist tag configure highlight \ $cflist tag configure highlight \
-background [$cflist cget -selectbackground] -background [$cflist cget -selectbackground]
$cflist tag configure bold -font [concat $mainfont bold] $cflist tag configure bold -font mainfontbold
.pwbottom add .bright .pwbottom add .bright
.ctop add .pwbottom .ctop add .pwbottom
@ -1272,10 +1272,10 @@ Copyright
Use and redistribute under the terms of the GNU General Public License} \ Use and redistribute under the terms of the GNU General Public License} \
-justify center -aspect 400 -border 2 -bg white -relief groove -justify center -aspect 400 -border 2 -bg white -relief groove
pack $w.m -side top -fill x -padx 2 -pady 2 pack $w.m -side top -fill x -padx 2 -pady 2
$w.m configure -font $uifont $w.m configure -font uifont
button $w.ok -text Close -command "destroy $w" -default active button $w.ok -text Close -command "destroy $w" -default active
pack $w.ok -side bottom pack $w.ok -side bottom
$w.ok configure -font $uifont $w.ok configure -font uifont
bind $w <Visibility> "focus $w.ok" bind $w <Visibility> "focus $w.ok"
bind $w <Key-Escape> "destroy $w" bind $w <Key-Escape> "destroy $w"
bind $w <Key-Return> "destroy $w" bind $w <Key-Return> "destroy $w"
@ -1336,10 +1336,10 @@ f Scroll diff view to next file
" \ " \
-justify left -bg white -border 2 -relief groove -justify left -bg white -border 2 -relief groove
pack $w.m -side top -fill both -padx 2 -pady 2 pack $w.m -side top -fill both -padx 2 -pady 2
$w.m configure -font $uifont $w.m configure -font uifont
button $w.ok -text Close -command "destroy $w" -default active button $w.ok -text Close -command "destroy $w" -default active
pack $w.ok -side bottom pack $w.ok -side bottom
$w.ok configure -font $uifont $w.ok configure -font uifont
bind $w <Visibility> "focus $w.ok" bind $w <Visibility> "focus $w.ok"
bind $w <Key-Escape> "destroy $w" bind $w <Key-Escape> "destroy $w"
bind $w <Key-Return> "destroy $w" bind $w <Key-Return> "destroy $w"
@ -1871,22 +1871,22 @@ proc vieweditor {top n title} {
toplevel $top toplevel $top
wm title $top $title wm title $top $title
label $top.nl -text "Name" -font $uifont label $top.nl -text "Name" -font uifont
entry $top.name -width 20 -textvariable newviewname($n) -font $uifont entry $top.name -width 20 -textvariable newviewname($n) -font uifont
grid $top.nl $top.name -sticky w -pady 5 grid $top.nl $top.name -sticky w -pady 5
checkbutton $top.perm -text "Remember this view" -variable newviewperm($n) \ checkbutton $top.perm -text "Remember this view" -variable newviewperm($n) \
-font $uifont -font uifont
grid $top.perm - -pady 5 -sticky w grid $top.perm - -pady 5 -sticky w
message $top.al -aspect 1000 -font $uifont \ message $top.al -aspect 1000 -font uifont \
-text "Commits to include (arguments to git rev-list):" -text "Commits to include (arguments to git rev-list):"
grid $top.al - -sticky w -pady 5 grid $top.al - -sticky w -pady 5
entry $top.args -width 50 -textvariable newviewargs($n) \ entry $top.args -width 50 -textvariable newviewargs($n) \
-background white -font $uifont -background white -font uifont
grid $top.args - -sticky ew -padx 5 grid $top.args - -sticky ew -padx 5
message $top.l -aspect 1000 -font $uifont \ message $top.l -aspect 1000 -font uifont \
-text "Enter files and directories to include, one per line:" -text "Enter files and directories to include, one per line:"
grid $top.l - -sticky w grid $top.l - -sticky w
text $top.t -width 40 -height 10 -background white -font $uifont text $top.t -width 40 -height 10 -background white -font uifont
if {[info exists viewfiles($n)]} { if {[info exists viewfiles($n)]} {
foreach f $viewfiles($n) { foreach f $viewfiles($n) {
$top.t insert end $f $top.t insert end $f
@ -1898,9 +1898,9 @@ proc vieweditor {top n title} {
grid $top.t - -sticky ew -padx 5 grid $top.t - -sticky ew -padx 5
frame $top.buts frame $top.buts
button $top.buts.ok -text "OK" -command [list newviewok $top $n] \ button $top.buts.ok -text "OK" -command [list newviewok $top $n] \
-font $uifont -font uifont
button $top.buts.can -text "Cancel" -command [list destroy $top] \ button $top.buts.can -text "Cancel" -command [list destroy $top] \
-font $uifont -font uifont
grid $top.buts.ok $top.buts.can grid $top.buts.ok $top.buts.can
grid columnconfigure $top.buts 0 -weight 1 -uniform a grid columnconfigure $top.buts 0 -weight 1 -uniform a
grid columnconfigure $top.buts 1 -weight 1 -uniform a grid columnconfigure $top.buts 1 -weight 1 -uniform a
@ -2191,12 +2191,12 @@ proc bolden_name {row font} {
} }
proc unbolden {} { proc unbolden {} {
global mainfont boldrows global boldrows
set stillbold {} set stillbold {}
foreach row $boldrows { foreach row $boldrows {
if {![ishighlighted $row]} { if {![ishighlighted $row]} {
bolden $row $mainfont bolden $row mainfont
} else { } else {
lappend stillbold $row lappend stillbold $row
} }
@ -2235,9 +2235,8 @@ proc delvhighlight {} {
proc vhighlightmore {} { proc vhighlightmore {} {
global hlview vhl_done commitidx vhighlights global hlview vhl_done commitidx vhighlights
global displayorder vdisporder curview mainfont global displayorder vdisporder curview
set font [concat $mainfont bold]
set max $commitidx($hlview) set max $commitidx($hlview)
if {$hlview == $curview} { if {$hlview == $curview} {
set disp $displayorder set disp $displayorder
@ -2253,7 +2252,7 @@ proc vhighlightmore {} {
set row $commitrow($curview,$id) set row $commitrow($curview,$id)
if {$r0 <= $row && $row <= $r1} { if {$r0 <= $row && $row <= $r1} {
if {![highlighted $row]} { if {![highlighted $row]} {
bolden $row $font bolden $row mainfontbold
} }
set vhighlights($row) 1 set vhighlights($row) 1
} }
@ -2263,11 +2262,11 @@ proc vhighlightmore {} {
} }
proc askvhighlight {row id} { proc askvhighlight {row id} {
global hlview vhighlights commitrow iddrawn mainfont global hlview vhighlights commitrow iddrawn
if {[info exists commitrow($hlview,$id)]} { if {[info exists commitrow($hlview,$id)]} {
if {[info exists iddrawn($id)] && ![ishighlighted $row]} { if {[info exists iddrawn($id)] && ![ishighlighted $row]} {
bolden $row [concat $mainfont bold] bolden $row mainfontbold
} }
set vhighlights($row) 1 set vhighlights($row) 1
} else { } else {
@ -2277,7 +2276,7 @@ proc askvhighlight {row id} {
proc hfiles_change {} { proc hfiles_change {} {
global highlight_files filehighlight fhighlights fh_serial global highlight_files filehighlight fhighlights fh_serial
global mainfont highlight_paths gdttype global highlight_paths gdttype
if {[info exists filehighlight]} { if {[info exists filehighlight]} {
# delete previous highlights # delete previous highlights
@ -2335,13 +2334,13 @@ proc find_change {name ix op} {
} }
proc findcom_change args { proc findcom_change args {
global nhighlights mainfont boldnamerows global nhighlights boldnamerows
global findpattern findtype findstring gdttype global findpattern findtype findstring gdttype
stopfinding stopfinding
# delete previous highlights, if any # delete previous highlights, if any
foreach row $boldnamerows { foreach row $boldnamerows {
bolden_name $row $mainfont bolden_name $row mainfont
} }
set boldnamerows {} set boldnamerows {}
catch {unset nhighlights} catch {unset nhighlights}
@ -2414,7 +2413,7 @@ proc askfilehighlight {row id} {
} }
proc readfhighlight {} { proc readfhighlight {} {
global filehighlight fhighlights commitrow curview mainfont iddrawn global filehighlight fhighlights commitrow curview iddrawn
global fhl_list find_dirn global fhl_list find_dirn
if {![info exists filehighlight]} { if {![info exists filehighlight]} {
@ -2436,7 +2435,7 @@ proc readfhighlight {} {
if {![info exists commitrow($curview,$line)]} continue if {![info exists commitrow($curview,$line)]} continue
set row $commitrow($curview,$line) set row $commitrow($curview,$line)
if {[info exists iddrawn($line)] && ![ishighlighted $row]} { if {[info exists iddrawn($line)] && ![ishighlighted $row]} {
bolden $row [concat $mainfont bold] bolden $row mainfontbold
} }
set fhighlights($row) 1 set fhighlights($row) 1
} }
@ -2470,7 +2469,7 @@ proc doesmatch {f} {
} }
proc askfindhighlight {row id} { proc askfindhighlight {row id} {
global nhighlights commitinfo iddrawn mainfont global nhighlights commitinfo iddrawn
global findloc global findloc
global markingmatches global markingmatches
@ -2491,11 +2490,10 @@ proc askfindhighlight {row id} {
} }
} }
if {$isbold && [info exists iddrawn($id)]} { if {$isbold && [info exists iddrawn($id)]} {
set f [concat $mainfont bold]
if {![ishighlighted $row]} { if {![ishighlighted $row]} {
bolden $row $f bolden $row mainfontbold
if {$isbold > 1} { if {$isbold > 1} {
bolden_name $row $f bolden_name $row mainfontbold
} }
} }
if {$markingmatches} { if {$markingmatches} {
@ -2624,7 +2622,7 @@ proc is_ancestor {a} {
} }
proc askrelhighlight {row id} { proc askrelhighlight {row id} {
global descendent highlight_related iddrawn mainfont rhighlights global descendent highlight_related iddrawn rhighlights
global selectedline ancestor global selectedline ancestor
if {![info exists selectedline]} return if {![info exists selectedline]} return
@ -2648,7 +2646,7 @@ proc askrelhighlight {row id} {
} }
if {[info exists iddrawn($id)]} { if {[info exists iddrawn($id)]} {
if {$isbold && ![ishighlighted $row]} { if {$isbold && ![ishighlighted $row]} {
bolden $row [concat $mainfont bold] bolden $row mainfontbold
} }
} }
set rhighlights($row) $isbold set rhighlights($row) $isbold
@ -3624,7 +3622,7 @@ proc drawcmittext {id row col} {
global commitlisted commitinfo rowidlist parentlist global commitlisted commitinfo rowidlist parentlist
global rowtextx idpos idtags idheads idotherrefs global rowtextx idpos idtags idheads idotherrefs
global linehtag linentag linedtag selectedline global linehtag linentag linedtag selectedline
global mainfont canvxmax boldrows boldnamerows fgcolor nullid nullid2 global canvxmax boldrows boldnamerows fgcolor nullid nullid2
# listed is 0 for boundary, 1 for normal, 2 for left, 3 for right # listed is 0 for boundary, 1 for normal, 2 for left, 3 for right
set listed [lindex $commitlisted $row] set listed [lindex $commitlisted $row]
@ -3681,15 +3679,15 @@ proc drawcmittext {id row col} {
set name [lindex $commitinfo($id) 1] set name [lindex $commitinfo($id) 1]
set date [lindex $commitinfo($id) 2] set date [lindex $commitinfo($id) 2]
set date [formatdate $date] set date [formatdate $date]
set font $mainfont set font mainfont
set nfont $mainfont set nfont mainfont
set isbold [ishighlighted $row] set isbold [ishighlighted $row]
if {$isbold > 0} { if {$isbold > 0} {
lappend boldrows $row lappend boldrows $row
lappend font bold set font mainfontbold
if {$isbold > 1} { if {$isbold > 1} {
lappend boldnamerows $row lappend boldnamerows $row
lappend nfont bold set nfont mainfontbold
} }
} }
set linehtag($row) [$canv create text $xt $y -anchor w -fill $fgcolor \ set linehtag($row) [$canv create text $xt $y -anchor w -fill $fgcolor \
@ -3698,11 +3696,11 @@ proc drawcmittext {id row col} {
set linentag($row) [$canv2 create text 3 $y -anchor w -fill $fgcolor \ set linentag($row) [$canv2 create text 3 $y -anchor w -fill $fgcolor \
-text $name -font $nfont -tags text] -text $name -font $nfont -tags text]
set linedtag($row) [$canv3 create text 3 $y -anchor w -fill $fgcolor \ set linedtag($row) [$canv3 create text 3 $y -anchor w -fill $fgcolor \
-text $date -font $mainfont -tags text] -text $date -font mainfont -tags text]
if {[info exists selectedline] && $selectedline == $row} { if {[info exists selectedline] && $selectedline == $row} {
make_secsel $row make_secsel $row
} }
set xr [expr {$xt + [font measure $mainfont $headline]}] set xr [expr {$xt + [font measure $font $headline]}]
if {$xr > $canvxmax} { if {$xr > $canvxmax} {
set canvxmax $xr set canvxmax $xr
setcanvscroll setcanvscroll
@ -3985,7 +3983,7 @@ proc bindline {t id} {
proc drawtags {id x xt y1} { proc drawtags {id x xt y1} {
global idtags idheads idotherrefs mainhead global idtags idheads idotherrefs mainhead
global linespc lthickness global linespc lthickness
global canv mainfont commitrow rowtextx curview fgcolor bgcolor global canv commitrow rowtextx curview fgcolor bgcolor
set marks {} set marks {}
set ntags 0 set ntags 0
@ -4014,9 +4012,9 @@ proc drawtags {id x xt y1} {
foreach tag $marks { foreach tag $marks {
incr i incr i
if {$i >= $ntags && $i < $ntags + $nheads && $tag eq $mainhead} { if {$i >= $ntags && $i < $ntags + $nheads && $tag eq $mainhead} {
set wid [font measure [concat $mainfont bold] $tag] set wid [font measure mainfontbold $tag]
} else { } else {
set wid [font measure $mainfont $tag] set wid [font measure mainfont $tag]
} }
lappend xvals $xt lappend xvals $xt
lappend wvals $wid lappend wvals $wid
@ -4028,7 +4026,7 @@ proc drawtags {id x xt y1} {
foreach tag $marks x $xvals wid $wvals { foreach tag $marks x $xvals wid $wvals {
set xl [expr {$x + $delta}] set xl [expr {$x + $delta}]
set xr [expr {$x + $delta + $wid + $lthickness}] set xr [expr {$x + $delta + $wid + $lthickness}]
set font $mainfont set font mainfont
if {[incr ntags -1] >= 0} { if {[incr ntags -1] >= 0} {
# draw a tag # draw a tag
set t [$canv create polygon $x [expr {$yt + $delta}] $xl $yt \ set t [$canv create polygon $x [expr {$yt + $delta}] $xl $yt \
@ -4041,7 +4039,7 @@ proc drawtags {id x xt y1} {
if {[incr nheads -1] >= 0} { if {[incr nheads -1] >= 0} {
set col green set col green
if {$tag eq $mainhead} { if {$tag eq $mainhead} {
lappend font bold set font mainfontbold
} }
} else { } else {
set col "#ddddff" set col "#ddddff"
@ -4050,7 +4048,7 @@ proc drawtags {id x xt y1} {
$canv create polygon $x $yt $xr $yt $xr $yb $x $yb \ $canv create polygon $x $yt $xr $yt $xr $yb $x $yb \
-width 1 -outline black -fill $col -tags tag.$id -width 1 -outline black -fill $col -tags tag.$id
if {[regexp {^(remotes/.*/|remotes/)} $tag match remoteprefix]} { if {[regexp {^(remotes/.*/|remotes/)} $tag match remoteprefix]} {
set rwid [font measure $mainfont $remoteprefix] set rwid [font measure mainfont $remoteprefix]
set xi [expr {$x + 1}] set xi [expr {$x + 1}]
set yti [expr {$yt + 1}] set yti [expr {$yt + 1}]
set xri [expr {$x + $rwid}] set xri [expr {$x + $rwid}]
@ -4082,10 +4080,10 @@ proc xcoord {i level ln} {
} }
proc show_status {msg} { proc show_status {msg} {
global canv mainfont fgcolor global canv fgcolor
clear_display clear_display
$canv create text 3 3 -anchor nw -text $msg -font $mainfont \ $canv create text 3 3 -anchor nw -text $msg -font mainfont \
-tags text -fill $fgcolor -tags text -fill $fgcolor
} }
@ -5522,12 +5520,12 @@ proc clear_ctext {{first 1.0}} {
} }
proc settabs {{firstab {}}} { proc settabs {{firstab {}}} {
global firsttabstop tabstop textfont ctext have_tk85 global firsttabstop tabstop ctext have_tk85
if {$firstab ne {} && $have_tk85} { if {$firstab ne {} && $have_tk85} {
set firsttabstop $firstab set firsttabstop $firstab
} }
set w [font measure $textfont "0"] set w [font measure textfont "0"]
if {$firsttabstop != 0} { if {$firsttabstop != 0} {
$ctext conf -tabs [list [expr {($firsttabstop + $tabstop) * $w}] \ $ctext conf -tabs [list [expr {($firsttabstop + $tabstop) * $w}] \
[expr {($firsttabstop + 2 * $tabstop) * $w}]] [expr {($firsttabstop + 2 * $tabstop) * $w}]]
@ -5658,11 +5656,11 @@ proc scrolltext {f0 f1} {
} }
proc setcoords {} { proc setcoords {} {
global linespc charspc canvx0 canvy0 mainfont global linespc charspc canvx0 canvy0
global xspc1 xspc2 lthickness global xspc1 xspc2 lthickness
set linespc [font metrics $mainfont -linespace] set linespc [font metrics mainfont -linespace]
set charspc [font measure $mainfont "m"] set charspc [font measure mainfont "m"]
set canvy0 [expr {int(3 + 0.5 * $linespc)}] set canvy0 [expr {int(3 + 0.5 * $linespc)}]
set canvx0 [expr {int(3 + 0.5 * $linespc)}] set canvx0 [expr {int(3 + 0.5 * $linespc)}]
set lthickness [expr {int($linespc / 9) + 1}] set lthickness [expr {int($linespc / 9) + 1}]
@ -5687,25 +5685,45 @@ proc redisplay {} {
} }
} }
proc fontdescr {f} {
set d [list [font actual $f -family] [font actual $f -size]]
if {[font actual $f -weight] eq "bold"} {
lappend d "bold"
}
if {[font actual $f -slant] eq "italic"} {
lappend d "italic"
}
if {[font actual $f -underline]} {
lappend d "underline"
}
if {[font actual $f -overstrike]} {
lappend d "overstrike"
}
return $d
}
proc incrfont {inc} { proc incrfont {inc} {
global mainfont textfont ctext canv phase cflist showrefstop global mainfont textfont ctext canv phase cflist showrefstop
global stopped entries global stopped entries
unmarkmatches unmarkmatches
set mainfont [lreplace $mainfont 1 1 [expr {[lindex $mainfont 1] + $inc}]] set s [font actual mainfont -size]
set textfont [lreplace $textfont 1 1 [expr {[lindex $textfont 1] + $inc}]] incr s $inc
if {$s < 1} {
set s 1
}
font config mainfont -size $s
font config mainfontbold -size $s
set mainfont [fontdescr mainfont]
set s [font actual textfont -size]
incr s $inc
if {$s < 1} {
set s 1
}
font config textfont -size $s
font config textfontbold -size $s
set textfont [fontdescr textfont]
setcoords setcoords
settabs settabs
$cflist conf -font $textfont
$ctext tag conf filesep -font [concat $textfont bold]
foreach e $entries {
$e conf -font $mainfont
}
if {$phase eq "getcommits"} {
$canv itemconf textitems -font $mainfont
}
if {[info exists showrefstop] && [winfo exists $showrefstop]} {
$showrefstop.list conf -font $mainfont
}
redisplay redisplay
} }
@ -5816,7 +5834,7 @@ proc lineleave {id} {
proc linehover {} { proc linehover {} {
global hoverx hovery hoverid hovertimer global hoverx hovery hoverid hovertimer
global canv linespc lthickness global canv linespc lthickness
global commitinfo mainfont global commitinfo
set text [lindex $commitinfo($hoverid) 0] set text [lindex $commitinfo($hoverid) 0]
set ymax [lindex [$canv cget -scrollregion] 3] set ymax [lindex [$canv cget -scrollregion] 3]
@ -5826,13 +5844,13 @@ proc linehover {} {
set y [expr {$hovery + $yfrac * $ymax - $linespc / 2}] set y [expr {$hovery + $yfrac * $ymax - $linespc / 2}]
set x0 [expr {$x - 2 * $lthickness}] set x0 [expr {$x - 2 * $lthickness}]
set y0 [expr {$y - 2 * $lthickness}] set y0 [expr {$y - 2 * $lthickness}]
set x1 [expr {$x + [font measure $mainfont $text] + 2 * $lthickness}] set x1 [expr {$x + [font measure mainfont $text] + 2 * $lthickness}]
set y1 [expr {$y + $linespc + 2 * $lthickness}] set y1 [expr {$y + $linespc + 2 * $lthickness}]
set t [$canv create rectangle $x0 $y0 $x1 $y1 \ set t [$canv create rectangle $x0 $y0 $x1 $y1 \
-fill \#ffff80 -outline black -width 1 -tags hover] -fill \#ffff80 -outline black -width 1 -tags hover]
$canv raise $t $canv raise $t
set t [$canv create text $x $y -anchor nw -text $text -tags hover \ set t [$canv create text $x $y -anchor nw -text $text -tags hover \
-font $mainfont] -font mainfont]
$canv raise $t $canv raise $t
} }
@ -6168,7 +6186,7 @@ proc domktag {} {
proc redrawtags {id} { proc redrawtags {id} {
global canv linehtag commitrow idpos selectedline curview global canv linehtag commitrow idpos selectedline curview
global mainfont canvxmax iddrawn global canvxmax iddrawn
if {![info exists commitrow($curview,$id)]} return if {![info exists commitrow($curview,$id)]} return
if {![info exists iddrawn($id)]} return if {![info exists iddrawn($id)]} return
@ -6177,7 +6195,7 @@ proc redrawtags {id} {
set xt [eval drawtags $id $idpos($id)] set xt [eval drawtags $id $idpos($id)]
$canv coords $linehtag($commitrow($curview,$id)) $xt [lindex $idpos($id) 2] $canv coords $linehtag($commitrow($curview,$id)) $xt [lindex $idpos($id) 2]
set text [$canv itemcget $linehtag($commitrow($curview,$id)) -text] set text [$canv itemcget $linehtag($commitrow($curview,$id)) -text]
set xr [expr {$xt + [font measure $mainfont $text]}] set xr [expr {$xt + [font measure mainfont $text]}]
if {$xr > $canvxmax} { if {$xr > $canvxmax} {
set canvxmax $xr set canvxmax $xr
setcanvscroll setcanvscroll
@ -6509,8 +6527,8 @@ proc rmbranch {} {
# Display a list of tags and heads # Display a list of tags and heads
proc showrefs {} { proc showrefs {} {
global showrefstop bgcolor fgcolor selectbgcolor mainfont global showrefstop bgcolor fgcolor selectbgcolor
global bglist fglist uifont reflistfilter reflist maincursor global bglist fglist reflistfilter reflist maincursor
set top .showrefs set top .showrefs
set showrefstop $top set showrefstop $top
@ -6522,7 +6540,7 @@ proc showrefs {} {
toplevel $top toplevel $top
wm title $top "Tags and heads: [file tail [pwd]]" wm title $top "Tags and heads: [file tail [pwd]]"
text $top.list -background $bgcolor -foreground $fgcolor \ text $top.list -background $bgcolor -foreground $fgcolor \
-selectbackground $selectbgcolor -font $mainfont \ -selectbackground $selectbgcolor -font mainfont \
-xscrollcommand "$top.xsb set" -yscrollcommand "$top.ysb set" \ -xscrollcommand "$top.xsb set" -yscrollcommand "$top.ysb set" \
-width 30 -height 20 -cursor $maincursor \ -width 30 -height 20 -cursor $maincursor \
-spacing1 1 -spacing3 1 -state disabled -spacing1 1 -spacing3 1 -state disabled
@ -6534,15 +6552,15 @@ proc showrefs {} {
grid $top.list $top.ysb -sticky nsew grid $top.list $top.ysb -sticky nsew
grid $top.xsb x -sticky ew grid $top.xsb x -sticky ew
frame $top.f frame $top.f
label $top.f.l -text "Filter: " -font $uifont label $top.f.l -text "Filter: " -font uifont
entry $top.f.e -width 20 -textvariable reflistfilter -font $uifont entry $top.f.e -width 20 -textvariable reflistfilter -font uifont
set reflistfilter "*" set reflistfilter "*"
trace add variable reflistfilter write reflistfilter_change trace add variable reflistfilter write reflistfilter_change
pack $top.f.e -side right -fill x -expand 1 pack $top.f.e -side right -fill x -expand 1
pack $top.f.l -side left pack $top.f.l -side left
grid $top.f - -sticky ew -pady 2 grid $top.f - -sticky ew -pady 2
button $top.close -command [list destroy $top] -text "Close" \ button $top.close -command [list destroy $top] -text "Close" \
-font $uifont -font uifont
grid $top.close - grid $top.close -
grid columnconfigure $top 0 -weight 1 grid columnconfigure $top 0 -weight 1
grid rowconfigure $top 0 -weight 1 grid rowconfigure $top 0 -weight 1
@ -7845,7 +7863,7 @@ proc doprefs {} {
toplevel $top toplevel $top
wm title $top "Gitk preferences" wm title $top "Gitk preferences"
label $top.ldisp -text "Commit list display options" label $top.ldisp -text "Commit list display options"
$top.ldisp configure -font $uifont $top.ldisp configure -font uifont
grid $top.ldisp - -sticky w -pady 10 grid $top.ldisp - -sticky w -pady 10
label $top.spacer -text " " label $top.spacer -text " "
label $top.maxwidthl -text "Maximum graph width (lines)" \ label $top.maxwidthl -text "Maximum graph width (lines)" \
@ -7863,7 +7881,7 @@ proc doprefs {} {
grid x $top.showlocal -sticky w grid x $top.showlocal -sticky w
label $top.ddisp -text "Diff display options" label $top.ddisp -text "Diff display options"
$top.ddisp configure -font $uifont $top.ddisp configure -font uifont
grid $top.ddisp - -sticky w -pady 10 grid $top.ddisp - -sticky w -pady 10
label $top.diffoptl -text "Options for diff program" \ label $top.diffoptl -text "Options for diff program" \
-font optionfont -font optionfont
@ -7879,7 +7897,7 @@ proc doprefs {} {
grid x $top.tabstopl $top.tabstop -sticky w grid x $top.tabstopl $top.tabstop -sticky w
label $top.cdisp -text "Colors: press to choose" label $top.cdisp -text "Colors: press to choose"
$top.cdisp configure -font $uifont $top.cdisp configure -font uifont
grid $top.cdisp - -sticky w -pady 10 grid $top.cdisp - -sticky w -pady 10
label $top.bg -padx 40 -relief sunk -background $bgcolor label $top.bg -padx 40 -relief sunk -background $bgcolor
button $top.bgbut -text "Background" -font optionfont \ button $top.bgbut -text "Background" -font optionfont \
@ -7912,9 +7930,9 @@ proc doprefs {} {
frame $top.buts frame $top.buts
button $top.buts.ok -text "OK" -command prefsok -default active button $top.buts.ok -text "OK" -command prefsok -default active
$top.buts.ok configure -font $uifont $top.buts.ok configure -font uifont
button $top.buts.can -text "Cancel" -command prefscan -default normal button $top.buts.can -text "Cancel" -command prefscan -default normal
$top.buts.can configure -font $uifont $top.buts.can configure -font uifont
grid $top.buts.ok $top.buts.can grid $top.buts.ok $top.buts.can
grid columnconfigure $top.buts 0 -weight 1 -uniform a grid columnconfigure $top.buts 0 -weight 1 -uniform a
grid columnconfigure $top.buts 1 -weight 1 -uniform a grid columnconfigure $top.buts 1 -weight 1 -uniform a
@ -8322,6 +8340,15 @@ set selectbgcolor gray85
catch {source ~/.gitk} catch {source ~/.gitk}
font create optionfont -family sans-serif -size -12 font create optionfont -family sans-serif -size -12
font create mainfont
catch {eval font config mainfont [font actual $mainfont]}
eval font create mainfontbold [font actual mainfont] -weight bold
font create textfont
catch {eval font config textfont [font actual $textfont]}
eval font create textfontbold [font actual textfont]
font config textfontbold -weight bold
font create uifont
catch {eval font config uifont [font actual $uifont]}
# check that we can find a .git directory somewhere... # check that we can find a .git directory somewhere...
if {[catch {set gitdir [gitdir]}]} { if {[catch {set gitdir [gitdir]}]} {