コード例 #1
0
ファイル: OSXMenu.cs プロジェクト: highattack30/monodevelop-1
        //updates commands and populates arrays and dynamic menus
        static CarbonEventHandlerStatus HandleMenuOpening(IntPtr callRef, IntPtr eventRef, IntPtr user_data)
        {
            DestroyOldMenuObjects();
            menuOpenDepth++;
            try {
                IntPtr menuRef = Carbon.GetEventParameter(eventRef, CarbonEventParameterName.DirectObject, CarbonEventParameterType.MenuRef);

                //don't update dynamic menus recursively
                if (!mainMenus.Contains(menuRef) && menuRef != appMenu)
                {
                    return(CarbonEventHandlerStatus.NotHandled);
                }

                //	uint cmd = HIToolbox.GetMenuItemCommandID (new HIMenuItem (menuRef, 0));

                CommandTargetRoute route = new CommandTargetRoute();
                ushort             count = HIToolbox.CountMenuItems(menuRef);
                for (ushort i = 1; i <= count; i++)
                {
                    HIMenuItem mi       = new HIMenuItem(menuRef, i);
                    uint       macCmdID = HIToolbox.GetMenuItemCommandID(mi);
                    object     cmdID;

                    //link items
                    if (macCmdID == linkCommandId)
                    {
                        if (IsGloballyDisabled)
                        {
                            HIToolbox.DisableMenuItem(mi);
                        }
                        else
                        {
                            HIToolbox.EnableMenuItem(mi);
                        }
                        continue;
                    }

                    //items that map to command objects
                    if (!commands.TryGetValue(macCmdID, out cmdID) || cmdID == null)
                    {
                        continue;
                    }

                    CommandInfo cinfo = manager.GetCommandInfo(cmdID, route);
                    menuIdMap[cmdID] = HIToolbox.GetMenuID(menuRef);
                    UpdateMenuItem(menuRef, menuRef, ref i, ref count, macCmdID, cinfo);
                }
            } catch (Exception ex) {
                System.Console.WriteLine(ex);
            }

            return(CarbonEventHandlerStatus.NotHandled);
        }
コード例 #2
0
ファイル: MacMainMenu.cs プロジェクト: zheref/monodevelop
 static CarbonHICommand GetCarbonHICommand(IntPtr eventRef)
 {
     return(Carbon.GetEventParameter <CarbonHICommand> (eventRef, CarbonEventParameterName.DirectObject,
                                                        CarbonEventParameterType.HICommand));
 }