From c95e4571af35aa633b54f55cfe7bf23b26266bb9 Mon Sep 17 00:00:00 2001
From: sr55 <sr55.hb@outlook.com>
Date: Tue, 20 Dec 2016 21:55:34 +0000
Subject: [PATCH] WinGui: Improve many tooltips for 1.0 #426

---
 .../Controls/SourceSelection.xaml             |   5 +-
 .../Properties/ResourcesTooltips.Designer.cs  | 256 ++++++++++++++++--
 .../Properties/ResourcesTooltips.resx         | 148 ++++++++--
 win/CS/HandBrakeWPF/Views/FiltersView.xaml    |  24 +-
 win/CS/HandBrakeWPF/Views/MainView.xaml       |  17 +-
 .../Views/PictureSettingsView.xaml            |   2 +-
 6 files changed, 392 insertions(+), 60 deletions(-)

diff --git a/win/CS/HandBrakeWPF/Controls/SourceSelection.xaml b/win/CS/HandBrakeWPF/Controls/SourceSelection.xaml
index b719957e6..3722724e0 100644
--- a/win/CS/HandBrakeWPF/Controls/SourceSelection.xaml
+++ b/win/CS/HandBrakeWPF/Controls/SourceSelection.xaml
@@ -3,7 +3,8 @@
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:cal="http://www.caliburnproject.org"
         xmlns:controls="clr-namespace:HandBrakeWPF.Controls"
-        xmlns:Properties="clr-namespace:HandBrakeWPF.Properties" x:Name="sourcePanel">
+        xmlns:Properties="clr-namespace:HandBrakeWPF.Properties" x:Name="sourcePanel"
+       >
 
     <Grid Height="{Binding ElementName=sourcePanel, Path=ActualHeight}">
 
@@ -39,7 +40,7 @@
                 <StackPanel Orientation="Horizontal">
                     <TextBlock Text="{x:Static Properties:ResourcesUI.SourceSelection_ChooseSpecificTitle}" />
 
-                    <controls:NumberBox Width="60" Height="24" Margin="10,0,0,0"
+                    <controls:NumberBox Width="60" Height="24" Margin="10,0,0,0" ToolTip="{x:Static Properties:ResourcesTooltips.SourceSelection_TitleSpecific}"
                                 Minimum="0" Maximum="5000" Number="{Binding TitleSpecificScan, Mode=TwoWay}" />
                 </StackPanel>
 
