Interim hotkey job category system

This commit is contained in:
Jaex 2015-06-20 01:22:35 +03:00
parent b29de89378
commit 559cfccf0c
8 changed files with 588 additions and 22 deletions

View file

@ -0,0 +1,46 @@
#region License Information (GPL v3)
/*
ShareX - A program that allows you to take screenshots and share any file type
Copyright © 2007-2015 ShareX Developers
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
*/
#endregion License Information (GPL v3)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ShareX.HelpersLib
{
public class EnumInfo
{
public Enum Value { get; set; }
public string Description { get; set; }
public string Category { get; set; }
public EnumInfo(Enum value)
{
Value = value;
Description = Value.GetLocalizedDescription();
Category = Value.GetLocalizedCategory();
}
}
}

View file

@ -70,6 +70,19 @@ public static string GetLocalizedDescription(this Enum value, ResourceManager re
return description;
}
public static string GetLocalizedCategory(this Enum value)
{
return value.GetLocalizedCategory(Resources.ResourceManager);
}
public static string GetLocalizedCategory(this Enum value, ResourceManager resourceManager)
{
string resourceName = value.GetType().Name + "_" + value + "_Category";
string description = resourceManager.GetString(resourceName);
return description;
}
public static int GetIndex(this Enum value)
{
Array values = Enum.GetValues(value.GetType());

View file

@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34209
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@ -690,6 +690,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_ActiveMonitor_Category {
get {
return ResourceManager.GetString("HotkeyType_ActiveMonitor_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture active window.
/// </summary>
@ -699,6 +708,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_ActiveWindow_Category {
get {
return ResourceManager.GetString("HotkeyType_ActiveWindow_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Auto capture.
/// </summary>
@ -708,6 +726,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_AutoCapture_Category {
get {
return ResourceManager.GetString("HotkeyType_AutoCapture_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Open/Stop Automate tool.
/// </summary>
@ -717,6 +744,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Tools.
/// </summary>
internal static string HotkeyType_Automate_Category {
get {
return ResourceManager.GetString("HotkeyType_Automate_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Upload from clipboard.
/// </summary>
@ -726,6 +762,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Upload.
/// </summary>
internal static string HotkeyType_ClipboardUpload_Category {
get {
return ResourceManager.GetString("HotkeyType_ClipboardUpload_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Upload from clipboard with content viewer.
/// </summary>
@ -735,6 +780,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Upload.
/// </summary>
internal static string HotkeyType_ClipboardUploadWithContentViewer_Category {
get {
return ResourceManager.GetString("HotkeyType_ClipboardUploadWithContentViewer_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Color picker.
/// </summary>
@ -744,6 +798,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Tools.
/// </summary>
internal static string HotkeyType_ColorPicker_Category {
get {
return ResourceManager.GetString("HotkeyType_ColorPicker_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture custom region.
/// </summary>
@ -753,6 +816,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_CustomRegion_Category {
get {
return ResourceManager.GetString("HotkeyType_CustomRegion_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture diamond region.
/// </summary>
@ -762,6 +834,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_DiamondRegion_Category {
get {
return ResourceManager.GetString("HotkeyType_DiamondRegion_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Drag and drop upload.
/// </summary>
@ -771,6 +852,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Upload.
/// </summary>
internal static string HotkeyType_DragDropUpload_Category {
get {
return ResourceManager.GetString("HotkeyType_DragDropUpload_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture ellipse region.
/// </summary>
@ -780,6 +870,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_EllipseRegion_Category {
get {
return ResourceManager.GetString("HotkeyType_EllipseRegion_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Upload file.
/// </summary>
@ -789,6 +888,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Upload.
/// </summary>
internal static string HotkeyType_FileUpload_Category {
get {
return ResourceManager.GetString("HotkeyType_FileUpload_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Upload folder.
/// </summary>
@ -798,6 +906,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Upload.
/// </summary>
internal static string HotkeyType_FolderUpload_Category {
get {
return ResourceManager.GetString("HotkeyType_FolderUpload_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture freehand region.
/// </summary>
@ -807,6 +924,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_FreeHandRegion_Category {
get {
return ResourceManager.GetString("HotkeyType_FreeHandRegion_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to FTP client.
/// </summary>
@ -816,6 +942,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Tools.
/// </summary>
internal static string HotkeyType_FTPClient_Category {
get {
return ResourceManager.GetString("HotkeyType_FTPClient_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Hash check.
/// </summary>
@ -825,6 +960,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Tools.
/// </summary>
internal static string HotkeyType_HashCheck_Category {
get {
return ResourceManager.GetString("HotkeyType_HashCheck_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Image effects.
/// </summary>
@ -834,6 +978,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Tools.
/// </summary>
internal static string HotkeyType_ImageEffects_Category {
get {
return ResourceManager.GetString("HotkeyType_ImageEffects_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Index folder.
/// </summary>
@ -843,6 +996,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Tools.
/// </summary>
internal static string HotkeyType_IndexFolder_Category {
get {
return ResourceManager.GetString("HotkeyType_IndexFolder_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture last region.
/// </summary>
@ -852,6 +1014,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_LastRegion_Category {
get {
return ResourceManager.GetString("HotkeyType_LastRegion_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to None.
/// </summary>
@ -870,6 +1041,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Miscellaneous.
/// </summary>
internal static string HotkeyType_OpenScreenshotsFolder_Category {
get {
return ResourceManager.GetString("HotkeyType_OpenScreenshotsFolder_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture polygon region.
/// </summary>
@ -879,6 +1059,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_PolygonRegion_Category {
get {
return ResourceManager.GetString("HotkeyType_PolygonRegion_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture entire screen.
/// </summary>
@ -888,6 +1077,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_PrintScreen_Category {
get {
return ResourceManager.GetString("HotkeyType_PrintScreen_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to QR code.
/// </summary>
@ -897,6 +1095,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Tools.
/// </summary>
internal static string HotkeyType_QRCode_Category {
get {
return ResourceManager.GetString("HotkeyType_QRCode_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture rectangle region (Annotate).
/// </summary>
@ -906,6 +1113,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_RectangleAnnotate_Category {
get {
return ResourceManager.GetString("HotkeyType_RectangleAnnotate_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture rectangle region (Light).
/// </summary>
@ -915,6 +1131,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_RectangleLight_Category {
get {
return ResourceManager.GetString("HotkeyType_RectangleLight_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture rectangle region.
/// </summary>
@ -924,6 +1149,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_RectangleRegion_Category {
get {
return ResourceManager.GetString("HotkeyType_RectangleRegion_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture rectangle region (Transparent).
/// </summary>
@ -933,6 +1167,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_RectangleTransparent_Category {
get {
return ResourceManager.GetString("HotkeyType_RectangleTransparent_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture rounded rectangle region.
/// </summary>
@ -942,6 +1185,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_RoundedRectangleRegion_Category {
get {
return ResourceManager.GetString("HotkeyType_RoundedRectangleRegion_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Ruler.
/// </summary>
@ -951,6 +1203,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Tools.
/// </summary>
internal static string HotkeyType_Ruler_Category {
get {
return ResourceManager.GetString("HotkeyType_Ruler_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Screen color picker.
/// </summary>
@ -960,6 +1221,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Tools.
/// </summary>
internal static string HotkeyType_ScreenColorPicker_Category {
get {
return ResourceManager.GetString("HotkeyType_ScreenColorPicker_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Screen recording.
/// </summary>
@ -969,6 +1239,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen record.
/// </summary>
internal static string HotkeyType_ScreenRecorder_Category {
get {
return ResourceManager.GetString("HotkeyType_ScreenRecorder_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Screen recording (GIF).
/// </summary>
@ -978,6 +1257,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen record.
/// </summary>
internal static string HotkeyType_ScreenRecorderGIF_Category {
get {
return ResourceManager.GetString("HotkeyType_ScreenRecorderGIF_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Start auto capture using last region.
/// </summary>
@ -987,6 +1275,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_StartAutoCapture_Category {
get {
return ResourceManager.GetString("HotkeyType_StartAutoCapture_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Start screen recording using last region.
/// </summary>
@ -996,6 +1293,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen record.
/// </summary>
internal static string HotkeyType_StartScreenRecorder_Category {
get {
return ResourceManager.GetString("HotkeyType_StartScreenRecorder_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Start screen recording (GIF) using last region.
/// </summary>
@ -1005,6 +1311,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen record.
/// </summary>
internal static string HotkeyType_StartScreenRecorderGIF_Category {
get {
return ResourceManager.GetString("HotkeyType_StartScreenRecorderGIF_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Stop all active uploads.
/// </summary>
@ -1014,6 +1329,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Upload.
/// </summary>
internal static string HotkeyType_StopUploads_Category {
get {
return ResourceManager.GetString("HotkeyType_StopUploads_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture triangle region.
/// </summary>
@ -1023,6 +1347,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_TriangleRegion_Category {
get {
return ResourceManager.GetString("HotkeyType_TriangleRegion_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Tweet message.
/// </summary>
@ -1032,6 +1365,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Tools.
/// </summary>
internal static string HotkeyType_TweetMessage_Category {
get {
return ResourceManager.GetString("HotkeyType_TweetMessage_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Upload from URL.
/// </summary>
@ -1041,6 +1383,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Upload.
/// </summary>
internal static string HotkeyType_UploadURL_Category {
get {
return ResourceManager.GetString("HotkeyType_UploadURL_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Capture rectangle region (Window).
/// </summary>
@ -1050,6 +1401,15 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Screen capture.
/// </summary>
internal static string HotkeyType_WindowRectangle_Category {
get {
return ResourceManager.GetString("HotkeyType_WindowRectangle_Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Hue: {0:0.0}°, Saturation: {1:0.0}%, Brightness: {2:0.0}%.
/// </summary>

View file

@ -646,4 +646,124 @@ Would you like to download and install it?</value>
<data name="ScreenRecordGIFEncoding_OctreeQuantizer" xml:space="preserve">
<value>Octree quantizer (Medium quality)</value>
</data>
<data name="HotkeyType_ActiveMonitor_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_ActiveWindow_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_AutoCapture_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_Automate_Category" xml:space="preserve">
<value>Tools</value>
</data>
<data name="HotkeyType_ClipboardUploadWithContentViewer_Category" xml:space="preserve">
<value>Upload</value>
</data>
<data name="HotkeyType_ClipboardUpload_Category" xml:space="preserve">
<value>Upload</value>
</data>
<data name="HotkeyType_ColorPicker_Category" xml:space="preserve">
<value>Tools</value>
</data>
<data name="HotkeyType_CustomRegion_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_DiamondRegion_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_DragDropUpload_Category" xml:space="preserve">
<value>Upload</value>
</data>
<data name="HotkeyType_EllipseRegion_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_FileUpload_Category" xml:space="preserve">
<value>Upload</value>
</data>
<data name="HotkeyType_FolderUpload_Category" xml:space="preserve">
<value>Upload</value>
</data>
<data name="HotkeyType_FreeHandRegion_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_FTPClient_Category" xml:space="preserve">
<value>Tools</value>
</data>
<data name="HotkeyType_HashCheck_Category" xml:space="preserve">
<value>Tools</value>
</data>
<data name="HotkeyType_ImageEffects_Category" xml:space="preserve">
<value>Tools</value>
</data>
<data name="HotkeyType_IndexFolder_Category" xml:space="preserve">
<value>Tools</value>
</data>
<data name="HotkeyType_LastRegion_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_OpenScreenshotsFolder_Category" xml:space="preserve">
<value>Miscellaneous</value>
</data>
<data name="HotkeyType_PolygonRegion_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_PrintScreen_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_QRCode_Category" xml:space="preserve">
<value>Tools</value>
</data>
<data name="HotkeyType_RectangleAnnotate_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_RectangleLight_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_RectangleRegion_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_RectangleTransparent_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_RoundedRectangleRegion_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_Ruler_Category" xml:space="preserve">
<value>Tools</value>
</data>
<data name="HotkeyType_ScreenColorPicker_Category" xml:space="preserve">
<value>Tools</value>
</data>
<data name="HotkeyType_ScreenRecorderGIF_Category" xml:space="preserve">
<value>Screen record</value>
</data>
<data name="HotkeyType_ScreenRecorder_Category" xml:space="preserve">
<value>Screen record</value>
</data>
<data name="HotkeyType_StartAutoCapture_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_StartScreenRecorderGIF_Category" xml:space="preserve">
<value>Screen record</value>
</data>
<data name="HotkeyType_StartScreenRecorder_Category" xml:space="preserve">
<value>Screen record</value>
</data>
<data name="HotkeyType_StopUploads_Category" xml:space="preserve">
<value>Upload</value>
</data>
<data name="HotkeyType_TriangleRegion_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
<data name="HotkeyType_TweetMessage_Category" xml:space="preserve">
<value>Tools</value>
</data>
<data name="HotkeyType_UploadURL_Category" xml:space="preserve">
<value>Upload</value>
</data>
<data name="HotkeyType_WindowRectangle_Category" xml:space="preserve">
<value>Screen capture</value>
</data>
</root>

View file

@ -121,6 +121,7 @@
<Compile Include="DWMManager.cs" />
<Compile Include="EncoderProgram.cs" />
<Compile Include="CLI\ExternalCLIManager.cs" />
<Compile Include="EnumInfo.cs" />
<Compile Include="Extensions\NumberExtensions.cs" />
<Compile Include="FFmpegDownloader.cs" />
<Compile Include="FontSafe.cs" />

View file

@ -64,7 +64,6 @@ public string Extension
case FFmpegVideoCodec.libx265:
case FFmpegVideoCodec.gif:
return "mp4";
break;
case FFmpegVideoCodec.libvpx:
return "webm";
case FFmpegVideoCodec.libxvid:

View file

@ -130,7 +130,7 @@ public enum CaptureType
LastRegion
}
public enum HotkeyType // Localized
public enum HotkeyType // Localized + Category
{
None,
FileUpload,
@ -162,7 +162,6 @@ public enum HotkeyType // Localized
StartScreenRecorderGIF,
AutoCapture,
StartAutoCapture,
OpenScreenshotsFolder,
ColorPicker,
ScreenColorPicker,
Ruler,
@ -172,7 +171,8 @@ public enum HotkeyType // Localized
ImageEffects,
QRCode,
TweetMessage,
Automate
Automate,
OpenScreenshotsFolder
}
public enum HotkeyStatus

View file

@ -378,44 +378,71 @@ private void UpdateDestinationStates()
private void AddEnumItemsContextMenu<T>(Action<T> selectedEnum, params ToolStripDropDown[] parents)
{
string[] enums = Helpers.GetLocalizedEnumDescriptions<T>().Select(x => x.Replace("&", "&&")).ToArray();
EnumInfo[] enums = Helpers.GetEnums<T>().OfType<Enum>().Select(x => new EnumInfo(x)).ToArray();
foreach (ToolStripDropDown parent in parents)
{
for (int i = 0; i < enums.Length; i++)
foreach (EnumInfo enumInfo in enums)
{
ToolStripMenuItem tsmi = new ToolStripMenuItem(enums[i]);
int index = i;
ToolStripMenuItem tsmi = new ToolStripMenuItem(enumInfo.Description.Replace("&", "&&"));
tsmi.Tag = enumInfo;
tsmi.Click += (sender, e) =>
{
foreach (ToolStripDropDown parent2 in parents)
{
for (int i2 = 0; i2 < enums.Length; i2++)
{
ToolStripMenuItem tsmi2 = (ToolStripMenuItem)parent2.Items[i2];
tsmi2.Checked = index == i2;
}
}
SetEnumCheckedContextMenu(enumInfo, parents);
selectedEnum((T)Enum.ToObject(typeof(T), index));
selectedEnum((T)Enum.ToObject(typeof(T), enumInfo.Value));
UpdateUploaderMenuNames();
};
parent.Items.Add(tsmi);
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);
}
}
}
}
private void SetEnumCheckedContextMenu(Enum value, params ToolStripDropDown[] parents)
{
int index = value.GetIndex();
SetEnumCheckedContextMenu(new EnumInfo(value), parents);
}
private void SetEnumCheckedContextMenu(EnumInfo enumInfo, params ToolStripDropDown[] parents)
{
foreach (ToolStripDropDown parent in parents)
{
((ToolStripMenuItem)parent.Items[index]).Checked = true;
foreach (ToolStripMenuItem tsmiParent in parent.Items)
{
EnumInfo currentEnumInfo;
if (tsmiParent.DropDownItems.Count > 0)
{
foreach (ToolStripMenuItem tsmiCategoryParent in tsmiParent.DropDownItems)
{
currentEnumInfo = (EnumInfo)tsmiCategoryParent.Tag;
tsmiCategoryParent.Checked = currentEnumInfo.Value == enumInfo.Value;
}
}
else
{
currentEnumInfo = (EnumInfo)tsmiParent.Tag;
tsmiParent.Checked = currentEnumInfo.Value == enumInfo.Value;
}
}
}
}