summaryrefslogtreecommitdiffstats
path: root/win/CS
diff options
context:
space:
mode:
authorsr55 <[email protected]>2019-04-19 22:15:26 +0100
committersr55 <[email protected]>2019-04-19 22:15:41 +0100
commit4f82301770f47c6601115d88c3ff5d69119ac1e2 (patch)
treeb4078ff42035c70c80835e9a6ead2281357be51b /win/CS
parent97dabfbc19ebf3eaeb86337cc1114ab372a6c0ec (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.
Diffstat (limited to 'win/CS')
-rw-r--r--win/CS/HandBrakeWPF/Commands/ProcessShortcutCommand.cs2
-rw-r--r--win/CS/HandBrakeWPF/Helpers/AutoNameHelper.cs18
-rw-r--r--win/CS/HandBrakeWPF/Properties/Resources.Designer.cs29
-rw-r--r--win/CS/HandBrakeWPF/Properties/Resources.de.resx40
-rw-r--r--win/CS/HandBrakeWPF/Properties/Resources.resx11
-rw-r--r--win/CS/HandBrakeWPF/Properties/Resources.zh.resx40
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/Interfaces/IMainViewModel.cs1
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs30
-rw-r--r--win/CS/HandBrakeWPF/Views/MainView.xaml.cs2
-rw-r--r--win/CS/HandBrakeWPF/Views/OptionsView.xaml22
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">