#############################################################################
## Name: wxIE.pl
## Purpose: wxIE minimal demo
## Author: Graciliano M. P.
## Created: 06/02/2003
## RCS-ID:
## Copyright: (c) 2002 Marcus Friedlaender and Mattia Barbon
## Licence: This program is free software; you can redistribute it and/or
## modify it under the same terms as Perl itself
#############################################################################
use Wx;
package MyApp;
use vars qw(@ISA);
@ISA=qw(Wx::App);
sub OnInit {
my( $this ) = @_;
my( $frame ) = MyFrame->new( "wxIE Minimal demo",
Wx::Point->new( 50, 50 ),
Wx::Size->new( 550, 350 )
);
$this->SetTopWindow( $frame );
$frame->Show( 1 );
1;
}
package MyFrame;
use vars qw(@ISA);
@ISA=qw(Wx::Frame);
use Wx::ActiveX::IE ;
use Wx qw(:sizer);
use Wx::Event qw(EVT_BUTTON) ;
use Wx::ActiveX::Event qw(EVT_ACTIVEX EVT_ACTIVEX_IE_NEWWINDOW2 EVT_ACTIVEX_IE_STATUSTEXTCHANGE) ;
use Wx qw(wxDefaultPosition wxDefaultSize wxDEFAULT wxNORMAL);
sub new {
my( $class ) = shift;
my( $this ) = $class->SUPER::new( undef, -1, $_[0], $_[1], $_[2] );
$|=1;
my $html_id = 501 ;
my $IE = $this->{IE} = Wx::ActiveX::IE->new( $this , $html_id , wxDefaultPosition , wxDefaultSize );
$IE->LoadUrl("http://wxperl.sf.net") ;
Wx::LogStatus( "ACTIVEX_IE EVENT LIST:" );
for(0..($IE->GetEventCount)-1) {
my $n = $IE->GetEventName($_) ;
Wx::LogStatus( " $_> $n" );
}
EVT_ACTIVEX($this,$IE,"BeforeNavigate2",sub{
my ( $obj , $evt ) = @_ ;
my $url = $evt->{URL} ;
Wx::LogStatus( "ACTIVEX_IE BeforeNavigate2 >> $url" );
}) ;
EVT_ACTIVEX_IE_NEWWINDOW2($this,$IE,sub{
my ( $obj , $evt ) = @_ ;
$evt->{Cancel} = 1 ;
Wx::LogStatus( "ACTIVEX_IE NewWindow2 >> **CANCEL**" );
}) ;
EVT_ACTIVEX_IE_STATUSTEXTCHANGE($this,$IE,sub{
my ( $obj , $evt ) = @_ ;
my $status = $this->{STATUS} ;
$status->SetValue($evt->{Text});
});
my $top_s = Wx::BoxSizer->new( wxVERTICAL );
my $but_s = Wx::BoxSizer->new( wxHORIZONTAL );
my $but_s2 = Wx::BoxSizer->new( wxHORIZONTAL );
my $LoadUrl = Wx::Button->new( $this, -1, 'LoadUrl' );
my $LoadString = Wx::Button->new( $this, -1, 'LoadString' );
my $GoBack = Wx::Button->new( $this, -1, 'GoBack' );
my $GoForward = Wx::Button->new( $this, -1, 'GoForward' );
my $GoHome = Wx::Button->new( $this, -1, 'GoHome' );
my $GoSearch = Wx::Button->new( $this, -1, 'GoSearch' );
my $Refresh = Wx::Button->new( $this, -1, 'Refresh' );
my $Stop = Wx::Button->new( $this, -1, 'Stop' );
my $GetStringSelection = Wx::Button->new( $this, -1, 'GetStringSelection' );
my $GetText = Wx::Button->new( $this, -1, 'GetText' );
my $GetTextHTML = Wx::Button->new( $this, -1, 'GetTextHTML' );
my $Print = Wx::Button->new( $this, -1, 'Print' );
my $PrintPreview = Wx::Button->new( $this, -1, 'PrintPreview' );
my $status_txt = Wx::TextCtrl->new( $this , -1, "IE Status", wxDefaultPosition, [200,-1] , wxTE_READONLY );
$this->{STATUS} = $status_txt ;
$but_s->Add( $LoadUrl );
$but_s->Add( $LoadString );
$but_s->Add( $GoBack );
$but_s->Add( $GoForward );
$but_s->Add( $GoHome );
$but_s->Add( $Refresh );
$but_s->Add( $Stop );
$but_s2->Add( $GoSearch );
$but_s2->Add( $GetStringSelection );
$but_s2->Add( $GetText );
$but_s2->Add( $GetTextHTML );
$but_s2->Add( $Print );
$but_s2->Add( $PrintPreview );
$top_s->Add( $IE, 1, wxGROW|wxALL, 5 );
$top_s->Add( $status_txt , 0, wxGROW|wxALL, 0);
$top_s->Add( $but_s, 0, wxALL, 5 );
$top_s->Add( $but_s2, 0, wxALL, 5 );
$this->SetSizer( $top_s );
$this->SetAutoLayout( 1 );
EVT_BUTTON( $this, $LoadUrl, \&OnLoadUrl );
EVT_BUTTON( $this, $LoadString, \&OnLoadString );
EVT_BUTTON( $this, $GoBack, \&OnGoBack );
EVT_BUTTON( $this, $GoForward, \&OnGoForward );
EVT_BUTTON( $this, $GoHome, \&OnGoHome );
EVT_BUTTON( $this, $GoSearch, \&OnGoSearch );
EVT_BUTTON( $this, $Refresh, \&OnRefresh );
EVT_BUTTON( $this, $Stop, \&OnStop );
EVT_BUTTON( $this, $GetStringSelection, \&OnGetStringSelection );
EVT_BUTTON( $this, $GetText, \&OnGetText );
EVT_BUTTON( $this, $GetTextHTML, \&OnGetTextHTML );
EVT_BUTTON( $this, $Print, \&OnPrint );
EVT_BUTTON( $this, $PrintPreview, \&OnPrintPreview );
print $IE->ActivexInfos ;
return( $this ) ;
}
#########
# QUERY #
#########
use Wx qw(wxID_OK wxTE_MULTILINE) ;
no strict ;
no warnings;
sub Query {
my ( $text_init , $width , $height , $multy) = @_ ;
$width = 200 if ($width < 20) ;
$height = -1 if ($height < 1) ;
my $dialog = Wx::Dialog->new($this , -1 , "Query" , wxDefaultPosition, wxDefaultSize,) ;
my $sizer = Wx::BoxSizer->new( wxHORIZONTAL );
my $txt_flag ;
if ( $multy ) { $txt_flag = $txt_flag|wxTE_MULTILINE ;}
my $txt = Wx::TextCtrl->new( $dialog , -1 , $text_init , wxDefaultPosition , [$width,$height] , $txt_flag ) ;
my $ok = Wx::Button->new($dialog, wxID_OK , 'OK');
$sizer->Add( $txt );
$sizer->Add( $ok ) ;
$dialog->SetSizer( $sizer );
$dialog->SetAutoLayout( 1 );
$sizer->Fit( $dialog );
$sizer->SetSizeHints( $dialog );
$dialog->ShowModal() ;
my $val = $txt->GetValue() ;
$dialog->Destroy() ;
return( $val ) ;
}
sub OnPrint {
my ($this, $event) = @_ ;
$this->{IE}->Print(1) ;
}
sub OnPrintPreview {
my ($this, $event) = @_ ;
$this->{IE}->PrintPreview ;
}
sub OnLoadUrl {
my ($this, $event) = @_ ;
my $url = Query("http://wxperl.sf.net") ;
$this->{IE}->LoadUrl($url) ;
}
sub OnLoadString {
my ($this, $event) = @_ ;
my $html = Query(q`<html>
<body bgcolor="#FFFFFF">
<center><b>wxIE Test</b></center>
</body>
</html>
`,400,300,1) ;
$this->{IE}->LoadString($html) ;
}
sub OnGoBack {
my ($this, $event) = @_ ;
$this->{IE}->GoBack() ;
}
sub OnGoForward {
my ($this, $event) = @_ ;
$this->{IE}->GoForward() ;
}
sub OnGoHome {
my ($this, $event) = @_ ;
$this->{IE}->GoHome() ;
}
sub OnGoSearch {
my ($this, $event) = @_ ;
$this->{IE}->GoSearch() ;
}
sub OnRefresh {
my ($this, $event) = @_ ;
$this->{IE}->Refresh() ;
}
sub OnStop {
my ($this, $event) = @_ ;
$this->{IE}->Stop() ;
}
sub OnGetStringSelection {
my ($this, $event) = @_ ;
my $val = $this->{IE}->GetStringSelection() ;
Wx::LogMessage( "GetStringSelection: $val" );
}
sub OnGetText {
my ($this, $event) = @_ ;
my $val = $this->{IE}->GetText() ;
my $html = Query($val,400,300,1) ;
}
sub OnGetTextHTML {
my ($this, $event) = @_ ;
my $val = $this->{IE}->GetText(1) ;
my $html = Query($val,400,300,1) ;
}
package main;
my( $app ) = MyApp->new();
$app->MainLoop();
exit ;
# Local variables: #
# mode: cperl #
# End: #