gitk: Add a 'rename' option to the branch context menu

Signed-off-by: Rogier Goossens <goossens.rogier@gmail.com> Signed-off-by: Paul Mackerras <paulus@ozlabs.org>

Rogier Goossens committed Mar 19, 2016 at 19:32 UTC 5a046c5267dd727acd64ed84cc902465c5aad5d9
1 file changed +85 -11
gitk
+85 -11
@@ -2664,6 +2664,7 @@ proc makewindow {} {
2664 set headctxmenu .headctxmenu
2665 makemenu $headctxmenu {
2666 {mc "Check out this branch" command cobranch}
2667 + {mc "Rename this branch" command mvbranch}
2668 {mc "Remove this branch" command rmbranch}
2669 {mc "Copy branch name" command {clipboard clear; clipboard append $headmenuhead}}
2670 }
@@ -9452,26 +9453,58 @@ proc wrcomcan {} {
9453 }
9454
9455 proc mkbranch {} {
9455 - global rowmenuid mkbrtop NS
9456 + global NS rowmenuid
9457 +
9458 + set top .branchdialog
9459 +
9460 + set val(name) ""
9461 + set val(id) $rowmenuid
9462 + set val(command) [list mkbrgo $top]
9463 +
9464 + set ui(title) [mc "Create branch"]
9465 + set ui(accept) [mc "Create"]
9466 +
9467 + branchdia $top val ui
9468 +}
9469 +
9470 +proc mvbranch {} {
9471 + global NS
9472 + global headmenuid headmenuhead
9473 +
9474 + set top .branchdialog
9475 +
9476 + set val(name) $headmenuhead
9477 + set val(id) $headmenuid
9478 + set val(command) [list mvbrgo $top $headmenuhead]
9479 +
9480 + set ui(title) [mc "Rename branch %s" $headmenuhead]
9481 + set ui(accept) [mc "Rename"]
9482 +
9483 + branchdia $top val ui
9484 +}
9485 +
9486 +proc branchdia {top valvar uivar} {
9487 + global NS
9488 + upvar $valvar val $uivar ui
9489
9457 - set top .makebranch
9490 catch {destroy $top}
9491 ttk_toplevel $top
9492 make_transient $top .
9461 - ${NS}::label $top.title -text [mc "Create new branch"]
9493 + ${NS}::label $top.title -text $ui(title)
9494 grid $top.title - -pady 10
9495 ${NS}::label $top.id -text [mc "ID:"]
9496 ${NS}::entry $top.sha1 -width 40
9465 - $top.sha1 insert 0 $rowmenuid
9497 + $top.sha1 insert 0 $val(id)
9498 $top.sha1 conf -state readonly
9499 grid $top.id $top.sha1 -sticky w
9500 ${NS}::label $top.nlab -text [mc "Name:"]
9501 ${NS}::entry $top.name -width 40
9502 + $top.name insert 0 $val(name)
9503 grid $top.nlab $top.name -sticky w
9504 ${NS}::frame $top.buts
9472 - ${NS}::button $top.buts.go -text [mc "Create"] -command [list mkbrgo $top]
9505 + ${NS}::button $top.buts.go -text $ui(accept) -command $val(command)
9506 ${NS}::button $top.buts.can -text [mc "Cancel"] -command "catch {destroy $top}"
9474 - bind $top <Key-Return> [list mkbrgo $top]
9507 + bind $top <Key-Return> $val(command)
9508 bind $top <Key-Escape> "catch {destroy $top}"
9509 grid $top.buts.go $top.buts.can
9510 grid columnconfigure $top.buts 0 -weight 1 -uniform a
@@ -9526,6 +9559,46 @@ proc mkbrgo {top} {
9559 }
9560 }
9561
9562 +proc mvbrgo {top prevname} {
9563 + global headids idheads mainhead mainheadid
9564 +
9565 + set name [$top.name get]
9566 + set id [$top.sha1 get]
9567 + set cmdargs {}
9568 + if {$name eq $prevname} {
9569 + catch {destroy $top}
9570 + return
9571 + }
9572 + if {$name eq {}} {
9573 + error_popup [mc "Please specify a new name for the branch"] $top
9574 + return
9575 + }
9576 + catch {destroy $top}
9577 + lappend cmdargs -m $prevname $name
9578 + nowbusy renamebranch
9579 + update
9580 + if {[catch {
9581 + eval exec git branch $cmdargs
9582 + } err]} {
9583 + notbusy renamebranch
9584 + error_popup $err
9585 + } else {
9586 + notbusy renamebranch
9587 + removehead $id $prevname
9588 + removedhead $id $prevname
9589 + set headids($name) $id
9590 + lappend idheads($id) $name
9591 + addedhead $id $name
9592 + if {$prevname eq $mainhead} {
9593 + set mainhead $name
9594 + set mainheadid $id
9595 + }
9596 + redrawtags $id
9597 + dispneartags 0
9598 + run refill_reflist
9599 + }
9600 +}
9601 +
9602 proc exec_citool {tool_args {baseid {}}} {
9603 global commitinfo env
9604
@@ -9756,15 +9829,16 @@ proc headmenu {x y id head} {
9829 stopfinding
9830 set headmenuid $id
9831 set headmenuhead $head
9759 - set state normal
9832 + array set state {0 normal 1 normal 2 normal}
9833 if {[string match "remotes/*" $head]} {
9761 - set state disabled
9834 + array set state {0 disabled 1 disabled 2 disabled}
9835 }
9836 if {$head eq $mainhead} {
9764 - set state disabled
9837 + array set state {0 disabled 2 disabled}
9838 + }
9839 + foreach i {0 1 2} {
9840 + $headctxmenu entryconfigure $i -state $state($i)
9841 }
9766 - $headctxmenu entryconfigure 0 -state $state
9767 - $headctxmenu entryconfigure 1 -state $state
9842 tk_popup $headctxmenu $x $y
9843 }
9844