summaryrefslogtreecommitdiff
path: root/contrib/blameview/blameview.perl
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@gmail.com>2007-02-12 17:30:28 (GMT)
committerJunio C Hamano <junkio@cox.net>2007-02-13 03:20:08 (GMT)
commit07fef5fc1599d11f5750ae2440e0da6616c297b8 (patch)
tree35977076c343c648cb089c0bb26f98af212d4083 /contrib/blameview/blameview.perl
parent1e8b0d486e9b244eb1692886ffb50ef728696c52 (diff)
downloadgit-07fef5fc1599d11f5750ae2440e0da6616c297b8.zip
git-07fef5fc1599d11f5750ae2440e0da6616c297b8.tar.gz
git-07fef5fc1599d11f5750ae2440e0da6616c297b8.tar.bz2
blameview: Move the commit info to a pane below the blame window.
Also spawn the the new blameview in the background Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'contrib/blameview/blameview.perl')
-rwxr-xr-xcontrib/blameview/blameview.perl33
1 files changed, 26 insertions, 7 deletions
diff --git a/contrib/blameview/blameview.perl b/contrib/blameview/blameview.perl
index 807d01f..a9a509f 100755
--- a/contrib/blameview/blameview.perl
+++ b/contrib/blameview/blameview.perl
@@ -25,11 +25,12 @@ EOS
my $window = Gtk2::Window->new('toplevel');
$window->signal_connect(destroy => sub { Gtk2->main_quit });
+my $vpan = Gtk2::VPaned->new();
+$window->add($vpan);
my $scrolled_window = Gtk2::ScrolledWindow->new;
-$window->add($scrolled_window);
+$vpan->pack1($scrolled_window, 1, 1);
my $fileview = Gtk2::SimpleList->new(
'Commit' => 'text',
- 'CommitInfo' => 'text',
'FileLine' => 'text',
'Data' => 'text'
);
@@ -40,8 +41,27 @@ $fileview->set_rules_hint(1);
$fileview->signal_connect (row_activated => sub {
my ($sl, $path, $column) = @_;
my $row_ref = $sl->get_row_data_from_path ($path);
- system("blameview @$row_ref[0] $fn");
- # $row_ref is now an array ref to the double-clicked row's data.
+ system("blameview @$row_ref[0] $fn &");
+ });
+
+my $commitwindow = Gtk2::ScrolledWindow->new();
+$commitwindow->set_policy ('GTK_POLICY_AUTOMATIC','GTK_POLICY_AUTOMATIC');
+$vpan->pack2($commitwindow, 1, 1);
+my $commit_text = Gtk2::TextView->new();
+my $commit_buffer = Gtk2::TextBuffer->new();
+$commit_text->set_buffer($commit_buffer);
+$commitwindow->add($commit_text);
+
+$fileview->signal_connect (cursor_changed => sub {
+ my ($sl) = @_;
+ my ($path, $focus_column) = $sl->get_cursor();
+ my $row_ref = $sl->get_row_data_from_path ($path);
+ my $c_fh;
+ open($c_fh, '-|', "git cat-file commit @$row_ref[0]")
+ or die "unable to find commit @$row_ref[0]";
+ my @buffer = <$c_fh>;
+ $commit_buffer->set_text("@buffer");
+ close($c_fh);
});
my $fh;
@@ -50,7 +70,7 @@ open($fh, '-|', "git cat-file blob $hash:$fn")
while(<$fh>) {
chomp;
- $fileview->{data}->[$.] = ['HEAD', '?', "$fn:$.", $_];
+ $fileview->{data}->[$.] = ['HEAD', "$fn:$.", $_];
}
my $blame;
@@ -79,8 +99,7 @@ sub flush_blame_line {
for(my $i = 0; $i < $cnt; $i++) {
@{$fileview->{data}->[$lno+$i-1]}[0,1,2] =
- (substr($commit, 0, 8), $info,
- $filename . ':' . ($s_lno+$i));
+ (substr($commit, 0, 8), $filename . ':' . ($s_lno+$i));
}
}