Browse Source

Update controlnet card layout, add numeric bindings

pull/333/head
Ionite 1 year ago
parent
commit
6930eff86e
No known key found for this signature in database
  1. 141
      StabilityMatrix.Avalonia/Controls/ControlNetCard.axaml
  2. 15
      StabilityMatrix.Avalonia/ViewModels/Inference/ControlNetCardViewModel.cs

141
StabilityMatrix.Avalonia/Controls/ControlNetCard.axaml

@ -1,37 +1,37 @@
<Styles xmlns="https://github.com/avaloniaui" <Styles
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="https://github.com/avaloniaui"
xmlns:controls="using:StabilityMatrix.Avalonia.Controls" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" xmlns:controls="using:StabilityMatrix.Avalonia.Controls"
xmlns:models="clr-namespace:StabilityMatrix.Core.Models;assembly=StabilityMatrix.Core" xmlns:lang="clr-namespace:StabilityMatrix.Avalonia.Languages"
xmlns:lang="clr-namespace:StabilityMatrix.Avalonia.Languages" xmlns:mocks="clr-namespace:StabilityMatrix.Avalonia.DesignData"
xmlns:vmInference="clr-namespace:StabilityMatrix.Avalonia.ViewModels.Inference" xmlns:models="clr-namespace:StabilityMatrix.Core.Models;assembly=StabilityMatrix.Core"
xmlns:sg="clr-namespace:SpacedGridControl.Avalonia;assembly=SpacedGridControl.Avalonia" xmlns:sg="clr-namespace:SpacedGridControl.Avalonia;assembly=SpacedGridControl.Avalonia"
xmlns:mocks="clr-namespace:StabilityMatrix.Avalonia.DesignData" xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
x:DataType="vmInference:ControlNetCardViewModel"> xmlns:vmInference="clr-namespace:StabilityMatrix.Avalonia.ViewModels.Inference"
x:DataType="vmInference:ControlNetCardViewModel">
<Design.PreviewWith> <Design.PreviewWith>
<StackPanel Width="350" Height="400"> <StackPanel Width="350" Height="400">
<controls:ControlNetCard DataContext="{x:Static mocks:DesignData.ControlNetCardViewModel}"/> <controls:ControlNetCard DataContext="{x:Static mocks:DesignData.ControlNetCardViewModel}" />
</StackPanel> </StackPanel>
</Design.PreviewWith> </Design.PreviewWith>
<Style Selector="controls|ControlNetCard"> <Style Selector="controls|ControlNetCard">
<!-- Set Defaults --> <!-- Set Defaults -->
<Setter Property="Template"> <Setter Property="Template">
<ControlTemplate> <ControlTemplate>
<controls:Card Padding="12"> <controls:Card Padding="12">
<sg:SpacedGrid <sg:SpacedGrid
ColumnDefinitions="0.8*,*" ColumnDefinitions="0.8*,*"
RowDefinitions="Auto,Auto,Auto,Auto,Auto"
ColumnSpacing="8" ColumnSpacing="8"
RowSpacing="4"> RowDefinitions="Auto,Auto,Auto,Auto,5,Auto"
RowSpacing="6">
<!-- Image Select --> <!-- Image Select -->
<controls:SelectImageCard <controls:SelectImageCard
DataContext="{Binding SelectImageCardViewModel}"
Padding="6"
FontSize="13"
Grid.RowSpan="4" Grid.RowSpan="4"
/> Padding="6"
DataContext="{Binding SelectImageCardViewModel}"
FontSize="13" />
<!-- TODO: Preprocessor Model --> <!-- TODO: Preprocessor Model -->
<TextBlock <TextBlock
@ -45,9 +45,8 @@
Grid.Row="1" Grid.Row="1"
Grid.Column="1" Grid.Column="1"
Margin="0,0,0,4" Margin="0,0,0,4"
Theme="{StaticResource FAComboBoxHybridModelTheme}" HorizontalAlignment="Stretch"
ItemsSource="{Binding ClientManager.Models}" Theme="{StaticResource FAComboBoxHybridModelTheme}" />
HorizontalAlignment="Stretch"/>
<!-- ControlNet Model --> <!-- ControlNet Model -->
<TextBlock <TextBlock
@ -60,31 +59,107 @@
<ui:FAComboBox <ui:FAComboBox
Grid.Row="3" Grid.Row="3"
Grid.Column="1" Grid.Column="1"
Theme="{StaticResource FAComboBoxHybridModelTheme}" HorizontalAlignment="Stretch"
ItemsSource="{Binding ClientManager.Models}" ItemsSource="{Binding ClientManager.ControlNetModels}"
HorizontalAlignment="Stretch"/> SelectedItem="{Binding SelectedModel}"
Theme="{StaticResource FAComboBoxHybridModelTheme}" />
<StackPanel <sg:SpacedGrid
Grid.Row="4" RowDefinitions="Auto,Auto,Auto,Auto"
ColumnDefinitions="*,Auto,Auto"
Grid.Row="5"
Grid.Column="0" Grid.Column="0"
Grid.ColumnSpan="2"> Grid.ColumnSpan="2">
<!-- Strength --> <!-- Strength -->
<TextBlock <TextBlock
Text="{x:Static lang:Resources.Label_Strength}" Text="{x:Static lang:Resources.Label_Strength}"
VerticalAlignment="Center"
TextAlignment="Left" /> TextAlignment="Left" />
<ui:NumberBox
Grid.Row="0"
Grid.Column="1"
Grid.ColumnSpan="2"
HorizontalAlignment="Stretch"
SpinButtonPlacementMode="Inline"
Maximum="10"
Minimum="0"
SmallChange="0.01"
SimpleNumberFormat="F2"
Value="{Binding Strength}" />
<Slider <Slider
BorderThickness="1"/> Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="3"
Margin="0,-4"
Maximum="1"
Minimum="0"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
SmallChange="0.01"
Value="{Binding Strength}" />
<!-- Start end percent --> <!-- Start end percent -->
<TextBlock <TextBlock
Grid.Row="2"
Grid.Column="0"
VerticalAlignment="Center"
Text="{x:Static lang:Resources.Label_Steps}" Text="{x:Static lang:Resources.Label_Steps}"
TextAlignment="Left" /> TextAlignment="Left" />
<ui:RangeSlider
<ui:NumberBox
Grid.Row="2"
Grid.Column="1"
HorizontalAlignment="Stretch"
Maximum="10"
Minimum="0" Minimum="0"
Maximum="1" SmallChange="0.01"
Value="{Binding StartPercent}" />
<ui:NumberBox
Grid.Row="2"
Grid.Column="2"
HorizontalAlignment="Stretch"
Maximum="10"
Minimum="0"
SmallChange="0.01"
Value="{Binding EndPercent}" />
<!--<sg:SpacedGrid Grid.Row="2"
Grid.Column="1"
HorizontalAlignment="Right"
ColumnDefinitions="*,*">
<ui:NumberBox
HorizontalAlignment="Stretch"
Maximum="10"
Minimum="0"
SmallChange="0.01"
Value="{Binding StartPercent}" />
<ui:NumberBox
Grid.Column="1"
HorizontalAlignment="Stretch"
Maximum="10"
Minimum="0"
SmallChange="0.01"
Value="{Binding EndPercent}" />
</sg:SpacedGrid>-->
<ui:RangeSlider
Grid.Row="3"
Grid.Column="0"
Grid.ColumnSpan="3"
BorderThickness="1" BorderThickness="1"
Maximum="1"
Minimum="0"
RangeEnd="{Binding EndPercent}"
RangeStart="{Binding StartPercent}"
StepFrequency="0.01" StepFrequency="0.01"
ToolTipStringFormat="P"/> ToolTipStringFormat="P" />
</sg:SpacedGrid>
<StackPanel
Grid.Row="4"
Grid.Column="0"
Grid.ColumnSpan="2">
</StackPanel> </StackPanel>

15
StabilityMatrix.Avalonia/ViewModels/Inference/ControlNetCardViewModel.cs

@ -19,6 +19,21 @@ public partial class ControlNetCardViewModel : LoadableViewModelBase
[Required] [Required]
private HybridModelFile? selectedPreprocessor; private HybridModelFile? selectedPreprocessor;
[ObservableProperty]
[Required]
[Range(0d, 10d)]
private double strength = 1.0;
[ObservableProperty]
[Required]
[Range(0d, 1d)]
private double startPercent;
[ObservableProperty]
[Required]
[Range(0d, 1d)]
private double endPercent = 1.0;
public SelectImageCardViewModel SelectImageCardViewModel { get; } public SelectImageCardViewModel SelectImageCardViewModel { get; }
public IInferenceClientManager ClientManager { get; } public IInferenceClientManager ClientManager { get; }

Loading…
Cancel
Save