using System.Globalization; using System.Windows; using System.Windows.Data; using System.Windows.Markup; using ShrlAlgoToolkit.RevitAddins.UI.Converters; using ShrlAlgoToolkit; using ShrlAlgoToolkit.RevitAddins; using ShrlAlgoToolkit.RevitAddins.UI; namespace ShrlAlgoToolkit.RevitAddins.Common.Converters { [ValueConversion(typeof(bool), typeof(Visibility))] public class BoolVisibilityConverter : MarkupExtension, IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return (value is bool b && b) ? Visibility.Visible : Visibility.Collapsed; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return value is Visibility v && v == Visibility.Visible; } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } [ValueConversion(typeof(bool), typeof(Visibility))] public class InverseBoolVisibilityConverter : MarkupExtension, IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return (bool)value! == false ? Visibility.Visible : Visibility.Collapsed; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return (Visibility)value! != Visibility.Visible; } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } [ValueConversion(typeof(bool), typeof(bool))] public class BooleanConverter : MarkupExtension, IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return (bool)value!; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return (bool)value!; } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } [ValueConversion(typeof(bool), typeof(bool))] public class InverseBooleanConverter : MarkupExtension, IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return !(bool)value!; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return !(bool)value!; } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } }