Adobe.com
Contents Suites Classes Class Index Member Index

AIMenu.h

Go to the documentation of this file.
00001 #ifndef __AIMenu__
00002 #define __AIMenu__
00003 
00004 /*
00005  *        Name: AIMenu.h
00006  *      Author:
00007  *        Date:
00008  *     Purpose: Adobe Illustrator Menu Suite.
00009  *
00010  * ADOBE SYSTEMS INCORPORATED
00011  * Copyright 1986-2015 Adobe Systems Incorporated.
00012  * All rights reserved.
00013  *
00014  * NOTICE:  Adobe permits you to use, modify, and distribute this file
00015  * in accordance with the terms of the Adobe license agreement
00016  * accompanying it. If you have received this file from a source other
00017  * than Adobe, then your use, modification, or distribution of it
00018  * requires the prior written permission of Adobe.
00019  *
00020  */
00021 
00022 
00023 /*******************************************************************************
00024  **
00025  **     Imports
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  **     Constants
00052  **
00053  **/
00054 
00055 #define kAIMenuSuite                                    "AI Menu Suite"
00056 #define kAIMenuVersion11                                AIAPI_VERSION(11)               // In AI14
00057 
00058 // latest version
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),      // AI8
00199         kIfMesh                                                         = (1<<22),      // AI8
00201         kIfHasStyledArt                                         = (1<<23),      // AI9
00203         kIfSymbol                                                       = (1<<24),      // AI10
00205         kIfForeignArt                                           = (1<<25),      // AI11
00207         kIfLegacyTextArt                                        = (1<<26),      // AI11
00209         kIfClassicPath                                          = (1<<27),      // AI12
00211         kIfPlanarPath                                           = (1<<28), // AI12
00213         kIfNonTextPath                                          = (1<<29), // AI12
00215         kIfChartArt                                                     = (1<<30),      // AI19
00217         kIfAnyArt                                                       = (0xFFFFFFFF)  //      AI11
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),               // AI9
00235         kIfRGBDocument                                          = (1<<8),               // AI9
00236         kIfCurrentArtStyleIsNamed                       = (1<<9),               // AI9
00237         kIfHasPluginSelection                           = (1<<10)               // AI12
00238 };
00239 
00242 enum AIMenuItemModifier {
00244         kMenuItemCmdShiftModifier                       = 1,
00246         kMenuItemCmdOptionModifier                      = 2,
00248         kMenuItemCmdControlModifier                     = 4             // the control key on the Mac.
00249 };
00250 
00251 
00253 #define kTooManyMenuItemsErr                    '>MIT'
00254 
00255 
00256 /*******************************************************************************
00257  **
00258  **     Types
00259  **
00260  **/
00261 
00264 typedef struct _t_AIMenuItemOpaque      *AIMenuItemHandle;
00267 typedef struct _t_MenuGroupOpaque       *AIMenuGroup;   // new for AI7.0
00268 
00269 #if Macintosh
00270 
00272         typedef struct MacMenu_t* AIPlatformMenuHandle;
00273 #elif MSWindows
00274 
00276         typedef struct WinMenu  **AIPlatformMenuHandle;  // can cast it to HMENU
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  **     Suite
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


Contents Suites Classes Class Index Member Index
Adobe Solutions Network
 
Copyright © 2014 Adobe Systems Incorporated. All rights reserved.
Terms of Use Online Privacy Policy Adobe and accessibility Avoid software piracy Permissions and Trademarks