Skip to content
This repository was archived by the owner on Nov 27, 2024. It is now read-only.

Commit 19bb2e7

Browse files
committed
New ModelTemplate prototype
1 parent 0b14dc2 commit 19bb2e7

24 files changed

+2344
-57
lines changed

OnnxStack.ImageUpscaler/Config/UpscaleModelSet.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace OnnxStack.StableDiffusion.Config
66
{
7-
public class UpscaleModelSet : IOnnxModelSetConfig
7+
public record UpscaleModelSet : IOnnxModelSetConfig
88
{
99
public string Name { get; set; }
1010
public int Channels { get; set; }

OnnxStack.StableDiffusion/Config/StableDiffusionModelSet.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace OnnxStack.StableDiffusion.Config
1010
{
11-
public class StableDiffusionModelSet : IOnnxModelSetConfig
11+
public record StableDiffusionModelSet : IOnnxModelSetConfig
1212
{
1313
public string Name { get; set; }
1414
public bool IsEnabled { get; set; }

OnnxStack.UI/App.xaml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
33
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
44
xmlns:system="clr-namespace:System;assembly=mscorlib"
5+
xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=System.ComponentModel.TypeConverter"
56
xmlns:theme="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero2"
6-
xmlns:local="clr-namespace:OnnxStack.UI"
7+
xmlns:local="clr-namespace:OnnxStack.UI"
78
xmlns:SD_Enums="clr-namespace:OnnxStack.StableDiffusion.Enums;assembly=OnnxStack.StableDiffusion"
89
xmlns:userControls="clr-namespace:OnnxStack.UI.UserControls"
910
xmlns:behaviors="clr-namespace:OnnxStack.UI.Behaviors"
@@ -35,13 +36,26 @@
3536
<converters:InverseNullVisibilityConverter x:Key="InverseNullVisibilityConverter" />
3637
<converters:DiffuserVisibilityConverter x:Key="DiffuserVisibilityConverter" />
3738
<converters:PipelineVisibilityConverter x:Key="PipelineVisibilityConverter" />
39+
<converters:ComboBoxAllItemConverter x:Key="ComboBoxAllItemConverter" />
40+
41+
<ObjectDataProvider x:Key="ListSortDirection" MethodName="GetValues" ObjectType="{x:Type system:Enum}">
42+
<ObjectDataProvider.MethodParameters>
43+
<x:Type TypeName="componentModel:ListSortDirection"/>
44+
</ObjectDataProvider.MethodParameters>
45+
</ObjectDataProvider>
3846

3947
<ObjectDataProvider x:Key="SchedulerType" MethodName="GetValues" ObjectType="{x:Type system:Enum}">
4048
<ObjectDataProvider.MethodParameters>
4149
<x:Type TypeName="SD_Enums:SchedulerType"/>
4250
</ObjectDataProvider.MethodParameters>
4351
</ObjectDataProvider>
4452

53+
<ObjectDataProvider x:Key="ModelType" MethodName="GetValues" ObjectType="{x:Type system:Enum}">
54+
<ObjectDataProvider.MethodParameters>
55+
<x:Type TypeName="SD_Enums:ModelType"/>
56+
</ObjectDataProvider.MethodParameters>
57+
</ObjectDataProvider>
58+
4559
<ObjectDataProvider x:Key="AlphaTransformType" MethodName="GetValues" ObjectType="{x:Type system:Enum}">
4660
<ObjectDataProvider.MethodParameters>
4761
<x:Type TypeName="SD_Enums:AlphaTransformType"/>

OnnxStack.UI/App.xaml.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ public App()
3636
builder.Services.AddTransient<TextInputDialog>();
3737
builder.Services.AddTransient<CropImageDialog>();
3838
builder.Services.AddTransient<AddModelDialog>();
39+
builder.Services.AddTransient<UpdateModelDialog>();
40+
builder.Services.AddTransient<AddUpscaleModelDialog>();
41+
builder.Services.AddTransient<UpdateUpscaleModelDialog>();
42+
builder.Services.AddSingleton<IModelFactory, ModelFactory>();
3943
builder.Services.AddSingleton<IDialogService, DialogService>();
4044
builder.Services.AddSingleton<IModelDownloadService, ModelDownloadService>();
4145

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using System;
2+
using System.Collections;
3+
using System.Collections.Generic;
4+
using System.Globalization;
5+
using System.Linq;
6+
using System.Windows.Data;
7+
8+
namespace OnnxStack.UI.Converters
9+
{
10+
public class ComboBoxAllItemConverter : IValueConverter
11+
{
12+
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
13+
{
14+
IEnumerable container = value as IEnumerable;
15+
if (container != null)
16+
{
17+
IEnumerable<object> genericContainer = container.OfType<object>();
18+
IEnumerable<object> emptyItem = new object[] { "All" };
19+
return emptyItem.Concat(genericContainer);
20+
}
21+
22+
return value;
23+
}
24+
25+
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
26+
{
27+
return value is string str && str == "All" ? null : value;
28+
}
29+
}
30+
}

OnnxStack.UI/Dialogs/AddModelDialog.xaml

Lines changed: 77 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,93 @@
33
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
44
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
55
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6+
xmlns:local="clr-namespace:OnnxStack.UI.Dialogs"
7+
xmlns:userControls="clr-namespace:OnnxStack.UI.UserControls"
68
mc:Ignorable="d"
79
Name="UI"
810
Icon="/Images/Icon.png"
9-
MinWidth="400"
11+
MinWidth="500"
1012
SizeToContent="WidthAndHeight"
1113
WindowStartupLocation="CenterOwner"
1214
SnapsToDevicePixels="True"
1315
UseLayoutRounding="True"
1416
Style="{StaticResource BaseWindow}"
15-
ContentRendered="OnContentRendered">
17+
ContentRendered="OnContentRendered"
18+
Title="Add Model">
1619
<DockPanel DataContext="{Binding ElementName=UI}" Margin="15, 15, 15, 10">
1720
<StackPanel DockPanel.Dock="Top">
18-
<TextBlock Text="{Binding ErrorMessage}" FontSize="13" FontWeight="DemiBold" HorizontalAlignment="Center" Foreground="Red" Margin="0,10">
19-
<TextBlock.Style>
20-
<Style TargetType="{x:Type TextBlock}">
21-
<Setter Property="Visibility" Value="Visible" />
22-
<Style.Triggers>
23-
<DataTrigger Binding="{Binding ErrorMessage.Length, ElementName=UI}" Value="0">
24-
<Setter Property="Visibility" Value="Collapsed" />
25-
</DataTrigger>
26-
</Style.Triggers>
27-
</Style>
28-
</TextBlock.Style>
29-
</TextBlock>
30-
<TextBlock Text="Model Pipleine"/>
31-
<ComboBox ItemsSource="{Binding Source={StaticResource DiffuserPipelineType}}" SelectedItem="{Binding PipelineType}" />
32-
<TextBlock Text="Model Name"/>
33-
<TextBox Text="{Binding TextResult, UpdateSourceTrigger=PropertyChanged}" />
21+
22+
<UniformGrid Columns="2">
23+
<StackPanel>
24+
<TextBlock Text="Model Pipeline"/>
25+
<ComboBox ItemsSource="{Binding Source={StaticResource DiffuserPipelineType}}" SelectedItem="{Binding PipelineType}" />
26+
</StackPanel>
27+
<StackPanel>
28+
<TextBlock Text="Model Type"/>
29+
<ComboBox ItemsSource="{Binding Source={StaticResource ModelType}}" SelectedItem="{Binding ModelType}" />
30+
<StackPanel.Style>
31+
<Style TargetType="{x:Type StackPanel}">
32+
<Setter Property="IsEnabled" Value="False" />
33+
<Style.Triggers>
34+
<DataTrigger Binding="{Binding PipelineType, ElementName=UI}" Value="StableDiffusionXL">
35+
<Setter Property="IsEnabled" Value="True" />
36+
</DataTrigger>
37+
<DataTrigger Binding="{Binding PipelineType, ElementName=UI}" Value="LatentConsistencyXL">
38+
<Setter Property="IsEnabled" Value="True" />
39+
</DataTrigger>
40+
</Style.Triggers>
41+
</Style>
42+
</StackPanel.Style>
43+
</StackPanel>
44+
</UniformGrid>
45+
46+
47+
48+
49+
50+
<StackPanel Margin="0,10,0,0">
51+
<TextBlock Text="Model Folder"/>
52+
<userControls:FilePickerTextBox FileName="{Binding ModelFolder, Mode=TwoWay}" IsFolderPicker="True" />
53+
</StackPanel>
54+
55+
<StackPanel Margin="0,10,0,0">
56+
<TextBlock Text="Model Name"/>
57+
<TextBox Text="{Binding ModelName, UpdateSourceTrigger=PropertyChanged}" />
58+
</StackPanel>
59+
60+
<StackPanel Margin="5">
61+
<StackPanel Orientation="Horizontal" Visibility="{Binding IsNameInvalid, Converter={StaticResource BooleanToVisibilityConverter}}">
62+
<userControls:FontAwesome Icon="&#xf00d;" Color="Red" />
63+
<TextBlock Text="Name" Margin="5,0,0,3" />
64+
</StackPanel>
65+
66+
<ItemsControl ItemsSource="{Binding ValidationResults}">
67+
<ItemsControl.ItemTemplate>
68+
<DataTemplate DataType="{x:Type local:ValidationResult}">
69+
<StackPanel Orientation="Horizontal">
70+
<userControls:FontAwesome >
71+
<userControls:FontAwesome.Style>
72+
<Style TargetType="{x:Type userControls:FontAwesome}">
73+
<Setter Property="Color" Value="Red" />
74+
<Setter Property="Icon" Value="&#xf00d;" />
75+
<Style.Triggers>
76+
<DataTrigger Binding="{Binding IsValid}" Value="True">
77+
<Setter Property="Color" Value="LimeGreen" />
78+
<Setter Property="Icon" Value="&#xf00c;" />
79+
</DataTrigger>
80+
</Style.Triggers>
81+
</Style>
82+
</userControls:FontAwesome.Style>
83+
</userControls:FontAwesome>
84+
<TextBlock Text="{Binding ModelType}" Margin="5,0,0,3" />
85+
</StackPanel>
86+
</DataTemplate>
87+
</ItemsControl.ItemTemplate>
88+
</ItemsControl>
89+
90+
</StackPanel>
91+
92+
3493
</StackPanel>
3594
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,20,0,0">
3695
<UniformGrid Columns="2" Height="30">

0 commit comments

Comments
 (0)