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 #endif
00278 
00280 typedef struct {
00282         const char *groupName;
00286         ai::UnicodeString itemText;
00287 } AIPlatformAddMenuItemDataUS;
00288 
00292 typedef struct {
00294         AIPlatformMenuHandle menu;
00296         ai::int16 item;
00297 } AIPlatformMenuItem;
00298 
00300 typedef struct {
00302         SPMessageData d;
00304         AIMenuItemHandle menuItem;
00305 } AIMenuMessage;
00306 
00307 
00308 /*******************************************************************************
00309  **
00310  **     Suite
00311  **
00312  **/
00313 
00413 typedef struct {
00414 
00429         AIAPI AIErr (*AddMenuItem) ( SPPluginRef self, const char*inKeyboardShortDictionaryKey,
00430                                 AIPlatformAddMenuItemDataUS *data, AIMenuItemOption options,
00431                                 AIMenuItemHandle *menuItem );
00432 
00445         AIAPI AIErr (*AddMenuItemZString) ( SPPluginRef self, const char*inKeyboardShortDictionaryKey,
00446                                 const char *groupName, ZRef itemText, AIMenuItemOption options,
00447                                 AIMenuItemHandle *menuItem );
00448 
00453         AIAPI AIErr (*GetMenuItemKeyboardShortcutDictionaryKey) ( AIMenuItemHandle menuItem, const char**outKey );
00454 
00460         AIAPI AIErr (*GetMenuItemOptions) ( AIMenuItemHandle menuItem, AIMenuItemOption *options );
00461 
00466         AIAPI AIErr (*SetMenuItemOptions) ( AIMenuItemHandle menuItem, AIMenuItemOption options );
00467 
00472         AIAPI AIErr (*GetMenuItemPlugin) ( AIMenuItemHandle menuItem,
00473                                 SPPluginRef *plugin );
00474 
00480         AIAPI AIErr (*CountMenuItems) ( ai::int32 *count );
00481 
00487         AIAPI AIErr (*GetNthMenuItem) ( ai::int32 n, AIMenuItemHandle *menuItem );
00488 
00495         AIAPI AIErr (*GetPlatformMenuItem) ( AIMenuItemHandle menuItem,
00496                                 AIPlatformMenuItem *platformMenuItem );
00497 
00535         AIAPI AIErr (*UpdateMenuItemAutomatically) ( AIMenuItemHandle menuItem,
00536                                 ai::int32 action,
00537                                 ai::int32 ifObjectIsInArtwork, ai::int32 ifObjectIsNotInArtwork,
00538                                 ai::int32 ifObjectIsSelected, ai::int32 ifObjectIsNotSelected,
00539                                 ai::int32 ifIsTrue, ai::int32 ifIsNotTrue );
00540 
00561         AIAPI AIErr (*GetUpdateFlags)( ai::int32 *inArtwork, ai::int32 *isSelected, ai::int32 *isTrue );
00562 
00563         /*-------------------------------------------------------------------------------------------*/
00564 
00568         AIAPI AIErr (*EnableItem) ( AIMenuItemHandle menuItem);
00572         AIAPI AIErr (*DisableItem) ( AIMenuItemHandle menuItem);
00573 
00580         AIAPI AIErr (*GetItemText) ( AIMenuItemHandle menuItem, ai::UnicodeString &itemString );
00581 
00586         AIAPI AIErr (*SetItemText) ( AIMenuItemHandle menuItem, const ai::UnicodeString &itemString );
00587 
00592         AIAPI AIErr (*SetItemTextZString) ( AIMenuItemHandle menuItem, ZRef itemString );
00593 
00598         AIAPI AIErr (*CheckItem) ( AIMenuItemHandle menuItem, AIBoolean bCheckIt );
00599 
00604         AIAPI AIErr (*GetItemMenuGroup) ( AIMenuItemHandle menuItem, AIMenuGroup *group );
00605 
00626         AIAPI AIErr (*AddMenuGroup) ( const char* name, AIMenuGroupOption options, const char* nearGroup,
00627                                 AIMenuGroup *group );
00628 
00638         AIAPI AIErr (*AddMenuGroupAsSubMenu) ( const char* name, AIMenuGroupOption options, AIMenuItemHandle menuItem, AIMenuGroup *group);
00639 
00644         AIAPI AIErr (*GetMenuGroupName) ( AIMenuGroup group,  const char**name);
00645 
00651         AIAPI AIErr (*GetMenuGroupOptions) ( AIMenuGroup group, AIMenuGroupOption *options );
00652 
00657         AIAPI AIErr (*SetMenuGroupOptions) ( AIMenuGroup group, AIMenuGroupOption options );
00658 
00669         AIAPI AIErr (*GetMenuGroupRange) ( AIMenuGroup group, AIPlatformMenuHandle *theMenu,
00670                                 ai::int16 *firstItem, ai::int16 *numItems );
00671 
00676         AIAPI AIErr (*CountMenuGroups) ( ai::int32 *count );
00677 
00683         AIAPI AIErr (*GetNthMenuGroup) ( ai::int32 n, AIMenuGroup *group );
00684 
00692         AIAPI AIErr (*GetItemCmd) ( AIMenuItemHandle menuItem, ai::int16 *cmdChar, ai::int16 *modifiers );
00693 
00701         AIAPI AIErr (*SetItemCmd) ( AIMenuItemHandle menuItem, char cmdChar, ai::int16 modifiers );
00702 
00709         AIAPI AIErr (*GetItemFunctionKey) ( AIMenuItemHandle menuItem, ai::int16 *fkey, ai::int16 *modifiers );
00710 
00717         AIAPI AIErr (*SetItemFunctionKey) ( AIMenuItemHandle menuItem, ai::int16 fkey, ai::int16 modifiers );
00718 
00724         AIAPI AIErr (*IsItemEnabled) ( AIMenuItemHandle menuItem, ASBoolean *bEnabled);
00725 
00731         AIAPI AIErr (*IsItemChecked) ( AIMenuItemHandle menuItem, AIBoolean *bCheckIt );
00732 
00736         AIAPI AIErr (*RemoveMenuItem) ( AIMenuItemHandle menuItem );
00737 
00746         AIAPI AIErr (*SetMenuGroupHeader) (AIMenuGroup inGroup, const ai::UnicodeString &inHeader);
00747 
00751         AIAPI AIErr     (*InvokeMenuAction)(AICommandID menuCmdID);
00752 
00753 } AIMenuSuite;
00754 
00755 
00756 #include "AIHeaderEnd.h"
00757 
00758 #endif


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