fixed #228: Added screenshot sub folder pattern for window, that way process name or window title can be used in folder names

This commit is contained in:
Jaex 2021-12-11 23:32:48 +03:00
parent a2911f9e25
commit 7792e7d244
7 changed files with 112 additions and 28 deletions

View file

@ -93,6 +93,7 @@ public ApplicationConfig()
public string CustomScreenshotsPath = "";
public string SaveImageSubFolderPattern = "%y-%mo";
public string SaveImageSubFolderPatternWindow = "";
#endregion Paths

View file

@ -123,6 +123,7 @@ private void InitializeComponent()
this.cbMainWindowTaskViewMode = new System.Windows.Forms.ComboBox();
this.lblMainWindowTaskViewMode = new System.Windows.Forms.Label();
this.tpClipboardFormats = new System.Windows.Forms.TabPage();
this.lblClipboardFormatsTip = new System.Windows.Forms.Label();
this.btnClipboardFormatEdit = new System.Windows.Forms.Button();
this.btnClipboardFormatRemove = new System.Windows.Forms.Button();
this.btnClipboardFormatAdd = new System.Windows.Forms.Button();
@ -178,7 +179,8 @@ private void InitializeComponent()
this.tpAdvanced = new System.Windows.Forms.TabPage();
this.pgSettings = new System.Windows.Forms.PropertyGrid();
this.tttvMain = new ShareX.HelpersLib.TabToTreeView();
this.lblClipboardFormatsTip = new System.Windows.Forms.Label();
this.lblSaveImageSubFolderPatternWindow = new System.Windows.Forms.Label();
this.txtSaveImageSubFolderPatternWindow = new System.Windows.Forms.TextBox();
this.tcSettings.SuspendLayout();
this.tpGeneral.SuspendLayout();
this.tpTheme.SuspendLayout();
@ -557,6 +559,8 @@ private void InitializeComponent()
// tpPaths
//
this.tpPaths.BackColor = System.Drawing.SystemColors.Window;
this.tpPaths.Controls.Add(this.txtSaveImageSubFolderPatternWindow);
this.tpPaths.Controls.Add(this.lblSaveImageSubFolderPatternWindow);
this.tpPaths.Controls.Add(this.btnPersonalFolderPathApply);
this.tpPaths.Controls.Add(this.btnOpenScreenshotsFolder);
this.tpPaths.Controls.Add(this.lblPreviewPersonalFolderPath);
@ -958,6 +962,11 @@ private void InitializeComponent()
this.tpClipboardFormats.Name = "tpClipboardFormats";
this.tpClipboardFormats.UseVisualStyleBackColor = true;
//
// lblClipboardFormatsTip
//
resources.ApplyResources(this.lblClipboardFormatsTip, "lblClipboardFormatsTip");
this.lblClipboardFormatsTip.Name = "lblClipboardFormatsTip";
//
// btnClipboardFormatEdit
//
resources.ApplyResources(this.btnClipboardFormatEdit, "btnClipboardFormatEdit");
@ -1394,10 +1403,16 @@ private void InitializeComponent()
this.tttvMain.TreeViewSize = 175;
this.tttvMain.TabChanged += new ShareX.HelpersLib.TabToTreeView.TabChangedEventHandler(this.tttvMain_TabChanged);
//
// lblClipboardFormatsTip
// lblSaveImageSubFolderPatternWindow
//
resources.ApplyResources(this.lblClipboardFormatsTip, "lblClipboardFormatsTip");
this.lblClipboardFormatsTip.Name = "lblClipboardFormatsTip";
resources.ApplyResources(this.lblSaveImageSubFolderPatternWindow, "lblSaveImageSubFolderPatternWindow");
this.lblSaveImageSubFolderPatternWindow.Name = "lblSaveImageSubFolderPatternWindow";
//
// txtSaveImageSubFolderPatternWindow
//
resources.ApplyResources(this.txtSaveImageSubFolderPatternWindow, "txtSaveImageSubFolderPatternWindow");
this.txtSaveImageSubFolderPatternWindow.Name = "txtSaveImageSubFolderPatternWindow";
this.txtSaveImageSubFolderPatternWindow.TextChanged += new System.EventHandler(this.txtSaveImageSubFolderPatternWindow_TextChanged);
//
// ApplicationSettingsForm
//
@ -1615,5 +1630,7 @@ private void InitializeComponent()
private System.Windows.Forms.Button btnThumbnailViewThumbnailSizeReset;
private System.Windows.Forms.TabPage tpClipboardFormats;
private System.Windows.Forms.Label lblClipboardFormatsTip;
private System.Windows.Forms.TextBox txtSaveImageSubFolderPatternWindow;
private System.Windows.Forms.Label lblSaveImageSubFolderPatternWindow;
}
}

