AAC-Pvoice
view release on metacpan or search on metacpan
0.3 minor documentation update in AAC::Pvoice::Bitmap
0.4 correction in AAC::Pvoice::Input to read individual bits
instead of the whole statusbyte from the parallel port
0.5 AAC::Pvoice::Input now no longer uses Win32::API. Now it uses
Device::ParallelPort, so it should be able to run on Linux now too.
0.6 AAC::Pvoice::Bitmap now returns a wxNullBitmap if the resize-factor
is 0 to prevent 'illegal division by zero'
AAC::Pvoice::EditableRow now has some sensible defaults to prevent
'Use of uninitialized value' warnings
AAC::Pvoice::Input can now handle one button input
0.7 AAC::Pvoice::Input
* now allows keyboard input
* now allows direct mouseclicks on the buttons
AAC::Pvoice::Panel
* now uses a round cornered background and
* no longer simply sets the background for the normal and
selected state, but draws a round cornered border around
lib/AAC/Pvoice/Bitmap.pm view on Meta::CPAN
$pt--;
} until ($textwidth < $x) && ($textheight < $y/5);
$background->Annotate(text => $caption, font => 'Comic-Sans-MS', pointsize => $pt, gravity => 'South');
}
# Read the actual image
my $img = Image::Magick->new;
my $rc = $img->Read($file);
carp "Can't read $file: $rc" if $rc;
# wmf files have a white background color by default
# if we can't get the matte color for the image, we assume
# that white can be used as the transparent color...
$img->Transparent(color => 'white') if (!$img->Get('matte') || $file =~ /wmf$/i);
my $w = $img->Get('width');
my $h = $img->Get('height');
my $ch = $textheight;
if (($w > $x) || ($h > ($y-$ch)))
{
my ($newx, $newy) = ($w, $h);
if ($w > $x)
lib/AAC/Pvoice/Input.pm view on Meta::CPAN
sub new
{
my $proto = shift;
my $class = ref($proto) || $proto;
my $self = {};
bless $self, $class;
$self->{window} = shift;
# We get the configuration from the Windows registry
# If it's not initialized, we provide some defaults
$self->{window}->{config} = Wx::ConfigBase::Get || croak "Can't get Config";
# Get the input-device
# icon = mouse left/right buttons
# adremo = electric wheelchair adremo
# keys = keystrokes
$self->{window}->{Device} = $self->{window}->{config}->Read('Device', 'icon');
$self->{window}->{Interval} = $self->{window}->{config}->ReadInt('Interval', 10);
$self->{window}->{Buttons} = $self->{window}->{config}->ReadInt('Buttons', 2);
lib/AAC/Pvoice/Input.pm view on Meta::CPAN
sub newchild
{
my $proto = shift;
my $class = ref($proto) || $proto;
my $self = {};
bless $self, $class;
$self->{window} = shift;
# We get the configuration from the Windows registry
# If it's not initialized, we provide some defaults
$self->{window}->{config} = Wx::ConfigBase::Get || croak "Can't get Config";
# Get the input-device
# icon = mouse left/right buttons
# adremo = electric wheelchair adremo
# keys = keystrokes
$self->{window}->{Device} = $self->{window}->{config}->Read('Device', 'icon');
$self->_initkeys;
$self->_initicon;
lib/AAC/Pvoice/Input.pm view on Meta::CPAN
__END__
=head1 NAME
AAC::Pvoice::Input - A class that handles the input that controls a pVoice-like application
=head1 SYNOPSIS
# this module will normally not be called directly. It's called from
# AAC::Pvoice::Panel by default
=head1 DESCRIPTION
AAC::Pvoice::Input allows one or two button operation of an AAC::Pvoice based
application.
The module uses Device::ParallelPort, so it should be able to run
on Win32 as well as Linux platforms.
=head1 USAGE
lib/AAC/Pvoice/Input.pm view on Meta::CPAN
If the key 'Device' is set to 'icon' it will respond to the left and right
mouse button, and if it's set to 'keys' it will respond to the configuration
keys 'SelectKey' and 'NextKey' (which are the keyboard codes for the 'select'
and 'next' events respectively.
AAC::Pvoice::Input has the ability to operate with either one or two buttons.
If you want to use only one button, you need to set the configuration key "Buttons"
to 1, and it will automatically invoke the subroutine you pass to Next()
at an interval of the value set in the configuration key OneButtonInterval (set in milliseconds).
The default for is to operate in two button mode, and if OneButtonInterval is not
set, it will use a default of 2000 milliseconds if "Buttons" is set to 1.
=head2 newchild($window)
This semi-constructor takes the window (usually a child of the panel you
passed to the new() constructor, on which the events will be called as a parameter.
It doesn't start the timers for polling the parallel port and automatic
invocation of the Next() subroutine, because those timers otherwise would
be started multiple times.
Apart from starting those timers, this method works exactly like the new()
lib/AAC/Pvoice/Panel.pm view on Meta::CPAN
0,
'Comic Sans MS', # face name
wxFONTENCODING_SYSTEM)) unless $self->TitleFont;
$self->AddTitle('');
my $usableysize = $y - 2*$self->{title}->GetSize()->GetHeight();
# If we want to use a textrow, we have to subtract another 60
# pixels from the y size, since the textrow is always 60 pixels high.
$usableysize-=60 unless $self->{disabletextrow};
$self->ysize($usableysize);
}
# set the default colours...these can of course be changed...
$self->SelectColour(Wx::Colour->new(255,131,131));
$self->BackgroundColour(Wx::Colour->new(220,220,220));
$self->SetSizer($self->{tls});
$self->SetAutoLayout(1);
$self->{displaytextsave} = [];
$self->{speechtextsave} = [];
# Initialize the input stuff
lib/AAC/Pvoice/Panel.pm view on Meta::CPAN
takes a Wx::Colour (or a predefined colour constant) as a parameter.
=head2 BackgroundColour(Wx::Colour)
This gets or sets the normal backgroundcolour. It
takes a Wx::Colour (or a predefined colour constant) as a parameter.
=head2 AddTitle(title)
This method sets the title of the page and draws it on the AAC::Pvoice::Panel.
By default it uses the Comic Sans MS font at a size of 18pt. You can change
this using TitleFont.
=head2 TitleFont(Wx::Font)
This method gets or sets the Wx::Font used to write the Title.
=head2 Append(row, unselectable)
This method adds a row (AAC::Pvoice::Row or any subclass of Wx::Window) to
the panel. If this row shouldn't be selectable by the user, you should set
( run in 0.255 second using v1.01-cache-2.11-cpan-0a6323c29d9 )