-
Notifications
You must be signed in to change notification settings - Fork 52
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Return of the overlay metadata panel.
- Loading branch information
1 parent
8a56fc4
commit 14d0ff7
Showing
8 changed files
with
315 additions
and
420 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,211 @@ | ||
<UserControl x:Class="Diffusion.Toolkit.Controls.MetadataPanel" | ||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | ||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | ||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | ||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | ||
xmlns:local="clr-namespace:Diffusion.Toolkit.Controls" | ||
xmlns:lex="http://wpflocalizeextension.codeplex.com" | ||
xmlns:converters="clr-namespace:Diffusion.Toolkit.Converters" | ||
mc:Ignorable="d" | ||
d:DesignHeight="776.386" d:DesignWidth="464.94"> | ||
<UserControl.Resources> | ||
<converters:SizeConverter x:Key="SizeConverter"></converters:SizeConverter> | ||
<converters:ZeroConverter x:Key="ZeroConverter"></converters:ZeroConverter> | ||
</UserControl.Resources> | ||
<Grid | ||
Background="{x:Null}" | ||
DataContext="{Binding CurrentImage, RelativeSource={RelativeSource AncestorLevel=1, Mode=FindAncestor, AncestorType=UserControl}}"> | ||
<Grid.ContextMenu> | ||
<ContextMenu> | ||
<MenuItem Header="Collapse All" Click="CollapseAll_Click"></MenuItem> | ||
<MenuItem Header="Expand All" Click="ExpandAll_Click"></MenuItem> | ||
</ContextMenu> | ||
</Grid.ContextMenu> | ||
<ScrollViewer VerticalScrollBarVisibility="Auto"> | ||
|
||
<StackPanel Background="Transparent"> | ||
|
||
<local:AccordionControl x:Name="PromptMetadata" | ||
HeaderBackground="#80000000" | ||
Header="{lex:Loc Metadata.Prompt}" | ||
Margin="0,0,0,5" | ||
State="{Binding DataContext.MetadataSection.PromptState, ElementName=PreviewPaneGrid, Mode=TwoWay}" | ||
> | ||
<local:AccordionControl.ButtonAreaContent> | ||
<Grid Background="{x:Null}"> | ||
<Grid.ColumnDefinitions> | ||
<ColumnDefinition/> | ||
<ColumnDefinition Width="80"/> | ||
<ColumnDefinition Width="80"/> | ||
</Grid.ColumnDefinitions> | ||
<Button Style="{DynamicResource BorderlessButton}" Grid.Column="1" Command="{Binding CopyPromptCommand}" Content="{lex:Loc Metadata.Buttons.Copy}"/> | ||
<Button Style="{DynamicResource BorderlessButton}" Grid.Column="2" Command="{Binding CopyParametersCommand}" Content="{lex:Loc Metadata.Buttons.CopyAll}"/> | ||
</Grid> | ||
</local:AccordionControl.ButtonAreaContent> | ||
<TextBox Background="#00000000" FontSize="14" BorderThickness="0" | ||
IsReadOnly="True" | ||
Padding="5" TextWrapping="WrapWithOverflow" Text="{Binding Prompt}"/> | ||
</local:AccordionControl> | ||
|
||
<local:AccordionControl x:Name="NegativePromptMetadata" | ||
Margin="0,0,0,5" | ||
State="{Binding DataContext.MetadataSection.NegativePromptState, ElementName=PreviewPaneGrid, Mode=TwoWay}" HeaderBackground="#80000000" Header="{lex:Loc Metadata.NegativePrompt}"> | ||
<local:AccordionControl.ButtonAreaContent> | ||
<Grid Background="{x:Null}"> | ||
<Grid.ColumnDefinitions> | ||
<ColumnDefinition/> | ||
<ColumnDefinition Width="80"/> | ||
</Grid.ColumnDefinitions> | ||
<Button Style="{DynamicResource BorderlessButton}" Grid.Column="1" Command="{Binding CopyNegativePromptCommand}" Content="{lex:Loc Metadata.Buttons.Copy}"/> | ||
</Grid> | ||
</local:AccordionControl.ButtonAreaContent> | ||
<TextBox Background="#00000000" FontSize="14" BorderThickness="0" | ||
IsReadOnly="True" | ||
Padding="5" TextWrapping="WrapWithOverflow" Text="{Binding NegativePrompt}"/> | ||
</local:AccordionControl> | ||
|
||
<local:AccordionControl x:Name="SeedMetadata" | ||
Margin="0,0,0,5" | ||
State="{Binding DataContext.MetadataSection.SeedState, ElementName=PreviewPaneGrid, Mode=TwoWay}" HeaderBackground="#80000000" Header="{lex:Loc Metadata.Seed}"> | ||
<local:AccordionControl.ButtonAreaContent> | ||
<Grid Background="{x:Null}"> | ||
<Grid.ColumnDefinitions> | ||
<ColumnDefinition/> | ||
<ColumnDefinition Width="50"/> | ||
<ColumnDefinition Width="50"/> | ||
<ColumnDefinition Width="95"/> | ||
<ColumnDefinition Width="10"/> | ||
</Grid.ColumnDefinitions> | ||
<Label Grid.Column="1" Style="{DynamicResource SmallCaps}" Margin="0,0,0,0" Content="{lex:Loc Metadata.CFGScale}"/> | ||
<Label Grid.Column="2" Style="{DynamicResource SmallCaps}" Margin="0,0,0,0" Content="{lex:Loc Metadata.Steps}"/> | ||
<Label Grid.Column="3" Style="{DynamicResource SmallCaps}" Margin="0,0,0,0" Content="{lex:Loc Metadata.Size}"/> | ||
</Grid> | ||
</local:AccordionControl.ButtonAreaContent> | ||
<Grid Background="{x:Null}"> | ||
<Grid.ColumnDefinitions> | ||
<ColumnDefinition/> | ||
<ColumnDefinition Width="50"/> | ||
<ColumnDefinition Width="50"/> | ||
<ColumnDefinition Width="95"/> | ||
</Grid.ColumnDefinitions> | ||
<TextBox Background="#00000000" FontSize="14" BorderThickness="0" | ||
IsReadOnly="True" | ||
Padding="5" TextWrapping="WrapWithOverflow" Text="{Binding Seed, Converter={StaticResource ZeroConverter}}"/> | ||
<TextBox Grid.Column="1" Background="#00000000" FontSize="14" BorderThickness="0" | ||
IsReadOnly="True" | ||
Padding="5" TextWrapping="WrapWithOverflow" Text="{Binding CFGScale, Converter={StaticResource ZeroConverter}}"/> | ||
<TextBox Grid.Column="2" Background="#00000000" FontSize="14" BorderThickness="0" | ||
IsReadOnly="True" | ||
Padding="5" TextWrapping="WrapWithOverflow" Text="{Binding Steps, Converter={StaticResource ZeroConverter}}"/> | ||
<TextBox Grid.Column="3" Background="#00000000" FontSize="14" BorderThickness="0" | ||
IsReadOnly="True" | ||
Padding="5" TextWrapping="WrapWithOverflow" Text="{Binding ., Converter={StaticResource SizeConverter}}"/> | ||
</Grid> | ||
</local:AccordionControl> | ||
|
||
<local:AccordionControl x:Name="SamplerMetadata" | ||
Margin="0,0,0,5" | ||
State="{Binding DataContext.MetadataSection.SamplerState, ElementName=PreviewPaneGrid, Mode=TwoWay}" HeaderBackground="#80000000" Header="{lex:Loc Metadata.Sampler}"> | ||
<TextBox Background="#00000000" FontSize="14" BorderThickness="0" | ||
IsReadOnly="True" | ||
Padding="5" TextWrapping="WrapWithOverflow" Text="{Binding Sampler}"/> | ||
</local:AccordionControl> | ||
|
||
<local:AccordionControl x:Name="OtherMetadata" | ||
Margin="0,0,0,5" | ||
State="{Binding DataContext.MetadataSection.OthersState, ElementName=PreviewPaneGrid, Mode=TwoWay}" HeaderBackground="#80000000" Header="{lex:Loc Metadata.Others}"> | ||
<local:AccordionControl.ButtonAreaContent> | ||
<Grid Background="{x:Null}"> | ||
<Grid.ColumnDefinitions> | ||
<ColumnDefinition/> | ||
<ColumnDefinition Width="80"/> | ||
</Grid.ColumnDefinitions> | ||
<Button Style="{DynamicResource BorderlessButton}" Grid.Column="1" Command="{Binding CopyOthersCommand}" Content="{lex:Loc Metadata.Buttons.Copy}"/> | ||
</Grid> | ||
</local:AccordionControl.ButtonAreaContent> | ||
<TextBox Background="#00000000" FontSize="14" BorderThickness="0" | ||
IsReadOnly="True" | ||
Padding="5" TextWrapping="WrapWithOverflow" Text="{Binding OtherParameters}"/> | ||
</local:AccordionControl> | ||
|
||
<local:AccordionControl x:Name="ModelMetadata" | ||
Margin="0,0,0,5" | ||
State="{Binding DataContext.MetadataSection.ModelState, ElementName=PreviewPaneGrid, Mode=TwoWay}" HeaderBackground="#80000000" Header="{lex:Loc Metadata.ModelName}"> | ||
<local:AccordionControl.ButtonAreaContent> | ||
<Grid Background="{x:Null}"> | ||
<Grid.ColumnDefinitions> | ||
<ColumnDefinition/> | ||
<ColumnDefinition Width="100"/> | ||
<ColumnDefinition Width="80"/> | ||
</Grid.ColumnDefinitions> | ||
<Label Grid.Column="1" Style="{DynamicResource SmallCaps}" Content="{lex:Loc Metadata.ModelHash}"/> | ||
<Button Style="{DynamicResource BorderlessButton}" Grid.Column="2" Command="{Binding SearchModelCommand}" Content="{lex:Loc Metadata.Buttons.SearchHash}"/> | ||
</Grid> | ||
</local:AccordionControl.ButtonAreaContent> | ||
<Grid Background="{x:Null}"> | ||
<Grid.ColumnDefinitions> | ||
<ColumnDefinition/> | ||
<ColumnDefinition Width="100"/> | ||
<ColumnDefinition Width="80"/> | ||
</Grid.ColumnDefinitions> | ||
<TextBox Grid.Column="0" FontSize="14" BorderThickness="0" | ||
IsReadOnly="True" Padding="5" Background="Transparent" TextWrapping="WrapWithOverflow" Text="{Binding ModelName}"/> | ||
<TextBox Grid.Column="1" FontSize="14" BorderThickness="0" IsReadOnly="True" Padding="5" Background="Transparent" Text="{Binding ModelHash}"/> | ||
</Grid> | ||
</local:AccordionControl> | ||
|
||
<local:AccordionControl x:Name="PathMetadata" | ||
Margin="0,0,0,5" | ||
State="{Binding DataContext.MetadataSection.PathState, ElementName=PreviewPaneGrid, Mode=TwoWay}" HeaderBackground="#80000000" Header="{lex:Loc Metadata.Path}"> | ||
<local:AccordionControl.ButtonAreaContent> | ||
<Grid Background="{x:Null}"> | ||
<Grid.ColumnDefinitions> | ||
<ColumnDefinition/> | ||
<ColumnDefinition Width="80"/> | ||
<ColumnDefinition Width="80"/> | ||
</Grid.ColumnDefinitions> | ||
<Button Style="{DynamicResource BorderlessButton}" Grid.Column="1" Command="{Binding ShowInExplorerCommand}" Content="{lex:Loc Metadata.Buttons.ShowInExplorer}"/> | ||
<Button Style="{DynamicResource BorderlessButton}" Grid.Column="2" Command="{Binding CopyPathCommand}" Content="{lex:Loc Metadata.Buttons.Copy}"/> | ||
</Grid> | ||
</local:AccordionControl.ButtonAreaContent> | ||
<TextBox Background="#00000000" FontSize="14" BorderThickness="0" | ||
IsReadOnly="True" | ||
Padding="5" TextWrapping="WrapWithOverflow" Text="{Binding Path}"/> | ||
</local:AccordionControl> | ||
|
||
<local:AccordionControl x:Name="DateMetadata" | ||
Margin="0,0,0,5" | ||
HeaderBackground="#80000000" | ||
State="{Binding DataContext.MetadataSection.DateState, ElementName=PreviewPaneGrid, Mode=TwoWay}" Header="{lex:Loc Metadata.Date}"> | ||
<TextBox Background="#00000000" FontSize="14" BorderThickness="0" | ||
IsReadOnly="True" | ||
Padding="5" TextWrapping="WrapWithOverflow" Text="{Binding Date}"/> | ||
</local:AccordionControl> | ||
|
||
<local:AccordionControl x:Name="AlbumMetadata" | ||
Margin="0,0,0,5" | ||
HeaderBackground="#80000000" | ||
State="{Binding DataContext.MetadataSection.AlbumState, ElementName=PreviewPaneGrid, Mode=TwoWay}" Header="{lex:Loc Metadata.Albums}"> | ||
<ItemsControl ItemsSource="{Binding Albums}"> | ||
<ItemsControl.ItemTemplate> | ||
<DataTemplate> | ||
<Border BorderThickness="1" BorderBrush="{StaticResource SecondaryBrush}" CornerRadius="5" Margin="5"> | ||
<TextBox FontSize="14" BorderThickness="0" | ||
IsReadOnly="True" Padding="5" Background="Transparent" | ||
TextWrapping="WrapWithOverflow" Text="{Binding Name}" | ||
PreviewMouseDown="UIElement_OnMouseDown" Cursor="Hand"/> | ||
</Border> | ||
</DataTemplate> | ||
</ItemsControl.ItemTemplate> | ||
<ItemsControl.ItemsPanel> | ||
<ItemsPanelTemplate> | ||
<StackPanel Orientation="Horizontal"/> | ||
</ItemsPanelTemplate> | ||
</ItemsControl.ItemsPanel> | ||
</ItemsControl> | ||
</local:AccordionControl> | ||
|
||
</StackPanel> | ||
</ScrollViewer> | ||
</Grid> | ||
</UserControl> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
using Diffusion.Database; | ||
using Diffusion.Toolkit.Models; | ||
using System.Windows; | ||
using System.Windows.Controls; | ||
using System.Windows.Input; | ||
|
||
namespace Diffusion.Toolkit.Controls | ||
{ | ||
/// <summary> | ||
/// Interaction logic for MetadataPanel.xaml | ||
/// </summary> | ||
public partial class MetadataPanel : UserControl | ||
{ | ||
public static readonly DependencyProperty CurrentImageProperty = DependencyProperty.Register( | ||
nameof(CurrentImage), | ||
typeof(ImageViewModel), | ||
typeof(MetadataPanel), | ||
new PropertyMetadata(default(ImageEntry)) | ||
); | ||
|
||
public ImageViewModel CurrentImage | ||
{ | ||
get => (ImageViewModel)GetValue(CurrentImageProperty); | ||
set => SetValue(CurrentImageProperty, value); | ||
} | ||
|
||
public MetadataPanel() | ||
{ | ||
InitializeComponent(); | ||
} | ||
|
||
private void CollapseAll_Click(object sender, RoutedEventArgs e) | ||
{ | ||
SetMetadataState(AccordionState.Collapsed); | ||
} | ||
|
||
private void ExpandAll_Click(object sender, RoutedEventArgs e) | ||
{ | ||
SetMetadataState(AccordionState.Expanded); | ||
} | ||
|
||
private void SetMetadataState(AccordionState state) | ||
{ | ||
PromptMetadata.State = state; | ||
NegativePromptMetadata.State = state; | ||
SeedMetadata.State = state; | ||
SamplerMetadata.State = state; | ||
OtherMetadata.State = state; | ||
ModelMetadata.State = state; | ||
PathMetadata.State = state; | ||
AlbumMetadata.State = state; | ||
DateMetadata.State = state; | ||
} | ||
|
||
private void UIElement_OnMouseDown(object sender, MouseButtonEventArgs e) | ||
{ | ||
var album = ((Album)((TextBox)sender).DataContext); | ||
|
||
var albumModel = new AlbumModel() | ||
{ | ||
Id = album.Id, | ||
Name = album.Name, | ||
}; | ||
|
||
CurrentImage.OpenAlbumCommand?.Execute(albumModel); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.