Re: git-gui blametool
- From
Aneesh Kumar K.V <aneesh.kumar@gmail.com>
- Date
- Feb 12, 2007, 16:28 UTC
- Message-ID
- <45D095B1.9070308@gmail.com>
- In-Reply-To
- <45D07A76.1070009@gmail.com>
Aneesh Kumar K.V wrote:
Show 14 quoted lines
> Hi All, > > I found the git-gui blame tool interface quiet confusing with the all > those color code. What does the color code actually mean ? A simple > interface would be > > [ commit ] [ line number ] [ code ] > > .... > ... > -------------------------------------- > commit details of the selected commit > >
Sine i don't have a tcl/tk reference around i update blameview to show the above. The patch is attached below in case you are interested.
NOTE: How do i resize the widgets in perl-gtk ? I wanted the commit window to be a bit larger. Any help ?
-aneesh
diff --git a/contrib/blameview/blameview.perl b/contrib/blameview/blameview.perl index 807d01f..67a0714 100755 --- a/contrib/blameview/blameview.perl +++ b/contrib/blameview/blameview.perl @@ -25,11 +25,13 @@ EOS my $window = Gtk2::Window->new('toplevel'); $window->signal_connect(destroy => sub { Gtk2->main_quit }); +my $vbox = Gtk2::VBox->new(); +$vbox->set_homogeneous(0); +$window->add($vbox); my $scrolled_window = Gtk2::ScrolledWindow->new; -$window->add($scrolled_window); +$vbox->pack_start($scrolled_window, 1, 1, 0); my $fileview = Gtk2::SimpleList->new( 'Commit' => 'text', - 'CommitInfo' => 'text', 'FileLine' => 'text', 'Data' => 'text' ); @@ -41,7 +43,26 @@ $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. + }); + +my $commitwindow = Gtk2::ScrolledWindow->new(); +$commitwindow->set_policy ('GTK_POLICY_AUTOMATIC','GTK_POLICY_AUTOMATIC'); +$vbox->pack_start($commitwindow, 1, 1, 0); +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 +71,7 @@ open($fh, '-|', "git cat-file blob $hash:$fn") while(<$fh>) { chomp; - $fileview->{data}->[$.] = ['HEAD', '?', "$fn:$.", $_]; + $fileview->{data}->[$.] = ['HEAD', "$fn:$.", $_]; } my $blame; @@ -79,8 +100,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)); } }