]> granicus.if.org Git - handbrake/commitdiff
WinGui: Show a radio button on the filters tab to select between Deinterlace and...
authorsr55 <sr55.hb@outlook.com>
Tue, 27 Aug 2013 17:53:01 +0000 (17:53 +0000)
committersr55 <sr55.hb@outlook.com>
Tue, 27 Aug 2013 17:53:01 +0000 (17:53 +0000)
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@5754 b64f7644-9d1e-0410-96f1-a4d463321fa5

win/CS/HandBrakeWPF/Converters/InverseBooleanConverter.cs
win/CS/HandBrakeWPF/ViewModels/FiltersViewModel.cs
win/CS/HandBrakeWPF/Views/FiltersView.xaml

index 8cd29431f7432ea54032b2fafdd3d1cba74187b5..b935953ebcb3fd938e37dee55e16fc554d901323 100644 (file)
@@ -16,7 +16,7 @@ namespace HandBrakeWPF.Converters
     /// <summary>\r
     /// The inverse boolean converter.\r
     /// </summary>\r
-    [ValueConversion(typeof(bool), typeof(bool))]\r
+    [ValueConversion(typeof(bool?), typeof(bool))]\r
     public class InverseBooleanConverter : IValueConverter\r
     {\r
         /// <summary>\r
@@ -39,12 +39,14 @@ namespace HandBrakeWPF.Converters
         /// </returns>\r
         public object Convert(object value, Type targetType, object parameter, CultureInfo culture)\r
         {\r
-            if (targetType != typeof(bool))\r
+            if (targetType != typeof(bool?) && targetType != typeof(bool))\r
             {\r
                 throw new InvalidOperationException("The target must be a boolean");\r
             }\r
 \r
-            return !(bool)value;\r
+            bool result;\r
+            bool.TryParse(value.ToString(), out result);\r
+            return !result;\r
         }\r
 \r
         /// <summary>\r
@@ -67,7 +69,7 @@ namespace HandBrakeWPF.Converters
         /// </returns>\r
         public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)\r
         {\r
-            throw new NotSupportedException();\r
+            return null;\r
         }\r
     }\r
 }
