diff options
author | sr55 <[email protected]> | 2019-04-19 22:15:26 +0100 |
---|---|---|
committer | sr55 <[email protected]> | 2019-04-19 22:15:41 +0100 |
commit | 4f82301770f47c6601115d88c3ff5d69119ac1e2 (patch) | |
tree | b4078ff42035c70c80835e9a6ead2281357be51b | |
parent | 97dabfbc19ebf3eaeb86337cc1114ab372a6c0ec (diff) |
WinGui: Various fixes and improvements to validation handling and options in the UI.
- Fixed add to queue error handling on 2 code paths that ignored errors returned.
- AutoName will now guarantee a unique filename rather than stop after the first attempt.
- Options Pane now lists the available format and path variables that can be used in the UI (rather than the tooltip)
- Ordering of validation rules changed to be more sensible, especially when handling paths that end up same as source.
-rw-r--r-- | win/CS/HandBrakeWPF/Commands/ProcessShortcutCommand.cs | 2 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Helpers/AutoNameHelper.cs | 18 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Properties/Resources.Designer.cs | 29 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Properties/Resources.de.resx | 40 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Properties/Resources.resx | 11 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Properties/Resources.zh.resx | 40 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/ViewModels/Interfaces/IMainViewModel.cs | 1 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs | 30 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Views/MainView.xaml.cs | 2 | ||||
-rw-r--r-- | win/CS/HandBrakeWPF/Views/OptionsView.xaml | 22 |
10 files changed, 107 insertions, 88 deletions
diff --git a/win/CS/HandBrakeWPF/Commands/ProcessShortcutCommand.cs b/win/CS/HandBrakeWPF/Commands/ProcessShortcutCommand.cs index 5e014edbd..117ea1eb3 100644 --- a/win/CS/HandBrakeWPF/Commands/ProcessShortcutCommand.cs +++ b/win/CS/HandBrakeWPF/Commands/ProcessShortcutCommand.cs @@ -75,7 +75,7 @@ namespace HandBrakeWPF.Commands // Add to Queue (Ctrl+A)
if (gesture.Modifiers == ModifierKeys.Control && gesture.Key == Key.A)
{
- mainViewModel.AddToQueue();
+ mainViewModel.AddToQueueWithErrorHandling();
}
// Add all to Queue (Alt+A)
diff --git a/win/CS/HandBrakeWPF/Helpers/AutoNameHelper.cs b/win/CS/HandBrakeWPF/Helpers/AutoNameHelper.cs index fa6f71b96..b1333dcaa 100644 --- a/win/CS/HandBrakeWPF/Helpers/AutoNameHelper.cs +++ b/win/CS/HandBrakeWPF/Helpers/AutoNameHelper.cs @@ -192,11 +192,6 @@ namespace HandBrakeWPF.Helpers string requestedPath = Path.Combine(directory, savedPath);
autoNamePath = Path.Combine(requestedPath, destinationFilename);
- if (autoNamePath == task.Source)
- {
- // Append out_ to files that already exist or is the source file
- autoNamePath = Path.Combine(Path.GetDirectoryName(task.Source), "output_" + destinationFilename);
- }
}
else if (userSettingService.GetUserSetting<string>(UserSettingConstants.AutoNamePath).Contains("{source_folder_name}") && !string.IsNullOrEmpty(task.Source))
{
@@ -230,6 +225,19 @@ namespace HandBrakeWPF.Helpers // Use the path and change the file extension to match the previous destination
autoNamePath = Path.Combine(Path.GetDirectoryName(task.Destination), destinationFilename);
}
+
+ // Append out_ to files that already exist or is the source file
+ if (autoNamePath?.ToLower() == task.Source?.ToLower())
+ {
+ autoNamePath = Path.Combine(Path.GetDirectoryName(task.Source), "output_" + destinationFilename);
+
+ int counter = 1;
+ while (autoNamePath == task.Source)
+ {
+ autoNamePath = Path.Combine(Path.GetDirectoryName(task.Source), string.Format("output{0}_", counter) + destinationFilename);
+ counter = counter + 1;
+ }
+ }
}
return autoNamePath;
diff --git a/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs b/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs index 05fd34f41..062dd694a 100644 --- a/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs +++ b/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs @@ -1512,16 +1512,6 @@ namespace HandBrakeWPF.Properties { } /// <summary> - /// Looks up a localized string similar to You cannot overwrite the source file you want to convert. - ///Please choose a different filename.. - /// </summary> - public static string Main_SourceDestinationMatchError { - get { - return ResourceManager.GetString("Main_SourceDestinationMatchError", resourceCulture); - } - } - - /// <summary> /// Looks up a localized string similar to Start Encode. /// </summary> public static string Main_Start { @@ -3050,6 +3040,16 @@ namespace HandBrakeWPF.Properties { } /// <summary> + /// Looks up a localized string similar to Live Update Options: {source} {title} {chapters} + ///Non-Live Options: {date} {time} {creation-date} {creation-time} {quality} {bitrate} (These only change if you scan a new source, change title or chapters). + /// </summary> + public static string OptionsView_FormatOptions { + get { + return ResourceManager.GetString("OptionsView_FormatOptions", resourceCulture); + } + } + + /// <summary> /// Looks up a localized string similar to Hardware encoding support is currently disabled. Please make sure you are running up-to-date drivers for all graphics adaptors in this system. /// ///This will not impact any of the software encoders.. @@ -3097,6 +3097,15 @@ namespace HandBrakeWPF.Properties { } /// <summary> + /// Looks up a localized string similar to Available Options: {source_path} {source_folder_name} (Not both at the same time!). + /// </summary> + public static string OptionsView_PathOptions { + get { + return ResourceManager.GetString("OptionsView_PathOptions", resourceCulture); + } + } + + /// <summary> /// Looks up a localized string similar to Play a sound when each encode completes. /// </summary> public static string OptionsView_PlaySoundWhenDone { diff --git a/win/CS/HandBrakeWPF/Properties/Resources.de.resx b/win/CS/HandBrakeWPF/Properties/Resources.de.resx index 62fd569e3..2821b1713 100644 --- a/win/CS/HandBrakeWPF/Properties/Resources.de.resx +++ b/win/CS/HandBrakeWPF/Properties/Resources.de.resx @@ -59,46 +59,46 @@ : using a System.ComponentModel.TypeConverter : and then encoded with base64 encoding. --> - <xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root"> - <xsd:import namespace="http://www.w3.org/XML/1998/namespace"/> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0"/> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> - <xsd:attribute name="name" use="required" type="xsd:string"/> - <xsd:attribute name="type" type="xsd:string"/> - <xsd:attribute name="mimetype" type="xsd:string"/> - <xsd:attribute ref="xml:space"/> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> - <xsd:attribute name="alias" type="xsd:string"/> - <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/> - <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/> - <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/> - <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/> - <xsd:attribute ref="xml:space"/> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> @@ -348,10 +348,6 @@ Voreinstellungen aus älteren Versionen müssen mit einer aktuellen Version neu <data name="Video_EncoderExtraArgsTooltip" xml:space="preserve"> <value>Zusätzliche erweiterte Argumente, die vom Videoenkoder angewendet werden.</value> </data> - <data name="Main_SourceDestinationMatchError" xml:space="preserve"> - <value>Die Quelldatei die konvertiert werden soll kann nicht überschrieben werden. -Bitte einen anderen Dateinamen wählen.</value> - </data> <data name="Subtitles_BurnInBehaviourModes" xml:space="preserve"> <value>Keine - Es werden nur Spuren eingebrannt, bei denen der Container das Format nicht unterstützt. Fremdsprachenspur - Die Fremdsprachenspur wird eingebrannt, falls vorhanden. @@ -1904,4 +1900,4 @@ Dies hat keinen Einfluss auf die Software-Encoder. </value> <data name="QueueView_Import" xml:space="preserve"> <value>Importieren</value> </data> -</root> +</root>
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Properties/Resources.resx b/win/CS/HandBrakeWPF/Properties/Resources.resx index f867760b7..fca7a267f 100644 --- a/win/CS/HandBrakeWPF/Properties/Resources.resx +++ b/win/CS/HandBrakeWPF/Properties/Resources.resx @@ -362,10 +362,6 @@ Presets from older versions must be re-created in the current version.</value> <data name="Video_EncoderExtraArgsTooltip" xml:space="preserve">
<value>Additional advanced arguments that can be passed to the video encoder.</value>
</data>
- <data name="Main_SourceDestinationMatchError" xml:space="preserve">
- <value>You cannot overwrite the source file you want to convert.
-Please choose a different filename.</value>
- </data>
<data name="Subtitles_BurnInBehaviourModes" xml:space="preserve">
<value>None - Only tracks where the container does not support the format will be burned in.
Foreign Audio Track - The Foreign Audio track will be burned in if available.
@@ -1942,4 +1938,11 @@ Time Remaining: {5}, Elapsed: {6:d\:hh\:mm\:ss} {7}</value> <data name="Startup_InitFailed" xml:space="preserve">
<value>HandBrake's engine failed to initialise. This is often caused by out of date GPU drivers.\n Please update the GPU drivers for any onboard and discrete graphics your system has.</value>
</data>
+ <data name="OptionsView_FormatOptions" xml:space="preserve">
+ <value>Live Update Options: {source} {title} {chapters}
+Non-Live Options: {date} {time} {creation-date} {creation-time} {quality} {bitrate} (These only change if you scan a new source, change title or chapters)</value>
+ </data>
+ <data name="OptionsView_PathOptions" xml:space="preserve">
+ <value>Available Options: {source_path} {source_folder_name} (Not both at the same time!)</value>
+ </data>
</root>
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Properties/Resources.zh.resx b/win/CS/HandBrakeWPF/Properties/Resources.zh.resx index a650d6afc..ba8824273 100644 --- a/win/CS/HandBrakeWPF/Properties/Resources.zh.resx +++ b/win/CS/HandBrakeWPF/Properties/Resources.zh.resx @@ -59,46 +59,46 @@ : using a System.ComponentModel.TypeConverter : and then encoded with base64 encoding. --> - <xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root"> - <xsd:import namespace="http://www.w3.org/XML/1998/namespace"/> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0"/> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> - <xsd:attribute name="name" use="required" type="xsd:string"/> - <xsd:attribute name="type" type="xsd:string"/> - <xsd:attribute name="mimetype" type="xsd:string"/> - <xsd:attribute ref="xml:space"/> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> - <xsd:attribute name="alias" type="xsd:string"/> - <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/> - <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/> - <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/> - <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/> - <xsd:attribute ref="xml:space"/> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> @@ -355,10 +355,6 @@ GNU通用公共许可证的条款重新分发和/或修改它;无论你依据� <data name="Video_EncoderExtraArgsTooltip" xml:space="preserve"> <value>可以传递给视频编码器的其他高级参数。</value> </data> - <data name="Main_SourceDestinationMatchError" xml:space="preserve"> - <value>您无法覆盖要转换的源文件。 -请选择其他文件名。</value> - </data> <data name="Subtitles_BurnInBehaviourModes" xml:space="preserve"> <value>None - 只有容器不支持的轨道才会被烧入。 Foreign Audio Track - 如果可用,外语轨道将被烧入。 @@ -1908,4 +1904,4 @@ FPS: {3:000.0}, 平均FPS: {4:000.0} <data name="QueueView_Import" xml:space="preserve"> <value>导入</value> </data> -</root> +</root>
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/ViewModels/Interfaces/IMainViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/Interfaces/IMainViewModel.cs index 7a6a7b4fa..398d3b154 100644 --- a/win/CS/HandBrakeWPF/ViewModels/Interfaces/IMainViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/Interfaces/IMainViewModel.cs @@ -51,6 +51,7 @@ namespace HandBrakeWPF.ViewModels.Interfaces /// True if added, false if error
/// </returns>
AddQueueError AddToQueue();
+ void AddToQueueWithErrorHandling();
void AddAllToQueue();
void AddSelectionToQueue();
diff --git a/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs index 5ea828884..65fb6805e 100644 --- a/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs @@ -587,8 +587,7 @@ namespace HandBrakeWPF.ViewModels if (value == this.ScannedSource.ScanPath)
{
- this.Destination = this.CurrentTask.Destination;
- this.errorService.ShowMessageBox(Resources.Main_SourceDestinationMatchError, Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
+ this.errorService.ShowMessageBox(Resources.Main_MatchingFileOverwriteWarning, Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
}
@@ -1352,6 +1351,11 @@ namespace HandBrakeWPF.ViewModels return new AddQueueError(Resources.Main_SetDestination, Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
}
+ if (this.Destination.ToLower() == this.ScannedSource.ScanPath.ToLower())
+ {
+ return new AddQueueError(Resources.Main_MatchingFileOverwriteWarning, Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
+ }
+
if (File.Exists(this.CurrentTask.Destination))
{
MessageBoxResult result = this.errorService.ShowMessageBox(string.Format(Resources.Main_QueueOverwritePrompt, Path.GetFileName(this.CurrentTask.Destination)), Resources.Question, MessageBoxButton.YesNo, MessageBoxImage.Question);
@@ -1374,23 +1378,12 @@ namespace HandBrakeWPF.ViewModels }
// Sanity check the filename
- if (!string.IsNullOrEmpty(this.Destination) && FileHelper.FilePathHasInvalidChars(this.Destination))
+ if (FileHelper.FilePathHasInvalidChars(this.Destination))
{
this.NotifyOfPropertyChange(() => this.Destination);
return new AddQueueError(Resources.Main_InvalidDestination, Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
}
- if (this.Destination == this.ScannedSource.ScanPath)
- {
- this.Destination = null;
- return new AddQueueError(Resources.Main_SourceDestinationMatchError, Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
- }
-
- if (this.scannedSource != null && !string.IsNullOrEmpty(this.scannedSource.ScanPath) && this.Destination.ToLower() == this.scannedSource.ScanPath.ToLower())
- {
- return new AddQueueError(Resources.Main_MatchingFileOverwriteWarning, Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
- }
-
// defer to subtitle's validation messages
if (!this.SubtitleViewModel.ValidateSubtitles())
{
@@ -1416,6 +1409,15 @@ namespace HandBrakeWPF.ViewModels return null;
}
+ public void AddToQueueWithErrorHandling()
+ {
+ var addError = this.AddToQueue();
+ if (addError != null)
+ {
+ this.errorService.ShowMessageBox(addError.Message, addError.Header, addError.Buttons, addError.ErrorType);
+ }
+ }
+
/// <summary>
/// Add all Items to the queue
/// </summary>
diff --git a/win/CS/HandBrakeWPF/Views/MainView.xaml.cs b/win/CS/HandBrakeWPF/Views/MainView.xaml.cs index 01acb6aa3..cdcbc65ef 100644 --- a/win/CS/HandBrakeWPF/Views/MainView.xaml.cs +++ b/win/CS/HandBrakeWPF/Views/MainView.xaml.cs @@ -61,7 +61,7 @@ namespace HandBrakeWPF.Views }
// Otherwise assume it's a main area click and add to queue.
- ((IMainViewModel)this.DataContext).AddToQueue();
+ ((IMainViewModel)this.DataContext).AddToQueueWithErrorHandling();
}
private void TabControl_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
diff --git a/win/CS/HandBrakeWPF/Views/OptionsView.xaml b/win/CS/HandBrakeWPF/Views/OptionsView.xaml index b98bf35c3..271b97421 100644 --- a/win/CS/HandBrakeWPF/Views/OptionsView.xaml +++ b/win/CS/HandBrakeWPF/Views/OptionsView.xaml @@ -218,25 +218,29 @@ <Grid Margin="0,5,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
- <RowDefinition Height="5"/>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="7"/>
<RowDefinition Height="Auto"/>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock VerticalAlignment="Center" Text="{x:Static Properties:Resources.Options_DefaultPath}" Grid.Column="0" Grid.Row="0" />
<TextBox Name="autoNameOutputPath" Text="{Binding AutoNameDefaultPath}" Width="380" Grid.Column="1" Grid.Row="0"
- ToolTip="{x:Static Properties:Resources.Options_DefaultPathAdditionalParams}" />
- <Button Content="Browse" Margin="5,0,0,0" Grid.Column="2" Grid.Row="0"
- cal:Message.Attach="[Event Click] = [Action BrowseAutoNamePath]" />
-
- <TextBlock VerticalAlignment="Center" Text="{x:Static Properties:Resources.Options_Format}" Grid.Column="0" Grid.Row="2" Margin="0,5,0,0" />
- <TextBox Name="autoNameFormat" Text="{Binding AutonameFormat, UpdateSourceTrigger=PropertyChanged}" Width="380" Grid.Column="1" Grid.Row="2" Margin="0,0,0,0"
- ToolTip="{x:Static Properties:Resources.Options_AdditionalFormatOptions}" />
+ ToolTip="{x:Static Properties:Resources.Options_DefaultPathAdditionalParams}" HorizontalAlignment="Left" />
+ <Button Content="Browse" Margin="5,0,0,0" Grid.Column="2" Grid.Row="0" cal:Message.Attach="[Event Click] = [Action BrowseAutoNamePath]" HorizontalAlignment="Left" />
+ <TextBlock Text="{x:Static Properties:Resources.OptionsView_PathOptions}" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" FontStyle="Italic" FontSize="11" TextWrapping="Wrap" />
+
+ <TextBlock VerticalAlignment="Center" Text="{x:Static Properties:Resources.Options_Format}" Grid.Column="0" Grid.Row="3" Margin="0,5,0,0" />
+ <TextBox Name="autoNameFormat" Text="{Binding AutonameFormat, UpdateSourceTrigger=PropertyChanged}" Width="380" Grid.Column="1" Grid.Row="3" Margin="0,0,0,0"
+ ToolTip="{x:Static Properties:Resources.Options_AdditionalFormatOptions}" HorizontalAlignment="Left" />
+ <TextBlock Text="{x:Static Properties:Resources.OptionsView_FormatOptions}" Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="2" FontStyle="Italic" FontSize="11" TextWrapping="Wrap" />
</Grid>
<StackPanel Orientation="Vertical" Margin="0,15,0,0">
|