Catalog/CatalogLite/MainWindow.axaml
Maddo e9142df97c
Some checks failed
Build Windows Avalonia / build (push) Failing after 1m48s
Release Windows Avalonia / build (push) Failing after 1m41s
Release Windows Avalonia / release (push) Has been skipped
feat: Enhance Face AI upload functionality and UI
- Updated MainWindow.axaml to increase height and add new UI elements for SSH upload configuration.
- Implemented commands for opening source and destination paths in file explorer.
- Added FaceUploadPath and SSH configuration properties to DataModel and AiSettingsViewModel.
- Introduced validation for FaceUploadPath format and commands for uploading face encoder output.
- Enhanced PickerPreferenceService to manage SSH credentials and upload preferences.
- Updated settings persistence to include FaceUploadPath and SSH preferences.
- Added tests for FaceUploadPath validation and upload command enabling logic.
2026-06-06 11:54:21 +02:00

107 lines
No EOL
6 KiB
XML

<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:iconPacks="https://github.com/MahApps/IconPacks.Avalonia"
x:Class="CatalogLite.MainWindow"
x:CompileBindings="False"
Title="Catalog Lite"
Width="740"
Height="560"
MinWidth="640"
MinHeight="500">
<Grid Margin="16" RowDefinitions="Auto,Auto,*,Auto" RowSpacing="12">
<Grid ColumnDefinitions="150,*,104,72" ColumnSpacing="10">
<TextBlock Text="Sorgente" VerticalAlignment="Center" FontWeight="SemiBold" />
<TextBox Grid.Column="1" Text="{Binding SourcePath, Mode=TwoWay}" Watermark="Cartella sorgente" />
<Button Grid.Column="2" Command="{Binding SelectSourceFolderCommand}" ToolTip.Tip="Seleziona cartella sorgente">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="7">
<iconPacks:PackIconMaterial Kind="FolderOpenOutline" Width="16" Height="16" />
<TextBlock Text="Scegli" />
</StackPanel>
</Button>
<Button Grid.Column="3" Click="OpenSourcePath_Click" ToolTip.Tip="Apri cartella sorgente in Esplora file">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
<iconPacks:PackIconMaterial Kind="Folder" Width="16" Height="16" />
<TextBlock Text="Apri" />
</StackPanel>
</Button>
</Grid>
<Grid Grid.Row="1" ColumnDefinitions="150,*,104,72" ColumnSpacing="10">
<TextBlock Text="Destinazione" VerticalAlignment="Center" FontWeight="SemiBold" />
<TextBox Grid.Column="1" Text="{Binding DestinationPath, Mode=TwoWay}" Watermark="Cartella destinazione" />
<Button Grid.Column="2" Command="{Binding SelectDestinationFolderCommand}" ToolTip.Tip="Seleziona cartella destinazione">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="7">
<iconPacks:PackIconMaterial Kind="FolderOpenOutline" Width="16" Height="16" />
<TextBlock Text="Scegli" />
</StackPanel>
</Button>
<Button Grid.Column="3" Click="OpenDestinationPath_Click" ToolTip.Tip="Apri cartella destinazione in Esplora file">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
<iconPacks:PackIconMaterial Kind="Folder" Width="16" Height="16" />
<TextBlock Text="Apri" />
</StackPanel>
</Button>
</Grid>
<Border Grid.Row="2"
Background="{DynamicResource PanelBackgroundBrush}"
BorderBrush="{DynamicResource BorderMutedBrush}"
BorderThickness="1"
Padding="14">
<Grid RowDefinitions="Auto,Auto" RowSpacing="10">
<Grid ColumnDefinitions="150,*" ColumnSpacing="10">
<TextBlock Text="Testo orizzontale" VerticalAlignment="Center" FontWeight="SemiBold" />
<TextBox Grid.Column="1"
Text="{Binding HorizontalText, Mode=TwoWay}"
Watermark="Testo applicato alle foto orizzontali" />
</Grid>
<Grid Grid.Row="1" ColumnDefinitions="150,*" ColumnSpacing="10">
<TextBlock Text="Testo verticale" VerticalAlignment="Top" Margin="0,8,0,0" FontWeight="SemiBold" />
<TextBox Grid.Column="1"
Text="{Binding VerticalText, Mode=TwoWay}"
AcceptsReturn="True"
TextWrapping="Wrap"
MinHeight="96"
VerticalContentAlignment="Top"
Watermark="Testo multilinea per foto verticali" />
</Grid>
</Grid>
</Border>
<Border Grid.Row="3"
Background="{DynamicResource PanelBackgroundBrush}"
BorderBrush="{DynamicResource BorderMutedBrush}"
BorderThickness="1"
Padding="14">
<Grid RowDefinitions="Auto,Auto,Auto,Auto" RowSpacing="8">
<TextBlock Text="{Binding ProcessingStatus}" TextWrapping="Wrap" />
<ProgressBar Grid.Row="1"
Minimum="0"
Maximum="{Binding ProgressBarMaximum}"
Value="{Binding ProgressBarValue}" />
<StackPanel Grid.Row="2" Orientation="Horizontal" Spacing="6">
<TextBlock Text="Elaborate" FontWeight="SemiBold" />
<TextBlock Text="{Binding ProcessedImagesCount}" />
<TextBlock Text="/" />
<TextBlock Text="{Binding TotalImagesCount}" />
</StackPanel>
<TextBlock Grid.Row="3" Text="{Binding SpeedCounter}" TextWrapping="Wrap" Opacity="0.78" />
</Grid>
</Border>
<StackPanel Grid.Row="4" Orientation="Horizontal" HorizontalAlignment="Right" Spacing="10">
<Button Command="{Binding StartProcessingCommand}" MinWidth="112" ToolTip.Tip="Avvia elaborazione">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="7">
<iconPacks:PackIconMaterial Kind="PlayCircleOutline" Width="16" Height="16" Foreground="{DynamicResource AccentBrush}" />
<TextBlock Text="Avvia" />
</StackPanel>
</Button>
<Button Command="{Binding StopProcessingCommand}" MinWidth="112" ToolTip.Tip="Ferma elaborazione">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="7">
<iconPacks:PackIconMaterial Kind="StopCircleOutline" Width="16" Height="16" Foreground="#B3261E" />
<TextBlock Text="Stop" />
</StackPanel>
</Button>
</StackPanel>
</Grid>
</Window>