* [PATCH] gitk tag delete/rename support
@ 2012-11-23 5:51 Leon KUKOVEC
2012-11-23 12:38 ` Ramkumar Ramachandra
2012-11-23 16:41 ` Leon KUKOVEC
0 siblings, 2 replies; 7+ messages in thread
From: Leon KUKOVEC @ 2012-11-23 5:51 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Leon KUKOVEC
---
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 <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
@@ -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 wrcomcmd NS
@@ -9214,6 +9354,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
--
1.7.9.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] gitk tag delete/rename support
2012-11-23 5:51 [PATCH] gitk tag delete/rename support Leon KUKOVEC
@ 2012-11-23 12:38 ` Ramkumar Ramachandra
2012-11-23 16:41 ` Leon KUKOVEC
1 sibling, 0 replies; 7+ messages in thread
From: Ramkumar Ramachandra @ 2012-11-23 12:38 UTC (permalink / raw)
To: Leon KUKOVEC; +Cc: git, Junio C Hamano
Leon KUKOVEC wrote:
> ---
> [...]
Commit message and signoff?
Ram
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] gitk tag delete/rename support
2012-11-23 5:51 [PATCH] gitk tag delete/rename support Leon KUKOVEC
2012-11-23 12:38 ` Ramkumar Ramachandra
@ 2012-11-23 16:41 ` Leon KUKOVEC
2012-11-25 6:26 ` Junio C Hamano
1 sibling, 1 reply; 7+ messages in thread
From: Leon KUKOVEC @ 2012-11-23 16:41 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Leon KUKOVEC
Right clicking on a tag pops up a menu, which allows
tag to be renamed or deleted.
Signed-off-by: Leon KUKOVEC <leon.kukovec@gmail.com>
---
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
--
1.7.9.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] gitk tag delete/rename support
2012-11-23 16:41 ` Leon KUKOVEC
@ 2012-11-25 6:26 ` Junio C Hamano
2012-11-25 16:02 ` Leon KUKOVEC
0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2012-11-25 6:26 UTC (permalink / raw)
To: Leon KUKOVEC; +Cc: git, Paul Mackerras
Leon KUKOVEC <leon.kukovec@gmail.com> 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@gmail.com>
> ---
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
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] gitk tag delete/rename support
2012-11-25 6:26 ` Junio C Hamano
@ 2012-11-25 16:02 ` Leon KUKOVEC
2012-11-25 19:05 ` Leon KUKOVEC
0 siblings, 1 reply; 7+ messages in thread
From: Leon KUKOVEC @ 2012-11-25 16:02 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Paul Mackerras
Hi,
On Sun, Nov 25, 2012 at 7:26 AM, Junio C Hamano <gitster@pobox.com> 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
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] gitk tag delete/rename support
2012-11-25 16:02 ` Leon KUKOVEC
@ 2012-11-25 19:05 ` Leon KUKOVEC
2013-01-02 7:11 ` Paul Mackerras
0 siblings, 1 reply; 7+ messages in thread
From: Leon KUKOVEC @ 2012-11-25 19:05 UTC (permalink / raw)
To: git; +Cc: Paul Mackerras, Leon KUKOVEC
Right clicking on a tag pops up a menu, which allows
tag to be renamed or deleted.
Signed-off-by: Leon KUKOVEC <leon.kukovec@gmail.com>
---
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
--
1.7.9.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] gitk tag delete/rename support
2012-11-25 19:05 ` Leon KUKOVEC
@ 2013-01-02 7:11 ` Paul Mackerras
0 siblings, 0 replies; 7+ messages in thread
From: Paul Mackerras @ 2013-01-02 7:11 UTC (permalink / raw)
To: Leon KUKOVEC; +Cc: git
On Sun, Nov 25, 2012 at 08:05:45PM +0100, Leon KUKOVEC wrote:
> Right clicking on a tag pops up a menu, which allows
> tag to be renamed or deleted.
Nice idea, but I am concerned that renaming a tag that refers to a tag
object will turn it into a lightweight tag, which would be surprising
for users. I think that needs to be fixed before I apply the patch.
Also, when renaming a tag it would be good to check for the cases
where the new name is the same as the old (in which case nothing needs
to be done) and where the new name already exists.
Thanks,
Paul.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-01-02 7:12 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-23 5:51 [PATCH] gitk tag delete/rename support Leon KUKOVEC
2012-11-23 12:38 ` Ramkumar Ramachandra
2012-11-23 16:41 ` Leon KUKOVEC
2012-11-25 6:26 ` Junio C Hamano
2012-11-25 16:02 ` Leon KUKOVEC
2012-11-25 19:05 ` Leon KUKOVEC
2013-01-02 7:11 ` Paul Mackerras
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).