Files
Taskbar-Launcher/MainWindow.xaml
2026-06-02 21:52:42 -04:00

171 lines
9.8 KiB
XML

<Window x:Class="TaskbarLauncher.MainWindow"
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"
mc:Ignorable="d"
Title="Taskbar Launcher Settings" Height="700" Width="940"
MinHeight="620" MinWidth="820"
Background="{DynamicResource AppWindowBrush}"
Foreground="{DynamicResource AppTextBrush}">
<DockPanel Margin="18">
<StackPanel DockPanel.Dock="Top" Margin="0,0,0,14">
<TextBlock Text="Taskbar Launcher" FontSize="22" FontWeight="SemiBold"/>
<TextBlock x:Name="VersionText"
Foreground="{DynamicResource AppMutedTextBrush}"/>
<TextBlock Text="Portable launcher settings are stored beside the app in config.json."
Foreground="{DynamicResource AppMutedTextBrush}"/>
</StackPanel>
<Border DockPanel.Dock="Bottom" BorderThickness="1,0,0,0" Padding="0,12,0,0"
BorderBrush="{DynamicResource AppBorderBrush}">
<WrapPanel HorizontalAlignment="Right">
<Button Content="Save" Click="Save_Click" Margin="0,0,8,0"/>
<Button Content="Backup Config" Click="BackupConfig_Click" Margin="0,0,8,0"/>
<Button Content="Restore Config" Click="RestoreConfig_Click" Margin="0,0,8,0"/>
<Button Content="Export Config" Click="ExportConfig_Click" Margin="0,0,8,0"/>
<Button Content="Import Config" Click="ImportConfig_Click" Margin="0,0,8,0"/>
<Button Content="Reload Config" Click="ReloadConfig_Click" Margin="0,0,8,0"/>
<Button Content="Open Config Folder" Click="OpenConfigFolder_Click" Margin="0,0,8,0"/>
<Button Content="About" Click="About_Click" Margin="0,0,8,0"/>
<Button Content="Close" Click="Close_Click"/>
</WrapPanel>
</Border>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<GroupBox Header="Launcher Items" Margin="0,0,12,0">
<DockPanel Margin="8">
<UniformGrid DockPanel.Dock="Bottom" Columns="2" Margin="0,8,0,0">
<Button Content="Add Root" Click="AddRoot_Click"/>
<Button Content="Add Top Menu" Click="AddTopMenu_Click"/>
<Button Content="Add Child" Click="AddChild_Click"/>
<Button Content="Add Submenu" Click="AddSubmenu_Click"/>
<Button Content="Move Up" Click="MoveUp_Click"/>
<Button Content="Move Down" Click="MoveDown_Click"/>
<Button Content="Promote To Top" Click="PromoteToTop_Click"/>
<Button Content="Delete" Click="Delete_Click"/>
<Button Content="Apply Item" Click="ApplyItem_Click"/>
</UniformGrid>
<TreeView x:Name="ItemsTree"
AllowDrop="True"
SelectedItemChanged="ItemsTree_SelectedItemChanged"
PreviewMouseMove="ItemsTree_PreviewMouseMove"
DragOver="ItemsTree_DragOver"
Drop="ItemsTree_Drop"/>
</DockPanel>
</GroupBox>
<GroupBox Header="Settings" Grid.Column="1">
<Grid Margin="12">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="16"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="110"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="Hotkey" VerticalAlignment="Center" Margin="0,0,8,8"/>
<TextBox x:Name="HotkeyBox" Grid.Column="1" Margin="0,0,0,8"
PreviewKeyDown="HotkeyBox_PreviewKeyDown"/>
<TextBlock Text="Default for New Items" Grid.Row="1" VerticalAlignment="Center" Margin="0,0,8,0"/>
<ComboBox x:Name="DisplayModeBox" Grid.Row="1" Grid.Column="1"/>
<TextBlock Text="Startup" Grid.Row="2" VerticalAlignment="Center" Margin="0,8,8,0"/>
<CheckBox x:Name="StartWithWindowsBox" Grid.Row="2" Grid.Column="1"
Content="Start with Windows"
Margin="0,8,0,0"
Checked="StartWithWindowsBox_Changed"
Unchecked="StartWithWindowsBox_Changed"/>
</Grid>
<Separator Grid.Row="1" VerticalAlignment="Center"/>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="110"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="Title" VerticalAlignment="Center" Margin="0,0,8,8"/>
<TextBox x:Name="TitleBox" Grid.Column="1" Grid.ColumnSpan="2" Margin="0,0,0,8"
TextChanged="PreviewField_Changed"/>
<TextBlock Text="Type" Grid.Row="1" VerticalAlignment="Center" Margin="0,0,8,8"/>
<ComboBox x:Name="TypeBox" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Margin="0,0,0,8"
SelectionChanged="TypeBox_SelectionChanged"/>
<TextBlock Text="Target" Grid.Row="2" VerticalAlignment="Center" Margin="0,0,8,8"/>
<TextBox x:Name="TargetBox" Grid.Row="2" Grid.Column="1" Margin="0,0,8,8"
TextChanged="PreviewField_Changed"/>
<StackPanel Grid.Row="2" Grid.Column="2" Orientation="Horizontal" Margin="0,0,0,8">
<Button Content="File" Click="BrowseFile_Click" Margin="0,0,6,0" Padding="8,4"/>
<Button Content="Folder" Click="BrowseFolder_Click" Padding="8,4"/>
</StackPanel>
<TextBlock Text="Arguments" Grid.Row="3" VerticalAlignment="Center" Margin="0,0,8,8"/>
<TextBox x:Name="ArgumentsBox" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" Margin="0,0,0,8"/>
<TextBlock Text="Icon Path" Grid.Row="4" VerticalAlignment="Center" Margin="0,0,8,0"/>
<TextBox x:Name="IconPathBox" Grid.Row="4" Grid.Column="1" Margin="0,0,8,8"
TextChanged="PreviewField_Changed"/>
<StackPanel Grid.Row="4" Grid.Column="2" Orientation="Horizontal" Margin="0,0,0,8">
<Button Content="Icon" Click="BrowseIcon_Click" Padding="8,4" Margin="0,0,6,0"/>
<Button Content="Reset" Click="ResetIcon_Click" Padding="8,4"/>
</StackPanel>
<TextBlock Text="Selected Item Display" Grid.Row="5" VerticalAlignment="Center" Margin="0,0,8,8"/>
<ComboBox x:Name="ItemDisplayModeBox" Grid.Row="5" Grid.Column="1" Grid.ColumnSpan="2"
Margin="0,0,0,8" SelectionChanged="ItemDisplayModeBox_SelectionChanged"/>
<TextBlock Text="Preview" Grid.Row="6" VerticalAlignment="Top" Margin="0,4,8,0"/>
<Border Grid.Row="6" Grid.Column="1" Grid.ColumnSpan="2"
BorderThickness="1"
BorderBrush="{DynamicResource AppBorderBrush}"
Background="{DynamicResource AppControlBrush}"
Padding="8" MinHeight="72">
<StackPanel>
<ContentControl x:Name="PreviewHost"/>
<TextBlock x:Name="PreviewNote" Margin="0,8,0,0"
Foreground="{DynamicResource AppMutedTextBrush}"
TextWrapping="Wrap"/>
</StackPanel>
</Border>
</Grid>
<TextBlock x:Name="StatusText" Grid.Row="3" Margin="0,14,0,0"
Foreground="{DynamicResource AppMutedTextBrush}"
TextWrapping="Wrap"/>
</Grid>
</GroupBox>
</Grid>
</DockPanel>
</Window>