I got FM Pro 4.0 in the mail today. Ran my glue on it. I never use FMP really, but I thought others out there might want to play with this. You need the Mac::Glue module I put online already. I made one manual change: the open() event originally said it took an AE object, but it made more sense to change that to TEXT, as that is what AppleScript sends (according to Capture AE). Have fun. This is very alpha. I am most interested in your feedback, especially in regards to interface, discrepancies in this module from what reality, etc. package Mac::Glue::FileMaker_Pro; use strict; use vars qw($VERSION $APP %EVENT %CLASS @ISA); use Mac::Glue; use Mac::AppleEvents; use Carp; @ISA = qw(Mac::Glue); $VERSION = '0.01'; sub new { bless { 'APP' => $APP, 'EVENT' => \%EVENT, 'CLASS' => \%CLASS, 'SWITCH' => 1 }, shift } $APP = 'FMP3'; %EVENT = ( # FileMaker Suite 'find' => {'class' => 'FMPR', 'event' => 'FIND', 'params' => [ ['----', keyDirectObject(), 'obj ', 1, 0, 0, 1], ]}, 'go_to' => {'class' => 'FMPR', 'event' => 'GOTO', 'params' => [ ['----', keyDirectObject(), 'obj ', 1, 0, 0, 1], ]}, # Required Suite # Subset of the Core, Table, and Database suites 'begin_transaction' => {'class' => 'misc', 'event' => 'begi', 'params' => [ ['----', keyDirectObject(), 'null', 0, 0, 0, 1], ]}, 'class_info' => {'class' => 'core', 'event' => 'qobj', 'params' => [ ['----', keyDirectObject(), 'type', 0, 0, 0, 0], ['in', 'wrcd', 'intl', 0, 0, 0], ]}, 'close' => {'class' => 'core', 'event' => 'clos', 'params' => [ ['----', keyDirectObject(), 'obj ', 1, 0, 0, 1], ]}, 'copy' => {'class' => 'misc', 'event' => 'copy', 'params' => [ ['----', keyDirectObject(), 'null', 0, 0, 0, 1], ]}, 'count' => {'class' => 'core', 'event' => 'cnte', 'params' => [ ['----', keyDirectObject(), 'obj ', 1, 0, 0, 0], ['class', 'kocl', 'type', 1, 0, 0], ]}, 'create' => {'class' => 'core', 'event' => 'crel', 'params' => [ ['----', keyDirectObject(), 'null', 0, 0, 0, 1], ['at', 'insh', 'insl', 0, 0, 0], ['with_data', 'data', '****', 0, 0, 0], ['with_properties', 'prdt', 'reco', 0, 0, 0], ['new', 'kocl', 'type', 1, 0, 0], ]}, 'cut' => {'class' => 'misc', 'event' => 'cut ', 'params' => [ ['----', keyDirectObject(), 'null', 0, 0, 0, 1], ]}, 'data_size' => {'class' => 'core', 'event' => 'dsiz', 'params' => [ ['----', keyDirectObject(), 'obj ', 1, 0, 0, 0], ['as', 'rtyp', 'type', 0, 0, 0], ]}, 'delete' => {'class' => 'core', 'event' => 'delo', 'params' => [ ['----', keyDirectObject(), 'obj ', 1, 0, 0, 1], ]}, 'do_menu' => {'class' => 'misc', 'event' => 'menu', 'params' => [ ['----', keyDirectObject(), '****', 1, 0, 0, 1], ['menu_named', 'menn', 'TEXT', 0, 0, 0], ]}, 'do_script' => {'class' => 'misc', 'event' => 'dosc', 'params' => [ ['----', keyDirectObject(), 'TEXT', 1, 0, 0, 1], ]}, 'duplicate' => {'class' => 'core', 'event' => 'clon', 'params' => [ ['----', keyDirectObject(), 'obj ', 1, 0, 0, 1], ['to', 'insh', 'insl', 0, 0, 0], ]}, 'end_transaction' => {'class' => 'misc', 'event' => 'endt', 'params' => [ ['----', keyDirectObject(), 'null', 0, 0, 0, 1], ]}, 'event_info' => {'class' => 'core', 'event' => 'gtei', 'params' => [ ['----', keyDirectObject(), 'type', 1, 0, 0, 0], ['in', 'wrcd', 'intl', 0, 0, 0], ]}, 'exists' => {'class' => 'core', 'event' => 'doex', 'params' => [ ['----', keyDirectObject(), 'obj ', 1, 0, 0, 0], ]}, 'get_data' => {'class' => 'core', 'event' => 'getd', 'params' => [ ['----', keyDirectObject(), 'obj ', 1, 0, 0, 0], ['as', 'rtyp', 'type', 0, 1, 0], ]}, 'open' => {'class' => 'aevt', 'event' => 'odoc', 'params' => [ ['----', keyDirectObject(), 'TEXT', 1, 0, 0, 1], ['with_password', 'pPAS', 'TEXT', 0, 0, 0], ]}, 'paste' => {'class' => 'misc', 'event' => 'past', 'params' => [ ['----', keyDirectObject(), 'null', 0, 0, 0, 1], ]}, 'print' => {'class' => 'aevt', 'event' => 'pdoc', 'params' => [ ['----', keyDirectObject(), 'obj ', 1, 0, 0, 0], ]}, 'quit' => {'class' => 'aevt', 'event' => 'quit', 'params' => [ ['----', keyDirectObject(), 'null', 0, 0, 0, 1], ]}, 'redo' => {'class' => 'misc', 'event' => 'redo', 'params' => [ ['----', keyDirectObject(), 'null', 0, 0, 0, 1], ]}, 'save' => {'class' => 'core', 'event' => 'save', 'params' => [ ['----', keyDirectObject(), 'obj ', 1, 0, 0, 1], ]}, 'set_data' => {'class' => 'core', 'event' => 'setd', 'params' => [ ['----', keyDirectObject(), 'obj ', 1, 0, 0, 1], ['to', 'data', '****', 1, 0, 0], ]}, 'show' => {'class' => 'misc', 'event' => 'mvis', 'params' => [ ['----', keyDirectObject(), 'obj ', 1, 0, 0, 1], ]}, 'sort' => {'class' => 'DATA', 'event' => 'SORT', 'params' => [ ['----', keyDirectObject(), 'obj ', 1, 0, 0, 1], ['in_order', 'SRTT', 'sort', 0, 0, 1], ['by', 'SRTE', 'obj ', 0, 0, 0], ]}, 'undo' => {'class' => 'misc', 'event' => 'undo', 'params' => [ ['----', keyDirectObject(), 'null', 0, 0, 0, 1], ]}, # URL Suite 'getURL' => {'class' => 'GURL', 'event' => 'GURL', 'params' => [ ['----', keyDirectObject(), 'TEXT', 1, 0, 0, 0], ]}, ); %CLASS = ( # FileMaker Suite 'menu' => {'id' => 'cmnu', 'properties' => [ ['best_type', 'pbst', 'type', 0, 0, 0], ['name', 'pnam', 'itxt', 0, 0, 1], ['enabled', 'enbl', 'bool', 0, 0, 1], ['ID', 'ID ', 'shor', 0, 0, 0], ['class', 'pcls', 'type', 0, 0, 0], ['default_type', 'deft', 'type', 0, 0, 0], ], 'elements' => { 'cmnu' => ['indx', 'name'], 'cmen' => ['indx', 'name'], }}, 'menu_item' => {'id' => 'cmen', 'properties' => [ ['item_number', 'itmn', 'shor', 0, 0, 0], ['best_type', 'pbst', 'type', 0, 0, 0], ['name', 'pnam', 'itxt', 0, 0, 1], ['enabled', 'enbl', 'bool', 0, 0, 1], ['ID', 'ID ', 'long', 0, 0, 1], ['class', 'pcls', 'type', 0, 0, 0], ['notify_address', 'pADR', 'targ', 0, 0, 1], ['checked', 'pCHK', 'bool', 0, 0, 1], ['default_type', 'deft', 'type', 0, 0, 0], ], 'elements' => { }}, 'menu_items' => {'id' => 'cmen', 'properties' => [ ['class_attributes', 'c@#!', 'type', 0, 0, 0], ], 'elements' => { }}, 'menus' => {'id' => 'cmnu', 'properties' => [ ['class_attributes', 'c@#!', 'type', 0, 0, 0], ], 'elements' => { }}, 'request' => {'id' => 'cRQT', 'properties' => [ ['best_type', 'pbst', 'type', 0, 0, 0], ['name', 'pnam', 'itxt', 0, 0, 0], ['ID', 'ID ', 'doub', 0, 0, 0], ['omitted', 'pOMT', 'bool', 0, 0, 1], ['class', 'pcls', 'type', 0, 0, 0], ['default_type', 'deft', 'type', 0, 0, 0], ], 'elements' => { 'ccel' => ['name', 'indx', 'rele', 'rang', 'test', 'ID '], }}, 'requests' => {'id' => 'cRQT', 'properties' => [ ['class_attributes', 'c@#!', 'type', 0, 0, 0], ], 'elements' => { }}, # Required Suite # Subset of the Core, Table, and Database suites 'FileMaker_script' => {'id' => 'cSCP', 'properties' => [ ['best_type', 'pbst', 'type', 0, 0, 0], ['name', 'pnam', 'itxt', 0, 0, 0], ['ID', 'ID ', 'doub', 0, 0, 0], ['class', 'pcls', 'type', 0, 0, 0], ['default_type', 'deft', 'type', 0, 0, 0], ], 'elements' => { }}, 'FileMaker_scripts' => {'id' => 'cSCP', 'properties' => [ ['class_attributes', 'c@#!', 'type', 0, 0, 0], ], 'elements' => { }}, 'application' => {'id' => 'capp', 'properties' => [ ['best_type', 'pbst', 'type', 0, 0, 0], ['name', 'pnam', 'itxt', 0, 0, 0], ['frontmost', 'pisf', 'bool', 0, 0, 0], ['version', 'vers', 'vers', 0, 0, 0], ['class', 'pcls', 'type', 0, 0, 0], ['default_type', 'deft', 'type', 0, 0, 0], ], 'elements' => { 'cwin' => ['indx', 'name'], 'cmnu' => ['name', 'indx'], 'docu' => ['indx', 'name'], }}, 'applications' => {'id' => 'capp', 'properties' => [ ['class_attributes', 'c@#!', 'type', 0, 0, 0], ], 'elements' => { }}, 'cell' => {'id' => 'ccel', 'properties' => [ ['best_type', 'pbst', 'type', 0, 0, 0], ['name', 'pnam', 'TEXT', 0, 0, 0], ['formula', 'pfor', 'TEXT', 0, 0, 0], ['class', 'pcls', 'type', 0, 0, 0], ['protection', 'ppro', 'prtn', 0, 1, 0], ['default_type', 'deft', 'type', 0, 0, 0], ['lock', 'pLCK', 'lock', 0, 1, 0], ['repeat_size', 'pRPS', 'long', 0, 0, 0], ['ID', 'ID ', 'list', 0, 0, 0], ['cellValue', 'vlue', 'TEXT', 0, 0, 1], ['globalValue', 'pGLL', 'bool', 0, 0, 0], ['choices', 'pCHS', 'list', 0, 0, 0], ], 'elements' => { }}, 'cells' => {'id' => 'ccel', 'properties' => [ ['class_attributes', 'c@#!', 'type', 0, 0, 0], ], 'elements' => { }}, 'database' => {'id' => 'cDB ', 'properties' => [ ['best_type', 'pbst', 'type', 0, 0, 0], ['current_layout', 'pCLY', 'obj ', 0, 0, 1], ['lock', 'pLCK', 'lock', 0, 1, 0], ['name', 'pnam', 'itxt', 0, 0, 0], ['multiuser', 'pMUr', 'bool', 0, 0, 1], ['access', 'pACS', 'accs', 0, 1, 0], ['current_record', 'pCRW', 'obj ', 0, 0, 1], ['class', 'pcls', 'type', 0, 0, 0], ['default_type', 'deft', 'type', 0, 0, 0], ], 'elements' => { 'cSCP' => ['name', 'indx', 'rele', 'rang', 'test', 'ID '], 'ctbl' => ['name', 'indx', 'rele', 'rang', 'test', 'ID '], }}, 'databases' => {'id' => 'cDB ', 'properties' => [ ['class_attributes', 'c@#!', 'type', 0, 0, 0], ], 'elements' => { }}, 'document' => {'id' => 'docu', 'properties' => [ ['best_type', 'pbst', 'type', 0, 0, 0], ['modified', 'imod', 'bool', 0, 0, 0], ['name', 'pnam', 'itxt', 0, 0, 0], ['class', 'pcls', 'type', 0, 0, 0], ['default_type', 'deft', 'type', 0, 0, 0], ], 'elements' => { 'cSCP' => ['name', 'indx', 'rele', 'rang', 'test', 'ID '], 'cDB_' => ['name', 'indx'], 'cwin' => ['indx', 'name'], }}, 'documents' => {'id' => 'docu', 'properties' => [ ['class_attributes', 'c@#!', 'type', 0, 0, 0], ], 'elements' => { }}, 'field' => {'id' => 'ccol', 'properties' => [ ['best_type', 'pbst', 'type', 0, 0, 0], ['name', 'pnam', 'TEXT', 0, 0, 0], ['access', 'pACS', 'accs', 0, 1, 0], ['unique_value', 'pUNQ', 'bool', 0, 0, 0], ['repeats', 'pRPT', 'enum', 0, 0, 0], ['formula', 'pfor', 'TEXT', 0, 0, 0], ['class', 'pcls', 'type', 0, 0, 0], ['protection', 'ppro', 'prtn', 0, 1, 0], ['default_type', 'deft', 'type', 0, 0, 0], ['nulls_OK', 'pNLS', 'bool', 0, 0, 0], ['lock', 'pLCK', 'lock', 0, 1, 0], ['repeat_size', 'pRPS', 'long', 0, 0, 0], ['ID', 'ID ', 'doub', 0, 0, 0], ['globalValue', 'pGLL', 'bool', 0, 0, 0], ['choices', 'pCHS', 'list', 0, 0, 0], ], 'elements' => { 'ccel' => ['name', 'indx', 'rele', 'rang', 'test', 'ID '], }}, 'fields' => {'id' => 'ccol', 'properties' => [ ['class_attributes', 'c@#!', 'type', 0, 0, 0], ], 'elements' => { }}, 'layout' => {'id' => 'ctbl', 'properties' => [ ['best_type', 'pbst', 'type', 0, 0, 0], ['lock', 'pLCK', 'lock', 0, 1, 0], ['name', 'pnam', 'itxt', 0, 0, 0], ['access', 'pACS', 'accs', 0, 1, 0], ['ID', 'ID ', 'doub', 0, 0, 0], ['visible', 'pvis', 'bool', 0, 0, 0], ['kind', 'pKND', 'tblt', 0, 1, 0], ['class', 'pcls', 'type', 0, 0, 0], ['protection', 'ppro', 'prtn', 0, 1, 0], ['default_type', 'deft', 'type', 0, 0, 0], ], 'elements' => { 'ccol' => ['name', 'indx', 'rele', 'rang', 'test', 'ID '], 'cRQT' => ['name', 'indx', 'rele', 'rang', 'test', 'ID '], 'crow' => ['name', 'indx', 'rele', 'rang', 'test', 'ID '], 'ccel' => ['name', 'indx', 'rele', 'rang', 'test', 'ID '], }}, 'layouts' => {'id' => 'ctbl', 'properties' => [ ['class_attributes', 'c@#!', 'type', 0, 0, 0], ], 'elements' => { }}, 'record' => {'id' => 'crow', 'properties' => [ ['best_type', 'pbst', 'type', 0, 0, 0], ['name', 'pnam', 'itxt', 0, 0, 0], ['access', 'pACS', 'accs', 0, 1, 0], ['class', 'pcls', 'type', 0, 0, 0], ['protection', 'ppro', 'prtn', 0, 1, 0], ['default_type', 'deft', 'type', 0, 0, 0], ['lock', 'pLCK', 'lock', 0, 1, 0], ['ID', 'ID ', 'doub', 0, 0, 0], ], 'elements' => { 'ccel' => ['name', 'indx', 'rele', 'rang', 'test', 'ID '], }}, 'records' => {'id' => 'crow', 'properties' => [ ['class_attributes', 'c@#!', 'type', 0, 0, 0], ], 'elements' => { }}, 'window' => {'id' => 'cwin', 'properties' => [ ['best_type', 'pbst', 'type', 0, 0, 0], ['resizable', 'prsz', 'bool', 0, 0, 0], ['name', 'pnam', 'itxt', 0, 0, 0], ['has_title_bar', 'ptit', 'bool', 0, 0, 0], ['floating', 'isfl', 'bool', 0, 0, 0], ['class', 'pcls', 'type', 0, 0, 0], ['default_type', 'deft', 'type', 0, 0, 0], ['index', 'pidx', 'long', 0, 0, 0], ['zoomable', 'iszm', 'bool', 0, 0, 0], ['has_close_box', 'hclb', 'bool', 0, 0, 0], ['bounds', 'pbnd', 'qdrt', 0, 0, 1], ['modal', 'pmod', 'bool', 0, 0, 0], ['zoomed', 'pzum', 'bool', 0, 0, 1], ['visible', 'pvis', 'bool', 0, 0, 1], ], 'elements' => { 'cDB_' => ['name', 'indx'], 'cSCP' => ['name', 'indx', 'rele', 'rang', 'test', 'ID '], 'docu' => ['name', 'indx'], }}, 'windows' => {'id' => 'cwin', 'properties' => [ ['class_attributes', 'c@#!', 'type', 0, 0, 0], ], 'elements' => { }}, # URL Suite ); __END__ -- Chris Nandor mailto:pudge@pobox.com http://pudge.net/ %PGPKey = ('B76E72AD', [1024, '0824090B CE73CA10 1FF77F13 8180B6B6']) ***** Want to unsubscribe from this list? ***** Send mail with body "unsubscribe" to mac-perl-request@iis.ee.ethz.ch