2013-11-03 23:53:49 +13:00
|
|
|
|
#region License Information (GPL v3)
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
ShareX - A program that allows you to take screenshots and share any file type
|
2016-01-04 04:16:01 +13:00
|
|
|
|
Copyright (c) 2007-2016 ShareX Team
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
2014-12-11 09:25:20 +13:00
|
|
|
|
using ShareX.HelpersLib;
|
2016-02-22 08:50:49 +13:00
|
|
|
|
using ShareX.HistoryLib;
|
2014-12-11 09:25:20 +13:00
|
|
|
|
using ShareX.ImageEffectsLib;
|
2016-02-03 01:58:34 +13:00
|
|
|
|
using ShareX.IndexerLib;
|
2015-08-04 23:47:34 +12:00
|
|
|
|
using ShareX.MediaLib;
|
2014-10-17 22:58:15 +13:00
|
|
|
|
using ShareX.Properties;
|
2014-12-11 12:19:28 +13:00
|
|
|
|
using ShareX.ScreenCaptureLib;
|
|
|
|
|
using ShareX.UploadersLib;
|
2014-12-18 07:24:27 +13:00
|
|
|
|
using System;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
using System.Collections.Generic;
|
2014-05-03 05:56:51 +12:00
|
|
|
|
using System.Diagnostics;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Drawing.Drawing2D;
|
|
|
|
|
using System.Drawing.Imaging;
|
|
|
|
|
using System.IO;
|
2015-03-08 14:13:55 +13:00
|
|
|
|
using System.Linq;
|
2016-04-22 03:23:03 +12:00
|
|
|
|
using System.Speech.Synthesis;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
|
|
|
|
namespace ShareX
|
|
|
|
|
{
|
|
|
|
|
public static class TaskHelpers
|
|
|
|
|
{
|
|
|
|
|
public static ImageData PrepareImage(Image img, TaskSettings taskSettings)
|
|
|
|
|
{
|
|
|
|
|
ImageData imageData = new ImageData();
|
2016-09-19 03:28:57 +12:00
|
|
|
|
imageData.ImageStream = SaveImageAsStream(img, taskSettings.ImageSettings.ImageFormat, taskSettings);
|
2016-07-22 19:22:18 +12:00
|
|
|
|
imageData.ImageFormat = taskSettings.ImageSettings.ImageFormat;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
2016-07-22 19:22:18 +12:00
|
|
|
|
if (taskSettings.ImageSettings.ImageAutoUseJPEG && taskSettings.ImageSettings.ImageFormat != EImageFormat.JPEG &&
|
|
|
|
|
imageData.ImageStream.Length > taskSettings.ImageSettings.ImageAutoUseJPEGSize * 1000)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2016-09-19 03:28:57 +12:00
|
|
|
|
imageData.ImageStream.Dispose();
|
|
|
|
|
imageData.ImageStream = SaveImageAsStream(img, EImageFormat.JPEG, taskSettings);
|
2016-07-22 19:22:18 +12:00
|
|
|
|
imageData.ImageFormat = EImageFormat.JPEG;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return imageData;
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-23 09:55:49 +12:00
|
|
|
|
public static string CreateThumbnail(Image img, string folder, string filename, TaskSettings taskSettings)
|
2014-04-23 08:44:58 +12:00
|
|
|
|
{
|
2014-05-11 23:47:37 +12:00
|
|
|
|
if ((taskSettings.ImageSettings.ThumbnailWidth > 0 || taskSettings.ImageSettings.ThumbnailHeight > 0) && (!taskSettings.ImageSettings.ThumbnailCheckSize ||
|
|
|
|
|
(img.Width > taskSettings.ImageSettings.ThumbnailWidth && img.Height > taskSettings.ImageSettings.ThumbnailHeight)))
|
2014-04-23 08:44:58 +12:00
|
|
|
|
{
|
2014-05-11 23:47:37 +12:00
|
|
|
|
string thumbnailFileName = Path.GetFileNameWithoutExtension(filename) + taskSettings.ImageSettings.ThumbnailName + ".jpg";
|
2014-10-19 10:48:47 +13:00
|
|
|
|
string thumbnailFilePath = CheckFilePath(folder, thumbnailFileName, taskSettings);
|
2014-04-23 08:44:58 +12:00
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(thumbnailFilePath))
|
|
|
|
|
{
|
|
|
|
|
Image thumbImage = null;
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
thumbImage = (Image)img.Clone();
|
|
|
|
|
thumbImage = new Resize
|
|
|
|
|
{
|
2014-05-11 23:47:37 +12:00
|
|
|
|
Width = taskSettings.ImageSettings.ThumbnailWidth,
|
|
|
|
|
Height = taskSettings.ImageSettings.ThumbnailHeight
|
2014-04-23 08:44:58 +12:00
|
|
|
|
}.Apply(thumbImage);
|
|
|
|
|
thumbImage = ImageHelpers.FillBackground(thumbImage, Color.White);
|
|
|
|
|
thumbImage.SaveJPG(thumbnailFilePath, 90);
|
2014-04-23 09:00:41 +12:00
|
|
|
|
return thumbnailFilePath;
|
2014-04-23 08:44:58 +12:00
|
|
|
|
}
|
2014-12-18 07:24:27 +13:00
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
DebugHelper.WriteException(e);
|
|
|
|
|
}
|
2014-04-23 08:44:58 +12:00
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (thumbImage != null)
|
|
|
|
|
{
|
|
|
|
|
thumbImage.Dispose();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-23 09:00:41 +12:00
|
|
|
|
return null;
|
2014-04-23 08:44:58 +12:00
|
|
|
|
}
|
|
|
|
|
|
2016-09-19 03:28:57 +12:00
|
|
|
|
public static MemoryStream SaveImageAsStream(Image img, EImageFormat imageFormat, TaskSettings taskSettings)
|
2016-05-13 17:56:33 +12:00
|
|
|
|
{
|
2016-09-19 03:28:57 +12:00
|
|
|
|
return SaveImageAsStream(img, imageFormat, taskSettings.ImageSettings.ImageJPEGQuality, taskSettings.ImageSettings.ImageGIFQuality);
|
2016-05-13 17:56:33 +12:00
|
|
|
|
}
|
|
|
|
|
|
2016-09-19 03:28:57 +12:00
|
|
|
|
public static MemoryStream SaveImageAsStream(Image img, EImageFormat imageFormat, int jpegQuality = 90, GIFQuality gifQuality = GIFQuality.Default)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
MemoryStream stream = new MemoryStream();
|
|
|
|
|
|
|
|
|
|
switch (imageFormat)
|
|
|
|
|
{
|
|
|
|
|
case EImageFormat.PNG:
|
|
|
|
|
img.Save(stream, ImageFormat.Png);
|
|
|
|
|
break;
|
|
|
|
|
case EImageFormat.JPEG:
|
2016-07-22 19:22:18 +12:00
|
|
|
|
img = ImageHelpers.FillBackground(img, Color.White);
|
2016-05-13 17:56:33 +12:00
|
|
|
|
img.SaveJPG(stream, jpegQuality);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
break;
|
|
|
|
|
case EImageFormat.GIF:
|
2016-05-13 17:56:33 +12:00
|
|
|
|
img.SaveGIF(stream, gifQuality);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
break;
|
|
|
|
|
case EImageFormat.BMP:
|
|
|
|
|
img.Save(stream, ImageFormat.Bmp);
|
|
|
|
|
break;
|
|
|
|
|
case EImageFormat.TIFF:
|
|
|
|
|
img.Save(stream, ImageFormat.Tiff);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return stream;
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-19 03:28:57 +12:00
|
|
|
|
public static void SaveImageAsFile(Image img, TaskSettings taskSettings)
|
|
|
|
|
{
|
|
|
|
|
using (ImageData imageData = PrepareImage(img, taskSettings))
|
|
|
|
|
{
|
|
|
|
|
string fileName = GetFilename(taskSettings, imageData.ImageFormat.GetDescription(), img);
|
|
|
|
|
string filePath = CheckFilePath(taskSettings.CaptureFolder, fileName, taskSettings);
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(filePath))
|
|
|
|
|
{
|
|
|
|
|
imageData.Write(filePath);
|
|
|
|
|
DebugHelper.WriteLine("Image saved to file: " + filePath);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-10-22 12:52:41 +13:00
|
|
|
|
public static string GetFilename(TaskSettings taskSettings, string extension = null, Image image = null)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
string filename;
|
|
|
|
|
|
2014-01-13 19:38:53 +13:00
|
|
|
|
NameParser nameParser = new NameParser(NameParserType.FileName)
|
|
|
|
|
{
|
|
|
|
|
AutoIncrementNumber = Program.Settings.NameParserAutoIncrementNumber,
|
2014-05-11 23:47:37 +12:00
|
|
|
|
MaxNameLength = taskSettings.AdvancedSettings.NamePatternMaxLength,
|
2015-03-12 11:35:31 +13:00
|
|
|
|
MaxTitleLength = taskSettings.AdvancedSettings.NamePatternMaxTitleLength,
|
|
|
|
|
CustomTimeZone = taskSettings.UploadSettings.UseCustomTimeZone ? taskSettings.UploadSettings.CustomTimeZone : null
|
2014-01-13 19:38:53 +13:00
|
|
|
|
};
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
2015-10-22 12:52:41 +13:00
|
|
|
|
if (image != null)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2016-04-05 01:12:09 +12:00
|
|
|
|
nameParser.ImageWidth = image.Width;
|
|
|
|
|
nameParser.ImageHeight = image.Height;
|
2015-10-22 12:52:41 +13:00
|
|
|
|
|
|
|
|
|
ImageTag imageTag = image.Tag as ImageTag;
|
|
|
|
|
|
|
|
|
|
if (imageTag != null)
|
|
|
|
|
{
|
2015-12-18 01:00:20 +13:00
|
|
|
|
nameParser.WindowText = imageTag.WindowTitle;
|
|
|
|
|
nameParser.ProcessName = imageTag.ProcessName;
|
2015-10-22 12:52:41 +13:00
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
|
2015-10-22 12:52:41 +13:00
|
|
|
|
if (!string.IsNullOrEmpty(nameParser.WindowText))
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2015-10-22 12:52:41 +13:00
|
|
|
|
filename = nameParser.Parse(taskSettings.UploadSettings.NameFormatPatternActiveWindow);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2015-10-22 12:52:41 +13:00
|
|
|
|
filename = nameParser.Parse(taskSettings.UploadSettings.NameFormatPattern);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Program.Settings.NameParserAutoIncrementNumber = nameParser.AutoIncrementNumber;
|
|
|
|
|
|
2015-10-22 12:52:41 +13:00
|
|
|
|
if (!string.IsNullOrEmpty(extension))
|
|
|
|
|
{
|
|
|
|
|
filename += "." + extension.TrimStart('.');
|
|
|
|
|
}
|
|
|
|
|
|
2013-11-03 23:53:49 +13:00
|
|
|
|
return filename;
|
|
|
|
|
}
|
|
|
|
|
|
2015-10-23 11:43:04 +13:00
|
|
|
|
public static bool ShowAfterCaptureForm(TaskSettings taskSettings, out string fileName, Image img = null)
|
2014-07-19 07:13:32 +12:00
|
|
|
|
{
|
2015-10-23 11:43:04 +13:00
|
|
|
|
fileName = null;
|
|
|
|
|
|
2015-12-04 04:18:46 +13:00
|
|
|
|
if (taskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.ShowAfterCaptureWindow))
|
2014-07-19 07:13:32 +12:00
|
|
|
|
{
|
|
|
|
|
using (AfterCaptureForm afterCaptureForm = new AfterCaptureForm(img, taskSettings))
|
|
|
|
|
{
|
2015-10-23 11:43:04 +13:00
|
|
|
|
if (afterCaptureForm.ShowDialog() == DialogResult.Cancel)
|
2014-07-19 07:13:32 +12:00
|
|
|
|
{
|
2015-10-23 11:43:04 +13:00
|
|
|
|
if (img != null) img.Dispose();
|
|
|
|
|
return false;
|
2014-07-19 07:13:32 +12:00
|
|
|
|
}
|
2015-10-23 11:43:04 +13:00
|
|
|
|
|
|
|
|
|
fileName = afterCaptureForm.FileName;
|
2014-07-19 07:13:32 +12:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-26 17:58:04 +12:00
|
|
|
|
public static void PrintImage(Image img)
|
|
|
|
|
{
|
|
|
|
|
if (Program.Settings.DontShowPrintSettingsDialog)
|
|
|
|
|
{
|
|
|
|
|
using (PrintHelper printHelper = new PrintHelper(img))
|
|
|
|
|
{
|
|
|
|
|
printHelper.Settings = Program.Settings.PrintSettings;
|
|
|
|
|
printHelper.Print();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
using (PrintForm printForm = new PrintForm(img, Program.Settings.PrintSettings))
|
|
|
|
|
{
|
|
|
|
|
printForm.ShowDialog();
|
|
|
|
|
}
|
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Image AddImageEffects(Image img, TaskSettings taskSettings)
|
|
|
|
|
{
|
2014-05-11 23:47:37 +12:00
|
|
|
|
if (taskSettings.ImageSettings.ShowImageEffectsWindowAfterCapture)
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
2014-05-11 23:47:37 +12:00
|
|
|
|
using (ImageEffectsForm imageEffectsForm = new ImageEffectsForm(img, taskSettings.ImageSettings.ImageEffects))
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
if (imageEffectsForm.ShowDialog() == DialogResult.OK)
|
|
|
|
|
{
|
2014-05-11 23:47:37 +12:00
|
|
|
|
taskSettings.ImageSettings.ImageEffects = imageEffectsForm.Effects;
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
using (img)
|
|
|
|
|
{
|
2014-05-11 23:47:37 +12:00
|
|
|
|
return ImageEffectManager.ApplyEffects(img, taskSettings.ImageSettings.ImageEffects);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void AddDefaultExternalPrograms(TaskSettings taskSettings)
|
|
|
|
|
{
|
|
|
|
|
if (taskSettings.ExternalPrograms == null)
|
|
|
|
|
{
|
|
|
|
|
taskSettings.ExternalPrograms = new List<ExternalProgram>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
AddExternalProgramFromRegistry(taskSettings, "Paint", "mspaint.exe");
|
|
|
|
|
AddExternalProgramFromRegistry(taskSettings, "Paint.NET", "PaintDotNet.exe");
|
|
|
|
|
AddExternalProgramFromRegistry(taskSettings, "Adobe Photoshop", "Photoshop.exe");
|
|
|
|
|
AddExternalProgramFromRegistry(taskSettings, "IrfanView", "i_view32.exe");
|
|
|
|
|
AddExternalProgramFromRegistry(taskSettings, "XnView", "xnview.exe");
|
|
|
|
|
AddExternalProgramFromFile(taskSettings, "OptiPNG", "optipng.exe");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void AddExternalProgramFromFile(TaskSettings taskSettings, string name, string filename, string args = "")
|
|
|
|
|
{
|
2014-05-11 23:47:37 +12:00
|
|
|
|
if (!taskSettings.ExternalPrograms.Exists(x => x.Name == name))
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
if (File.Exists(filename))
|
|
|
|
|
{
|
|
|
|
|
DebugHelper.WriteLine("Found program: " + filename);
|
|
|
|
|
|
2014-05-11 23:47:37 +12:00
|
|
|
|
taskSettings.ExternalPrograms.Add(new ExternalProgram(name, filename, args));
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void AddExternalProgramFromRegistry(TaskSettings taskSettings, string name, string filename)
|
|
|
|
|
{
|
2014-05-11 23:47:37 +12:00
|
|
|
|
if (!taskSettings.ExternalPrograms.Exists(x => x.Name == name))
|
2013-11-03 23:53:49 +13:00
|
|
|
|
{
|
|
|
|
|
ExternalProgram externalProgram = RegistryHelpers.FindProgram(name, filename);
|
|
|
|
|
|
|
|
|
|
if (externalProgram != null)
|
|
|
|
|
{
|
2014-05-11 23:47:37 +12:00
|
|
|
|
taskSettings.ExternalPrograms.Add(externalProgram);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Icon GetProgressIcon(int percentage)
|
|
|
|
|
{
|
|
|
|
|
using (Bitmap bmp = new Bitmap(16, 16))
|
|
|
|
|
using (Graphics g = Graphics.FromImage(bmp))
|
|
|
|
|
{
|
|
|
|
|
g.Clear(Color.Black);
|
|
|
|
|
|
|
|
|
|
int width = (int)(16 * (percentage / 100f));
|
|
|
|
|
|
|
|
|
|
if (width > 0)
|
|
|
|
|
{
|
|
|
|
|
using (Brush brush = new LinearGradientBrush(new Rectangle(0, 0, width, 16), Color.DarkBlue, Color.DodgerBlue, LinearGradientMode.Vertical))
|
|
|
|
|
{
|
|
|
|
|
g.FillRectangle(brush, 0, 0, width, 16);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-10-19 04:23:53 +13:00
|
|
|
|
using (Font font = new Font("Arial", 11, GraphicsUnit.Pixel))
|
2013-11-03 23:53:49 +13:00
|
|
|
|
using (StringFormat sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center })
|
|
|
|
|
{
|
2014-07-20 07:10:25 +12:00
|
|
|
|
g.DrawString(percentage.ToString(), font, Brushes.White, 8, 8, sf);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
|
2013-11-11 19:28:23 +13:00
|
|
|
|
g.DrawRectangleProper(Pens.WhiteSmoke, 0, 0, 16, 16);
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
|
|
|
|
return Icon.FromHandle(bmp.GetHicon());
|
|
|
|
|
}
|
|
|
|
|
}
|
2013-11-28 12:18:00 +13:00
|
|
|
|
|
|
|
|
|
public static UpdateChecker CheckUpdate()
|
|
|
|
|
{
|
2016-07-31 12:56:03 +12:00
|
|
|
|
GitHubUpdateChecker updateChecker = new GitHubUpdateChecker("ShareX", "ShareX");
|
2016-06-25 04:49:06 +12:00
|
|
|
|
updateChecker.IsBeta = Program.Beta;
|
|
|
|
|
updateChecker.IsPortable = Program.Portable;
|
2016-07-31 12:56:03 +12:00
|
|
|
|
updateChecker.IncludePreRelease = Program.Settings.CheckPreReleaseUpdates;
|
2015-01-12 22:14:59 +13:00
|
|
|
|
updateChecker.Proxy = HelpersOptions.CurrentProxy.GetWebProxy();
|
2013-11-28 12:18:00 +13:00
|
|
|
|
updateChecker.CheckUpdate();
|
|
|
|
|
|
2015-09-17 18:59:22 +12:00
|
|
|
|
/*
|
2013-12-04 21:54:32 +13:00
|
|
|
|
// Fallback if GitHub API fails
|
2014-07-23 12:18:49 +12:00
|
|
|
|
if (updateChecker.Status == UpdateStatus.None || updateChecker.Status == UpdateStatus.UpdateCheckFailed)
|
2013-11-28 12:18:00 +13:00
|
|
|
|
{
|
2015-01-04 03:06:32 +13:00
|
|
|
|
updateChecker = new XMLUpdateChecker(Links.URL_UPDATE, "ShareX");
|
2014-07-23 12:18:49 +12:00
|
|
|
|
updateChecker.IsBeta = Program.IsBeta;
|
2015-01-12 22:14:59 +13:00
|
|
|
|
updateChecker.Proxy = HelpersOptions.CurrentProxy.GetWebProxy();
|
2013-11-28 12:18:00 +13:00
|
|
|
|
updateChecker.CheckUpdate();
|
|
|
|
|
}
|
2015-09-17 18:59:22 +12:00
|
|
|
|
*/
|
2013-11-28 12:18:00 +13:00
|
|
|
|
|
|
|
|
|
return updateChecker;
|
|
|
|
|
}
|
2014-03-13 22:13:02 +13:00
|
|
|
|
|
2014-03-13 22:31:03 +13:00
|
|
|
|
public static string CheckFilePath(string folder, string filename, TaskSettings taskSettings)
|
2014-03-13 22:13:02 +13:00
|
|
|
|
{
|
2014-03-13 22:31:03 +13:00
|
|
|
|
string filepath = Path.Combine(folder, filename);
|
|
|
|
|
|
2014-03-13 22:13:02 +13:00
|
|
|
|
if (File.Exists(filepath))
|
|
|
|
|
{
|
2014-05-11 23:47:37 +12:00
|
|
|
|
switch (taskSettings.ImageSettings.FileExistAction)
|
2014-03-13 22:13:02 +13:00
|
|
|
|
{
|
2014-03-13 22:31:03 +13:00
|
|
|
|
case FileExistAction.Ask:
|
|
|
|
|
using (FileExistForm form = new FileExistForm(filepath))
|
|
|
|
|
{
|
|
|
|
|
form.ShowDialog();
|
|
|
|
|
filepath = form.Filepath;
|
|
|
|
|
}
|
|
|
|
|
break;
|
2014-03-13 23:05:24 +13:00
|
|
|
|
case FileExistAction.UniqueName:
|
2014-03-13 22:31:03 +13:00
|
|
|
|
filepath = Helpers.GetUniqueFilePath(filepath);
|
|
|
|
|
break;
|
|
|
|
|
case FileExistAction.Cancel:
|
2016-05-25 06:15:45 +12:00
|
|
|
|
filepath = "";
|
2014-03-13 22:31:03 +13:00
|
|
|
|
break;
|
2014-03-13 22:13:02 +13:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return filepath;
|
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
|
2015-07-16 00:02:27 +12:00
|
|
|
|
public static void OpenDropWindow(TaskSettings taskSettings = null)
|
2014-05-03 05:56:51 +12:00
|
|
|
|
{
|
2015-07-16 00:02:27 +12:00
|
|
|
|
DropForm.GetInstance(Program.Settings.DropSize, Program.Settings.DropOffset, Program.Settings.DropAlignment, Program.Settings.DropOpacity,
|
2016-03-10 05:37:54 +13:00
|
|
|
|
Program.Settings.DropHoverOpacity, taskSettings).ForceActivate();
|
2014-05-03 05:56:51 +12:00
|
|
|
|
}
|
|
|
|
|
|
2015-06-22 18:56:18 +12:00
|
|
|
|
public static void StartScreenRecording(ScreenRecordOutput outputType, ScreenRecordStartMethod startMethod, TaskSettings taskSettings = null)
|
2014-05-03 05:56:51 +12:00
|
|
|
|
{
|
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
|
|
|
|
|
2015-09-08 01:29:37 +12:00
|
|
|
|
ScreenRecordManager.StartStopRecording(outputType, startMethod, taskSettings);
|
2014-05-03 05:56:51 +12:00
|
|
|
|
}
|
|
|
|
|
|
2016-07-23 21:39:22 +12:00
|
|
|
|
public static void AbortScreenRecording()
|
|
|
|
|
{
|
|
|
|
|
ScreenRecordManager.AbortRecording();
|
|
|
|
|
}
|
|
|
|
|
|
2015-09-27 20:55:42 +13:00
|
|
|
|
public static void OpenScrollingCapture(TaskSettings taskSettings = null, bool forceSelection = false)
|
2015-09-25 20:12:03 +12:00
|
|
|
|
{
|
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
|
|
|
|
|
2016-08-23 07:39:38 +12:00
|
|
|
|
ScrollingCaptureForm scrollingCaptureForm = new ScrollingCaptureForm(taskSettings.CaptureSettingsReference.ScrollingCaptureOptions,
|
|
|
|
|
taskSettings.CaptureSettings.SurfaceOptions, forceSelection);
|
2016-04-01 23:11:43 +13:00
|
|
|
|
scrollingCaptureForm.ImageProcessRequested += img => UploadManager.RunImageTask(img, taskSettings);
|
2015-09-27 13:53:45 +13:00
|
|
|
|
scrollingCaptureForm.Show();
|
2015-09-25 20:12:03 +12:00
|
|
|
|
}
|
|
|
|
|
|
2014-05-03 05:56:51 +12:00
|
|
|
|
public static void OpenAutoCapture()
|
|
|
|
|
{
|
2016-03-10 05:37:54 +13:00
|
|
|
|
AutoCaptureForm.Instance.ForceActivate();
|
2014-05-03 05:56:51 +12:00
|
|
|
|
}
|
|
|
|
|
|
2015-06-27 03:59:30 +12:00
|
|
|
|
public static void OpenWebpageCapture(TaskSettings taskSettings = null)
|
2015-06-26 20:10:27 +12:00
|
|
|
|
{
|
2015-06-27 03:59:30 +12:00
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
|
|
|
|
|
2016-03-22 02:16:33 +13:00
|
|
|
|
WebpageCaptureForm webpageCaptureForm = new WebpageCaptureForm(Program.Settings.WebpageCaptureOptions);
|
2016-04-01 23:11:43 +13:00
|
|
|
|
webpageCaptureForm.ImageUploadRequested += img => UploadManager.RunImageTask(img, taskSettings);
|
|
|
|
|
webpageCaptureForm.ImageCopyRequested += img =>
|
2015-06-27 03:59:30 +12:00
|
|
|
|
{
|
|
|
|
|
using (img)
|
|
|
|
|
{
|
|
|
|
|
ClipboardHelpers.CopyImage(img);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
webpageCaptureForm.Show();
|
2015-06-26 20:10:27 +12:00
|
|
|
|
}
|
|
|
|
|
|
2014-12-11 08:23:05 +13:00
|
|
|
|
public static void StartAutoCapture()
|
|
|
|
|
{
|
|
|
|
|
if (!AutoCaptureForm.IsRunning)
|
|
|
|
|
{
|
|
|
|
|
AutoCaptureForm form = AutoCaptureForm.Instance;
|
|
|
|
|
form.Show();
|
|
|
|
|
form.Execute();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-02 10:21:16 +12:00
|
|
|
|
public static void OpenScreenshotsFolder()
|
|
|
|
|
{
|
|
|
|
|
if (Directory.Exists(Program.ScreenshotsFolder))
|
|
|
|
|
{
|
|
|
|
|
Helpers.OpenFolder(Program.ScreenshotsFolder);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Helpers.OpenFolder(Program.ScreenshotsParentFolder);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2016-02-22 08:50:49 +13:00
|
|
|
|
public static void OpenHistory()
|
|
|
|
|
{
|
2016-03-03 23:05:59 +13:00
|
|
|
|
HistoryForm historyForm = new HistoryForm(Program.HistoryFilePath, Program.Settings.HistoryMaxItemCount, Program.Settings.HistorySplitterDistance);
|
2016-03-01 22:25:38 +13:00
|
|
|
|
historyForm.SplitterDistanceChanged += splitterDistance => Program.Settings.HistorySplitterDistance = splitterDistance;
|
2016-02-22 08:50:49 +13:00
|
|
|
|
Program.Settings.HistoryWindowState.AutoHandleFormState(historyForm);
|
|
|
|
|
historyForm.Show();
|
|
|
|
|
}
|
|
|
|
|
|
2016-03-03 23:05:59 +13:00
|
|
|
|
public static void OpenImageHistory()
|
|
|
|
|
{
|
|
|
|
|
ImageHistoryForm imageHistoryForm = new ImageHistoryForm(Program.HistoryFilePath, Program.Settings.ImageHistoryViewMode,
|
|
|
|
|
Program.Settings.ImageHistoryThumbnailSize, Program.Settings.ImageHistoryMaxItemCount);
|
|
|
|
|
Program.Settings.ImageHistoryWindowState.AutoHandleFormState(imageHistoryForm);
|
|
|
|
|
imageHistoryForm.FormClosed += imageHistoryForm_FormClosed;
|
|
|
|
|
imageHistoryForm.Show();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void imageHistoryForm_FormClosed(object sender, FormClosedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
ImageHistoryForm imageHistoryForm = sender as ImageHistoryForm;
|
|
|
|
|
Program.Settings.ImageHistoryViewMode = imageHistoryForm.ViewMode;
|
|
|
|
|
Program.Settings.ImageHistoryThumbnailSize = imageHistoryForm.ThumbnailSize;
|
|
|
|
|
Program.Settings.ImageHistoryMaxItemCount = imageHistoryForm.MaxItemCount;
|
|
|
|
|
}
|
|
|
|
|
|
2015-01-26 20:24:26 +13:00
|
|
|
|
public static void OpenColorPicker()
|
2015-01-25 19:51:24 +13:00
|
|
|
|
{
|
|
|
|
|
new ScreenColorPicker().Show();
|
|
|
|
|
}
|
|
|
|
|
|
2015-01-26 20:24:26 +13:00
|
|
|
|
public static void OpenScreenColorPicker(TaskSettings taskSettings = null)
|
2014-05-03 05:56:51 +12:00
|
|
|
|
{
|
2015-01-25 13:58:00 +13:00
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
|
|
|
|
|
2016-09-05 22:31:49 +12:00
|
|
|
|
PointInfo pointInfo = RegionCaptureTasks.GetPointInfo(taskSettings.CaptureSettings.SurfaceOptions);
|
2015-01-25 13:58:00 +13:00
|
|
|
|
|
2015-01-25 19:51:24 +13:00
|
|
|
|
if (pointInfo != null)
|
|
|
|
|
{
|
2016-07-30 05:32:01 +12:00
|
|
|
|
string text = CodeMenuEntryPixelInfo.Parse(taskSettings.ToolsSettings.ScreenColorPickerFormat, pointInfo.Color, pointInfo.Position);
|
2015-01-25 13:58:00 +13:00
|
|
|
|
|
|
|
|
|
ClipboardHelpers.CopyText(text);
|
2015-01-25 19:51:24 +13:00
|
|
|
|
|
|
|
|
|
if (Program.MainForm.niTray.Visible)
|
|
|
|
|
{
|
|
|
|
|
Program.MainForm.niTray.Tag = null;
|
|
|
|
|
Program.MainForm.niTray.ShowBalloonTip(3000, "ShareX", string.Format(Resources.TaskHelpers_OpenQuickScreenColorPicker_Copied_to_clipboard___0_, text), ToolTipIcon.Info);
|
|
|
|
|
}
|
2015-01-25 13:58:00 +13:00
|
|
|
|
}
|
2014-05-03 05:56:51 +12:00
|
|
|
|
}
|
|
|
|
|
|
2015-02-18 22:29:36 +13:00
|
|
|
|
public static void OpenAutomate()
|
2015-02-17 02:31:19 +13:00
|
|
|
|
{
|
2015-02-18 01:51:19 +13:00
|
|
|
|
AutomateForm form = AutomateForm.GetInstance(Program.Settings.AutomateScripts);
|
2016-03-10 05:37:54 +13:00
|
|
|
|
form.ForceActivate();
|
2015-02-18 22:29:36 +13:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void StartAutomate()
|
|
|
|
|
{
|
|
|
|
|
AutomateForm form = AutomateForm.GetInstance(Program.Settings.AutomateScripts);
|
2015-02-18 01:51:19 +13:00
|
|
|
|
|
2015-02-18 22:29:36 +13:00
|
|
|
|
if (form.Visible)
|
|
|
|
|
{
|
|
|
|
|
if (AutomateForm.IsRunning)
|
|
|
|
|
{
|
|
|
|
|
form.Stop();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
form.Start();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
2015-02-18 01:51:19 +13:00
|
|
|
|
{
|
2016-03-10 05:37:54 +13:00
|
|
|
|
form.ForceActivate();
|
2015-02-18 01:51:19 +13:00
|
|
|
|
}
|
2015-02-17 02:31:19 +13:00
|
|
|
|
}
|
|
|
|
|
|
2014-05-03 05:56:51 +12:00
|
|
|
|
public static void OpenHashCheck()
|
|
|
|
|
{
|
|
|
|
|
new HashCheckForm().Show();
|
|
|
|
|
}
|
|
|
|
|
|
2016-02-03 01:58:34 +13:00
|
|
|
|
public static void OpenDirectoryIndexer(TaskSettings taskSettings = null)
|
2014-05-03 05:56:51 +12:00
|
|
|
|
{
|
2016-02-03 01:58:34 +13:00
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
|
|
|
|
|
2016-02-03 02:25:09 +13:00
|
|
|
|
IndexerSettings indexerSettings = taskSettings.ToolsSettingsReference.IndexerSettings;
|
|
|
|
|
indexerSettings.BinaryUnits = Program.Settings.BinaryUnits;
|
|
|
|
|
DirectoryIndexerForm form = new DirectoryIndexerForm(indexerSettings);
|
2016-02-03 01:58:34 +13:00
|
|
|
|
form.UploadRequested += source =>
|
|
|
|
|
{
|
|
|
|
|
WorkerTask task = WorkerTask.CreateTextUploaderTask(source, taskSettings);
|
2016-02-03 02:25:09 +13:00
|
|
|
|
task.Info.FileName = Path.ChangeExtension(task.Info.FileName, indexerSettings.Output.ToString().ToLowerInvariant());
|
2016-02-03 01:58:34 +13:00
|
|
|
|
TaskManager.Start(task);
|
|
|
|
|
};
|
|
|
|
|
form.Show();
|
2014-05-03 05:56:51 +12:00
|
|
|
|
}
|
|
|
|
|
|
2015-10-01 01:44:19 +13:00
|
|
|
|
public static void OpenImageCombiner(TaskSettings taskSettings = null)
|
|
|
|
|
{
|
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
|
|
|
|
|
2015-10-01 02:35:45 +13:00
|
|
|
|
ImageCombinerForm imageCombinerForm = new ImageCombinerForm(taskSettings.ToolsSettingsReference.ImageCombinerOptions);
|
2016-04-01 23:11:43 +13:00
|
|
|
|
imageCombinerForm.ProcessRequested += img => UploadManager.RunImageTask(img, taskSettings);
|
2015-10-01 02:35:45 +13:00
|
|
|
|
imageCombinerForm.Show();
|
2015-10-01 01:44:19 +13:00
|
|
|
|
}
|
|
|
|
|
|
2015-08-04 23:47:34 +12:00
|
|
|
|
public static void OpenVideoThumbnailer(TaskSettings taskSettings = null)
|
|
|
|
|
{
|
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
|
|
|
|
|
2015-08-14 09:51:58 +12:00
|
|
|
|
if (!CheckFFmpeg(taskSettings))
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2016-08-27 09:40:02 +12:00
|
|
|
|
taskSettings.ToolsSettingsReference.VideoThumbnailOptions.DefaultOutputDirectory = taskSettings.CaptureFolder;
|
2015-09-13 08:32:51 +12:00
|
|
|
|
VideoThumbnailerForm thumbnailerForm = new VideoThumbnailerForm(taskSettings.CaptureSettings.FFmpegOptions.FFmpegPath, taskSettings.ToolsSettingsReference.VideoThumbnailOptions);
|
2015-08-06 21:22:07 +12:00
|
|
|
|
thumbnailerForm.ThumbnailsTaken += thumbnails =>
|
|
|
|
|
{
|
2015-08-31 22:44:23 +12:00
|
|
|
|
if (taskSettings.ToolsSettingsReference.VideoThumbnailOptions.UploadThumbnails)
|
2015-08-06 21:22:07 +12:00
|
|
|
|
{
|
|
|
|
|
foreach (VideoThumbnailInfo thumbnailInfo in thumbnails)
|
|
|
|
|
{
|
|
|
|
|
UploadManager.UploadFile(thumbnailInfo.Filepath, taskSettings);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
2015-08-05 23:44:04 +12:00
|
|
|
|
thumbnailerForm.Show();
|
2015-08-04 23:47:34 +12:00
|
|
|
|
}
|
|
|
|
|
|
2016-09-06 00:23:25 +12:00
|
|
|
|
public static void AnnotateImage(TaskSettings taskSettings = null)
|
2014-05-04 10:22:47 +12:00
|
|
|
|
{
|
2016-09-04 23:23:21 +12:00
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
|
|
|
|
|
2016-09-06 00:23:25 +12:00
|
|
|
|
if (Clipboard.ContainsImage() && MessageBox.Show(Resources.TaskHelpers_OpenImageEditor_Your_clipboard_contains_image,
|
|
|
|
|
Resources.TaskHelpers_OpenImageEditor_Image_editor___How_to_load_image_, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
2014-05-04 10:22:47 +12:00
|
|
|
|
{
|
2016-09-06 00:23:25 +12:00
|
|
|
|
using (Image img = ClipboardHelpers.GetImage())
|
2015-08-23 01:44:40 +12:00
|
|
|
|
{
|
2016-09-06 00:23:25 +12:00
|
|
|
|
if (img != null)
|
2015-08-23 01:44:40 +12:00
|
|
|
|
{
|
2016-09-06 00:23:25 +12:00
|
|
|
|
if (taskSettings.AdvancedSettings.UseShareXForAnnotation)
|
2015-08-23 01:44:40 +12:00
|
|
|
|
{
|
2016-09-19 03:28:57 +12:00
|
|
|
|
AnnotateImageUsingShareX(img, null, taskSettings);
|
2016-09-06 00:23:25 +12:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
AnnotateImageUsingGreenshot(img, null);
|
2015-08-23 01:44:40 +12:00
|
|
|
|
}
|
2016-09-06 00:23:25 +12:00
|
|
|
|
|
|
|
|
|
return;
|
2015-08-23 01:44:40 +12:00
|
|
|
|
}
|
|
|
|
|
}
|
2014-05-04 10:22:47 +12:00
|
|
|
|
}
|
|
|
|
|
|
2016-09-06 00:23:25 +12:00
|
|
|
|
string filePath = ImageHelpers.OpenImageFileDialog();
|
|
|
|
|
|
|
|
|
|
AnnotateImage(filePath, taskSettings);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void AnnotateImage(string filePath, TaskSettings taskSettings = null)
|
|
|
|
|
{
|
2014-07-17 08:43:20 +12:00
|
|
|
|
if (!string.IsNullOrEmpty(filePath))
|
|
|
|
|
{
|
2016-09-06 00:23:25 +12:00
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
2016-09-05 21:21:32 +12:00
|
|
|
|
|
2016-09-06 00:23:25 +12:00
|
|
|
|
if (taskSettings.AdvancedSettings.UseShareXForAnnotation)
|
2016-09-05 21:21:32 +12:00
|
|
|
|
{
|
2016-09-19 03:28:57 +12:00
|
|
|
|
AnnotateImageUsingShareX(null, filePath, taskSettings);
|
2016-09-06 00:23:25 +12:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2016-09-08 01:53:54 +12:00
|
|
|
|
AnnotateImageUsingGreenshot(null, filePath);
|
2016-09-06 00:23:25 +12:00
|
|
|
|
}
|
2014-07-17 08:43:20 +12:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-19 03:28:57 +12:00
|
|
|
|
public static void AnnotateImageUsingShareX(Image img, string filePath, TaskSettings taskSettings = null)
|
2016-09-08 01:53:54 +12:00
|
|
|
|
{
|
2016-09-19 03:28:57 +12:00
|
|
|
|
if (img == null)
|
2016-09-08 01:53:54 +12:00
|
|
|
|
{
|
2016-09-19 03:28:57 +12:00
|
|
|
|
if (File.Exists(filePath))
|
|
|
|
|
{
|
|
|
|
|
img = ImageHelpers.LoadImage(filePath);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
2016-09-08 01:53:54 +12:00
|
|
|
|
}
|
|
|
|
|
|
2016-09-19 03:28:57 +12:00
|
|
|
|
using (img)
|
2016-09-08 01:53:54 +12:00
|
|
|
|
{
|
2016-09-19 03:28:57 +12:00
|
|
|
|
Image result = RegionCaptureTasks.AnnotateImage(img, taskSettings.CaptureSettingsReference.SurfaceOptions,
|
|
|
|
|
(x, newFilePath) => SaveImageAsFile(x, taskSettings),
|
|
|
|
|
(x, newFilePath) => ImageHelpers.SaveImageFileDialog(x, newFilePath),
|
|
|
|
|
x => ClipboardHelpers.CopyImage(x),
|
|
|
|
|
x => UploadManager.UploadImage(x),
|
|
|
|
|
x => PrintImage(x));
|
|
|
|
|
|
|
|
|
|
if (result != null)
|
|
|
|
|
{
|
|
|
|
|
UploadManager.RunImageTask(result, taskSettings);
|
|
|
|
|
}
|
2016-09-08 01:53:54 +12:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Image AnnotateImageUsingGreenshot(Image img, string imgPath)
|
|
|
|
|
{
|
|
|
|
|
return ImageHelpers.AnnotateImage(img, imgPath, !Program.Sandbox, Program.PersonalFolder,
|
|
|
|
|
x => Program.MainForm.InvokeSafe(() => ClipboardHelpers.CopyImage(x)),
|
|
|
|
|
x => Program.MainForm.InvokeSafe(() => UploadManager.UploadImage(x)),
|
|
|
|
|
(x, filePath) => Program.MainForm.InvokeSafe(() => ImageHelpers.SaveImage(x, filePath)),
|
|
|
|
|
(x, filePath) =>
|
|
|
|
|
{
|
|
|
|
|
string newFilePath = null;
|
|
|
|
|
Program.MainForm.InvokeSafe(() => newFilePath = ImageHelpers.SaveImageFileDialog(x, filePath));
|
|
|
|
|
return newFilePath;
|
|
|
|
|
},
|
|
|
|
|
x => Program.MainForm.InvokeSafe(() => PrintImage(x)));
|
|
|
|
|
}
|
|
|
|
|
|
2014-05-03 05:56:51 +12:00
|
|
|
|
public static void OpenImageEffects()
|
|
|
|
|
{
|
|
|
|
|
string filePath = ImageHelpers.OpenImageFileDialog();
|
2015-03-27 10:30:29 +13:00
|
|
|
|
Image img = null;
|
2014-05-03 05:56:51 +12:00
|
|
|
|
if (!string.IsNullOrEmpty(filePath))
|
|
|
|
|
{
|
2015-03-27 10:30:29 +13:00
|
|
|
|
img = ImageHelpers.LoadImage(filePath);
|
2014-05-03 05:56:51 +12:00
|
|
|
|
}
|
2015-03-27 10:30:29 +13:00
|
|
|
|
ImageEffectsForm form = new ImageEffectsForm(img);
|
|
|
|
|
form.EditorMode();
|
|
|
|
|
form.Show();
|
2014-05-03 05:56:51 +12:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void OpenMonitorTest()
|
|
|
|
|
{
|
|
|
|
|
using (MonitorTestForm monitorTestForm = new MonitorTestForm())
|
|
|
|
|
{
|
|
|
|
|
monitorTestForm.ShowDialog();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void OpenDNSChanger()
|
2014-09-07 07:13:21 +12:00
|
|
|
|
{
|
2015-05-07 04:49:57 +12:00
|
|
|
|
if (Helpers.IsAdministrator())
|
|
|
|
|
{
|
|
|
|
|
new DNSChangerForm().Show();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
RunShareXAsAdmin("-dnschanger");
|
|
|
|
|
}
|
2014-09-07 07:13:21 +12:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void RunShareXAsAdmin(string arguments)
|
2014-05-03 05:56:51 +12:00
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
2014-09-07 07:13:21 +12:00
|
|
|
|
ProcessStartInfo psi = new ProcessStartInfo(Application.ExecutablePath);
|
|
|
|
|
psi.Arguments = arguments;
|
2014-05-03 05:56:51 +12:00
|
|
|
|
psi.Verb = "runas";
|
|
|
|
|
Process.Start(psi);
|
|
|
|
|
}
|
|
|
|
|
catch { }
|
|
|
|
|
}
|
|
|
|
|
|
2014-05-21 10:46:06 +12:00
|
|
|
|
public static void OpenQRCode()
|
|
|
|
|
{
|
|
|
|
|
new QRCodeForm().Show();
|
|
|
|
|
}
|
|
|
|
|
|
2016-08-23 07:39:38 +12:00
|
|
|
|
public static void OpenRuler(TaskSettings taskSettings = null)
|
2016-05-13 17:56:33 +12:00
|
|
|
|
{
|
2016-08-23 07:39:38 +12:00
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
|
|
|
|
|
2016-09-05 22:31:49 +12:00
|
|
|
|
RegionCaptureTasks.ShowScreenRuler(taskSettings.CaptureSettings.SurfaceOptions);
|
2016-08-23 07:39:38 +12:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void OpenOCR(TaskSettings taskSettings = null)
|
|
|
|
|
{
|
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
|
|
|
|
|
2016-09-05 22:31:49 +12:00
|
|
|
|
using (Image img = RegionCaptureTasks.GetRegionImage(taskSettings.CaptureSettings.SurfaceOptions))
|
2016-05-13 17:56:33 +12:00
|
|
|
|
{
|
|
|
|
|
if (img != null)
|
|
|
|
|
{
|
2016-09-19 03:28:57 +12:00
|
|
|
|
using (Stream stream = SaveImageAsStream(img, EImageFormat.PNG))
|
2016-05-13 17:56:33 +12:00
|
|
|
|
{
|
|
|
|
|
if (stream != null)
|
|
|
|
|
{
|
2016-05-16 21:28:14 +12:00
|
|
|
|
using (OCRSpaceForm form = new OCRSpaceForm(stream, "ShareX.png"))
|
2016-05-13 17:56:33 +12:00
|
|
|
|
{
|
2016-05-15 20:47:30 +12:00
|
|
|
|
form.Language = Program.Settings.OCRLanguage;
|
2016-05-13 17:56:33 +12:00
|
|
|
|
form.ShowDialog();
|
2016-05-15 20:47:30 +12:00
|
|
|
|
Program.Settings.OCRLanguage = form.Language;
|
2016-05-13 17:56:33 +12:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-04-27 06:44:44 +12:00
|
|
|
|
public static void OpenFTPClient()
|
|
|
|
|
{
|
|
|
|
|
if (Program.UploadersConfig != null && Program.UploadersConfig.FTPAccountList != null)
|
|
|
|
|
{
|
|
|
|
|
FTPAccount account = Program.UploadersConfig.FTPAccountList.ReturnIfValidIndex(Program.UploadersConfig.FTPSelectedImage);
|
|
|
|
|
|
|
|
|
|
if (account != null)
|
|
|
|
|
{
|
|
|
|
|
if (account.Protocol == FTPProtocol.FTP || account.Protocol == FTPProtocol.FTPS)
|
|
|
|
|
{
|
|
|
|
|
new FTPClientForm(account).Show();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2015-04-28 19:50:41 +12:00
|
|
|
|
MessageBox.Show(Resources.TaskHelpers_OpenFTPClient_FTP_client_only_supports_FTP_or_FTPS_, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
2015-04-27 06:44:44 +12:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-04-28 19:50:41 +12:00
|
|
|
|
MessageBox.Show(Resources.TaskHelpers_OpenFTPClient_Unable_to_find_valid_FTP_account_, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
2015-04-27 06:44:44 +12:00
|
|
|
|
}
|
|
|
|
|
|
2014-06-17 22:30:49 +12:00
|
|
|
|
public static void TweetMessage()
|
|
|
|
|
{
|
2015-04-27 06:44:44 +12:00
|
|
|
|
if (Program.UploadersConfig != null && Program.UploadersConfig.TwitterOAuthInfoList != null)
|
2014-06-17 22:30:49 +12:00
|
|
|
|
{
|
|
|
|
|
OAuthInfo twitterOAuth = Program.UploadersConfig.TwitterOAuthInfoList.ReturnIfValidIndex(Program.UploadersConfig.TwitterSelectedAccount);
|
|
|
|
|
|
2015-04-27 06:44:44 +12:00
|
|
|
|
if (twitterOAuth != null && OAuthInfo.CheckOAuth(twitterOAuth))
|
2014-06-17 22:30:49 +12:00
|
|
|
|
{
|
2015-04-27 06:44:44 +12:00
|
|
|
|
TaskEx.Run(() =>
|
2014-06-17 22:30:49 +12:00
|
|
|
|
{
|
2015-04-27 06:44:44 +12:00
|
|
|
|
using (TwitterTweetForm twitter = new TwitterTweetForm(twitterOAuth))
|
2014-06-17 22:30:49 +12:00
|
|
|
|
{
|
2015-04-27 06:44:44 +12:00
|
|
|
|
if (twitter.ShowDialog() == DialogResult.OK && twitter.IsTweetSent)
|
2014-06-17 22:30:49 +12:00
|
|
|
|
{
|
2015-04-27 06:44:44 +12:00
|
|
|
|
if (Program.MainForm.niTray.Visible)
|
|
|
|
|
{
|
|
|
|
|
Program.MainForm.niTray.Tag = null;
|
|
|
|
|
Program.MainForm.niTray.ShowBalloonTip(5000, "ShareX - Twitter", Resources.TaskHelpers_TweetMessage_Tweet_successfully_sent_, ToolTipIcon.Info);
|
|
|
|
|
}
|
2014-06-17 22:30:49 +12:00
|
|
|
|
}
|
|
|
|
|
}
|
2015-04-27 06:44:44 +12:00
|
|
|
|
});
|
2014-06-17 22:30:49 +12:00
|
|
|
|
|
2015-04-27 06:44:44 +12:00
|
|
|
|
return;
|
|
|
|
|
}
|
2014-05-03 05:56:51 +12:00
|
|
|
|
}
|
2015-04-27 06:44:44 +12:00
|
|
|
|
|
2015-04-28 19:50:41 +12:00
|
|
|
|
MessageBox.Show(Resources.TaskHelpers_TweetMessage_Unable_to_find_valid_Twitter_account_, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
2014-05-03 05:56:51 +12:00
|
|
|
|
}
|
2015-03-08 14:13:55 +13:00
|
|
|
|
|
|
|
|
|
public static EDataType FindDataType(string filePath, TaskSettings taskSettings)
|
|
|
|
|
{
|
2016-09-11 09:36:01 +12:00
|
|
|
|
if (Helpers.CheckExtension(filePath, taskSettings.AdvancedSettings.ImageExtensions))
|
2015-03-08 14:13:55 +13:00
|
|
|
|
{
|
2016-09-11 09:36:01 +12:00
|
|
|
|
return EDataType.Image;
|
|
|
|
|
}
|
2015-03-08 14:13:55 +13:00
|
|
|
|
|
2016-09-11 09:36:01 +12:00
|
|
|
|
if (Helpers.CheckExtension(filePath, taskSettings.AdvancedSettings.TextExtensions))
|
|
|
|
|
{
|
|
|
|
|
return EDataType.Text;
|
2015-03-08 14:13:55 +13:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return EDataType.File;
|
|
|
|
|
}
|
2015-07-19 06:49:34 +12:00
|
|
|
|
|
|
|
|
|
public static bool ToggleHotkeys()
|
|
|
|
|
{
|
2015-11-01 07:26:12 +13:00
|
|
|
|
bool hotkeysDisabled = !Program.Settings.DisableHotkeys;
|
2015-07-19 06:49:34 +12:00
|
|
|
|
|
2015-11-01 07:26:12 +13:00
|
|
|
|
Program.Settings.DisableHotkeys = hotkeysDisabled;
|
|
|
|
|
Program.HotkeyManager.ToggleHotkeys(hotkeysDisabled);
|
2015-07-19 06:49:34 +12:00
|
|
|
|
Program.MainForm.UpdateToggleHotkeyButton();
|
|
|
|
|
|
|
|
|
|
if (Program.MainForm.niTray.Visible)
|
|
|
|
|
{
|
|
|
|
|
Program.MainForm.niTray.Tag = null;
|
2015-11-01 07:26:12 +13:00
|
|
|
|
string balloonTipText = hotkeysDisabled ? Resources.TaskHelpers_ToggleHotkeys_Hotkeys_disabled_ : Resources.TaskHelpers_ToggleHotkeys_Hotkeys_enabled_;
|
2015-07-19 06:49:34 +12:00
|
|
|
|
Program.MainForm.niTray.ShowBalloonTip(3000, "ShareX", balloonTipText, ToolTipIcon.Info);
|
|
|
|
|
}
|
|
|
|
|
|
2015-11-01 07:26:12 +13:00
|
|
|
|
return hotkeysDisabled;
|
2015-07-19 06:49:34 +12:00
|
|
|
|
}
|
2015-08-14 09:51:58 +12:00
|
|
|
|
|
|
|
|
|
public static bool CheckFFmpeg(TaskSettings taskSettings)
|
|
|
|
|
{
|
2015-10-16 08:19:24 +13:00
|
|
|
|
string ffmpegPath = taskSettings.CaptureSettings.FFmpegOptions.FFmpegPath;
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrEmpty(ffmpegPath))
|
2015-08-14 09:51:58 +12:00
|
|
|
|
{
|
2015-10-27 15:03:24 +13:00
|
|
|
|
ffmpegPath = Program.DefaultFFmpegFilePath;
|
2015-10-16 08:19:24 +13:00
|
|
|
|
}
|
2015-08-14 09:51:58 +12:00
|
|
|
|
|
2015-10-16 08:19:24 +13:00
|
|
|
|
if (!File.Exists(ffmpegPath))
|
|
|
|
|
{
|
|
|
|
|
if (MessageBox.Show(string.Format(Resources.ScreenRecordForm_StartRecording_does_not_exist, ffmpegPath),
|
2015-08-14 09:51:58 +12:00
|
|
|
|
"ShareX - " + Resources.ScreenRecordForm_StartRecording_Missing + " ffmpeg.exe", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
|
|
|
|
|
{
|
|
|
|
|
if (FFmpegDownloader.DownloadFFmpeg(false, DownloaderForm_InstallRequested) == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
Program.DefaultTaskSettings.CaptureSettings.FFmpegOptions.CLIPath = taskSettings.TaskSettingsReference.CaptureSettings.FFmpegOptions.CLIPath =
|
2015-10-27 15:03:24 +13:00
|
|
|
|
taskSettings.CaptureSettings.FFmpegOptions.CLIPath = Program.DefaultFFmpegFilePath;
|
2015-09-13 08:32:51 +12:00
|
|
|
|
|
|
|
|
|
#if STEAM
|
|
|
|
|
Program.DefaultTaskSettings.CaptureSettings.FFmpegOptions.OverrideCLIPath = taskSettings.TaskSettingsReference.CaptureSettings.FFmpegOptions.OverrideCLIPath =
|
|
|
|
|
taskSettings.CaptureSettings.FFmpegOptions.OverrideCLIPath = true;
|
|
|
|
|
#endif
|
2015-08-14 09:51:58 +12:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void DownloaderForm_InstallRequested(string filePath)
|
|
|
|
|
{
|
2015-10-27 15:03:24 +13:00
|
|
|
|
bool result = FFmpegDownloader.ExtractFFmpeg(filePath, Program.DefaultFFmpegFilePath);
|
2015-08-14 09:51:58 +12:00
|
|
|
|
|
|
|
|
|
if (result)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(Resources.ScreenRecordForm_DownloaderForm_InstallRequested_FFmpeg_successfully_downloaded_, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(Resources.ScreenRecordForm_DownloaderForm_InstallRequested_Download_of_FFmpeg_failed_, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
|
|
|
|
}
|
2015-08-16 20:34:46 +12:00
|
|
|
|
|
|
|
|
|
public static void PlayCaptureSound(TaskSettings taskSettings)
|
|
|
|
|
{
|
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
|
|
|
|
|
2016-04-22 03:23:03 +12:00
|
|
|
|
if (!string.IsNullOrEmpty(taskSettings.AdvancedSettings.SpeechCapture))
|
|
|
|
|
{
|
|
|
|
|
TextToSpeechAsync(taskSettings.AdvancedSettings.SpeechCapture);
|
|
|
|
|
}
|
|
|
|
|
else if (taskSettings.AdvancedSettings.UseCustomCaptureSound && !string.IsNullOrEmpty(taskSettings.AdvancedSettings.CustomCaptureSoundPath))
|
2015-08-16 20:34:46 +12:00
|
|
|
|
{
|
|
|
|
|
Helpers.PlaySoundAsync(taskSettings.AdvancedSettings.CustomCaptureSoundPath);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Helpers.PlaySoundAsync(Resources.CaptureSound);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void PlayTaskCompleteSound(TaskSettings taskSettings)
|
|
|
|
|
{
|
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
|
|
|
|
|
2016-04-22 03:23:03 +12:00
|
|
|
|
if (!string.IsNullOrEmpty(taskSettings.AdvancedSettings.SpeechTaskCompleted))
|
|
|
|
|
{
|
|
|
|
|
TextToSpeechAsync(taskSettings.AdvancedSettings.SpeechTaskCompleted);
|
|
|
|
|
}
|
|
|
|
|
else if (taskSettings.AdvancedSettings.UseCustomTaskCompletedSound && !string.IsNullOrEmpty(taskSettings.AdvancedSettings.CustomTaskCompletedSoundPath))
|
2015-08-16 20:34:46 +12:00
|
|
|
|
{
|
2015-08-17 09:51:18 +12:00
|
|
|
|
Helpers.PlaySoundAsync(taskSettings.AdvancedSettings.CustomTaskCompletedSoundPath);
|
2015-08-16 20:34:46 +12:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Helpers.PlaySoundAsync(Resources.TaskCompletedSound);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void PlayErrorSound(TaskSettings taskSettings)
|
|
|
|
|
{
|
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
|
|
|
|
|
|
|
|
|
if (taskSettings.AdvancedSettings.UseCustomErrorSound && !string.IsNullOrEmpty(taskSettings.AdvancedSettings.CustomErrorSoundPath))
|
|
|
|
|
{
|
|
|
|
|
Helpers.PlaySoundAsync(taskSettings.AdvancedSettings.CustomErrorSoundPath);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Helpers.PlaySoundAsync(Resources.ErrorSound);
|
|
|
|
|
}
|
|
|
|
|
}
|
2016-04-22 03:23:03 +12:00
|
|
|
|
|
|
|
|
|
public static void TextToSpeechAsync(string text)
|
|
|
|
|
{
|
|
|
|
|
TaskEx.Run(() =>
|
|
|
|
|
{
|
|
|
|
|
using (SpeechSynthesizer speaker = new SpeechSynthesizer())
|
|
|
|
|
{
|
|
|
|
|
speaker.Speak(text);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
2016-04-30 10:26:49 +12:00
|
|
|
|
|
|
|
|
|
public static void OpenUploadersConfigWindow(IUploaderService uploaderService = null)
|
|
|
|
|
{
|
|
|
|
|
if (Program.UploadersConfig == null)
|
|
|
|
|
{
|
|
|
|
|
Program.UploaderSettingsResetEvent.WaitOne();
|
|
|
|
|
}
|
|
|
|
|
|
2016-04-30 20:30:03 +12:00
|
|
|
|
bool firstInstance;
|
|
|
|
|
UploadersConfigForm form = UploadersConfigForm.GetFormInstance(Program.UploadersConfig, out firstInstance);
|
|
|
|
|
|
|
|
|
|
if (firstInstance)
|
2016-04-30 10:26:49 +12:00
|
|
|
|
{
|
2016-04-30 20:30:03 +12:00
|
|
|
|
form.FormClosed += (sender, e) => Program.UploadersConfigSaveAsync();
|
|
|
|
|
|
2016-04-30 10:26:49 +12:00
|
|
|
|
if (uploaderService != null)
|
|
|
|
|
{
|
2016-04-30 20:30:03 +12:00
|
|
|
|
form.NavigateToTabPage(uploaderService.GetUploadersConfigTabPage(form));
|
2016-04-30 10:26:49 +12:00
|
|
|
|
}
|
|
|
|
|
|
2016-04-30 20:30:03 +12:00
|
|
|
|
form.Show();
|
2016-04-30 10:26:49 +12:00
|
|
|
|
}
|
2016-04-30 20:30:03 +12:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (uploaderService != null)
|
|
|
|
|
{
|
|
|
|
|
form.NavigateToTabPage(uploaderService.GetUploadersConfigTabPage(form));
|
|
|
|
|
}
|
2016-04-30 10:26:49 +12:00
|
|
|
|
|
2016-04-30 20:30:03 +12:00
|
|
|
|
form.ForceActivate();
|
|
|
|
|
}
|
2016-04-30 10:26:49 +12:00
|
|
|
|
}
|
2016-05-22 06:33:25 +12:00
|
|
|
|
|
|
|
|
|
public static Image FindMenuIcon<T>(int index)
|
|
|
|
|
{
|
|
|
|
|
T e = Helpers.GetEnumFromIndex<T>(index);
|
|
|
|
|
|
|
|
|
|
if (e is AfterCaptureTasks)
|
|
|
|
|
{
|
|
|
|
|
switch ((AfterCaptureTasks)(object)e)
|
|
|
|
|
{
|
|
|
|
|
case AfterCaptureTasks.ShowQuickTaskMenu:
|
|
|
|
|
return Resources.ui_menu_blue;
|
|
|
|
|
case AfterCaptureTasks.ShowAfterCaptureWindow:
|
|
|
|
|
return Resources.application_text_image;
|
|
|
|
|
case AfterCaptureTasks.AddImageEffects:
|
|
|
|
|
return Resources.image_saturation;
|
|
|
|
|
case AfterCaptureTasks.AnnotateImage:
|
|
|
|
|
return Resources.image_pencil;
|
|
|
|
|
case AfterCaptureTasks.CopyImageToClipboard:
|
|
|
|
|
return Resources.clipboard_paste_image;
|
|
|
|
|
case AfterCaptureTasks.SendImageToPrinter:
|
|
|
|
|
return Resources.printer;
|
|
|
|
|
case AfterCaptureTasks.SaveImageToFile:
|
|
|
|
|
return Resources.disk;
|
|
|
|
|
case AfterCaptureTasks.SaveImageToFileWithDialog:
|
|
|
|
|
return Resources.disk_rename;
|
|
|
|
|
case AfterCaptureTasks.SaveThumbnailImageToFile:
|
|
|
|
|
return Resources.disk_small;
|
|
|
|
|
case AfterCaptureTasks.PerformActions:
|
|
|
|
|
return Resources.application_terminal;
|
|
|
|
|
case AfterCaptureTasks.CopyFileToClipboard:
|
|
|
|
|
return Resources.clipboard_block;
|
|
|
|
|
case AfterCaptureTasks.CopyFilePathToClipboard:
|
|
|
|
|
return Resources.clipboard_list;
|
|
|
|
|
case AfterCaptureTasks.ShowInExplorer:
|
|
|
|
|
return Resources.folder_stand;
|
|
|
|
|
case AfterCaptureTasks.DoOCR:
|
|
|
|
|
return Resources.edit_drop_cap;
|
|
|
|
|
case AfterCaptureTasks.ShowBeforeUploadWindow:
|
|
|
|
|
return Resources.application__arrow;
|
|
|
|
|
case AfterCaptureTasks.UploadImageToHost:
|
|
|
|
|
return Resources.upload_cloud;
|
|
|
|
|
case AfterCaptureTasks.DeleteFile:
|
|
|
|
|
return Resources.bin;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (e is AfterUploadTasks)
|
|
|
|
|
{
|
|
|
|
|
switch ((AfterUploadTasks)(object)e)
|
|
|
|
|
{
|
|
|
|
|
case AfterUploadTasks.ShowAfterUploadWindow:
|
|
|
|
|
return Resources.application_browser;
|
|
|
|
|
case AfterUploadTasks.UseURLShortener:
|
|
|
|
|
return Resources.edit_scale;
|
|
|
|
|
case AfterUploadTasks.ShareURL:
|
|
|
|
|
return Resources.globe_share;
|
|
|
|
|
case AfterUploadTasks.CopyURLToClipboard:
|
|
|
|
|
return Resources.clipboard_paste_document_text;
|
|
|
|
|
case AfterUploadTasks.OpenURL:
|
|
|
|
|
return Resources.globe__arrow;
|
|
|
|
|
case AfterUploadTasks.ShowQRCode:
|
|
|
|
|
return Resources.barcode_2d;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
2016-07-22 02:23:45 +12:00
|
|
|
|
|
|
|
|
|
public static Screenshot GetScreenshot(TaskSettings taskSettings = null)
|
|
|
|
|
{
|
|
|
|
|
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
|
|
|
|
|
|
|
|
|
Screenshot screenshot = new Screenshot()
|
|
|
|
|
{
|
|
|
|
|
CaptureCursor = taskSettings.CaptureSettings.ShowCursor,
|
|
|
|
|
CaptureClientArea = taskSettings.CaptureSettings.CaptureClientArea,
|
|
|
|
|
RemoveOutsideScreenArea = true,
|
|
|
|
|
CaptureShadow = taskSettings.CaptureSettings.CaptureShadow,
|
|
|
|
|
ShadowOffset = taskSettings.CaptureSettings.CaptureShadowOffset,
|
|
|
|
|
AutoHideTaskbar = taskSettings.CaptureSettings.CaptureAutoHideTaskbar
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return screenshot;
|
|
|
|
|
}
|
2013-11-03 23:53:49 +13:00
|
|
|
|
}
|
|
|
|
|
}
|