NAME
PDL::Graphics::Prima::ReadLine - allowing Prima and Term::ReadLine to play together
SYNOPSIS
# This pulls in PDL::Graphics::Prima::ReadLine, and
# associate's the PDL Shell's readline object if it
# exists:
use PDL::Graphics::Prima;
# Did it set up the readline event loop callback?
print "Set up Prima/ReadLine interaction\n"
if PDL::Graphics::Prima::ReadLine->is_setup;
# If you are not in the PDL shell, you can supply
# your own ReadLine object.
if (PDL::Graphics::Prima::ReadLine->is_happy_with($my_readline) {
PDL::Graphics::Prima::ReadLine->setup($my_readline);
}
# If you don't validate first, setup() may croak.
# In other words, instead of this:
if (PDL::Graphics::Prima::ReadLine->is_happy_with($my_readline) {
PDL::Graphics::Prima::ReadLine->setup($my_readline);
}
else {
die "Unable to setup Prima/ReadLine interaction\n";
}
# You could just say this instead:
PDL::Graphics::Prima::ReadLine->setup($my_readline);
DESCRIPTION
This module's job is to encapsulate the vagaries of setting up interaction between the Prima event loop and Term::ReadLine's event loop. Loading the module does not have any side-effects, and it is always loaded by PDL::Graphics::Prima. Furthermore, PDL::Graphics::Prima will set up the event loop interaction with the PDL shell if it detects the shell's ReadLine object.
Generally speaking, if you intend to have user interaction and want to use PDL::Graphics::Prima, you should probably just use Prima to build a simple interactive application. (Docmentation for getting started with this is coming soon, I promise.) However, if you want to integrate PDL::Graphics::Prima into a pluggable application that already uses Term::ReadLine, this module should make that procedure as straight-forward as one can hope.
PDL::Graphics::Prima::ReadLine
can only hook into the event loop for newer versions of Term::ReadLine (specifically, versions that support event_loop).
is_happy_with
If you want to set up the event loop interaction on your own ReadLine object, you can ask PDL::Graphics::Prima::ReadLine
if it can work with your object by calling the is_happy_with
class method and supplying your objects. This method returns a boolean value indicating whether or not the object can do what PDL::Graphics::Prima::ReadLine
needs:
if (PDL::Graphics::Prima::ReadLine->is_happy_with($my_readline) {
print "Setting up Prima/ReadLine interaction\n";
PDL::Graphics::Prima::ReadLine->setup($my_readline);
}
setup
To hook Prima's event loop into your ReadLine's event loop, you can call the setup
class method:
PDL::Graphics::Prima::ReadLine->setup($readline_obj);
This method may (should) fail if the ReadLine object provided cannot support the functionality needed for hooking Prima into ReadLine. This could happen either because your version of ReadLine is too old or because you are running on Windows, which is not (yet) supported by PDL::Graphics::Prima::ReadLine
.
SEE ALSO
For purposes of this module, you should check out Term::ReadLine. This module is implemented using Prima::File.
AUTHOR
David Mertens (dcmertens.perl@gmail.com)
ADDITIONAL MODULES
Here is the full list of modules in this distribution:
- PDL::Graphics::Prima
-
Defines the Plot widget for use in Prima applications
- PDL::Graphics::Prima::Axis
-
Specifies the behavior of axes (but not the scaling)
- PDL::Graphics::Prima::DataSet
-
Specifies the behavior of DataSets
- PDL::Graphics::Prima::Limits
-
Defines the lm:: namespace
- PDL::Graphics::Prima::Palette
-
Specifies a collection of different color palettes
- PDL::Graphics::Prima::PlotType
-
Defines the different ways to visualize your data
- PDL::Graphics::Prima::ReadLine
-
Encapsulates all interaction with the Term::ReadLine family of modules.
- PDL::Graphics::Prima::Scaling
-
Specifies different kinds of scaling, including linear and logarithmic
- PDL::Graphics::Prima::Simple
-
Defines a number of useful functions for generating simple and not-so-simple plots
- PDL::Graphics::Prima::SizeSpec
-
Compute pixel distances from meaningful units
LICENSE AND COPYRIGHT
Unless otherwise stated, all contributions in code and documentation are copyright (c) their respective authors, all rights reserved.
Portions of this module's code are copyright (c) 2011 The Board of Trustees at the University of Illinois.
Portions of this module's code are copyright (c) 2011-2013 Northwestern University.
Portions of this module's code are copyright (c) 2013-2014 Dickinson College.
This module's documentation is copyright (c) 2011-2014 David Mertens.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.