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;