Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Craftplacer 2021-04-30 09:31:07 +02:00
commit 0f4c4005e0
37 changed files with 348 additions and 308 deletions

View file

@ -1612,5 +1612,39 @@ public static IEnumerable<string> GetFilesByExtensions(DirectoryInfo directoryIn
HashSet<string> allowedExtensions = new HashSet<string>(extensions, StringComparer.OrdinalIgnoreCase);
return directoryInfo.EnumerateFiles().Where(f => allowedExtensions.Contains(f.Extension)).Select(x => x.FullName);
}
public static Icon GetProgressIcon(int percentage)
{
return GetProgressIcon(percentage, Color.FromArgb(16, 116, 193));
}
public static Icon GetProgressIcon(int percentage, Color color)
{
percentage = percentage.Clamp(0, 99);
Size size = SystemInformation.SmallIconSize;
using (Bitmap bmp = new Bitmap(size.Width, size.Height))
using (Graphics g = Graphics.FromImage(bmp))
{
int y = (int)(size.Height * (percentage / 100f));
if (y > 0)
{
using (Brush brush = new SolidBrush(color))
{
g.FillRectangle(brush, 0, size.Height - 1 - y, size.Width, y);
}
}
using (Font font = new Font("Arial", 10))
using (StringFormat sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center })
{
g.DrawString(percentage.ToString(), font, Brushes.Black, size.Width / 2f, size.Height / 2f, sf);
g.DrawString(percentage.ToString(), font, Brushes.White, size.Width / 2f, (size.Height / 2f) - 1, sf);
}
return Icon.FromHandle(bmp.GetHicon());
}
}
}
}

View file

@ -333,4 +333,9 @@ public enum BorderStyle
DashDot,
DashDotDot
}
public enum ScreenRecordState
{
Waiting, BeforeStart, AfterStart, AfterRecordingStart, Encoding
}
}

View file

@ -1,4 +1,4 @@
namespace ShareX
namespace ShareX.ScreenCaptureLib
{
partial class ScreenRecordForm
{
@ -75,14 +75,14 @@ private void InitializeComponent()
//
// tsmiStart
//
this.tsmiStart.Image = global::ShareX.Properties.Resources.control_record;
this.tsmiStart.Image = global::ShareX.ScreenCaptureLib.Properties.Resources.control_record;
this.tsmiStart.Name = "tsmiStart";
resources.ApplyResources(this.tsmiStart, "tsmiStart");
this.tsmiStart.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btnStart_MouseClick);
//
// tsmiAbort
//
this.tsmiAbort.Image = global::ShareX.Properties.Resources.cross;
this.tsmiAbort.Image = global::ShareX.ScreenCaptureLib.Properties.Resources.cross;
this.tsmiAbort.Name = "tsmiAbort";
resources.ApplyResources(this.tsmiAbort, "tsmiAbort");
this.tsmiAbort.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btnAbort_MouseClick);

View file

