00001 #ifndef __AIMenu__
00002 #define __AIMenu__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef __AITypes__
00030 #include "AITypes.h"
00031 #endif
00032
00033 #ifndef __AIPlugin__
00034 #include "AIPlugin.h"
00035 #endif
00036
00037 #ifndef __ASHelp__
00038 #include "ASHelp.h"
00039 #endif
00040
00041 #ifndef _IAIUNICODESTRING_H_
00042 #include "IAIUnicodeString.h"
00043 #endif
00044
00045 #include "AIHeaderBegin.h"
00046
00049
00050
00051
00052
00053
00054
00055 #define kAIMenuSuite "AI Menu Suite"
00056 #define kAIMenuVersion11 AIAPI_VERSION(11) // In AI14
00057
00058
00059 #define kAIMenuSuiteVersion kAIMenuVersion11
00060 #define kAIMenuVersion kAIMenuSuiteVersion
00061
00062
00066 #define kAIMenuChangedNotifier "AI Menu Changed Notifier"
00067
00070 #define kCallerAIMenu "AI Menu"
00071
00078 #define kSelectorAIGoMenuItem "AI Go"
00079
00092 #define kSelectorAIUpdateMenuItem "AI Update"
00093
00094
00097 typedef ai::int32 AIMenuItemOption;
00099 enum {
00101 kMenuItemNoOptions = 0,
00103 kMenuItemWantsUpdateOption = (1<<0),
00105 kMenuItemAlwaysEnabled = (1<<1),
00108 kMenuItemIsSeparator = (1<<2),
00111 kMenuItemIsGroupHeader = (1<<3),
00114 kMenuItemIgnoreSort = (1<<4)
00115 };
00116
00119 typedef ai::int32 AIMenuGroupOption;
00121 enum {
00123 kMenuGroupNoOptions = 0,
00126 kMenuGroupSortedAlphabeticallyOption = (1<<0),
00128 kMenuGroupSeparatorOption = (1<<1),
00130 kMenuGroupSeparatorBelowOption = (1<<2),
00133 kMenuGroupHasHeader = (1<<3),
00135 kMenuGroupAddAboveNearGroup = (1<<4)
00136 };
00137
00138
00141 enum AIAutoMenuUpdateAction {
00143 kAutoEnableMenuItemAction = (1<<0),
00146 kAutoCheckMenuItemAction = (1<<1)
00147 };
00148
00152 enum AIAutoMenuUpdateObjectCriteria {
00154 kIfGroup = (1<<0),
00156 kIfPath = (1<<1),
00158 kIfPostscript = (1<<2),
00160 kIfPlaced = (1<<3),
00162 kIfText = (1<<4),
00165 kIfTextPath = (1<<5),
00167 kIfTextFlow = (1<<6),
00169 kIfTextRun = (1<<7),
00171 kIfGuide = (1<<8),
00173 kIfGraphData = (1<<9),
00175 kIfMask = (1<<10),
00177 kIfEndMask = (1<<11),
00179 kIfNormalGroup = (1<<12),
00181 kIfCompoundGroup = (1<<13),
00183 kIfWrapAroundGroup = (1<<14),
00185 kIfClipGroup = (1<<15),
00187 kIfPointText = (1<<16),
00189 kIfInPathText = (1<<17),
00191 kIfOnPathText = (1<<18),
00193 kIfThreadedText = (1<<19),
00195 kIfRaster = (1<<20),
00197 kIfPluginArt = (1<<21),
00199 kIfMesh = (1<<22),
00201 kIfHasStyledArt = (1<<23),
00203 kIfSymbol = (1<<24),
00205 kIfForeignArt = (1<<25),
00207 kIfLegacyTextArt = (1<<26),
00209 kIfClassicPath = (1<<27),
00211 kIfPlanarPath = (1<<28),
00213 kIfNonTextPath = (1<<29),
00215 kIfChartArt = (1<<30),
00217 kIfAnyArt = (0xFFFFFFFF)
00218 };
00219
00220
00222 #define kMacIfPlugin kIfPluginArt
00223
00226 enum AIAutoMenuUpdatePropertyCriteria {
00227 kIfCurrentLayerIsEditable = (1<<0),
00228 kIfOpenTextEdit = (1<<1),
00229 kIfAnyPrintingChars = (1<<2),
00230 kIfAnyHiddenObjects = (1<<3),
00231 kIfAnyLockedObjects = (1<<4),
00232 kIfAnyClipPaths = (1<<5),
00233 kIfOpenDocument = (1<<6),
00234 kIfCMYKDocument = (1<<7),
00235 kIfRGBDocument = (1<<8),
00236 kIfCurrentArtStyleIsNamed = (1<<9),
00237 kIfHasPluginSelection = (1<<10)
00238 };
00239
00242 enum AIMenuItemModifier {
00244 kMenuItemCmdShiftModifier = 1,
00246 kMenuItemCmdOptionModifier = 2,
00248 kMenuItemCmdControlModifier = 4
00249 };
00250
00251
00253 #define kTooManyMenuItemsErr '>MIT'
00254
00255
00256
00257
00258
00259
00260
00261
00264 typedef struct _t_AIMenuItemOpaque *AIMenuItemHandle;
00267 typedef struct _t_MenuGroupOpaque *AIMenuGroup;
00268
00269 #if Macintosh
00270
00272 typedef struct MacMenu_t* AIPlatformMenuHandle;
00273 #elif MSWindows
00274
00276 typedef struct WinMenu **AIPlatformMenuHandle;
00277 #elif LINUX_ENV
00278 typedef void **AIPlatformMenuHandle;
00279 #endif
00280
00282 typedef struct {
00284 const char *groupName;
00288 ai::UnicodeString itemText;
00289 } AIPlatformAddMenuItemDataUS;
00290
00294 typedef struct {
00296 AIPlatformMenuHandle menu;
00298 ai::int16 item;
00299 } AIPlatformMenuItem;
00300
00302 typedef struct {
00304 SPMessageData d;
00306 AIMenuItemHandle menuItem;
00307 } AIMenuMessage;
00308
00309
00310
00311
00312
00313
00314
00315
00415 typedef struct {
00416
00431 AIAPI AIErr (*AddMenuItem) ( SPPluginRef self, const char*inKeyboardShortDictionaryKey,
00432 AIPlatformAddMenuItemDataUS *data, AIMenuItemOption options,
00433 AIMenuItemHandle *menuItem );
00434
00447 AIAPI AIErr (*AddMenuItemZString) ( SPPluginRef self, const char*inKeyboardShortDictionaryKey,
00448 const char *groupName, ZRef itemText, AIMenuItemOption options,
00449 AIMenuItemHandle *menuItem );
00450
00455 AIAPI AIErr (*GetMenuItemKeyboardShortcutDictionaryKey) ( AIMenuItemHandle menuItem, const char**outKey );
00456
00462 AIAPI AIErr (*GetMenuItemOptions) ( AIMenuItemHandle menuItem, AIMenuItemOption *options );
00463
00468 AIAPI AIErr (*SetMenuItemOptions) ( AIMenuItemHandle menuItem, AIMenuItemOption options );
00469
00474 AIAPI AIErr (*GetMenuItemPlugin) ( AIMenuItemHandle menuItem,
00475 SPPluginRef *plugin );
00476
00482 AIAPI AIErr (*CountMenuItems) ( ai::int32 *count );
00483
00489 AIAPI AIErr (*GetNthMenuItem) ( ai::int32 n, AIMenuItemHandle *menuItem );
00490
00497 AIAPI AIErr (*GetPlatformMenuItem) ( AIMenuItemHandle menuItem,
00498 AIPlatformMenuItem *platformMenuItem );
00499
00537 AIAPI AIErr (*UpdateMenuItemAutomatically) ( AIMenuItemHandle menuItem,
00538 ai::int32 action,
00539 ai::int32 ifObjectIsInArtwork, ai::int32 ifObjectIsNotInArtwork,
00540 ai::int32 ifObjectIsSelected, ai::int32 ifObjectIsNotSelected,
00541 ai::int32 ifIsTrue, ai::int32 ifIsNotTrue );
00542
00563 AIAPI AIErr (*GetUpdateFlags)( ai::int32 *inArtwork, ai::int32 *isSelected, ai::int32 *isTrue );
00564
00565
00566
00570 AIAPI AIErr (*EnableItem) ( AIMenuItemHandle menuItem);
00574 AIAPI AIErr (*DisableItem) ( AIMenuItemHandle menuItem);
00575
00582 AIAPI AIErr (*GetItemText) ( AIMenuItemHandle menuItem, ai::UnicodeString &itemString );
00583
00588 AIAPI AIErr (*SetItemText) ( AIMenuItemHandle menuItem, const ai::UnicodeString &itemString );
00589
00594 AIAPI AIErr (*SetItemTextZString) ( AIMenuItemHandle menuItem, ZRef itemString );
00595
00600 AIAPI AIErr (*CheckItem) ( AIMenuItemHandle menuItem, AIBoolean bCheckIt );
00601
00606 AIAPI AIErr (*GetItemMenuGroup) ( AIMenuItemHandle menuItem, AIMenuGroup *group );
00607
00628 AIAPI AIErr (*AddMenuGroup) ( const char* name, AIMenuGroupOption options, const char* nearGroup,
00629 AIMenuGroup *group );
00630
00640 AIAPI AIErr (*AddMenuGroupAsSubMenu) ( const char* name, AIMenuGroupOption options, AIMenuItemHandle menuItem, AIMenuGroup *group);
00641
00646 AIAPI AIErr (*GetMenuGroupName) ( AIMenuGroup group, const char**name);
00647
00653 AIAPI AIErr (*GetMenuGroupOptions) ( AIMenuGroup group, AIMenuGroupOption *options );
00654
00659 AIAPI AIErr (*SetMenuGroupOptions) ( AIMenuGroup group, AIMenuGroupOption options );
00660
00671 AIAPI AIErr (*GetMenuGroupRange) ( AIMenuGroup group, AIPlatformMenuHandle *theMenu,
00672 ai::int16 *firstItem, ai::int16 *numItems );
00673
00678 AIAPI AIErr (*CountMenuGroups) ( ai::int32 *count );
00679
00685 AIAPI AIErr (*GetNthMenuGroup) ( ai::int32 n, AIMenuGroup *group );
00686
00694 AIAPI AIErr (*GetItemCmd) ( AIMenuItemHandle menuItem, ai::int16 *cmdChar, ai::int16 *modifiers );
00695
00703 AIAPI AIErr (*SetItemCmd) ( AIMenuItemHandle menuItem, char cmdChar, ai::int16 modifiers );
00704
00711 AIAPI AIErr (*GetItemFunctionKey) ( AIMenuItemHandle menuItem, ai::int16 *fkey, ai::int16 *modifiers );
00712
00719 AIAPI AIErr (*SetItemFunctionKey) ( AIMenuItemHandle menuItem, ai::int16 fkey, ai::int16 modifiers );
00720
00726 AIAPI AIErr (*IsItemEnabled) ( AIMenuItemHandle menuItem, ASBoolean *bEnabled);
00727
00733 AIAPI AIErr (*IsItemChecked) ( AIMenuItemHandle menuItem, AIBoolean *bCheckIt );
00734
00738 AIAPI AIErr (*RemoveMenuItem) ( AIMenuItemHandle menuItem );
00739
00748 AIAPI AIErr (*SetMenuGroupHeader) (AIMenuGroup inGroup, const ai::UnicodeString &inHeader);
00749
00753 AIAPI AIErr (*InvokeMenuAction)(AICommandID menuCmdID);
00754
00755 } AIMenuSuite;
00756
00757
00758 #include "AIHeaderEnd.h"
00759
00760 #endif