Re: [PATCH] gitk tag delete/rename support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Leon KUKOVEC <leon.kukovec@xxxxxxxxx> writes:

> Right clicking on a tag pops up a menu, which allows
> tag to be renamed or deleted.
>
> Signed-off-by: Leon KUKOVEC <leon.kukovec@xxxxxxxxx>
> ---

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?

>  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 <Key-Return> mvtaggo
> +    bind $top <Key-Escape> 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 <Key-Return> rmtaggo
> +    bind $top <Key-Escape> 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 {} {
> +    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 wrcomcmd NS
>  
> @@ -9288,6 +9428,20 @@ proc headmenu {x y id head} {
>      tk_popup $headctxmenu $x $y
>  }
>  
> +# context menu for a tag
> +proc showtagmenu {x y id tag} {
> +    global tagmenuid tagmenutag tagctxmenu maintag
> +
> +    stopfinding
> +    set tagmenuid $id
> +    set tagmenutag $tag
> +    set state normal
> +
> +    $tagctxmenu entryconfigure 0 -state normal
> +    $tagctxmenu entryconfigure 1 -state normal
> +    tk_popup $tagctxmenu $x $y
> +}
> +
>  proc cobranch {} {
>      global headmenuid headmenuhead headids
>      global showlocalchanges
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]