private ToolStripMenuItem MenuToToolStripMenuItem(LightMenu m) { var temp = new ToolStripMenuItem(m.Text); if (m.Items != null) { m.PropertyChanged += (sender, args) => { LogTo.Debug("Property changed: {0}", args.PropertyName); if (args.PropertyName != "Items") return; LogTo.Debug("Regenerating ToolStripMenuItems for menu {0}", m.Text); temp.DropDownItems.Clear(); foreach (var item in m.Items) temp.DropDownItems.Add(MenuToToolStripMenuItem(item)); }; if(m.PullRight) temp.Alignment = ToolStripItemAlignment.Right; foreach (var item in m.Items) temp.DropDownItems.Add(MenuToToolStripMenuItem(item)); } temp.Click += m.FireClicked; temp.Checked = m.Checked; if (m.Highlight) temp.BackColor = Color.Aqua; m.PropertyChanged += (sender, args) => { LogTo.Debug("Property changed: {0}", args.PropertyName); if (args.PropertyName != "Checked") return; if (m.Checked != temp.Checked) temp.Checked = m.Checked; }; temp.DropDownItemClicked += (sender, args) => m.FireItemClicked(sender, args.ClickedItem.Text); temp.DropDownOpening += m.FireItemListOpening; return temp; }
private void SetItems() { _menu.Items.Clear(); _devicePaths = _dataDevice.Devices; _deviceNames = _dataDevice.ListAvailableDevices().ToArray(); var menus = new List<LightMenu>(); foreach (var value in _deviceNames) { var newMenu = new LightMenu(value); if (value.Contains("0x04D8, 0xF745")) newMenu.Highlight = true; menus.Add(newMenu); } _menu.AddRange(menus); UpdateCheckedStates(PropertyName); }