diff --git a/win/CS/HandBrakeWPF/Properties/ResourcesTooltips.Designer.cs b/win/CS/HandBrakeWPF/Properties/ResourcesTooltips.Designer.cs
index 21211eaf2..ca1faa57d 100644
--- a/win/CS/HandBrakeWPF/Properties/ResourcesTooltips.Designer.cs
+++ b/win/CS/HandBrakeWPF/Properties/ResourcesTooltips.Designer.cs
@@ -61,8 +61,22 @@ namespace HandBrakeWPF.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to The deblocking filter removes a common type of compression artifact.
-        ///If your source exhibits &apos;blockiness&apos;, this filter may help clean it up..
+        ///   Looks up a localized string similar to Custom Denoise parameters.
+        /// 
+        ///NLMeans syntax: y-strength=y:y-origin-tune=y:y-patch-size=y:y-range=y:y-frame-count=y:y-prefilter=y:cb-strength=c:cb-origin-tune=c:cb-patch-size=c:cb-range=c:cb-frame-count=c:cb-prefilter=c:cr-strength=c:cr-origin-tune=c:cr-patch-size=c:cr-range=c:cr-frame-count=c:cr-prefilter=c
+        ///
+        ///NLMeans default: y-strength=6:y-origin-tune=1:y-patch-size=7:y-range=3:y-frame-count=2:y-prefilter=0:cb-strength=6:cb-origin-tune=1:cb-patch-size=7:cb-range=3:cb-frame-count=2:cb-prefilter=0
+        ///
+        ///HQDN [rest of string was truncated]&quot;;.
+        /// </summary>
+        public static string FilterView_CustomDenoiseParams {
+            get {
+                return ResourceManager.GetString("FilterView_CustomDenoiseParams", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Deblock reduces blocky artifacts caused by low quality video compression..
         /// </summary>
         public static string FilterView_Deblock {
             get {
@@ -86,9 +100,59 @@ namespace HandBrakeWPF.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Denoise filtering reduces or removes the appearance of noise and grain.
-        ///Film grain and other types of high frequency noise are difficult to compress.
-        ///Using this filter on such sources can result in smaller file sizes..
+        ///   Looks up a localized string similar to Deinterlace removes comb artifacts from the picture.
+        ///
+        ///Yadif is a popular and fast deinterlacer.
+        ///
+        ///Decomb switches between multiple interpolation algorithms for speed and quality..
+        /// </summary>
+        public static string FilterView_Deinterlace {
+            get {
+                return ResourceManager.GetString("FilterView_Deinterlace", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Custom Deinterlace parameters.
+        /// 
+        /// Yadif syntax: mode=m:parity=p
+        /// 
+        /// Yadif default: mode=3
+        /// 
+        /// Decomb syntax: mode=m:magnitude-thresh=m:variance-thresh=v:laplacian-thresh=l:dilation-thresh=d:erosion-thresh=e:noise-thresh=n:search-distance=s:postproc=p:parity=p
+        /// 
+        /// Decomb default: mode=7.
+        /// </summary>
+        public static string FilterView_DeinterlaceCustom {
+            get {
+                return ResourceManager.GetString("FilterView_DeinterlaceCustom", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Deinterlace filter preset.
+        ///
+        ///Default is well balanced for speed and quality.
+        ///
+        ///Skip Spatial Check lets Yadif skip correcting certain avoidable artifacts for a slight speed boost.
+        ///
+        ///EEDI2 uses a slower, higher quality interpolation algorithm for Decomb. Useful for the most difficult sources.
+        ///
+        ///Bob attempts to better preserve motion for a slight penalty to perceived resolution..
+        /// </summary>
+        public static string FilterView_DeinterlacePreset {
+            get {
+                return ResourceManager.GetString("FilterView_DeinterlacePreset", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Denoise reduces or removes the appearance of noise and grain. This can improve compression efficiency and create higher quality video at smaller file sizes. 
+        ///Overly strong Denoise settings may damage picture quality by discarding detail.
+        ///         
+        ///NLMeans is a high quality denoise filter with a cost to speed. Use where quality is more important than speed.
+        ///         
+        ///HQDN3D is an adaptive low-pass filter, faster than NLMeans but less effective at preserving fine detail..
         /// </summary>
         public static string FilterView_Denoise {
             get {
@@ -96,6 +160,34 @@ namespace HandBrakeWPF.Properties {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Denoise filter preset. Sets the strength of the filter..
+        /// </summary>
+        public static string FilterView_DenoisePreset {
+            get {
+                return ResourceManager.GetString("FilterView_DenoisePreset", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Denoise tune. Further adjusts the Denoise preset to optimize settings for specific scenarios.
+        /// 
+        ///- None uses the default preset settings.
+        /// 
+        ///- Film refines settings for use with most live action content.
+        /// 
+        ///- Grain only processes color channels. Useful for preserving the film-like look of luminance grain while reducing or removing color noise.
+        ///
+        ///- High Motion reduces color smearing in high motion scenes by avoiding temporal processing for color channels. Useful for sports and action videos.
+        ///
+        ///- Animati [rest of string was truncated]&quot;;.
+        /// </summary>
+        public static string FilterView_DenoiseTune {
+            get {
+                return ResourceManager.GetString("FilterView_DenoiseTune", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to This filter removes &apos;combing&apos; artifacts that are the result of telecining.
         ///
@@ -108,7 +200,16 @@ namespace HandBrakeWPF.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to If enabled, filter colour components out of video..
+        ///   Looks up a localized string similar to Flips (mirrors) the picture on the horizontal axis..
+        /// </summary>
+        public static string FilterView_Flip {
+            get {
+                return ResourceManager.GetString("FilterView_Flip", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Grayscale removes the color component of the video. Often referred to as Black &amp;amp; White video..
         /// </summary>
         public static string FilterView_Grayscale {
             get {
@@ -117,7 +218,65 @@ namespace HandBrakeWPF.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to This is the location and filename where your encoded file will be saved..
+        ///   Looks up a localized string similar to Interlace Detection, when enabled, allows the Deinterlace filter to only process interlaced video frames..
+        /// </summary>
+        public static string FilterView_InterlaceDetection {
+            get {
+                return ResourceManager.GetString("FilterView_InterlaceDetection", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Custom Interlace Detection parameters.
+        /// 
+        /// Syntax: mode=m:spatial-metric=s:motion-thresh=m:spatial-thresh=s:filter-mode=f:block-thresh=b:block-width=b:block-height=b:disable=d
+        /// 
+        /// Default: mode=3:spatial-metric=2:motion-thresh=1:spatial-thresh=1:filter-mode=2:block-thresh=40:block-width=16:block-height=16.
+        /// </summary>
+        public static string FilterView_InterlaceDetectionCustom {
+            get {
+                return ResourceManager.GetString("FilterView_InterlaceDetectionCustom", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Rotate the picture clockwise in 90 degree increments..
+        /// </summary>
+        public static string FilterView_Rotate {
+            get {
+                return ResourceManager.GetString("FilterView_Rotate", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Add a new preset..
+        /// </summary>
+        public static string MainView_AddPreset {
+            get {
+                return ResourceManager.GetString("MainView_AddPreset", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Video angle to encode. Only applicable to multi-angle DVD and Blu-ray..
+        /// </summary>
+        public static string MainView_Angle {
+            get {
+                return ResourceManager.GetString("MainView_Angle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Browse to select a new destination path and file name for your encode..
+        /// </summary>
+        public static string MainView_Browse {
+            get {
+                return ResourceManager.GetString("MainView_Browse", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Destination path, including directory and file name. This is where your new video will be created, and what it will be named..
         /// </summary>
         public static string MainView_Destination {
             get {
@@ -126,7 +285,16 @@ namespace HandBrakeWPF.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Add iPod Atom needed by some older iPods..
+        ///   Looks up a localized string similar to Duration of the selected source range in Hours:Minutes:Seconds.
+        /// </summary>
+        public static string MainView_Duration {
+            get {
+                return ResourceManager.GetString("MainView_Duration", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Add a special MP4 marker to allow playback on vintage iPod 5th Generation devices circa 2006. Other settings may affect compatibility..
         /// </summary>
         public static string MainView_IpodAtom {
             get {
@@ -135,7 +303,7 @@ namespace HandBrakeWPF.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Format to mux encoded tracks to..
+        ///   Looks up a localized string similar to Container format. Video, audio, and other tracks are combined into a single file of this type. Affects compatibility..
         /// </summary>
         public static string MainView_Mux {
             get {
@@ -144,8 +312,7 @@ namespace HandBrakeWPF.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Optimise the layout of the MP4 file for progressive download.
-        ///This allows a player to initiate playback before downloading the entire file..
+        ///   Looks up a localized string similar to Optimize MP4 for progressive download. After encoding, data is reorganized and rewritten to allow immediate playback over a network, without needing to download the entire file..
         /// </summary>
         public static string MainView_Optimise {
             get {
@@ -154,7 +321,27 @@ namespace HandBrakeWPF.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Choose a start and end point of the source title to encode. This can be in chapters, seconds or frames..
+        ///   Looks up a localized string similar to Additional Preset Options..
+        /// </summary>
+        public static string MainView_PresetAdditionalOptions {
+            get {
+                return ResourceManager.GetString("MainView_PresetAdditionalOptions", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Presets are groups of encode settings tailored for specific scenarios. Select the one closest matching your intent.
+        /// 
+        /// Overrides all encode settings. Settings may be further adjusted after selecting a preset..
+        /// </summary>
+        public static string MainView_Presets {
+            get {
+                return ResourceManager.GetString("MainView_Presets", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Source range selection. By default, all chapters are selected and the entire source is encoded..
         /// </summary>
         public static string MainView_Range {
             get {
@@ -163,8 +350,17 @@ namespace HandBrakeWPF.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Set the title to encode.
-        ///By default, HandBrake will try and select the main title, or the longest if one isn&apos;t found..
+        ///   Looks up a localized string similar to Remove the selected preset..
+        /// </summary>
+        public static string MainView_RemovePreset {
+            get {
+                return ResourceManager.GetString("MainView_RemovePreset", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Title, or video clip, to encode.
+        ///Blu-ray and DVD sources often have multiple titles, the longest of which is typically the main feature.
         /// </summary>
         public static string MainView_Title {
             get {
@@ -182,11 +378,15 @@ namespace HandBrakeWPF.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to None          - Force pixel aspect ratio to 1:1.
-        ///Loose         - Use a pixel aspect ratio that is as close as possible to the source video pixel
-        ///                      aspect ratio while preserving the original display aspect ratio
-        ///Automatic - Use a pixel aspect ratio that maximizes storage resolution while preserving the 
-        ///                      original display aspect ratio..
+        ///   Looks up a localized string similar to Anamorphic allows arbitrary storage dimensions while preserving the original aspect during playback.
+        ///
+        ///Off disables anamorphic. Video storage dimensions and display dimensions will be identical. Only useful for compatibility with certain legacy devices.
+        ///
+        ///Auto maximizes storage resolution while preserving the original display aspect ratio. Recommended.
+        ///
+        ///Loose is similar to Auto, but attempts to preserve the storage aspect ratio. This can result in a slight storage resolution loss compared to Auto.
+        ///
+        ///Cu [rest of string was truncated]&quot;;.
         /// </summary>
         public static string PictureSettingsView_Anamorphic {
             get {
@@ -249,6 +449,15 @@ namespace HandBrakeWPF.Properties {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Keep Aspect Ratio maintains the original display aspect of the source. Disabling this may result in a stretched or squeezed picture..
+        /// </summary>
+        public static string PictureSettingsView_KeepAR {
+            get {
+                return ResourceManager.GetString("PictureSettingsView_KeepAR", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Manually crop the video..
         /// </summary>
@@ -318,6 +527,15 @@ namespace HandBrakeWPF.Properties {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Scan only the specified title instead of all titles..
+        /// </summary>
+        public static string SourceSelection_TitleSpecific {
+            get {
+                return ResourceManager.GetString("SourceSelection_TitleSpecific", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Use advanced options Tab for x264 settings..
         /// </summary>
diff --git a/win/CS/HandBrakeWPF/Properties/ResourcesTooltips.resx b/win/CS/HandBrakeWPF/Properties/ResourcesTooltips.resx
index 717097ab7..fe02d4fa0 100644
--- a/win/CS/HandBrakeWPF/Properties/ResourcesTooltips.resx
+++ b/win/CS/HandBrakeWPF/Properties/ResourcesTooltips.resx
@@ -118,8 +118,7 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <data name="FilterView_Deblock" xml:space="preserve">
-    <value>The deblocking filter removes a common type of compression artifact.
-If your source exhibits 'blockiness', this filter may help clean it up.</value>
+    <value>Deblock reduces blocky artifacts caused by low quality video compression.</value>
   </data>
   <data name="FilterView_DecombDeinterlace" xml:space="preserve">
     <value>Choose decomb or deinterlace filter options.
@@ -131,9 +130,12 @@ The classic deinterlace filter is applied to all frames.
 Frames that are not interlaced will suffer some quality degradation.</value>
   </data>
   <data name="FilterView_Denoise" xml:space="preserve">
-    <value>Denoise filtering reduces or removes the appearance of noise and grain.
-Film grain and other types of high frequency noise are difficult to compress.
-Using this filter on such sources can result in smaller file sizes.</value>
+    <value>Denoise reduces or removes the appearance of noise and grain. This can improve compression efficiency and create higher quality video at smaller file sizes. 
+Overly strong Denoise settings may damage picture quality by discarding detail.
+         
+NLMeans is a high quality denoise filter with a cost to speed. Use where quality is more important than speed.
+         
+HQDN3D is an adaptive low-pass filter, faster than NLMeans but less effective at preserving fine detail.</value>
   </data>
   <data name="FilterView_Detelecine" xml:space="preserve">
     <value>This filter removes 'combing' artifacts that are the result of telecining.
@@ -141,34 +143,37 @@ Using this filter on such sources can result in smaller file sizes.</value>
 Telecining is a process that adjusts film framerates that are 24fps to NTSC video frame rates which are 30fps.</value>
   </data>
   <data name="FilterView_Grayscale" xml:space="preserve">
-    <value>If enabled, filter colour components out of video.</value>
+    <value>Grayscale removes the color component of the video. Often referred to as Black &amp;amp; White video.</value>
   </data>
   <data name="MainView_Destination" xml:space="preserve">
-    <value>This is the location and filename where your encoded file will be saved.</value>
+    <value>Destination path, including directory and file name. This is where your new video will be created, and what it will be named.</value>
   </data>
   <data name="MainView_IpodAtom" xml:space="preserve">
-    <value>Add iPod Atom needed by some older iPods.</value>
+    <value>Add a special MP4 marker to allow playback on vintage iPod 5th Generation devices circa 2006. Other settings may affect compatibility.</value>
   </data>
   <data name="MainView_Mux" xml:space="preserve">
-    <value>Format to mux encoded tracks to.</value>
+    <value>Container format. Video, audio, and other tracks are combined into a single file of this type. Affects compatibility.</value>
   </data>
   <data name="MainView_Optimise" xml:space="preserve">
-    <value>Optimise the layout of the MP4 file for progressive download.
-This allows a player to initiate playback before downloading the entire file.</value>
+    <value>Optimize MP4 for progressive download. After encoding, data is reorganized and rewritten to allow immediate playback over a network, without needing to download the entire file.</value>
   </data>
   <data name="MainView_Range" xml:space="preserve">
-    <value>Choose a start and end point of the source title to encode. This can be in chapters, seconds or frames.</value>
+    <value>Source range selection. By default, all chapters are selected and the entire source is encoded.</value>
   </data>
   <data name="MainView_Title" xml:space="preserve">
-    <value>Set the title to encode.
-By default, HandBrake will try and select the main title, or the longest if one isn't found.</value>
+    <value>Title, or video clip, to encode.
+Blu-ray and DVD sources often have multiple titles, the longest of which is typically the main feature</value>
   </data>
   <data name="PictureSettingsView_Anamorphic" xml:space="preserve">
-    <value>None          - Force pixel aspect ratio to 1:1.
-Loose         - Use a pixel aspect ratio that is as close as possible to the source video pixel
-                      aspect ratio while preserving the original display aspect ratio
-Automatic - Use a pixel aspect ratio that maximizes storage resolution while preserving the 
-                      original display aspect ratio.</value>
+    <value>Anamorphic allows arbitrary storage dimensions while preserving the original aspect during playback.
+
+Off disables anamorphic. Video storage dimensions and display dimensions will be identical. Only useful for compatibility with certain legacy devices.
+
+Auto maximizes storage resolution while preserving the original display aspect ratio. Recommended.
+
+Loose is similar to Auto, but attempts to preserve the storage aspect ratio. This can result in a slight storage resolution loss compared to Auto.
+
+Custom allows manually setting all parameters. Useful for correcting an incorrect source display aspect and for professionals needing advanced control in post-production.</value>
   </data>
   <data name="PictureSettingsView_AutoCrop" xml:space="preserve">
     <value>Automatically crop black borders around edges of the video.</value>
@@ -308,4 +313,109 @@ VFR is not compatible with some players.</value>
   <data name="MainView_WhenDone" xml:space="preserve">
     <value>When HandBrake has finished the current queue or encode it will perform this action.</value>
   </data>
+  <data name="MainView_Browse" xml:space="preserve">
+    <value>Browse to select a new destination path and file name for your encode.</value>
+  </data>
+  <data name="MainView_Angle" xml:space="preserve">
+    <value>Video angle to encode. Only applicable to multi-angle DVD and Blu-ray.</value>
+  </data>
+  <data name="MainView_AddPreset" xml:space="preserve">
+    <value>Add a new preset.</value>
+  </data>
+  <data name="MainView_PresetAdditionalOptions" xml:space="preserve">
+    <value>Additional Preset Options.</value>
+  </data>
+  <data name="MainView_Presets" xml:space="preserve">
+    <value>Presets are groups of encode settings tailored for specific scenarios. Select the one closest matching your intent.
+ 
+ Overrides all encode settings. Settings may be further adjusted after selecting a preset.</value>
+  </data>
+  <data name="MainView_RemovePreset" xml:space="preserve">
+    <value>Remove the selected preset.</value>
+  </data>
+  <data name="SourceSelection_TitleSpecific" xml:space="preserve">
+    <value>Scan only the specified title instead of all titles.</value>
+  </data>
+  <data name="FilterView_CustomDenoiseParams" xml:space="preserve">
+    <value>Custom Denoise parameters.
+ 
+NLMeans syntax: y-strength=y:y-origin-tune=y:y-patch-size=y:y-range=y:y-frame-count=y:y-prefilter=y:cb-strength=c:cb-origin-tune=c:cb-patch-size=c:cb-range=c:cb-frame-count=c:cb-prefilter=c:cr-strength=c:cr-origin-tune=c:cr-patch-size=c:cr-range=c:cr-frame-count=c:cr-prefilter=c
+
+NLMeans default: y-strength=6:y-origin-tune=1:y-patch-size=7:y-range=3:y-frame-count=2:y-prefilter=0:cb-strength=6:cb-origin-tune=1:cb-patch-size=7:cb-range=3:cb-frame-count=2:cb-prefilter=0
+
+HQDN3D syntax: y-spatial=y:cb-spatial=c:cr-spatial=c:y-temporal=y:cb-temporal=c:cr-temporal=c
+
+HQDN3D default: y-spatial=3:cb-spatial=2:cr-spatial=2:y-temporal=2:cb-temporal=3:cr-temporal=3</value>
+  </data>
+  <data name="FilterView_DenoisePreset" xml:space="preserve">
+    <value>Denoise filter preset. Sets the strength of the filter.</value>
+  </data>
+  <data name="FilterView_DenoiseTune" xml:space="preserve">
+    <value>Denoise tune. Further adjusts the Denoise preset to optimize settings for specific scenarios.
+ 
+- None uses the default preset settings.
+ 
+- Film refines settings for use with most live action content.
+ 
+- Grain only processes color channels. Useful for preserving the film-like look of luminance grain while reducing or removing color noise.
+
+- High Motion reduces color smearing in high motion scenes by avoiding temporal processing for color channels. Useful for sports and action videos.
+
+- Animation is useful for cel animation such as anime and cartoons.
+
+- Tape is useful for low-detail analog tape sources such as VHS, where Film does not produce a desirable result.
+
+- Sprite is useful for 1-/4-/8-/16-bit 2-dimensional games. Sprite is not designed for high definition video.</value>
+  </data>
+  <data name="FilterView_Deinterlace" xml:space="preserve">
+    <value>Deinterlace removes comb artifacts from the picture.
+
+Yadif is a popular and fast deinterlacer.
+
+Decomb switches between multiple interpolation algorithms for speed and quality.</value>
+  </data>
+  <data name="FilterView_DeinterlaceCustom" xml:space="preserve">
+    <value>Custom Deinterlace parameters.
+ 
+ Yadif syntax: mode=m:parity=p
+ 
+ Yadif default: mode=3
+ 
+ Decomb syntax: mode=m:magnitude-thresh=m:variance-thresh=v:laplacian-thresh=l:dilation-thresh=d:erosion-thresh=e:noise-thresh=n:search-distance=s:postproc=p:parity=p
+ 
+ Decomb default: mode=7</value>
+  </data>
+  <data name="FilterView_DeinterlacePreset" xml:space="preserve">
+    <value>Deinterlace filter preset.
+
+Default is well balanced for speed and quality.
+
+Skip Spatial Check lets Yadif skip correcting certain avoidable artifacts for a slight speed boost.
+
+EEDI2 uses a slower, higher quality interpolation algorithm for Decomb. Useful for the most difficult sources.
+
+Bob attempts to better preserve motion for a slight penalty to perceived resolution.</value>
+  </data>
+  <data name="FilterView_Flip" xml:space="preserve">
+    <value>Flips (mirrors) the picture on the horizontal axis.</value>
+  </data>
+  <data name="FilterView_InterlaceDetection" xml:space="preserve">
+    <value>Interlace Detection, when enabled, allows the Deinterlace filter to only process interlaced video frames.</value>
+  </data>
+  <data name="FilterView_InterlaceDetectionCustom" xml:space="preserve">
+    <value>Custom Interlace Detection parameters.
+ 
+ Syntax: mode=m:spatial-metric=s:motion-thresh=m:spatial-thresh=s:filter-mode=f:block-thresh=b:block-width=b:block-height=b:disable=d
+ 
+ Default: mode=3:spatial-metric=2:motion-thresh=1:spatial-thresh=1:filter-mode=2:block-thresh=40:block-width=16:block-height=16</value>
+  </data>
+  <data name="FilterView_Rotate" xml:space="preserve">
+    <value>Rotate the picture clockwise in 90 degree increments.</value>
+  </data>
+  <data name="MainView_Duration" xml:space="preserve">
+    <value>Duration of the selected source range in Hours:Minutes:Seconds</value>
+  </data>
+  <data name="PictureSettingsView_KeepAR" xml:space="preserve">
+    <value>Keep Aspect Ratio maintains the original display aspect of the source. Disabling this may result in a stretched or squeezed picture.</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/win/CS/HandBrakeWPF/Views/FiltersView.xaml b/win/CS/HandBrakeWPF/Views/FiltersView.xaml
index d40567fcc..14ce4b75d 100644
--- a/win/CS/HandBrakeWPF/Views/FiltersView.xaml
+++ b/win/CS/HandBrakeWPF/Views/FiltersView.xaml
@@ -59,7 +59,7 @@
                 <StackPanel Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" Margin="0,0,0,10">
 
                     <ComboBox Width="120" ItemsSource="{Binding DeinterlaceFilterOptions, Converter={StaticResource boolComboConverter}}" HorizontalAlignment="Left"
-                          SelectedItem="{Binding SelectedDeinterlaceFilter, Converter={StaticResource boolComboConverter}}"  />
+                          SelectedItem="{Binding SelectedDeinterlaceFilter, Converter={StaticResource boolComboConverter}}" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_Deinterlace}"  />
                     
                 </StackPanel>
 
@@ -86,26 +86,26 @@
 
                         <ComboBox Width="120" ItemsSource="{Binding DeInterlaceOptions, Converter={StaticResource boolComboConverter}}"  HorizontalAlignment="Left" VerticalAlignment="Center"
                                   SelectedItem="{Binding SelectedDeInterlace, Converter={StaticResource boolComboConverter}}"
-                                  Visibility="{Binding IsDeinterlaceMode, Converter={StaticResource boolToVisConverter}}"  />
+                                  Visibility="{Binding IsDeinterlaceMode, Converter={StaticResource boolToVisConverter}}" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_DeinterlacePreset}" />
                     </StackPanel>
 
                     <TextBlock Text="Custom:" VerticalAlignment="Center" Margin="0,0,5,0" Grid.Column="0" Grid.Row="1"  Visibility="{Binding ShowDeinterlaceDecombCustom, Converter={StaticResource boolToVisConverter}}" />
                     <StackPanel Grid.Row="1" Grid.Column="1" Orientation="Horizontal">
                         <TextBox Width="120" Text="{Binding CustomDecomb, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Left"
-                             Visibility="{Binding ShowDecombCustom, Converter={StaticResource boolToVisConverter}}" Margin="0,5,0,0" MinHeight="22" />
+                             Visibility="{Binding ShowDecombCustom, Converter={StaticResource boolToVisConverter}}" Margin="0,5,0,0" MinHeight="22" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_DeinterlaceCustom}" />
 
                         <TextBox Width="120" Text="{Binding CustomDeinterlace, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Left"
-                             Visibility="{Binding ShowDeinterlaceCustom, Converter={StaticResource boolToVisConverter}}" Margin="0,5,0,0" MinHeight="22" />
+                             Visibility="{Binding ShowDeinterlaceCustom, Converter={StaticResource boolToVisConverter}}" Margin="0,5,0,0" MinHeight="22" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_DeinterlaceCustom}" />
                     </StackPanel>
 
                     <TextBlock Text="Interlace Detection:" VerticalAlignment="Center" Margin="0,0,5,0" Grid.Column="3" Grid.Row="0"  Visibility="{Binding IsDeinterlaceDecomb, Converter={StaticResource boolToVisConverter}}"  />
                     <TextBlock Text="Custom:" VerticalAlignment="Center" Margin="0,0,5,0" Grid.Column="3" Grid.Row="1"  Visibility="{Binding ShowCombDetectCustom, Converter={StaticResource boolToVisConverter}}" />
 
                     <ComboBox Width="120" Grid.Row="0" Grid.Column="4" ItemsSource="{Binding CombDetectPresets, Converter={StaticResource boolComboConverter}}" HorizontalAlignment="Left" VerticalAlignment="Center"
-                              SelectedItem="{Binding SelectedCombDetectPreset, Converter={StaticResource boolComboConverter}}"
+                              SelectedItem="{Binding SelectedCombDetectPreset, Converter={StaticResource boolComboConverter}}" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_InterlaceDetection}"
                               Visibility="{Binding IsDeinterlaceDecomb, Converter={StaticResource boolToVisConverter}}"/>
                     <TextBox Width="120" Grid.Row="1" Grid.Column="4" Text="{Binding CustomCombDetect, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Left"
-                             Visibility="{Binding ShowCombDetectCustom, Converter={StaticResource boolToVisConverter}}" Margin="0,5,0,0" MinHeight="22"  />
+                             Visibility="{Binding ShowCombDetectCustom, Converter={StaticResource boolToVisConverter}}" Margin="0,5,0,0" MinHeight="22" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_InterlaceDetectionCustom}"  />
                 </Grid>
 
               
@@ -120,7 +120,7 @@
                 <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Grid.Row="3" Grid.Column="2" Margin="0,0,0,10" 
                             Visibility="{Binding ShowDenoiseOptions, Converter={StaticResource boolToVisConverter}}">
                     <TextBlock Text="{x:Static Properties:ResourcesUI.FiltersView_Preset}" Margin="0,0,5,0" />
-                    <ComboBox SelectedItem="{Binding SelectedDenoisePreset}" 
+                    <ComboBox SelectedItem="{Binding SelectedDenoisePreset}" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_DenoisePreset}"
                               MinWidth="100"  HorizontalAlignment="Center" VerticalAlignment="Center">
                         <ComboBox.ItemsSource>
                             <MultiBinding Converter="{StaticResource DenoisePresetConverter}">
@@ -132,13 +132,14 @@
 
                     <StackPanel Orientation="Horizontal" Visibility="{Binding ShowDenoiseTune, Converter={StaticResource boolToVisConverter}}">
                         <TextBlock Text="{x:Static Properties:ResourcesUI.FiltersView_Tune}" Margin="5,0,5,0" />
-                        <ComboBox ItemsSource="{Binding DenoiseTunes}" SelectedItem="{Binding SelectedDenoiseTune}" MinWidth="100"
+                        <ComboBox ItemsSource="{Binding DenoiseTunes}" SelectedItem="{Binding SelectedDenoiseTune}" MinWidth="100" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_DenoiseTune}"
                           Visibility="{Binding ShowDenoiseTune, Converter={StaticResource boolToVisConverter}}" VerticalAlignment="Center" />
                     </StackPanel>
 
                     <StackPanel Orientation="Horizontal" Visibility="{Binding ShowDenoiseCustom, Converter={StaticResource boolToVisConverter}}">
                         <TextBlock Text="{x:Static Properties:ResourcesUI.FiltersView_Custom}" Margin="5,0,5,0" />
-                        <TextBox Width="120" Margin="0" Text="{Binding CustomDenoise, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" MinHeight="22" />
+                        <TextBox Width="120" Margin="0" Text="{Binding CustomDenoise, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" MinHeight="22"
+                                 ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_CustomDenoiseParams}" />
                     </StackPanel>
 
                 </StackPanel>
@@ -154,10 +155,11 @@
                 <!-- Rotation -->
                 <TextBlock Text="{x:Static Properties:ResourcesUI.FiltersView_Rotate}" Grid.Row="6" Grid.Column="0" Margin="0,0,0,0"/>
                 <ComboBox Width="120" ItemsSource="{Binding RotationOptions}" Grid.Row="6" Grid.Column="1"
-                              SelectedItem="{Binding SelectedRotation}"
+                              SelectedItem="{Binding SelectedRotation}" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_Rotate}"
                               HorizontalAlignment="Left" VerticalAlignment="Center" />
 
-                <CheckBox Content="{x:Static Properties:ResourcesUI.FiltersView_FlipVideo}" Margin="5,0,0,0" VerticalAlignment="Center" Grid.Row="6" Grid.Column="2" IsChecked="{Binding FlipVideo, UpdateSourceTrigger=PropertyChanged}" />
+                <CheckBox Content="{x:Static Properties:ResourcesUI.FiltersView_FlipVideo}" Margin="5,0,0,0" VerticalAlignment="Center" Grid.Row="6" Grid.Column="2" IsChecked="{Binding FlipVideo, UpdateSourceTrigger=PropertyChanged}"
+                          ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_Flip}"/>
             </Grid>
 
         </StackPanel>
diff --git a/win/CS/HandBrakeWPF/Views/MainView.xaml b/win/CS/HandBrakeWPF/Views/MainView.xaml
index c08ece4d6..cac30d9e5 100644
--- a/win/CS/HandBrakeWPF/Views/MainView.xaml
+++ b/win/CS/HandBrakeWPF/Views/MainView.xaml
@@ -131,7 +131,7 @@
                 </MenuItem>
 
                 <MenuItem Header="_Help">
-                    <MenuItem Header="_HandBrake User Guide (HTTP)" cal:Message.Attach="[Event Click] = [Action LaunchHelp]" InputGestureText="F1">
+                    <MenuItem Header="_HandBrake Documentation (HTTP)" cal:Message.Attach="[Event Click] = [Action LaunchHelp]" InputGestureText="F1">
                         <MenuItem.Icon>
                             <Image Width="16" Height="16"  Source="Images/information.png" />
                         </MenuItem.Icon>
@@ -333,7 +333,7 @@
                                   Margin="8,0,0,0"
                                   ItemsSource="{Binding Angles}"
                                   SelectedItem="{Binding SelectedAngle}"
-                                  />
+                                  ToolTip="{x:Static Properties:ResourcesTooltips.MainView_Angle}" /> 
                         <ComboBox Name="PointToPointMode"
                                   MinWidth="80"
                                   Margin="8,0,0,0"
@@ -373,8 +373,8 @@
                                                        ConverterParameter=false}"
                                                 />
 
-                        <Label Margin="4,0,0,0" Content="{x:Static Properties:ResourcesUI.MainView_Duration}" />
-                        <Label Margin="4,0,0,0" Content="{Binding Duration}" />
+                        <Label Margin="4,0,0,0" Content="{x:Static Properties:ResourcesUI.MainView_Duration}" ToolTip="{x:Static Properties:ResourcesTooltips.MainView_Duration}" />
+                        <Label Margin="4,0,0,0" Content="{Binding Duration}" ToolTip="{x:Static Properties:ResourcesTooltips.MainView_Duration}" />
 
                     </StackPanel>
                 </StackPanel>
@@ -410,6 +410,7 @@
                             Grid.Column="2"
                             Margin="8,0,0,0" FontWeight="Bold"
                             Content="Browse"
+                            ToolTip="{x:Static Properties:ResourcesTooltips.MainView_Browse}"
                             cal:Message.Attach="[Event Click] = [Action BrowseDestination]"
                             />
                 </Grid>
@@ -513,7 +514,7 @@
                         <RowDefinition Height="Auto" />
                     </Grid.RowDefinitions>
 
-                    <ListBox HorizontalAlignment="Stretch" AutomationProperties.Name="Presets List"
+                    <ListBox HorizontalAlignment="Stretch" AutomationProperties.Name="Presets List" ToolTip="{x:Static Properties:ResourcesTooltips.MainView_Presets}"
                              VerticalAlignment="Stretch" ItemsSource="{Binding Source={StaticResource presetsCvs}}"
                              SelectedItem="{Binding SelectedPreset, Mode=TwoWay}" BorderThickness="0,0,0,1"
                              BorderBrush="LightGray"
@@ -611,7 +612,7 @@
                         </ToolBar.Resources>
 
                         <ToolBarOverflowPanel>
-                            <Button cal:Message.Attach="[Event Click] = [Action PresetAdd]" AutomationProperties.Name="Add Preset">
+                            <Button cal:Message.Attach="[Event Click] = [Action PresetAdd]" AutomationProperties.Name="Add Preset" ToolTip="{x:Static Properties:ResourcesTooltips.MainView_AddPreset}">
                                 <Button.Content>
                                     <StackPanel Orientation="Horizontal">
                                         <Image Width="20"
@@ -627,7 +628,7 @@
                                 </Button.Content>
                             </Button>
 
-                            <Button Background="Transparent" cal:Message.Attach="[Event Click] = [Action PresetRemove]" AutomationProperties.Name="Remove Preset">
+                            <Button Background="Transparent" cal:Message.Attach="[Event Click] = [Action PresetRemove]" AutomationProperties.Name="Remove Preset" ToolTip="{x:Static Properties:ResourcesTooltips.MainView_RemovePreset}">
                                 <Button.Content>
                                     <StackPanel Orientation="Horizontal">
                                         <Image Width="20"
@@ -644,7 +645,7 @@
                                 </Button.Content>
                             </Button>
 
-                            <Menu Background="Transparent" AutomationProperties.Name="Preset Options Dropdown" MinHeight="22">
+                            <Menu Background="Transparent" AutomationProperties.Name="Preset Options Dropdown" MinHeight="22" ToolTip="{x:Static Properties:ResourcesTooltips.MainView_PresetAdditionalOptions}">
                                 <MenuItem ToolBar.OverflowMode="Never">
                                     <MenuItem.Header>
                                         <StackPanel Orientation="Horizontal">
diff --git a/win/CS/HandBrakeWPF/Views/PictureSettingsView.xaml b/win/CS/HandBrakeWPF/Views/PictureSettingsView.xaml
index eb9d9eee6..b0ed03da9 100644
--- a/win/CS/HandBrakeWPF/Views/PictureSettingsView.xaml
+++ b/win/CS/HandBrakeWPF/Views/PictureSettingsView.xaml
@@ -49,7 +49,7 @@
                                         Modulus="{Binding SelectedModulus, Mode=OneWay}" 
                                         ToolTip="{x:Static Properties:ResourcesTooltips.PictureSettingsView_Height}" Minimum="0" Width="60"  />
                     <CheckBox Content="{x:Static Properties:ResourcesUI.PictureSettingsView_KeepAR}" IsChecked="{Binding MaintainAspectRatio}"
-                          Visibility="{Binding ShowKeepAR, Converter={StaticResource boolToVisHiddenConverter}}" 
+                          Visibility="{Binding ShowKeepAR, Converter={StaticResource boolToVisHiddenConverter}}" ToolTip="{x:Static Properties:ResourcesTooltips.PictureSettingsView_KeepAR}"
                           VerticalAlignment="Center" Margin="5,0,0,0" />
                 </StackPanel>
 
-- 
2.40.0