git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] git-gui blame, add a Control-G goto line option
@ 2011-07-16 16:58 David Fries
  2011-07-17  1:47 ` David Fries
  0 siblings, 1 reply; 2+ messages in thread
From: David Fries @ 2011-07-16 16:58 UTC (permalink / raw)
  To: git; +Cc: Paul Mackerras

Add a goto input field to jump to the specified line similar to the
current search field. 

Signed-off-by: David Fries <David@Fries.net>

---
 git-gui/lib/blame.tcl |   11 ++++++++
 git-gui/lib/line.tcl  |   62 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 73 insertions(+), 0 deletions(-)
 create mode 100644 git-gui/lib/line.tcl

diff --git a/git-gui/lib/blame.tcl b/git-gui/lib/blame.tcl
index 61e358f..062091b 100644
--- a/git-gui/lib/blame.tcl
+++ b/git-gui/lib/blame.tcl
@@ -22,6 +22,7 @@ field w_asim     ; # text column: annotations (simple computation)
 field w_file     ; # text column: actual file data
 field w_cviewer  ; # pane showing commit message
 field finder     ; # find mini-dialog frame
+field gotoline   ; # line goto mini-dialog frame
 field status     ; # status mega-widget instance
 field old_height ; # last known height of $w.file_pane
 
@@ -231,6 +232,11 @@ constructor new {i_commit i_path i_jump} {
 		-column [expr {[llength $w_columns] - 1}] \
 		]
 
+	set gotoline [::linebar::new \
+		$w.file_pane.out.lf $w_file \
+		-column [expr {[llength $w_columns] - 1}] \
+		]
+
 	set w_cviewer $w.file_pane.cm.t
 	text $w_cviewer \
 		-background white \
@@ -275,6 +281,10 @@ constructor new {i_commit i_path i_jump} {
 		-label [mc "Find Text..."] \
 		-accelerator F7 \
 		-command [list searchbar::show $finder]
+	$w.ctxm add command \
+		-label [mc "Goto Line..."] \
+		-accelerator Control-Key-g \
+		-command [list linebar::show $gotoline]
 	menu $w.ctxm.enc
 	build_encoding_menu $w.ctxm.enc [cb _setencoding]
 	$w.ctxm add cascade \
@@ -345,6 +355,7 @@ constructor new {i_commit i_path i_jump} {
 	bind $top       <Escape>     [list searchbar::hide $finder]
 	bind $top       <F3>         [list searchbar::find_next $finder]
 	bind $top       <Shift-F3>   [list searchbar::find_prev $finder]
+	bind $top    <Control-Key-g> [list linebar::show $gotoline]
 	catch { bind $top <Shift-Key-XF86_Switch_VT_3> [list searchbar::find_prev $finder] }
 
 	grid configure $w.header -sticky ew
diff --git a/git-gui/lib/line.tcl b/git-gui/lib/line.tcl
new file mode 100644
index 0000000..e8b1d33
--- /dev/null
+++ b/git-gui/lib/line.tcl
@@ -0,0 +1,62 @@
+# goto line number
+# based on code from gitk, Copyright (C) Paul Mackerras
+
+class linebar {
+
+field w
+field ctext
+
+field linenum   {}
+
+constructor new {i_w i_text args} {
+	global use_ttk NS
+	set w      $i_w
+	set ctext  $i_text
+
+	${NS}::frame  $w
+	${NS}::label  $w.l       -text [mc "Goto Line:"]
+	entry  $w.ent -textvariable ${__this}::linenum -background lightgreen
+	${NS}::button $w.bn      -text [mc Go] -command [cb _incrgoto]
+
+	pack   $w.l   -side left
+	pack   $w.bn  -side right
+	pack   $w.ent -side left -expand 1 -fill x
+
+	eval grid conf $w -sticky we $args
+	grid remove $w
+
+	bind $w.ent <Return> [cb _incrgoto]
+
+	bind $w <Destroy> [list delete_this $this]
+	return $this
+}
+
+method show {} {
+	if {![visible $this]} {
+		grid $w
+	}
+	focus -force $w.ent
+}
+
+method hide {} {
+	if {[visible $this]} {
+		focus $ctext
+		grid remove $w
+	}
+}
+
+method visible {} {
+	return [winfo ismapped $w]
+}
+
+method editor {} {
+	return $w.ent
+}
+
+method _incrgoto {} {
+	if {$linenum ne {}} {
+		$ctext see $linenum.0
+	}
+}
+
+}
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH 1/2] git-gui blame, add a Control-G goto line option
  2011-07-16 16:58 [PATCH 1/2] git-gui blame, add a Control-G goto line option David Fries
@ 2011-07-17  1:47 ` David Fries
  0 siblings, 0 replies; 2+ messages in thread
