wip: Windows desktop app scaffold (WinUI 3/.NET 8) + NSIS installer + docs
Owner decision pending (STATE.md DC-100 tick): adopt/ship/park. Preserved from fragile git stash to named branch 2026-08-23. NOTE: requires a Windows build machine (WinUI XAML compiler + MSIX do not cross-build on Linux) — see WINDOWS_APP_BUILD.md in this tree. Secret-scanned clean 2026-08-23 (no keys/tokens/PEM in tree).
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
<ContentDialog
|
||||
x:Class="DashCaddy.Desktop.AddServiceDialog"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:vm="using:DashCaddy.Desktop.ViewModels"
|
||||
mc:Ignorable="d"
|
||||
Title="Add New Service"
|
||||
PrimaryButtonText="Create"
|
||||
CloseButtonText="Cancel"
|
||||
DefaultButton="Primary"
|
||||
Width="500">
|
||||
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" MaxHeight="500">
|
||||
<StackPanel Spacing="16" Margin="8">
|
||||
<!-- Service Type Selection -->
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock Text="How would you like to add this service?" FontWeight="SemiBold" />
|
||||
<RadioButtons x:Name="AddMethodRadio" SelectedIndex="0" SelectionChanged="AddMethod_SelectionChanged">
|
||||
<RadioButton Content="From Template (Plex, Home Assistant, etc.)" Tag="template" />
|
||||
<RadioButton Content="Import Docker Compose File" Tag="compose" />
|
||||
<RadioButton Content="Custom Service (Manual)" Tag="custom" />
|
||||
</RadioButtons>
|
||||
</StackPanel>
|
||||
|
||||
<!-- Template Selection -->
|
||||
<StackPanel x:Name="TemplatePanel" Spacing="12" Visibility="Visible">
|
||||
<TextBlock Text="Select Template" FontWeight="SemiBold" />
|
||||
<ComboBox x:Name="TemplateCombo" ItemsSource="{x:Bind ViewModel.Templates}"
|
||||
DisplayMemberPath="Name" Style="{StaticResource ComboBoxStyle}"
|
||||
SelectionChanged="TemplateCombo_SelectionChanged">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate x:DataType="vm:ServiceTemplate">
|
||||
<StackPanel Orientation="Horizontal" Spacing="12">
|
||||
<TextBlock Text="{x:Bind Icon}" FontSize="20" />
|
||||
<StackPanel>
|
||||
<TextBlock Text="{x:Bind Name}" FontWeight="Medium" />
|
||||
<TextBlock Text="{x:Bind Description}" FontSize="12" Foreground="{ThemeResource SystemControlForegroundBaseMediumBrush}" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
|
||||
<!-- Template Variables -->
|
||||
<StackPanel x:Name="VariablesPanel" Spacing="12" Visibility="Collapsed">
|
||||
<TextBlock Text="Configuration" FontWeight="SemiBold" />
|
||||
<ItemsControl x:Name="VariablesList" ItemsSource="{x:Bind ViewModel.TemplateVariables}">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Spacing="4" Margin="0,4">
|
||||
<TextBlock Text="{Binding Key}" FontWeight="Medium" />
|
||||
<TextBox Text="{Binding Value, Mode=TwoWay}" Style="{StaticResource InputFieldStyle}"
|
||||
PlaceholderText="{Binding Placeholder}" />
|
||||
<TextBlock Text="{Binding Description}" FontSize="11" Foreground="{ThemeResource SystemControlForegroundBaseMediumBrush}" />
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
<!-- Compose Import -->
|
||||
<StackPanel x:Name="ComposePanel" Spacing="12" Visibility="Collapsed">
|
||||
<TextBlock Text="Docker Compose File" FontWeight="SemiBold" />
|
||||
<Button Content="Select docker-compose.yml" Click="BrowseCompose_Click" Style="{StaticResource AccentButtonStyle}" />
|
||||
<TextBlock x:Name="ComposePathText" Text="No file selected" FontSize="12" Foreground="{ThemeResource SystemControlForegroundBaseMediumBrush}" />
|
||||
</StackPanel>
|
||||
|
||||
<!-- Custom Service -->
|
||||
<StackPanel x:Name="CustomPanel" Spacing="12" Visibility="Collapsed">
|
||||
<TextBlock Text="Service Details" FontWeight="SemiBold" />
|
||||
<TextBox x:Name="CustomName" Header="Service Name" PlaceholderText="My Service" Style="{StaticResource InputFieldStyle}" />
|
||||
<TextBox x:Name="CustomImage" Header="Docker Image" PlaceholderText="nginx:latest" Style="{StaticResource InputFieldStyle}" />
|
||||
<TextBox x:Name="CustomPort" Header="Port" PlaceholderText="80" Style="{StaticResource InputFieldStyle}" />
|
||||
<TextBox x:Name="CustomDomain" Header="Domain (optional)" PlaceholderText="service.example.com" Style="{StaticResource InputFieldStyle}" />
|
||||
<TextBox x:Name="CustomVolumes" Header="Volumes (one per line)" PlaceholderText="E:/data:/data
E:/config:/config" Style="{StaticResource InputFieldStyle}" MinHeight="80" AcceptsReturn="True" />
|
||||
<TextBox x:Name="CustomEnv" Header="Environment Variables (KEY=value, one per line)" PlaceholderText="TZ=America/Los_Angeles
DEBUG=true" Style="{StaticResource InputFieldStyle}" MinHeight="80" AcceptsReturn="True" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</ContentDialog>
|
||||
Reference in New Issue
Block a user