diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Win32/Clipboard.pm')
-rw-r--r-- | Master/tlpkg/tlperl/lib/Win32/Clipboard.pm | 369 |
1 files changed, 369 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/Win32/Clipboard.pm b/Master/tlpkg/tlperl/lib/Win32/Clipboard.pm new file mode 100644 index 00000000000..ba4038a5ade --- /dev/null +++ b/Master/tlpkg/tlperl/lib/Win32/Clipboard.pm @@ -0,0 +1,369 @@ +package Win32::Clipboard; +####################################################################### +# +# Win32::Clipboard - Interaction with the Windows clipboard +# +# Version: 0.52 +# Author: Aldo Calpini <dada@perl.it> +# +# Modified by: Hideyo Imazu <himazu@gmail.com> +# +####################################################################### + +require Exporter; # to export the constants to the main:: space +require DynaLoader; # to dynuhlode the module. + +@ISA = qw( Exporter DynaLoader ); +@EXPORT = qw( + CF_TEXT + CF_BITMAP + CF_METAFILEPICT + CF_SYLK + CF_DIF + CF_TIFF + CF_OEMTEXT + CF_DIB + CF_PALETTE + CF_PENDATA + CF_RIFF + CF_WAVE + CF_UNICODETEXT + CF_ENHMETAFILE + CF_HDROP + CF_LOCALE +); + +####################################################################### +# This AUTOLOAD is used to 'autoload' constants from the constant() +# XS function. If a constant is not found then control is passed +# to the AUTOLOAD in AutoLoader. +# + +sub AUTOLOAD { + my($constname); + ($constname = $AUTOLOAD) =~ s/.*:://; + #reset $! to zero to reset any current errors. + local $! = 0; + my $val = constant($constname, @_ ? $_[0] : 0); + if ($! != 0) { + if ($! =~ /Invalid/) { + $AutoLoader::AUTOLOAD = $AUTOLOAD; + goto &AutoLoader::AUTOLOAD; + } else { + my ($pack, $file, $line) = caller; + die "Win32::Clipboard::$constname is not defined, used at $file line $line."; + } + } + eval "sub $AUTOLOAD { $val }"; + goto &$AUTOLOAD; +} + + +####################################################################### +# STATIC OBJECT PROPERTIES +# +$VERSION = "0.5201"; + +####################################################################### +# FUNCTIONS +# + +sub new { + my($class, $value) = @_; + my $self = "I'm the Clipboard!"; + Set($value) if defined($value); + return bless(\$self); +} + +sub Version { + return $VERSION; +} + +sub Get { + if( IsBitmap() ) { return GetBitmap(); } + elsif( IsFiles() ) { return GetFiles(); } + else { return GetText(); } +} + +sub TIESCALAR { + my $class = shift; + my $value = shift; + Set($value) if defined $value; + my $self = "I'm the Clipboard!"; + return bless \$self, $class; +} + +sub FETCH { Get() } +sub STORE { shift; Set(@_) } + +sub DESTROY { + my($self) = @_; + undef $self; + StopClipboardViewer(); +} + +END { + StopClipboardViewer(); +} + +####################################################################### +# dynamically load in the Clipboard.pll module. +# + +bootstrap Win32::Clipboard; + +####################################################################### +# a little hack to use the module itself as a class. +# + +sub main::Win32::Clipboard { + my($value) = @_; + my $self={}; + my $result = Win32::Clipboard::Set($value) if defined($value); + return bless($self, "Win32::Clipboard"); +} + +1; + +__END__ + +=head1 NAME + +Win32::Clipboard - Interaction with the Windows clipboard + +=head1 SYNOPSIS + + use Win32::Clipboard; + + $CLIP = Win32::Clipboard(); + + print "Clipboard contains: ", $CLIP->Get(), "\n"; + + $CLIP->Set("some text to copy into the clipboard"); + + $CLIP->Empty(); + + $CLIP->WaitForChange(); + print "Clipboard has changed!\n"; + + +=head1 DESCRIPTION + +This module lets you interact with the Windows clipboard: you can get its content, +set it, empty it, or let your script sleep until it changes. +This version supports 3 formats for clipboard data: + +=over 4 + +=item * +text (C<CF_TEXT>) + +The clipboard contains some text; this is the B<only> format you can use to set +clipboard data; you get it as a single string. + +Example: + + $text = Win32::Clipboard::GetText(); + print $text; + +=item * +bitmap (C<CF_DIB>) + +The clipboard contains an image, either a bitmap or a picture copied in the +clipboard from a graphic application. The data you get is a binary buffer +ready to be written to a bitmap (BMP format) file. + +Example: + + $image = Win32::Clipboard::GetBitmap(); + open BITMAP, ">some.bmp"; + binmode BITMAP; + print BITMAP $image; + close BITMAP; + +=item * +list of files (C<CF_HDROP>) + +The clipboard contains files copied or cutted from an Explorer-like +application; you get a list of filenames. + +Example: + + @files = Win32::Clipboard::GetFiles(); + print join("\n", @files); + +=back + +=head2 REFERENCE + +All the functions can be used either with their full name (eg. B<Win32::Clipboard::Get>) +or as methods of a C<Win32::Clipboard> object. +For the syntax, refer to L</SYNOPSIS> above. Note also that you can create a clipboard +object and set its content at the same time with: + + $CLIP = Win32::Clipboard("blah blah blah"); + +or with the more common form: + + $CLIP = new Win32::Clipboard("blah blah blah"); + +If you prefer, you can even tie the Clipboard to a variable like this: + + tie $CLIP, 'Win32::Clipboard'; + + print "Clipboard content: $CLIP\n"; + + $CLIP = "some text to copy to the clipboard..."; + +In this case, you can still access other methods using the tied() function: + + tied($CLIP)->Empty; + print "got the picture" if tied($CLIP)->IsBitmap; + +=over 4 + +=item Empty() + +Empty the clipboard. + +=for html <P> + +=item EnumFormats() + +Returns an array of identifiers describing the format for the data currently in the +clipboard. Formats can be standard ones (described in the L</CONSTANTS> section) or +application-defined custom ones. See also IsFormatAvailable(). + +=for html <P> + +=item Get() + +Returns the clipboard content; note that the result depends on the nature of +clipboard data; to ensure that you get only the desired format, you should use +GetText(), GetBitmap() or GetFiles() instead. Get() is in fact implemented as: + + if( IsBitmap() ) { return GetBitmap(); } + elsif( IsFiles() ) { return GetFiles(); } + else { return GetText(); } + +See also IsBitmap(), IsFiles(), IsText(), EnumFormats() and IsFormatAvailable() +to check the clipboard format before getting data. + +=for html <P> + +=item GetAs(FORMAT) + +Returns the clipboard content in the desired FORMAT (can be one of the constants +defined in the L</CONSTANTS> section or a custom format). Note that the only +meaningful identifiers are C<CF_TEXT>, C<CF_DIB> and C<CF_HDROP>; any other +format is treated as a string. + +=for html <P> + +=item GetBitmap() + +Returns the clipboard content as an image, or C<undef> on errors. + +=for html <P> + +=item GetFiles() + +Returns the clipboard content as a list of filenames, or C<undef> on errors. + +=for html <P> + +=item GetFormatName(FORMAT) + +Returns the name of the specified custom clipboard format, or C<undef> on errors; +note that you cannot get the name of the standard formats (described in the +L</CONSTANTS> section). + +=for html <P> + +=item GetText() + +Returns the clipboard content as a string, or C<undef> on errors. + +=for html <P> + +=item IsBitmap() + +Returns a boolean value indicating if the clipboard contains an image. +See also GetBitmap(). + +=for html <P> + +=item IsFiles() + +Returns a boolean value indicating if the clipboard contains a list of +files. See also GetFiles(). + +=for html <P> + +=item IsFormatAvailable(FORMAT) + +Checks if the clipboard data matches the specified FORMAT (one of the constants +described in the L</CONSTANTS> section); returns zero if the data does not match, +a nonzero value if it matches. + +=for html <P> + +=item IsText() + +Returns a boolean value indicating if the clipboard contains text. +See also GetText(). + +=for html <P> + +=item Set(VALUE) + +Set the clipboard content to the specified string. + +=for html <P> + +=item WaitForChange([TIMEOUT]) + +This function halts the script until the clipboard content changes. If you specify +a C<TIMEOUT> value (in milliseconds), the function will return when this timeout +expires, even if the clipboard hasn't changed. If no value is given, it will wait +indefinitely. Returns 1 if the clipboard has changed, C<undef> on errors. + +=back + +=head2 CONSTANTS + +These constants are the standard clipboard formats recognized by Win32::Clipboard: + + CF_TEXT 1 + CF_DIB 8 + CF_HDROP 15 + +The following formats are B<not recognized> by Win32::Clipboard; they are, +however, exported constants and can eventually be used with the EnumFormats(), +IsFormatAvailable() and GetAs() functions: + + CF_BITMAP 2 + CF_METAFILEPICT 3 + CF_SYLK 4 + CF_DIF 5 + CF_TIFF 6 + CF_OEMTEXT 7 + CF_PALETTE 9 + CF_PENDATA 10 + CF_RIFF 11 + CF_WAVE 12 + CF_UNICODETEXT 13 + CF_ENHMETAFILE 14 + CF_LOCALE 16 + +=head1 AUTHOR + +This version was released by Hideyo Imazu <F<himazu@gmail.com>>. + +Aldo Calpini <F<dada@perl.it>> was the former maintainer. + +Original XS porting by Gurusamy Sarathy <F<gsar@activestate.com>>. + +=cut + + |