Commits

m...@mm-laptop  committed 50d47d8

Now possible to show the changeset history for a file

  • Participants
  • Parent commits 4617203

Comments (0)

Files changed (1)

File lib/Padre/Plugin/HG/LogView.pm

+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;
+	#$self->{txt}->SetLabel("The button was clicked!"); 
+	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}
+ $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});
+	
+ }	
+	
+}
+
+