\ No newline at end of file
index fe9c4fabf1a7254bb64c2b2f58293c795f673f75..e8abd4b576e8be2364442715ae93933272e4d41f 100644 (file)
@@ -26,6 +26,8 @@ namespace HandBrakeWPF.ViewModels
     /// </summary>\r
     public class FiltersViewModel : ViewModelBase, IFiltersViewModel\r
     {\r
+        private bool isDeinterlaceMode;\r
+\r
         #region Constructors and Destructors\r
 \r
         /// <summary>\r
@@ -41,6 +43,7 @@ namespace HandBrakeWPF.ViewModels
         {\r
             this.CurrentTask = new EncodeTask();\r
             this.DeblockValue = 4; // OFF\r
+            this.IsDeinterlaceMode = true;\r
         }\r
 \r
         #endregion\r
@@ -324,6 +327,43 @@ namespace HandBrakeWPF.ViewModels
         /// </summary>\r
         public bool ShowDetelecineCustom { get; set; }\r
 \r
+        /// <summary>\r
+        /// Gets or sets a value indicating whether is deinterlace mode.\r
+        /// </summary>\r
+        public bool IsDeinterlaceMode\r
+        {\r
+            get\r
+            {\r
+                return this.isDeinterlaceMode;\r
+            }\r
+            set\r
+            {\r
+                if (!object.Equals(this.isDeinterlaceMode, value))\r
+                {\r
+                    this.isDeinterlaceMode = value;\r
+                    this.NotifyOfPropertyChange(() => this.IsDeinterlaceMode);\r
+\r
+                    this.DeinterlaceControlText = value ? "Deinterlace:" : "Decomb:";\r
+\r
+                    if (value)\r
+                    {\r
+                        this.SelectedDecomb = Decomb.Off;\r
+                    }\r
+                    else\r
+                    {\r
+                        this.SelectedDeInterlace = Deinterlace.Off;\r
+                    }\r
+\r
+                    this.NotifyOfPropertyChange(() => this.DeinterlaceControlText);\r
+                }\r
+            }\r
+        }\r
+\r
+        /// <summary>\r
+        /// Gets or sets the deinterlace control text.\r
+        /// </summary>\r
+        public string DeinterlaceControlText { get; set; }\r
+\r
         #endregion\r
 \r
         #region Implemented Interfaces\r
index 9c46aeabd5d60cd08270870f2ab98b24d915da67..ed5993def3a232958826a477a9054879d4104699 100644 (file)
@@ -7,17 +7,24 @@
     <UserControl.Resources>\r
         <Converters:BooleanToVisibilityConverter x:Key="boolToVisConverter" />\r
         <Converters:EnumComboConverter x:Key="boolComboConverter" />\r
+        <Converters:InverseBooleanConverter x:Key="inverseBooleanConverter" />\r
     </UserControl.Resources>\r
 \r
     <Grid>\r
         <Grid.RowDefinitions>\r
             <RowDefinition Height="Auto" />\r
-            <RowDefinition Height="*" />\r
+            <RowDefinition Height="Auto" />\r
+            <RowDefinition Height="Auto" />\r
         </Grid.RowDefinitions>\r
 \r
+        <Grid.ColumnDefinitions>\r
+            <ColumnDefinition Width="Auto" />\r
+            <ColumnDefinition Width="Auto" />\r
+        </Grid.ColumnDefinitions>\r
+\r
         <TextBlock Text="Filters" FontWeight="Bold" Margin="10,5,0,0" Grid.Row="0" ></TextBlock>\r
 \r
-        <StackPanel Orientation="Vertical" Grid.Row="1" Margin="10,10,0,0">\r
+        <StackPanel Orientation="Vertical" Grid.Row="1" Grid.Column="0" Margin="10,10,0,0">\r
             <Grid>\r
                 <Grid.RowDefinitions>\r
                     <RowDefinition Height="Auto" />\r
                 </Grid.RowDefinitions>\r
 \r
                 <Grid.ColumnDefinitions>\r
-                    <ColumnDefinition Width="100" />\r
-                    <ColumnDefinition Width="130" />\r
+                    <ColumnDefinition MinWidth="75" />\r
+                    <ColumnDefinition MinWidth="160" />\r
                     <ColumnDefinition Width="Auto" />\r
                 </Grid.ColumnDefinitions>\r
 \r
                 <TextBlock Text="Detelecine:" Grid.Row="0" Grid.Column="0" Margin="0,0,0,10" />\r
                 <ComboBox Width="120" Grid.Row="0" ItemsSource="{Binding DetelecineOptions, Converter={StaticResource boolComboConverter}}" \r
-                          SelectedItem="{Binding SelectedDetelecine, Converter={StaticResource boolComboConverter}}" Grid.Column="1" Margin="0,0,0,10"/>\r
+                          SelectedItem="{Binding SelectedDetelecine, Converter={StaticResource boolComboConverter}}" Grid.Column="1" Margin="0,0,0,10"\r
+                          HorizontalAlignment="Left"/>\r
                 <TextBox Width="120" Grid.Row="0" Grid.Column="2" Margin="0,0,0,10" Text="{Binding CustomDetelecine}"\r
                          Visibility="{Binding ShowDetelecineCustom, Converter={StaticResource boolToVisConverter}}"/>\r
 \r
-                <TextBlock Text="Decomb:" Grid.Row="1" Grid.Column="0" Margin="0,0,0,10"/>\r
-                <ComboBox Width="120" Grid.Row="1" ItemsSource="{Binding DecombOptions, Converter={StaticResource boolComboConverter}}" \r
-                          SelectedItem="{Binding SelectedDecomb, Converter={StaticResource boolComboConverter}}" Grid.Column="1" Margin="0,0,0,10"/>\r
-                <TextBox Width="120" Grid.Row="1" Grid.Column="2" Margin="0,0,0,10" Text="{Binding CustomDecomb}"\r
+                <TextBlock Text="{Binding DeinterlaceControlText}" Grid.Row="1" Grid.Column="0" Margin="0,0,0,10" VerticalAlignment="Top"/>\r
+                <StackPanel Grid.Row="1" Grid.Column="1" >\r
+                    <StackPanel Orientation="Horizontal">\r
+                        <RadioButton GroupName="Interlace" Content="Deinterlace" IsChecked="{Binding IsDeinterlaceMode}" />\r
+                        <RadioButton GroupName="Interlace" Content="Decomb" Margin="10,0,0,0" IsChecked="{Binding IsDeinterlaceMode, Converter={StaticResource inverseBooleanConverter}}" />\r
+                    </StackPanel> \r
+\r
+                    <ComboBox Width="120" ItemsSource="{Binding DecombOptions, Converter={StaticResource boolComboConverter}}" HorizontalAlignment="Left"\r
+                          SelectedItem="{Binding SelectedDecomb, Converter={StaticResource boolComboConverter}}" Margin="0,0,0,10"\r
+                          Visibility="{Binding IsDeinterlaceMode, Converter={StaticResource boolToVisConverter}, ConverterParameter=True}"    />\r
+\r
+                    <ComboBox Width="120" ItemsSource="{Binding DeInterlaceOptions, Converter={StaticResource boolComboConverter}}"  HorizontalAlignment="Left"\r
+                          SelectedItem="{Binding SelectedDeInterlace, Converter={StaticResource boolComboConverter}}" Margin="0,0,0,10"\r
+                              Visibility="{Binding IsDeinterlaceMode, Converter={StaticResource boolToVisConverter}}" />\r
+                </StackPanel>\r
+\r
+                <TextBox Width="120" Grid.Row="1" Grid.Column="2" Text="{Binding CustomDecomb}" VerticalAlignment="Top"\r
                          Visibility="{Binding ShowDecombCustom, Converter={StaticResource boolToVisConverter}}" />\r
 \r
-                <TextBlock Text="Deinterlace:" Grid.Row="2" Grid.Column="0" Margin="0,0,0,10"/>\r
-                <ComboBox Width="120" Grid.Row="2" ItemsSource="{Binding DeInterlaceOptions, Converter={StaticResource boolComboConverter}}"\r
-                          SelectedItem="{Binding SelectedDeInterlace, Converter={StaticResource boolComboConverter}}" Grid.Column="1" Margin="0,0,0,10"/>\r
-                <TextBox Width="120" Grid.Row="2" Grid.Column="2" Margin="0,0,0,10" Text="{Binding CustomDeinterlace}"\r
+                <TextBox Width="120" Grid.Row="1" Grid.Column="2" Text="{Binding CustomDeinterlace}" VerticalAlignment="Top"\r
                          Visibility="{Binding ShowDeinterlaceCustom, Converter={StaticResource boolToVisConverter}}" />\r
 \r
                 <TextBlock Text="Denoise:" Grid.Row="3" Grid.Column="0" Margin="0,0,0,10"/>\r
                 <ComboBox Width="120" Grid.Row="3" ItemsSource="{Binding DenoiseOptions, Converter={StaticResource boolComboConverter}}" \r
-                          SelectedItem="{Binding SelectedDenoise, Converter={StaticResource boolComboConverter}}" Grid.Column="1" Margin="0,0,0,10"/>\r
+                          SelectedItem="{Binding SelectedDenoise, Converter={StaticResource boolComboConverter}}" Grid.Column="1" Margin="0,0,0,10"\r
+                          HorizontalAlignment="Left"/>\r
                 <TextBox Width="120" Grid.Row="3" Grid.Column="2" Margin="0,0,0,10" Text="{Binding CustomDenoise}"\r
                          Visibility="{Binding ShowDenoiseCustom, Converter={StaticResource boolToVisConverter}}" />\r
 \r
                 <TextBlock Text="Deblock:" Grid.Row="4" Grid.Column="0" Margin="0,0,0,10"/>\r
-                <Slider Width="120" Value="{Binding DeblockValue}" TickPlacement="BottomRight" Minimum="4" Maximum="15" Grid.Row="4" Grid.Column="1" Margin="0,0,0,10"/>\r
+                <Slider Width="120" Value="{Binding DeblockValue}" TickPlacement="BottomRight" Minimum="4" Maximum="15" Grid.Row="4" Grid.Column="1" Margin="0,0,0,10"\r
+                        HorizontalAlignment="Left" />\r
                 <TextBlock Text="{Binding DeblockText}" Grid.Row="4" Grid.Column="2" Margin="0,0,0,10"/>\r
 \r
                 <CheckBox Content="Grayscale" IsChecked="{Binding Grayscale}" Grid.Row="5" Grid.Column="1" Margin="0,0,0,10"/>\r
             </Grid>\r
 \r
         </StackPanel>\r
-\r
+        \r
     </Grid>\r
 </UserControl>\r