Browse Source

Toggle Buttons for icon settings

Krzysztof Krysiński 10 months ago
parent
commit
2b5d7248e6

+ 2 - 1
src/PixiEditor/Data/Localization/Languages/en.json

@@ -847,5 +847,6 @@
   "TEXT_LAYER_NAME": "Text",
   "TEXT_LAYER_NAME": "Text",
   "TEXT_TOOL_TOOLTIP": "Create text ({0}).",
   "TEXT_TOOL_TOOLTIP": "Create text ({0}).",
   "BOLD_TOOLTIP": "Bold",
   "BOLD_TOOLTIP": "Bold",
-  "ITALIC_TOOLTIP": "Italic"
+  "ITALIC_TOOLTIP": "Italic",
+  "CUSTOM_FONT": "Custom font"
 }
 }

+ 1 - 0
src/PixiEditor/ViewModels/Tools/ToolSettings/Settings/BoolSettingViewModel.cs

@@ -11,6 +11,7 @@ internal sealed class BoolSettingViewModel : Setting<bool>
     public BoolSettingViewModel(string name, string label = "")
     public BoolSettingViewModel(string name, string label = "")
         : this(name, false, label)
         : this(name, false, label)
     {
     {
+        AllowIconLabel = false;
     }
     }
 
 
     public BoolSettingViewModel(string name, bool isChecked, string label = "")
     public BoolSettingViewModel(string name, bool isChecked, string label = "")

+ 2 - 0
src/PixiEditor/ViewModels/Tools/ToolSettings/Settings/Setting.cs

@@ -101,6 +101,8 @@ internal abstract class Setting : ObservableObject
     public bool HasLabel => !string.IsNullOrEmpty(Label);
     public bool HasLabel => !string.IsNullOrEmpty(Label);
     public bool HasIcon => !string.IsNullOrEmpty(Icon);
     public bool HasIcon => !string.IsNullOrEmpty(Icon);
 
 
+    public bool AllowIconLabel { get; protected set; } = true;
+
     public object UserValue
     public object UserValue
     {
     {
         get => _value;
         get => _value;

+ 10 - 2
src/PixiEditor/Views/Main/Tools/Toolbar.axaml

@@ -6,6 +6,7 @@
              xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions"
              xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions"
              xmlns:decorators="clr-namespace:PixiEditor.Views.Decorators"
              xmlns:decorators="clr-namespace:PixiEditor.Views.Decorators"
              xmlns:settings="clr-namespace:PixiEditor.ViewModels.Tools.ToolSettings.Settings"
              xmlns:settings="clr-namespace:PixiEditor.ViewModels.Tools.ToolSettings.Settings"
+             xmlns:converters="clr-namespace:PixiEditor.Helpers.Converters"
              mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
              mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
              x:Class="PixiEditor.Views.Main.Tools.Toolbar">
              x:Class="PixiEditor.Views.Main.Tools.Toolbar">
     <Border CornerRadius="{DynamicResource ControlCornerRadius}"
     <Border CornerRadius="{DynamicResource ControlCornerRadius}"
@@ -73,13 +74,20 @@
                                 ui:Translator.TooltipKey="{Binding Tooltip}"
                                 ui:Translator.TooltipKey="{Binding Tooltip}"
                                 ui:Translator.Key="{Binding Label.Key}" />
                                 ui:Translator.Key="{Binding Label.Key}" />
                             <TextBlock
                             <TextBlock
-                                IsVisible="{Binding HasIcon}" VerticalAlignment="Center"
+                                VerticalAlignment="Center"
                                 Foreground="{DynamicResource ThemeForegroundBrush}"
                                 Foreground="{DynamicResource ThemeForegroundBrush}"
                                 ui:Translator.TooltipKey="{Binding Tooltip}"
                                 ui:Translator.TooltipKey="{Binding Tooltip}"
                                 Classes="pixi-icon"
                                 Classes="pixi-icon"
                                 FontSize="18"
                                 FontSize="18"
                                 Padding="5 0"
                                 Padding="5 0"
-                                Text="{Binding Icon}" />
+                                Text="{Binding Icon}">
+                                <TextBlock.IsVisible>
+                                    <MultiBinding Converter="{converters:AllTrueConverter}">
+                                        <Binding Path="HasIcon" />
+                                        <Binding Path="AllowIconLabel" />
+                                    </MultiBinding>
+                                </TextBlock.IsVisible>
+                            </TextBlock>
                             <ContentControl VerticalAlignment="Center" Content="{Binding }" />
                             <ContentControl VerticalAlignment="Center" Content="{Binding }" />
                         </StackPanel>
                         </StackPanel>
                     </DataTemplate>
                     </DataTemplate>

+ 28 - 4
src/PixiEditor/Views/Tools/ToolSettings/Settings/BoolSettingView.axaml

@@ -3,11 +3,35 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:settings="clr-namespace:PixiEditor.ViewModels.Tools.ToolSettings.Settings"
              xmlns:settings="clr-namespace:PixiEditor.ViewModels.Tools.ToolSettings.Settings"
+             xmlns:converters="clr-namespace:PixiEditor.Helpers.Converters"
+             xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions"
              mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
              mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
              x:Class="PixiEditor.Views.Tools.ToolSettings.Settings.BoolSettingView">
              x:Class="PixiEditor.Views.Tools.ToolSettings.Settings.BoolSettingView">
     <Design.DataContext>
     <Design.DataContext>
-        <settings:BoolSettingViewModel/>
+        <settings:BoolSettingViewModel />
     </Design.DataContext>
     </Design.DataContext>
-    
-    <CheckBox VerticalAlignment="Center" Focusable="False" IsChecked="{Binding Value, Mode=TwoWay}"/>
-</UserControl>
+
+    <Grid>
+        <CheckBox VerticalAlignment="Center" Focusable="False" IsChecked="{Binding Value, Mode=TwoWay}">
+           <CheckBox.IsVisible>
+               <MultiBinding Converter="{converters:AllTrueConverter}">
+                   <Binding Path="HasLabel"/>
+                   <Binding Path="!HasIcon"/>
+               </MultiBinding>
+           </CheckBox.IsVisible>
+        </CheckBox>
+        <ToggleButton VerticalAlignment="Center" Focusable="False"
+                      ui:Translator.TooltipKey="{Binding Tooltip}"
+                      IsChecked="{Binding Value, Mode=TwoWay}"
+                      FontSize="18"
+                      Padding="5"
+                      Classes="pixi-icon" Content="{Binding Icon}">
+            <ToggleButton.IsVisible>
+                <MultiBinding Converter="{converters:AllTrueConverter}">
+                    <Binding Path="HasIcon"/>
+                    <Binding Path="!HasLabel"/>
+                </MultiBinding>
+            </ToggleButton.IsVisible>
+        </ToggleButton>
+    </Grid>
+</UserControl>

+ 4 - 2
src/PixiEditor/Views/Tools/ToolSettings/Settings/FontFamilySettingView.axaml

@@ -13,8 +13,10 @@
         <settings:FontFamilySettingViewModel />
         <settings:FontFamilySettingViewModel />
     </Design.DataContext>
     </Design.DataContext>
 
 
-    <StackPanel Orientation="Horizontal">
-        <Button Classes="pixi-icon" FontSize="16" Command="{Binding UploadFontCommand}" Content="{DynamicResource icon-upload}"/>
+    <StackPanel Orientation="Horizontal" Spacing="5">
+        <Button Classes="pixi-icon" FontSize="16"
+                ui:Translator.TooltipKey="CUSTOM_FONT"
+                Command="{Binding UploadFontCommand}" Content="{DynamicResource icon-upload}"/>
         <ComboBox VerticalAlignment="Center"
         <ComboBox VerticalAlignment="Center"
                   MinWidth="85"
                   MinWidth="85"
                   ItemsSource="{Binding Fonts}"
                   ItemsSource="{Binding Fonts}"