Add libwx-perl
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / ext / pperl / splashfast / SplashFast.pm
diff --git a/deb-src/libwx-perl/libwx-perl-0.96/ext/pperl/splashfast/SplashFast.pm b/deb-src/libwx-perl/libwx-perl-0.96/ext/pperl/splashfast/SplashFast.pm
new file mode 100644 (file)
index 0000000..d6c73f2
--- /dev/null
@@ -0,0 +1,204 @@
+#############################################################################
+## Name:        ext/pperl/splashfast/SplashFast.pm
+## Purpose:     Wx::Perl::SplashFast -> Show a splash before loading Wx.
+## Author:      Graciliano M. P.
+## Modified by:
+## Created:     30/06/2002
+## RCS-ID:      $Id: SplashFast.pm 2723 2009-12-25 17:35:15Z mbarbon $
+## Copyright:   (c) 2002-2006, 2009 Graciliano M. P.
+## Licence:     This program is free software; you can redistribute it and/or
+##              modify it under the same terms as Perl itself
+#############################################################################
+
+use strict;
+
+package Wx::Perl::SplashFast ;
+use vars qw($VERSION) ;
+
+$VERSION = '0.02'; # for wxPerl 0.15+
+
+sub import {
+  Wx::Perl::SplashFast::new(@_) if @_ > 1;
+}
+
+sub new {
+  my $class = shift;
+
+  Wx::Perl::SplashFast::App->new() ;
+  Wx::InitAllImageHandlers() ;
+
+  my $dummy;
+  my $any = Wx::constant( 'wxBITMAP_TYPE_ANY', 0, $dummy );
+  my $spl_c = Wx::constant( 'wxSPLASH_CENTRE_ON_SCREEN', 0, $dummy );
+  my $spl_ti = Wx::constant( 'wxSPLASH_TIMEOUT', 0, $dummy );
+  my $bitmap = Wx::Bitmap->new( $_[0], $any );
+
+  my $splash = Wx::SplashScreen->new( $bitmap , $spl_c|$spl_ti ,
+                                      $_[1] || 1000 , undef , -1 );
+
+  return $splash ;
+}
+
+###################
+# SPLASHFAST::APP #
+###################
+
+# Ghost package for your APP.
+use Wx::App;
+package Wx::Perl::SplashFast::App ;
+use vars qw(@ISA) ;
+@ISA = qw(Wx::App) ;
+
+sub OnInit { return 1 }
+
+###############################################################################
+## WX BASICS: #################################################################
+###############################################################################
+
+use Wx::Mini;
+
+Wx::_start();
+
+#######
+# END #
+#######
+
+1;
+
+__END__
+
+=head1 NAME
+
+Wx::Perl::SplashFast - Fast splash screen for the Wx module.
+
+=head1 SYNOPSIS
+
+  use Wx::Perl::SplashFast ('/path/to/logo.jpg',3000);
+  # timeout in milliseconds
+
+  package myApp ;
+  # subclass Wx::App ...
+
+  package myFrame;
+  # subclass Wx::Frame ...
+
+  package main;
+
+  my $myApp = myApp->new();
+  my $frame = myFrame->new();
+
+  $myApp->MainLoop();
+
+
+=head1 DESCRIPTION
+
+Using Wx::SplashScreen from Wx::App::OnInit may cause a high delay
+before the splash screen is shown on low end machines.
+
+This module works around this limitation; you just need to follow the
+example.
+
+=head1 USAGE
+
+Just put the code inside the 'BEGIN {}' of your main app, like:
+
+  sub BEGIN {
+    use Wx::Perl::SplashFast ;
+    Wx::Perl::SplashFast->new("./logo.jpg",5000);
+  }
+
+or load the module before any other:
+
+  use Wx::Perl::SplashFast ("./logo.jpg",5000) ;
+  use Wx ;
+  ...
+
+=head2 import ( IMG_FILE, SPLASH_TIMEOUT )
+
+=over 10
+
+=item IMG_FILE
+
+Path of the image file to show.
+
+=item SPLASH_TIMEOUT
+
+Timeout of the splash screen in milliseconds.
+
+=back
+
+If you C<use Wx::Perl::SplashFast './logo.jpg', 1000;> this has the same
+affetc as.
+
+  BEGIN {
+    require Wx::Perl::SplashFast;
+    Wx::Perl::SplashFast->new( './logo.jpg', 1000 );
+  }
+
+=head2 new ( IMG_FILE , SPLASH_TIMEOUT )
+
+Show the splash screen.
+
+=over 10
+
+=item IMG_FILE
+
+Path of the image file to show.
+
+=item SPLASH_TIMEOUT
+
+Timeout of the splash screen in milliseconds.
+
+=back
+
+=head1 EXAMPLE
+
+  use Wx::Perl::SplashFast ("./logo.jpg",5000) ;
+  # Don't forget to put your own image in the same path. Duh
+
+  package myApp ;
+  use base 'Wx::App';
+  sub OnInit { return(@_[0]) ;}
+
+  package myFrame ;
+  use base 'Wx::Frame';
+  use Wx qw( wxDEFAULT_FRAME_STYLE );
+
+  sub new {
+    my $app = shift ;
+    my( $frame ) = $app->SUPER::new( @_[0] , -1, 'wxPerl Test' ,
+                                     [0,0] , [400,300] ) ;
+    return( $frame ) ;
+  }
+
+  package main ;
+  use Wx ;
+
+  my $myApp = myApp->new() ;
+
+  print "window\n" ;
+  my $win = myFrame->new() ;
+  $win->Show(1) ;
+
+  $myApp->SetTopWindow( $win ) ;
+  $myApp->MainLoop();
+
+=head1 SEE ALSO
+
+L<Wx>, L<Wx:SplashScreen>
+
+=head1 AUTHOR
+
+Graciliano M. P. <gm@virtuasites.com.br>
+Thanks to wxWidgets people and Mattia Barbon for wxPerl! :P
+
+=head1 COPYRIGHT
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+# Local variables: #
+# mode: cperl #
+# End: #