@ -24,14 +24,14 @@
#endregion License Information (GPL v3)
using ShareX.HelpersLib;
using ShareX.Properties;
using ShareX.ScreenCaptureLib.Properties;
using System;
using System.Diagnostics;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
namespace ShareX
namespace ShareX.ScreenCaptureLib
{
public partial class ScreenRecordForm : Form
{
@ -46,24 +46,21 @@ public partial class ScreenRecordForm : Form
public bool IsStopRequested { get; private set; }
public bool IsAbortRequested { get; private set; }
private TaskSettings taskSettings;
public bool ActivateWindow { get; set; } = true;
public float Duration { get; set; } = 0;
public bool AskConfirmationOnAbort { get; set; } = false;
private Color borderColor = Color.Red;
private Rectangle borderRectangle;
private Rectangle borderRectangle0Based;
private bool activateWindow;
private float duration;
private static int lastIconStatus = -1;
public ScreenRecordForm(Rectangle regionRectangle, TaskSettings taskSettings, bool activateWindow = true, float duration = 0)
public ScreenRecordForm(Rectangle regionRectangle)
{
InitializeComponent();
Icon = ShareXResources.Icon;
niTray.Icon = ShareXResources.Icon;
this.taskSettings = taskSettings;
this.activateWindow = activateWindow;
this.duration = duration;
borderRectangle = regionRectangle.Offset(1);
borderRectangle0Based = new Rectangle(0, 0, borderRectangle.Width, borderRectangle.Height);
@ -97,7 +94,7 @@ protected override bool ShowWithoutActivation
{
get
{
return !activateWindow;
return !ActivateWindow;
}
}
@ -131,7 +128,7 @@ protected override void Dispose(bool disposing)
private void ScreenRegionForm_Shown(object sender, EventArgs e)
{
if (activateWindow)
if (ActivateWindow)
{
this.ForceActivate();
}
@ -167,8 +164,8 @@ public void StartCountdown(int milliseconds)
public void StartRecordingTimer()
{
IsCountdown = duration > 0;
Countdown = TimeSpan.FromSeconds(duration);
IsCountdown = Duration > 0;
Countdown = TimeSpan.FromSeconds(Duration);
lblTimer.ForeColor = Color.White;
borderColor = Color.FromArgb(0, 255, 0);
@ -229,8 +226,8 @@ private void btnAbort_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (!taskSettings.CaptureSettings.ScreenRecordAskConfirmationOnAbort ||
MessageBox.Show(Resources.ScreenRecord_ConfirmCancel, "ShareX", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
if (!AskConfirmationOnAbort || MessageBox.Show(Resources.ScreenRecordForm_ConfirmCancel, "ShareX", MessageBoxButtons.YesNo,
MessageBoxIcon.Warning) == DialogResult.Yes)
{
AbortRecording();
}
@ -278,7 +275,7 @@ public void ChangeState(ScreenRecordState state)
case ScreenRecordState.BeforeStart:
string trayTextBeforeStart = "ShareX - " + Resources.ScreenRecordForm_StartRecording_Click_tray_icon_to_start_recording_;
niTray.Text = trayTextBeforeStart.Truncate(63);
tsmiStart.Text = Resources.AutoCaptureForm_Execute_Start;
tsmiStart.Text = Resources.ScreenRecordForm_Start;
cmsMain.Enabled = true;
break;
case ScreenRecordState.AfterStart:
@ -286,8 +283,8 @@ public void ChangeState(ScreenRecordState state)
string trayTextAfterStart = "ShareX - " + Resources.ScreenRecordForm_StartRecording_Click_tray_icon_to_stop_recording_;
niTray.Text = trayTextAfterStart.Truncate(63);
niTray.Icon = Resources.control_record.ToIcon();
tsmiStart.Text = Resources.AutoCaptureForm_Execute_Stop;
btnStart.Text = Resources.AutoCaptureForm_Execute_Stop;
tsmiStart.Text = Resources.ScreenRecordForm_Stop;
btnStart.Text = Resources.ScreenRecordForm_Stop;
break;
case ScreenRecordState.AfterRecordingStart:
IsRecording = true;
@ -297,7 +294,7 @@ public void ChangeState(ScreenRecordState state)
Hide();
string trayTextAfterStop = "ShareX - " + Resources.ScreenRecordForm_StartRecording_Encoding___;
niTray.Text = trayTextAfterStop.Truncate(63);
niTray.Icon = Resources.camcorder_pencil.ToIcon();
niTray.Icon = Resources.camcorder__pencil.ToIcon();
cmsMain.Enabled = false;
break;
}
@ -316,19 +313,19 @@ public void ChangeStateProgress(int progress)
{
try
{
icon = TaskHelpers.GetProgressIcon(progress, Color.FromArgb(140, 0, 36));
icon = Helpers.GetProgressIcon(progress, Color.FromArgb(140, 0, 36));
}
catch (Exception e)
{
DebugHelper.WriteException(e);
progress = -1;
if (lastIconStatus == progress) return;
icon = Resources.camcorder_pencil.ToIcon();
icon = Resources.camcorder__pencil.ToIcon();
}
}
else
{
icon = Resources.camcorder_pencil.ToIcon();
icon = Resources.camcorder__pencil.ToIcon();
}
using (Icon oldIcon = niTray.Icon)

View file

@ -119,6 +119,16 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap camcorder__pencil {
get {
object obj = ResourceManager.GetObject("camcorder__pencil", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@ -178,6 +188,26 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap control_record {
get {
object obj = ResourceManager.GetObject("control_record", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap control_record_yellow {
get {
object obj = ResourceManager.GetObject("control_record_yellow", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@ -1254,6 +1284,69 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Are you sure you want to abort this recording?.
/// </summary>
internal static string ScreenRecordForm_ConfirmCancel {
get {
return ResourceManager.GetString("ScreenRecordForm_ConfirmCancel", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Start.
/// </summary>
internal static string ScreenRecordForm_Start {
get {
return ResourceManager.GetString("ScreenRecordForm_Start", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Click to start recording..
/// </summary>
internal static string ScreenRecordForm_StartRecording_Click_tray_icon_to_start_recording_ {
get {
return ResourceManager.GetString("ScreenRecordForm_StartRecording_Click_tray_icon_to_start_recording_", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Click to stop recording..
/// </summary>
internal static string ScreenRecordForm_StartRecording_Click_tray_icon_to_stop_recording_ {
get {
return ResourceManager.GetString("ScreenRecordForm_StartRecording_Click_tray_icon_to_stop_recording_", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Encoding....
/// </summary>
internal static string ScreenRecordForm_StartRecording_Encoding___ {
get {
return ResourceManager.GetString("ScreenRecordForm_StartRecording_Encoding___", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Waiting....
/// </summary>
internal static string ScreenRecordForm_StartRecording_Waiting___ {
get {
return ResourceManager.GetString("ScreenRecordForm_StartRecording_Waiting___", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Stop.
/// </summary>
internal static string ScreenRecordForm_Stop {
get {
return ResourceManager.GetString("ScreenRecordForm_Stop", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Stop capture.
/// </summary>

View file

@ -740,4 +740,38 @@ X: {4} Y: {5}</value>
<data name="ShapeManager_CreateToolbar_StepType" xml:space="preserve">
<value>Step type:</value>
</data>
<data name="camcorder__pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\camcorder--pencil.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="control_record" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\control-record.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="control_record_yellow" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\control-record-yellow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenRecordForm_ConfirmCancel" xml:space="preserve">
<value>Are you sure you want to abort this recording?</value>
</data>
<data name="ScreenRecordForm_StartRecording_Click_tray_icon_to_start_recording_" xml:space="preserve">
<value>Click to start recording.</value>
<comment>Text must be equal to or lower than 54 characters because of tray icon text length limit.</comment>
</data>
<data name="ScreenRecordForm_StartRecording_Click_tray_icon_to_stop_recording_" xml:space="preserve">
<value>Click to stop recording.</value>
<comment>Text must be equal to or lower than 54 characters because of tray icon text length limit.</comment>
</data>
<data name="ScreenRecordForm_StartRecording_Encoding___" xml:space="preserve">
<value>Encoding...</value>
<comment>Text must be equal to or lower than 54 characters because of tray icon text length limit.</comment>
</data>
<data name="ScreenRecordForm_StartRecording_Waiting___" xml:space="preserve">
<value>Waiting...</value>
<comment>Text must be equal to or lower than 54 characters because of tray icon text length limit.</comment>
</data>
<data name="ScreenRecordForm_Start" xml:space="preserve">
<value>Start</value>
</data>
<data name="ScreenRecordForm_Stop" xml:space="preserve">
<value>Stop</value>
</data>
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

View file

Before

Width:  |  Height:  |  Size: 522 B

After

Width:  |  Height:  |  Size: 522 B

View file

Before

Width:  |  Height:  |  Size: 484 B

After

Width:  |  Height:  |  Size: 484 B

View file

@ -115,6 +115,12 @@
<Compile Include="Forms\ImageSizeForm.Designer.cs">
<DependentUpon>ImageSizeForm.cs</DependentUpon>
</Compile>
<Compile Include="Forms\ScreenRecordForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\ScreenRecordForm.Designer.cs">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</Compile>
<Compile Include="Forms\StickerForm.cs">
<SubType>Form</SubType>
</Compile>
@ -332,6 +338,9 @@
<None Include="Resources\arrow-circle.png" />
<None Include="Resources\arrow-circle-double.png" />
<None Include="Resources\closedhand.cur" />
<None Include="Resources\camcorder--pencil.png" />
<None Include="Resources\control-record.png" />
<None Include="Resources\control-record-yellow.png" />
<Content Include="Resources\Crosshair.cur" />
<None Include="Resources\exclamation-button.png" />
</ItemGroup>
@ -579,6 +588,66 @@
<EmbeddedResource Include="Forms\NewImageForm.zh-TW.resx">
<DependentUpon>NewImageForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.de.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.es-MX.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.es.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.fa-IR.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.fr.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.hu.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.id-ID.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.it-IT.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.ja-JP.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.ko-KR.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.nl-NL.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.pt-BR.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.pt-PT.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.ru.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.tr.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.uk.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.vi-VN.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.zh-CN.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.zh-TW.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScrollingCaptureForm.de.resx">
<DependentUpon>ScrollingCaptureForm.cs</DependentUpon>
</EmbeddedResource>

View file

@ -286,11 +286,6 @@ public enum ThumbnailTitleLocation
Top, Bottom
}
public enum ScreenRecordState
{
Waiting, BeforeStart, AfterStart, AfterRecordingStart, Encoding
}
public enum RegionCaptureType
{
Default, Light, Transparent

View file

@ -1033,26 +1033,6 @@ public class Resources {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap control_record {
get {
object obj = ResourceManager.GetObject("control_record", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap control_record_yellow {
get {
object obj = ResourceManager.GetObject("control_record_yellow", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@ -1340,6 +1320,62 @@ public class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to {0} does not exist.
///
///Would you like to automatically download it?.
/// </summary>
public static string FFmpeg_does_not_exist {
get {
return ResourceManager.GetString("FFmpeg_does_not_exist", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Download of FFmpeg failed..
/// </summary>
public static string FFmpeg_Download_of_FFmpeg_failed {
get {
return ResourceManager.GetString("FFmpeg_Download_of_FFmpeg_failed", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to FFmpeg error.
/// </summary>
public static string FFmpeg_FFmpeg_error {
get {
return ResourceManager.GetString("FFmpeg_FFmpeg_error", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to FFmpeg successfully downloaded..
/// </summary>
public static string FFmpeg_FFmpeg_successfully_downloaded {
get {
return ResourceManager.GetString("FFmpeg_FFmpeg_successfully_downloaded", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to FFmpeg video and audio source can&apos;t both be &quot;None&quot;..
/// </summary>
public static string FFmpeg_FFmpeg_video_and_audio_source_both_can_t_be__None__ {
get {
return ResourceManager.GetString("FFmpeg_FFmpeg_video_and_audio_source_both_can_t_be__None__", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Missing.
/// </summary>
public static string FFmpeg_Missing {
get {
return ResourceManager.GetString("FFmpeg_Missing", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Use new name: .
/// </summary>
@ -2309,108 +2345,6 @@ public class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Are you sure you want to abort this recording?.
/// </summary>
public static string ScreenRecord_ConfirmCancel {
get {
return ResourceManager.GetString("ScreenRecord_ConfirmCancel", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Download of FFmpeg failed..
/// </summary>
public static string ScreenRecordForm_DownloaderForm_InstallRequested_Download_of_FFmpeg_failed_ {
get {
return ResourceManager.GetString("ScreenRecordForm_DownloaderForm_InstallRequested_Download_of_FFmpeg_failed_", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to FFmpeg successfully downloaded..
/// </summary>
public static string ScreenRecordForm_DownloaderForm_InstallRequested_FFmpeg_successfully_downloaded_ {
get {
return ResourceManager.GetString("ScreenRecordForm_DownloaderForm_InstallRequested_FFmpeg_successfully_downloaded_", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Click to start recording..
/// </summary>
public static string ScreenRecordForm_StartRecording_Click_tray_icon_to_start_recording_ {
get {
return ResourceManager.GetString("ScreenRecordForm_StartRecording_Click_tray_icon_to_start_recording_", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Click to stop recording..
/// </summary>
public static string ScreenRecordForm_StartRecording_Click_tray_icon_to_stop_recording_ {
get {
return ResourceManager.GetString("ScreenRecordForm_StartRecording_Click_tray_icon_to_stop_recording_", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to {0} does not exist.
///
///Would you like to automatically download it?.
/// </summary>
public static string ScreenRecordForm_StartRecording_does_not_exist {
get {
return ResourceManager.GetString("ScreenRecordForm_StartRecording_does_not_exist", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Encoding....
/// </summary>
public static string ScreenRecordForm_StartRecording_Encoding___ {
get {
return ResourceManager.GetString("ScreenRecordForm_StartRecording_Encoding___", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to FFmpeg error.
/// </summary>
public static string ScreenRecordForm_StartRecording_FFmpeg_error {
get {
return ResourceManager.GetString("ScreenRecordForm_StartRecording_FFmpeg_error", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to FFmpeg video and audio source can&apos;t both be &quot;None&quot;..
/// </summary>
public static string ScreenRecordForm_StartRecording_FFmpeg_video_and_audio_source_both_can_t_be__None__ {
get {
return ResourceManager.GetString("ScreenRecordForm_StartRecording_FFmpeg_video_and_audio_source_both_can_t_be__None" +
"__", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Missing.
/// </summary>
public static string ScreenRecordForm_StartRecording_Missing {
get {
return ResourceManager.GetString("ScreenRecordForm_StartRecording_Missing", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Waiting....
/// </summary>
public static string ScreenRecordForm_StartRecording_Waiting___ {
get {
return ResourceManager.GetString("ScreenRecordForm_StartRecording_Waiting___", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Screenshot delay: {0}s.
/// </summary>

View file

@ -297,9 +297,6 @@ Would you like to restart ShareX?</value>
<data name="MainForm_UpdateToggleHotkeyButton_Disable_hotkeys" xml:space="preserve">
<value>Disable hotkeys</value>
</data>
<data name="ScreenRecordForm_StartRecording_FFmpeg_video_and_audio_source_both_can_t_be__None__" xml:space="preserve">
<value>FFmpeg video and audio source can't both be "None".</value>
</data>
<data name="QuickTaskMenuEditorForm_Reset_all_quick_tasks_to_defaults_Confirmation" xml:space="preserve">
<value>Reset all quick tasks to defaults?</value>
</data>
@ -367,9 +364,6 @@ Press 'No' to cancel the current upload and disable screenshot auto uploading.</
<data name="layer_transparent" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layer-transparent.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenRecordForm_DownloaderForm_InstallRequested_Download_of_FFmpeg_failed_" xml:space="preserve">
<value>Download of FFmpeg failed.</value>
</data>
<data name="QRCodeForm_InputTextToEncode" xml:space="preserve">
<value>Input text to encode</value>
</data>
@ -444,9 +438,6 @@ Are you sure you want to continue?</value>
<data name="TaskSettingsForm_UpdateUploaderMenuNames_File_uploader___0_" xml:space="preserve">
<value>File uploader: {0}</value>
</data>
<data name="control_record" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\control-record.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="application_list" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\application-list.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -492,10 +483,6 @@ Are you sure you want to continue?</value>
<data name="application_home" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\application-home.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenRecordForm_StartRecording_Encoding___" xml:space="preserve">
<value>Encoding...</value>
<comment>Text must be equal to or lower than 54 characters because of tray icon text length limit.</comment>
</data>
<data name="drive_globe" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\drive-globe.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -520,9 +507,6 @@ Are you sure you want to continue?</value>
<data name="UploadTask_CreateURLShortenerTask_Shorten_URL___0__" xml:space="preserve">
<value>Shorten URL ({0})</value>
</data>
<data name="ScreenRecordForm_StartRecording_FFmpeg_error" xml:space="preserve">
<value>FFmpeg error</value>
</data>
<data name="ActionsToolbarEditForm_Separator" xml:space="preserve">
<value>Separator</value>
</data>
@ -585,19 +569,12 @@ You can later disable it from "After capture tasks" menu.</value>
<data name="IntegrationHelpers_EditWithShareX" xml:space="preserve">
<value>Edit with ShareX</value>
</data>
<data name="ScreenRecordForm_StartRecording_Click_tray_icon_to_start_recording_" xml:space="preserve">
<value>Click to start recording.</value>
<comment>Text must be equal to or lower than 54 characters because of tray icon text length limit.</comment>
</data>
<data name="TaskManager_task_UploadCompleted_Error" xml:space="preserve">
<value>Error</value>
</data>
<data name="disk_rename" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\disk-rename.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="control_record_yellow" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\control-record-yellow.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="image_export" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\image-export.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -610,9 +587,6 @@ You can later disable it from "After capture tasks" menu.</value>
<data name="keyboard__plus" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\keyboard--plus.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenRecordForm_DownloaderForm_InstallRequested_FFmpeg_successfully_downloaded_" xml:space="preserve">
<value>FFmpeg successfully downloaded.</value>
</data>
<data name="TaskSettingsForm_UpdateUploaderMenuNames_After_capture___0_" xml:space="preserve">
<value>After capture: {0}</value>
</data>
@ -676,9 +650,6 @@ You can later disable it from "After capture tasks" menu.</value>
<data name="QuickTaskMenu_ShowMenu_Continue" xml:space="preserve">
<value>Continue</value>
</data>
<data name="ScreenRecordForm_StartRecording_Missing" xml:space="preserve">
<value>Missing</value>
</data>
<data name="arrow_270" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow-270.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -795,9 +766,6 @@ Would you like to restart ShareX?</value>
<data name="traffic_cone" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\traffic-cone.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenRecord_ConfirmCancel" xml:space="preserve">
<value>Are you sure you want to abort this recording?</value>
</data>
<data name="MainForm_UpdateWorkflowsMenu_You_can_add_workflows_from_hotkey_settings___" xml:space="preserve">
<value>You can add workflows from hotkey settings...</value>
</data>
@ -890,10 +858,6 @@ Please run ShareX as administrator to change personal folder path.</value>
<data name="disk" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\disk.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenRecordForm_StartRecording_Waiting___" xml:space="preserve">
<value>Waiting...</value>
<comment>Text must be equal to or lower than 54 characters because of tray icon text length limit.</comment>
</data>
<data name="uac" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\uac.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -924,11 +888,6 @@ Please run ShareX as administrator to change personal folder path.</value>
<data name="FailedToSaveSettings" xml:space="preserve">
<value>Failed to save settings</value>
</data>
<data name="ScreenRecordForm_StartRecording_does_not_exist" xml:space="preserve">
<value>{0} does not exist.
Would you like to automatically download it?</value>
</data>
<data name="Twitter-32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Twitter-32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -1039,10 +998,6 @@ Middle click to close</value>
<data name="drive_upload" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\drive-upload.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenRecordForm_StartRecording_Click_tray_icon_to_stop_recording_" xml:space="preserve">
<value>Click to stop recording.</value>
<comment>Text must be equal to or lower than 54 characters because of tray icon text length limit.</comment>
</data>
<data name="cross" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\cross.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -1101,4 +1056,24 @@ Middle click to close</value>
<data name="Twitter-16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Twitter-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="FFmpeg_does_not_exist" xml:space="preserve">
<value>{0} does not exist.
Would you like to automatically download it?</value>
</data>
<data name="FFmpeg_Download_of_FFmpeg_failed" xml:space="preserve">
<value>Download of FFmpeg failed.</value>
</data>
<data name="FFmpeg_FFmpeg_error" xml:space="preserve">
<value>FFmpeg error</value>
</data>
<data name="FFmpeg_FFmpeg_successfully_downloaded" xml:space="preserve">
<value>FFmpeg successfully downloaded.</value>
</data>
<data name="FFmpeg_FFmpeg_video_and_audio_source_both_can_t_be__None__" xml:space="preserve">
<value>FFmpeg video and audio source can't both be "None".</value>
</data>
<data name="FFmpeg_Missing" xml:space="preserve">
<value>Missing</value>
</data>
</root>

View file

@ -105,8 +105,8 @@ private static void StartRecording(ScreenRecordOutput outputType, TaskSettings t
if (!taskSettings.CaptureSettings.FFmpegOptions.IsSourceSelected)
{
MessageBox.Show(Resources.ScreenRecordForm_StartRecording_FFmpeg_video_and_audio_source_both_can_t_be__None__,
"ShareX - " + Resources.ScreenRecordForm_StartRecording_FFmpeg_error, MessageBoxButtons.OK, MessageBoxIcon.Warning);
MessageBox.Show(Resources.FFmpeg_FFmpeg_video_and_audio_source_both_can_t_be__None__,
"ShareX - " + Resources.FFmpeg_FFmpeg_error, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
@ -164,7 +164,13 @@ private static void StartRecording(ScreenRecordOutput outputType, TaskSettings t
float duration = taskSettings.CaptureSettings.ScreenRecordFixedDuration ? taskSettings.CaptureSettings.ScreenRecordDuration : 0;
recordForm = new ScreenRecordForm(captureRectangle, taskSettings, startMethod == ScreenRecordStartMethod.Region, duration);
recordForm = new ScreenRecordForm(captureRectangle)
{
ActivateWindow = startMethod == ScreenRecordStartMethod.Region,
Duration = duration,
AskConfirmationOnAbort = taskSettings.CaptureSettings.ScreenRecordAskConfirmationOnAbort
};
recordForm.StopRequested += StopRecording;
recordForm.Show();

View file

@ -296,12 +296,6 @@
<Compile Include="QuickTaskMenu.cs" />
<Compile Include="RecentTask.cs" />
<Compile Include="ScreenRecordManager.cs" />
<Compile Include="Forms\ScreenRecordForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\ScreenRecordForm.Designer.cs">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</Compile>
<Compile Include="Forms\ApplicationSettingsForm.cs">
<SubType>Form</SubType>
</Compile>
@ -1427,78 +1421,18 @@
<EmbeddedResource Include="Forms\QuickTaskMenuEditorForm.zh-TW.resx">
<DependentUpon>QuickTaskMenuEditorForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.de.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.es-MX.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.es.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.fa-IR.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.fr.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.hu.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.id-ID.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.it-IT.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.ja-JP.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.ko-KR.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.nl-NL.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.pt-BR.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.pt-PT.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ApplicationSettingsForm.resx">
<DependentUpon>ApplicationSettingsForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.ru.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.tr.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.uk.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.vi-VN.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.zh-CN.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\FirstTimeConfigForm.resx">
<DependentUpon>FirstTimeConfigForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ActionsToolbarEditForm.resx">
<DependentUpon>ActionsToolbarEditForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ScreenRecordForm.zh-TW.resx">
<DependentUpon>ScreenRecordForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\TaskSettingsForm.de.resx">
<DependentUpon>TaskSettingsForm.cs</DependentUpon>
<SubType>Designer</SubType>
@ -1765,7 +1699,6 @@
<None Include="Resources\monitor.png" />
<None Include="Resources\application-blue.png" />
<None Include="Resources\layer.png" />
<None Include="Resources\control-record.png" />
<None Include="Resources\checkbox_uncheck.png" />
<None Include="Resources\checkbox_check.png" />
<None Include="Resources\network-ip.png" />
@ -1863,7 +1796,6 @@
<None Include="ShareX_Icon.ico" />
<None Include="Resources\globe--pencil.png" />
<None Include="Resources\camcorder--pencil.png" />
<None Include="Resources\control-record-yellow.png" />
<None Include="Resources\application-monitor.png" />
<None Include="Resources\pencil.png" />
<None Include="Resources\folder-tree.png" />

View file

@ -651,40 +651,6 @@ private static void AddExternalProgramFromRegistry(TaskSettings taskSettings, st
}
}
public static Icon GetProgressIcon(int percentage)
{
return GetProgressIcon(percentage, Color.FromArgb(16, 116, 193));
}
public static Icon GetProgressIcon(int percentage, Color color)
{
percentage = percentage.Clamp(0, 99);
Size size = SystemInformation.SmallIconSize;
using (Bitmap bmp = new Bitmap(size.Width, size.Height))
using (Graphics g = Graphics.FromImage(bmp))
{
int y = (int)(size.Height * (percentage / 100f));
if (y > 0)
{
using (Brush brush = new SolidBrush(color))
{
g.FillRectangle(brush, 0, size.Height - 1 - y, size.Width, y);
}
}
using (Font font = new Font("Arial", 10))
using (StringFormat sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center })
{
g.DrawString(percentage.ToString(), font, Brushes.Black, size.Width / 2f, size.Height / 2f, sf);
g.DrawString(percentage.ToString(), font, Brushes.White, size.Width / 2f, (size.Height / 2f) - 1, sf);
}
return Icon.FromHandle(bmp.GetHicon());
}
}
public static string HandleExistsFile(string folder, string filename, TaskSettings taskSettings)
{
string filepath = Path.Combine(folder, filename);
@ -1375,8 +1341,8 @@ public static bool CheckFFmpeg(TaskSettings taskSettings)
if (!File.Exists(ffmpegPath))
{
if (MessageBox.Show(string.Format(Resources.ScreenRecordForm_StartRecording_does_not_exist, ffmpegPath),
"ShareX - " + Resources.ScreenRecordForm_StartRecording_Missing + " ffmpeg.exe", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
if (MessageBox.Show(string.Format(Resources.FFmpeg_does_not_exist, ffmpegPath),
"ShareX - " + Resources.FFmpeg_Missing + " ffmpeg.exe", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
DialogResult downloadDialogResult = FFmpegGitHubDownloader.DownloadFFmpeg(false, DownloaderForm_InstallRequested);
@ -1410,11 +1376,11 @@ private static void DownloaderForm_InstallRequested(string filePath)
if (result)
{
MessageBox.Show(Resources.ScreenRecordForm_DownloaderForm_InstallRequested_FFmpeg_successfully_downloaded_, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show(Resources.FFmpeg_FFmpeg_successfully_downloaded, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show(Resources.ScreenRecordForm_DownloaderForm_InstallRequested_Download_of_FFmpeg_failed_, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show(Resources.FFmpeg_Download_of_FFmpeg_failed, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

View file

@ -483,7 +483,7 @@ public static void UpdateTrayIcon(int progress = -1)
{
try
{
icon = TaskHelpers.GetProgressIcon(progress);
icon = Helpers.GetProgressIcon(progress);
}
catch (Exception e)
{