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 )