1 line
88 KiB
C
Executable File
1 line
88 KiB
C
Executable File
/* Copyright (c) 2017, Computer History Museum
|
|
All rights reserved.
|
|
Redistribution and use in source and binary forms, with or without modification, are permitted (subject to
|
|
the limitations in the disclaimer below) provided that the following conditions are met:
|
|
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
|
|
disclaimer in the documentation and/or other materials provided with the distribution.
|
|
* Neither the name of Computer History Museum nor the names of its contributors may be used to endorse or promote products
|
|
derived from this software without specific prior written permission.
|
|
NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE
|
|
COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
|
DAMAGE. */
|
|
|
|
/* ==================================================================================
|
|
|
|
Eudora Extended Message Services API SDK Macintosh
|
|
This SDK supports EMSAPI version 7
|
|
Copyright 1995-2003 QUALCOMM Inc.
|
|
Send comments and questions to <eudora-emsapi@qualcomm.com>
|
|
|
|
Filename: emsapi-mac.h
|
|
|
|
#ifdef INTERNAL_FOR_QC
|
|
Internal Only Note
|
|
==================
|
|
This version of emsapi-mac.h is used to build both Eudora and QUALCOMM
|
|
internal plug-ins. In addition to controlling what portions of this
|
|
file are used when building, #ifdefs with specific #defines or
|
|
comments also control the creation of an external stripped down
|
|
version of this file by a Perl script.
|
|
|
|
The following preprocessor controls are also used by the Perl script
|
|
(#'s dropped to avoid potentially confusing the script):
|
|
* ifdef INTERNAL_FOR_QC
|
|
marks the start of definitions that are internal only -
|
|
i.e. only for use by Eudora and QUALCOMM plugins
|
|
* else // EXTERNAL_FOR_PUBLIC
|
|
closes definitions that are internal only and starts definitions
|
|
that are external only - i.e. for public use
|
|
* endif // INTERNAL_FOR_QC
|
|
closes definitions that are internal only -
|
|
i.e. only for use by Eudora and QUALCOMM plugins
|
|
* endif // EXTERNAL_FOR_PUBLIC
|
|
closes definitions that are external only - i.e. for public use
|
|
* ifdef INTERNAL_FOR_EUDORA
|
|
marks the start of definitions that are internal only for Eudora
|
|
(not for any plugin use, including QUALCOMM's)
|
|
* else // EXTERNAL_FOR_PLUGINS
|
|
closes definitions that are internal only for Eudora and starts
|
|
definitions that are external for plugin use (including QUALCOMM's)
|
|
* endif // INTERNAL_FOR_EUDORA
|
|
closes definitions that are internal only for Eudora
|
|
(not for any plugin use, including QUALCOMM's)
|
|
* endif // EXTERNAL_FOR_PLUGINS
|
|
closes definitions that are external for plugin use (including QUALCOMM's)
|
|
|
|
|
|
Both INTERNAL_FOR_QC and INTERNAL_FOR_EUDORA are #define'd by ems-wglu.h,
|
|
which in turn includes this file. To build a QC internal plug-in #define
|
|
just INTERNAL_FOR_QC.
|
|
|
|
One other thing the Perl script looks for:
|
|
* <-SBL-> when used after a recognized #endif the script will skip the
|
|
next line if it's blank
|
|
|
|
Note that although the #ifdef above and #else & #endif below don't matter
|
|
for the C building of this file, they are used by the Perl script as
|
|
an easy way to strip out this internal only note leaving only the external
|
|
note.
|
|
|
|
End of Internal Only Note. Next section is the external note that will
|
|
remain in the public version of this file.
|
|
#else // EXTERNAL_FOR_PUBLIC
|
|
Note: this file is generated automatically by a script and must be
|
|
kept in synch with other translation API definitions, so it should
|
|
probably never be edited manually.
|
|
#endif // EXTERNAL_FOR_PUBLIC
|
|
|
|
/* =================================================================================== */
|
|
|
|
#ifndef __EMS_MAC__
|
|
#define __EMS_MAC__
|
|
|
|
#if PRAGMA_STRUCT_ALIGN
|
|
#pragma options align=mac68k
|
|
#endif
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
|
|
#if PRAGMA_IMPORT_SUPPORTED
|
|
#pragma import on
|
|
#endif
|
|
|
|
// Define BUILDING_CARBON_PLUGIN to be false - Eudora doesn't need the carbon
|
|
// plugin declarations, but it does need the classic support declarations.
|
|
#define BUILDING_CARBON_PLUGIN 0
|
|
|
|
#else // EXTERNAL_FOR_PLUGINS
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#endif // EXTERNAL_FOR_PLUGINS <-SBL->
|
|
|
|
#ifndef BUILDING_CARBON_PLUGIN
|
|
#if TARGET_API_MAC_CARBON
|
|
#define BUILDING_CARBON_PLUGIN 1
|
|
#endif
|
|
#endif
|
|
|
|
/* ===== CONSTANTS AND RETURN VALUES ================================================= */
|
|
|
|
/* ----- Translator return codes --- store as a long --------------------------------- */
|
|
#define EMSR_OK (0L) /* The translation operation succeeded */
|
|
#define EMSR_UNKNOWN_FAIL (1L) /* Failed for unspecified reason */
|
|
#define EMSR_CANT_TRANS (2L) /* Don't know how to translate this */
|
|
#define EMSR_INVALID_TRANS (3L) /* The translator ID given was invalid */
|
|
#define EMSR_NO_ENTRY (4L) /* The value requested doesn't exist */
|
|
#define EMSR_NO_INPUT_FILE (5L) /* Couldn't find input file */
|
|
#define EMSR_CANT_CREATE (6L) /* Couldn't create the output file */
|
|
#define EMSR_TRANS_FAILED (7L) /* The translation failed. */
|
|
#define EMSR_INVALID (8L) /* Invalid argument(s) given */
|
|
#define EMSR_NOT_NOW (9L) /* Translation can be done not in current context */
|
|
#define EMSR_NOW (10L) /* Indicates translation can be performed right away */
|
|
#define EMSR_ABORTED (11L) /* Translation was aborted by user */
|
|
#define EMSR_DATA_UNCHANGED (12L) /* Trans OK, data was not changed */
|
|
#ifdef INTERNAL_FOR_QC
|
|
#define EMSR_NOT_INTERESTED (13L) /* V5! Peanut Not now, but not in DISPLAY? */
|
|
#define EMSR_USER_CANCELLED (14L) /* V5! User cancelled */
|
|
#define EMSR_DELETE_MESSAGE (15L) /* V6! Translation complete, delete parent message */
|
|
#endif // INTERNAL_FOR_QC
|
|
#define EMSR_NOT_IN_THIS_MODE (16L) /* V6+ Can't perform this operation in this mode (free, ad, paid) */
|
|
|
|
/* ----- Translator types --- store as a long ---------------------------------------- */
|
|
#define EMST_NO_TYPE (-1L)
|
|
#define EMST_LANGUAGE (0x10L)
|
|
#define EMST_TEXT_FORMAT (0x20L)
|
|
#define EMST_GRAPHIC_FORMAT (0x30L)
|
|
#define EMST_COMPRESSION (0x40L)
|
|
#define EMST_COALESCED (0x50L)
|
|
#define EMST_SIGNATURE (0x60L)
|
|
#define EMST_PREPROCESS (0x70L)
|
|
#define EMST_CERT_MANAGEMENT (0x80L)
|
|
#ifdef INTERNAL_FOR_QC
|
|
#define EMST_IMPORTER (0x90L)
|
|
#endif // INTERNAL_FOR_QC
|
|
|
|
|
|
/* ----- Translator info flags and contexts --- store as a long ---------------------- */
|
|
/* Used both as bit flags and as constants */
|
|
#define EMSF_ON_ARRIVAL (0x0001L) /* Call on message arrival */
|
|
#define EMSF_ON_DISPLAY (0x0002L) /* Call when user views message */
|
|
#define EMSF_ON_REQUEST (0x0004L) /* Call when selected from menu */
|
|
#define EMSF_Q4_COMPLETION (0x0008L) /* Queue and call on complete composition of a message */
|
|
#define EMSF_Q4_TRANSMISSION (0x0010L) /* Queue and call on transmission of a message */
|
|
#define EMSF_JUNK_MAIL (0x0020L) /* Call for scoring or marking a message as junk or not (NEW in Eudora 6.0/EMSAPI 7.0) */
|
|
#define EMSF_WHOLE_MESSAGE (0x0200L) /* Works on the whole message even if it has sub-parts. (e.g. signature) */
|
|
#define EMSF_REQUIRES_MIME (0x0400L) /* Items presented for translation should be MIME entities with canonical
|
|
end of line representation, proper transfer encoding and headers */
|
|
#define EMSF_GENERATES_MIME (0x0800L) /* Data produced will be MIME format */
|
|
#define EMSF_ALL_HEADERS (0x1000L) /* All headers in & out of trans when MIME format is used */
|
|
#define EMSF_BASIC_HEADERS (0x2000L) /* Just the basic to, from, subject, cc, bcc headers */
|
|
#define EMSF_DEFAULT_Q_ON (0x4000L) /* Causes queued translation to be on for a new message by default */
|
|
#define EMSF_TOOLBAR_PRESENCE (0x8000L) /* Appear on the Toolbar */
|
|
#define EMSF_ALL_TEXT (0x10000L) /* ON_REQUEST WANTS WHOLE MESSAGE */
|
|
#define EMSF_PREFER_PLAIN (0x100000L) /* EMSF_JUNK_MAIL prefers plain text (NEW in Eudora 6.0/EMSAPI 7.0) - more efficient when off */
|
|
//
|
|
#ifdef INTERNAL_FOR_QC
|
|
#define EMSF_DONTSAVE (0x80000000L) /* Mark messages as unchanged so user is not prompted for save.
|
|
Add to any return code */
|
|
#endif // INTERNAL_FOR_QC
|
|
/* all other flag bits in the long are RESERVED and may not be used */
|
|
|
|
|
|
/* ----- The version of the API defined by this include file ------------------------- */
|
|
#define EMS_VERSION (7) /* Used in plugin init */
|
|
#ifdef INTERNAL_FOR_QC
|
|
#define EMS_NEW_MAIL_CONFIG_VERSION (7) /* Used to determine whether the new or old mail config struct should be used */
|
|
#define EMS_MINOR_VERSION (0) /* Used to provide the minor EMSAPI version in emsMailConfig */
|
|
#endif // INTERNAL_FOR_QC
|
|
#define EMS_COMPONENT 'EuTL' /* Macintosh component type */
|
|
#define EMS_COMPONENT_OSX 'EcTL' /* Macintosh component type for Carbon OSX builds */
|
|
#define EMS_PB_VERSION (3) /* Minimum version that uses parameter blocks */
|
|
|
|
|
|
/* ----- Translator and translator type specific return codes ------------------------ */
|
|
#define EMSC_SIGOK (1L) /* A signature verification succeeded */
|
|
#define EMSC_SIGBAD (2L) /* A signature verification failed */
|
|
#define EMSC_SIGUNKNOWN (3L) /* Result of verification unknown */
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - IDLE Events --------------------------------- */
|
|
/* Note that it is possible to have both EMSIDLE_UI_ALLOWED and EMSIDLE_QUICK set, in that
|
|
* case the plug-in should only do a UI operation if it's absolutely essential (i.e., errors only).
|
|
* If EMSIDLE_UI_ALLOWED is NOT set, then using the progress
|
|
*/
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - Values for ems_idle flags -------------------- */
|
|
#define EMSFIDLE_UI_ALLOWED (0x0001L) /* Interactions with user are allowed */
|
|
#define EMSFIDLE_QUICK (0x0002L) /* Now is NOT the time to do something lengthy */
|
|
#define EMSFIDLE_OFFLINE (0x0004L) /* Eudora is in "offline" mode */
|
|
#define EMSFIDLE_PRE_SEND (0x0008L) /* Eudora is about to send mail */
|
|
#define EMSFIDLE_TRANSFERRING (0x0010L) /* Currently transferring mail */
|
|
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - Values for emsGetMailBox flags --------------- */
|
|
#define EMSFGETMBOX_ALLOW_NEW (0x0001L) /* Allow creation of new mailboxes */
|
|
#define EMSFGETMBOX_ALLOW_OTHER (0x0002L) /* Allow selection of "other" mailboxes */
|
|
#define EMSFGETMBOX_DISALLOW_NON_LOCAL (0x0004L) /* Disallow selection of non-local (e.g. IMAP) mailboxes */
|
|
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - Values for emsJunkInfo context flags --------- */
|
|
#define EMSFJUNK_SCORE_ON_ARRIVAL (0x0001L) /* Score incoming message as it arrives */
|
|
#define EMSFJUNK_RESCORE (0X0002L) /* Rescore message */
|
|
#define EMSFJUNK_MARK_IS_JUNK (0x0004L) /* User is marking message as JUNK */
|
|
#define EMSFJUNK_MARK_NOT_JUNK (0x0008L) /* User is marking message as NOT junk */
|
|
#define EMSFJUNK_USER_INITIATED (0x0010L) /* User (not filter or any other automatic mechanism) initiated action */
|
|
|
|
#ifdef INTERNAL_FOR_QC // start MODELESS EMSAPI
|
|
#define EMS_PW_WINDOWKIND (99)
|
|
|
|
// Constants (and bitfields) for special menu commands a plugin can access
|
|
// File Menu
|
|
#define EMS_MENU_FILE_CLOSE (0x0010000L)
|
|
#define EMS_MENU_FILE_SAVE (0x0020000L)
|
|
// Edit Menu
|
|
#define EMS_MENU_EDIT_UNDO (0x0100000L)
|
|
#define EMS_MENU_EDIT_CUT (0x0200000L)
|
|
#define EMS_MENU_EDIT_COPY (0x0400000L)
|
|
#define EMS_MENU_EDIT_PASTE (0x0800000L)
|
|
#define EMS_MENU_EDIT_CLEAR (0x1000000L)
|
|
#define EMS_MENU_EDIT_SELECTALL (0x2000000L)
|
|
#endif // INTERNAL_FOR_QC - end MODELESS EMSAPI
|
|
|
|
|
|
/* ========== FORWARD TYPDEFS ======================================================== */
|
|
typedef struct emsProgressDataS *emsProgressDataP, **emsProgressDataH;
|
|
typedef struct emsGetDirectoryDataS *emsGetDirectoryDataP, **emsGetDirectoryDataH;
|
|
typedef struct emsRegenerateDataS *emsRegenerateDataP, **emsRegenerateDataH;
|
|
typedef struct emsGetMailBoxDataS *emsGetMailBoxDataP, **emsGetMailBoxDataH;
|
|
typedef struct emsGetPersonalityDataS *emsGetPersonalityDataP, **emsGetPersonalityDataH;
|
|
typedef struct emsGetPersonalityInfoDataS *emsGetPersonalityInfoDataP, **emsGetPersonalityInfoDataH;
|
|
//
|
|
#ifdef INTERNAL_FOR_QC
|
|
typedef struct emsSetMailBoxTagDataS *emsSetMailBoxTagDataP, **emsSetMailBoxTagDataH;
|
|
#endif // INTERNAL_FOR_QC <-SBL->
|
|
|
|
typedef struct emsCreateMailBoxDataS *emsCreateMailBoxDataP, **emsCreateMailBoxDataH;
|
|
|
|
// start MODELESS EMSAPI
|
|
typedef struct emsPlugwindowDataS *emsPlugwindowDataP, **emsPlugwindowDataH;
|
|
typedef struct emsGDeviceRgnDataS *emsGDeviceRgnDataP, **emsGDeviceRgnDataH;
|
|
// end MODELESS EMSAPI
|
|
|
|
// start IMPORTERS
|
|
typedef struct emsMakeSigDataS *emsMakeSigDataP, **emsMakeSigDataH;
|
|
typedef struct emsMakeAddressBookDataS *emsMakeAddressBookDataP, **emsMakeAddressBookDataH;
|
|
typedef struct emsMakeABEntryDataS *emsMakeABEntryDataP, **emsMakeABEntryDataH;
|
|
typedef struct emsMakeMailboxDataS *emsMakeMailboxDataP, **emsMakeMailboxDataH;
|
|
typedef struct emsMakeOutMessDataS *emsMakeOutMessDataP, **emsMakeOutMessDataH;
|
|
typedef struct emsMakeMessageDataS *emsMakeMessageDataP, **emsMakeMessageDataH;
|
|
typedef struct emsImportMboxDataS *emsImportMboxDataP, **emsImportMboxDataH;
|
|
// end IMPORTERS
|
|
|
|
|
|
typedef struct emsIsInAddressBookDataS *emsIsInAddressBookDataP;
|
|
|
|
|
|
/* ===== NEW in Eudora 6.0/EMSAPI 7.0 = CALL BACK FUNCTIONS FROM EUDORA ACROSS THE API === */
|
|
#if BUILDING_CARBON_PLUGIN /* Private function - not to be used */
|
|
typedef pascal short (*emsPrivateFunction)();
|
|
#else
|
|
typedef UniversalProcPtr emsPrivateFunction;
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN /* The progress function */
|
|
typedef pascal short (*emsProgress)(emsProgressDataP progData);
|
|
#define CallEMSProgressProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsProgress;
|
|
enum { uppemsProgressProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsProgressDataP))) };
|
|
#define CallEMSProgressProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsProgressProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN /* Displays dialog with list of mailboxes and returns mailbox user chooses */
|
|
typedef pascal void (*emsGetMailBox)(emsGetMailBoxDataP getMailBoxData);
|
|
#define CallEMSGetMailProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsGetMailBox;
|
|
enum { uppemsGetMailBoxProcInfo = kPascalStackBased
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsGetMailBoxDataP))) };
|
|
#define CallEMSGetMailProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsGetMailBoxProcInfo, (data))
|
|
#endif
|
|
|
|
#ifdef INTERNAL_FOR_QC
|
|
#if BUILDING_CARBON_PLUGIN
|
|
typedef pascal void (*emsSetMailBoxTag)(emsSetMailBoxTagDataP setMailBoxTagData);
|
|
#define CallEMSSetMailBoxTagProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsSetMailBoxTag;
|
|
enum { uppemsSetMailBoxTagProcInfo = kPascalStackBased
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsSetMailBoxTagDataP))) };
|
|
#define CallEMSSetMailBoxTagProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsSetMailBoxTagProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN
|
|
typedef pascal void (*emsGetMailBoxTag)(emsSetMailBoxTagDataP setMailBoxTagData);
|
|
#define CallEMSGetMailBoxTagProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsGetMailBoxTag;
|
|
enum { uppemsGetMailBoxTagProcInfo = kPascalStackBased
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsSetMailBoxTagDataP))) };
|
|
#define CallEMSGetMailBoxTagProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsGetMailBoxTagProcInfo, (data))
|
|
#endif
|
|
#endif // INTERNAL_FOR_QC <-SBL->
|
|
|
|
#if BUILDING_CARBON_PLUGIN /* Displays dialog with list of personalities and returns personality user chooses */
|
|
typedef pascal short (*emsGetPersonality)(emsGetPersonalityDataP getPersonalityData);
|
|
#define CallEMSGetPersonalityProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsGetPersonality;
|
|
enum { uppemsGetPersonalityProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsGetPersonalityDataP))) };
|
|
#define CallEMSGetPersonalityProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsGetPersonalityProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN /* Retrieves email address for specified personality */
|
|
typedef pascal short (*emsGetPersonalityInfo)(emsGetPersonalityInfoDataP getPersonalityData);
|
|
#define CallEMSGetPersonalityInfoProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsGetPersonalityInfo;
|
|
enum { uppemsGetPersonalityInfoProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsGetPersonalityInfoDataP))) };
|
|
#define CallEMSGetPersonalityInfoProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsGetPersonalityInfoProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN /* Check to see if the address is in any Eudora address book */
|
|
typedef pascal short (*emsIsInAddressBook)(emsIsInAddressBookDataP abData );
|
|
#define CallEMSIsInAddressBookProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsIsInAddressBook;
|
|
enum { uppemsIsInAddressBookProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsIsInAddressBookDataP))) };
|
|
#define CallEMSIsInAddressBookProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsIsInAddressBookProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN /* Causes Eudora to reload either plugin filters or plugin nicknames */
|
|
typedef pascal short (*emsRegenerate)(emsRegenerateDataP RegenerateData);
|
|
#define CallEMSRegenerateProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsRegenerate;
|
|
enum { uppemsRegenerateProcInfo = kPascalStackBased
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsRegenerateDataP))) };
|
|
#define CallEMSRegenerateProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsRegenerateProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN /* Retrieves location of specified Eudora folder */
|
|
typedef pascal short (*emsGetDirectory)(emsGetDirectoryDataP GetDirectoryData);
|
|
#define CallEMSGetDirectoryProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsGetDirectory;
|
|
enum { uppemsGetDirectoryProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsGetDirectoryDataP))) };
|
|
#define CallEMSGetDirectoryProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsGetDirectoryProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN /* Tells Eudora to update its Windows - call if necessary during plugin update event processing */
|
|
typedef pascal void (*emsUpdateWindows)(void);
|
|
#define CallEMSUpdateWindowsProc(userRoutine) (*(userRoutine))()
|
|
#else
|
|
typedef UniversalProcPtr emsUpdateWindows;
|
|
enum { uppemsUpdateWindowsProcInfo = kPascalStackBased };
|
|
#define CallEMSUpdateWindowsProc(userRoutine) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsUpdateWindowsProcInfo)
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN /* Creates mailbox */
|
|
typedef pascal short (*emsCreateMailBox)(emsCreateMailBoxDataP createMailboxData);
|
|
#define CallEMSCreateMailBoxProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsCreateMailBox;
|
|
enum { uppemsCreateMailBoxProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsCreateMailBoxDataP))) };
|
|
#define CallEMSCreateMailBoxProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsCreateMailBoxProcInfo, (data))
|
|
#endif
|
|
|
|
#ifdef INTERNAL_FOR_QC // start MODELESS EMSAPI
|
|
#if BUILDING_CARBON_PLUGIN
|
|
typedef pascal short (*emsPlugwindowRegister)(emsPlugwindowDataP PlugwindowRegisterData);
|
|
#define CallEMSPlugwindowRegisterProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsPlugwindowRegister;
|
|
enum { uppemsPlugwindowRegisterProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsPlugwindowDataP))) };
|
|
#define CallEMSPlugwindowRegisterProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsPlugwindowRegisterProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN
|
|
typedef pascal void (*emsPlugwindowUnRegister)(emsPlugwindowDataP PlugwindowUnRegisterData);
|
|
#define CallEMSPlugwindowUnRegisterProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsPlugwindowUnRegister;
|
|
enum { uppemsPlugwindowUnRegisterProcInfo = kPascalStackBased
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsPlugwindowDataP))) };
|
|
#define CallEMSPlugwindowUnRegisterProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsPlugwindowUnRegisterProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN
|
|
typedef pascal short (*emsGDeviceRgn)(emsGDeviceRgnDataP GDeviceRgnData);
|
|
#define CallEMSGDeviceRgnProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsGDeviceRgn;
|
|
enum { uppemsGDeviceRgnProcInfo = kPascalStackBased
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsGDeviceRgnDataP))) };
|
|
#define CallEMSGDeviceRgnProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsGDeviceRgnProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN
|
|
typedef pascal WindowPtr (*emsFrontWindow)(void);
|
|
#define CallEMSFrontWindowProc(userRoutine) (*(userRoutine))()
|
|
#else
|
|
typedef UniversalProcPtr emsFrontWindow;
|
|
enum { uppemsFrontWindowProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(WindowPtr))) };
|
|
#define CallEMSFrontWindowProc(userRoutine) \
|
|
(WindowPtr) CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsFrontWindowProcInfo)
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN
|
|
typedef pascal void (*emsSelectWindow)(WindowPtr selectWindowData);
|
|
#define CallEMSSelectWindowProc(userRoutine, data) (*(userRoutine))(data)
|
|
#else
|
|
typedef UniversalProcPtr emsSelectWindow;
|
|
enum { uppemsSelectWindowProcInfo = kPascalStackBased
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr))) };
|
|
#define CallEMSSelectWindowProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsSelectWindowProcInfo, (data))
|
|
#endif
|
|
#endif // INTERNAL_FOR_QC - end MODELESS EMSAPI <-SBL->
|
|
|
|
#ifdef INTERNAL_FOR_QC // start IMPORTERS
|
|
#if BUILDING_CARBON_PLUGIN
|
|
typedef pascal short (*emsMakeSig)(emsMakeSigDataP makeSigData);
|
|
#define CallEMSMakeSigProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsMakeSig;
|
|
enum { uppemsMakeSigProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsMakeSigDataP))) };
|
|
#define CallEMSMakeSigProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), emsMakeSigProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN
|
|
typedef pascal short (*emsMakeAddressBook)(emsMakeAddressBookDataP makeAddressBookData);
|
|
#define CallEMSMakeAddressBookProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsMakeAddressBook;
|
|
enum { uppemsMakeAddressBookProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsMakeAddressBookDataP))) };
|
|
#define CallEMSMakeAddressBookProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), emsMakeAddressBookProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN
|
|
typedef pascal short (*emsMakeABEntry)(emsMakeABEntryDataP makeABEntryData);
|
|
#define CallEMSMakeABEntryProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsMakeABEntry;
|
|
enum { uppemsMakeABEntryProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsMakeABEntryDataP))) };
|
|
#define CallEMSMakeABEntryProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), emsMakeABEntryProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN
|
|
typedef pascal short (*emsMakeMailbox)(emsMakeMailboxDataP makeMailboxData);
|
|
#define CallEMSMakeMailboxProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsMakeMailbox;
|
|
enum { uppemsMakeMailboxProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsMakeMailboxDataP))) };
|
|
#define CallEMSMakeMailboxProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), emsMakeMailboxProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN
|
|
typedef pascal short (*emsMakeOutMess)(emsMakeOutMessDataP makeOutMessData);
|
|
#define CallEMSMakeOutMessProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsMakeOutMess;
|
|
enum { uppemsMakeOutMessProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsMakeOutMessDataP))) };
|
|
#define CallEMSMakeOutMessProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), emsMakeOutMessProcInfo, (data))
|
|
#endif
|
|
|
|
#if BUILDING_CARBON_PLUGIN
|
|
typedef pascal short (*emsMakeMessage)(emsMakeMessageDataP MakeMessageData);
|
|
#define CallEMSMakeMessageProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsMakeMessage;
|
|
enum { uppemsMakeMessageProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsMakeMessageDataP))) };
|
|
#define CallEMSMakeMessageProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), emsMakeMessageProcInfo, (data))
|
|
#endif
|
|
|
|
// typedef struct emsImportMboxDataS *emsImportMboxDataP, **emsImportMboxDataH;
|
|
|
|
#if BUILDING_CARBON_PLUGIN
|
|
typedef pascal short (*emsImportMbox)(emsImportMboxDataP ImportMBoxData);
|
|
#define CallEMSImportMboxProc(userRoutine, data) (*(userRoutine))((data))
|
|
#else
|
|
typedef UniversalProcPtr emsImportMbox;
|
|
enum { uppemsImportMboxProcInfo = kPascalStackBased
|
|
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
|
|
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(emsImportMboxDataP))) };
|
|
#define CallEMSImportMboxProc(userRoutine, data) \
|
|
CallUniversalProc((UniversalProcPtr)(userRoutine), uppemsImportMboxProcInfo, (data))
|
|
#endif
|
|
#endif // INTERNAL_FOR_QC - end IMPORTERS <-SBL->
|
|
|
|
|
|
/* ===== DATA STRUCTURES ============================================================= */
|
|
/* All strings on the Mac are PASCAL strings. Most strings are allocated as Handles.
|
|
A few strings may appear in the structure themselves (e.g. Str255)
|
|
*/
|
|
|
|
/* ----- Progress Data --------------------------------------------------------------- */
|
|
typedef struct emsProgressDataS * emsProgressDataP;
|
|
typedef struct emsProgressDataS {
|
|
long size; /* Size of this data structure */
|
|
long value; /* Range of Progress, percent complete */
|
|
StringPtr message; /* Progress Message */
|
|
} emsProgressData;
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - GetMailBoxFunction Data ---------------------- */
|
|
typedef AliasHandle emsMBoxP;
|
|
typedef struct emsGetMailBoxDataS *emsGetMailBoxDataP;
|
|
typedef struct emsGetMailBoxDataS{
|
|
long size; /* IN: Size of this data structure */
|
|
long flags; /* IN: see flags above */
|
|
StringPtr prompt; /* IN: Prompt for user */
|
|
emsMBoxP mailbox; /* OUT: the chosen mailbox */
|
|
} emsGetMailBoxData;
|
|
|
|
/* ----- User Address ---------------------------------------------------------------- */
|
|
typedef struct emsAddressS *emsAddressP, **emsAddressH;
|
|
typedef struct emsAddressS {
|
|
long size; /* Size of this data structure */
|
|
StringHandle address; /* Actual email address */
|
|
StringHandle realname; /* Real name portion of email address */
|
|
emsAddressH next; /* Linked list of addresses */
|
|
} emsAddress;
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - GetPersonalityData --------------------------- */
|
|
typedef struct emsGetPersonalityDataS *emsGetPersonalityDataP;
|
|
typedef struct emsGetPersonalityDataS{
|
|
long size; /* IN: Size of this data structure */
|
|
StringPtr prompt; /* IN: Prompt for user, Set to NULL for standard prompt */
|
|
Boolean defaultPers; /* IN: set to true for default personality, otherwise selection dialog comes up */
|
|
short persCount; /* OUT: Number of personalities */
|
|
emsAddress personality; /* OUT: the chosen personality */
|
|
StringHandle personalityName; /* OUT: the text name of the chosen personality */
|
|
} emsGetPersonalityData;
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - GetPersonalityInfo --------------------------- */
|
|
typedef struct emsGetPersonalityInfoDataS *emsGetPersonalityInfoDataP;
|
|
typedef struct emsGetPersonalityInfoDataS{
|
|
long size; /* IN: Size of this data structure */
|
|
StringHandle personalityName; /* IN: name of Personality */
|
|
emsAddress personality; /* OUT: the chosen personality */
|
|
} emsGetPersonalityInfoData;
|
|
|
|
#ifdef INTERNAL_FOR_QC
|
|
/* ----- NEW - SetMailBoxTag Data ---------------------------------------------------- */
|
|
typedef struct emsSetMailBoxTagDataS *emsSetMailBoxTagDataP;
|
|
typedef struct emsSetMailBoxTagDataS {
|
|
long size; /* IN: Size of this data structure */
|
|
emsMBoxP mailbox; /* IN: the selected mailbox */
|
|
long key; /* IN: the attribute key (usually the plug-in's ID */
|
|
long value; /* IN: the attribute value, zero to clear the attribute */
|
|
long oldvalue; /* OUT: the attribute's old value, zero by default */
|
|
long oldkey; /* OUT: the attribute's old key */
|
|
} emsSetMailBoxTagData;
|
|
#endif // INTERNAL_FOR_QC <-SBL->
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - CreateMailBox Data --------------------------- */
|
|
typedef struct emsCreateMailBoxDataS *emsCreateMailBoxDataP;
|
|
typedef struct emsCreateMailBoxDataS {
|
|
long size; /* IN: Size of this data structure */
|
|
emsMBoxP parentFolder; /* IN: relative path off of EMS_MailDir to the parent folder, or NULL for default location */
|
|
StringPtr name; /* IN: name for the new mailbox or folder */
|
|
Boolean createFolder; /* IN: set to 1 to create a folder, 0 to create a mailbox */
|
|
emsMBoxP mailboxOrFolder; /* OUT: the created mailbox or folder */
|
|
} emsCreateMailBoxData;
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - Address status ------------------------------- */
|
|
typedef enum { emsAddressNotChecked, emsAddressNotInAB, emsAddressIsInAB }
|
|
AddressInABStatus;
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - InInAddressBook Data ------------------------- */
|
|
typedef struct emsIsInAddressBookDataS *emsIsInAddressBookDataP;
|
|
typedef struct emsIsInAddressBookDataS {
|
|
long size; /* IN: Size of this data structure */
|
|
emsAddressP address; /* IN: Address to check */
|
|
AddressInABStatus addressStatus; /* OUT: Indicates whether or not the address is known */
|
|
} emsIsInAddressBookData;
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - Type of Updated Files ------------------------ */
|
|
typedef enum { emsRegenerateFilters, emsRegenerateNicknames}
|
|
RegenerateType;
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - Regenerate Data ------------------------------ */
|
|
typedef struct emsRegenerateDataS *emsRegenerateDataP;
|
|
typedef struct emsRegenerateDataS {
|
|
long size; /* IN: Size of this data structure */
|
|
RegenerateType which; /* IN: What should Eudora regenerate? */
|
|
} emsRegenerateData;
|
|
|
|
|
|
/* ----- GetDirectory ---------------------------------------------------------------- */
|
|
typedef enum {
|
|
EMS_EudoraDir, /* Eudora folder, contains all otherfolders */
|
|
EMS_AttachmentsDir, /* Attachments folder */
|
|
EMS_PluginFiltersDir, /* Filters folder for plug-ins */
|
|
EMS_PluginNicknamesDir, /* Nicknames folder for plug-ins */
|
|
EMS_ConfigDir, /* Folder for plug-ins' preferences */
|
|
EMS_MailDir, /* Folder containing mailboxes */
|
|
EMS_NicknamesDir, /* Eudora nicknames folder */
|
|
EMS_SignaturesDir, /* Signatures folder */
|
|
EMS_SpoolDir, /* Spool folder */
|
|
EMS_StationeryDir /* Stationery folder */
|
|
} DirectoryEnum;
|
|
|
|
typedef struct emsGetDirectoryDataS *emsGetDirectoryDataP;
|
|
typedef struct emsGetDirectoryDataS{
|
|
long size; /* IN: Size of this data structure */
|
|
DirectoryEnum which; /* IN: Which directory? */
|
|
FSSpec directory; /* OUT: FileSpec for directory */
|
|
} emsGetDirectoryData;
|
|
|
|
/* ----- MIME Params ----------------------------------------------------------------- */
|
|
typedef struct emsMIMEparamS *emsMIMEparamP, **emsMIMEparamH;
|
|
typedef struct emsMIMEparamS {
|
|
long size;
|
|
Str63 name; /* Mime parameter name (e.g. charset) */
|
|
Handle value; /* param value (e.g. us-ascii) - handle size determines string length */
|
|
emsMIMEparamH next; /* Handle for next param in linked list of parameters */
|
|
} emsMIMEparam;
|
|
|
|
/* ----- MIME Info ------------------------------------------------------------------- */
|
|
typedef struct emsMIMEtypeS *emsMIMEtypeP, **emsMIMEtypeH;
|
|
typedef struct emsMIMEtypeS {
|
|
long size;
|
|
Str63 mimeVersion; /* The MIME-Version header */
|
|
Str63 mimeType; /* Top-level MIME type */
|
|
Str63 subType; /* MIME sub-type */
|
|
emsMIMEparamH params; /* Handle to first parameter in MIME parameter list */
|
|
Str63 contentDisp; /* Content-Disposition */
|
|
emsMIMEparamH contentParams; /* Handle to first parameter in linked list of parameters */
|
|
} emsMIMEtype;
|
|
|
|
/* ----- Header Data ----------------------------------------------------------------- */
|
|
typedef struct emsHeaderDataS *emsHeaderDataP;
|
|
typedef struct emsHeaderDataS {
|
|
long size; /* Size of this data structure */
|
|
emsAddressH to; /* To Header */
|
|
emsAddressH from; /* From Header */
|
|
StringHandle subject; /* Subject Header */
|
|
emsAddressH cc; /* cc Header */
|
|
emsAddressH bcc; /* bcc Header */
|
|
Handle rawHeaders; /* The 822 headers - handle size determines string length */
|
|
} emsHeaderData;
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - structure to hold the callback functions ----- */
|
|
/* Each callback is called with a pointer to a parameter block */
|
|
typedef struct emsCallBackS *emsCallBacksP;
|
|
typedef struct emsCallBackS {
|
|
emsGetMailBox EMSGetMailBoxFunction;
|
|
#ifdef INTERNAL_FOR_QC
|
|
emsSetMailBoxTag EMSSetMailBoxTagFunction;
|
|
#else // EXTERNAL_FOR_PUBLIC
|
|
emsPrivateFunction EMSPrivateFunctionDontCall1;
|
|
#endif // EXTERNAL_FOR_PUBLIC
|
|
emsGetPersonality EMSGetPersonalityFunction;
|
|
emsProgress EMSProgressFunction;
|
|
emsRegenerate EMSRegenerateFunction;
|
|
emsGetDirectory EMSGetDirectoryFunction;
|
|
emsUpdateWindows EMSUpdateWindowsFunction;
|
|
#ifdef INTERNAL_FOR_QC
|
|
emsGetMailBoxTag EMSGetMailBoxTagFunction;
|
|
#else // EXTERNAL_FOR_PUBLIC
|
|
emsPrivateFunction EMSPrivateFunctionDontCall2;
|
|
#endif // EXTERNAL_FOR_PUBLIC
|
|
emsGetPersonalityInfo EMSGetPersonalityInfoFunction;
|
|
#ifdef INTERNAL_FOR_QC
|
|
// start MODELESS EMSAPI
|
|
emsPlugwindowRegister EMSPlugwindowRegisterFunction;
|
|
emsPlugwindowUnRegister EMSPlugwindowUnRegisterFunction;
|
|
emsGDeviceRgn EMSGDeviceRgnFunction;
|
|
emsFrontWindow EMSFrontWindowFunction;
|
|
emsSelectWindow EMSSelectWindowFunction;
|
|
// end MODELESS EMSAPI
|
|
// start IMPORTERS
|
|
emsMakeSig EMSMakeSigFunction;
|
|
emsMakeAddressBook EMSMakeAddressBookFunction;
|
|
emsMakeABEntry EMSMakeABEntryFunction;
|
|
emsMakeMailbox EMSMakeMailboxFunction;
|
|
emsMakeOutMess EMSMakeOutMessFunction;
|
|
emsMakeMessage EMSMakeMessageFunction;
|
|
// end IMPORTERS
|
|
emsCreateMailBox EMSCreateMailBoxFunction;
|
|
#else // EXTERNAL_FOR_PUBLIC
|
|
emsPrivateFunction EMSPrivateFunctionDontCall3;
|
|
emsPrivateFunction EMSPrivateFunctionDontCall4;
|
|
emsPrivateFunction EMSPrivateFunctionDontCall5;
|
|
emsPrivateFunction EMSPrivateFunctionDontCall6;
|
|
emsPrivateFunction EMSPrivateFunctionDontCall7;
|
|
emsPrivateFunction EMSPrivateFunctionDontCall8;
|
|
emsPrivateFunction EMSPrivateFunctionDontCall9;
|
|
emsPrivateFunction EMSPrivateFunctionDontCall10;
|
|
emsPrivateFunction EMSPrivateFunctionDontCall11;
|
|
emsPrivateFunction EMSPrivateFunctionDontCall12;
|
|
emsPrivateFunction EMSPrivateFunctionDontCall13;
|
|
emsPrivateFunction EMSPrivateFunctionDontCall14;
|
|
#endif // EXTERNAL_FOR_PUBLIC
|
|
emsIsInAddressBook EMSIsInAddressBook;
|
|
} emsCallBack;
|
|
|
|
/* ----- How Eudora is configured ---------------------------------------------------- */
|
|
#ifdef INTERNAL_FOR_QC
|
|
// This only exists to service old versions of ESP and importers (until they can be updated)
|
|
typedef struct emsPre7MailConfigS *emsPre7MailConfigP;
|
|
typedef struct emsPre7MailConfigS {
|
|
long size; /* Size of this data structure */
|
|
FSSpec configDir; /* Optional directory for config file */
|
|
emsAddress userAddr; /* Current users full name and address from Eudora config */
|
|
emsCallBack callBacks; /* NEW in Eudora 6.0/EMSAPI 7.0: callback structure */
|
|
} emsPre7MailConfig;
|
|
#endif // INTERNAL_FOR_QC
|
|
typedef struct emsMailConfigS *emsMailConfigP;
|
|
typedef struct emsMailConfigS {
|
|
long size; /* Size of this data structure */
|
|
FSSpec configDir; /* Optional directory for config file */
|
|
emsAddress userAddr; /* Current users full name and address from Eudora config */
|
|
emsCallBacksP callBacks; /* NEW in Eudora 6.0/EMSAPI 7.0: callback structure */
|
|
short eudAPIMinorVersion; /* NEW in Eudora 6.0/EMSAPI 7.0: Minor API version - used when calls are being added during beta or
|
|
when an EMSAPI change is done for a minor version release */
|
|
} emsMailConfig;
|
|
|
|
|
|
/* ----- Plugin Info ----------------------------------------------------------------- */
|
|
typedef struct emsPluginInfoS *emsPluginInfoP;
|
|
typedef struct emsPluginInfoS {
|
|
long size; /* Size of this data structure */
|
|
long id; /* Place to return unique plugin id */
|
|
long numTrans; /* Place to return num of translators */
|
|
long numAttachers; /* Place to return num of attach hooks */
|
|
long numSpecials; /* Place to return num of special hooks */
|
|
StringHandle desc; /* Return for string description of plugin */
|
|
Handle icon; /* Return for plugin icon data */
|
|
#ifdef INTERNAL_FOR_QC
|
|
long mem_rqmnt; /* V4! Return Memory Required to run this */
|
|
long numMBoxContext; /* V4! Peanut Place to return num of mailbox context hooks */
|
|
/* These are shown when the mailbox has a non-zer attribute with the plugin-s ID as key */
|
|
#else
|
|
long reserved1; /* Reserved for internal Eudora use */
|
|
long reserved2; /* Reserved for internal Eudora use */
|
|
#endif // INTERNAL_FOR_QC
|
|
long idleTimeFreq; /* NEW in Eudora 6.0/EMSAPI 7.0: Return 0 for no idle time, otherwise initial idle frequency in milliseconds */
|
|
#ifdef INTERNAL_FOR_QC
|
|
long numImporters; /* V6! Place to return num of importer hooks */
|
|
#else
|
|
long reserved3; /* Reserved for internal Eudora use */
|
|
#endif // INTERNAL_FOR_QC
|
|
} emsPluginInfo;
|
|
|
|
/* ----- Translator Info ------------------------------------------------------------- */
|
|
typedef struct emsTranslatorS *emsTranslatorP;
|
|
typedef struct emsTranslatorS {
|
|
long size; /* Size of this data structure */
|
|
long id; /* ID of translator to get info for */
|
|
long type; /* translator type, e.g., EMST_xxx */
|
|
unsigned long flags; /* translator flags */
|
|
StringHandle desc; /* translator string description */
|
|
Handle icon; /* Return for plugin icon data */
|
|
StringHandle properties; /* Properties for queued translations */
|
|
} emsTranslator;
|
|
|
|
/* ----- Menu Item Info -------------------------------------------------------------- */
|
|
typedef struct emsMenuS *emsMenuP;
|
|
typedef struct emsMenuS {
|
|
long size; /* Size of this data structure */
|
|
long id; /* ID of translator to get info for */
|
|
StringHandle desc; /* translator string description */
|
|
Handle icon; /* Icon suite */
|
|
long flags; /* any special flags (e.g. EMSF_TOOLBAR_PRESENCE) */
|
|
} emsMenu;
|
|
|
|
/* ----- Translation Data ------------------------------------------------------------ */
|
|
typedef struct emsDataFileS *emsDataFileP, **emsDataFileH;
|
|
typedef struct emsDataFileS {
|
|
long size; /* Size of this data structure */
|
|
long context;
|
|
emsMIMEtypeH mimeInfo; /* MIME type of data to check */
|
|
emsHeaderDataP header; /* EMSF_BASIC_HEADERS & EMSF_ALL_HEADERS determine contents */
|
|
FSSpec file; /* The input file */
|
|
} emsDataFile;
|
|
|
|
/* ----- Resulting Status Data ------------------------------------------------------- */
|
|
typedef struct emsResultStatusS *emsResultStatusP;
|
|
typedef struct emsResultStatusS {
|
|
long size; /* Size of this data structure */
|
|
StringHandle desc; /* Returned string for display with the result */
|
|
StringHandle error; /* Place to return string with error message */
|
|
long code; /* Return for translator-specific result code */
|
|
} emsResultStatus;
|
|
|
|
/* ----- Idle Data ------------------------------------------------------------------- */
|
|
typedef struct emsIdleDataS *emsIdleDataP;
|
|
typedef struct emsIdleDataS {
|
|
long flags; /* IN: Idle Flags */
|
|
long *idleTimeFreq; /* IN/OUT: current->new request idle */
|
|
emsProgress progress; /* IN: Callback function to report progress/check for abort */
|
|
} emsIdleData;
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - Junk Info ------------------------------------ */
|
|
typedef struct emsJunkInfoS *emsJunkInfoP;
|
|
typedef struct emsJunkInfoS {
|
|
long size; /* Size of this data structure */
|
|
long context; /* Junk context flags see EMSJUNK #defines */
|
|
long pluginID; /* For ems_user_mark_junk ID of plugin that assigned previous junk score, or 0 if user marked */
|
|
} emsJunkInfo;
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - Message Information for Junk Scoring --------- */
|
|
typedef struct emsMessageInfoS *emsMessageInfoP;
|
|
typedef struct emsMessageInfoS {
|
|
long size; /* Size of this data structure */
|
|
long context; /* Reserved for future use */
|
|
unsigned long messageID; /* Uniquely identifies message for months - generally ok to persist */
|
|
AddressInABStatus fromAddressStatus; /* Indicates whether from address is known */
|
|
emsHeaderDataP header; /* EMSF_BASIC_HEADERS & EMSF_ALL_HEADERS determine contents */
|
|
emsMIMEtypeP textType; /* MIME type of text to check */
|
|
Handle text; /* Handle to text of message if provided in format indicated by textType or NULL - handle size determines string length */
|
|
} emsMessageInfo;
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - Junk Score ----------------------------------- */
|
|
typedef struct emsJunkScoreS *emsJunkScoreP;
|
|
typedef struct emsJunkScoreS {
|
|
long size; /* Size of this data structure */
|
|
char score; /* Junk score between 0 and 100 with a special value of -1.
|
|
-1 => white list - absolutely NOT junk - use sparingly or not at all;
|
|
0 => NOT junk; 100 => absolutely junk */
|
|
} emsJunkScore;
|
|
//
|
|
#ifdef INTERNAL_FOR_QC
|
|
/* ----- NEW - MailBoxContextFolder Data --------------------- */
|
|
typedef struct emsMailBoxContextFolderDataS *emsMailBoxContextFolderDataP;
|
|
typedef struct emsMailBoxContextFolderDataS {
|
|
long size; /* IN: Size of this data structure */
|
|
long value; /* IN: the attribute value for the mailbox in question */
|
|
FSSpec pluginFolder; /* OUT: Folder that the plugin associates with the given mailbox tags */
|
|
} emsMailBoxContextFolderData;
|
|
#endif // INTERNAL_FOR_QC
|
|
|
|
/* ----- NEW - Type of Mode Event Notifications --------------- */
|
|
typedef enum { EMS_GetDowngradeInfo, EMS_ModeChanged }
|
|
ModeEventEnum;
|
|
typedef enum { EMS_ModeFree, EMS_ModeSponsored, EMS_ModePaid, EMS_ModeCustom = 250 }
|
|
ModeTypeEnum;
|
|
|
|
/* ----- NEW - EudoraModeNotification Data --------------------- */
|
|
typedef struct emsEudoraModeNotificationDataS *emsEudoraModeNotificationDataP;
|
|
typedef struct emsEudoraModeNotificationDataS {
|
|
long size; /* IN: Size of this data structure */
|
|
ModeEventEnum modeEvent; /* IN: Notification of change or request for downgrade text */
|
|
ModeTypeEnum isFullFeatureSet; /* IN: The current mode that we are in */
|
|
ModeTypeEnum needsFullFeatureSet; /* OUT: What mode the plugin needs to run? */
|
|
Boolean downgradeWasBeingUsed; /* OUT: Return whether or not plugin was being used */
|
|
short productCode; /* IN: App Product code */
|
|
unsigned long modeFlags; /* OUT: What modes we will function in */
|
|
} emsEudoraModeNotificationData;
|
|
|
|
#ifdef INTERNAL_FOR_QC
|
|
// start MODELESS EMSAPI
|
|
typedef struct emsPlugwindowDataS {
|
|
long size; /* IN: Size of this data structure */
|
|
void * nativeWindow; /* reference to WindowPtr */
|
|
long plugwindowID; /* local id assigned by plug-in */
|
|
unsigned long menuMask; /* Mask for menu items to be used */
|
|
long top; /* For saving size and position */
|
|
long left; /* not used by plug-in except for reopen() */
|
|
long bottom;
|
|
long right;
|
|
long plugin_refcon; /* for plug-in's use, NEVER used by Eudora */
|
|
long pluginID; /* id of the plug-in */
|
|
Boolean isDialogLayer; /* Should Eudora keep this window in the dialog layer? */
|
|
} emsPlugwindowData, *emsPlugwindowDataP;
|
|
|
|
typedef struct emsPlugwindowEventS {
|
|
long size; /* IN: Size of this data structure */
|
|
void * nativeEvent; /* reference to EventRecord on Mac */
|
|
} emsPlugwindowEvent, *emsPlugwindowEventP;
|
|
|
|
typedef struct emsPlugwindowMenuDataS {
|
|
long size; /* IN: Size of this data structure */
|
|
unsigned long menuMask; /* Mask for menu item */
|
|
} emsMenuData, *emsPlugwindowMenuDataP;
|
|
|
|
typedef struct emsPlugwindowDragDataS {
|
|
long size; /* IN: Size of this data structure */
|
|
DragTrackingMessage message; /* message of 0xfff means "drop" */
|
|
DragReference drag; /* drag data */
|
|
} emsPlugwindowDragData, *emsPlugwindowDragDataP;
|
|
|
|
typedef struct emsGDeviceRgnDataS {
|
|
long size; /* IN: Size of this data structure */
|
|
short gdIndex; /* IN: index of device you want to know about */
|
|
RgnHandle usableRgn; /* usable region of the screen */
|
|
Rect largestRectangle; /* largest rect available on the screen */
|
|
} emsGDeviceRgnData, *emsGDeviceRgnDataP;
|
|
// end MODELESS EMSAPI
|
|
|
|
// start IMPORTERS
|
|
/* ----- Importer Info -------------------------------- */
|
|
typedef struct emsImporterS *emsImporterP, **emsImporterH;
|
|
typedef struct emsImporterS {
|
|
long size; /* Size of this data structure */
|
|
long id; /* ID of translator to get info for */
|
|
long type; /* translator type, e.g., EMST_xxx */
|
|
unsigned long flags; /* translator flags */
|
|
StringHandle desc; /* translator string description */
|
|
Handle icon; /* translator icon data */
|
|
} emsImporter;
|
|
|
|
typedef enum
|
|
{
|
|
EMS_IMPORT_Name_Query,
|
|
EMS_IMPORT_Query,
|
|
EMS_IMPORT_Settings,
|
|
EMS_IMPORT_Signatures,
|
|
EMS_IMPORT_Addresses,
|
|
EMS_IMPORT_Mail
|
|
} ImportOperationEnum;
|
|
|
|
/* ----- Importer Data ------------------------------- */
|
|
typedef struct emsImporterDataS *emsImporterDataP, **emsImporterDataH;
|
|
typedef struct emsImporterDataS {
|
|
long size; /* Size of this data structure */
|
|
ImportOperationEnum what; /* import operation selector */
|
|
void * params; /* parameters for the operation */
|
|
void * results; /* results of the opertaion */
|
|
} emsImporterData;
|
|
|
|
/* ----- Account Data ------------------------------ */
|
|
typedef struct ImportAccountInfoS *ImportAccountInfoP, **ImportAccountInfoH;
|
|
typedef struct ImportAccountInfoS
|
|
{
|
|
long size; /* IN: Size of this data structure */
|
|
FSSpec importSpec; /* spec pointing to folder or file to import */
|
|
Str63 accountName; /* name of account */
|
|
Str63 appName; /* name of Application */
|
|
Handle icon; /* Application icon data */
|
|
long id; /* The importer that will actually do the work */
|
|
} ImportAcountInfo;
|
|
|
|
/* ----- Import Settings Data --------------------- */
|
|
typedef struct ImportPersDataS *ImportPersDataP, **ImportPersDataH;
|
|
typedef struct ImportPersDataS
|
|
{
|
|
long size; /* IN: Size of this data structure */
|
|
long makeDominant; /* Is this the main account? */
|
|
Str255 accountName; /* The name of the personality to be created */
|
|
Str255 returnAddress; /* return address */
|
|
Str255 realName; /* real name */
|
|
Str255 userName; /* username */
|
|
Str255 mailServer; /* mail server */
|
|
Str255 smtpServer; /* smtp server */
|
|
Boolean isIMAP; /* is this an IMAP account? */
|
|
} ImportPersData;
|
|
|
|
/* ----- Import Signature Data --------------------- */
|
|
typedef struct ImportSignaturesDataS ImportSignaturesDataS, *ImportSignaturesDataP, **ImportSignaturesDataH;
|
|
typedef struct ImportSignaturesDataS
|
|
{
|
|
long size; /* IN: Size of this data structure */
|
|
FSSpec importSpec; /* Spec pointing to the folder or file to import */
|
|
emsMakeSig makeSig; /* Callback to actually create the signature file */
|
|
emsProgress progress; /* Callback for progress */
|
|
} ImportSignaturesData;
|
|
|
|
/* ----- Make Sig callback data ------------------- */
|
|
typedef struct emsMakeSigDataS {
|
|
long size; /* Size of this data structure */
|
|
StringPtr name; /* the name of the signature file */
|
|
Handle sigText; /* The text of the signature */
|
|
} emsMakeSigData;
|
|
|
|
/* ----- Import Contact Data ---------------------- */
|
|
typedef struct ImportAddressDataS ImportAddressDataS, *ImportAddressDataP, **ImportAddressDataH;
|
|
typedef struct ImportAddressDataS
|
|
{
|
|
long size; /* IN: Size of this data structure */
|
|
FSSpec importSpec; /* Spec pointing to the folder or file to import */
|
|
Str63 accountName; /* name of the account */
|
|
emsMakeAddressBook makeAddressBook; /* Callback to create an address book file */
|
|
emsMakeABEntry makeABEntry; /* Callback to create an address book entry */
|
|
emsProgress progress; /* Callback for progress */
|
|
} ImportAddressData;
|
|
|
|
/* ----- Make Address Book data ------------------- */
|
|
typedef struct emsMakeAddressBookDataS
|
|
{
|
|
long size; /* Size of this data structure */
|
|
StringPtr name; /* the name of the address book file */
|
|
} emsMakeAddressBookData;
|
|
|
|
/* ----- Make Address Book Entry data ------------- */
|
|
typedef struct emsMakeABEntryDataS
|
|
{
|
|
long size; /* Size of this data structure */
|
|
short which; /* where to put the address book entry */
|
|
Boolean isGroup; /* is this a group? */
|
|
StringPtr nickName; /* The name of the address book entry */
|
|
Handle addresses; /* the addresses */
|
|
Handle notes; /* the notes */
|
|
} emsMakeABEntryData;
|
|
|
|
/* ----- Import Messages and Mailbox Data -------- */
|
|
typedef struct ImportMailDataS ImportMailDataS, *ImportMailDataP, **ImportMailDataH;
|
|
typedef struct ImportMailDataS
|
|
{
|
|
long size; /* IN: Size of this data structure */
|
|
FSSpec importSpec; /* Spec pointing to the folder or file to import */
|
|
Str63 accountName; /* name of the account */
|
|
emsMakeMailbox makeMailbox; /* Callback to create a mailbox */
|
|
emsMakeOutMess makeOutMess; /* Callback to create an outgoing message */
|
|
emsMakeMessage makeMessage; /* Callback to turn some MIME into a Eudora message */
|
|
emsProgress progress; /* Callback for progress */
|
|
emsImportMbox importMBox; /* Callback to run UUCP data */
|
|
} ImportMailData;
|
|
|
|
/* ----- Make Mailbox Callback Data -------------- */
|
|
typedef enum
|
|
{
|
|
EMS_IMPORT_MAILBOX_Start,
|
|
EMS_IMPORT_MAILBOX_Create_Mailbox,
|
|
EMS_IMPORT_MAILBOX_Flush_Mailbox,
|
|
EMS_IMPORT_MAILBOX_Done
|
|
} ImportMailboxOperationEnum;
|
|
|
|
typedef struct emsMakeMailboxDataS
|
|
{
|
|
long size; /* Size of this data structure */
|
|
ImportMailboxOperationEnum command; /* IN: what to do */
|
|
FSSpec boxSpec; /* IN/OUT: the mailbox to create */
|
|
Boolean isFolder; /* IN: is this mailbox a folder? */
|
|
Boolean noSelect; /* IN: is this mailbox a simple folder? */
|
|
} emsMakeMailboxData;
|
|
|
|
/* ----- Make OutMess Calback Data -------------- */
|
|
typedef struct emsMakeOutMessDataS
|
|
{
|
|
long size; /* Size of this data structure */
|
|
StringPtr fromAddress; /* from address */
|
|
Handle toAddresses; /* addresses in the To: field */
|
|
Handle ccAddresses; /* addresses in the Cc: field */
|
|
Handle bccAddresses; /* addresses in the Bcc: field */
|
|
StringPtr subject; /* 255 characters of the subject */
|
|
Handle text; /* the text of the message */
|
|
short numAttachments; /* the total number of attachments */
|
|
Handle attachSpecs; /* the attachments */
|
|
long inBoxNumber; /* the mailbox the message is in */
|
|
FSSpec boxSpec; /* FSSpec of the mailbox */
|
|
Boolean isSent; /* Is this message a sent message? */
|
|
long date; /* the date this message was sent */
|
|
} emsMakeOutMessData;
|
|
|
|
/* ----- Make MessFromMime Callback Data -------- */
|
|
typedef struct emsMakeMessageDataS
|
|
{
|
|
long size; /* Size of this data structure */
|
|
short ref; /* where the data is coming from */
|
|
long offset; /* offset into the file where the message can be found */
|
|
long len; /* length of the message to be read */
|
|
short state; /* the message state the plugin believes to see */
|
|
FSSpec boxSpec; /* where the message should end up */
|
|
Handle attachments; /* the attachments to be stuck into this message */
|
|
} emsMakeMessageData;
|
|
|
|
/* ----- Import MBox Callback Data -------- */
|
|
typedef struct emsImportMboxDataS
|
|
{
|
|
long size; /* Size of this data structure */
|
|
FSSpec sourceMBox; /* The mbox file to read from */
|
|
FSSpec boxSpec; /* where the messages should end up */
|
|
} emsImportMboxData;
|
|
|
|
// end IMPORTERS
|
|
|
|
#endif // INTERNAL_FOR_QC
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
/* ========== ENTRY POINT ENUM CONSTANTS ==================================*/
|
|
|
|
enum {
|
|
kems_plugin_versionRtn = 256,
|
|
kems_plugin_initRtn = 257,
|
|
kems_translator_infoRtn = 258,
|
|
kems_can_translateRtn = 259,
|
|
kems_translate_fileRtn = 260,
|
|
kems_plugin_finishRtn = 261,
|
|
kems_plugin_configRtn = 262,
|
|
kems_queued_propertiesRtn = 263,
|
|
kems_attacher_infoRtn = 264,
|
|
kems_attacher_hookRtn = 265,
|
|
kems_special_infoRtn = 266,
|
|
kems_special_hookRtn = 267,
|
|
kems_idleRtn = 268,
|
|
kems_mbox_context_infoRtn = 269,
|
|
kems_mbox_context_hookRtn = 270,
|
|
// start MODELESS EMSAPI
|
|
kems_plugwindow_closeRtn = 271,
|
|
kems_plugwindow_reopenRtn = 272,
|
|
kems_plugwindow_eventRtn = 273,
|
|
kems_plugwindow_menu_enableRtn = 274,
|
|
kems_plugwindow_menuRtn = 275,
|
|
kems_plugwindow_dragRtn = 276,
|
|
// end MODELESS EMSAPI
|
|
// start Importer EMSAPI
|
|
kems_importer_infoRtn = 277,
|
|
kems_importer_hookRtn = 278,
|
|
// end Importer EMSAPI
|
|
kems_eudora_mode_notificationRtn = 279,
|
|
kems_mbox_context_folderRtn = 280,
|
|
kems_score_junkRtn = 281,
|
|
kems_user_mark_junkRtn = 282
|
|
};
|
|
#endif // INTERNAL_FOR_EUDORA
|
|
|
|
|
|
/* ===== FUNCTION PROTOTYPES ========================================================= */
|
|
|
|
#ifdef INTERNAL_FOR_QC
|
|
// Marshal parameters for component calls
|
|
#define EMSGCPCALL(x) \
|
|
(ems_GCP.what = kems_##x##Rtn, \
|
|
ems_GCP.paramSize = (sizeof(ems_##x##Params)-sizeof(ComponentInstance)), \
|
|
ems_GCP.flags = 0, \
|
|
Callems_ComponentFunction(ems_GCP))
|
|
#endif // INTERNAL_FOR_QC
|
|
|
|
|
|
/* ----- Get the API Version number this plugin implements --------------------------- */
|
|
pascal ComponentResult
|
|
ems_plugin_version(
|
|
Handle globals, /* Out: Return for allocated instance structure */
|
|
short * apiVersion /* Out: Plugin Version */
|
|
);
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef struct ems_plugin_versionParams {
|
|
short * apiVersion;
|
|
Handle globals;
|
|
} ems_plugin_versionParams;
|
|
|
|
#define ems_plugin_version(p1,p2)\
|
|
(\
|
|
ems_GCP.params.ems_plugin_version.globals = p1,\
|
|
ems_GCP.params.ems_plugin_version.apiVersion = p2,\
|
|
EMSGCPCALL(plugin_version))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
/* ----- Initialize plugin and get its basic info ------------------------------------ */
|
|
pascal ComponentResult
|
|
ems_plugin_init(
|
|
Handle globals, /* Out: Return for allocated instance structure */
|
|
short eudAPIVersion, /* In: The API version eudora is using */
|
|
emsMailConfigP mailConfig, /* In: Eudoras mail configuration */
|
|
emsPluginInfoP pluginInfo /* Out: Return Plugin Information */
|
|
);
|
|
|
|
typedef struct ems_plugin_initParams {
|
|
emsPluginInfoP pluginInfo;
|
|
emsMailConfigP mailConfig;
|
|
short eudAPIVersion;
|
|
Handle globals;
|
|
} ems_plugin_initParams;
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
#define ems_plugin_init(p1,p2,p3,p4)\
|
|
(\
|
|
ems_GCP.params.ems_plugin_init.globals = p1,\
|
|
ems_GCP.params.ems_plugin_init.eudAPIVersion = p2,\
|
|
ems_GCP.params.ems_plugin_init.mailConfig = p3,\
|
|
ems_GCP.params.ems_plugin_init.pluginInfo = p4,\
|
|
EMSGCPCALL(plugin_init))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
/* ----- Get details about a translator in a plugin ---------------------------------- */
|
|
pascal ComponentResult
|
|
ems_translator_info(
|
|
Handle globals, /* Out: Return for allocated instance structure */
|
|
emsTranslatorP transInfo /* In/Out: Return Translator Information */
|
|
);
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef struct ems_translator_infoParams {
|
|
emsTranslatorP transInfo;
|
|
Handle globals;
|
|
} ems_translator_infoParams;
|
|
|
|
#define ems_translator_info(p1,p2)\
|
|
(\
|
|
ems_GCP.params.ems_translator_info.globals = p1,\
|
|
ems_GCP.params.ems_translator_info.transInfo = p2,\
|
|
EMSGCPCALL(translator_info))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
/* ----- Check and see if a translation can be performed ----------------------------- */
|
|
pascal ComponentResult
|
|
ems_can_translate(
|
|
Handle globals, /* Out: Return for allocated instance structure */
|
|
emsTranslatorP trans, /* In: Translator Info */
|
|
emsDataFileP inTransData, /* In: What to translate */
|
|
emsResultStatusP transStatus /* Out: Translations Status information */
|
|
);
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef struct ems_can_translateParams {
|
|
emsResultStatusP transStatus;
|
|
emsDataFileP inTransData;
|
|
emsTranslatorP trans;
|
|
Handle globals;
|
|
} ems_can_translateParams;
|
|
|
|
#define ems_can_translate(p1,p2,p3,p4)\
|
|
(\
|
|
ems_GCP.params.ems_can_translate.globals = p1,\
|
|
ems_GCP.params.ems_can_translate.trans = p2,\
|
|
ems_GCP.params.ems_can_translate.inTransData = p3,\
|
|
ems_GCP.params.ems_can_translate.transStatus = p4,\
|
|
EMSGCPCALL(can_translate))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
/* ----- Actually perform a translation on a file ------------------------------------ */
|
|
pascal ComponentResult
|
|
ems_translate_file(
|
|
Handle globals, /* Out: Return for allocated instance structure */
|
|
emsTranslatorP trans, /* In: Translator Info */
|
|
emsDataFileP inFile, /* In: What to translate */
|
|
emsProgress progress, /* Func to report progress/check for abort */
|
|
emsDataFileP outFile, /* Out: Result of the translation */
|
|
emsResultStatusP transStatus /* Out: Translations Status information */
|
|
);
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef struct ems_translate_fileParams {
|
|
emsResultStatusP transStatus;
|
|
emsDataFileP outFile;
|
|
emsProgress progress;
|
|
emsDataFileP inFile;
|
|
emsTranslatorP trans;
|
|
Handle globals;
|
|
} ems_translate_fileParams;
|
|
|
|
#define ems_translate_file(p1,p2,p3,p4,p5,p6)\
|
|
(\
|
|
ems_GCP.params.ems_translate_file.globals = p1,\
|
|
ems_GCP.params.ems_translate_file.trans = p2,\
|
|
ems_GCP.params.ems_translate_file.inFile = p3,\
|
|
ems_GCP.params.ems_translate_file.progress = p4,\
|
|
ems_GCP.params.ems_translate_file.outFile = p5,\
|
|
ems_GCP.params.ems_translate_file.transStatus = p6,\
|
|
EMSGCPCALL(translate_file))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
/* ----- End use of a plugin and clean up -------------------------------------------- */
|
|
pascal ComponentResult
|
|
ems_plugin_finish(
|
|
Handle globals /* Out: Return for allocated instance structure */
|
|
);
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef struct ems_plugin_finishParams {
|
|
Handle globals;
|
|
} ems_plugin_finishParams;
|
|
|
|
#define ems_plugin_finish(p1)\
|
|
(\
|
|
ems_GCP.params.ems_plugin_finish.globals = p1,\
|
|
EMSGCPCALL(plugin_finish))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
/* ----- Call the plug-ins configuration Interface ----------------------------------- */
|
|
pascal ComponentResult
|
|
ems_plugin_config(
|
|
Handle globals, /* Out: Return for allocated instance structure */
|
|
emsMailConfigP mailConfig /* In: Eudora mail info */
|
|
);
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef struct ems_plugin_configParams {
|
|
emsMailConfigP mailConfig;
|
|
Handle globals;
|
|
} ems_plugin_configParams;
|
|
|
|
#define ems_plugin_config(p1,p2)\
|
|
(\
|
|
ems_GCP.params.ems_plugin_config.globals = p1,\
|
|
ems_GCP.params.ems_plugin_config.mailConfig = p2,\
|
|
EMSGCPCALL(plugin_config))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
/* ----- Manage properties for queued translations ----------------------------------- */
|
|
pascal ComponentResult
|
|
ems_queued_properties(
|
|
Handle globals, /* Out: Return for allocated instance structure */
|
|
emsTranslatorP trans, /* In/Out: The translator */
|
|
long * selected /* In/Out: State of this translator */
|
|
);
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef struct ems_queued_propertiesParams {
|
|
long * selected;
|
|
emsTranslatorP trans;
|
|
Handle globals;
|
|
} ems_queued_propertiesParams;
|
|
|
|
#define ems_queued_properties(p1,p2,p3)\
|
|
(\
|
|
ems_GCP.params.ems_queued_properties.globals = p1,\
|
|
ems_GCP.params.ems_queued_properties.trans = p2,\
|
|
ems_GCP.params.ems_queued_properties.selected = p3,\
|
|
EMSGCPCALL(queued_properties))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
/* ----- Info about menu hook to attach/insert composed object ----------------------- */
|
|
pascal ComponentResult
|
|
ems_attacher_info(
|
|
Handle globals, /* Out: Return for allocated instance structure */
|
|
emsMenuP attachMenu /* Out: The menu */
|
|
);
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef struct ems_attacher_infoParams {
|
|
emsMenuP attachMenu;
|
|
Handle globals;
|
|
} ems_attacher_infoParams;
|
|
|
|
#define ems_attacher_info(p1,p2)\
|
|
(\
|
|
ems_GCP.params.ems_attacher_info.globals = p1,\
|
|
ems_GCP.params.ems_attacher_info.attachMenu = p2,\
|
|
EMSGCPCALL(attacher_info))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
/* ----- Call an attacher hook to compose some special object ------------------------ */
|
|
pascal ComponentResult
|
|
ems_attacher_hook(
|
|
Handle globals, /* Out: Return for allocated instance structure */
|
|
emsMenuP attachMenu, /* In: The menu */
|
|
FSSpec * attachDir, /* In: Location to put attachments */
|
|
long * numAttach, /* Out: Number of files attached */
|
|
emsDataFileH * attachFiles /* Out: Name of files written */
|
|
);
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef struct ems_attacher_hookParams {
|
|
emsDataFileH * attachFiles;
|
|
long * numAttach;
|
|
FSSpec * attachDir;
|
|
emsMenuP attachMenu;
|
|
Handle globals;
|
|
} ems_attacher_hookParams;
|
|
|
|
#define ems_attacher_hook(p1,p2,p3,p4,p5)\
|
|
(\
|
|
ems_GCP.params.ems_attacher_hook.globals = p1,\
|
|
ems_GCP.params.ems_attacher_hook.attachMenu = p2,\
|
|
ems_GCP.params.ems_attacher_hook.attachDir = p3,\
|
|
ems_GCP.params.ems_attacher_hook.numAttach = p4,\
|
|
ems_GCP.params.ems_attacher_hook.attachFiles = p5,\
|
|
EMSGCPCALL(attacher_hook))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
/* ----- Info about special menu items hooks ----------------------------------------- */
|
|
pascal ComponentResult
|
|
ems_special_info(
|
|
Handle globals, /* Out: Return for allocated instance structure */
|
|
emsMenuP specialMenu /* Out: The menu */
|
|
);
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef struct ems_special_infoParams {
|
|
emsMenuP specialMenu;
|
|
Handle globals;
|
|
} ems_special_infoParams;
|
|
|
|
#define ems_special_info(p1,p2)\
|
|
(\
|
|
ems_GCP.params.ems_special_info.globals = p1,\
|
|
ems_GCP.params.ems_special_info.specialMenu = p2,\
|
|
EMSGCPCALL(special_info))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
/* ----- Call a special menu item hook ----------------------------------------------- */
|
|
pascal ComponentResult
|
|
ems_special_hook(
|
|
Handle globals, /* Out: Return for allocated instance structure */
|
|
emsMenuP specialMenu /* In: The menu */
|
|
);
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef struct ems_special_hookParams {
|
|
emsMenuP specialMenu;
|
|
Handle globals;
|
|
} ems_special_hookParams;
|
|
|
|
#define ems_special_hook(p1,p2)\
|
|
(\
|
|
ems_GCP.params.ems_special_hook.globals = p1,\
|
|
ems_GCP.params.ems_special_hook.specialMenu = p2,\
|
|
EMSGCPCALL(special_hook))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
/* ----- Get some idle time -------------------------------------------------------- */
|
|
pascal ComponentResult
|
|
ems_idle(
|
|
Handle globals, /* Out: Return for allocated instance structure */
|
|
emsIdleDataP idleData /* In: data */
|
|
);
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef struct ems_idleParams {
|
|
emsIdleDataP idleData;
|
|
Handle globals;
|
|
} ems_idleParams;
|
|
|
|
#define ems_idle(p1,p2)\
|
|
(\
|
|
ems_GCP.params.ems_idle.globals = p1,\
|
|
ems_GCP.params.ems_idle.idleData = p2,\
|
|
EMSGCPCALL(idle))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - called to score junk ------------------------- */
|
|
pascal ComponentResult
|
|
ems_score_junk(
|
|
Handle globals, /* In: Allocated instance structure returned in ems_plugin_init */
|
|
emsTranslatorP trans, /* In: Translator Info */
|
|
emsJunkInfoP junkInfo, /* In: Junk information */
|
|
emsMessageInfoP message, /* In: Message to score */
|
|
emsJunkScoreP junkScore, /* Out: Junk score */
|
|
emsResultStatusP status /* Out: Status information */
|
|
);
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef struct ems_score_junkParams {
|
|
emsResultStatusP status;
|
|
emsJunkScoreP junkScore;
|
|
emsMessageInfoP message;
|
|
emsJunkInfoP junkInfo;
|
|
emsTranslatorP trans;
|
|
Handle globals;
|
|
} ems_score_junkParams;
|
|
|
|
#define ems_score_junk(p1,p2,p3,p4,p5,p6)\
|
|
(\
|
|
ems_GCP.params.ems_score_junk.globals = p1,\
|
|
ems_GCP.params.ems_score_junk.trans = p2,\
|
|
ems_GCP.params.ems_score_junk.junkInfo = p3,\
|
|
ems_GCP.params.ems_score_junk.message = p4,\
|
|
ems_GCP.params.ems_score_junk.junkScore = p5,\
|
|
ems_GCP.params.ems_score_junk.status = p6,\
|
|
EMSGCPCALL(score_junk))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
/* ----- NEW in Eudora 6.0/EMSAPI 7.0 - called to mark as junk or not junk ----------- */
|
|
pascal ComponentResult
|
|
ems_user_mark_junk(
|
|
Handle globals, /* In: Allocated instance structure returned in ems_plugin_init */
|
|
emsTranslatorP trans, /* In: Translator Info */
|
|
emsJunkInfoP junkInfo, /* In: Junk information */
|
|
emsMessageInfoP message, /* In: Message that is either being marked as Junk or Not Junk */
|
|
emsJunkScoreP junkScore, /* In: Previous junk score */
|
|
emsResultStatusP status /* Out: Status information */
|
|
);
|
|
//
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef struct ems_user_mark_junkParams {
|
|
emsResultStatusP status;
|
|
emsJunkScoreP junkScore;
|
|
emsMessageInfoP message;
|
|
emsJunkInfoP junkInfo;
|
|
emsTranslatorP trans;
|
|
Handle globals;
|
|
} ems_user_mark_junkParams;
|
|
|
|
#define ems_user_mark_junk(p1,p2,p3,p4,p5,p6)\
|
|
(\
|
|
ems_GCP.params.ems_user_mark_junk.globals = p1,\
|
|
ems_GCP.params.ems_user_mark_junk.trans = p2,\
|
|
ems_GCP.params.ems_user_mark_junk.junkInfo = p3,\
|
|
ems_GCP.params.ems_user_mark_junk.message = p4,\
|
|
ems_GCP.params.ems_user_mark_junk.junkScore = p5,\
|
|
ems_GCP.params.ems_user_mark_junk.status = p6,\
|
|
EMSGCPCALL(user_mark_junk))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA <-SBL->
|
|
|
|
|
|
pascal ComponentResult ems_eudora_mode_notification(
|
|
Handle globals, /* In: Allocated instance structure */
|
|
emsEudoraModeNotificationDataP eudoraModeNotificationData /* In/Out: Mode notification information */
|
|
);
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
typedef struct ems_eudora_mode_notificationParams {
|
|
emsEudoraModeNotificationDataP eudoraModeNotificationData;
|
|
Handle globals;
|
|
} ems_eudora_mode_notificationParams;
|
|
|
|
#if TARGET_RT_MAC_CFM
|
|
#define ems_eudora_mode_notification(p1,p2)\
|
|
(\
|
|
ems_GCP.params.ems_eudora_mode_notification.globals = p1,\
|
|
ems_GCP.params.ems_eudora_mode_notification.eudoraModeNotificationData = p2,\
|
|
EMSGCPCALL(eudora_mode_notification))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA
|
|
|
|
|
|
#ifdef INTERNAL_FOR_QC
|
|
|
|
/* ----- Get context menu for a given mailbox -------------------------------------- */
|
|
pascal ComponentResult ems_mbox_context_info(
|
|
Handle globals,
|
|
emsMenuP mbox_context_Menu /* Out: The menu */
|
|
);
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
typedef struct ems_mbox_context_infoParams {
|
|
emsMenuP mbox_context_Menu;
|
|
Handle globals;
|
|
} ems_mbox_context_infoParams;
|
|
|
|
#if TARGET_RT_MAC_CFM
|
|
#define ems_mbox_context_info(p1,p2)\
|
|
(\
|
|
ems_GCP.params.ems_mbox_context_info.globals = p1,\
|
|
ems_GCP.params.ems_mbox_context_info.mbox_context_Menu = p2,\
|
|
EMSGCPCALL(mbox_context_info))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA
|
|
|
|
|
|
/* ----- Handle context menu hit for mailbox --------------------------------------- */
|
|
pascal ComponentResult ems_mbox_context_hook(
|
|
Handle globals,
|
|
emsMBoxP mailbox, /* Out: The Chosen Mailbox */
|
|
emsMenuP mbox_context_Menu /* In: The menu */
|
|
);
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
typedef struct ems_mbox_context_hookParams {
|
|
emsMenuP mbox_context_Menu;
|
|
emsMBoxP mailbox;
|
|
Handle globals;
|
|
} ems_mbox_context_hookParams;
|
|
|
|
#if TARGET_RT_MAC_CFM
|
|
#define ems_mbox_context_hook(p1,p2,p3)\
|
|
(\
|
|
ems_GCP.params.ems_mbox_context_hook.globals = p1,\
|
|
ems_GCP.params.ems_mbox_context_hook.mailbox = p2,\
|
|
ems_GCP.params.ems_mbox_context_hook.mbox_context_Menu = p3,\
|
|
EMSGCPCALL(mbox_context_hook))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA
|
|
|
|
|
|
pascal ComponentResult ems_mbox_context_folder(
|
|
Handle globals, /* In: Allocated instance structure */
|
|
emsMailBoxContextFolderDataP mailBoxContextFolderData /* In/Out: Mode notification information */
|
|
);
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
typedef struct ems_mbox_context_folderParams {
|
|
emsMailBoxContextFolderDataP mailBoxContextFolderData;
|
|
Handle globals;
|
|
} ems_mbox_context_folderParams;
|
|
|
|
#if TARGET_RT_MAC_CFM
|
|
#define ems_mbox_context_folder(p1,p2)\
|
|
(\
|
|
ems_GCP.params.ems_mbox_context_folder.globals = p1,\
|
|
ems_GCP.params.ems_mbox_context_folder.mailBoxContextFolderData = p2,\
|
|
EMSGCPCALL(mbox_context_folder))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA
|
|
|
|
|
|
// start MODELESS EMSAPI
|
|
pascal ComponentResult ems_plugwindow_close(
|
|
Handle globals,
|
|
emsPlugwindowDataP data /* In: window to close */
|
|
);
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
typedef struct ems_plugwindow_closeParams {
|
|
emsPlugwindowDataP data;
|
|
Handle globals;
|
|
} ems_plugwindow_closeParams;
|
|
|
|
#if TARGET_RT_MAC_CFM
|
|
#define ems_plugwindow_close(p1,p2)\
|
|
(\
|
|
ems_GCP.params.ems_plugwindow_close.globals = p1,\
|
|
ems_GCP.params.ems_plugwindow_close.data = p2,\
|
|
EMSGCPCALL(plugwindow_close))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA
|
|
|
|
|
|
pascal void ems_plugwindow_reopen(
|
|
Handle globals,
|
|
emsPlugwindowDataP data /* In: window to close */
|
|
);
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
typedef struct ems_plugwindow_reopenParams {
|
|
emsPlugwindowDataP data;
|
|
Handle globals;
|
|
} ems_plugwindow_reopenParams;
|
|
|
|
#if TARGET_RT_MAC_CFM
|
|
#define ems_plugwindow_reopen(p1,p2)\
|
|
(\
|
|
ems_GCP.params.ems_plugwindow_reopen.globals = p1,\
|
|
ems_GCP.params.ems_plugwindow_reopen.data = p2,\
|
|
EMSGCPCALL(plugwindow_reopen))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA
|
|
|
|
|
|
pascal ComponentResult ems_plugwindow_event(
|
|
Handle globals,
|
|
emsPlugwindowDataP data,
|
|
emsPlugwindowEventP event
|
|
);
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
typedef struct ems_plugwindow_eventParams {
|
|
emsPlugwindowEventP event;
|
|
emsPlugwindowDataP data;
|
|
Handle globals;
|
|
} ems_plugwindow_eventParams;
|
|
|
|
#if TARGET_RT_MAC_CFM
|
|
#define ems_plugwindow_event(p1,p2,p3)\
|
|
(\
|
|
ems_GCP.params.ems_plugwindow_event.globals = p1,\
|
|
ems_GCP.params.ems_plugwindow_event.data = p2,\
|
|
ems_GCP.params.ems_plugwindow_event.event = p3,\
|
|
EMSGCPCALL(plugwindow_event))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA
|
|
|
|
|
|
pascal void ems_plugwindow_menu_enable(
|
|
Handle globals,
|
|
emsPlugwindowDataP data,
|
|
emsPlugwindowMenuDataP menuData
|
|
);
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
typedef struct ems_plugwindow_menu_enableParams {
|
|
emsPlugwindowMenuDataP menuData;
|
|
emsPlugwindowDataP data;
|
|
Handle globals;
|
|
} ems_plugwindow_menu_enableParams;
|
|
|
|
#if TARGET_RT_MAC_CFM
|
|
#define ems_plugwindow_menu_enable(p1,p2,p3)\
|
|
(\
|
|
ems_GCP.params.ems_plugwindow_menu_enable.globals = p1,\
|
|
ems_GCP.params.ems_plugwindow_menu_enable.data = p2,\
|
|
ems_GCP.params.ems_plugwindow_menu_enable.menuData = p3,\
|
|
EMSGCPCALL(plugwindow_menu_enable))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA
|
|
|
|
|
|
pascal ComponentResult ems_plugwindow_menu(
|
|
Handle globals,
|
|
emsPlugwindowDataP data,
|
|
emsPlugwindowMenuDataP menuData
|
|
);
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
typedef struct ems_plugwindow_menuParams {
|
|
emsPlugwindowMenuDataP menuData;
|
|
emsPlugwindowDataP data;
|
|
Handle globals;
|
|
} ems_plugwindow_menuParams;
|
|
|
|
#if TARGET_RT_MAC_CFM
|
|
#define ems_plugwindow_menu(p1,p2,p3)\
|
|
(\
|
|
ems_GCP.params.ems_plugwindow_menu.globals = p1,\
|
|
ems_GCP.params.ems_plugwindow_menu.data = p2,\
|
|
ems_GCP.params.ems_plugwindow_menu.menuData = p3,\
|
|
EMSGCPCALL(plugwindow_menu))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA
|
|
|
|
|
|
pascal ComponentResult ems_plugwindow_drag(
|
|
Handle globals,
|
|
emsPlugwindowDataP data,
|
|
emsPlugwindowDragDataP dragData
|
|
);
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
typedef struct ems_plugwindow_dragParams {
|
|
emsPlugwindowDragDataP dragData;
|
|
emsPlugwindowDataP data;
|
|
Handle globals;
|
|
} ems_plugwindow_dragParams;
|
|
|
|
#if TARGET_RT_MAC_CFM
|
|
#define ems_plugwindow_drag(p1,p2,p3)\
|
|
(\
|
|
ems_GCP.params.ems_plugwindow_drag.globals = p1,\
|
|
ems_GCP.params.ems_plugwindow_drag.data = p2,\
|
|
ems_GCP.params.ems_plugwindow_drag.dragData = p3,\
|
|
EMSGCPCALL(plugwindow_drag))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA
|
|
// end MODELESS EMSAPI
|
|
|
|
|
|
/* ---------- Get details about an importer in a plugin ------------------ */
|
|
pascal ComponentResult ems_importer_info(
|
|
Handle globals, /* Out: Return for allocated instance structure */
|
|
emsImporterP importerInfo /* In/Out: Return Translator Information */
|
|
);
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
typedef struct ems_importer_infoParams {
|
|
emsImporterP importerInfo;
|
|
Handle globals;
|
|
} ems_importer_infoParams;
|
|
|
|
#if TARGET_RT_MAC_CFM
|
|
#define ems_importer_info(p1,p2)\
|
|
(\
|
|
ems_GCP.params.ems_importer_info.globals = p1,\
|
|
ems_GCP.params.ems_importer_info.importerInfo = p2,\
|
|
EMSGCPCALL(importer_info))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA
|
|
|
|
|
|
/* ----- Call an importer hook ------------------------------------- */
|
|
pascal ComponentResult ems_importer_hook(
|
|
Handle globals, /* Out: Return for allocated instance structure */
|
|
emsImporterDataP importerData /* In/Out: Return Translator Information */
|
|
);
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
typedef struct ems_importer_hookParams {
|
|
emsImporterDataP importerData;
|
|
Handle globals;
|
|
} ems_importer_hookParams;
|
|
|
|
#if TARGET_RT_MAC_CFM
|
|
#define ems_importer_hook(p1,p2)\
|
|
(\
|
|
ems_GCP.params.ems_importer_hook.globals = p1,\
|
|
ems_GCP.params.ems_importer_hook.importerData = p2,\
|
|
EMSGCPCALL(importer_hook))
|
|
#endif
|
|
#endif // INTERNAL_FOR_EUDORA
|
|
|
|
#endif // INTERNAL_FOR_QC
|
|
|
|
#ifdef INTERNAL_FOR_EUDORA
|
|
/* ========== UNION DEFINITION PPC only ====================================*/
|
|
#if TARGET_RT_MAC_CFM
|
|
typedef union ems_ComponentParamUnion
|
|
{
|
|
ems_plugin_versionParams ems_plugin_version;
|
|
ems_plugin_initParams ems_plugin_init;
|
|
ems_translator_infoParams ems_translator_info;
|
|
ems_can_translateParams ems_can_translate;
|
|
ems_translate_fileParams ems_translate_file;
|
|
ems_plugin_finishParams ems_plugin_finish;
|
|
ems_plugin_configParams ems_plugin_config;
|
|
ems_queued_propertiesParams ems_queued_properties;
|
|
ems_attacher_infoParams ems_attacher_info;
|
|
ems_attacher_hookParams ems_attacher_hook;
|
|
ems_special_infoParams ems_special_info;
|
|
ems_special_hookParams ems_special_hook;
|
|
ems_idleParams ems_idle;
|
|
ems_score_junkParams ems_score_junk;
|
|
ems_user_mark_junkParams ems_user_mark_junk;
|
|
ems_mbox_context_infoParams ems_mbox_context_info;
|
|
ems_mbox_context_hookParams ems_mbox_context_hook;
|
|
ems_eudora_mode_notificationParams ems_eudora_mode_notification;
|
|
ems_mbox_context_folderParams ems_mbox_context_folder;
|
|
// start MODELESS EMSAPI
|
|
ems_plugwindow_closeParams ems_plugwindow_close;
|
|
ems_plugwindow_reopenParams ems_plugwindow_reopen;
|
|
ems_plugwindow_eventParams ems_plugwindow_event;
|
|
ems_plugwindow_menu_enableParams ems_plugwindow_menu_enable;
|
|
ems_plugwindow_menuParams ems_plugwindow_menu;
|
|
ems_plugwindow_dragParams ems_plugwindow_drag;
|
|
// end MODELESS EMSAPI
|
|
ems_importer_infoParams ems_importer_info;
|
|
ems_importer_hookParams ems_importer_hook;
|
|
} ems_ComponentParamUnion;
|
|
|
|
typedef struct ems_ComponentParameters
|
|
{
|
|
unsigned char flags; /* Flags - set to zero */
|
|
unsigned char paramSize; /* Size of the params struct */
|
|
short what; /* The component request selector */
|
|
ems_ComponentParamUnion params;
|
|
} ems_ComponentParameters;
|
|
|
|
|
|
/* This global takes the routine parameters for each component function call */
|
|
extern ems_ComponentParameters ems_GCP;
|
|
|
|
|
|
/* Routine to put a copy of the component params on the stack and call
|
|
CallComponentUPP. This function is implemented in emsapi-gum.c */
|
|
ComponentResult Callems_ComponentFunction(ems_ComponentParameters params);
|
|
#endif
|
|
|
|
|
|
#if PRAGMA_IMPORT_SUPPORTED
|
|
#pragma import off
|
|
#endif
|
|
|
|
#else // EXTERNAL_FOR_PLUGINS
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif // EXTERNAL_FOR_PLUGINS <-SBL->
|
|
|
|
#if PRAGMA_STRUCT_ALIGN
|
|
#pragma options align=reset
|
|
#endif
|
|
|
|
#endif /* __EMS_MAC__ */
|