View file

@ -90,6 +90,7 @@ private void InitializeControls()
eiTheme.ObjectType = typeof(ShareXTheme);
CodeMenu.Create<CodeMenuEntryFilename>(txtSaveImageSubFolderPattern, CodeMenuEntryFilename.t, CodeMenuEntryFilename.pn, CodeMenuEntryFilename.i, CodeMenuEntryFilename.width, CodeMenuEntryFilename.height, CodeMenuEntryFilename.n);
CodeMenu.Create<CodeMenuEntryFilename>(txtSaveImageSubFolderPatternWindow, CodeMenuEntryFilename.i, CodeMenuEntryFilename.n);
cbProxyMethod.Items.AddRange(Helpers.GetLocalizedEnumDescriptions<ProxyMethod>());
@ -169,6 +170,7 @@ private void UpdateControls()
cbUseCustomScreenshotsPath.Checked = Program.Settings.UseCustomScreenshotsPath;
txtCustomScreenshotsPath.Text = Program.Settings.CustomScreenshotsPath;
txtSaveImageSubFolderPattern.Text = Program.Settings.SaveImageSubFolderPattern;
txtSaveImageSubFolderPatternWindow.Text = Program.Settings.SaveImageSubFolderPatternWindow;
// Settings
cbAutomaticallyCleanupBackupFiles.Checked = Program.Settings.AutoCleanupBackupFiles;
@ -715,6 +717,11 @@ private void btnOpenScreenshotsFolder_Click(object sender, EventArgs e)
Helpers.OpenFolder(lblSaveImageSubFolderPatternPreview.Text);
}
private void txtSaveImageSubFolderPatternWindow_TextChanged(object sender, EventArgs e)
{
Program.Settings.SaveImageSubFolderPatternWindow = Helpers.GetValidFolderPath(txtSaveImageSubFolderPatternWindow.Text);
}
#endregion Paths
#region Settings

View file

