| Padre-Plugin-HG documentation | Contained in the Padre-Plugin-HG distribution. |
Padre::Plugin::HG::LogView Displays a list of commits for the passed file.
my $changeset = Padre::Plugin::HG::LogView->showList($self, $file);
This module displays the list of commits that have occured for the passed file. it returns the changeset number. =head1 METHODS
| Padre-Plugin-HG documentation | Contained in the Padre-Plugin-HG distribution. |
package Padre::Plugin::HG::LogView; use strict; use Padre::Wx; use Padre::Wx::Icon; use Wx::Event qw( EVT_BUTTON ); our @ISA = 'Wx::Dialog'; sub showList { my ($class, $hg, $file) = @_; my $self = $class->SUPER::new( undef, -1, 'Padre Diff to Revision', Wx::wxDefaultPosition, Wx::wxDefaultSize, Wx::wxDEFAULT_FRAME_STYLE | Wx::wxTAB_TRAVERSAL, ); $self->{hg} = $hg; $self->SetIcon(Padre::Wx::Icon::PADRE); my $sizer = Wx::BoxSizer->new(Wx::wxVERTICAL); my $sizer2 = Wx::BoxSizer->new(Wx::wxHORIZONTAL); $self->{list_box} = Wx::ListCtrl->new($self, -1, Wx::wxDefaultPosition, Wx::wxDefaultSize,Wx::wxLC_REPORT|Wx::wxLC_SINGLE_SEL, Wx::wxDefaultValidator, 'listbox_1'); #insert the HG data chdir ($self->{hg}->{project_path}); my $hgdata = $self->{hg}->vcs_log($file, $self->{hg}->{project_path}); $self->_populate_list( $hgdata); my $ok_button = Wx::Button->new($self, 1, # id "OK", # label [50,50] # position ); #Handle the Button Clicks my $changeset; EVT_BUTTON( $ok_button, 1, sub{$changeset = $self->_get_selected_item(); $self->Close(); return $changeset; } ); $sizer->Add($self->{list_box}, 1, Wx::wxEXPAND, 10); $sizer2->Add($ok_button, 0, Wx::wxALL, 10); $sizer->Add($sizer2, 0, Wx::wxEXPAND, 10); $self->SetSizer($sizer); $self->SetAutoLayout(1); $self->ShowModal(); return $changeset; } sub _get_selected_item { my( $self, $event ) = @_; # Change the contents of $self->{txt} my $changeset; my $item = -1; while ( 1 ==1 ) { $item = $self->{list_box}->GetNextItem($item, Wx::wxLIST_NEXT_ALL, Wx::wxLIST_STATE_SELECTED); if ( $item == -1 ) { last; } # this item is selected - do whatever is needed with it my $itemObj = $self->{list_box}->GetItem($item); $changeset .= $itemObj->GetText(); } $changeset =~ s/^.*://; return $changeset; } sub _populate_list { my ($self, $log) = @_; my @commits = $self->{hg}->parse_log($log); if (!$log) {return} #build the list headers $self->{list_box}->InsertColumn(0,'changeset'); $self->{list_box}->InsertColumn(1,'user'); $self->{list_box}->InsertColumn(2,'date'); $self->{list_box}->InsertColumn(3,'summary'); for (my $i = (scalar(@commits)-1); $i >= 0; $i--) { my $item = $self->{list_box}->InsertStringItem(0,$commits[$i]->{changeset}); $self->{list_box}->SetItem($item,1, $commits[$i]->{user}); $self->{list_box}->SetItem($item,2, $commits[$i]->{date}); $self->{list_box}->SetItem($item,3, $commits[$i]->{summary}); } }