CPANPLUS-Shell-Wx
view release on metacpan or search on metacpan
lib/CPANPLUS/Shell/Wx/ModulePanel.pm view on Meta::CPAN
use Wx qw[:everything];
use base qw(Wx::Panel);
use Wx::Event qw(EVT_CONTEXT_MENU EVT_WINDOW_CREATE EVT_BUTTON
EVT_TREE_SEL_CHANGED EVT_TREE_ITEM_ACTIVATED EVT_RIGHT_DOWN
EVT_TREE_ITEM_RIGHT_CLICK);
use Wx::ArtProvider qw/:artid :clientid/;
#since we want to route calls from here to the module tree,
our $AUTOLOAD;
use Data::Dumper;
use YAML qw/LoadFile Load/;
#use File::Spec;
#use File::Path;
use Storable;
use threads;
use LWP::Simple;
use Wx::Locale gettext => '_T';
use CPANPLUS::Shell::Wx::util;
sub new{
my( $self, $parent, $id, $pos, $size, $style, $name ) = @_;
$parent = undef unless defined $parent;
$id = -1 unless defined $id;
$pos = wxDefaultPosition unless defined $pos;
$size = wxDefaultSize unless defined $size;
$name = "" unless defined $name;
$style = wxTAB_TRAVERSAL unless defined $style;
$self = $self->SUPER::new( $parent, $id, $pos, $size, $style, $name );
print "New ModulePanel\n";
return $self;
}
#initialize all the children. This was the OnWindowCreate Handler
sub Init {
my $self = shift;
#get references so we can access them easier
$self->{parent}=$self->GetParent(); #Wx::Window::FindWindowByName('main_window');
$self->{mod_tree}=Wx::Window::FindWindowByName('tree_modules');
$self->{mod_tree}->Init();
#show info on what we are doing
Wx::LogMessage _T("Showing "),$self->{'show'},_T(" by "),$self->{'sort'};
#populate tree with default values
#$self->{mod_tree}->Populate();
#print Dumper $self->{mod_tree};
#for testing purposes, insert test values
my @testMods=qw/Alter CPAN Cache::BerkeleyDB CPANPLUS Module::NoExist Muck Acme::Time::Baby Wx/;
foreach $item (sort(@testMods)){
$self->{mod_tree}->AppendItem($self->{mod_tree}->GetRootItem(),$item,$self->{mod_tree}->_get_status_icon($item));
}
$self->_setup_search();
$self->_setup_info_tabs();
#my $cMenu=$self->{mod_tree}->GetContextMenu();
# $self->{mod_tree}->SetCPP(\&HandleContextInfo);
$self->{mod_tree}->SetInfoHandler(\&HandleContextInfo);
$self->{mod_tree}->SetClickHandler( sub{$self->HandleTreeClick(@_)});
#$self->{mod_tree}->SetDblClickHandler( sub{$self->ShowPODReader(@_)});
_uShowErr;
}
#set up the search bar.
sub _setup_search{
$self=shift;
my $searchbox=Wx::Window::FindWindowByName('cb_main_search');
my $typebox=Wx::Window::FindWindowByName('cb_search_type');
EVT_TEXT_ENTER( $self,
Wx::XmlResource::GetXRCID('cb_main_search'),
sub{$self->{list}->search($typebox->GetValue,$searchbox->GetValue);} );
my @items=();
foreach $term (CPANPLUS::Module->accessors()){
$term=~s/^\_//;
push(@items,$term) unless grep(/$term/,@items) ;
}
foreach $term (CPANPLUS::Module::Author->accessors()){
$term=~s/^\_//;
push(@items,$term) unless grep(/$term/,@items) ;
}
$typebox->Append(ucfirst($_)) foreach (sort(@items));
#$typebox->SetValue(0);
}
sub _setup_info_tabs{
$self=shift;
#attach menu events
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_get_more_info'),sub{$self->_get_more_info()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_get_readme'),sub{$self->_info_get_readme()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_get_status'),sub{$self->_info_get_status()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_get_prereqs'),sub{$self->_info_get_prereqs()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_get_files'),sub{$self->_info_get_files()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_get_versions'),sub{$self->_info_get_versions()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_get_contents'),sub{$self->_info_get_contents()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_get_report_this'),sub{$self->_info_get_report_this()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_get_report_all'),sub{$self->_info_get_report_all()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_get_validate'),sub{$self->_info_get_validate()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_fetch'),sub{$self->{mod_tree}->_fetch_module()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_extract'),sub{$self->{mod_tree}->_extract_module()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_prepare'),sub{$self->{mod_tree}->_prepare_module()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_create'),sub{$self->{mod_tree}->_create_module()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_test'),sub{$self->{mod_tree}->_test_module()} );
EVT_BUTTON( $self, Wx::XmlResource::GetXRCID('info_install'),sub{$self->{mod_tree}->_install_module()} );
}
#update only info tab in the lower notebook and clear other items
sub HandleTreeClick{
my ($self,$tree,$event)=@_;
#set global variable for CPANPLUS::Module object of what the user selected
$self->{thisName}=$tree->GetName;
$self->{thisMod}=$self->_get_mod($self->{thisName});
( run in 1.572 second using v1.01-cache-2.11-cpan-39bf76dae61 )