diff --git a/ShareX/Properties/Resources.Designer.cs b/ShareX/Properties/Resources.Designer.cs
index 23d037034..5337cee51 100644
--- a/ShareX/Properties/Resources.Designer.cs
+++ b/ShareX/Properties/Resources.Designer.cs
@@ -1383,6 +1383,106 @@ public class Resources {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap notification_counter {
+ get {
+ object obj = ResourceManager.GetObject("notification_counter", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap notification_counter_00 {
+ get {
+ object obj = ResourceManager.GetObject("notification_counter_00", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap notification_counter_02 {
+ get {
+ object obj = ResourceManager.GetObject("notification_counter_02", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap notification_counter_03 {
+ get {
+ object obj = ResourceManager.GetObject("notification_counter_03", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap notification_counter_04 {
+ get {
+ object obj = ResourceManager.GetObject("notification_counter_04", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap notification_counter_05 {
+ get {
+ object obj = ResourceManager.GetObject("notification_counter_05", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap notification_counter_06 {
+ get {
+ object obj = ResourceManager.GetObject("notification_counter_06", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap notification_counter_07 {
+ get {
+ object obj = ResourceManager.GetObject("notification_counter_07", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap notification_counter_08 {
+ get {
+ object obj = ResourceManager.GetObject("notification_counter_08", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ public static System.Drawing.Bitmap notification_counter_09 {
+ get {
+ object obj = ResourceManager.GetObject("notification_counter_09", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
diff --git a/ShareX/Properties/Resources.resx b/ShareX/Properties/Resources.resx
index 44b0a6b6f..1ae98c407 100644
--- a/ShareX/Properties/Resources.resx
+++ b/ShareX/Properties/Resources.resx
@@ -814,4 +814,34 @@ Would you like to restart ShareX?
..\Resources\layout-select.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\notification-counter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\notification-counter-00.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\notification-counter-02.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\notification-counter-03.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\notification-counter-04.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\notification-counter-05.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\notification-counter-06.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\notification-counter-07.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\notification-counter-08.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\notification-counter-09.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
\ No newline at end of file
diff --git a/ShareX/QuickTaskMenu.cs b/ShareX/QuickTaskMenu.cs
index 7cc2a6c85..9effe9d39 100644
--- a/ShareX/QuickTaskMenu.cs
+++ b/ShareX/QuickTaskMenu.cs
@@ -24,6 +24,9 @@
#endregion License Information (GPL v3)
using ShareX.HelpersLib;
+using ShareX.Properties;
+using System;
+using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
@@ -34,29 +37,39 @@ public class QuickTaskMenu
public delegate void TaskInfoSelectedEventHandler(QuickTaskInfo taskInfo);
public TaskInfoSelectedEventHandler TaskInfoSelected;
+ private ContextMenuStrip cms;
+ private List quickTaskInfoList;
+
public void ShowMenu()
{
- ContextMenuStrip cms = new ContextMenuStrip
+ quickTaskInfoList = new List();
+
+ cms = new ContextMenuStrip()
{
- Font = new Font("Arial", 10f),
- AutoClose = false,
- ShowImageMargin = false
+ Font = new Font("Arial", 10f)
};
+ cms.KeyUp += Cms_KeyUp;
+ cms.Closed += (sender, e) => cms = null;
+
if (Program.Settings != null && Program.Settings.QuickTaskPresets != null && Program.Settings.QuickTaskPresets.Count > 0)
{
+ int index = 0;
+
foreach (QuickTaskInfo taskInfo in Program.Settings.QuickTaskPresets)
{
if (taskInfo.IsValid)
{
ToolStripMenuItem tsmi = new ToolStripMenuItem { Text = taskInfo.ToString().Replace("&", "&&"), Tag = taskInfo };
+ tsmi.Image = GetNumberImage(index);
tsmi.Click += (sender, e) =>
{
QuickTaskInfo selectedTaskInfo = ((ToolStripMenuItem)sender).Tag as QuickTaskInfo;
- cms.Close();
OnTaskInfoSelected(selectedTaskInfo);
};
cms.Items.Add(tsmi);
+ quickTaskInfoList.Add(taskInfo);
+ index++;
}
else
{
@@ -71,6 +84,7 @@ public void ShowMenu()
// Translate
ToolStripMenuItem tsmiEdit = new ToolStripMenuItem("Edit this menu...");
+ tsmiEdit.Image = Resources.gear;
tsmiEdit.Click += (sender, e) =>
{
cms.Close();
@@ -81,6 +95,7 @@ public void ShowMenu()
cms.Items.Add(new ToolStripSeparator());
ToolStripMenuItem tsmiCancel = new ToolStripMenuItem("Cancel");
+ tsmiCancel.Image = Resources.cross;
tsmiCancel.Click += (sender, e) => cms.Close();
cms.Items.Add(tsmiCancel);
@@ -89,10 +104,59 @@ public void ShowMenu()
cms.Show(cursorPosition);
}
+ private void Cms_KeyUp(object sender, KeyEventArgs e)
+ {
+ switch (e.KeyCode)
+ {
+ case Keys.D1: case Keys.NumPad1: ExecuteTaskAt(0); break;
+ case Keys.D2: case Keys.NumPad2: ExecuteTaskAt(1); break;
+ case Keys.D3: case Keys.NumPad3: ExecuteTaskAt(2); break;
+ case Keys.D4: case Keys.NumPad4: ExecuteTaskAt(3); break;
+ case Keys.D5: case Keys.NumPad5: ExecuteTaskAt(4); break;
+ case Keys.D6: case Keys.NumPad6: ExecuteTaskAt(5); break;
+ case Keys.D7: case Keys.NumPad7: ExecuteTaskAt(6); break;
+ case Keys.D8: case Keys.NumPad8: ExecuteTaskAt(7); break;
+ case Keys.D9: case Keys.NumPad9: ExecuteTaskAt(8); break;
+ case Keys.D0: case Keys.NumPad0: ExecuteTaskAt(9); break;
+ }
+ }
+
+ private Image GetNumberImage(int index)
+ {
+ switch (index)
+ {
+ case 0: return Resources.notification_counter;
+ case 1: return Resources.notification_counter_02;
+ case 2: return Resources.notification_counter_03;
+ case 3: return Resources.notification_counter_04;
+ case 4: return Resources.notification_counter_05;
+ case 5: return Resources.notification_counter_06;
+ case 6: return Resources.notification_counter_07;
+ case 7: return Resources.notification_counter_08;
+ case 8: return Resources.notification_counter_09;
+ case 9: return Resources.notification_counter_00;
+ }
+
+ return null;
+ }
+
+ private void ExecuteTaskAt(int index)
+ {
+ if (quickTaskInfoList != null && quickTaskInfoList.Count > 0 && quickTaskInfoList.Count > index)
+ {
+ OnTaskInfoSelected(quickTaskInfoList[index]);
+ }
+ }
+
protected void OnTaskInfoSelected(QuickTaskInfo taskInfo)
{
if (TaskInfoSelected != null)
{
+ if (cms != null && !cms.IsDisposed)
+ {
+ cms.Close();
+ }
+
TaskInfoSelected(taskInfo);
}
}
diff --git a/ShareX/Resources/notification-counter-00.png b/ShareX/Resources/notification-counter-00.png
new file mode 100644
index 000000000..f77ff8020
Binary files /dev/null and b/ShareX/Resources/notification-counter-00.png differ
diff --git a/ShareX/Resources/notification-counter-02.png b/ShareX/Resources/notification-counter-02.png
new file mode 100644
index 000000000..d942c80ee
Binary files /dev/null and b/ShareX/Resources/notification-counter-02.png differ
diff --git a/ShareX/Resources/notification-counter-03.png b/ShareX/Resources/notification-counter-03.png
new file mode 100644
index 000000000..9f5973804
Binary files /dev/null and b/ShareX/Resources/notification-counter-03.png differ
diff --git a/ShareX/Resources/notification-counter-04.png b/ShareX/Resources/notification-counter-04.png
new file mode 100644
index 000000000..4966b37db
Binary files /dev/null and b/ShareX/Resources/notification-counter-04.png differ
diff --git a/ShareX/Resources/notification-counter-05.png b/ShareX/Resources/notification-counter-05.png
new file mode 100644
index 000000000..e566b3f5b
Binary files /dev/null and b/ShareX/Resources/notification-counter-05.png differ
diff --git a/ShareX/Resources/notification-counter-06.png b/ShareX/Resources/notification-counter-06.png
new file mode 100644
index 000000000..04dc250cb
Binary files /dev/null and b/ShareX/Resources/notification-counter-06.png differ
diff --git a/ShareX/Resources/notification-counter-07.png b/ShareX/Resources/notification-counter-07.png
new file mode 100644
index 000000000..19e2a1078
Binary files /dev/null and b/ShareX/Resources/notification-counter-07.png differ
diff --git a/ShareX/Resources/notification-counter-08.png b/ShareX/Resources/notification-counter-08.png
new file mode 100644
index 000000000..f3a650601
Binary files /dev/null and b/ShareX/Resources/notification-counter-08.png differ
diff --git a/ShareX/Resources/notification-counter-09.png b/ShareX/Resources/notification-counter-09.png
new file mode 100644
index 000000000..3d52f252a
Binary files /dev/null and b/ShareX/Resources/notification-counter-09.png differ
diff --git a/ShareX/Resources/notification-counter.png b/ShareX/Resources/notification-counter.png
new file mode 100644
index 000000000..b7119e340
Binary files /dev/null and b/ShareX/Resources/notification-counter.png differ
diff --git a/ShareX/ShareX.csproj b/ShareX/ShareX.csproj
index 398c2d89c..b47f8e877 100644
--- a/ShareX/ShareX.csproj
+++ b/ShareX/ShareX.csproj
@@ -1266,6 +1266,16 @@
+
+
+
+
+
+
+
+
+
+