private void AddMultiEnumItemsContextMenu <T>(Action <T> selectedEnum, params ToolStripDropDown[] parents) where T : Enum { string[] enums = Helpers.GetLocalizedEnumDescriptions <T>().Skip(1).Select(x => x.Replace("&", "&&")).ToArray(); foreach (ToolStripDropDown parent in parents) { for (int i = 0; i < enums.Length; i++) { ToolStripMenuItem tsmi = new ToolStripMenuItem(enums[i]); tsmi.Image = TaskHelpers.FindMenuIcon <T>(i + 1); int index = i; tsmi.Click += (sender, e) => { foreach (ToolStripDropDown parent2 in parents) { ToolStripMenuItem tsmi2 = (ToolStripMenuItem)parent2.Items[index]; tsmi2.Checked = !tsmi2.Checked; } selectedEnum((T)Enum.ToObject(typeof(T), 1 << index)); UpdateUploaderMenuNames(); }; parent.Items.Add(tsmi); } } }
public ActionsToolbarEditForm(List <HotkeyType> actions) { InitializeComponent(); ShareXResources.ApplyTheme(this); Actions = actions; foreach (HotkeyType hotkeyType in Helpers.GetEnums <HotkeyType>()) { Image img; if (hotkeyType == HotkeyType.None) { img = Resources.ui_splitter; } else { img = TaskHelpers.FindMenuIcon(hotkeyType); } ilMain.Images.Add(hotkeyType.ToString(), img); } AddEnumItemsContextMenu(AddAction, cmsAction); foreach (HotkeyType action in Actions) { AddActionToList(action); } }
private void AddEnumItemsContextMenu(Action <HotkeyType> selectedEnum, params ToolStripDropDown[] parents) { EnumInfo[] enums = Helpers.GetEnums <HotkeyType>().OfType <Enum>().Select(x => new EnumInfo(x)).ToArray(); foreach (ToolStripDropDown parent in parents) { foreach (EnumInfo enumInfo in enums) { HotkeyType hotkeyType = (HotkeyType)Enum.ToObject(typeof(HotkeyType), enumInfo.Value); string text; Image img; if (hotkeyType == HotkeyType.None) { text = Resources.ActionsToolbarEditForm_Separator; img = Resources.ui_splitter; } else { text = enumInfo.Description.Replace("&", "&&"); img = TaskHelpers.FindMenuIcon(hotkeyType); } ToolStripMenuItem tsmi = new ToolStripMenuItem(text); tsmi.Image = img; tsmi.Tag = enumInfo; tsmi.Click += (sender, e) => { selectedEnum(hotkeyType); }; if (!string.IsNullOrEmpty(enumInfo.Category)) { ToolStripMenuItem tsmiParent = parent.Items.OfType <ToolStripMenuItem>().FirstOrDefault(x => x.Text == enumInfo.Category); if (tsmiParent == null) { tsmiParent = new ToolStripMenuItem(enumInfo.Category); parent.Items.Add(tsmiParent); } tsmiParent.DropDownItems.Add(tsmi); } else { parent.Items.Add(tsmi); } } } }
public void UpdateDescription() { if (Setting.TaskSettings.IsUsingDefaultSettings) { lblHotkeyDescription.ChangeFontStyle(FontStyle.Regular); } else { lblHotkeyDescription.ChangeFontStyle(FontStyle.Bold); } lblHotkeyDescription.Image = TaskHelpers.FindMenuIcon(Setting.TaskSettings.Job); lblHotkeyDescription.Text = Setting.TaskSettings.ToString(); }
private void UpdateToolbar(List <HotkeyType> actions) { tsMain.SuspendLayout(); tsMain.Items.Clear(); ToolStripLabel tslTitle = new ToolStripLabel() { Margin = new Padding(4, 0, 3, 0), Text = "ShareX", ToolTipText = Resources.ActionsToolbar_Tip }; tslTitle.MouseDown += tslTitle_MouseDown; tslTitle.MouseEnter += tslTitle_MouseEnter; tslTitle.MouseLeave += tslTitle_MouseLeave; tslTitle.MouseUp += tslTitle_MouseUp; tsMain.Items.Add(tslTitle); foreach (HotkeyType action in actions) { if (action == HotkeyType.None) { ToolStripSeparator tss = new ToolStripSeparator() { Margin = new Padding(0) }; tsMain.Items.Add(tss); } else { ToolStripButton tsb = new ToolStripButton() { Text = action.GetLocalizedDescription(), DisplayStyle = ToolStripItemDisplayStyle.Image, Image = TaskHelpers.FindMenuIcon(action) }; tsb.Click += async(sender, e) => { if (Program.Settings.ActionsToolbarStayTopMost) { TopMost = false; } await TaskHelpers.ExecuteJob(action); if (Program.Settings.ActionsToolbarStayTopMost) { TopMost = true; } }; tsMain.Items.Add(tsb); } } foreach (ToolStripItem tsi in tsMain.Items) { tsi.MouseEnter += (sender, e) => { string text; if (!string.IsNullOrEmpty(tsi.ToolTipText)) { text = tsi.ToolTipText; } else { text = tsi.Text; } ttMain.SetToolTip(tsMain, text); }; tsi.MouseLeave += tsMain_MouseLeave; } tsMain.ResumeLayout(false); tsMain.PerformLayout(); }