From: David Fries @ 2011-07-17  1:47 UTC (permalink / raw)
  To: git; +Cc: Paul Mackerras

Add a goto input field to jump to the specified line similar to the             current search field.

Signed-off-by: David Fries <David@Fries.net>
---
This version hides the goto widget when pressing return or escape.
Patch 2/2 is unchanged.

 git-gui/lib/blame.tcl |   11 ++++++++
 git-gui/lib/line.tcl  |   64 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 75 insertions(+), 0 deletions(-)
 create mode 100644 git-gui/lib/line.tcl

diff --git a/git-gui/lib/blame.tcl b/git-gui/lib/blame.tcl
index 61e358f..062091b 100644
--- a/git-gui/lib/blame.tcl
+++ b/git-gui/lib/blame.tcl
@@ -22,6 +22,7 @@ field w_asim     ; # text column: annotations (simple computation)
 field w_file     ; # text column: actual file data
 field w_cviewer  ; # pane showing commit message
 field finder     ; # find mini-dialog frame
+field gotoline   ; # line goto mini-dialog frame
 field status     ; # status mega-widget instance
 field old_height ; # last known height of $w.file_pane
 
@@ -231,6 +232,11 @@ constructor new {i_commit i_path i_jump} {
 		-column [expr {[llength $w_columns] - 1}] \
 		]
 
+	set gotoline [::linebar::new \
+		$w.file_pane.out.lf $w_file \
+		-column [expr {[llength $w_columns] - 1}] \
+		]
+
 	set w_cviewer $w.file_pane.cm.t
 	text $w_cviewer \
 		-background white \
@@ -275,6 +281,10 @@ constructor new {i_commit i_path i_jump} {
 		-label [mc "Find Text..."] \
 		-accelerator F7 \
 		-command [list searchbar::show $finder]
+	$w.ctxm add command \
+		-label [mc "Goto Line..."] \
+		-accelerator Control-Key-g \
+		-command [list linebar::show $gotoline]
 	menu $w.ctxm.enc
 	build_encoding_menu $w.ctxm.enc [cb _setencoding]
 	$w.ctxm add cascade \
@@ -345,6 +355,7 @@ constructor new {i_commit i_path i_jump} {
 	bind $top       <Escape>     [list searchbar::hide $finder]
 	bind $top       <F3>         [list searchbar::find_next $finder]
 	bind $top       <Shift-F3>   [list searchbar::find_prev $finder]
+	bind $top    <Control-Key-g> [list linebar::show $gotoline]
 	catch { bind $top <Shift-Key-XF86_Switch_VT_3> [list searchbar::find_prev $finder] }
 
 	grid configure $w.header -sticky ew
diff --git a/git-gui/lib/line.tcl b/git-gui/lib/line.tcl
new file mode 100644
index 0000000..4913bdd
--- /dev/null
+++ b/git-gui/lib/line.tcl
@@ -0,0 +1,64 @@
+# goto line number
+# based on code from gitk, Copyright (C) Paul Mackerras
+
+class linebar {
+
+field w
+field ctext
+
+field linenum   {}
+
+constructor new {i_w i_text args} {
+	global use_ttk NS
+	set w      $i_w
+	set ctext  $i_text
+
+	${NS}::frame  $w
+	${NS}::label  $w.l       -text [mc "Goto Line:"]
+	entry  $w.ent -textvariable ${__this}::linenum -background lightgreen
+	${NS}::button $w.bn      -text [mc Go] -command [cb _incrgoto]
+
+	pack   $w.l   -side left
+	pack   $w.bn  -side right
+	pack   $w.ent -side left -expand 1 -fill x
+
+	eval grid conf $w -sticky we $args
+	grid remove $w
+
+	bind $w.ent <Return> [cb _incrgoto]
+	bind $w.ent <Escape> [list linebar::hide $this]
+
+	bind $w <Destroy> [list delete_this $this]
+	return $this
+}
+
+method show {} {
+	if {![visible $this]} {
+		grid $w
+	}
+	focus -force $w.ent
+}
+
+method hide {} {
+	if {[visible $this]} {
+		focus $ctext
+		grid remove $w
+	}
+}
+
+method visible {} {
+	return [winfo ismapped $w]
+}
+
+method editor {} {
+	return $w.ent
+}
+
+method _incrgoto {} {
+	if {$linenum ne {}} {
+		$ctext see $linenum.0
+		hide $this
+	}
+}
+
+}
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-07-17  1:47 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-16 16:58 [PATCH 1/2] git-gui blame, add a Control-G goto line option David Fries
2011-07-17  1:47 ` David Fries

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).