diff --git a/ShareX.HelpersLib/Properties/Resources.Designer.cs b/ShareX.HelpersLib/Properties/Resources.Designer.cs
index 0aeb52706..05c0a49e5 100644
--- a/ShareX.HelpersLib/Properties/Resources.Designer.cs
+++ b/ShareX.HelpersLib/Properties/Resources.Designer.cs
@@ -1839,6 +1839,60 @@ internal class Resources {
}
}
+ ///
+ /// Looks up a localized string similar to Pin to screen (From clipboard).
+ ///
+ internal static string HotkeyType_PinToScreenFromClipboard {
+ get {
+ return ResourceManager.GetString("HotkeyType_PinToScreenFromClipboard", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Tools.
+ ///
+ internal static string HotkeyType_PinToScreenFromClipboard_Category {
+ get {
+ return ResourceManager.GetString("HotkeyType_PinToScreenFromClipboard_Category", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Pin to screen (From file).
+ ///
+ internal static string HotkeyType_PinToScreenFromFile {
+ get {
+ return ResourceManager.GetString("HotkeyType_PinToScreenFromFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Tools.
+ ///
+ internal static string HotkeyType_PinToScreenFromFile_Category {
+ get {
+ return ResourceManager.GetString("HotkeyType_PinToScreenFromFile_Category", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Pin to screen (From screen).
+ ///
+ internal static string HotkeyType_PinToScreenFromScreen {
+ get {
+ return ResourceManager.GetString("HotkeyType_PinToScreenFromScreen", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Tools.
+ ///
+ internal static string HotkeyType_PinToScreenFromScreen_Category {
+ get {
+ return ResourceManager.GetString("HotkeyType_PinToScreenFromScreen_Category", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Capture entire screen.
///
diff --git a/ShareX.HelpersLib/Properties/Resources.resx b/ShareX.HelpersLib/Properties/Resources.resx
index 08402c48e..68b653ec3 100644
--- a/ShareX.HelpersLib/Properties/Resources.resx
+++ b/ShareX.HelpersLib/Properties/Resources.resx
@@ -1469,4 +1469,22 @@ Would you like to download and install it?
Cut out (X)
+
+ Pin to screen (From clipboard)
+
+
+ Tools
+
+
+ Pin to screen (From file)
+
+
+ Tools
+
+
+ Pin to screen (From screen)
+
+
+ Tools
+
\ No newline at end of file
diff --git a/ShareX/Enums.cs b/ShareX/Enums.cs
index 49f6dc8d9..fd08cc980 100644
--- a/ShareX/Enums.cs
+++ b/ShareX/Enums.cs
@@ -215,6 +215,9 @@ public enum HotkeyType // Localized + Category
ScreenColorPicker,
Ruler,
PinToScreen,
+ PinToScreenFromScreen,
+ PinToScreenFromClipboard,
+ PinToScreenFromFile,
ImageEditor,
ImageEffects,
ImageViewer,
diff --git a/ShareX/TaskHelpers.cs b/ShareX/TaskHelpers.cs
index 0e362a7b0..73c30eeb4 100644
--- a/ShareX/TaskHelpers.cs
+++ b/ShareX/TaskHelpers.cs
@@ -181,6 +181,15 @@ public static async Task ExecuteJob(TaskSettings taskSettings, HotkeyType job, C
case HotkeyType.PinToScreen:
PinToScreen();
break;
+ case HotkeyType.PinToScreenFromScreen:
+ PinToScreenFromScreen();
+ break;
+ case HotkeyType.PinToScreenFromClipboard:
+ PinToScreenFromClipboard();
+ break;
+ case HotkeyType.PinToScreenFromFile:
+ PinToScreenFromFile();
+ break;
case HotkeyType.ImageEditor:
if (command != null && !string.IsNullOrEmpty(command.Parameter) && File.Exists(command.Parameter))
{
@@ -1306,6 +1315,43 @@ public static void PinToScreen(string filePath)
PinToScreen(image);
}
+ public static void PinToScreenFromScreen()
+ {
+ if (RegionCaptureTasks.GetRectangleRegion(out Rectangle rect))
+ {
+ Image image = new Screenshot().CaptureRectangle(rect);
+
+ if (image != null)
+ {
+ PinToScreen(image, rect.Location);
+ }
+ }
+ }
+
+ public static void PinToScreenFromClipboard()
+ {
+ Image image = ClipboardHelpers.TryGetImage();
+
+ if (image != null)
+ {
+ PinToScreen(image);
+ }
+ else
+ {
+ MessageBox.Show(Resources.ClipboardDoesNotContainAnImage, "ShareX - " + Resources.PinToScreen, MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ }
+
+ public static void PinToScreenFromFile()
+ {
+ Image image = ImageHelpers.LoadImageWithFileDialog();
+
+ if (image != null)
+ {
+ PinToScreen(image);
+ }
+ }
+
public static void TweetMessage()
{
if (IsUploadAllowed())
@@ -1597,6 +1643,9 @@ public static void OpenCustomUploaderSettingsWindow()
case HotkeyType.ScreenColorPicker: return Resources.pipette;
case HotkeyType.Ruler: return Resources.ruler_triangle;
case HotkeyType.PinToScreen: return Resources.pin;
+ case HotkeyType.PinToScreenFromScreen: return Resources.pin;
+ case HotkeyType.PinToScreenFromClipboard: return Resources.pin;
+ case HotkeyType.PinToScreenFromFile: return Resources.pin;
case HotkeyType.ImageEditor: return Resources.image_pencil;
case HotkeyType.ImageEffects: return Resources.image_saturation;
case HotkeyType.ImageViewer: return Resources.images_flickr;