public MenuEntry(string path, bool enabled, int order, MenuClickHandler handler, object userdata) { Path = path; Enabled = enabled; Order = order; Handler = handler; Userdata = userdata; }
public void AddMenuClickHandler(string key, MenuClickHandler handler) { if (m_handlers.ContainsKey(key)) { m_handlers.Remove(key); } m_handlers.Add(key, handler); }
public MenuItem(MenuItemGroup parentGroup, string text, Bitmap image, object tag, MenuClickHandler clickHandler) { this.ParentGroup = parentGroup; this.text = text; this.image = image; this.tag = tag; this.clickHandler = clickHandler; }
public MenuEntry[] GetMenuItems() { if (_updateMenuItems == null || _updateMenuItems.IsCompleted) { _updateMenuItems = Task.Run(async() => { var items = new List <MenuEntry>(); foreach (var ext in _extensionManager.Extensions) { var toRemove = new List <WeakReference <Extension.Extension> >(); if (_ignoredExtensions.Any(x => { Extension.Extension oext; if (x.TryGetTarget(out oext)) { return(oext == ext); } else { toRemove.Add(x); } return(false); })) { continue; } _ignoredExtensions.RemoveAll(toRemove.Contains); var client = ext.GetClient <Grpc.ExtensionHost.MenuEntries.MenuEntriesClient>(); RepeatedField <Grpc.ExtensionHost.MenuItem> rawItems; try { var result = await client.GetMenuItemsAsync(new Grpc.ExtensionHost.GetMenuItemsRequest()); rawItems = result.MenuItems; } catch (Exception ex) { _consoleHandle.LogError(ex); _ignoredExtensions.Add(new WeakReference <Extension.Extension>(ext)); continue; } items.AddRange(rawItems.Select(y => { MenuClickHandler clickCallback = e => { Task.Run(async() => { try { await client.MenuItemClickedAsync(new Grpc.ExtensionHost.MenuItemClickedRequest { MenuItemId = y.Id }); } catch (Exception ex) { _consoleHandle.LogError(ex); } }); }; return(new MenuEntry(y.Path, y.Enabled, (int)y.Order, clickCallback, null)); })); } _menuItems = items.ToArray(); await Task.Delay(1000); }); } return(_menuItems); }