gitk: Match ttk fonts to gitk fonts
[gitweb.git] / gitk
diff --git a/gitk b/gitk
index dc1af41bb7b550cd2ae5d8c5d158b9426349e0d8..e04264bd86c76b4f4a932225d46c8c5936d5712d 100755 (executable)
--- a/gitk
+++ b/gitk
@@ -1442,7 +1442,7 @@ proc getcommitlines {fd inst view updating}  {
            if {[string range $err 0 4] == "usage"} {
                set err "Gitk: error reading commits$fv:\
                        bad arguments to git log."
-               if {$viewname($view) eq "Command line"} {
+               if {$viewname($view) eq [mc "Command line"]} {
                    append err \
                        "  (Note: arguments to gitk are passed to git log\
                         to allow selection of commits to be displayed.)"
@@ -1943,6 +1943,8 @@ proc confirm_popup {msg {owner .}} {
 }
 
 proc setoptions {} {
+    global use_ttk
+
     if {[tk windowingsystem] ne "win32"} {
         option add *Panedwindow.showHandle 1 startupFile
         option add *Panedwindow.sashRelief raised startupFile
@@ -1965,6 +1967,18 @@ proc setoptions {} {
     option add *Listbox.font mainfont startupFile
 }
 
+proc setttkstyle {} {
+    eval font configure TkDefaultFont [fontflags mainfont]
+    eval font configure TkTextFont [fontflags textfont]
+    eval font configure TkHeadingFont [fontflags mainfont]
+    eval font configure TkCaptionFont [fontflags mainfont] -weight bold
+    eval font configure TkTooltipFont [fontflags uifont]
+    eval font configure TkFixedFont   [fontflags textfont]
+    eval font configure TkIconFont    [fontflags uifont]
+    eval font configure TkMenuFont    [fontflags uifont]
+    eval font configure TkSmallCaptionFont [fontflags uifont]
+}
+
 # Make a menu and submenus.
 # m is the window name for the menu, items is the list of menu items to add.
 # Each item is a list {mc label type description options...}
@@ -2065,33 +2079,33 @@ proc makewindow {} {
     # The "mc" arguments here are purely so that xgettext
     # sees the following string as needing to be translated
     set file {
-       mc "File" cascade {
-           {mc "Update" command updatecommits -accelerator F5}
-           {mc "Reload" command reloadcommits -accelerator Shift-F5}
-           {mc "Reread references" command rereadrefs}
-           {mc "List references" command showrefs -accelerator F2}
+       mc "&File" cascade {
+           {mc "&Update" command updatecommits -accelerator F5}
+           {mc "&Reload" command reloadcommits -accelerator Shift-F5}
+           {mc "Reread re&ferences" command rereadrefs}
+           {mc "&List references" command showrefs -accelerator F2}
            {xx "" separator}
-           {mc "Start git gui" command {exec git gui &}}
+           {mc "Start git &gui" command {exec git gui &}}
            {xx "" separator}
-           {mc "Quit" command doquit -accelerator Meta1-Q}
+           {mc "&Quit" command doquit -accelerator Meta1-Q}
        }}
     set edit {
-       mc "Edit" cascade {
-           {mc "Preferences" command doprefs}
+       mc "&Edit" cascade {
+           {mc "&Preferences" command doprefs}
        }}
     set view {
-       mc "View" cascade {
-           {mc "New view..." command {newview 0} -accelerator Shift-F4}
-           {mc "Edit view..." command editview -state disabled -accelerator F4}
-           {mc "Delete view" command delview -state disabled}
+       mc "&View" cascade {
+           {mc "&New view..." command {newview 0} -accelerator Shift-F4}
+           {mc "&Edit view..." command editview -state disabled -accelerator F4}
+           {mc "&Delete view" command delview -state disabled}
            {xx "" separator}
-           {mc "All files" radiobutton {selectedview 0} -command {showview 0}}
+           {mc "&All files" radiobutton {selectedview 0} -command {showview 0}}
        }}
     if {[tk windowingsystem] ne "aqua"} {
        set help {
-       mc "Help" cascade {
-           {mc "About gitk" command about}
-           {mc "Key bindings" command keys}
+       mc "&Help" cascade {
+           {mc "&About gitk" command about}
+           {mc "&Key bindings" command keys}
        }}
        set bar [list $file $edit $view $help]
     } else {
@@ -2099,13 +2113,13 @@ proc makewindow {} {
        proc ::tk::mac::Quit {} {doquit}
        lset file end [lreplace [lindex $file end] end-1 end]
        set apple {
-       xx "Apple" cascade {
-           {mc "About gitk" command about}
+       xx "&Apple" cascade {
+           {mc "&About gitk" command about}
            {xx "" separator}
        }}
        set help {
-       mc "Help" cascade {
-           {mc "Key bindings" command keys}
+       mc "&Help" cascade {
+           {mc "&Key bindings" command keys}
        }}
        set bar [list $apple $file $view $help]
     }
@@ -2568,6 +2582,7 @@ proc makewindow {} {
     bindkey b prevfile
     bindkey d "$ctext yview scroll 18 units"
     bindkey u "$ctext yview scroll -18 units"
+    bindkey g {$sha1entry delete 0 end; focus $sha1entry}
     bindkey / {focus $fstring}
     bindkey <Key-KP_Divide> {focus $fstring}
     bindkey <Key-Return> {dofind 1 1}
@@ -2617,6 +2632,7 @@ proc makewindow {} {
        {mc "Diff selected -> this" command {diffvssel 1}}
        {mc "Make patch" command mkpatch}
        {mc "Create tag" command mktag}
+       {mc "Copy commit summary" command copysummary}
        {mc "Write commit to file" command writecommit}
        {mc "Create new branch" command mkbranch}
        {mc "Cherry-pick this commit" command cherrypick}
@@ -3071,6 +3087,7 @@ proc keys {} {
 [mc "<%s-F>            Find" $M1T]
 [mc "<%s-G>            Move to next find hit" $M1T]
 [mc "<Return>  Move to next find hit"]
+[mc "g         Go to commit"]
 [mc "/         Focus the search box"]
 [mc "?         Move to previous find hit"]
 [mc "f         Scroll diff view to next file"]
@@ -4036,6 +4053,19 @@ proc shellsplit {str} {
     return $l
 }
 
+proc set_window_title {} {
+    global appname curview viewname vrevs
+    set rev [mc "All files"]
+    if {$curview ne 0} {
+       if {$viewname($curview) eq [mc "Command line"]} {
+           set rev [string map {"--gitk-symmetric-diff-marker" "--merge"} $vrevs($curview)]
+       } else {
+           set rev $viewname($curview)
+       }
+    }
+    wm title . "[reponame]: $rev - $appname"
+}
+
 # Code to implement multiple views
 
 proc newview {ishighlight} {
@@ -4452,8 +4482,8 @@ proc showview {n} {
 
     set curview $n
     set selectedview $n
-    .bar.view entryconf [mca "Edit view..."] -state [expr {$n == 0? "disabled": "normal"}]
-    .bar.view entryconf [mca "Delete view"] -state [expr {$n == 0? "disabled": "normal"}]
+    .bar.view entryconf [mca "&Edit view..."] -state [expr {$n == 0? "disabled": "normal"}]
+    .bar.view entryconf [mca "&Delete view"] -state [expr {$n == 0? "disabled": "normal"}]
 
     run refill_reflist
     if {![info exists viewcomplete($n)]} {
@@ -4512,6 +4542,7 @@ proc showview {n} {
     } elseif {$numcommits == 0} {
        show_status [mc "No commits selected"]
     }
+    set_window_title
 }
 
 # Stuff relating to the highlighting facility
@@ -6652,6 +6683,7 @@ proc show_status {msg} {
     global canv fgcolor
 
     clear_display
+    set_window_title
     $canv create text 3 3 -anchor nw -text $msg -font mainfont \
        -tags text -fill $fgcolor
 }
@@ -8878,13 +8910,13 @@ proc rowmenu {x y id} {
     if {$id ne $nullid && $id ne $nullid2} {
        set menu $rowctxmenu
        if {$mainhead ne {}} {
-           $menu entryconfigure 7 -label [mc "Reset %s branch to here" $mainhead] -state normal
+           $menu entryconfigure 8 -label [mc "Reset %s branch to here" $mainhead] -state normal
        } else {
-           $menu entryconfigure 7 -label [mc "Detached head: can't reset" $mainhead] -state disabled
+           $menu entryconfigure 8 -label [mc "Detached head: can't reset" $mainhead] -state disabled
        }
-       $menu entryconfigure 9 -state $mstate
        $menu entryconfigure 10 -state $mstate
        $menu entryconfigure 11 -state $mstate
+       $menu entryconfigure 12 -state $mstate
     } else {
        set menu $fakerowmenu
     }
@@ -9343,6 +9375,20 @@ proc mktaggo {} {
     mktagcan
 }
 
+proc copysummary {} {
+    global rowmenuid autosellen
+
+    set format "%h (\"%s\", %ad)"
+    set cmd [list git show -s --pretty=format:$format --date=short]
+    if {$autosellen < 40} {
+        lappend cmd --abbrev=$autosellen
+    }
+    set summary [eval exec $cmd $rowmenuid]
+
+    clipboard clear
+    clipboard append $summary
+}
+
 proc writecommit {} {
     global rowmenuid wrcomtop commitinfo wrcomcmd NS
 
@@ -12324,6 +12370,10 @@ if {![info exists have_ttk]} {
 set use_ttk [expr {$have_ttk && $want_ttk}]
 set NS [expr {$use_ttk ? "ttk" : ""}]
 
+if {$use_ttk} {
+    setttkstyle
+}
+
 regexp {^git version ([\d.]*\d)} [exec git version] _ git_version
 
 set show_notes {}
@@ -12403,7 +12453,7 @@ catch {
 }
 # wait for the window to become visible
 tkwait visibility .
-wm title . "[reponame] - $appname"
+set_window_title
 update
 readrefs
 
@@ -12420,8 +12470,8 @@ if {$cmdline_files ne {} || $revtreeargs ne {} || $revtreeargscmd ne {}} {
     set viewchanged(1) 0
     set vdatemode(1) 0
     addviewmenu 1
-    .bar.view entryconf [mca "Edit view..."] -state normal
-    .bar.view entryconf [mca "Delete view"] -state normal
+    .bar.view entryconf [mca "&Edit view..."] -state normal
+    .bar.view entryconf [mca "&Delete view"] -state normal
 }
 
 if {[info exists permviews]} {