@ -1260,6 +1260,54 @@
<data name="&gt;&gt;tpIntegration.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="txtSaveImageSubFolderPatternWindow.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 232</value>
</data>
<data name="txtSaveImageSubFolderPatternWindow.Size" type="System.Drawing.Size, System.Drawing">
<value>408, 20</value>
</data>
<data name="txtSaveImageSubFolderPatternWindow.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="&gt;&gt;txtSaveImageSubFolderPatternWindow.Name" xml:space="preserve">
<value>txtSaveImageSubFolderPatternWindow</value>
</data>
<data name="&gt;&gt;txtSaveImageSubFolderPatternWindow.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;txtSaveImageSubFolderPatternWindow.Parent" xml:space="preserve">
<value>tpPaths</value>
</data>
<data name="&gt;&gt;txtSaveImageSubFolderPatternWindow.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="lblSaveImageSubFolderPatternWindow.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblSaveImageSubFolderPatternWindow.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 216</value>
</data>
<data name="lblSaveImageSubFolderPatternWindow.Size" type="System.Drawing.Size, System.Drawing">
<value>148, 13</value>
</data>
<data name="lblSaveImageSubFolderPatternWindow.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="lblSaveImageSubFolderPatternWindow.Text" xml:space="preserve">
<value>Sub folder pattern for window:</value>
</data>
<data name="&gt;&gt;lblSaveImageSubFolderPatternWindow.Name" xml:space="preserve">
<value>lblSaveImageSubFolderPatternWindow</value>
</data>
<data name="&gt;&gt;lblSaveImageSubFolderPatternWindow.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblSaveImageSubFolderPatternWindow.Parent" xml:space="preserve">
<value>tpPaths</value>
</data>
<data name="&gt;&gt;lblSaveImageSubFolderPatternWindow.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="btnPersonalFolderPathApply.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
@ -1270,7 +1318,7 @@
<value>96, 23</value>
</data>
<data name="btnPersonalFolderPathApply.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
<value>3</value>
</data>
<data name="btnPersonalFolderPathApply.Text" xml:space="preserve">
<value>Apply</value>
@ -1285,7 +1333,7 @@
<value>tpPaths</value>
</data>
<data name="&gt;&gt;btnPersonalFolderPathApply.ZOrder" xml:space="preserve">
<value>0</value>
<value>2</value>
</data>
<data name="btnOpenScreenshotsFolder.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -1312,7 +1360,7 @@
<value>tpPaths</value>
</data>
<data name="&gt;&gt;btnOpenScreenshotsFolder.ZOrder" xml:space="preserve">
<value>1</value>
<value>3</value>
</data>
<data name="lblPreviewPersonalFolderPath.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -1327,7 +1375,7 @@
<value>16, 13</value>
</data>
<data name="lblPreviewPersonalFolderPath.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
<value>5</value>
</data>
<data name="lblPreviewPersonalFolderPath.Text" xml:space="preserve">
<value>...</value>
@ -1342,7 +1390,7 @@
<value>tpPaths</value>
</data>
<data name="&gt;&gt;lblPreviewPersonalFolderPath.ZOrder" xml:space="preserve">
<value>2</value>
<value>4</value>
</data>
<data name="btnBrowsePersonalFolderPath.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -1369,7 +1417,7 @@
<value>tpPaths</value>
</data>
<data name="&gt;&gt;btnBrowsePersonalFolderPath.ZOrder" xml:space="preserve">
<value>3</value>
<value>5</value>
</data>
<data name="lblPersonalFolderPath.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -1399,7 +1447,7 @@
<value>tpPaths</value>
</data>
<data name="&gt;&gt;lblPersonalFolderPath.ZOrder" xml:space="preserve">
<value>4</value>
<value>6</value>
</data>
<data name="txtPersonalFolderPath.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 32</value>
@ -1420,7 +1468,7 @@
<value>tpPaths</value>
</data>
<data name="&gt;&gt;txtPersonalFolderPath.ZOrder" xml:space="preserve">
<value>5</value>
<value>7</value>
</data>
<data name="btnBrowseCustomScreenshotsPath.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -1447,7 +1495,7 @@
<value>tpPaths</value>
</data>
<data name="&gt;&gt;btnBrowseCustomScreenshotsPath.ZOrder" xml:space="preserve">
<value>6</value>
<value>8</value>
</data>
<data name="btnOpenPersonalFolderPath.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -1459,7 +1507,7 @@
<value>96, 23</value>
</data>
<data name="btnOpenPersonalFolderPath.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
<value>4</value>
</data>
<data name="btnOpenPersonalFolderPath.Text" xml:space="preserve">
<value>Open...</value>
@ -1474,7 +1522,7 @@
<value>tpPaths</value>
</data>
<data name="&gt;&gt;btnOpenPersonalFolderPath.ZOrder" xml:space="preserve">
<value>7</value>
<value>9</value>
</data>
<data name="txtCustomScreenshotsPath.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 112</value>
@ -1495,7 +1543,7 @@
<value>tpPaths</value>
</data>
<data name="&gt;&gt;txtCustomScreenshotsPath.ZOrder" xml:space="preserve">
<value>8</value>
<value>10</value>
</data>
<data name="cbUseCustomScreenshotsPath.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -1525,7 +1573,7 @@
<value>tpPaths</value>
</data>
<data name="&gt;&gt;cbUseCustomScreenshotsPath.ZOrder" xml:space="preserve">
<value>9</value>
<value>11</value>
</data>
<data name="lblSaveImageSubFolderPattern.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -1555,7 +1603,7 @@
<value>tpPaths</value>
</data>
<data name="&gt;&gt;lblSaveImageSubFolderPattern.ZOrder" xml:space="preserve">
<value>10</value>
<value>12</value>
</data>
<data name="lblSaveImageSubFolderPatternPreview.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -1585,7 +1633,7 @@
<value>tpPaths</value>
</data>
<data name="&gt;&gt;lblSaveImageSubFolderPatternPreview.ZOrder" xml:space="preserve">
<value>11</value>
<value>13</value>
</data>
<data name="txtSaveImageSubFolderPattern.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 160</value>
@ -1606,7 +1654,7 @@
<value>tpPaths</value>
</data>
<data name="&gt;&gt;txtSaveImageSubFolderPattern.ZOrder" xml:space="preserve">
<value>12</value>
<value>14</value>
</data>
<data name="tpPaths.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>

