| Mac-Glue documentation | Contained in the Mac-Glue distribution. |
Mac::AETE::Dialect - reads the Macintosh Apple event dictionary from an Applescript dialect file.
use Mac::AETE::App;
use Mac::AETE::Dialect;
use Mac::AETE::Format::Dictionary;
$aeut = Dialect->new();
$aeut->read();
$app = App->new("My Application");
$formatter = Dictionary->new;
$app->set_format($formatter);
$app->read;
$app->merge($aeut);
$app->write;
The data in Dialect objects can be merged into a Parser or App object to make a complete Apple event dictionary. The module will locate the proper AppleScript dialect file in the system folder.
See Mac::AETE::Parser and Mac::AETE::App for more details.
Example:
use Mac::AETE::Dialect;
$app = Dialect->new;
(Inherited from Mac::AETE::Parser.)
Reads the data contained in the AETE resource or handle. Example:
$app->read;
Inherits from Mac::AETE::Parser.
David Schooley <dcschooley@mediaone.net>
| Mac-Glue documentation | Contained in the Mac-Glue distribution. |
# Copyright (c) 1999 David Schooley. All rights reserved. This program is # free software; you can redistribute it and/or modify it under the same # terms as Perl itself. package Mac::AETE::Dialect;
use strict; use Mac::AETE::Parser; use Mac::Memory; use Mac::Resources; use Mac::MoreFiles; use Mac::Files; use Carp; @Mac::AETE::Dialect::ISA = qw(Mac::AETE::Parser); sub _filter { my ($spec, $data) = @_; my ($creator, $type); my $return_value = 0; ($creator, $type) = MacPerl::GetFileInfo($spec); if ($creator && $type && $creator eq 'ascr' && $type eq 'dlct') { $$data = $spec; $return_value = 1; } $return_value; } sub new { my ($type, $dialect_file) = @_; my ($data, $path, $ref); my $self; if (!defined $dialect_file) { $path = FindFolder(kOnSystemDisk, kExtensionFolderType , kDontCreateFolder) || croak("Couldn't find the extensions folder"); $ref = \&_filter; FSpIterateDirectory($path, 2, $ref, \$dialect_file); if (!$dialect_file) { $path = FindFolder(kOnSystemDisk, kSystemFolderType , kDontCreateFolder) || croak("Couldn't find the system folder"); FSpIterateDirectory($path, 3, $ref, \$dialect_file); } } if ($dialect_file) { my $RF; if ($^O eq 'MacOS') { $RF = FSpOpenResFile($dialect_file, fsRdPerm); } else { $RF = FSOpenResourceFile($dialect_file, "rsrc", fsRdPerm) || FSOpenResourceFile($dialect_file, "data", fsRdPerm); } if (!defined($RF) || $RF == 0) { croak("No Resource Fork available for $dialect_file"); } my $aete_handle = Get1Resource("aeut", 0); if (!defined($aete_handle) || $aete_handle == 0) { croak("Application is not scriptable"); } $self = Mac::AETE::Parser->new($aete_handle, $dialect_file); $self->{_resource_fork} = $RF; } else { croak("Couldn't find a dialect file"); } return bless $self, $type; } sub DESTROY { my $self = shift; CloseResFile $self->{_resource_fork} if defined $self->{_resource_fork}; } sub init { my ($self) = @_; $self->{_handle_index} = 0; my $RF; if ($^O eq 'MacOS') { $RF = FSpOpenResFile($self->{_target}, fsRdPerm); } else { $RF = FSOpenResourceFile($self->{_target}, "rsrc", fsRdPerm) || FSOpenResourceFile($self->{_target}, "data", fsRdPerm); } if ( !defined($RF) || $RF == 0) { croak("No Resource Fork available for $self->{_target}"); } $self->{_resource_fork} = $RF; my $aete_handle = GetResource("aeut", 0); if (!defined($aete_handle) || $aete_handle == 0) { croak("Application is not scriptable"); } $self->{_resource} = $aete_handle; $self->{_inited} = 1; $DB::single = 1; } 1;