// Copyright © 2013 The CefSharp Authors. All rights reserved. // // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. namespace CefSharp { /// /// Supports creation and modification of menus. See for the command ids that have default implementations. /// All user-defined command ids should be between and . /// The methods of this class can only be accessed on the CEF UI thread, which by default is not the same as your application UI thread. /// public interface IMenuModel { /// /// Returns the number of items in this menu. /// int Count { get; } /// /// Remove all menu items. Can be used to disable the context menu. Returns true on success. /// /// Returns true on success bool Clear(); /// /// Returns the label at the specified index or empty if not found due to /// invalid range or the index being a separator. /// /// specified index /// Label or empty if not found due to invalid range or the index being a separator. string GetLabelAt(int index); /// /// Returns the command id at the specified index or -1 if not found due to invalid range or the index being a separator. /// /// the index /// Command or -1 if not found due to invalid range or the index being a separator. CefMenuCommand GetCommandIdAt(int index); /// /// Removes the item with the specified commandId. /// /// the command Id /// Returns true on success bool Remove(CefMenuCommand commandId); /// /// Add an item to the menu. /// /// the command Id /// the label of the item /// Returns true on success. bool AddItem(CefMenuCommand commandId, string label); /// /// Add a separator to the menu. /// /// Returns true on success. bool AddSeparator(); /// /// Add a check item to the menu. /// /// the command Id /// the label of the item /// Returns true on success. bool AddCheckItem(CefMenuCommand commandId, string label); /// /// Add a radio item to the menu. Only a single item with the specified groupId can be checked at a time. /// /// the command Id /// the label of the item /// the group id /// Returns true on success. bool AddRadioItem(CefMenuCommand commandId, string label, int groupId); /// /// Add a sub-menu to the menu. The new sub-menu is returned. /// /// the command Id /// the label of the item /// Returns the newly created . IMenuModel AddSubMenu(CefMenuCommand commandId, string label); /// /// Insert a separator in the menu at the specified index. /// /// index /// Returns true on success. bool InsertSeparatorAt(int index); /// /// Insert an item in the menu at the specified index. /// /// index /// the command Id /// the label of the item /// Returns true on success. bool InsertItemAt(int index, CefMenuCommand commandId, string label); /// /// Insert a check item in the menu at the specified index. /// /// index /// the command Id /// the label of the item /// Returns true on success. bool InsertCheckItemAt(int index, CefMenuCommand commandId, string label); /// /// Insert a radio item in the menu at the specified index. /// Only a single item with the specified groupId can be checked at a time. /// /// index /// the command Id /// the label of the item /// the group id /// Returns true on success. bool InsertRadioItemAt(int index, CefMenuCommand commandId, string label, int groupId); /// /// Insert a sub-menu in the menu at the specified index. /// /// index /// the command Id /// the label of the item /// Returns the newly created . IMenuModel InsertSubMenuAt(int index, CefMenuCommand commandId, string label); /// /// Removes the item at the specified index. /// /// index /// Returns true on success. bool RemoveAt(int index); /// /// Returns the index associated with the specified commandId or -1 if not found due to the command id not existing in the menu. /// /// the command Id /// Returns the index associated with the specified commandId or -1 if not found due to the command id not existing in the menu. int GetIndexOf(CefMenuCommand commandId); /// /// Sets the command id at the specified index. /// /// index /// the command Id /// Returns true on success. bool SetCommandIdAt(int index, CefMenuCommand commandId); /// /// Returns the label for the specified commandId or empty if not found. /// /// the command Id /// Returns the label for the specified commandId or empty if not found. string GetLabel(CefMenuCommand commandId); /// /// Sets the label for the specified commandId. /// /// the command Id /// the label /// Returns true on success. bool SetLabel(CefMenuCommand commandId, string label); /// /// Set the label at the specified index. /// /// index /// the label /// Returns true on success. bool SetLabelAt(int index, string label); /// /// Returns the item type for the specified commandId. /// /// the command Id /// Returns the item type for the specified commandId. MenuItemType GetType(CefMenuCommand commandId); /// /// Returns the item type at the specified index. /// /// index /// Returns the item type at the specified index. MenuItemType GetTypeAt(int index); /// /// Returns the group id for the specified commandId or -1 if invalid. /// /// the command Id /// Returns the group id for the specified commandId or -1 if invalid. int GetGroupId(CefMenuCommand commandId); /// /// Returns the group id at the specified index or -1 if invalid. /// /// index /// Returns the group id at the specified index or -1 if invalid. int GetGroupIdAt(int index); /// /// Sets the group id for the specified commandId. /// /// the command Id /// the group id /// Returns true on success. bool SetGroupId(CefMenuCommand commandId, int groupId); /// /// Sets the group id at the specified index. /// /// index /// the group id /// Returns true on success. bool SetGroupIdAt(int index, int groupId); /// /// Returns the for the specified commandId or null if invalid. /// /// the command Id /// Returns the for the specified commandId or null if invalid. IMenuModel GetSubMenu(CefMenuCommand commandId); /// /// Returns the at the specified index or empty if invalid. /// /// index /// Returns the for the specified commandId or null if invalid. IMenuModel GetSubMenuAt(int index); /// /// Returns true if the specified commandId is visible. /// /// the command Id /// Returns true if the specified commandId is visible. bool IsVisible(CefMenuCommand commandId); /// /// Returns true if the specified index is visible. /// /// index /// Returns true if the specified index is visible. bool IsVisibleAt(int index); /// /// Change the visibility of the specified commandId. /// /// the command Id /// visible /// Returns true on success. bool SetVisible(CefMenuCommand commandId, bool visible); /// /// Change the visibility at the specified index. /// /// index /// visible /// Returns true on success. bool SetVisibleAt(int index, bool visible); /// /// Returns true if the specified commandId is enabled. /// /// the command Id /// Returns true if the specified commandId is enabled. bool IsEnabled(CefMenuCommand commandId); /// /// Returns true if the specified index is enabled. /// /// index /// Returns true if the specified index is enabled. bool IsEnabledAt(int index); /// /// Change the enabled status of the specified commandId. /// /// the command Id /// is enabled /// Returns true on success. bool SetEnabled(CefMenuCommand commandId, bool enabled); /// /// Change the enabled status at the specified index. /// /// index /// is enabled /// Returns true on success. bool SetEnabledAt(int index, bool enabled); /// /// Returns true if the specified commandId is checked. Only applies to check and radio items. /// /// the command Id /// Returns true if the specified commandId is checked. Only applies to check and radio items. bool IsChecked(CefMenuCommand commandId); /// /// Returns true if the specified index is checked. Only applies to check and radio items. /// /// index /// Returns true if the specified index is checked. Only applies to check and radio items. bool IsCheckedAt(int index); /// /// Check the specified commandId. Only applies to check and radio items. /// /// the command Id /// set checked /// Returns true on success. bool SetChecked(CefMenuCommand commandId, bool isChecked); /// /// Check the specified index. Only applies to check and radio items. /// /// index /// set checked /// Returns true on success. bool SetCheckedAt(int index, bool isChecked); /// /// Returns true if the specified commandId has a keyboard accelerator assigned. /// /// the command Id /// Returns true if the specified commandId has a keyboard accelerator assigned. bool HasAccelerator(CefMenuCommand commandId); /// /// Returns true if the specified index has a keyboard accelerator assigned. /// /// index /// Returns true if the specified index has a keyboard accelerator assigned. bool HasAcceleratorAt(int index); /// /// Set the keyboard accelerator for the specified commandId. /// /// the command Id /// keyCode can be any key or character value. /// shift key pressed /// ctrl key pressed /// alt key pressed /// Returns true on success. bool SetAccelerator(CefMenuCommand commandId, int keyCode, bool shiftPressed, bool ctrlPressed, bool altPressed); /// /// Set the keyboard accelerator at the specified index. keyCode can be any key or character value. /// /// index /// keyCode can be any key or character value. /// shift key pressed /// ctrl key pressed /// alt key pressed /// Returns true on success. bool SetAcceleratorAt(int index, int keyCode, bool shiftPressed, bool ctrlPressed, bool altPressed); /// /// Remove the keyboard accelerator for the specified commandId. /// /// the command Id /// Returns true on success. bool RemoveAccelerator(CefMenuCommand commandId); /// /// Remove the keyboard accelerator at the specified index. /// /// index /// Returns true on success. bool RemoveAcceleratorAt(int index); /// /// Retrieves the keyboard accelerator for the specified commandId. /// /// the command Id /// keyCode can be any key or character value. /// shift key pressed /// ctrl key pressed /// alt key pressed /// Returns true on success. bool GetAccelerator(CefMenuCommand commandId, out int keyCode, out bool shiftPressed, out bool ctrlPressed, out bool altPressed); /// /// Retrieves the keyboard accelerator for the specified index. /// /// index /// keyCode can be any key or character value. /// shift key pressed /// ctrl key pressed /// alt key pressed /// Returns true on success. bool GetAcceleratorAt(int index, out int keyCode, out bool shiftPressed, out bool ctrlPressed, out bool altPressed); } }