[PATCH] gitk tag delete/rename support
Right clicking on a tag pops up a menu, which allows tag to be renamed or deleted. Signed-off-by: Leon KUKOVEC --- gitk-git/gitk | 154 + 1 file changed, 154 insertions(+) diff --git a/gitk-git/gitk b/gitk-git/gitk index d93bd99..38cc233 100755 --- a/gitk-git/gitk +++ b/gitk-git/gitk @@ -2032,6 +2032,7 @@ proc makewindow {} { global have_tk85 use_ttk NS global git_version global worddiff +global tagctxmenu # The "mc" arguments here are purely so that xgettext # sees the following string as needing to be translated @@ -2581,6 +2582,13 @@ proc makewindow {} { {mc "Run git gui blame on this line" command {external_blame_diff}} } $diff_menu configure -tearoff 0 + +set tagctxmenu .tagctxmenu +makemenu $tagctxmenu { + {mc "Rename this tag" command mvtag} + {mc "Delete this tag" command rmtag} +} +$tagctxmenu configure -tearoff 0 } # Windows sends all mouse wheel events to the current focused window, not @@ -6400,6 +6408,7 @@ proc drawtags {id x xt y1} { -font $font -tags [list tag.$id text]] if {$ntags >= 0} { $canv bind $t <1> [list showtag $tag_quoted 1] + $canv bind $t $ctxbut [list showtagmenu %X %Y $id $tag_quoted] } elseif {$nheads >= 0} { $canv bind $t $ctxbut [list headmenu %X %Y $id $tag_quoted] } @@ -8931,6 +8940,113 @@ proc domktag {} { return 1 } +proc mvtag {} { +global mvtagtop +global tagmenuid tagmenutag tagctxmenu maintag NS +global mvtagtag + +set mvtagtag $tagmenutag +set top .movetag +set mvtagtop $top +catch {destroy $top} +ttk_toplevel $top +make_transient $top . + +${NS}::label $top.msg -text [mc "Enter a new tag name:"] +${NS}::entry $top.tag -width 60 -textvariable mvtagtag + +grid $top.msg -sticky w -row 0 -column 0 +grid $top.tag -sticky w -row 0 -column 1 + +${NS}::frame $top.buts +${NS}::button $top.buts.gen -text [mc "Rename"] -command mvtaggo +${NS}::button $top.buts.can -text [mc "Cancel"] -command mvtagcan +bind $top mvtaggo +bind $top mvtagcan +grid $top.buts.gen $top.buts.can +grid columnconfigure $top.buts 0 -weight 1 -uniform a +grid columnconfigure $top.buts 1 -weight 1 -uniform a +grid $top.buts - -pady 10 -sticky ew +} + +proc domvtag {} { +global mvtagtop env tagids idtags tagmenutag tagmenuid mvtagtag + +set tag $mvtagtag +set id $tagmenuid + +# add tag +# XXX: reuse domktag including keeping comment from the original tag. +if {[catch { +exec git tag $tag $id +} err]} { +error_popup "[mc "Error renaming tag:"] $err" $mvtagtop +return 0 +} + +# delete old tag, content stored in $tagmenutag and $tagmenuid +dormtag + +set tagids($tag) $id +lappend idtags($id) $tag +redrawtags $id +addedtag $id +dispneartags 0 +run refill_reflist +return 1 +} + +proc rmtag {} { +global rmtagtop +global tagmenuid tagmenutag tagctxmenu maintag NS + +set top .maketag +set rmtagtop $top +catch {destroy $top} +ttk_toplevel $top +make_transient $top . +${NS}::label $top.title -text [mc "Delete tag"] +grid $top.title - -pady 10 + +${NS}::label $top.msg -text [mc "You are about to delete a tag"] +${NS}::label $top.tagname -foreground Red -text [mc "$tagmenutag"] +grid $top.msg -sticky w -row 0 -column 0 +grid $top.tagname -sticky w -row 0 -column 1 + +${NS}::frame $top.buts +${NS}::button $top.buts.gen -text [mc "Delete"] -command rmtaggo +${NS}::button $top.buts.can -text [mc "Cancel"] -command rmtagcan +bind $top rmtaggo +bind $top rmtagcan +grid $top.buts.gen $top.buts.can +grid columnconfigure $top.buts 0 -weight 1 -uniform a +grid columnconfigure $top.buts 1 -weight 1 -uniform a +grid $top.buts - -pady 10 -sticky ew +} + +proc dormtag {} { +global rmtagtop env tagids idtags tagmenutag tagmenuid + +set tag $tagmenutag +set id $tagmenuid + +if {[catch { +exec git tag -d $tag +} err]} { +error_popup "[mc "Error deleting tag:"] $err" $rmtagtop +return 0 +} + +unset tagids($tag) +set idx [lsearch $idtags($id) $tag] +set idtags($id) [lreplace $idtags($id) $idx $idx] + +redrawtags $id +dispneartags 0 +run refill_reflist +return 1 +} + proc redrawtags {id} { global canv linehtag idpos currentid curview cmitlisted markedid global canvxmax iddrawn circleitem mainheadid circlecolors @@ -8974,6 +9090,30 @@ proc mktaggo {} { mktagcan } +proc rmtagcan {} { +global rmtagtop + +catch {destroy $rmtagtop} +unset rmtagtop +} + +proc rmtaggo {} {
Re: [PATCH] gitk tag delete/rename support
Hi, On Sun, Nov 25, 2012 at 7:26 AM, Junio C Hamano wrote: > > Thanks, but I prefer not to take patches to gitk-git/ directly; > could you prepare a patch against Paul's tree at > > > git://ozlabs.org/~paulus/gitk > > and send it in that direction (paulus@) instead? No problem. Will do that. -- Best Regards, Leon -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] gitk tag delete/rename support
Right clicking on a tag pops up a menu, which allows tag to be renamed or deleted. Signed-off-by: Leon KUKOVEC --- gitk-git/gitk | 154 + 1 file changed, 154 insertions(+) diff --git a/gitk-git/gitk b/gitk-git/gitk index d93bd99..38cc233 100755 --- a/gitk-git/gitk +++ b/gitk-git/gitk @@ -2032,6 +2032,7 @@ proc makewindow {} { global have_tk85 use_ttk NS global git_version global worddiff +global tagctxmenu # The "mc" arguments here are purely so that xgettext # sees the following string as needing to be translated @@ -2581,6 +2582,13 @@ proc makewindow {} { {mc "Run git gui blame on this line" command {external_blame_diff}} } $diff_menu configure -tearoff 0 + +set tagctxmenu .tagctxmenu +makemenu $tagctxmenu { + {mc "Rename this tag" command mvtag} + {mc "Delete this tag" command rmtag} +} +$tagctxmenu configure -tearoff 0 } # Windows sends all mouse wheel events to the current focused window, not @@ -6400,6 +6408,7 @@ proc drawtags {id x xt y1} { -font $font -tags [list tag.$id text]] if {$ntags >= 0} { $canv bind $t <1> [list showtag $tag_quoted 1] + $canv bind $t $ctxbut [list showtagmenu %X %Y $id $tag_quoted] } elseif {$nheads >= 0} { $canv bind $t $ctxbut [list headmenu %X %Y $id $tag_quoted] } @@ -8931,6 +8940,113 @@ proc domktag {} { return 1 } +proc mvtag {} { +global mvtagtop +global tagmenuid tagmenutag tagctxmenu maintag NS +global mvtagtag + +set mvtagtag $tagmenutag +set top .movetag +set mvtagtop $top +catch {destroy $top} +ttk_toplevel $top +make_transient $top . + +${NS}::label $top.msg -text [mc "Enter a new tag name:"] +${NS}::entry $top.tag -width 60 -textvariable mvtagtag + +grid $top.msg -sticky w -row 0 -column 0 +grid $top.tag -sticky w -row 0 -column 1 + +${NS}::frame $top.buts +${NS}::button $top.buts.gen -text [mc "Rename"] -command mvtaggo +${NS}::button $top.buts.can -text [mc "Cancel"] -command mvtagcan +bind $top mvtaggo +bind $top mvtagcan +grid $top.buts.gen $top.buts.can +grid columnconfigure $top.buts 0 -weight 1 -uniform a +grid columnconfigure $top.buts 1 -weight 1 -uniform a +grid $top.buts - -pady 10 -sticky ew +} + +proc domvtag {} { +global mvtagtop env tagids idtags tagmenutag tagmenuid mvtagtag + +set tag $mvtagtag +set id $tagmenuid + +# add tag +# XXX: reuse domktag including keeping comment from the original tag. +if {[catch { +exec git tag $tag $id +} err]} { +error_popup "[mc "Error renaming tag:"] $err" $mvtagtop +return 0 +} + +# delete old tag, content stored in $tagmenutag and $tagmenuid +dormtag + +set tagids($tag) $id +lappend idtags($id) $tag +redrawtags $id +addedtag $id +dispneartags 0 +run refill_reflist +return 1 +} + +proc rmtag {} { +global rmtagtop +global tagmenuid tagmenutag tagctxmenu maintag NS + +set top .maketag +set rmtagtop $top +catch {destroy $top} +ttk_toplevel $top +make_transient $top . +${NS}::label $top.title -text [mc "Delete tag"] +grid $top.title - -pady 10 + +${NS}::label $top.msg -text [mc "You are about to delete a tag"] +${NS}::label $top.tagname -foreground Red -text [mc "$tagmenutag"] +grid $top.msg -sticky w -row 0 -column 0 +grid $top.tagname -sticky w -row 0 -column 1 + +${NS}::frame $top.buts +${NS}::button $top.buts.gen -text [mc "Delete"] -command rmtaggo +${NS}::button $top.buts.can -text [mc "Cancel"] -command rmtagcan +bind $top rmtaggo +bind $top rmtagcan +grid $top.buts.gen $top.buts.can +grid columnconfigure $top.buts 0 -weight 1 -uniform a +grid columnconfigure $top.buts 1 -weight 1 -uniform a +grid $top.buts - -pady 10 -sticky ew +} + +proc dormtag {} { +global rmtagtop env tagids idtags tagmenutag tagmenuid + +set tag $tagmenutag +set id $tagmenuid + +if {[catch { +exec git tag -d $tag +} err]} { +error_popup "[mc "Error deleting tag:"] $err" $rmtagtop +return 0 +} + +unset tagids($tag) +set idx [lsearch $idtags($id) $tag] +set idtags($id) [lreplace $idtags($id) $idx $idx] + +redrawtags $id +dispneartags 0 +run refill_reflist +return 1 +} + proc redrawtags {id} { global canv linehtag idpos currentid curview cmitlisted markedid global canvxmax iddrawn circleitem mainheadid circlecolors @@ -8974,6 +9090,30 @@ proc mktaggo {} { mktagcan } +proc rmtagcan {} { +global rmtagtop + +catch {destroy $rmtagtop} +unset rmtagtop +} + +proc rmtaggo {} {
[PATCH] gitk tag delete/rename support
--- gitk-git/gitk | 154 ++ 1 file changed, 154 insertions(+) diff --git a/gitk-git/gitk b/gitk-git/gitk index 17ba10a..12a7139 100755 --- a/gitk-git/gitk +++ b/gitk-git/gitk @@ -1981,6 +1981,7 @@ proc makewindow {} { global have_tk85 use_ttk NS global git_version global worddiff +global tagctxmenu # The "mc" arguments here are purely so that xgettext # sees the following string as needing to be translated @@ -2526,6 +2527,13 @@ proc makewindow {} { {mc "Run git gui blame on this line" command {external_blame_diff}} } $diff_menu configure -tearoff 0 + +set tagctxmenu .tagctxmenu +makemenu $tagctxmenu { + {mc "Rename this tag" command mvtag} + {mc "Delete this tag" command rmtag} +} +$tagctxmenu configure -tearoff 0 } # Windows sends all mouse wheel events to the current focused window, not @@ -6345,6 +6353,7 @@ proc drawtags {id x xt y1} { -font $font -tags [list tag.$id text]] if {$ntags >= 0} { $canv bind $t <1> [list showtag $tag_quoted 1] + $canv bind $t $ctxbut [list showtagmenu %X %Y $id $tag_quoted] } elseif {$nheads >= 0} { $canv bind $t $ctxbut [list headmenu %X %Y $id $tag_quoted] } @@ -8857,6 +8866,113 @@ proc domktag {} { return 1 } +proc mvtag {} { +global mvtagtop +global tagmenuid tagmenutag tagctxmenu maintag NS +global mvtagtag + +set mvtagtag $tagmenutag +set top .movetag +set mvtagtop $top +catch {destroy $top} +ttk_toplevel $top +make_transient $top . + +${NS}::label $top.msg -text [mc "Enter a new tag name:"] +${NS}::entry $top.tag -width 60 -textvariable mvtagtag + +grid $top.msg -sticky w -row 0 -column 0 +grid $top.tag -sticky w -row 0 -column 1 + +${NS}::frame $top.buts +${NS}::button $top.buts.gen -text [mc "Rename"] -command mvtaggo +${NS}::button $top.buts.can -text [mc "Cancel"] -command mvtagcan +bind $top mvtaggo +bind $top mvtagcan +grid $top.buts.gen $top.buts.can +grid columnconfigure $top.buts 0 -weight 1 -uniform a +grid columnconfigure $top.buts 1 -weight 1 -uniform a +grid $top.buts - -pady 10 -sticky ew +} + +proc domvtag {} { +global mvtagtop env tagids idtags tagmenutag tagmenuid mvtagtag + +set tag $mvtagtag +set id $tagmenuid + +# add tag +# XXX: reuse domktag including keeping comment from the original tag. +if {[catch { +exec git tag $tag $id +} err]} { +error_popup "[mc "Error renaming tag:"] $err" $mvtagtop +return 0 +} + +# delete old tag, content stored in $tagmenutag and $tagmenuid +dormtag + +set tagids($tag) $id +lappend idtags($id) $tag +redrawtags $id +addedtag $id +dispneartags 0 +run refill_reflist +return 1 +} + +proc rmtag {} { +global rmtagtop +global tagmenuid tagmenutag tagctxmenu maintag NS + +set top .maketag +set rmtagtop $top +catch {destroy $top} +ttk_toplevel $top +make_transient $top . +${NS}::label $top.title -text [mc "Delete tag"] +grid $top.title - -pady 10 + +${NS}::label $top.msg -text [mc "You are about to delete a tag"] +${NS}::label $top.tagname -foreground Red -text [mc "$tagmenutag"] +grid $top.msg -sticky w -row 0 -column 0 +grid $top.tagname -sticky w -row 0 -column 1 + +${NS}::frame $top.buts +${NS}::button $top.buts.gen -text [mc "Delete"] -command rmtaggo +${NS}::button $top.buts.can -text [mc "Cancel"] -command rmtagcan +bind $top rmtaggo +bind $top rmtagcan +grid $top.buts.gen $top.buts.can +grid columnconfigure $top.buts 0 -weight 1 -uniform a +grid columnconfigure $top.buts 1 -weight 1 -uniform a +grid $top.buts - -pady 10 -sticky ew +} + +proc dormtag {} { +global rmtagtop env tagids idtags tagmenutag tagmenuid + +set tag $tagmenutag +set id $tagmenuid + +if {[catch { +exec git tag -d $tag +} err]} { +error_popup "[mc "Error deleting tag:"] $err" $rmtagtop +return 0 +} + +unset tagids($tag) +set idx [lsearch $idtags($id) $tag] +set idtags($id) [lreplace $idtags($id) $idx $idx] + +redrawtags $id +dispneartags 0 +run refill_reflist +return 1 +} + proc redrawtags {id} { global canv linehtag idpos currentid curview cmitlisted markedid global canvxmax iddrawn circleitem mainheadid circlecolors @@ -8900,6 +9016,30 @@ proc mktaggo {} { mktagcan } +proc rmtagcan {} { +global rmtagtop + +catch {destroy $rmtagtop} +unset rmtagtop +} + +proc rmtaggo {} { +if {![dormtag]} return +rmtagcan +} + +proc mvtagcan {} { +global mvtagtop + +catch {destroy $mvtagtop} +unset mvtagtop +} + +proc mvtaggo {} { +if {![domvtag]} return +mvtagcan +} + proc writecommit {} { global rowmenuid wrcomtop commitinfo wr