View file

@ -189,7 +189,7 @@ private static void StartRecording(ScreenRecordOutput outputType, TaskSettings t
{
extension = taskSettings.CaptureSettings.FFmpegOptions.Extension;
}
string screenshotsFolder = TaskHelpers.GetScreenshotsFolder(taskSettings);
string screenshotsFolder = TaskHelpers.GetScreenshotsFolder(taskSettings, metadata);
string fileName = TaskHelpers.GetFilename(taskSettings, extension, metadata);
path = TaskHelpers.HandleExistsFile(screenshotsFolder, fileName, taskSettings);
@ -321,7 +321,7 @@ private static void ScreenRecorder_EncodingProgressChanged(int progress)
private static string ProcessTwoPassEncoding(string input, TaskMetadata metadata, TaskSettings taskSettings, bool deleteInputFile = true)
{
string screenshotsFolder = TaskHelpers.GetScreenshotsFolder(taskSettings);
string screenshotsFolder = TaskHelpers.GetScreenshotsFolder(taskSettings, metadata);
string fileName = TaskHelpers.GetFilename(taskSettings, taskSettings.CaptureSettings.FFmpegOptions.Extension, metadata);
string output = Path.Combine(screenshotsFolder, fileName);

View file

@ -416,7 +416,7 @@ public static string GetFilename(TaskSettings taskSettings, string extension = n
nameParser.ProcessName = metadata.ProcessName;
}
if (!string.IsNullOrEmpty(nameParser.WindowText))
if (!string.IsNullOrEmpty(taskSettings.UploadSettings.NameFormatPatternActiveWindow) && !string.IsNullOrEmpty(nameParser.WindowText))
{
filename = nameParser.Parse(taskSettings.UploadSettings.NameFormatPatternActiveWindow);
}
@ -459,8 +459,19 @@ public static string GetScreenshotsFolder(TaskSettings taskSettings = null, Task
}
else
{
string subFolderPattern = nameParser.Parse(Program.Settings.SaveImageSubFolderPattern);
screenshotsFolder = Path.Combine(Program.ScreenshotsParentFolder, subFolderPattern);
string subFolderPattern;
if (!string.IsNullOrEmpty(Program.Settings.SaveImageSubFolderPatternWindow) && !string.IsNullOrEmpty(nameParser.WindowText))
{
subFolderPattern = Program.Settings.SaveImageSubFolderPatternWindow;
}
else
{
subFolderPattern = Program.Settings.SaveImageSubFolderPattern;
}
string subFolderPath = nameParser.Parse(subFolderPattern);
screenshotsFolder = Path.Combine(Program.ScreenshotsParentFolder, subFolderPath);
}
return Helpers.GetAbsolutePath(screenshotsFolder);

View file

@ -632,7 +632,7 @@ private bool DoAfterCaptureJobs()
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveImageToFile))
{
string screenshotsFolder = TaskHelpers.GetScreenshotsFolder(Info.TaskSettings);
string screenshotsFolder = TaskHelpers.GetScreenshotsFolder(Info.TaskSettings, Info.Metadata);
string filePath = TaskHelpers.HandleExistsFile(screenshotsFolder, Info.FileName, Info.TaskSettings);
if (!string.IsNullOrEmpty(filePath))
@ -655,7 +655,7 @@ private bool DoAfterCaptureJobs()
}
else
{
initialDirectory = TaskHelpers.GetScreenshotsFolder(Info.TaskSettings);
initialDirectory = TaskHelpers.GetScreenshotsFolder(Info.TaskSettings, Info.Metadata);
}
bool imageSaved;
@ -699,7 +699,7 @@ private bool DoAfterCaptureJobs()
else
{
thumbnailFilename = Info.FileName;
thumbnailFolder = TaskHelpers.GetScreenshotsFolder(Info.TaskSettings);
thumbnailFolder = TaskHelpers.GetScreenshotsFolder(Info.TaskSettings, Info.Metadata);
}
Info.ThumbnailFilePath = TaskHelpers.CreateThumbnail(Image, thumbnailFolder, thumbnailFilename, Info.TaskSettings);